X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=glib%2Fgfileutils.c;h=0db07c541e973d470c9ef03f9c1771fe5b2e6aca;hb=13e15733f38a40c6ef6a1baede91cce81c86ebaa;hp=99b4bc11e28865830e8e36adec57d5a4cc60002a;hpb=adf892e96af403b8950dff1a370e4270ffaebc62;p=platform%2Fupstream%2Fglib.git
diff --git a/glib/gfileutils.c b/glib/gfileutils.c
index 99b4bc1..0db07c5 100644
--- a/glib/gfileutils.c
+++ b/glib/gfileutils.c
@@ -72,8 +72,8 @@
*
* The pathname argument should be in the GLib file name encoding.
* On POSIX this is the actual on-disk encoding which might correspond
- * to the locale settings of the process (or the
- * G_FILENAME_ENCODING environment variable), or not.
+ * to the locale settings of the process (or the `G_FILENAME_ENCODING`
+ * environment variable), or not.
*
* On Windows the GLib file name encoding is UTF-8. Note that the
* Microsoft C library does not use UTF-8, but has separate APIs for
@@ -270,11 +270,11 @@ g_mkdir_with_parents (const gchar *pathname,
* @test: bitfield of #GFileTest flags
*
* Returns %TRUE if any of the tests in the bitfield @test are
- * %TRUE. For example, (G_FILE_TEST_EXISTS |
- * G_FILE_TEST_IS_DIR) will return %TRUE if the file exists;
- * the check whether it's a directory doesn't matter since the existence
- * test is %TRUE. With the current set of available tests, there's no point
- * passing in more than one test at a time.
+ * %TRUE. For example, `(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)`
+ * will return %TRUE if the file exists; the check whether it's a
+ * directory doesn't matter since the existence test is %TRUE. With
+ * the current set of available tests, there's no point passing in
+ * more than one test at a time.
*
* Apart from %G_FILE_TEST_IS_SYMLINK all tests follow symbolic links,
* so for a symbolic link to a regular file g_file_test() will return
@@ -290,11 +290,11 @@ g_mkdir_with_parents (const gchar *pathname,
* to know whether it is safe to write to a file without being
* tricked into writing into a different location. It doesn't work!
* |[
- * /* DON'T DO THIS */
+ * // DON'T DO THIS
* if (!g_file_test (filename, G_FILE_TEST_IS_SYMLINK))
* {
* fd = g_open (filename, O_WRONLY);
- * /* write to fd */
+ * // write to fd
* }
* ]|
*
@@ -309,9 +309,9 @@ g_mkdir_with_parents (const gchar *pathname,
* %G_FILE_TEST_IS_SYMLINK will always return %FALSE. Testing for
* %G_FILE_TEST_IS_EXECUTABLE will just check that the file exists and
* its name indicates that it is executable, checking for well-known
- * extensions and those listed in the PATHEXT environment variable.
+ * extensions and those listed in the `PATHEXT` environment variable.
*
- * Return value: whether a test was %TRUE
+ * Returns: whether a test was %TRUE
**/
gboolean
g_file_test (const gchar *filename,
@@ -465,15 +465,15 @@ G_DEFINE_QUARK (g-file-error-quark, g_file_error)
* @err_no: an "errno" value
*
* Gets a #GFileError constant based on the passed-in @err_no.
- * For example, if you pass in EEXIST this function returns
- * #G_FILE_ERROR_EXIST. Unlike errno values, you can portably
+ * For example, if you pass in `EEXIST` this function returns
+ * #G_FILE_ERROR_EXIST. Unlike `errno` values, you can portably
* assume that all #GFileError values will exist.
*
* Normally a #GFileError value goes into a #GError returned
* from a function that manipulates files. So you would use
* g_file_error_from_errno() when constructing a #GError.
*
- * Return value: #GFileError corresponding to the given @errno
+ * Returns: #GFileError corresponding to the given @errno
**/
GFileError
g_file_error_from_errno (gint err_no)
@@ -607,16 +607,17 @@ g_file_error_from_errno (gint err_no)
static char *
format_error_message (const gchar *filename,
- const gchar *format_string) G_GNUC_FORMAT(2);
+ const gchar *format_string,
+ int saved_errno) G_GNUC_FORMAT(2);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wformat-nonliteral"
static char *
format_error_message (const gchar *filename,
- const gchar *format_string)
+ const gchar *format_string,
+ int saved_errno)
{
- gint saved_errno = errno;
gchar *display_name;
gchar *msg;
@@ -637,10 +638,10 @@ format_error_message (const gchar *filename,
static void
set_file_error (GError **error,
const gchar *filename,
- const gchar *format_string)
+ const gchar *format_string,
+ int saved_errno)
{
- int saved_errno = errno;
- char *msg = format_error_message (filename, format_string);
+ char *msg = format_error_message (filename, format_string, saved_errno);
g_set_error_literal (error, G_FILE_ERROR, g_file_error_from_errno (saved_errno),
msg);
@@ -858,9 +859,11 @@ get_contents_posix (const gchar *filename,
if (fd < 0)
{
+ int saved_errno = errno;
set_file_error (error,
filename,
- _("Failed to open file '%s': %s"));
+ _("Failed to open file '%s': %s"),
+ saved_errno);
return FALSE;
}
@@ -868,9 +871,11 @@ get_contents_posix (const gchar *filename,
/* I don't think this will ever fail, aside from ENOMEM, but. */
if (fstat (fd, &stat_buf) < 0)
{
+ int saved_errno = errno;
set_file_error (error,
filename,
- _("Failed to get attributes of file '%s': fstat() failed: %s"));
+ _("Failed to get attributes of file '%s': fstat() failed: %s"),
+ saved_errno);
close (fd);
return FALSE;
@@ -896,9 +901,11 @@ get_contents_posix (const gchar *filename,
if (f == NULL)
{
+ int saved_errno = errno;
set_file_error (error,
filename,
- _("Failed to open file '%s': fdopen() failed: %s"));
+ _("Failed to open file '%s': fdopen() failed: %s"),
+ saved_errno);
return FALSE;
}
@@ -924,9 +931,11 @@ get_contents_win32 (const gchar *filename,
if (f == NULL)
{
+ int saved_errno = errno;
set_file_error (error,
filename,
- _("Failed to open file '%s': %s"));
+ _("Failed to open file '%s': %s"),
+ saved_errno);
return FALSE;
}
@@ -957,7 +966,7 @@ get_contents_win32 (const gchar *filename,
* codes are those in the #GFileError enumeration. In the error case,
* @contents is set to %NULL and @length is set to zero.
*
- * Return value: %TRUE on success, %FALSE if an error occurred
+ * Returns: %TRUE on success, %FALSE if an error occurred
**/
gboolean
g_file_get_contents (const gchar *filename,
@@ -1027,7 +1036,10 @@ write_to_temp_file (const gchar *contents,
if (fd == -1)
{
- set_file_error (err, tmp_name, _("Failed to create file '%s': %s"));
+ int saved_errno = errno;
+ set_file_error (err,
+ tmp_name, _("Failed to create file '%s': %s"),
+ saved_errno);
goto out;
}
@@ -1048,10 +1060,13 @@ write_to_temp_file (const gchar *contents,
if (s < 0)
{
- if (errno == EINTR)
+ int saved_errno = errno;
+ if (saved_errno == EINTR)
continue;
- set_file_error (err, tmp_name, _("Failed to write file '%s': write() failed: %s"));
+ set_file_error (err,
+ tmp_name, _("Failed to write file '%s': write() failed: %s"),
+ saved_errno);
close (fd);
g_unlink (tmp_name);
@@ -1091,7 +1106,10 @@ write_to_temp_file (const gchar *contents,
*/
if (g_lstat (dest_file, &statbuf) == 0 && statbuf.st_size > 0 && fsync (fd) != 0)
{
- set_file_error (err, tmp_name, _("Failed to write file '%s': fsync() failed: %s"));
+ int saved_errno = errno;
+ set_file_error (err,
+ tmp_name, _("Failed to write file '%s': fsync() failed: %s"),
+ saved_errno);
close (fd);
g_unlink (tmp_name);
@@ -1154,7 +1172,7 @@ write_to_temp_file (const gchar *contents,
* Note that the name for the temporary file is constructed by appending up
* to 7 characters to @filename.
*
- * Return value: %TRUE on success, %FALSE if an error occurred
+ * Returns: %TRUE on success, %FALSE if an error occurred
*
* Since: 2.8
*/
@@ -1211,9 +1229,11 @@ g_file_set_contents (const gchar *filename,
if (g_unlink (filename) == -1)
{
+ int saved_errno = errno;
set_file_error (error,
filename,
- _("Existing file '%s' could not be removed: g_unlink() failed: %s"));
+ _("Existing file '%s' could not be removed: g_unlink() failed: %s"),
+ saved_errno);
g_unlink (tmp_filename);
retval = FALSE;
goto out;
@@ -1345,7 +1365,7 @@ wrap_g_open (const gchar *filename,
* in the GLib file name encoding. Most importantly, on Windows it
* should be in UTF-8.
*
- * Return value: A pointer to @tmpl, which has been modified
+ * Returns: A pointer to @tmpl, which has been modified
* to hold the directory name. In case of errors, %NULL is
* returned, and %errno will be set.
*
@@ -1377,7 +1397,7 @@ g_mkdtemp_full (gchar *tmpl,
* The string should be in the GLib file name encoding. Most importantly,
* on Windows it should be in UTF-8.
*
- * Return value: A pointer to @tmpl, which has been modified
+ * Returns: A pointer to @tmpl, which has been modified
* to hold the directory name. In case of errors, %NULL is
* returned and %errno will be set.
*
@@ -1408,7 +1428,7 @@ g_mkdtemp (gchar *tmpl)
* The string should be in the GLib file name encoding. Most importantly,
* on Windows it should be in UTF-8.
*
- * Return value: A file handle (as from open()) to the file
+ * Returns: A file handle (as from open()) to the file
* opened for reading and writing. The file handle should be
* closed with close(). In case of errors, -1 is returned
* and %errno will be set.
@@ -1440,7 +1460,7 @@ g_mkstemp_full (gchar *tmpl,
* didn't exist. The string should be in the GLib file name encoding.
* Most importantly, on Windows it should be in UTF-8.
*
- * Return value: A file handle (as from open()) to the file
+ * Returns: A file handle (as from open()) to the file
* opened for reading and writing. The file is opened in binary
* mode on platforms where there is a difference. The file handle
* should be closed with close(). In case of errors, -1 is
@@ -1514,9 +1534,11 @@ g_get_tmp_name (const gchar *tmpl,
retval = get_tmp_file (fulltemplate, f, flags, mode);
if (retval == -1)
{
+ int saved_errno = errno;
set_file_error (error,
fulltemplate,
- _("Failed to create file '%s': %s"));
+ _("Failed to create file '%s': %s"),
+ saved_errno);
g_free (fulltemplate);
return -1;
}
@@ -1551,7 +1573,7 @@ g_get_tmp_name (const gchar *tmpl,
* when not needed any longer. The returned name is in the GLib file
* name encoding.
*
- * Return value: A file handle (as from open()) to the file opened for
+ * Returns: A file handle (as from open()) to the file opened for
* reading and writing. The file is opened in binary mode on platforms
* where there is a difference. The file handle should be closed with
* close(). In case of errors, -1 is returned and @error will be set.
@@ -1598,7 +1620,7 @@ g_file_open_tmp (const gchar *tmpl,
* Note that in contrast to g_mkdtemp() (and mkdtemp()) @tmpl is not
* modified, and might thus be a read-only literal string.
*
- * Return value: (type filename): The actual name used. This string
+ * Returns: (type filename): The actual name used. This string
* should be freed with g_free() when not needed any longer and is
* is in the GLib file name encoding. In case of errors, %NULL is
* returned and @error will be set.
@@ -1729,7 +1751,7 @@ g_build_path_va (const gchar *separator,
* as a string array, instead of varargs. This function is mainly
* meant for language bindings.
*
- * Return value: a newly-allocated string that must be freed with g_free().
+ * Returns: a newly-allocated string that must be freed with g_free().
*
* Since: 2.8
*/
@@ -1766,8 +1788,7 @@ g_build_pathv (const gchar *separator,
* the same as the number of trailing copies of the separator on
* the last non-empty element. (Determination of the number of
* trailing copies is done without stripping leading copies, so
- * if the separator is ABA, ABABA
- * has 1 trailing copy.)
+ * if the separator is `ABA`, then `ABABA` has 1 trailing copy.)
*
* However, if there is only a single non-empty element, and there
* are no characters in that element not part of the leading or
@@ -1778,7 +1799,7 @@ g_build_pathv (const gchar *separator,
* copies of the separator, elements consisting only of copies
* of the separator are ignored.
*
- * Return value: a newly-allocated string that must be freed with g_free().
+ * Returns: a newly-allocated string that must be freed with g_free().
**/
gchar *
g_build_path (const gchar *separator,
@@ -1921,7 +1942,7 @@ g_build_pathname_va (const gchar *first_element,
* as a string array, instead of varargs. This function is mainly
* meant for language bindings.
*
- * Return value: a newly-allocated string that must be freed with g_free().
+ * Returns: a newly-allocated string that must be freed with g_free().
*
* Since: 2.8
*/
@@ -1947,21 +1968,20 @@ g_build_filenamev (gchar **args)
* Creates a filename from a series of elements using the correct
* separator for filenames.
*
- * On Unix, this function behaves identically to g_build_path
- * (G_DIR_SEPARATOR_S, first_element, ....).
+ * On Unix, this function behaves identically to `g_build_path
+ * (G_DIR_SEPARATOR_S, first_element, ....)`.
*
* On Windows, it takes into account that either the backslash
- * (\ or slash (/) can be used
- * as separator in filenames, but otherwise behaves as on Unix. When
- * file pathname separators need to be inserted, the one that last
- * previously occurred in the parameters (reading from left to right)
- * is used.
+ * (`\` or slash (`/`) can be used as separator in filenames, but
+ * otherwise behaves as on UNIX. When file pathname separators need
+ * to be inserted, the one that last previously occurred in the
+ * parameters (reading from left to right) is used.
*
* No attempt is made to force the resulting filename to be an absolute
* path. If the first element is a relative path, the result will
* be a relative path.
*
- * Return value: a newly-allocated string that must be freed with g_free().
+ * Returns: a newly-allocated string that must be freed with g_free().
**/
gchar *
g_build_filename (const gchar *first_element,
@@ -2012,10 +2032,12 @@ g_file_read_link (const gchar *filename,
read_size = readlink (filename, buffer, size);
if (read_size < 0)
{
+ int saved_errno = errno;
set_file_error (error,
filename,
- _("Failed to read the symbolic link '%s': %s"));
-
+ _("Failed to read the symbolic link '%s': %s"),
+ saved_errno);
+ g_free (buffer);
return NULL;
}
@@ -2165,7 +2187,7 @@ g_path_skip_root (const gchar *file_name)
* components. It returns a pointer into the given file name
* string.
*
- * Return value: the name of the file without any leading
+ * Returns: the name of the file without any leading
* directory components
*
* Deprecated:2.2: Use g_path_get_basename() instead, but notice
@@ -2213,7 +2235,7 @@ g_basename (const gchar *file_name)
* separators (and on Windows, possibly a drive letter), a single
* separator is returned. If @file_name is empty, it gets ".".
*
- * Return value: a newly allocated string containing the last
+ * Returns: a newly allocated string containing the last
* component of the filename
*/
gchar *