Rev 3257 | Rev 3282 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3257 | Rev 3272 | ||
---|---|---|---|
Line 73... | Line 73... | ||
73 | static void dentry_name_canonify(fat_dentry_t *d, char *buf) |
73 | static void dentry_name_canonify(fat_dentry_t *d, char *buf) |
74 | { |
74 | { |
75 | int i; |
75 | int i; |
76 | 76 | ||
77 | for (i = 0; i < FAT_NAME_LEN; i++) { |
77 | for (i = 0; i < FAT_NAME_LEN; i++) { |
78 | if (d->name[i] == FAT_PAD) { |
78 | if (d->name[i] == FAT_PAD) |
79 | buf++; |
- | |
80 | break; |
79 | break; |
81 | } |
- | |
82 | if (d->name[i] == FAT_DENTRY_E5_ESC) |
80 | if (d->name[i] == FAT_DENTRY_E5_ESC) |
83 | *buf++ = 0xe5; |
81 | *buf++ = 0xe5; |
84 | else |
82 | else |
85 | *buf++ = d->name[i]; |
83 | *buf++ = d->name[i]; |
86 | } |
84 | } |
Line 94... | Line 92... | ||
94 | if (d->ext[i] == FAT_DENTRY_E5_ESC) |
92 | if (d->ext[i] == FAT_DENTRY_E5_ESC) |
95 | *buf++ = 0xe5; |
93 | *buf++ = 0xe5; |
96 | else |
94 | else |
97 | *buf++ = d->ext[i]; |
95 | *buf++ = d->ext[i]; |
98 | } |
96 | } |
- | 97 | *buf = '\0'; |
|
99 | } |
98 | } |
100 | 99 | ||
101 | static int dev_phone = -1; /* FIXME */ |
100 | static int dev_phone = -1; /* FIXME */ |
102 | static void *dev_buffer = NULL; /* FIXME */ |
101 | static void *dev_buffer = NULL; /* FIXME */ |
103 | 102 | ||
Line 111... | Line 110... | ||
111 | { |
110 | { |
112 | /* FIXME */ |
111 | /* FIXME */ |
113 | block_t *b; |
112 | block_t *b; |
114 | off_t bufpos = 0; |
113 | off_t bufpos = 0; |
115 | size_t buflen = 0; |
114 | size_t buflen = 0; |
- | 115 | off_t pos = offset * bs; |
|
116 | 116 | ||
117 | assert(dev_phone != -1); |
117 | assert(dev_phone != -1); |
118 | assert(dev_buffer); |
118 | assert(dev_buffer); |
119 | 119 | ||
120 | b = malloc(sizeof(block_t)); |
120 | b = malloc(sizeof(block_t)); |
Line 126... | Line 126... | ||
126 | free(b); |
126 | free(b); |
127 | return NULL; |
127 | return NULL; |
128 | } |
128 | } |
129 | b->size = bs; |
129 | b->size = bs; |
130 | 130 | ||
131 | if (!libfs_blockread(dev_phone, dev_buffer, &bufpos, &buflen, &offset, |
131 | if (!libfs_blockread(dev_phone, dev_buffer, &bufpos, &buflen, &pos, |
132 | b->data, bs, bs)) { |
132 | b->data, bs, bs)) { |
133 | free(b->data); |
133 | free(b->data); |
134 | free(b); |
134 | free(b); |
135 | return NULL; |
135 | return NULL; |
136 | } |
136 | } |
Line 455... | Line 455... | ||
455 | default: |
455 | default: |
456 | case FAT_DENTRY_VALID: |
456 | case FAT_DENTRY_VALID: |
457 | dentry_name_canonify(d, name); |
457 | dentry_name_canonify(d, name); |
458 | break; |
458 | break; |
459 | } |
459 | } |
460 | if (strcmp(name, component) == 0) { |
460 | if (stricmp(name, component) == 0) { |
461 | /* hit */ |
461 | /* hit */ |
462 | void *node; |
462 | void *node; |
463 | /* |
463 | /* |
464 | * Assume tree hierarchy for locking. We |
464 | * Assume tree hierarchy for locking. We |
465 | * already have the parent and now we are going |
465 | * already have the parent and now we are going |