1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

Rely on Gnulib for fsync, link, readlink, mkdir, rmdir, and rename.

* libguile/filesys.c: Remove 'fsync' wrapper for MinGW.
  (scm_link, scm_readlink, scm_mkdir, scm_rmdir): Define these
  unconditionally.
  (my_rename): Remove.
  (scm_rename): Use 'rename' instead of 'my_rename'.
This commit is contained in:
Mark H Weaver 2014-02-27 21:24:40 -05:00
parent 3243fffcc1
commit ca6adcc6df

View file

@ -1,5 +1,5 @@
/* Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2006, /* Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2006,
* 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. * 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc.
* *
* This library is free software; you can redistribute it and/or * This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License * modify it under the terms of the GNU Lesser General Public License
@ -110,12 +110,6 @@
#include <full-write.h> #include <full-write.h>
/* Some more definitions for the native Windows port. */
#ifdef __MINGW32__
# define fsync(fd) _commit (fd)
#endif /* __MINGW32__ */
/* Two helper macros for an often used pattern */ /* Two helper macros for an often used pattern */
@ -590,7 +584,6 @@ SCM_DEFINE (scm_lstat, "lstat", 1, 0, 0,
/* {Modifying Directories} /* {Modifying Directories}
*/ */
#ifdef HAVE_LINK
SCM_DEFINE (scm_link, "link", 2, 0, 0, SCM_DEFINE (scm_link, "link", 2, 0, 0,
(SCM oldpath, SCM newpath), (SCM oldpath, SCM newpath),
"Creates a new name @var{newpath} in the file system for the\n" "Creates a new name @var{newpath} in the file system for the\n"
@ -609,7 +602,6 @@ SCM_DEFINE (scm_link, "link", 2, 0, 0,
return SCM_UNSPECIFIED; return SCM_UNSPECIFIED;
} }
#undef FUNC_NAME #undef FUNC_NAME
#endif /* HAVE_LINK */
/* {Navigating Directories} /* {Navigating Directories}
@ -1012,7 +1004,6 @@ SCM_DEFINE (scm_symlink, "symlink", 2, 0, 0,
#undef FUNC_NAME #undef FUNC_NAME
#endif /* HAVE_SYMLINK */ #endif /* HAVE_SYMLINK */
#ifdef HAVE_READLINK
SCM_DEFINE (scm_readlink, "readlink", 1, 0, 0, SCM_DEFINE (scm_readlink, "readlink", 1, 0, 0,
(SCM path), (SCM path),
"Return the value of the symbolic link named by @var{path} (a\n" "Return the value of the symbolic link named by @var{path} (a\n"
@ -1051,7 +1042,6 @@ SCM_DEFINE (scm_readlink, "readlink", 1, 0, 0,
return result; return result;
} }
#undef FUNC_NAME #undef FUNC_NAME
#endif /* HAVE_READLINK */
SCM_DEFINE (scm_copy_file, "copy-file", 2, 0, 0, SCM_DEFINE (scm_copy_file, "copy-file", 2, 0, 0,
(SCM oldfile, SCM newfile), (SCM oldfile, SCM newfile),
@ -1254,7 +1244,6 @@ SCM_DEFINE (scm_getcwd, "getcwd", 0, 0, 0,
#undef FUNC_NAME #undef FUNC_NAME
#endif /* HAVE_GETCWD */ #endif /* HAVE_GETCWD */
#ifdef HAVE_MKDIR
SCM_DEFINE (scm_mkdir, "mkdir", 1, 1, 0, SCM_DEFINE (scm_mkdir, "mkdir", 1, 1, 0,
(SCM path, SCM mode), (SCM path, SCM mode),
"Create a new directory named by @var{path}. If @var{mode} is omitted\n" "Create a new directory named by @var{path}. If @var{mode} is omitted\n"
@ -1281,9 +1270,7 @@ SCM_DEFINE (scm_mkdir, "mkdir", 1, 1, 0,
return SCM_UNSPECIFIED; return SCM_UNSPECIFIED;
} }
#undef FUNC_NAME #undef FUNC_NAME
#endif /* HAVE_MKDIR */
#ifdef HAVE_RMDIR
SCM_DEFINE (scm_rmdir, "rmdir", 1, 0, 0, SCM_DEFINE (scm_rmdir, "rmdir", 1, 0, 0,
(SCM path), (SCM path),
"Remove the existing directory named by @var{path}. The directory must\n" "Remove the existing directory named by @var{path}. The directory must\n"
@ -1298,27 +1285,6 @@ SCM_DEFINE (scm_rmdir, "rmdir", 1, 0, 0,
return SCM_UNSPECIFIED; return SCM_UNSPECIFIED;
} }
#undef FUNC_NAME #undef FUNC_NAME
#endif
#ifdef HAVE_RENAME
#define my_rename rename
#else
static int
my_rename (const char *oldname, const char *newname)
{
int rv;
SCM_SYSCALL (rv = link (oldname, newname));
if (rv == 0)
{
SCM_SYSCALL (rv = unlink (oldname));
if (rv != 0)
/* unlink failed. remove new name */
SCM_SYSCALL (unlink (newname));
}
return rv;
}
#endif
SCM_DEFINE (scm_rename, "rename-file", 2, 0, 0, SCM_DEFINE (scm_rename, "rename-file", 2, 0, 0,
(SCM oldname, SCM newname), (SCM oldname, SCM newname),
@ -1330,7 +1296,7 @@ SCM_DEFINE (scm_rename, "rename-file", 2, 0, 0,
STRING2_SYSCALL (oldname, c_oldname, STRING2_SYSCALL (oldname, c_oldname,
newname, c_newname, newname, c_newname,
rv = my_rename (c_oldname, c_newname)); rv = rename (c_oldname, c_newname));
if (rv != 0) if (rv != 0)
SCM_SYSERROR; SCM_SYSERROR;
return SCM_UNSPECIFIED; return SCM_UNSPECIFIED;