1: #include <stdio.h>
2:
3: #define NMOUNT 16
4: #define NAMSIZ 32
5:
6: struct mtab {
7: char file[NAMSIZ];
8: char spec[NAMSIZ];
9: } mtab[NMOUNT];
10:
11: main(argc, argv)
12: char **argv;
13: {
14: register int ro;
15: register struct mtab *mp;
16: register char *np;
17: int mf;
18:
19: mf = open("/etc/mtab", 0);
20: read(mf, (char *)mtab, NMOUNT*2*NAMSIZ);
21: if (argc==1) {
22: for (mp = mtab; mp < &mtab[NMOUNT]; mp++)
23: if (mp->file[0])
24: printf("%s on %s\n", mp->spec, mp->file);
25: exit(0);
26: }
27: if(argc < 3) {
28: fprintf(stderr,"arg count\n");
29: exit(1);
30: }
31: ro = 0;
32: if(argc > 3)
33: ro++;
34: if(mount(argv[1], argv[2], ro) < 0) {
35: perror("mount");
36: exit(1);
37: }
38: np = argv[1];
39: while(*np++)
40: ;
41: np--;
42: while(*--np == '/')
43: *np = '\0';
44: while(np > argv[1] && *--np != '/')
45: ;
46: if(*np == '/')
47: np++;
48: argv[1] = np;
49: for (mp = mtab; mp < &mtab[NMOUNT]; mp++) {
50: if (mp->file[0] == 0) {
51: for (np = mp->spec; np < &mp->spec[NAMSIZ-1];)
52: if ((*np++ = *argv[1]++) == 0)
53: argv[1]--;
54: for (np = mp->file; np < &mp->file[NAMSIZ-1];)
55: if ((*np++ = *argv[2]++) == 0)
56: argv[2]--;
57: mp = &mtab[NMOUNT];
58: while ((--mp)->file[0] == 0);
59: mf = creat("/etc/mtab", 0644);
60: write(mf, (char *)mtab, (mp-mtab+1)*2*NAMSIZ);
61: exit(0);
62: }
63: }
64: exit(0);
65: }
Defined functions
main
defined in line
11;
never used
Defined variables
mtab
defined in line
9; used 8 times
Defined struct's
mtab
defined in line
6; used 2 times
Defined macros
NAMSIZ
defined in line
4; used 6 times
NMOUNT
defined in line
3; used 5 times