Update.
authorTor Lillqvist <tml@iki.fi>
Mon, 13 Dec 2004 23:05:16 +0000 (23:05 +0000)
committerTor Lillqvist <tml@src.gnome.org>
Mon, 13 Dec 2004 23:05:16 +0000 (23:05 +0000)
2004-12-13  Tor Lillqvist  <tml@iki.fi>

* NEWS: Update.

* glib/glib.symbols
* glib/gstdio.[ch]: Add g_rmdir().

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-12
ChangeLog.pre-2-6
ChangeLog.pre-2-8
NEWS
glib/glib.symbols
glib/gstdio.c
glib/gstdio.h

index 06a78e72881622408fd17e18ef99b83c22abdf39..6636d0f9c6835f54cb3b16fbddeeb63620034f5c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2004-12-13  Tor Lillqvist  <tml@iki.fi>
+
+       * NEWS: Update.
+
+       * glib/glib.symbols
+       * glib/gstdio.[ch]: Add g_rmdir().
+
 2004-12-13  Matthias Clasen  <mclasen@redhat.com>
 
        * NEWS: Updates
index 06a78e72881622408fd17e18ef99b83c22abdf39..6636d0f9c6835f54cb3b16fbddeeb63620034f5c 100644 (file)
@@ -1,3 +1,10 @@
+2004-12-13  Tor Lillqvist  <tml@iki.fi>
+
+       * NEWS: Update.
+
+       * glib/glib.symbols
+       * glib/gstdio.[ch]: Add g_rmdir().
+
 2004-12-13  Matthias Clasen  <mclasen@redhat.com>
 
        * NEWS: Updates
index 06a78e72881622408fd17e18ef99b83c22abdf39..6636d0f9c6835f54cb3b16fbddeeb63620034f5c 100644 (file)
@@ -1,3 +1,10 @@
+2004-12-13  Tor Lillqvist  <tml@iki.fi>
+
+       * NEWS: Update.
+
+       * glib/glib.symbols
+       * glib/gstdio.[ch]: Add g_rmdir().
+
 2004-12-13  Matthias Clasen  <mclasen@redhat.com>
 
        * NEWS: Updates
index 06a78e72881622408fd17e18ef99b83c22abdf39..6636d0f9c6835f54cb3b16fbddeeb63620034f5c 100644 (file)
@@ -1,3 +1,10 @@
+2004-12-13  Tor Lillqvist  <tml@iki.fi>
+
+       * NEWS: Update.
+
+       * glib/glib.symbols
+       * glib/gstdio.[ch]: Add g_rmdir().
+
 2004-12-13  Matthias Clasen  <mclasen@redhat.com>
 
        * NEWS: Updates
index 06a78e72881622408fd17e18ef99b83c22abdf39..6636d0f9c6835f54cb3b16fbddeeb63620034f5c 100644 (file)
@@ -1,3 +1,10 @@
+2004-12-13  Tor Lillqvist  <tml@iki.fi>
+
+       * NEWS: Update.
+
+       * glib/glib.symbols
+       * glib/gstdio.[ch]: Add g_rmdir().
+
 2004-12-13  Matthias Clasen  <mclasen@redhat.com>
 
        * NEWS: Updates
diff --git a/NEWS b/NEWS
index 9630ee3394c63c67db6cf7976b31d221839d0624..5954409e2a8e202c5c8fb184fc6114f1bee20901 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -6,7 +6,7 @@ Overview of Changes from GLib 2.4.x to GLib 2.6.0
   - 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
@@ -28,6 +28,8 @@ Overview of Changes from GLib 2.4.x to GLib 2.6.0
   - 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
index cbb2af2dd2e47792f554350d3fbe3c161ba3bf4a..20b7ad6cf08a0a43113f57e0f71406da8ba3da4d 100644 (file)
@@ -621,6 +621,7 @@ g_relation_select
 g_remove
 g_rename
 g_return_if_fail_warning
+g_rmdir
 g_scanner_cur_line
 g_scanner_cur_position
 g_scanner_cur_token
index 2ff8423e280b459123b73ab6e3a6a14f0a4cf55e..31dc350c0554d516ff71ea56584db4ef1cfda7b8 100644 (file)
@@ -338,10 +338,10 @@ g_unlink (const gchar *filename)
  * 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
@@ -389,6 +389,52 @@ g_remove (const gchar *filename)
 #endif
 }
 
+/**
+ * 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
index 93dea2975f442a4a1fd611de1fb9fcde164b8f2e..82874b4568be0e2c685fe10e699194856886a98d 100644 (file)
@@ -55,6 +55,8 @@ int g_unlink    (const gchar *filename);
 
 int g_remove    (const gchar *filename);
 
+int g_rmdir (const gchar *filename);
+
 FILE *g_fopen   (const gchar *filename,
                  const gchar *mode);