Subversion Repositories HelenOS

Rev

Rev 3257 | Rev 3282 | Go to most recent revision | Show entire file | Ignore 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