Commit | Line | Data |
---|---|---|
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 |
26 | main() |
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 |
40 | typedef struct direct DP; |
41 | static | |
42 | ls(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 | } |