diff --git a/configure.ac b/configure.ac index 3c117d3fd..5f9879865 100644 --- a/configure.ac +++ b/configure.ac @@ -756,7 +756,7 @@ AC_CHECK_HEADERS([assert.h crt_externs.h]) # utimensat: posix.1-2008 # sched_getaffinity, sched_setaffinity: GNU extensions (glibc) # -AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid fesetround ftime ftruncate fchown getcwd geteuid getsid gettimeofday gmtime_r ioctl lstat mkdir mknod nice pipe _pipe poll readdir_r readdir64_r readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction siginterrupt stat64 strftime strptime symlink sync sysconf tcgetpgrp tcsetpgrp times uname waitpid strdup system usleep atexit on_exit chown link fcntl ttyname getpwent getgrent kill getppid getpgrp fork setitimer getitimer strchr strcmp index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron strcoll strcoll_l newlocale utimensat sched_getaffinity sched_setaffinity]) +AC_CHECK_FUNCS([DINFINITY DQNAN cexp chsize clog clog10 ctermid fesetround ftime ftruncate fchown fchmod getcwd geteuid getsid gettimeofday gmtime_r ioctl lstat mkdir mknod nice pipe _pipe poll readdir_r readdir64_r readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction siginterrupt stat64 strftime strptime symlink sync sysconf tcgetpgrp tcsetpgrp times uname waitpid strdup system usleep atexit on_exit chown link fcntl ttyname getpwent getgrent kill getppid getpgrp fork setitimer getitimer strchr strcmp index bcopy memcpy rindex truncate unsetenv isblank _NSGetEnviron strcoll strcoll_l newlocale utimensat sched_getaffinity sched_setaffinity]) # Reasons for testing: # netdb.h - not in mingw diff --git a/libguile/filesys.c b/libguile/filesys.c index cdd9ae73c..9c39307b6 100644 --- a/libguile/filesys.c +++ b/libguile/filesys.c @@ -104,7 +104,6 @@ /* Some more definitions for the native Windows port. */ #ifdef __MINGW32__ # define fsync(fd) _commit (fd) -# define fchmod(fd, mode) (-1) #endif /* __MINGW32__ */ @@ -1335,12 +1334,13 @@ SCM_DEFINE (scm_chmod, "chmod", 2, 0, 0, #define FUNC_NAME s_scm_chmod { int rv; - int fdes; object = SCM_COERCE_OUTPORT (object); +#if HAVE_FCHMOD if (scm_is_integer (object) || SCM_OPFPORTP (object)) { + int fdes; if (scm_is_integer (object)) fdes = scm_to_int (object); else @@ -1348,6 +1348,7 @@ SCM_DEFINE (scm_chmod, "chmod", 2, 0, 0, SCM_SYSCALL (rv = fchmod (fdes, scm_to_int (mode))); } else +#endif { STRING_SYSCALL (object, c_object, rv = chmod (c_object, scm_to_int (mode)));