00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00025 #include "plibc_private.h"
00026
00034 int truncate(const char *fname, int distance)
00035 {
00036 int i;
00037 HANDLE hFile;
00038 char pszFile[_MAX_PATH + 1];
00039 long lRet;
00040
00041 errno = 0;
00042
00043 if ((lRet = plibc_conv_to_win_path(fname, pszFile)) != ERROR_SUCCESS)
00044 {
00045 SetErrnoFromWinError(lRet);
00046 return -1;
00047 }
00048
00049 i = -1;
00050 hFile = CreateFile(pszFile, GENERIC_READ | GENERIC_WRITE,
00051 FILE_SHARE_READ | FILE_SHARE_WRITE,
00052 NULL, OPEN_EXISTING,
00053 FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, NULL);
00054 if(hFile != INVALID_HANDLE_VALUE)
00055 {
00056 if(SetFilePointer(hFile, distance, NULL, FILE_BEGIN) != 0xFFFFFFFF)
00057 {
00058 if(SetEndOfFile(hFile))
00059 i = 0;
00060 }
00061 CloseHandle(hFile);
00062 }
00063
00064 return i;
00065 }
00066
00067