DosSetFileSize: Difference between revisions
Appearance
mNo edit summary |
mNo edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
Changes the size of a file. | Changes the size of a file. | ||
==Syntax== | ==Syntax== | ||
DosSetFileSize(hFile, cbSize) | |||
==Parameters== | ==Parameters== | ||
Line 19: | Line 9: | ||
==Return Code== | ==Return Code== | ||
;ulrc (APIRET) - returns:DosSetFileSize returns one of the following values: | |||
DosSetFileSize returns one of the following values: | |||
* 0 NO_ERROR | * 0 NO_ERROR | ||
* 5 ERROR_ACCESS_DENIED | * 5 ERROR_ACCESS_DENIED | ||
Line 33: | Line 21: | ||
When DosSetFileSize is issued, the file must be open in a mode that allows write access. | When DosSetFileSize is issued, the file must be open in a mode that allows write access. | ||
The size of the open file can be truncated or extended. If the file size is being extended, the file system tries to allocate additional bytes in a contiguous (or nearly contiguous) space on the medium. The values of the new bytes are undefined. | The size of the open file can be truncated or extended. If the file size is being extended, the file system tries to allocate additional bytes in a contiguous (or nearly contiguous) space on the medium. The values of the new bytes are undefined. | ||
==Example Code== | ==Example Code== |
Latest revision as of 19:54, 29 November 2019
Changes the size of a file.
Syntax
DosSetFileSize(hFile, cbSize)
Parameters
- hFile (HFILE) - input
- Handle of the file whose size to be changed.
- cbSize (ULONG) - input
- New size, in bytes, of the file.
Return Code
- ulrc (APIRET) - returns
- DosSetFileSize returns one of the following values:
- 0 NO_ERROR
- 5 ERROR_ACCESS_DENIED
- 6 ERROR_INVALID_HANDLE
- 26 ERROR_NOT_DOS_DISK
- 33 ERROR_LOCK_VIOLATION
- 87 ERROR_INVALID_PARAMETER
- 112 ERROR_DISK_FULL
Remarks
When DosSetFileSize is issued, the file must be open in a mode that allows write access.
The size of the open file can be truncated or extended. If the file size is being extended, the file system tries to allocate additional bytes in a contiguous (or nearly contiguous) space on the medium. The values of the new bytes are undefined.
Example Code
This example writes to a file named "DOSMAN.DAT", resets the buffer, and changes the file size.
#define INCL_DOSFILEMGR /* File Manager values */ #define INCL_DOSERRORS /* DOS Error values */ #include <os2.h> #include <stdio.h> #include <string.h> int main(VOID) { HFILE hfFileHandle = 0L; /* Handle for file being manipulated */ ULONG ulAction = 0; /* Action taken by DosOpen */ ULONG ulWrote = 0; /* Number of bytes written by DosWrite */ UCHAR uchFileName[20] = "dosman.dat", /* Name of file */ uchFileData[4] = "DATA"; /* Data to write to file */ APIRET rc = NO_ERROR; /* Return code */ /* Open the file dosman.dat. Use an existing file or create a new */ /* one if it doesn't exist. */ rc = DosOpen(uchFileName, &hfFileHandle, &ulAction, 4L, FILE_ARCHIVED | FILE_NORMAL, OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS, OPEN_FLAGS_NOINHERIT | OPEN_SHARE_DENYNONE | OPEN_ACCESS_READWRITE, 0L); if (rc != NO_ERROR) { printf("DosOpen error: return code = %u\n", rc); return 1; } rc = DosWrite (hfFileHandle, (PVOID) uchFileData, sizeof (uchFileData), &ulWrote); if (rc != NO_ERROR) { printf("DosWrite error: return code = %u\n", rc); return 1; } rc = DosResetBuffer (hfFileHandle); if (rc != NO_ERROR) { printf("DosResetBuffer error: return code = %u\n", rc); return 1; } /* endif */ rc = DosSetFileSize (hfFileHandle, 8L); /* Change file size */ if (rc != NO_ERROR) { printf("DosSetFileSize error: return code = %u\n", rc); return 1; } return NO_ERROR; }