rename_file_replace_if_exists.cpp 592 B

123456789101112131415161718192021222324
  1. //
  2. // $Id$
  3. //
  4. #include<__vic/fs.h>
  5. #include<__vic/throw_errno.h>
  6. #include<__vic/posix/error.h>
  7. #include<cstdio>
  8. #include<cerrno>
  9. namespace __vic {
  10. //----------------------------------------------------------------------------
  11. bool rename_file_replace_if_exists(const char *src_name, const char *dest_name)
  12. {
  13. if(std::rename(src_name, dest_name) == 0) return true;
  14. int err = errno;
  15. if(posix::is_ENOENT(err)) return false; // input file doesn't exist
  16. throw_errno("rename", err);
  17. }
  18. //----------------------------------------------------------------------------
  19. } // namespace