At the same time, also add g_mkdtemp_full and g_dir_make_tmp
variants. The patch also unifies the unique-name-generating
code for all variants of mkstemp and mkdtemp and adds tests
for the new functions.
Based on patches by Paolo Bonzini,
http://bugzilla.gnome.org/show_bug.cgi?id=118563
The long format that displays the exact number of bytes with separators
(ie: "123,456,789 bytes") uses the ' format modifier, which is
unsupported on Windows. Disable that for now, until we come up with a
better solution.
David requested that I change the order of the flags.
Also, assign numerical values to the flags in the usual way. This
wasn't a bug yet, but only by chance.
This commit changes GLib size units policy. We now prefer SI units and
allow for use of proper IEC units where desired.
g_format_size_for_display() which incorrectly mixed IEC units with SI
suffixes is left unmodified, but has been deprecated.
g_format_size() has been introduced which uses SI units and suffixes.
g_format_size_full() has also been added which takes a flags argument to
allow for use of IEC units (with correct suffixes). It also allows for
a "long format" output which includes the total number of bytes. For
example: "238.5 MB (238,472,938 bytes)".
Rename the size constants from KILOBYTE to KIBIBYTE (etc.) since that's
what they really are.
This is a strictly internal change with no externally-visible effect in
terms of API or functionality.
For g_file_set_contents() we fsync() before renaming the file over the
original in order to ensure that we don't end up with an invalid file.
btrfs provides this guarantee for us without the fsync() so skip it
there.
This function exposes more variables than g_mkstemp() and therefor
allows more flexibility when creating temporary files.
The intended use is gio's code for g_file_replace() (see next patch)
This means we don't sync in the case where we created an (empty)
temp file and now replace it with the data.
This fixes (among other things) the performance of trashing files.
2009-03-16 Alexander Larsson <alexl@redhat.com>
Bug 575555 – Use fsync() when replacing files to avoid data loss on crash
* configure.in:
Look for fsync().
* glib/gfileutils.c:
(write_to_temp_file):
fsync temp file if destination file exists
2009-03-16 Alexander Larsson <alexl@redhat.com>
Bug 575555 – Use fsync() when replacing files to avoid data loss on crash
* glocalfileoutputstream.c:
(g_local_file_output_stream_close):
(_g_local_file_output_stream_replace):
fsync temp file before closing if replacing target file
svn path=/trunk/; revision=7991
2009-01-05 Tor Lillqvist <tml@iki.fi>
Bug 566348 - g_file_open_tmp uses the wrong g_mkstemp on win32
* glib/gfileutils.c: Move the binary compatibility versions of
g_file_test(), g_file_get_contents(), g_mkstemp() and
g_file_open_tmp() last in the file. Remove the restriction that
the XXXXXX is last in the template in the binary compatibility
version of g_mkstemp(). Thanks to Morten Welinder and Jody
Goldberg.
svn path=/trunk/; revision=7770
* glib/gfileutils.c: change g_format_size_for_display API doc to
explicitly say that the returned string has to be freed. Change
spelling of "newly allocated" to "newly-allocated" in g_file_read_link
API doc to be more consistent with what is done in that file.
svn path=/trunk/; revision=7572
2008-07-27 Tor Lillqvist <tml@novell.com>
* glib/glib.symbols
* glib/gconvert.c
* glib/gdir.c
* glib/gfileutils.c
* glib/giowin32.c
* glib/gspawn-win32.c
* glib/gutils.c
* glib/gwin32.c: Bypass the Windows "ABI compatibility" symbols on
_WIN64. As there hasn't been any widely deployed 64-bit Windows
builds of the really old GLib (pre-2.8.1) versions those refer to,
there is no need to have the "ABI compatibility" versions in the
DLL.
* glib/makegalias.pl: Handle #ifndef _WIN64: Just output it, too.
svn path=/trunk/; revision=7257
2008-06-11 Behdad Esfahbod <behdad@gnome.org>
Bug 503071 – Application direction changes to right to left even if
theres no translation
* glib/gi18n-lib.h:
* glib/glib.symbols:
* glib/gstrfuncs.h:
* glib/gstrfuncs.c:
Add new functions g_dgettext() and g_dngettext().
* glib/gutils.c (glib_gettext):
* glib/gfileutils.c (g_format_size_for_display):
* glib/goption.c (dgettext_swapped):
Use the new functions.
svn path=/trunk/; revision=7020
2008-01-18 Murray Cumming <murrayc@murrayc.com>
* glib/gfileutils.c:
* glib/gsequence.c:
* glib/gstring.c: Fixed some minor typos in the documentation.
svn path=/trunk/; revision=6332
2007-12-09 Hans Breuer <hans@breuer.org>
* **/makefile.msc glib/makefile.msc.in : removed -GD to compile
with msvc9 (vs2008) with less complains
* glibconfig.h.win32.in : #define G_HAVE_ISO_VARARGS 1 for
msv8 (vs2005) and above
* glib/gfileutils.c : s/stricmp/_stricmp/
* msvc_recommended_pragmas.h : work around Microsoft's premature
attempt to deprecate the C-Library
* tests/makefile.msc.in : added checksum-test
svn path=/trunk/; revision=6076
2007-07-09 Ryan Lortie <desrt@desrt.ca>
* glib/gfileutils.c (write_to_temp_file): save errno to prevent it
being clobbered by call to g_filename_display_name(). Bug #453796.
svn path=/trunk/; revision=5608
2006-08-29 Tor Lillqvist <tml@novell.com>
Remove support for Windows 9x/ME, as will be done also in Pango
and GTK+. GTK+ hasn't worked on Win9x since 2.6 or 2.8 anyway, so
it's pretty pointless to keep the Win9x code in here either. If
somebody is interested, the code can always be found in older GLib
versions, and in CVS.
* glib/gdir.c
* glib/gfileutils.c
* glib/gspawn-win32-helper.c
* glib/gspawn-win32.c
* glib/gstdio.c
* glib/gutils.c
* glib/gwin32.c
* glib/gwin32.h: Remove the G_WIN32_IS_NT_BASED() and
G_WIN32_HAVE_WIDECHAR_API() tests and their false (Win9x)
branches, and any variables or static functions used only by the
Win9x branches.
* glib/gwin32.c (g_win32_windows_version_init): Call g_error() if
run on Win9x.
2006-06-16 Matthias Clasen <mclasen@redhat.com>
* tests/file-test.c (test_mkstemp): Add tests.
* glib/gfileutils.c (g_mkstemp): Allow the XXXXXX to occur
inside the template, not just at the end.