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