Re: g_file_write()
- From: mortenw gnome org (Morten Welinder)
- To: gtk-devel-list gnome org
- Subject: Re: g_file_write()
- Date: Mon, 7 Mar 2005 17:30:04 -0500 (EST)
Don't expect rename to delete the target file on Win32. (There goes
the atomicity.) Checking with g_file_test and unlinking is asking
for a race condition and lost target file in some circumstances.
On unix this type of write will interact in interesting ways with
hardlinks, permissions, file ownership, and non-writable directories.
fdopen is a pita portability-wise, see below.
I'd say go with the simple version you started with and leave the
trouble to the caller. There are reasons that Emacs has a zillion
settings for what to do.
Morten
-----------------------------------------------------------------------------
AC_CHECK_DECL(fdopen, fdopen_works=yes, fdopen_works=no)
if test $fdopen_works = no ; then
unset ac_cv_have_decl_fdopen
CFLAGS="$CFLAGS -D_POSIX_SOURCE"
AC_MSG_NOTICE([adding -D_POSIX_SOURCE to CFLAGS])
AC_CHECK_DECL(fdopen, fdopen_works=yes, fdopen_works=no)
if test $fdopen_works = no ; then
AC_MSG_ERROR([fdopen is not available])
fi
fi
# Unfortunately, -D_POSIX_SOURCE turns off struct timeval on Solaris
AC_MSG_CHECKING([whether struct timeval is available])
AC_TRY_COMPILE([#include <sys/time.h>], [struct timeval tv;], struct_timeval_works=yes, struct_timeval_works=no)
AC_MSG_RESULT($struct_timeval_works)
if test $struct_timeval_works = no ; then
CFLAGS="$CFLAGS -D__EXTENSIONS__"
AC_MSG_CHECKING([whether struct timeval is available with -D__EXTENSIONS__])
AC_TRY_COMPILE([#include <sys/time.h>], [struct timeval tv;], struct_timeval_works=yes, struct_timeval_works=no)
AC_MSG_RESULT($struct_timeval_works)
if test $struct_timeval_works = no ; then
AC_MSG_ERROR([struct timeval is not available])
fi
fi
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]