Rev 3022 | Rev 4439 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3022 | Rev 4055 | ||
---|---|---|---|
Line 158... | Line 158... | ||
158 | while (next <= last && ops->has_children(cur)) { |
158 | while (next <= last && ops->has_children(cur)) { |
159 | /* collect the component */ |
159 | /* collect the component */ |
160 | len = 0; |
160 | len = 0; |
161 | while ((next <= last) && (ops->plb_get_char(next) != '/')) { |
161 | while ((next <= last) && (ops->plb_get_char(next) != '/')) { |
162 | if (len + 1 == NAME_MAX) { |
162 | if (len + 1 == NAME_MAX) { |
163 | /* comopnent length overflow */ |
163 | /* component length overflow */ |
164 | ipc_answer_0(rid, ENAMETOOLONG); |
164 | ipc_answer_0(rid, ENAMETOOLONG); |
165 | goto out; |
165 | goto out; |
166 | } |
166 | } |
167 | component[len++] = ops->plb_get_char(next); |
167 | component[len++] = ops->plb_get_char(next); |
168 | next++; /* process next character */ |
168 | next++; /* process next character */ |
Line 189... | Line 189... | ||
189 | ipc_answer_0(rid, ENOTDIR); |
189 | ipc_answer_0(rid, ENOTDIR); |
190 | goto out; |
190 | goto out; |
191 | } |
191 | } |
192 | void *nodep; |
192 | void *nodep; |
193 | if (lflag & L_CREATE) |
193 | if (lflag & L_CREATE) |
194 | nodep = ops->create(lflag); |
194 | nodep = ops->create(dev_handle, lflag); |
195 | else |
195 | else |
196 | nodep = ops->node_get(dev_handle, |
196 | nodep = ops->node_get(dev_handle, |
197 | index); |
197 | index); |
198 | if (nodep) { |
198 | if (nodep) { |
- | 199 | int rc; |
|
- | 200 | ||
199 | if (!ops->link(cur, nodep, component)) { |
201 | rc = ops->link(cur, nodep, component); |
- | 202 | if (rc != EOK) { |
|
200 | if (lflag & L_CREATE) { |
203 | if (lflag & L_CREATE) { |
201 | (void)ops->destroy( |
204 | (void)ops->destroy( |
202 | nodep); |
205 | nodep); |
203 | } |
206 | } |
204 | ipc_answer_0(rid, ENOSPC); |
207 | ipc_answer_0(rid, rc); |
205 | } else { |
208 | } else { |
206 | ipc_answer_5(rid, EOK, |
209 | ipc_answer_5(rid, EOK, |
207 | fs_handle, dev_handle, |
210 | fs_handle, dev_handle, |
208 | ops->index_get(nodep), |
211 | ops->index_get(nodep), |
209 | ops->size_get(nodep), |
212 | ops->size_get(nodep), |
Line 260... | Line 263... | ||
260 | assert(len); |
263 | assert(len); |
261 | component[len] = '\0'; |
264 | component[len] = '\0'; |
262 | 265 | ||
263 | void *nodep; |
266 | void *nodep; |
264 | if (lflag & L_CREATE) |
267 | if (lflag & L_CREATE) |
265 | nodep = ops->create(lflag); |
268 | nodep = ops->create(dev_handle, lflag); |
266 | else |
269 | else |
267 | nodep = ops->node_get(dev_handle, index); |
270 | nodep = ops->node_get(dev_handle, index); |
268 | if (nodep) { |
271 | if (nodep) { |
- | 272 | int rc; |
|
- | 273 | ||
269 | if (!ops->link(cur, nodep, component)) { |
274 | rc = ops->link(cur, nodep, component); |
- | 275 | if (rc != EOK) { |
|
270 | if (lflag & L_CREATE) |
276 | if (lflag & L_CREATE) |
271 | (void)ops->destroy(nodep); |
277 | (void)ops->destroy(nodep); |
272 | ipc_answer_0(rid, ENOSPC); |
278 | ipc_answer_0(rid, rc); |
273 | } else { |
279 | } else { |
274 | ipc_answer_5(rid, EOK, |
280 | ipc_answer_5(rid, EOK, |
275 | fs_handle, dev_handle, |
281 | fs_handle, dev_handle, |
276 | ops->index_get(nodep), |
282 | ops->index_get(nodep), |
277 | ops->size_get(nodep), |
283 | ops->size_get(nodep), |