_WCRTLINK int chsize( int hid, long size ) { long curOffset; long rc; __file_handle *fh; __handle_check( hid, -1 ); fh = (__file_handle*) __getOSHandle( hid ); _AccessFileH( hid ); curOffset = __lseek( hid, 0L, SEEK_CUR ); /* get current offset */ rc = set_file_size(fh->name, size); if(rc !=0 ) { _ReleaseFileH( hid ); if(rc==8) __set_errno( ENOSPC ); else __set_errno( EACCES ); return -1; }; if( curOffset > size ) curOffset = size; curOffset = __lseek( hid, curOffset, SEEK_SET ); _ReleaseFileH( hid ); if( curOffset == -1 ) { __set_errno(ENOSPC); return( -1 ); } return( 0 ); }
bool BufferedFile::open(const PathChar *name, const char *mode) { set_file_pointer(OsFile_open(name, mode)); OsFile_Handle fh = file_pointer(); set_file_size(fh == NULL ? 0 : OsFile_length(fh)); return (fh != NULL); }
void BufferedFile::init(Buffer *data, int buffer_size, int file_size, int buffer_count) { // initialize the buffer init(); set_file_pos(buffer_count); set_count(buffer_count); set_data_buffer(data); set_buffer_size(buffer_size); set_file_size(file_size); }
int BufferedFile::close() { if (file_pointer() != NULL) { int result = OsFile_close(file_pointer()); set_file_pointer(0); set_file_size(0); set_file_pos(0); set_index(0); set_count(0); return result; } else { return -1; } }
////////////////////////////////////////////////////////////////////////// // upload void UploadTask::RunImp() { set_timeout(-1); set_is_upload(true); set_http_method(HTTP_METHOD_PUT); std::string uri_str = uri(); std::string buckname = CString2string(_buckname); buckname = MultiByteToUtf8(buckname); std::string folderfile = CString2string(_filename); folderfile = MultiByteToUtf8(folderfile); set_uri(uri_str.append(URLEncode(buckname) + "/" + URLEncode(folderfile))); set_file_name(CString2string(_localpath)); set_file_begin_pos(0); set_file_size(-1); }
static uint32 disk_set_info(IRP * irp) { FILE_INFO *finfo; uint32 status; uint64 len; char * buf; int size; char * fullpath; struct stat file_stat; struct utimbuf tvs; int mode; uint32 attr; time_t t; LLOGLN(10, ("disk_set_info: class=%d id=%d", irp->infoClass, irp->fileID)); finfo = disk_get_file_info(irp->dev, irp->fileID); if (finfo == NULL) { LLOGLN(0, ("disk_set_info: invalid file id")); return RD_STATUS_INVALID_HANDLE; } status = RD_STATUS_SUCCESS; switch (irp->infoClass) { case FileBasicInformation: if (stat(finfo->fullpath, &file_stat) != 0) return get_error_status(); /* Change file time */ tvs.actime = file_stat.st_atime; tvs.modtime = file_stat.st_mtime; t = get_system_filetime(GET_UINT64(irp->inputBuffer, 8)); /* LastAccessTime */ if (t > 0) tvs.actime = t; t = get_system_filetime(GET_UINT64(irp->inputBuffer, 16)); /* LastWriteTime */ if (t > 0) tvs.modtime = t; utime(finfo->fullpath, &tvs); /* Change read-only flag */ attr = GET_UINT32(irp->inputBuffer, 32); if (attr == 0) break; mode = file_stat.st_mode; if (attr & FILE_ATTRIBUTE_READONLY) mode &= ~(S_IWUSR | S_IWGRP | S_IWOTH); else mode |= S_IWUSR; mode &= 0777; chmod(finfo->fullpath, mode); break; case FileEndOfFileInformation: case FileAllocationInformation: len = GET_UINT64(irp->inputBuffer, 0); set_file_size(finfo->file, len); break; case FileDispositionInformation: /* Delete on close */ finfo->delete_pending = 1; break; case FileRenameInformation: //replaceIfExists = GET_UINT8(irp->inputBuffer, 0); /* ReplaceIfExists */ //rootDirectory = GET_UINT8(irp->inputBuffer, 1); /* RootDirectory */ len = GET_UINT32(irp->inputBuffer, 2); size = len * 2; buf = malloc(size); memset(buf, 0, size); freerdp_get_wstr(buf, size, irp->inputBuffer + 6, len); fullpath = disk_get_fullpath(irp->dev, buf); free(buf); LLOGLN(10, ("disk_set_info: rename %s to %s", finfo->fullpath, fullpath)); if (rename(finfo->fullpath, fullpath) == 0) { free(finfo->fullpath); finfo->fullpath = fullpath; } else { free(fullpath); return get_error_status(); } break; default: LLOGLN(0, ("disk_set_info: invalid info class")); status = RD_STATUS_NOT_SUPPORTED; break; } return status; }
void DownloadTask::handle_trans_bytes( uint64 trans_bytes, uint64 total ) { set_file_size(total); _speed_calc.add_bytes(trans_bytes - _trans_total); _trans_total = trans_bytes; }
std::unique_ptr<osmium::io::Decompressor> create_decompressor(osmium::io::file_compression compression, int fd) const { const auto callbacks = find_callbacks(compression); auto p = std::unique_ptr<osmium::io::Decompressor>(std::get<1>(callbacks)(fd)); p->set_file_size(osmium::util::file_size(fd)); return p; }