Another patch from Matt Kraai <kraai@alumni.carnegiemellon.edu>:
authorEric Andersen <andersen@codepoet.org>
Tue, 11 Jul 2000 17:35:32 +0000 (17:35 -0000)
committerEric Andersen <andersen@codepoet.org>
Tue, 11 Jul 2000 17:35:32 +0000 (17:35 -0000)
>
> 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

coreutils/ln.c
ln.c

index 3c45dee3365d2ae1c49b857545b86688a7e073a0..71d84f066f0174d0b0a2c932947459d03b097625 100644 (file)
@@ -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++;
diff --git a/ln.c b/ln.c
index 3c45dee3365d2ae1c49b857545b86688a7e073a0..71d84f066f0174d0b0a2c932947459d03b097625 100644 (file)
--- a/ln.c
+++ b/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++;