Subversion Repositories HelenOS

Rev

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
 * @}