dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Dotgnu-pnet-commits] pnet/support file.c,1.19,1.20


From: Rhys Weatherley <address@hidden>
Subject: [Dotgnu-pnet-commits] pnet/support file.c,1.19,1.20
Date: Thu, 27 Nov 2003 01:28:57 +0000

Update of /cvsroot/dotgnu-pnet/pnet/support
In directory subversions:/tmp/cvs-serv10818/support

Modified Files:
        file.c 
Log Message:


ILCopyFile: rewrite the file copying function.


Index: file.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/support/file.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -d -r1.19 -r1.20
*** file.c      27 Nov 2003 01:14:31 -0000      1.19
--- file.c      27 Nov 2003 01:28:55 -0000      1.20
***************
*** 361,395 ****
  ILInt32 ILCopyFile(const char *src, const char *dest)
  {
!       ILSysIOHandle src_result;
!       ILSysIOHandle dest_result;
!       char buf[4000];
!       int bytes_read;
  
!       /* Reset errno because we're not sure what it'll be */
!       errno = 0;
!       if (src == NULL || dest == NULL)
        {
            return IL_ERRNO_ENOENT;
        }
  
!       /* Open the source and dest files */
!       src_result = ILSysIOOpenFile(src, ILFileMode_Open, ILFileAccess_Read, 
ILFileShare_Read);
!       dest_result = ILSysIOOpenFile(dest, ILFileMode_CreateNew, 
ILFileAccess_Write, ILFileShare_None);
  
!       /* if we had an error, send the errno back */
!       if(src_result == ILSysIOHandle_Invalid || dest_result == 
ILSysIOHandle_Invalid)
        {
!               return ILSysIOConvertErrno(errno);
        }
  
!       while ( ( bytes_read = ILSysIORead(src_result, buf, 4000) ) > 0 )
        {
!               ILSysIOWrite(dest_result, buf, bytes_read);
        }
  
!       ILSysIOClose(src_result);
!       ILSysIOClose(dest_result);
!       
!       return ILSysIOConvertErrno(errno);
  }
  
--- 361,409 ----
  ILInt32 ILCopyFile(const char *src, const char *dest)
  {
!       FILE *infile;
!       FILE *outfile;
!       char buffer[BUFSIZ];
!       int len;
  
!       /* Bail out if either of the arguments is invalid */
!       if(!src || !dest)
        {
            return IL_ERRNO_ENOENT;
        }
  
!       /* Open the input file */
!       if((infile = fopen(src, "rb")) == NULL)
!       {
!               if((infile = fopen(src, "r")) == NULL)
!               {
!                       return ILSysIOConvertErrno(errno);
!               }
!       }
  
!       /* Open the output file */
!       if((outfile = fopen(dest, "wb")) == NULL)
        {
!               if((outfile = fopen(dest, "w")) == NULL)
!               {
!                       int error = ILSysIOConvertErrno(errno);
!                       fclose(infile);
!                       return error;
!               }
        }
  
!       /* Copy the file contents */
!       while((len = (int)fread(buffer, 1, sizeof(buffer), infile)) > 0)
        {
!               fwrite(buffer, 1, len, outfile);
!               if(len < sizeof(buffer))
!               {
!                       break;
!               }
        }
  
!       /* Close the files and exit */
!       fclose(infile);
!       fclose(outfile);
!       return 0;
  }
  





reply via email to

[Prev in Thread] Current Thread [Next in Thread]