install approved copyright notice
[unix-history] / usr / src / sys / stand.att / ls.c
CommitLineData
73bc81fc 1/*
3b8545c8
KB
2 * Copyright (c) 1982, 1986, 1988 Regents of the University of California.
3 * All rights reserved.
73bc81fc 4 *
3b8545c8 5 * Redistribution and use in source and binary forms are permitted
9c50374f
KB
6 * provided that the above copyright notice and this paragraph are
7 * duplicated in all such forms and that any documentation,
8 * advertising materials, and other materials related to such
9 * distribution and use acknowledge that the software was developed
10 * by the University of California, Berkeley. The name of the
11 * University may not be used to endorse or promote products derived
12 * from this software without specific prior written permission.
13 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14 * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15 * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
3b8545c8 16 *
9c50374f 17 * @(#)ls.c 7.4 (Berkeley) %G%
73bc81fc 18 */
a34cad54 19
39c71180
MK
20#include "param.h"
21#include "inode.h"
39c71180 22#include "dir.h"
3b8545c8 23#include "fs.h"
a34cad54
BJ
24#include "saio.h"
25
a34cad54
BJ
26main()
27{
3b8545c8
KB
28 struct inode *ip;
29 int fd;
a34cad54 30
3b8545c8
KB
31 fd = getfile("ls", 0);
32 ip = &iob[fd - 3].i_ino;
33 if ((ip->i_mode & IFMT) != IFDIR)
34 _stop("ls: not a directory");
35 if (ip->i_size == 0)
36 _stop("ls: zero length directory");
37 ls(fd);
a34cad54
BJ
38}
39
3b8545c8
KB
40typedef struct direct DP;
41static
42ls(fd)
43 register int fd;
a34cad54 44{
3b8545c8
KB
45 register int size;
46 register char *dp;
47 char dirbuf[DIRBLKSIZ];
a34cad54 48
3b8545c8
KB
49 printf("\nname->inode\n");
50 while ((size = read(fd, dirbuf, DIRBLKSIZ)) == DIRBLKSIZ)
51 for(dp = dirbuf; (dp < (dirbuf + size)) &&
52 (dp + ((DP *)dp)->d_reclen) < (dirbuf + size);
53 dp += ((DP *)dp)->d_reclen) {
54 if (((DP *)dp)->d_ino == 0)
55 continue;
56 if (((DP *)dp)->d_reclen > DIRSIZ(((DP *)dp)))
57 continue;
58 if (((DP *)dp)->d_namlen > MAXNAMLEN+1)
59 _stop("Corrupt file name length! Run fsck soon!\n");
60 printf("%s->%d\n", ((DP *)dp)->d_name,
61 ((DP *)dp)->d_ino);
a34cad54 62 }
a34cad54 63}