annotate ffstools/tiffs-rd/ls.c @ 237:317936902be4

tiffs IVA: regular ls fully implemented
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Sun, 26 Jan 2014 21:12:15 +0000
parents 254de9560ef3
children 0b13839f782c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
1 /*
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
2 * This C module implements the ls command.
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
3 */
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
4
234
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
5 #include <sys/types.h>
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
6 #include <stdio.h>
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
7 #include <stdlib.h>
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
8 #include <string.h>
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
9 #include <strings.h>
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
10 #include "types.h"
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
11 #include "struct.h"
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
12 #include "globals.h"
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
13 #include "pathname.h"
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
14
234
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
15 static void
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
16 segment_size_callback(inf, opaque)
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
17 struct inode_info *inf;
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
18 u_long opaque;
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
19 {
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
20 size_t *accump = (size_t *) opaque;
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
21 struct chunkinfo chi;
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
22
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
23 size_extra_chunk(inf, &chi);
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
24 *accump += chi.len;
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
25 }
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
26
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
27 size_t
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
28 get_file_size(seghead_ino, deleted)
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
29 {
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
30 struct chunkinfo chi;
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
31 size_t accum;
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
32
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
33 size_head_chunk(inode_info[seghead_ino], &chi);
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
34 accum = chi.len;
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
35 iterate_seg_file(seghead_ino, segment_size_callback, (u_long) &accum,
237
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
36 deleted, 0);
234
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
37 return(accum);
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
38 }
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
39
236
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
40 static void
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
41 segment_ls_callback(inf, opaque)
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
42 struct inode_info *inf;
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
43 u_long opaque;
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
44 {
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
45 struct chunkinfo chi;
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
46
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
47 size_extra_chunk(inf, &chi);
237
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
48 if (verbose2 > 1)
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
49 printf("seg #%04x @%08x length=%lu\n", inf->ino, inf->offset,
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
50 (u_long) chi.len);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
51 else
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
52 printf("seg #%04x length=%lu\n", inf->ino, (u_long) chi.len);
236
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
53 }
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
54
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
55 ls_seg_file(seghead_ino, deleted)
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
56 {
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
57 struct inode_info *inf = inode_info[seghead_ino];
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
58 struct chunkinfo chi;
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
59
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
60 size_head_chunk(inf, &chi);
237
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
61 printf("%lu bytes in seghead", (u_long) chi.len);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
62 if (verbose2 > 1)
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
63 printf(", starting at offset %lx",
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
64 (u_long)(inf->byte_after_name - image));
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
65 putchar('\n');
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
66 iterate_seg_file(seghead_ino, segment_ls_callback, 0L, deleted,
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
67 verbose2 > 1);
236
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
68 }
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
69
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
70 void
237
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
71 ls_tree_callback(pathname, ino, depth)
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
72 char *pathname;
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
73 {
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
74 struct inode_info *inf = inode_info[ino];
234
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
75 u_long size;
235
e17bb8818318 tiffs ls: show read-only file flag
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 234
diff changeset
76 char readonly;
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
77
235
e17bb8818318 tiffs ls: show read-only file flag
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 234
diff changeset
78 if (inf->type & 0x10)
e17bb8818318 tiffs ls: show read-only file flag
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 234
diff changeset
79 readonly = ' ';
e17bb8818318 tiffs ls: show read-only file flag
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 234
diff changeset
80 else
e17bb8818318 tiffs ls: show read-only file flag
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 234
diff changeset
81 readonly = 'r';
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
82 switch (inf->type) {
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
83 case 0xE1:
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
84 case 0xF1:
234
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
85 size = get_file_size(ino, 0);
235
e17bb8818318 tiffs ls: show read-only file flag
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 234
diff changeset
86 printf("f%c %7lu %s\n", readonly, size, pathname);
236
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
87 if (verbose2)
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
88 ls_seg_file(ino, 0);
234
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
89 return;
235
e17bb8818318 tiffs ls: show read-only file flag
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 234
diff changeset
90 case 0xE2:
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
91 case 0xF2:
235
e17bb8818318 tiffs ls: show read-only file flag
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 234
diff changeset
92 printf("d%c %s\n", readonly, pathname);
234
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
93 return;
235
e17bb8818318 tiffs ls: show read-only file flag
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 234
diff changeset
94 case 0xE3:
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
95 case 0xF3:
235
e17bb8818318 tiffs ls: show read-only file flag
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 234
diff changeset
96 printf("l%c %s\n", readonly, pathname);
234
024042383a26 tiffs IVA: ls reports file sizes
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 233
diff changeset
97 return;
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
98 default:
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
99 fprintf(stderr,
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
100 "BUG: bad inode byte %02X reached ls_callback()\n",
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
101 inf->type);
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
102 exit(1);
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
103 }
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
104 }
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
105
237
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
106 ls_by_pathname(pathname)
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
107 char *pathname;
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
108 {
237
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
109 int ino;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
110 struct inode_info *inf;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
111 char *type;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
112
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
113 printf("%s\n", pathname);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
114 ino = find_pathname(pathname);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
115 printf("inode #%x\n", ino);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
116 inf = inode_info[ino];
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
117 switch (inf->type) {
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
118 case 0xE1:
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
119 type = "read-only file";
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
120 break;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
121 case 0xF1:
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
122 type = "file";
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
123 break;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
124 case 0xF2:
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
125 type = "directory";
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
126 break;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
127 case 0xF3:
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
128 type = "symlink";
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
129 break;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
130 default:
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
131 type = "???";
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
132 }
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
133 printf("object type %02X (%s)\n", inf->type, type);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
134 if (!validate_obj_name(ino, ino == root_inode)) {
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
135 printf("No valid object name in the chunk!\n");
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
136 exit(1);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
137 }
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
138 printf("object name: %s\n", inf->dataptr);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
139 if (inf->type == 0xF1 || inf->type == 0xE1) {
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
140 printf("total size: %lu bytes\n",
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
141 (u_long) get_file_size(ino, 0));
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
142 if (verbose2)
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
143 ls_seg_file(ino, 0);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
144 }
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
145 putchar('\n');
233
ae9ff2d1e3da tiffs IVA: basic ls integrated
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff changeset
146 }
236
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
147
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
148 cmd_ls(argc, argv)
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
149 char **argv;
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
150 {
237
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
151 extern int optind;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
152 int c;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
153
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
154 read_ffs_image();
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
155 find_inode_block();
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
156 alloc_inode_table();
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
157 find_root_inode();
236
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
158
237
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
159 optind = 0;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
160 while ((c = getopt(argc, argv, "v")) != EOF)
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
161 switch (c) {
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
162 case 'v':
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
163 verbose2++;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
164 continue;
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
165 default:
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
166 fprintf(stderr, "usage: ls [-v[v]] [pathname...]\n");
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
167 exit(1);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
168 }
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
169 if (optind >= argc) {
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
170 traverse_visible_tree(ls_tree_callback);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
171 exit(0);
236
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
172 }
237
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
173 for (; optind < argc; optind++)
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
174 ls_by_pathname(argv[optind]);
317936902be4 tiffs IVA: regular ls fully implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 236
diff changeset
175 exit(0);
236
254de9560ef3 tiffs ls -v implemented
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents: 235
diff changeset
176 }