Rev 2676 | Rev 2685 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2676 | Rev 2678 | ||
---|---|---|---|
Line 305... | Line 305... | ||
305 | ipc_answer_0(rid, EINVAL); |
305 | ipc_answer_0(rid, EINVAL); |
306 | return; |
306 | return; |
307 | } |
307 | } |
308 | 308 | ||
309 | size_t bytes = max(0, min(dentry->size - pos, len)); |
309 | size_t bytes = max(0, min(dentry->size - pos, len)); |
310 | (void) ipc_data_read_deliver(callid, dentry->data + pos, bytes); |
310 | (void) ipc_data_read_finalize(callid, dentry->data + pos, bytes); |
311 | 311 | ||
312 | /* |
312 | /* |
313 | * Answer the VFS_READ call. |
313 | * Answer the VFS_READ call. |
314 | */ |
314 | */ |
315 | ipc_answer_1(rid, EOK, bytes); |
315 | ipc_answer_1(rid, EOK, bytes); |
Line 347... | Line 347... | ||
347 | /* |
347 | /* |
348 | * Check whether the file needs to grow. |
348 | * Check whether the file needs to grow. |
349 | */ |
349 | */ |
350 | if (pos + len <= dentry->size) { |
350 | if (pos + len <= dentry->size) { |
351 | /* The file size is not changing. */ |
351 | /* The file size is not changing. */ |
352 | (void) ipc_data_write_deliver(callid, dentry->data + pos, len); |
352 | (void) ipc_data_write_finalize(callid, dentry->data + pos, len); |
353 | ipc_answer_1(rid, EOK, len); |
353 | ipc_answer_1(rid, EOK, len); |
354 | return; |
354 | return; |
355 | } |
355 | } |
356 | size_t delta = (pos + len) - dentry->size; |
356 | size_t delta = (pos + len) - dentry->size; |
357 | /* |
357 | /* |
Line 367... | Line 367... | ||
367 | ipc_answer_1(rid, EOK, 0); |
367 | ipc_answer_1(rid, EOK, 0); |
368 | return; |
368 | return; |
369 | } |
369 | } |
370 | dentry->size += delta; |
370 | dentry->size += delta; |
371 | dentry->data = newdata; |
371 | dentry->data = newdata; |
372 | (void) ipc_data_write_deliver(callid, dentry->data + pos, len); |
372 | (void) ipc_data_write_finalize(callid, dentry->data + pos, len); |
373 | ipc_answer_1(rid, EOK, len); |
373 | ipc_answer_1(rid, EOK, len); |
374 | } |
374 | } |
375 | 375 | ||
376 | /** |
376 | /** |
377 | * @} |
377 | * @} |