diff options
author | Eric Andersen <andersen@codepoet.org> | 2000-07-11 17:35:32 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2000-07-11 17:35:32 +0000 |
commit | 195fa15caf7d79a5447d7476c113777cb3bebbd8 (patch) | |
tree | df66cd937cdf8e066ff06ba0c3b241d848bba071 | |
parent | 61dc0571832b88097192a8c0eab190a44c577371 (diff) | |
download | busybox-195fa15caf7d79a5447d7476c113777cb3bebbd8.tar.gz |
Another patch from Matt Kraai <kraai@alumni.carnegiemellon.edu>:
>
> The following patch allows ln -n to function like GNU. It also fixes a
> typo with my previous patch to add support for ln FILE DIRECTORY. And
> it removes some code that checks the maximum length of the filenames. I
> can't figure out why that code is necessary. Anyone know?
>
> Matt
-rw-r--r-- | coreutils/ln.c | 29 | ||||
-rw-r--r-- | ln.c | 29 |
2 files changed, 4 insertions, 54 deletions
diff --git a/coreutils/ln.c b/coreutils/ln.c index 3c45dee33..71d84f066 100644 --- a/coreutils/ln.c +++ b/coreutils/ln.c @@ -92,13 +92,7 @@ extern int ln_main(int argc, char **argv) linkName = argv[argc - 1]; - if (strlen(linkName) > BUFSIZ) { - fprintf(stderr, name_too_long, "ln"); - exit FALSE; - } - - linkIntoDirFlag = isDirectory(linkName, TRUE, NULL); - + linkIntoDirFlag = isDirectory(linkName, followLinks, NULL); if ((argc >= 3) && linkIntoDirFlag == FALSE) { fprintf(stderr, not_a_directory, "ln", linkName); exit FALSE; @@ -108,27 +102,8 @@ extern int ln_main(int argc, char **argv) dirName = linkName; while (argc-- >= 2) { -#if 0 - char srcName[BUFSIZ + 1]; - int nChars; -#endif int status; - if (strlen(*argv) > BUFSIZ) { - fprintf(stderr, name_too_long, "ln"); - exit FALSE; - } - -#if 0 - if (followLinks == FALSE) { - strcpy(srcName, *argv); - } else { - /* Warning! This can silently truncate if > BUFSIZ, but - I don't think that there can be one > BUFSIZ anyway. */ - nChars = readlink(*argv, srcName, BUFSIZ); - srcName[nChars] = '\0'; - } -#endif if (linkIntoDirFlag == TRUE) { char *baseName = get_last_path_component(*argv); linkName = (char *)malloc(strlen(dirName)+strlen(baseName)+2); @@ -155,7 +130,7 @@ extern int ln_main(int argc, char **argv) exit FALSE; } - if (linkIntoDirFlag) + if (linkIntoDirFlag == TRUE) free(linkName); argv++; @@ -92,13 +92,7 @@ extern int ln_main(int argc, char **argv) linkName = argv[argc - 1]; - if (strlen(linkName) > BUFSIZ) { - fprintf(stderr, name_too_long, "ln"); - exit FALSE; - } - - linkIntoDirFlag = isDirectory(linkName, TRUE, NULL); - + linkIntoDirFlag = isDirectory(linkName, followLinks, NULL); if ((argc >= 3) && linkIntoDirFlag == FALSE) { fprintf(stderr, not_a_directory, "ln", linkName); exit FALSE; @@ -108,27 +102,8 @@ extern int ln_main(int argc, char **argv) dirName = linkName; while (argc-- >= 2) { -#if 0 - char srcName[BUFSIZ + 1]; - int nChars; -#endif int status; - if (strlen(*argv) > BUFSIZ) { - fprintf(stderr, name_too_long, "ln"); - exit FALSE; - } - -#if 0 - if (followLinks == FALSE) { - strcpy(srcName, *argv); - } else { - /* Warning! This can silently truncate if > BUFSIZ, but - I don't think that there can be one > BUFSIZ anyway. */ - nChars = readlink(*argv, srcName, BUFSIZ); - srcName[nChars] = '\0'; - } -#endif if (linkIntoDirFlag == TRUE) { char *baseName = get_last_path_component(*argv); linkName = (char *)malloc(strlen(dirName)+strlen(baseName)+2); @@ -155,7 +130,7 @@ extern int ln_main(int argc, char **argv) exit FALSE; } - if (linkIntoDirFlag) + if (linkIntoDirFlag == TRUE) free(linkName); argv++; |