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 06a78e7..6636d0f 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 06a78e7..6636d0f 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 06a78e7..6636d0f 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 06a78e7..6636d0f 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 06a78e7..6636d0f 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 9630ee3..5954409 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 cbb2af2..20b7ad6 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 2ff8423..31dc350 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
@@ -390,6 +390,52 @@ g_remove (const gchar *filename)
 }
 
 /**
+ * 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 
index 93dea29..82874b4 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);