Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
04d8e8b
)
mtime and ownership of symlinks can be random, so don't print them.
author
Martin Pool
<mbp@samba.org>
Tue, 27 Nov 2001 07:54:03 +0000
(07:54 +0000)
committer
Martin Pool
<mbp@samba.org>
Tue, 27 Nov 2001 07:54:03 +0000
(07:54 +0000)
tls.c
patch
|
blob
|
blame
|
history
diff --git
a/tls.c
b/tls.c
index
cd6dec0
..
2409c53
100644
(file)
--- a/
tls.c
+++ b/
tls.c
@@
-65,38
+65,50
@@
static void list_file (const char *fname)
struct stat buf;
char permbuf[PERMSTRING_SIZE];
struct tm *mt;
struct stat buf;
char permbuf[PERMSTRING_SIZE];
struct tm *mt;
+ char datebuf[50];
if (do_lstat(fname, &buf) == -1)
failed ("stat", fname);
if (do_lstat(fname, &buf) == -1)
failed ("stat", fname);
- /* On some BSD platforms the mode bits of a symlink are
- * undefined. */
- if (S_ISLNK(buf.st_mode))
- buf.st_mode &= ~0777;
-
/* The size of anything but a regular file is probably not
* worth thinking about. */
if (!S_ISREG(buf.st_mode))
buf.st_size = 0;
/* The size of anything but a regular file is probably not
* worth thinking about. */
if (!S_ISREG(buf.st_mode))
buf.st_size = 0;
- permstring(permbuf, buf.st_mode);
+ /* On some BSD platforms the mode bits of a symlink are
+ * undefined. Also it tends not to be possible to reset a
+ * symlink's mtime, so we have to ignore it too. */
+ if (S_ISLNK(buf.st_mode)) {
+ buf.st_mode &= ~0777;
+ buf.st_mtime = (time_t)0;
+ buf.st_uid = buf.st_gid = 0;
+ }
-
mt = gmtime(&buf.st_mtim
e);
+
permstring(permbuf, buf.st_mod
e);
+ if (buf.st_mtime) {
+ mt = gmtime(&buf.st_mtime);
+
+ sprintf(datebuf, "%04d-%02d-%02d %02d:%02d:%02d",
+ mt->tm_year + 1900,
+ mt->tm_mon + 1,
+ mt->tm_mday,
+ mt->tm_hour,
+ mt->tm_min,
+ mt->tm_sec);
+ } else {
+ strcpy(datebuf, " ");
+ }
+
/* TODO: Perhaps escape special characters in fname? */
/* TODO: Perhaps escape special characters in fname? */
-
+
+
/* NB: need to pass size as a double because it might be be
* too large for a long. */
/* NB: need to pass size as a double because it might be be
* too large for a long. */
- printf("%s %12.0f %6d.%-6d %
04d-%02d-%02d %02d:%02d:%02d
%s\n",
+ printf("%s %12.0f %6d.%-6d %
s
%s\n",
permbuf, (double) buf.st_size,
buf.st_uid, buf.st_gid,
permbuf, (double) buf.st_size,
buf.st_uid, buf.st_gid,
- mt->tm_year + 1900,
- mt->tm_mon + 1,
- mt->tm_mday,
- mt->tm_hour,
- mt->tm_min,
- mt->tm_sec,
- fname);
+ datebuf, fname);
}
}