|
|
1.1 root 1: /* ls.c 6.1 83/07/29 */
2:
3: #include "../h/param.h"
4: #include "../h/inode.h"
5: #include "../h/dir.h"
6: #include "../h/fs.h"
7: #include "saio.h"
8:
9: char line[100];
10:
11: main()
12: {
13: int io;
14: register char *ptr;
15: struct inode *ip;
16:
17: for(;;) {
18: line[0] = 0;
19: printf("\n\nls: ");
20: gets(line);
21: /* scan to end of line */
22: for(ptr=line; *ptr; ptr++)
23: ;
24: /* check to see if a file was specified */
25: if(ptr == line) {
26: printf("usage: dev(unit,0)/directory\n");
27: continue;
28: }
29: /* do one correction first so the raw dev is not opened */
30: if(*(--ptr) == ')') {
31: *(++ptr) = '/';
32: *(++ptr) = '.';
33: *(++ptr) = (char)0;
34: }
35: if(*ptr == '/') {
36: *(++ptr) = '.';
37: *(++ptr) = (char)0;
38: }
39: if((io = open(line, 0)) >= 0)
40: break;
41: }
42: if((io >= NFILES+3) || (io < 3))
43: _stop("open returned corrupt file index!");
44: ip = &iob[io-3].i_ino;
45: if ((ip->i_mode & IFMT) != IFDIR) {
46: printf("%s is not a directory!\n", line);
47: _stop("");
48: }
49: if (ip->i_size == 0) {
50: printf("%s is a zero length directory!\n", line);
51: _stop("");
52: }
53:
54: ls(io);
55: }
56:
57: ls(io)
58: register io;
59: {
60:
61: register int i, size;
62: register char *dp;
63: static char dirbuf[DIRBLKSIZ];
64:
65: printf ("\nInode -> Name\n");
66: while ((size = read(io, dirbuf, DIRBLKSIZ)) == DIRBLKSIZ) {
67: for(dp = dirbuf; (dp < (dirbuf + size)) &&
68: (dp + ((struct direct *)dp)->d_reclen) < (dirbuf + size);
69: dp += ((struct direct *)dp)->d_reclen) {
70: if(((struct direct *)dp)->d_ino == 0)
71: continue;
72: if(((struct direct *)dp)->d_reclen >
73: DIRSIZ(((struct direct *)dp)))
74: continue;
75: if(((struct direct *)dp)->d_namlen > MAXNAMLEN+1)
76: _stop("Corrupt file name length! Run fsck soon!\n");
77: printf("%s -> %d\n", ((struct direct *)dp)->d_name,
78: ((struct direct *)dp)->d_ino);
79: }
80: }
81: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.