home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 January / Chip_2001-01_cd1.bin / tema / mysql / mysql-3.23.28g-win-source.exe / mysys / my_rename.c < prev    next >
C/C++ Source or Header  |  2000-08-31  |  2KB  |  61 lines

  1. /* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
  2.    
  3.    This library is free software; you can redistribute it and/or
  4.    modify it under the terms of the GNU Library General Public
  5.    License as published by the Free Software Foundation; either
  6.    version 2 of the License, or (at your option) any later version.
  7.    
  8.    This library is distributed in the hope that it will be useful,
  9.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  11.    Library General Public License for more details.
  12.    
  13.    You should have received a copy of the GNU Library General Public
  14.    License along with this library; if not, write to the Free
  15.    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
  16.    MA 02111-1307, USA */
  17.  
  18. #define USES_TYPES
  19. #include "mysys_priv.h"
  20. #include <my_dir.h>
  21. #include "mysys_err.h"
  22.  
  23. #undef my_rename
  24.     /* On unix rename deletes to file if it exists */
  25.  
  26. int my_rename(const char *from, const char *to, myf MyFlags)
  27. {
  28.   int error = 0;
  29.   DBUG_ENTER("my_rename");
  30.   DBUG_PRINT("my",("from %s to %s MyFlags %d", from, to, MyFlags));
  31.  
  32. #if defined(HAVE_FILE_VERSIONS)
  33.   {                /* Check that there isn't a old file */
  34.     int save_errno;
  35.     MY_STAT my_stat_result;
  36.     save_errno=my_errno;
  37.     if (my_stat(to,&my_stat_result,MYF(0)))
  38.     {
  39.       my_errno=EEXIST;
  40.       error= -1;
  41.       if (MyFlags & MY_FAE+MY_WME)
  42.     my_error(EE_LINK, MYF(ME_BELL+ME_WAITTANG),from,to,my_errno);
  43.       DBUG_RETURN(error);
  44.     }
  45.     my_errno=save_errno;
  46.   }
  47. #endif
  48. #if defined(HAVE_RENAME)
  49.   if (rename(from,to))
  50. #else
  51.   if (link(from, to) || unlink(from))
  52. #endif
  53.   {
  54.     my_errno=errno;
  55.     error = -1;
  56.     if (MyFlags & (MY_FAE+MY_WME))
  57.       my_error(EE_LINK, MYF(ME_BELL+ME_WAITTANG),from,to,my_errno);
  58.   }
  59.   DBUG_RETURN(error);
  60. } /* my_rename */
  61.