Subversion Repositories HelenOS

Rev

Rev 3252 | Rev 3530 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3252 Rev 3521
Line 43... Line 43...
43
#include <errno.h>
43
#include <errno.h>
44
#include <stdlib.h>
44
#include <stdlib.h>
45
#include <string.h>
45
#include <string.h>
46
#include <sys/types.h>
46
#include <sys/types.h>
47
#include <as.h>
47
#include <as.h>
48
#include <libfs.h>
48
#include <libblock.h>
49
#include <ipc/services.h>
49
#include <ipc/services.h>
50
#include <ipc/devmap.h>
50
#include <ipc/devmap.h>
51
#include <sys/mman.h>
51
#include <sys/mman.h>
52
#include <byteorder.h>
52
#include <byteorder.h>
53
 
53
 
Line 68... Line 68...
68
    do {
68
    do {
69
        char *fname;
69
        char *fname;
70
        tmpfs_dentry_t *node;
70
        tmpfs_dentry_t *node;
71
        uint32_t size;
71
        uint32_t size;
72
       
72
       
73
        if (!libfs_blockread(phone, block, bufpos, buflen, pos, &entry,
73
        if (!blockread(phone, block, bufpos, buflen, pos, &entry,
74
            sizeof(entry), TMPFS_BLOCK_SIZE))
74
            sizeof(entry), TMPFS_BLOCK_SIZE))
75
            return false;
75
            return false;
76
       
76
       
77
        entry.len = uint32_t_le2host(entry.len);
77
        entry.len = uint32_t_le2host(entry.len);
78
       
78
       
Line 88... Line 88...
88
            if (node == NULL) {
88
            if (node == NULL) {
89
                free(fname);
89
                free(fname);
90
                return false;
90
                return false;
91
            }
91
            }
92
           
92
           
93
            if (!libfs_blockread(phone, block, bufpos, buflen, pos,
93
            if (!blockread(phone, block, bufpos, buflen, pos, fname,
94
                fname, entry.len, TMPFS_BLOCK_SIZE)) {
94
                entry.len, TMPFS_BLOCK_SIZE)) {
95
                ops->destroy((void *) node);
95
                ops->destroy((void *) node);
96
                free(fname);
96
                free(fname);
97
                return false;
97
                return false;
98
            }
98
            }
99
            fname[entry.len] = 0;
99
            fname[entry.len] = 0;
Line 103... Line 103...
103
                free(fname);
103
                free(fname);
104
                return false;
104
                return false;
105
            }
105
            }
106
            free(fname);
106
            free(fname);
107
           
107
           
108
            if (!libfs_blockread(phone, block, bufpos, buflen, pos,
108
            if (!blockread(phone, block, bufpos, buflen, pos, &size,
109
                &size, sizeof(size), TMPFS_BLOCK_SIZE))
109
                sizeof(size), TMPFS_BLOCK_SIZE))
110
                return false;
110
                return false;
111
           
111
           
112
            size = uint32_t_le2host(size);
112
            size = uint32_t_le2host(size);
113
           
113
           
114
            node->data = malloc(size);
114
            node->data = malloc(size);
115
            if (node->data == NULL)
115
            if (node->data == NULL)
116
                return false;
116
                return false;
117
           
117
           
118
            node->size = size;
118
            node->size = size;
119
            if (!libfs_blockread(phone, block, bufpos, buflen, pos,
119
            if (!blockread(phone, block, bufpos, buflen, pos,
120
                node->data, size, TMPFS_BLOCK_SIZE))
120
                node->data, size, TMPFS_BLOCK_SIZE))
121
                return false;
121
                return false;
122
           
122
           
123
            break;
123
            break;
124
        case TMPFS_DIRECTORY:
124
        case TMPFS_DIRECTORY:
Line 130... Line 130...
130
            if (node == NULL) {
130
            if (node == NULL) {
131
                free(fname);
131
                free(fname);
132
                return false;
132
                return false;
133
            }
133
            }
134
           
134
           
135
            if (!libfs_blockread(phone, block, bufpos, buflen, pos,
135
            if (!blockread(phone, block, bufpos, buflen, pos, fname,
136
                fname, entry.len, TMPFS_BLOCK_SIZE)) {
136
                entry.len, TMPFS_BLOCK_SIZE)) {
137
                ops->destroy((void *) node);
137
                ops->destroy((void *) node);
138
                free(fname);
138
                free(fname);
139
                return false;
139
                return false;
140
            }
140
            }
141
            fname[entry.len] = 0;
141
            fname[entry.len] = 0;
Line 185... Line 185...
185
    off_t bufpos = 0;
185
    off_t bufpos = 0;
186
    size_t buflen = 0;
186
    size_t buflen = 0;
187
    off_t pos = 0;
187
    off_t pos = 0;
188
   
188
   
189
    char tag[6];
189
    char tag[6];
190
    if (!libfs_blockread(phone, block, &bufpos, &buflen, &pos, tag, 5,
190
    if (!blockread(phone, block, &bufpos, &buflen, &pos, tag, 5,
191
        TMPFS_BLOCK_SIZE))
191
        TMPFS_BLOCK_SIZE))
192
        goto error;
192
        goto error;
193
   
193
   
194
    tag[5] = 0;
194
    tag[5] = 0;
195
    if (strcmp(tag, "TMPFS") != 0)
195
    if (strcmp(tag, "TMPFS") != 0)