Fixed return status (thanks to David Douthitt for the fix).
authorMatt Kraai <kraai@debian.org>
Sat, 18 Nov 2000 01:16:43 +0000 (01:16 -0000)
committerMatt Kraai <kraai@debian.org>
Sat, 18 Nov 2000 01:16:43 +0000 (01:16 -0000)
findutils/which.c
which.c

index da8801f..a92777e 100644 (file)
@@ -28,7 +28,7 @@ extern int which_main(int argc, char **argv)
 {
        char *path_list, *path_n;
        struct stat filestat;
-       int i, count=1;
+       int i, count=1, found, status = EXIT_SUCCESS;
 
        if (argc <= 1 || **(argv + 1) == '-')
                usage(which_usage);
@@ -48,6 +48,7 @@ extern int which_main(int argc, char **argv)
        while(argc-- > 0) { 
                path_n = path_list;
                argv++;
+               found = 0;
                for (i = 0; i < count; i++) {
                        char buf[strlen(path_n)+1+strlen(*argv)];
                        strcpy (buf, path_n);
@@ -57,12 +58,15 @@ extern int which_main(int argc, char **argv)
                            && filestat.st_mode & S_IXUSR)
                        {
                                printf ("%s\n", buf);
+                               found = 1;
                                break;
                        }
                        path_n += (strlen(path_n) + 1);
                }
+               if (!found)
+                       status = EXIT_FAILURE;
        }
-       return(TRUE);
+       return status;
 }
 
 /*
diff --git a/which.c b/which.c
index da8801f..a92777e 100644 (file)
--- a/which.c
+++ b/which.c
@@ -28,7 +28,7 @@ extern int which_main(int argc, char **argv)
 {
        char *path_list, *path_n;
        struct stat filestat;
-       int i, count=1;
+       int i, count=1, found, status = EXIT_SUCCESS;
 
        if (argc <= 1 || **(argv + 1) == '-')
                usage(which_usage);
@@ -48,6 +48,7 @@ extern int which_main(int argc, char **argv)
        while(argc-- > 0) { 
                path_n = path_list;
                argv++;
+               found = 0;
                for (i = 0; i < count; i++) {
                        char buf[strlen(path_n)+1+strlen(*argv)];
                        strcpy (buf, path_n);
@@ -57,12 +58,15 @@ extern int which_main(int argc, char **argv)
                            && filestat.st_mode & S_IXUSR)
                        {
                                printf ("%s\n", buf);
+                               found = 1;
                                break;
                        }
                        path_n += (strlen(path_n) + 1);
                }
+               if (!found)
+                       status = EXIT_FAILURE;
        }
-       return(TRUE);
+       return status;
 }
 
 /*