sigset.c -> sigsetops.c, add sigsetops man page
[unix-history] / usr / src / usr.bin / find / ls.c
CommitLineData
45fc66f9
KB
1/*
2 * Copyright (c) 1989 The Regents of the University of California.
3 * All rights reserved.
4 *
f15db449 5 * %sccs.include.redist.c%
45fc66f9
KB
6 */
7
8#ifndef lint
f15db449 9static char sccsid[] = "@(#)ls.c 5.4 (Berkeley) %G%";
45fc66f9
KB
10#endif /* not lint */
11
12#include <sys/param.h>
13#include <sys/stat.h>
14#include <tzfile.h>
15#include <utmp.h>
16#include <stdio.h>
17
18/* Derived from the print routines in the ls(1) source code. */
19
20extern int errno;
21
22void
23printlong(name, accpath, sb)
24 char *name; /* filename to print */
25 char *accpath; /* current valid path to filename */
26 struct stat *sb; /* stat buffer */
27{
731250ce 28 extern int errno;
19341997 29 char modep[15], *user_from_uid(), *group_from_gid(), *strerror();
45fc66f9
KB
30
31 (void)printf("%6lu %4ld ", sb->st_ino, sb->st_blocks);
19341997 32 (void)strmode(sb->st_mode, modep);
731250ce 33 (void)printf("%s %3u %-*s %-*s ", modep, sb->st_nlink, UT_NAMESIZE,
45fc66f9
KB
34 user_from_uid(sb->st_uid, 0), UT_NAMESIZE,
35 group_from_gid(sb->st_gid, 0));
36
37 if (S_ISCHR(sb->st_mode) || S_ISBLK(sb->st_mode))
38 (void)printf("%3d, %3d ", major(sb->st_rdev),
39 minor(sb->st_rdev));
40 else
41 (void)printf("%8ld ", sb->st_size);
42 printtime(sb->st_mtime);
43 (void)printf("%s", name);
44 if (S_ISLNK(sb->st_mode))
45 printlink(accpath);
46 (void)putchar('\n');
47}
48
49printtime(ftime)
50 time_t ftime;
51{
52 int i;
53 char *longstring, *ctime();
54 time_t time();
55
56 longstring = ctime((long *)&ftime);
57 for (i = 4; i < 11; ++i)
58 (void)putchar(longstring[i]);
59
60#define SIXMONTHS ((DAYSPERNYEAR / 2) * SECSPERDAY)
61 if (ftime + SIXMONTHS > time((time_t *)NULL))
62 for (i = 11; i < 16; ++i)
63 (void)putchar(longstring[i]);
64 else {
65 (void)putchar(' ');
66 for (i = 20; i < 24; ++i)
67 (void)putchar(longstring[i]);
68 }
69 (void)putchar(' ');
70}
71
45fc66f9
KB
72printlink(name)
73 char *name;
74{
75 int lnklen;
76 char path[MAXPATHLEN + 1], *strerror();
77
78 if ((lnklen = readlink(name, path, MAXPATHLEN)) == -1) {
79 (void)fprintf(stderr, "\nfind: %s: %s\n", name, strerror(errno));
80 return;
81 }
82 path[lnklen] = '\0';
83 (void)printf(" -> %s", path);
84}