merge with 3.8.4g
authorJim Meyering <jim@meyering.net>
Sun, 17 Oct 1993 22:43:10 +0000 (22:43 +0000)
committerJim Meyering <jim@meyering.net>
Sun, 17 Oct 1993 22:43:10 +0000 (22:43 +0000)
lib/Makefile.in
old/fileutils/ChangeLog
old/fileutils/NEWS
src/chmod.c
src/ls.c

index 8728ebdbadd83681f05c4f8370a62cd4d6bbef8f..d80dee4f4e9de232709ade004bb7619cdb395443 100644 (file)
@@ -109,7 +109,7 @@ rename.o: rename.c
        $(CC) -c $(CPPFLAGS) -DMVDIR="\"$(libdir)/mvdir\"" $(DEFS) \
            -I.. -I$(srcdir) $(CFLAGS) $(srcdir)/rename.c
 
-$(OBJECTS): $(srcdir)/../config.h
+$(OBJECTS): ../config.h
 
 backupfile.o getversion.o: backupfile.h
 fnmatch.o: fnmatch.h
index cbb71a9bfe25b5072f3ece410e513244ac76a4f1..160ab77d45681c0977dd668e56debfd89602f51d 100644 (file)
@@ -1,3 +1,18 @@
+Sun Oct 17 00:19:58 1993  Jim Meyering  (meyering@comco.com)
+
+       * ls.c (print_long_format): Cast printf args major and minor
+       so they'll have types macthing %u format even on systems
+       where those macros have signed type.
+
+Sat Oct 16 00:25:42 1993  Jim Meyering  (meyering@comco.com)
+
+       * chmod.c (change_file_mode): Reapply Oct 6 change for symlinks.
+       Somehow it got removed from working sources.
+
+        * lib/Makefile.in [OBJECTS]: Change dependency to ../config.h so
+       it works when building in a subdirectory.  From Rick Sladkey
+       (jrs@world.std.com).
+
 Wed Oct 13 19:43:47 1993  Jim Meyering  (meyering@comco.com)
 
        * cp.c (copy), ls.c (get_link_name): Complete Aug 27 change so
index 831704f43040c46a548a9c914b5a94b0fd40058c..35c9b3554bc750850e3f8b3dd5f996c39553b573 100644 (file)
@@ -1,5 +1,5 @@
 Major changes in release 3.9:
-* --help gives one-line description of options and shows correspondence
+* --help gives one-line description of each option and shows correspondence
   between short and long-named options.
 * GNU chmod treats symlinks the same way other vendor's versions do.
   Now symlinks listed on the command line are processed (they were
index f1e4738ff4ed79fb523dbe8831fc66ef6c176d45..5236cb14061a5ad237de3b43539ebbd9050c16ae 100644 (file)
@@ -176,18 +176,21 @@ main (argc, argv)
     error (1, 0, "virtual memory exhausted");
 
   for (; optind < argc; ++optind)
-    errors |= change_file_mode (argv[optind], changes);
+    errors |= change_file_mode (argv[optind], changes, 1);
 
   exit (errors);
 }
 
 /* Change the mode of FILE according to the list of operations CHANGES.
-   Return 0 if successful, 1 if errors occurred. */
+   If DEREF_SYMLINK is non-zero and FILE is a symbolic link, change the
+   mode of the referenced file.  If DEREF_SYMLINK is zero, ignore symbolic
+   links.  Return 0 if successful, 1 if errors occurred. */
 
 static int
-change_file_mode (file, changes)
+change_file_mode (file, changes, deref_symlink)
      char *file;
      struct mode_change *changes;
+     int deref_symlink;
 {
   struct stat file_stats;
   unsigned short newmode;
@@ -201,7 +204,15 @@ change_file_mode (file, changes)
     }
 #ifdef S_ISLNK
   if (S_ISLNK (file_stats.st_mode))
-    return 0;
+    if (! deref_symlink)
+      return 0;
+    else 
+      if (stat (file, &file_stats))
+       {
+         if (force_silent == 0)
+           error (0, errno, "%s", file);
+         return 1;
+       }
 #endif
 
   newmode = mode_adjust (file_stats.st_mode, changes);
@@ -273,7 +284,7 @@ change_dir_mode (dir, changes, statp)
          path = xrealloc (path, pathlength);
        }
       strcpy (path + dirlength, namep);
-      errors |= change_file_mode (path, changes);
+      errors |= change_file_mode (path, changes, 0);
     }
   free (path);
   free (name_space);
index e42d423c2796a458c4a03a7cacc5613e1b4da5c0..16827f71ff09ef529979f8ca33eaf78257d06694 100644 (file)
--- a/src/ls.c
+++ b/src/ls.c
@@ -1477,8 +1477,8 @@ print_long_format (f)
     }
 
   if (S_ISCHR (f->stat.st_mode) || S_ISBLK (f->stat.st_mode))
-    printf ("%3u, %3u ", major (f->stat.st_rdev),
-           minor (f->stat.st_rdev));
+    printf ("%3u, %3u ", (unsigned) major (f->stat.st_rdev),
+           (unsigned) minor (f->stat.st_rdev));
   else
     printf ("%8lu ", f->stat.st_size);