- GKeyFile, a parser/editor for the .ini like files
- Functions to support the XDG basedir specification
- Wrappers for common POSIX pathname functions to handle filename
- encodings consistently
+ encodings consistently. On Windows, these use UTF-8.
* Miscellaneous new functions
- g_filename_display_name() converts filenames in displayable UTF-8 strings
- Reduce code size by removing literal strings from g_return_if_fail()
* Other changes
+ - On Windows, GLib functions that take file name arguments now require
+ those to be in UTF-8. Functions that return file names return UTF-8.
- Use higher precision for mathematical constants
- Don't convert to/from UTF-8 in g_filename_to_uri/g_filename_from_uri
- Support ll as printf format modifier for long long on all platforms
* on your system. On Unix, remove() removes also directories, as it
* calls unlink() for files and rmdir() for directories. On Windows,
* although remove() in the C library only works for files, this
- * function tries both remove() and rmdir(), and thus works like on
- * Unix. Note however, that on Windows, it is in general not possible
- * to remove a file that is open to some process, or mapped into
- * memory.
+ * function tries first remove() and then if that fails rmdir(), and
+ * thus works for both files and directories. Note however, that on
+ * Windows, it is in general not possible to remove a file that is
+ * open to some process, or mapped into memory.
*
* Returns: 0 if the file was successfully removed, -1 if an error
* occurred
}
/**
+ * g_rmdir:
+ * @filename: a pathname in the GLib file name encoding
+ *
+ * A wrapper for the POSIX rmdir() function. The rmdir() function
+ * deletes a directory from the filesystem.
+ *
+ * See your C library manual for more details about how rmdir() works
+ * on your system.
+ *
+ * Returns: 0 if the directory was successfully removed, -1 if an error
+ * occurred
+ *
+ * Since: 2.6
+ */
+int
+g_rmdir (const gchar *filename)
+{
+#ifdef G_OS_WIN32
+ if (G_WIN32_HAVE_WIDECHAR_API ())
+ {
+ wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
+ int retval = _wrmdir (wfilename);
+ int save_errno = errno;
+
+ g_free (wfilename);
+
+ errno = save_errno;
+ return retval;
+ }
+ else
+ {
+ gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
+ int retval = rmdir (cp_filename);
+ int save_errno = errno;
+
+ g_free (cp_filename);
+
+ errno = save_errno;
+ return retval;
+ }
+#else
+ return rmdir (filename);
+#endif
+}
+
+/**
* g_fopen:
* @filename: a pathname in the GLib file name encoding
* @mode: a string describing the mode in which the file should be