|
|
| version 1.4, 2003/11/22 11:38:13 | version 1.5, 2004/03/15 16:24:22 |
|---|---|
| Line 85 static void statf(int, FTSENT *); | Line 85 static void statf(int, FTSENT *); |
| void | void |
| cwalk(void) | cwalk(void) |
| { | { |
| register FTS *t; | FTS *t; |
| register FTSENT *p; | FTSENT *p; |
| time_t clock; | time_t clock; |
| char *argv[2], host[MAXHOSTNAMELEN]; | char *argv[2], host[MAXHOSTNAMELEN]; |
| int indent = 0; | int indent = 0; |
| (void)time(&clock); | time(&clock); |
| (void)gethostname(host, sizeof(host)); | gethostname(host, sizeof(host)); |
| (void)printf( | printf( |
| "#\t user: %s\n#\tmachine: %s\n#\t tree: %s\n#\t date: %s", | "#\t user: %s\n#\tmachine: %s\n#\t tree: %s\n#\t date: %s", |
| getlogin(), host, fullpath, ctime(&clock)); | getlogin(), host, fullpath, ctime(&clock)); |
| Line 111 cwalk(void) | Line 111 cwalk(void) |
| switch(p->fts_info) { | switch(p->fts_info) { |
| case FTS_D: | case FTS_D: |
| if (!dflag) | if (!dflag) |
| (void)printf("\n"); | printf("\n"); |
| if (!nflag) | if (!nflag) |
| (void)printf("# %s\n", p->fts_path); | printf("# %s\n", p->fts_path); |
| statd(t, p, &uid, &gid, &mode, &flags); | statd(t, p, &uid, &gid, &mode, &flags); |
| statf(indent, p); | statf(indent, p); |
| break; | break; |
| case FTS_DP: | case FTS_DP: |
| if (!nflag && (p->fts_level > 0)) | if (!nflag && (p->fts_level > 0)) |
| (void)printf("%*s# %s\n", indent, "", p->fts_path); | printf("%*s# %s\n", indent, "", p->fts_path); |
| (void)printf("%*s..\n", indent, ""); | printf("%*s..\n", indent, ""); |
| if (!dflag) | if (!dflag) |
| (void)printf("\n"); | printf("\n"); |
| break; | break; |
| case FTS_DNR: | case FTS_DNR: |
| case FTS_ERR: | case FTS_ERR: |
| Line 136 cwalk(void) | Line 136 cwalk(void) |
| } | } |
| } | } |
| (void)fts_close(t); | fts_close(t); |
| if (sflag && keys & F_CKSUM) | if (sflag && keys & F_CKSUM) |
| warnx("%s checksum: %lu", fullpath, crc_total); | warnx("%s checksum: %lu", fullpath, crc_total); |
| } | } |
| Line 210 statf(int indent, FTSENT *p) | Line 210 statf(int indent, FTSENT *p) |
| if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0 || | if ((fd = open(p->fts_accpath, O_RDONLY, 0)) < 0 || |
| crc(fd, &val, &len)) | crc(fd, &val, &len)) |
| err(1, "line %d: %s", lineno, p->fts_accpath); | err(1, "line %d: %s", lineno, p->fts_accpath); |
| (void)close(fd); | close(fd); |
| output(indent, &offset, "cksum=%lu", val); | output(indent, &offset, "cksum=%lu", val); |
| } | } |
| #ifdef MD5 | #ifdef MD5 |
| Line 257 statf(int indent, FTSENT *p) | Line 257 statf(int indent, FTSENT *p) |
| output(indent, &offset, "flags=%s", fflags); | output(indent, &offset, "flags=%s", fflags); |
| free(fflags); | free(fflags); |
| } | } |
| (void)putchar('\n'); | putchar('\n'); |
| } | } |
| #define MAXGID 5000 | #define MAXGID 5000 |
| Line 270 static int | Line 270 static int |
| statd(FTS *t, FTSENT *parent, uid_t *puid, gid_t *pgid, mode_t *pmode, | statd(FTS *t, FTSENT *parent, uid_t *puid, gid_t *pgid, mode_t *pmode, |
| u_long *pflags) | u_long *pflags) |
| { | { |
| register FTSENT *p; | FTSENT *p; |
| register gid_t sgid; | gid_t sgid; |
| register uid_t suid; | uid_t suid; |
| register mode_t smode; | mode_t smode; |
| register u_long sflags; | u_long sflags; |
| struct group *gr; | struct group *gr; |
| struct passwd *pw; | struct passwd *pw; |
| gid_t savegid = *pgid; | gid_t savegid = *pgid; |
| Line 343 statd(FTS *t, FTSENT *parent, uid_t *pui | Line 343 statd(FTS *t, FTSENT *parent, uid_t *pui |
| (first)) { | (first)) { |
| first = 0; | first = 0; |
| if (dflag) | if (dflag) |
| (void)printf("/set type=dir"); | printf("/set type=dir"); |
| else | else |
| (void)printf("/set type=file"); | printf("/set type=file"); |
| if (keys & F_UNAME) { | if (keys & F_UNAME) { |
| if ((pw = getpwuid(saveuid)) != NULL) | if ((pw = getpwuid(saveuid)) != NULL) |
| (void)printf(" uname=%s", pw->pw_name); | printf(" uname=%s", pw->pw_name); |
| else | else |
| errx(1, | errx(1, |
| "line %d: could not get uname for uid=%u", | "line %d: could not get uname for uid=%u", |
| lineno, saveuid); | lineno, saveuid); |
| } | } |
| if (keys & F_UID) | if (keys & F_UID) |
| (void)printf(" uid=%lu", (u_long)saveuid); | printf(" uid=%lu", (u_long)saveuid); |
| if (keys & F_GNAME) { | if (keys & F_GNAME) { |
| if ((gr = getgrgid(savegid)) != NULL) | if ((gr = getgrgid(savegid)) != NULL) |
| (void)printf(" gname=%s", gr->gr_name); | printf(" gname=%s", gr->gr_name); |
| else | else |
| errx(1, | errx(1, |
| "line %d: could not get gname for gid=%u", | "line %d: could not get gname for gid=%u", |
| lineno, savegid); | lineno, savegid); |
| } | } |
| if (keys & F_GID) | if (keys & F_GID) |
| (void)printf(" gid=%lu", (u_long)savegid); | printf(" gid=%lu", (u_long)savegid); |
| if (keys & F_MODE) | if (keys & F_MODE) |
| (void)printf(" mode=%#o", savemode); | printf(" mode=%#o", savemode); |
| if (keys & F_NLINK) | if (keys & F_NLINK) |
| (void)printf(" nlink=1"); | printf(" nlink=1"); |
| if (keys & F_FLAGS) { | if (keys & F_FLAGS) { |
| fflags = flags_to_string(saveflags); | fflags = flags_to_string(saveflags); |
| (void)printf(" flags=%s", fflags); | printf(" flags=%s", fflags); |
| free(fflags); | free(fflags); |
| } | } |
| (void)printf("\n"); | printf("\n"); |
| *puid = saveuid; | *puid = saveuid; |
| *pgid = savegid; | *pgid = savegid; |
| *pmode = savemode; | *pmode = savemode; |
| Line 387 statd(FTS *t, FTSENT *parent, uid_t *pui | Line 387 statd(FTS *t, FTSENT *parent, uid_t *pui |
| static int | static int |
| dsort(const FTSENT **a, const FTSENT **b) | dsort(const FTSENT **a, const FTSENT **b) |
| { | { |
| if (S_ISDIR((*a)->fts_statp->st_mode)) { | if (S_ISDIR((*a)->fts_statp->st_mode)) { |
| if (!S_ISDIR((*b)->fts_statp->st_mode)) | if (!S_ISDIR((*b)->fts_statp->st_mode)) |
| return (1); | return (1); |
| Line 402 output(int indent, int *offset, const ch | Line 403 output(int indent, int *offset, const ch |
| char buf[1024]; | char buf[1024]; |
| va_start(ap, fmt); | va_start(ap, fmt); |
| (void)vsnprintf(buf, sizeof(buf), fmt, ap); | vsnprintf(buf, sizeof(buf), fmt, ap); |
| va_end(ap); | va_end(ap); |
| if (*offset + strlen(buf) > MAXLINELEN - 3) { | if (*offset + strlen(buf) > MAXLINELEN - 3) { |
| (void)printf(" \\\n%*s", INDENTNAMELEN + indent, ""); | printf(" \\\n%*s", INDENTNAMELEN + indent, ""); |
| *offset = INDENTNAMELEN + indent; | *offset = INDENTNAMELEN + indent; |
| } | } |
| *offset += printf(" %s", buf) + 1; | *offset += printf(" %s", buf) + 1; |