static int write_file(Stream_t *Stream, char *buf, mt_off_t iwhere, size_t len) { DeclareThis(File_t); mt_off_t pos; int ret; size_t requestedLen; Stream_t *Disk = This->Fs->Next; off_t where = truncBytes32(iwhere); int err; requestedLen = len; err = This->map(This, where, &len, MT_WRITE, &pos); if( err <= 0) return err; if(batchmode) ret = force_write(Disk, buf, pos, len); else ret = WRITES(Disk, buf, pos, len); if(ret > requestedLen) ret = requestedLen; if (ret > 0 && where + ret > This->FileSize ) This->FileSize = where + ret; recalcPreallocSize(This); return ret; }
static int write_file(struct Stream_t *Stream, char *buf, off_t iwhere, size_t len) { DeclareThis(struct File_t); off_t pos; struct Stream_t *Disk = This->Fs->Next; off_t where = truncBytes32(iwhere); const size_t requestedLen = len; int err = This->map(This, where, &len, MT_WRITE, &pos); if (err <= 0) return err; int ret = WRITES(Disk, buf, pos, len); if(ret > (signed int) requestedLen) ret = requestedLen; if (ret > 0 && where + ret > (off_t) This->FileSize) This->FileSize = where + ret; recalcPreallocSize(This); return ret; }