home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 6 File / 06-File.zip / mc454src.zip / mc-4.5.4.src / os2emx / src / rename.c < prev    next >
C/C++ Source or Header  |  1999-01-04  |  706b  |  38 lines

  1. #include<stdio.h>
  2.  
  3. #define BUFSIZE 0x4000
  4.  
  5. static
  6. int copy(char *src, char *dst)
  7. { FILE *S=fopen(src,"rb"),*D;
  8.   char buf[BUFSIZE];
  9.   int n,rc=0;
  10.   if(!S)return -1;
  11.   D=fopen(dst,"wb");
  12.   while((n=fread(buf,1,BUFSIZE,S))>0)
  13.      { int nw;
  14.        nw=fwrite(buf,1,n,D);
  15.        if(nw!=n) break;
  16.      }
  17.   if(n&&!feof(S))rc=-1;    
  18.   fclose(D);
  19.   fclose(S);
  20.   return rc;
  21.    
  22.  
  23.  
  24. int my_rename(char *oldname, char *newname)
  25. { int rc;
  26.   char tmp_backup[256];
  27.   if(!tmpnam(tmp_backup))return -1;
  28.   rc=unlink(tmp_backup);
  29.   rc=copy(newname,tmp_backup);
  30.   rc=unlink(newname);
  31.   rc=rename(oldname,newname);
  32.   if(rc)copy(tmp_backup,newname);
  33.   unlink(tmp_backup);
  34.   return rc;
  35. }
  36.  
  37.