Rev 2751 | Rev 2760 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2751 | Rev 2758 | ||
---|---|---|---|
Line 143... | Line 143... | ||
143 | int lflag = IPC_GET_ARG4(*request); |
143 | int lflag = IPC_GET_ARG4(*request); |
144 | 144 | ||
145 | if (last < next) |
145 | if (last < next) |
146 | last += PLB_SIZE; |
146 | last += PLB_SIZE; |
147 | 147 | ||
- | 148 | void *par = NULL; |
|
148 | void *cur = ops->root_get(); |
149 | void *cur = ops->root_get(); |
149 | void *tmp = ops->child_get(cur); |
150 | void *tmp = ops->child_get(cur); |
150 | 151 | ||
151 | if (ops->plb_get_char(next) == '/') |
152 | if (ops->plb_get_char(next) == '/') |
152 | next++; /* eat slash */ |
153 | next++; /* eat slash */ |
Line 204... | Line 205... | ||
204 | ipc_answer_0(rid, ENOENT); |
205 | ipc_answer_0(rid, ENOENT); |
205 | return; |
206 | return; |
206 | } |
207 | } |
207 | 208 | ||
208 | /* descend one level */ |
209 | /* descend one level */ |
- | 210 | par = cur; |
|
209 | cur = tmp; |
211 | cur = tmp; |
210 | tmp = ops->child_get(tmp); |
212 | tmp = ops->child_get(tmp); |
211 | } |
213 | } |
212 | 214 | ||
213 | /* handle miss: excessive components */ |
215 | /* handle miss: excessive components */ |
Line 258... | Line 260... | ||
258 | } |
260 | } |
259 | 261 | ||
260 | /* handle hit */ |
262 | /* handle hit */ |
261 | if (lflag & L_DESTROY) { |
263 | if (lflag & L_DESTROY) { |
262 | unsigned old_lnkcnt = ops->lnkcnt_get(cur); |
264 | unsigned old_lnkcnt = ops->lnkcnt_get(cur); |
263 | int res = ops->unlink(cur); |
265 | int res = ops->unlink(par, cur); |
264 | ipc_answer_5(rid, (ipcarg_t)res, fs_handle, dev_handle, |
266 | ipc_answer_5(rid, (ipcarg_t)res, fs_handle, dev_handle, |
265 | ops->index_get(cur), ops->size_get(cur), old_lnkcnt); |
267 | ops->index_get(cur), ops->size_get(cur), old_lnkcnt); |
266 | return; |
268 | return; |
267 | } |
269 | } |
268 | if ((lflag & (L_CREATE | L_EXCLUSIVE)) == (L_CREATE | L_EXCLUSIVE)) { |
270 | if ((lflag & (L_CREATE | L_EXCLUSIVE)) == (L_CREATE | L_EXCLUSIVE)) { |