Added. Added. Added. Added.
authorAlexander Larsson <alexl@redhat.com>
Wed, 28 Nov 2007 12:39:07 +0000 (12:39 +0000)
committerAlexander Larsson <alexl@src.gnome.org>
Wed, 28 Nov 2007 12:39:07 +0000 (12:39 +0000)
2007-11-28  Alexander Larsson  <alexl@redhat.com>

        * Makefile.am:
        * abicheck.sh: Added.
        * makegioalias.pl: Added.
        * pltcheck.sh: Added.
        * gio.symbols: Added.
* *.c:
        * inotify/*.c
Initial work on adding symbol handling.

* gvfs.h:
Correct ifdef guard name

        * fam/Makefile.am:
        * inotify/Makefile.am:
        * xdgmime/Makefile.am:
Include toplevel Makefile.decl

svn path=/trunk/; revision=5972

71 files changed:
gio/ChangeLog
gio/Makefile.am
gio/abicheck.sh [new file with mode: 0755]
gio/fam/Makefile.am
gio/gappinfo.c
gio/gasynchelper.c
gio/gasyncresult.c
gio/gbufferedinputstream.c
gio/gbufferedoutputstream.c
gio/gcancellable.c
gio/gcontenttype.c
gio/gdatainputstream.c
gio/gdataoutputstream.c
gio/gdataoutputstream.h
gio/gdesktopappinfo.c
gio/gdirectorymonitor.c
gio/gdrive.c
gio/gdummyfile.c
gio/gfile.c
gio/gfileattribute.c
gio/gfileenumerator.c
gio/gfileicon.c
gio/gfileinfo.c
gio/gfileinputstream.c
gio/gfilemonitor.c
gio/gfilenamecompleter.c
gio/gfileoutputstream.c
gio/gfilterinputstream.c
gio/gfilteroutputstream.c
gio/gicon.c
gio/ginputstream.c
gio/gio.symbols [new file with mode: 0644]
gio/gioerror.c
gio/giomodule.c
gio/gioscheduler.c
gio/gloadableicon.c
gio/glocaldirectorymonitor.c
gio/glocalfile.c
gio/glocalfileenumerator.c
gio/glocalfileinfo.c
gio/glocalfileinputstream.c
gio/glocalfilemonitor.c
gio/glocalfileoutputstream.c
gio/glocalvfs.c
gio/gmemoryinputstream.c
gio/gmemoryoutputstream.c
gio/gmountoperation.c
gio/gnativevolumemonitor.c
gio/goutputstream.c
gio/gpollfilemonitor.c
gio/gseekable.c
gio/gsimpleasyncresult.c
gio/gthemedicon.c
gio/gunionvolumemonitor.c
gio/gunixdrive.c
gio/gunixinputstream.c
gio/gunixmounts.c
gio/gunixoutputstream.c
gio/gunixvolume.c
gio/gunixvolumemonitor.c
gio/gvfs.c
gio/gvfs.h
gio/gvolume.c
gio/gvolumemonitor.c
gio/gwin32appinfo.c
gio/inotify/Makefile.am
gio/inotify/ginotifydirectorymonitor.c
gio/inotify/ginotifyfilemonitor.c
gio/makegioalias.pl [new file with mode: 0755]
gio/pltcheck.sh [new file with mode: 0755]
gio/xdgmime/Makefile.am

index 211d1b0..05557fd 100644 (file)
@@ -1,3 +1,22 @@
+2007-11-28  Alexander Larsson  <alexl@redhat.com>
+
+        * Makefile.am:
+        * abicheck.sh: Added.
+        * makegioalias.pl: Added.
+        * pltcheck.sh: Added.
+        * gio.symbols: Added.
+       * *.c:
+        * inotify/*.c
+       Initial work on adding symbol handling.
+
+       * gvfs.h:
+       Correct ifdef guard name
+
+        * fam/Makefile.am:
+        * inotify/Makefile.am:
+        * xdgmime/Makefile.am:
+       Include toplevel Makefile.decl
+
 2007-11-27  Matthias Clasen  <mclasen@redhat.com>
 
        * gcontenttype.c: Move doc comments to the unix section.
index f965501..b589517 100644 (file)
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.decl
+
 NULL =
 
 SUBDIRS= 
@@ -6,6 +8,21 @@ if OS_UNIX
 SUBDIRS += xdgmime
 endif
 
+gio.def: gio.symbols
+       (echo -e EXPORTS; $(CPP) -P -DINCLUDE_VARIABLES -DINCLUDE_INTERNAL_SYMBOLS -DG_OS_WIN32 -DALL_FILES - <$(srcdir)/gobject.symbols | sed -e '/^$$/d' -e 's/^/     /' -e 's/G_GNUC_[^ ]*//g' | sort) > gobject.def
+
+gioalias.h: gio.symbols
+       $(PERL) $(srcdir)/makegioalias.pl < $(srcdir)/gio.symbols > gioalias.h
+
+gioaliasdef.c: gio.symbols
+       $(PERL) $(srcdir)/makegioalias.pl -def < $(srcdir)/gio.symbols > gioaliasdef.c
+
+if OS_LINUX
+if HAVE_GNUC_VISIBILITY
+TESTS = abicheck.sh pltcheck.sh
+endif
+endif
+
 AM_CPPFLAGS = \
        -DG_LOG_DOMAIN=\"GLib-GIO\"                     \
        -I$(top_builddir)                               \
@@ -19,8 +36,9 @@ AM_CPPFLAGS = \
 lib_LTLIBRARIES = libgio-2.0.la
 
 marshal_sources = \
-        gio-marshal.h \
-        gio-marshal.c \
+        gio-marshal.h  \
+        gio-marshal.c  \
+       makegioalias.pl \
        $(NULL)
 
 if CROSS_COMPILING
@@ -215,8 +233,13 @@ gioinclude_HEADERS = \
        gvolumemonitor.h        \
        $(NULL)
 
+
+# these sources (also mentioned above) are generated.
+BUILT_SOURCES = gio-marshal.h gio-marshal.c gioalias.h gioaliasdef.c
+
 EXTRA_DIST =                   \
        gio-marshal.list        \
+       gio.symbols             \
        $(NULL)
 
 CLEANFILES =                   \
diff --git a/gio/abicheck.sh b/gio/abicheck.sh
new file mode 100755 (executable)
index 0000000..692ae2a
--- /dev/null
@@ -0,0 +1,13 @@
+#! /bin/sh
+
+egrep '^#([^i]|if).*[^\]$' "${top_builddir:-..}/glibconfig.h" > glibconfig.cpp
+
+INCLUDES="-include ${top_builddir:-..}/config.h"
+INCLUDES="$INCLUDES -include glibconfig.cpp"
+
+cpp -DINCLUDE_VARIABLES -P $INCLUDES -DALL_FILES ${srcdir:-.}/gobject.symbols | sed -e '/^$/d' -e 's/ G_GNUC.*$//' -e 's/ PRIVATE$//' | sort > expected-abi
+rm glibconfig.cpp
+
+nm -D -g --defined-only .libs/libgio-2.0.so | cut -d ' ' -f 3 | sort > actual-abi
+
+diff -u expected-abi actual-abi && rm expected-abi actual-abi
index 053c741..3d9b4d5 100644 (file)
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.decl
+
 NULL =
 
 module_flags = -export_dynamic -avoid-version -module -no-undefined -export-symbols-regex '^g_io_module_(load|unload)'
index 7dfd162..98a5fe1 100644 (file)
@@ -25,6 +25,8 @@
 #include "glibintl.h"
 #include <gioerror.h>
 
+#include "gioalias.h"
+
 /**
  * SECTION:gappinfo
  * @short_description: Application information and launch contexts
@@ -33,8 +35,6 @@
  * #GAppInfo and #GAppLaunchContext are used for describing and launching 
  * installed system applications. 
  *
- * @Note: These may/will be moved to Gtk+ in the future.
- *
  **/
 
 static void g_app_info_base_init (gpointer g_class);
@@ -594,3 +594,6 @@ g_app_launch_context_launch_failed (GAppLaunchContext *context,
   if (class->launch_failed != NULL)
     class->launch_failed (context, startup_notify_id);
 }
+
+#define __G_APP_INFO_C__
+#include "gioaliasdef.c"
index 620885d..aefd987 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "gasynchelper.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gasynchelper
  * @short_description: Asynchronous Helper Functions
index 9d698a5..5bba113 100644 (file)
@@ -24,6 +24,8 @@
 #include "gasyncresult.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gasyncresult
  * @short_description: Asynchronous Function Results
@@ -167,3 +169,6 @@ g_async_result_get_source_object (GAsyncResult *res)
 
   return (* iface->get_source_object) (res);
 }
+
+#define __G_ASYNC_RESULT_C__
+#include "gioaliasdef.c"
index bbc9a4c..49295ee 100644 (file)
@@ -28,6 +28,8 @@
 #include <string.h>
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gbufferedinputstream
  * @short_description: Buffered Input Stream
@@ -1359,4 +1361,8 @@ g_buffered_input_stream_skip_finish (GInputStream   *stream,
   return data->bytes_skipped;
 }
 
+
+#define __G_BUFFERED_INPUT_STREAM_C__
+#include "gioaliasdef.c"
+
 /* vim: ts=2 sw=2 et */
index 309de9e..2fc57aa 100644 (file)
@@ -27,6 +27,8 @@
 #include "string.h"
 #include "glibintl.h"
 
+#include <gioalias.h>
+
 /**
  * SECTION:gbufferedoutputstream
  * @short_description: Buffered Output Stream
@@ -758,4 +760,7 @@ g_buffered_output_stream_close_finish (GOutputStream        *stream,
   return TRUE;
 }
 
+#define __G_BUFFERED_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
+
 /* vim: ts=2 sw=2 et */
index a31420b..e14e981 100644 (file)
@@ -27,6 +27,7 @@
 #include "gcancellable.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
 
 /**
  * SECTION:gcancellable
@@ -334,4 +335,5 @@ g_cancellable_cancel (GCancellable *cancellable)
     }
 }
 
-
+#define __G_CANCELLABLE_C__
+#include "gioaliasdef.c"
index 84037ce..0838827 100644 (file)
@@ -28,6 +28,8 @@
 #include "gcontenttypeprivate.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gcontenttype
  * @short_description: platform specific content typing
@@ -868,3 +870,6 @@ g_content_types_get_registered (void)
 }
 
 #endif /* Unix version */
+
+#define __G_CONTENT_TYPE_C__
+#include "gioaliasdef.c"
index 095428a..77dbd5c 100644 (file)
@@ -25,6 +25,8 @@
 #include "gdatainputstream.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gdatainputstream
  * @short_description: Data Input Stream
@@ -854,3 +856,6 @@ g_data_input_stream_read_until (GDataInputStream        *stream,
   
   return data_until;
 }
+
+#define __G_DATA_INPUT_STREAM_C__
+#include "gioaliasdef.c"
index 5f6bd82..fc7c571 100644 (file)
@@ -25,6 +25,8 @@
 #include "gdataoutputstream.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gdataoutputstream
  * @short_description: Data Output Stream
@@ -473,3 +475,6 @@ g_data_output_stream_put_string (GDataOutputStream     *stream,
                                    &bytes_written,
                                    cancellable, error);
 }  
+
+#define __G_DATA_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
index 9545404..643cbde 100644 (file)
@@ -74,8 +74,6 @@ GDataOutputStream*  g_data_output_stream_new        (GOutputStream *base_stream)
 void                 g_data_output_stream_set_byte_order (GDataOutputStream     *stream,
                                                          GDataStreamByteOrder   order);
 GDataStreamByteOrder g_data_output_stream_get_byte_order (GDataOutputStream     *stream);
-void                 g_data_output_stream_set_expand_buffer (GDataOutputStream     *stream,
-                                                            gboolean               expand_buffer);
 
 gboolean             g_data_output_stream_put_byte       (GDataOutputStream     *stream,
                                                          guchar                 data,
index 80c0a10..a99ea1a 100644 (file)
@@ -36,6 +36,8 @@
 #include <glib/gstdio.h>
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 #define DEFAULT_APPLICATIONS_GROUP  "Default Applications" 
 #define MIME_CACHE_GROUP            "MIME Cache"
 
@@ -2190,3 +2192,6 @@ get_all_desktop_entries_for_mime_type (const char *base_mime_type)
   
   return desktop_entries;
 }
+
+#define __G_DESKTOP_APP_INFO_C__
+#include "gioaliasdef.c"
index 489a7ad..e1d71d1 100644 (file)
@@ -29,6 +29,8 @@
 #include "gvfs.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gdirectorymonitor
  * @short_description: Directory Monitor
@@ -489,3 +491,6 @@ g_directory_monitor_emit_event (GDirectoryMonitor *monitor,
       update_rate_limiter_timeout (monitor, limiter->send_virtual_changes_done_at);
     }
 }
+
+#define __G_DIRECTORY_MONITOR_C__
+#include "gioaliasdef.c"
index 6303f33..e902186 100644 (file)
@@ -25,6 +25,8 @@
 #include "gsimpleasyncresult.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gdrive
  * @short_description: Virtual File System drive management
@@ -383,3 +385,6 @@ g_drive_eject_finish (GDrive               *drive,
   
   return (* iface->mount_finish) (drive, result, error);
 }
+
+#define __G_DRIVE_C__
+#include "gioaliasdef.c"
index 40ac3b1..d2dd249 100644 (file)
@@ -32,6 +32,8 @@
 
 #include "gdummyfile.h"
 
+#include "gioalias.h"
+
 static void g_dummy_file_file_iface_init (GFileIface       *iface);
 
 typedef struct {
index a28671c..773d2f2 100644 (file)
@@ -34,6 +34,8 @@
 #include "gpollfilemonitor.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gfile
  * @short_description: File and Directory Handling
@@ -4605,3 +4607,6 @@ g_file_replace_contents_finish (GFile                *file,
   
   return TRUE;
 }
+
+#define __G_FILE_C__
+#include "gioaliasdef.c"
index 394404e..b3b2dfa 100644 (file)
@@ -28,6 +28,8 @@
 #include <glib-object.h>
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gfileattribute
  * @short_description: Key-Value Paired File Attributes
@@ -906,3 +908,6 @@ g_file_attribute_info_list_add    (GFileAttributeInfoList *list,
 
   list_update_public (priv);
 }
+
+#define __G_FILE_ATTRIBUTE_C__
+#include "gioaliasdef.c"
index 4416151..1f7e9dd 100644 (file)
@@ -27,6 +27,8 @@
 #include "gsimpleasyncresult.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gfileenumerator
  * @short_description: Enumerated Files Routines
@@ -628,3 +630,6 @@ g_file_enumerator_real_close_finish      (GFileEnumerator      *enumerator,
            g_file_enumerator_real_close_async);
   return TRUE;
 }
+
+#define __G_FILE_ENUMERATOR_C__
+#include "gioaliasdef.c"
index 5a66879..612184d 100644 (file)
@@ -25,6 +25,8 @@
 #include "gfileicon.h"
 #include "gsimpleasyncresult.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gfileicon
  * @short_description: Icons for given files
@@ -269,3 +271,6 @@ g_file_icon_loadable_icon_iface_init (GLoadableIconIface *iface)
   iface->load_async = g_file_icon_load_async;
   iface->load_finish = g_file_icon_load_finish;
 }
+
+#define __G_FILE_ICON_C__
+#include "gioaliasdef.c"
index 3df6325..3585a3e 100644 (file)
@@ -42,6 +42,8 @@
 #include "gfileinfo.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /* We use this nasty thing, because NULL is a valid attribute matcher (matches nothing) */
 #define NO_ATTRIBUTE_MASK ((GFileAttributeMatcher *)1)
 
@@ -2083,3 +2085,6 @@ g_file_attribute_matcher_enumerate_next (GFileAttributeMatcher *matcher)
        return get_attribute_for_id (sub_matcher->id);
     }
 }
+
+#define __G_FILE_INFO_C__
+#include "gioaliasdef.c"
index 94c0269..0d52cf9 100644 (file)
@@ -28,6 +28,8 @@
 #include "gsimpleasyncresult.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gfileinputstream
  * @short_description: file input streaming operations
@@ -518,3 +520,7 @@ g_file_input_stream_real_query_info_finish (GFileInputStream     *stream,
   
   return NULL;
 }
+
+#define __G_FILE_INPUT_STREAM_C__
+#include "gioaliasdef.c"
+
index eaec3cf..1e1b5a2 100644 (file)
@@ -28,6 +28,8 @@
 #include "gvfs.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gfilemonitor
  * @short_description: File Monitor
@@ -403,3 +405,6 @@ g_file_monitor_emit_event (GFileMonitor *monitor,
       schedule_virtual_change_done (monitor, file);
     }
 }
+
+#define __G_FILE_MONITOR_C__
+#include "gioaliasdef.c"
index 76e6276..8558ecf 100644 (file)
@@ -27,6 +27,8 @@
 #include <string.h>
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gfilenamecompleter
  * @short_description: Filename Completer
@@ -508,3 +510,6 @@ g_filename_completer_set_dirs_only (GFilenameCompleter *completer,
 
   completer->dirs_only = dirs_only;
 }
+
+#define __G_FILENAME_COMPLETER_C__
+#include "gioaliasdef.c"
index f54a583..d252d54 100644 (file)
@@ -28,6 +28,8 @@
 #include "gsimpleasyncresult.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gfileoutputstream
  * @short_description: file output streaming operations
@@ -645,3 +647,6 @@ g_file_output_stream_real_query_info_finish (GFileOutputStream     *stream,
   
   return NULL;
 }
+
+#define __G_FILE_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
index 078a479..012a221 100644 (file)
@@ -25,6 +25,8 @@
 #include "ginputstream.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gfilterinputstream
  * @short_description: Filter Input Stream
@@ -396,4 +398,7 @@ g_filter_input_stream_close_finish (GInputStream  *stream,
   return res;
 }
 
+#define __G_FILTER_INPUT_STREAM_C__
+#include "gioaliasdef.c"
+
 /* vim: ts=2 sw=2 et */
index 5fdd3b3..3d420fc 100644 (file)
@@ -25,6 +25,8 @@
 #include "goutputstream.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gfilteroutputstream
  * @short_description: Filter Output Stream
@@ -376,5 +378,7 @@ g_filter_output_stream_close_finish (GOutputStream        *stream,
   return res;
 }
 
+#define __G_FILTER_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
 
 /* vim: ts=2 sw=2 et */
index 4b2bf3f..a6631a1 100644 (file)
@@ -25,6 +25,8 @@
 
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 static void g_icon_base_init (gpointer g_class);
 static void g_icon_class_init (gpointer g_class,
                               gpointer class_data);
@@ -120,3 +122,5 @@ g_icon_equal (GIcon *icon1,
   return (* iface->equal) (icon1, icon2);
 }
 
+#define __G_ICON_C__
+#include "gioaliasdef.c"
index 77def70..ba835d8 100644 (file)
@@ -28,6 +28,8 @@
 #include "gseekable.h"
 #include "gsimpleasyncresult.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:ginputstream
  * @short_description: base class for implementing streaming input
@@ -1204,3 +1206,6 @@ g_input_stream_real_close_finish (GInputStream              *stream,
   g_assert (g_simple_async_result_get_source_tag (simple) == g_input_stream_real_close_async);
   return TRUE;
 }
+
+#define __G_INPUT_STREAM_C__
+#include "gioaliasdef.c"
diff --git a/gio/gio.symbols b/gio/gio.symbols
new file mode 100644 (file)
index 0000000..ba70fce
--- /dev/null
@@ -0,0 +1,688 @@
+/* This file lists all exported symbols. It is used to generate
+ * the gio.def file used to control exports on Windows and the
+ * gioalias.h/gioaliasdef.c files used to avoid PLT entries for
+ * internal uses of exported functions (see makegioalias.pl).
+ *
+ * Every symbol must be included in the right
+ * #ifdef IN_HEADER(sym) #endif and
+ * #ifdef IN_FILE(sym) #endif sections.
+ */
+#ifdef ALL_FILES
+#define IN_FILE(x) 1
+#define IN_HEADER(x) 1
+#endif
+
+#if IN_HEADER(__G_VFS_H__)
+#if IN_FILE(__G_VFS_C__)
+g_vfs_get_type G_GNUC_CONST
+g_vfs_is_active
+g_vfs_get_file_for_path
+g_vfs_get_file_for_uri
+g_vfs_get_supported_uri_schemes
+g_vfs_parse_name
+g_vfs_get_default
+g_vfs_get_local
+#endif
+#endif
+
+#if IN_HEADER(__G_APP_INFO_H__)
+#if IN_FILE(__G_APP_INFO_C__)
+g_app_info_get_type G_GNUC_CONST
+g_app_launch_context_get_type G_GNUC_CONST
+g_app_info_dup
+g_app_info_equal
+g_app_info_get_id
+g_app_info_get_name
+g_app_info_get_description
+g_app_info_get_executable
+g_app_info_get_icon
+g_app_info_launch
+g_app_info_supports_uris
+g_app_info_launch_uris
+g_app_info_should_show
+g_app_info_set_as_default_for_type
+g_app_info_set_as_default_for_extension
+g_app_info_add_supports_type
+g_app_info_can_remove_supports_type
+g_app_info_remove_supports_type
+g_app_launch_context_new
+g_app_launch_context_get_display
+g_app_launch_context_get_startup_notify_id
+g_app_launch_context_launch_failed
+#endif
+
+#if IN_FILE(__G_DESKTOP_APP_INFO_C__)
+g_app_info_create_from_commandline
+g_app_info_get_all
+g_app_info_get_all_for_type
+g_app_info_get_default_for_type
+g_app_info_get_default_for_uri_scheme
+#endif
+#endif
+
+
+#if IN_HEADER(__G_ASYNC_RESULT_H__)
+#if IN_FILE(__G_ASYNC_RESULT_C__)
+g_async_result_get_type G_GNUC_CONST
+g_async_result_get_user_data
+g_async_result_get_source_object
+#endif
+#endif
+
+#if IN_HEADER(__G_BUFFERED_INPUT_STREAM_H__)
+#if IN_FILE(__G_BUFFERED_INPUT_STREAM_C__)
+g_buffered_input_stream_get_type G_GNUC_CONST
+g_buffered_input_stream_new
+g_buffered_input_stream_new_sized
+g_buffered_input_stream_get_buffer_size
+g_buffered_input_stream_set_buffer_size
+g_buffered_input_stream_get_available
+g_buffered_input_stream_peek
+g_buffered_input_stream_peek_buffer
+g_buffered_input_stream_fill
+g_buffered_input_stream_fill_async
+g_buffered_input_stream_fill_finish
+g_buffered_input_stream_read_byte
+#endif
+#endif
+
+#if IN_HEADER(__G_BUFFERED_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_BUFFERED_OUTPUT_STREAM_C__)
+g_buffered_output_stream_get_type G_GNUC_CONST;
+g_buffered_output_stream_new
+g_buffered_output_stream_new_sized
+g_buffered_output_stream_get_buffer_size
+g_buffered_output_stream_set_buffer_size
+g_buffered_output_stream_get_auto_grow
+g_buffered_output_stream_set_auto_grow
+#endif
+#endif
+
+#if IN_HEADER(__G_CANCELLABLE_H__)
+#if IN_FILE(__G_CANCELLABLE_C__)
+g_cancellable_get_type G_GNUC_CONST
+g_cancellable_new
+g_cancellable_is_cancelled
+g_cancellable_set_error_if_cancelled
+g_cancellable_get_fd
+g_cancellable_get_current
+g_push_current_cancellable
+g_pop_current_cancellable
+g_cancellable_reset
+g_cancellable_cancel
+#endif
+#endif
+
+#if IN_HEADER(__G_CONTENT_TYPE_H__)
+#if IN_FILE(__G_CONTENT_TYPE_C__)
+g_content_type_equals
+g_content_type_is_a
+g_content_type_is_unknown
+g_content_type_get_description
+g_content_type_get_mime_type
+g_content_type_get_icon
+g_content_type_can_be_executable
+g_content_type_guess
+g_content_types_get_registered
+#endif
+#endif
+
+#if IN_HEADER(__G_DATA_INPUT_STREAM_H__)
+#if IN_FILE(__G_DATA_INPUT_STREAM_C__)
+g_data_input_stream_get_type G_GNUC_CONST
+g_data_input_stream_new
+g_data_input_stream_set_byte_order
+g_data_input_stream_get_byte_order
+g_data_input_stream_set_newline_type
+g_data_input_stream_get_newline_type
+g_data_input_stream_read_byte
+g_data_input_stream_read_int16
+g_data_input_stream_read_uint16
+g_data_input_stream_read_int32
+g_data_input_stream_read_uint32
+g_data_input_stream_read_int64
+g_data_input_stream_read_uint64
+g_data_input_stream_read_line
+g_data_input_stream_read_until
+#endif
+#endif
+
+#if IN_HEADER(__G_DATA_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_DATA_OUTPUT_STREAM_C__)
+g_data_output_stream_get_type G_GNUC_CONST
+g_data_output_stream_new
+g_data_output_stream_set_byte_order
+g_data_output_stream_get_byte_order
+g_data_output_stream_put_byte
+g_data_output_stream_put_int16
+g_data_output_stream_put_uint16
+g_data_output_stream_put_int32
+g_data_output_stream_put_uint32
+g_data_output_stream_put_int64
+g_data_output_stream_put_uint64
+g_data_output_stream_put_string
+#endif
+#endif
+
+#if IN_HEADER(__G_DIRECTORY_MONITOR_H__)
+#if IN_FILE(__G_DIRECTORY_MONITOR_C__)
+g_directory_monitor_get_type G_GNUC_CONST
+g_directory_monitor_cancel
+g_directory_monitor_is_cancelled
+g_directory_monitor_set_rate_limit
+g_directory_monitor_emit_event
+#endif
+#endif
+
+#if IN_HEADER(__G_DRIVE_H__)
+#if IN_FILE(__G_DRIVE_C__)
+g_drive_get_type G_GNUC_CONST
+g_drive_get_name
+g_drive_get_icon
+g_drive_has_volumes
+g_drive_get_volumes
+g_drive_is_automounted
+g_drive_can_mount
+g_drive_can_eject
+g_drive_mount
+g_drive_mount_finish
+g_drive_eject
+g_drive_eject_finish
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_ATTRIBUTE_H__)
+#if IN_FILE(__G_FILE_ATTRIBUTE_C__)
+g_file_attribute_value_new
+g_file_attribute_value_free
+g_file_attribute_value_clear
+g_file_attribute_value_set
+g_file_attribute_value_dup
+g_file_attribute_value_as_string
+g_file_attribute_value_get_string
+g_file_attribute_value_get_byte_string
+g_file_attribute_value_get_boolean
+g_file_attribute_value_get_uint32
+g_file_attribute_value_get_int32
+g_file_attribute_value_get_uint64
+g_file_attribute_value_get_int64
+g_file_attribute_value_get_object
+g_file_attribute_value_set_string
+g_file_attribute_value_set_byte_string
+g_file_attribute_value_set_boolean
+g_file_attribute_value_set_uint32
+g_file_attribute_value_set_int32
+g_file_attribute_value_set_uint64
+g_file_attribute_value_set_int64
+g_file_attribute_value_set_object
+g_file_attribute_info_list_new
+g_file_attribute_info_list_ref
+g_file_attribute_info_list_unref
+g_file_attribute_info_list_dup
+g_file_attribute_info_list_lookup
+g_file_attribute_info_list_add
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_H__)
+#if IN_FILE(__G_FILE_C__)
+g_file_get_type G_GNUC_CONST
+g_file_new_for_path
+g_file_new_for_uri
+g_file_new_for_commandline_arg
+g_file_parse_name
+g_file_dup
+g_file_hash
+g_file_equal
+g_file_get_basename
+g_file_get_path
+g_file_get_uri
+g_file_get_parse_name
+g_file_get_parent
+g_file_get_child
+g_file_get_child_for_display_name
+g_file_contains_file
+g_file_get_relative_path
+g_file_resolve_relative_path
+g_file_is_native
+g_file_has_uri_scheme
+g_file_get_uri_scheme
+g_file_read
+g_file_read_async
+g_file_read_finish
+g_file_append_to
+g_file_create
+g_file_replace
+g_file_append_to_async
+g_file_append_to_finish
+g_file_create_async
+g_file_create_finish
+g_file_replace_async
+g_file_replace_finish
+g_file_query_info
+g_file_query_info_async
+g_file_query_info_finish
+g_file_query_filesystem_info
+g_file_find_enclosing_volume
+g_file_enumerate_children
+g_file_enumerate_children_async
+g_file_enumerate_children_finish
+g_file_set_display_name
+g_file_set_display_name_async
+g_file_set_display_name_finish
+g_file_delete
+g_file_trash
+g_file_copy
+g_file_move
+g_file_make_directory
+g_file_make_symbolic_link
+g_file_query_settable_attributes
+g_file_query_writable_namespaces
+g_file_set_attribute
+g_file_set_attributes_from_info
+g_file_set_attributes_async
+g_file_set_attributes_finish
+g_file_set_attribute_string
+g_file_set_attribute_byte_string
+g_file_set_attribute_uint32
+g_file_set_attribute_int32
+g_file_set_attribute_uint64
+g_file_set_attribute_int64
+g_mount_for_location
+g_mount_for_location_finish
+g_file_mount_mountable
+g_file_mount_mountable_finish
+g_file_unmount_mountable
+g_file_unmount_mountable_finish
+g_file_eject_mountable
+g_file_eject_mountable_finish
+g_file_copy_attributes
+g_file_monitor_directory
+g_file_monitor_file
+g_file_load_contents
+g_file_load_contents_async
+g_file_load_contents_finish
+g_file_load_partial_contents_async
+g_file_load_partial_contents_finish
+g_file_replace_contents
+g_file_replace_contents_async
+g_file_replace_contents_finish
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_ENUMERATOR_H__)
+#if IN_FILE(__G_FILE_ENUMERATOR_C__)
+g_file_enumerator_get_type G_GNUC_CONST
+g_file_enumerator_next_file
+g_file_enumerator_close
+g_file_enumerator_next_files_async
+g_file_enumerator_next_files_finish
+g_file_enumerator_close_async
+g_file_enumerator_close_finish
+g_file_enumerator_is_closed
+g_file_enumerator_has_pending
+g_file_enumerator_set_pending
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_ICON_H__)
+#if IN_FILE(__G_FILE_ICON_C__)
+g_file_icon_get_type G_GNUC_CONST
+g_file_icon_new
+g_file_icon_get_file
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_INFO_H__)
+#if IN_FILE(__G_FILE_INFO_C__)
+g_file_info_get_type  G_GNUC_CONST
+g_file_info_new 
+g_file_info_dup 
+g_file_info_copy_into 
+g_file_info_has_attribute 
+g_file_info_list_attributes 
+g_file_info_get_attribute_type 
+g_file_info_remove_attribute 
+g_file_info_get_attribute 
+g_file_info_get_attribute_string 
+g_file_info_get_attribute_byte_string 
+g_file_info_get_attribute_boolean 
+g_file_info_get_attribute_object 
+g_file_info_set_attribute 
+g_file_info_set_attribute_string 
+g_file_info_set_attribute_byte_string 
+g_file_info_set_attribute_boolean 
+g_file_info_set_attribute_object 
+g_file_info_clear_status 
+g_file_info_get_file_type 
+g_file_info_get_is_hidden 
+g_file_info_get_is_backup 
+g_file_info_get_is_symlink 
+g_file_info_get_name 
+g_file_info_get_display_name 
+g_file_info_get_edit_name 
+g_file_info_get_icon 
+g_file_info_get_content_type 
+g_file_info_get_size 
+g_file_info_get_modification_time 
+g_file_info_get_symlink_target 
+g_file_info_get_etag 
+g_file_info_get_sort_order 
+g_file_info_set_attribute_mask 
+g_file_info_unset_attribute_mask 
+g_file_info_set_file_type 
+g_file_info_set_is_hidden 
+g_file_info_set_is_symlink 
+g_file_info_set_name 
+g_file_info_set_display_name 
+g_file_info_set_edit_name 
+g_file_info_set_icon 
+g_file_info_set_content_type 
+g_file_info_set_size 
+g_file_info_set_modification_time 
+g_file_info_set_symlink_target 
+g_file_info_set_sort_order 
+g_file_attribute_matcher_unref 
+g_file_attribute_matcher_matches 
+g_file_attribute_matcher_matches_only 
+g_file_attribute_matcher_enumerate_namespace 
+g_file_attribute_matcher_enumerate_next 
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_INPUT_STREAM_H__)
+#if IN_FILE(__G_FILE_INPUT_STREAM_C__)
+g_file_input_stream_get_type  G_GNUC_CONST
+g_file_input_stream_query_info 
+g_file_input_stream_query_info_async 
+g_file_input_stream_query_info_finish 
+g_file_input_stream_tell 
+g_file_input_stream_can_seek 
+g_file_input_stream_seek 
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_MONITOR_H__)
+#if IN_FILE(__G_FILE_MONITOR_C__)
+g_file_monitor_get_type  G_GNUC_CONST
+g_file_monitor_cancel 
+g_file_monitor_is_cancelled 
+g_file_monitor_set_rate_limit 
+g_file_monitor_emit_event 
+#endif
+#endif
+
+#if IN_HEADER(__G_FILENAME_COMPLETER_H__)
+#if IN_FILE(__G_FILENAME_COMPLETER_C__)
+g_filename_completer_get_type  G_GNUC_CONST
+g_filename_completer_new 
+g_filename_completer_get_completion_suffix 
+g_filename_completer_get_completions 
+g_filename_completer_set_dirs_only 
+#endif
+#endif
+
+#if IN_HEADER(__G_FILE_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_FILE_OUTPUT_STREAM_C__)
+g_file_output_stream_get_type  G_GNUC_CONST
+g_file_output_stream_query_info 
+g_file_output_stream_query_info_async 
+g_file_output_stream_query_info_finish 
+g_file_output_stream_get_etag 
+g_file_output_stream_tell 
+g_file_output_stream_can_seek 
+g_file_output_stream_seek 
+g_file_output_stream_can_truncate 
+g_file_output_stream_truncate 
+#endif
+#endif
+
+#if IN_HEADER(__G_FILTER_INPUT_STREAM_H__)
+#if IN_FILE(__G_FILTER_INPUT_STREAM_C__)
+g_filter_input_stream_get_type  G_GNUC_CONST
+g_filter_input_stream_get_base_stream 
+#endif
+#endif
+
+#if IN_HEADER(__G_FILTER_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_FILTER_OUTPUT_STREAM_C__)
+g_filter_output_stream_get_type  G_GNUC_CONST
+g_filter_output_stream_get_base_stream 
+#endif
+#endif
+
+#if IN_HEADER(__G_ICON_H__)
+#if IN_FILE(__G_ICON_C__)
+g_icon_get_type  G_GNUC_CONST
+g_icon_hash 
+g_icon_equal 
+#endif
+#endif
+
+#if IN_HEADER(__G_INPUT_STREAM_H__)
+#if IN_FILE(__G_INPUT_STREAM_C__)
+g_input_stream_get_type  G_GNUC_CONST
+g_input_stream_read 
+g_input_stream_read_all 
+g_input_stream_skip 
+g_input_stream_close 
+g_input_stream_read_async 
+g_input_stream_read_finish 
+g_input_stream_skip_async 
+g_input_stream_skip_finish 
+g_input_stream_close_async 
+g_input_stream_close_finish 
+g_input_stream_is_closed 
+g_input_stream_has_pending 
+g_input_stream_set_pending 
+#endif
+#endif
+
+#if IN_HEADER(__G_IO_ERROR_H__)
+#if IN_FILE(__G_IO_ERROR_C__)
+g_io_error_quark 
+g_io_error_from_errno 
+#endif
+#endif
+
+#if IN_HEADER(__G_IO_MODULE_H__)
+#if IN_FILE(__G_IO_MODULE_C__)
+g_io_module_get_type  G_GNUC_CONST
+g_io_module_new 
+g_io_modules_ensure_loaded 
+#endif
+#endif
+
+#if IN_HEADER(__G_IO_SCHEDULER_H__)
+#if IN_FILE(__G_IO_SCHEDULER_C__)
+g_schedule_io_job 
+g_cancel_all_io_jobs 
+g_io_job_send_to_mainloop 
+#endif
+#endif
+
+#if IN_HEADER(__G_LOADABLE_ICON_H__)
+#if IN_FILE(__G_LOADABLE_ICON_C__)
+g_loadable_icon_get_type  G_GNUC_CONST
+g_loadable_icon_load 
+g_loadable_icon_load_async 
+g_loadable_icon_load_finish 
+#endif
+#endif
+
+#if IN_HEADER(__G_MEMORY_INPUT_STREAM_H__)
+#if IN_FILE(__G_MEMORY_INPUT_STREAM_C__)
+g_memory_input_stream_get_type  G_GNUC_CONST
+g_memory_input_stream_from_data 
+g_memory_input_stream_set_free_data 
+g_memory_input_stream_get_data 
+g_memory_input_stream_get_data_size 
+#endif
+#endif
+
+#if IN_HEADER(__G_MEMORY_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_MEMORY_OUTPUT_STREAM_C__)
+g_memory_output_stream_get_type  G_GNUC_CONST
+g_memory_output_stream_new 
+g_memory_output_stream_set_max_size 
+g_memory_output_stream_get_data 
+g_memory_output_stream_set_free_data 
+#endif
+#endif
+
+#if IN_HEADER(__G_MOUNT_OPERATION_H__)
+#if IN_FILE(__G_MOUNT_OPERATION_C__)
+g_mount_operation_get_type  G_GNUC_CONST
+g_mount_operation_new 
+g_mount_operation_get_username 
+g_mount_operation_set_username 
+g_mount_operation_get_password 
+g_mount_operation_set_password 
+g_mount_operation_get_anonymous 
+g_mount_operation_set_anonymous 
+g_mount_operation_get_domain 
+g_mount_operation_set_domain 
+g_mount_operation_get_password_save 
+g_mount_operation_set_password_save 
+g_mount_operation_get_choice 
+g_mount_operation_set_choice 
+g_mount_operation_reply 
+#endif
+#endif
+
+#if IN_HEADER(__G_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_OUTPUT_STREAM_C__)
+g_output_stream_get_type  G_GNUC_CONST
+g_output_stream_write 
+g_output_stream_write_all 
+g_output_stream_splice 
+g_output_stream_flush 
+g_output_stream_close 
+g_output_stream_write_async 
+g_output_stream_write_finish 
+g_output_stream_splice_async 
+g_output_stream_splice_finish 
+g_output_stream_flush_async 
+g_output_stream_flush_finish 
+g_output_stream_close_async 
+g_output_stream_close_finish 
+g_output_stream_is_closed 
+g_output_stream_has_pending 
+g_output_stream_set_pending 
+#endif
+#endif
+
+#if IN_HEADER(__G_SEEKABLE_H__)
+#if IN_FILE(__G_SEEKABLE_C__)
+g_seekable_get_type  G_GNUC_CONST
+g_seekable_tell 
+g_seekable_can_seek 
+g_seekable_seek 
+g_seekable_can_truncate 
+g_seekable_truncate 
+#endif
+#endif
+
+#if IN_HEADER(__G_SIMPLE_ASYNC_RESULT_H__)
+#if IN_FILE(__G_SIMPLE_ASYNC_RESULT_C__)
+g_simple_async_result_get_type  G_GNUC_CONST
+g_simple_async_result_new 
+g_simple_async_result_new_error 
+g_simple_async_result_new_from_error 
+g_simple_async_result_set_op_res_gpointer 
+g_simple_async_result_get_op_res_gpointer 
+g_simple_async_result_set_op_res_gssize 
+g_simple_async_result_get_op_res_gssize 
+g_simple_async_result_set_op_res_gboolean 
+g_simple_async_result_get_op_res_gboolean 
+g_simple_async_result_get_source_tag 
+g_simple_async_result_set_handle_cancellation 
+g_simple_async_result_complete 
+g_simple_async_result_complete_in_idle 
+g_simple_async_result_run_in_thread 
+g_simple_async_result_set_from_error 
+g_simple_async_result_propagate_error 
+g_simple_async_result_set_error 
+g_simple_async_result_set_error_va 
+g_simple_async_report_error_in_idle 
+#endif
+#endif
+
+#if IN_HEADER(__G_THEMED_ICON_H__)
+#if IN_FILE(__G_THEMED_ICON_C__)
+g_themed_icon_get_type  G_GNUC_CONST
+g_themed_icon_new 
+g_themed_icon_new_from_names 
+g_themed_icon_get_names 
+#endif
+#endif
+
+#if IN_HEADER(__G_UNIX_MOUNTS_H__)
+#if IN_FILE(__G_UNIX_MOUNTS_C__)
+g_unix_mount_free 
+g_unix_mount_point_free 
+g_unix_mount_compare 
+g_unix_mount_get_mount_path 
+g_unix_mount_get_device_path 
+g_unix_mount_get_fs_type 
+g_unix_mount_is_readonly 
+g_unix_mount_is_system_internal 
+g_unix_mount_guess_type 
+g_unix_mount_point_compare 
+g_unix_mount_point_get_mount_path 
+g_unix_mount_point_get_device_path 
+g_unix_mount_point_get_fs_type 
+g_unix_mount_point_is_readonly 
+g_unix_mount_point_is_user_mountable 
+g_unix_mount_point_is_loopback 
+g_unix_mount_point_guess_type 
+g_get_unix_mount_points 
+g_get_unix_mounts 
+g_get_unix_mount_at 
+g_unix_mounts_changed_since 
+g_unix_mount_points_changed_since 
+g_unix_mount_monitor_get_type  G_GNUC_CONST
+g_unix_mount_monitor_new 
+#endif
+#endif
+
+#if IN_HEADER(__G_UNIX_INPUT_STREAM_H__)
+#if IN_FILE(__G_UNIX_INPUT_STREAM_C__)
+g_unix_input_stream_get_type  G_GNUC_CONST
+g_unix_input_stream_new 
+#endif
+#endif
+
+#if IN_HEADER(__G_UNIX_OUTPUT_STREAM_H__)
+#if IN_FILE(__G_UNIX_OUTPUT_STREAM_C__)
+g_unix_output_stream_get_type  G_GNUC_CONST
+g_unix_output_stream_new 
+#endif
+#endif
+
+#if IN_HEADER(__G_VOLUME_H__)
+#if IN_FILE(__G_VOLUME_C__)
+g_volume_get_type  G_GNUC_CONST
+g_volume_get_root 
+g_volume_get_name 
+g_volume_get_icon 
+g_volume_get_drive 
+g_volume_can_unmount 
+g_volume_can_eject 
+g_volume_unmount 
+g_volume_unmount_finish 
+g_volume_eject 
+g_volume_eject_finish 
+#endif
+#endif
+
+#if IN_HEADER(__G_VOLUME_MONITOR_H__)
+#if IN_FILE(__G_VOLUME_MONITOR_C__)
+g_volume_monitor_get_type  G_GNUC_CONST
+g_volume_monitor_get_mounted_volumes 
+g_volume_monitor_get_connected_drives 
+#endif
+#if IN_FILE(__G_UNION_VOLUME_MONITOR_C__)
+g_volume_monitor_get 
+#endif
+#endif
index e3bb348..df2d31b 100644 (file)
@@ -24,6 +24,8 @@
 #include <errno.h>
 #include "gioerror.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gioerror
  * @short_description: Error helper functions
@@ -169,3 +171,6 @@ g_io_error_from_errno (gint err_no)
       break;
     }
 }
+
+#define __G_IO_ERROR_C__
+#include "gioaliasdef.c"
index 1214d81..02d12d6 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "giomodule.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:giomodule
  * @short_description: Loadable GIO Modules
@@ -247,3 +249,6 @@ g_io_modules_ensure_loaded (const char *directory)
   
   G_UNLOCK (loaded_dirs);
 }
+
+#define __G_IO_MODULE_C__
+#include "gioaliasdef.c"
index 9323755..d82357e 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "gioscheduler.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gioscheduler
  * @short_description: I/O Scheduler
@@ -380,3 +382,6 @@ g_io_job_send_to_mainloop (GIOJob        *job,
       mainloop_proxy_free (proxy);
     }
 }
+
+#define __G_IO_SCHEDULER_C__
+#include "gioaliasdef.c"
index 85e8e6d..5bef93f 100644 (file)
@@ -25,6 +25,8 @@
 #include "gloadableicon.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gloadableicon
  * @short_description: Loadable Icons
@@ -276,3 +278,6 @@ g_loadable_icon_real_load_finish (GLoadableIcon        *icon,
 
   return g_object_ref (data->stream);
 }
+
+#define __G_LOADABLE_ICON_C__
+#include "gioaliasdef.c"
index 0cdcf8a..ca4e848 100644 (file)
@@ -29,6 +29,8 @@
 
 #include <string.h>
 
+#include "gioalias.h"
+
 enum
 {
   PROP_0,
index 9d5b926..2e9b5fc 100644 (file)
@@ -77,6 +77,8 @@
 #include <glib/gstdio.h>
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 static void g_local_file_file_iface_init (GFileIface       *iface);
 
 static GFileAttributeInfoList *local_writable_attributes = NULL;
index 8548fcf..7030c2a 100644 (file)
@@ -27,6 +27,8 @@
 #include <glocalfileinfo.h>
 #include "glibintl.h"
 
+#include "gioalias.h"
+
   /* TODO:
    *  It would be nice to use the dirent->d_type to check file type without
    *  needing to stat each files on linux and other systems that support it.
index 5f6176b..ab56cfd 100644 (file)
@@ -60,6 +60,8 @@
 #include "gcontenttype.h"
 #include "gcontenttypeprivate.h"
 
+#include "gioalias.h"
+
 struct ThumbMD5Context {
        guint32 buf[4];
        guint32 bits[2];
index 3f90720..b465485 100644 (file)
@@ -35,6 +35,7 @@
 #include "glocalfileinfo.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
 
 G_DEFINE_TYPE (GLocalFileInputStream, g_local_file_input_stream, G_TYPE_FILE_INPUT_STREAM);
 
index 94ebf7b..be189a0 100644 (file)
@@ -27,6 +27,8 @@
 
 #include <string.h>
 
+#include "gioalias.h"
+
 enum
 {
   PROP_0,
index 3ff2056..2a8f21e 100644 (file)
@@ -36,6 +36,8 @@
 #include "glocalfileoutputstream.h"
 #include "glocalfileinfo.h"
 
+#include "gioalias.h"
+
 G_DEFINE_TYPE (GLocalFileOutputStream, g_local_file_output_stream, G_TYPE_FILE_OUTPUT_STREAM);
 
 /* Some of the file replacement code was based on the code from gedit,
index e5fc644..555a2db 100644 (file)
@@ -27,6 +27,8 @@
 #include <sys/types.h>
 #include <pwd.h>
 
+#include "gioalias.h"
+
 struct _GLocalVfs
 {
   GVfs parent;
index 0e9dbac..ec4346e 100644 (file)
@@ -28,6 +28,8 @@
 #include "gsimpleasyncresult.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gmemoryinputstream
  * @short_description: streaming input operations on memory chunks
@@ -465,5 +467,7 @@ g_memory_input_stream_truncate (GSeekable      *seekable,
   return FALSE;
 }
 
-/* vim: ts=2 sw=2 et */
+#define __G_MEMORY_INPUT_STREAM_C__
+#include "gioaliasdef.c"
 
+/* vim: ts=2 sw=2 et */
index b3c2a10..bd71ac1 100644 (file)
@@ -28,6 +28,8 @@
 #include "string.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gmemoryoutputstream
  * @short_description: streaming output operations on memory chunks
@@ -685,4 +687,7 @@ g_memory_output_stream_truncate (GSeekable      *seekable,
   return TRUE;
 }
 
+#define __G_MEMORY_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
+
 /* vim: ts=2 sw=2 et */
index bdb0b3a..9a618f3 100644 (file)
@@ -28,6 +28,8 @@
 #include "gio-marshal.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /** 
  * SECTION:gmountoperation
  * @short_description: Authentication methods for mountable locations
@@ -408,3 +410,6 @@ g_mount_operation_reply (GMountOperation *op,
   g_return_if_fail (G_IS_MOUNT_OPERATION (op));
   g_signal_emit (op, signals[REPLY], 0, abort);
 }
+
+#define __G_MOUNT_OPERATION_C__
+#include "gioaliasdef.c"
index cc2d81a..d7fa98c 100644 (file)
@@ -5,6 +5,7 @@
 #include <glib.h>
 #include "gnativevolumemonitor.h"
 
+#include "gioalias.h"
 
 G_DEFINE_ABSTRACT_TYPE (GNativeVolumeMonitor, g_native_volume_monitor, G_TYPE_VOLUME_MONITOR);
 
index 5b1fc4e..9c2bb64 100644 (file)
@@ -25,6 +25,8 @@
 #include "gsimpleasyncresult.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:goutputstream
  * @short_description: base class for implementing streaming output
@@ -1343,3 +1345,6 @@ g_output_stream_real_close_finish (GOutputStream              *stream,
   g_assert (g_simple_async_result_get_source_tag (simple) == g_output_stream_real_close_async);
   return TRUE;
 }
+
+#define __G_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
index 2b559c1..f6e853a 100644 (file)
@@ -26,6 +26,8 @@
 #include "gpollfilemonitor.h"
 #include "gfilemonitor.h"
 
+#include "gioalias.h"
+
 static gboolean g_poll_file_monitor_cancel (GFileMonitor* monitor);
 static void schedule_poll_timeout (GPollFileMonitor* poll_monitor);
 
index fba1dec..98fa776 100644 (file)
@@ -24,6 +24,8 @@
 #include "gseekable.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gseekable
  * @short_description: Stream seeking interface
@@ -203,3 +205,5 @@ g_seekable_truncate (GSeekable     *seekable,
   return (* iface->truncate) (seekable, offset, cancellable, error);
 }
 
+#define __G_SEEKABLE_C__
+#include "gioaliasdef.c"
index b099783..d3c9327 100644 (file)
@@ -34,6 +34,8 @@
 #include <gio/gioerror.h>
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gsimpleasyncresult
  * @short_description: simple asynchronous results implementation
@@ -680,3 +682,6 @@ g_simple_async_report_error_in_idle (GObject *object,
   g_simple_async_result_complete_in_idle (simple);
   g_object_unref (simple);
 }
+
+#define __G_SIMPLE_ASYNC_RESULT_C__
+#include "gioaliasdef.c"
index 38b83eb..14b0ad0 100644 (file)
@@ -24,6 +24,8 @@
 
 #include "gthemedicon.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gthemedicon
  * @short_description: Themed Icons
@@ -184,3 +186,6 @@ g_themed_icon_icon_iface_init (GIconIface *iface)
   iface->hash = g_themed_icon_hash;
   iface->equal = g_themed_icon_equal;
 }
+
+#define __G_THEMED_ICON_C__
+#include "gioaliasdef.c"
index 10f9e31..cc0f081 100644 (file)
@@ -35,6 +35,8 @@
 
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 struct _GUnionVolumeMonitor {
   GVolumeMonitor parent;
 
@@ -393,3 +395,6 @@ g_volume_get_for_mount_path (const char *mountpoint)
 
   return volume;
 }
+
+#define __G_UNION_VOLUME_MONITOR_C__
+#include "gioaliasdef.c"
index 25e0539..e102ec5 100644 (file)
@@ -32,6 +32,8 @@
 #include "gvolumemonitor.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 struct _GUnixDrive {
   GObject parent;
 
index 0057180..c215a07 100644 (file)
@@ -39,6 +39,8 @@
 #include "gasynchelper.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gunixinputstream
  * @short_description: Unix Input Stream
@@ -478,3 +480,5 @@ g_unix_input_stream_close_finish (GInputStream              *stream,
   return TRUE;
 }
 
+#define __G_UNIX_INPUT_STREAM_C__
+#include "gioaliasdef.c"
index f2d96ca..85c4ef4 100644 (file)
@@ -47,6 +47,8 @@
 #include "gfile.h"
 #include "gfilemonitor.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gunixmounts
  * @short_description: Unix Mounts
@@ -1589,3 +1591,6 @@ g_unix_mount_point_guess_type (GUnixMountPoint *mount_point)
                           mount_point->device_path,
                           mount_point->filesystem_type);
 }
+
+#define __G_UNIX_MOUNTS_C__
+#include "gioaliasdef.c"
index e9da5c5..a48514c 100644 (file)
@@ -39,6 +39,8 @@
 #include "gasynchelper.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gunixoutputstream
  * @short_description: Unix Output Stream
@@ -436,3 +438,6 @@ g_unix_output_stream_close_finish (GOutputStream              *stream,
   /* Failures handled in generic close_finish code */
   return TRUE;
 }
+
+#define __G_UNIX_OUTPUT_STREAM_C__
+#include "gioaliasdef.c"
index a6e9867..8bcf1de 100644 (file)
@@ -33,6 +33,8 @@
 #include "gthemedicon.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 struct _GUnixVolume {
   GObject parent;
 
index 08ad02d..acbbba3 100644 (file)
@@ -32,6 +32,8 @@
 #include "gvolumeprivate.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 struct _GUnixVolumeMonitor {
   GNativeVolumeMonitor parent;
 
index 36f7276..a8f7bad 100644 (file)
@@ -27,6 +27,8 @@
 #include "giomodule.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gvfs
  * @short_description: Virtual File System 
@@ -274,3 +276,5 @@ g_vfs_get_local (void)
   return G_VFS (vfs);
 }
 
+#define __G_VFS_C__
+#include "gioaliasdef.c"
index ce7e3cd..21219af 100644 (file)
@@ -20,8 +20,8 @@
  * Author: Alexander Larsson <alexl@redhat.com>
  */
 
-#ifndef __G_VFS_IMPLEMENTATION_H__
-#define __G_VFS_IMPLEMENTATION_H__
+#ifndef __G_VFS_H__
+#define __G_VFS_H__
 
 #include <glib-object.h>
 #include <gio/gfile.h>
index da0e4bf..8a7e709 100644 (file)
@@ -26,6 +26,8 @@
 #include "gsimpleasyncresult.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gvolume
  * @short_description: mounted volume management
@@ -377,3 +379,6 @@ g_volume_eject_finish (GVolume              *volume,
   iface = G_VOLUME_GET_IFACE (volume);
   return (* iface->eject_finish) (volume, result, error);
 }
+
+#define __G_VOLUME_C__
+#include "gioaliasdef.c"
index c2be9c1..0d45b7b 100644 (file)
@@ -24,6 +24,8 @@
 #include "gvolumemonitor.h"
 #include "glibintl.h"
 
+#include "gioalias.h"
+
 /**
  * SECTION:gvolumemonitor
  * @short_description: Volume Monitor
@@ -183,3 +185,5 @@ g_volume_monitor_get_connected_drives (GVolumeMonitor *volume_monitor)
   return class->get_connected_drives (volume_monitor);
 }
 
+#define __G_VOLUME_MONITOR_C__
+#include "gioaliasdef.c"
index 3215b99..0192eff 100644 (file)
@@ -33,6 +33,8 @@
 #include <windows.h>
 #include <shlwapi.h>
 
+#include "gioalias.h"
+
 #ifndef ASSOCF_INIT_BYEXENAME
 #define ASSOCF_INIT_BYEXENAME 0x00000002
 #endif
index 765437e..0780fa2 100644 (file)
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.decl
+
 NULL =
 
 noinst_LTLIBRARIES = libinotify.la
index bec3609..e202b95 100644 (file)
@@ -31,6 +31,8 @@
 #define USE_INOTIFY 1
 #include "inotify-helper.h"
 
+#include "gioalias.h"
+
 struct _GInotifyDirectoryMonitor
 {
   GLocalDirectoryMonitor parent_instance;
index 4132116..cdc200d 100644 (file)
@@ -31,6 +31,8 @@
 #define USE_INOTIFY 1
 #include "inotify-helper.h"
 
+#include "gioalias.h"
+
 struct _GInotifyFileMonitor
 {
   GLocalFileMonitor parent_instance;
diff --git a/gio/makegioalias.pl b/gio/makegioalias.pl
new file mode 100755 (executable)
index 0000000..26b9206
--- /dev/null
@@ -0,0 +1,137 @@
+#!/usr/bin/perl -w
+
+my $do_def = 0;
+
+if (($#ARGV >= 0) && ($ARGV[0] eq "-def")) {
+    shift;
+    $do_def = 1;
+}
+
+print <<EOF;
+/* Generated by makegioalias.pl */
+
+#ifndef DISABLE_VISIBILITY
+
+#include "glibconfig.h"
+
+#ifdef G_HAVE_GNUC_VISIBILITY
+
+EOF
+
+if ($do_def) {
+    print <<EOF
+#undef IN_FILE
+#define IN_FILE defined
+
+#undef IN_HEADER
+#define IN_HEADER(x) 1
+
+EOF
+} 
+else { 
+    print <<EOF
+#define IN_FILE(x) 1
+#define IN_HEADER defined
+
+EOF
+}
+
+my $in_comment = 0;
+my $in_skipped_section = 0;
+
+while (<>) {
+
+  # ignore empty lines
+  next if /^\s*$/;
+
+  # skip comments
+  if ($_ =~ /^\s*\/\*/)
+  {
+      $in_comment = 1;
+  }
+  
+  if ($in_comment)
+  {
+      if ($_ =~  /\*\/\s$/)
+      {
+         $in_comment = 0;
+      }
+      
+      next;
+  }
+
+  # handle ifdefs
+  if ($_ =~ /^\#endif/)
+  {
+      if (!$in_skipped_section)
+      {
+         print $_;
+      }
+
+      $in_skipped_section = 0;
+
+      next;
+  }
+
+  if ($_ =~ /^\#ifdef\s+(INCLUDE_VARIABLES|INCLUDE_INTERNAL_SYMBOLS|ALL_FILES)/)
+  {
+      $in_skipped_section = 1;
+  }
+
+  if ($in_skipped_section)
+  {
+      next;
+  }
+
+  if ($_ =~ /^\#ifn?def\s+G/)
+  {
+      print $_;
+      
+      next;
+  }
+  if ($_ =~ /^\#if.*(IN_FILE|IN_HEADER)/)
+  {
+      print $_;
+      
+      next;
+  }
+
+  chop;
+  my $str = $_;
+  my @words;
+  my $attributes = "";
+
+  @words = split(/ /, $str);
+  $str = shift(@words);
+  chomp($str);
+  my $alias = "IA__".$str;
+  
+  # Drop any Win32 specific .def file syntax,  but keep attributes
+  foreach $word (@words) {
+      $attributes = "$attributes $word" unless $word eq "PRIVATE";
+  }
+  
+  if (!$do_def) {
+    print <<EOF
+extern __typeof ($str) $alias __attribute((visibility("hidden")))$attributes;
+\#define $str $alias
+
+EOF
+  }
+  else {
+    print <<EOF
+\#undef $str 
+extern __typeof ($str) $str __attribute((alias("$alias"), visibility("default")));
+
+EOF
+  }
+}
+
+print <<EOF;
+
+#endif /* G_HAVE_GNUC_VISIBILITY */
+#endif /* DISABLE_VISIBILITY */
+EOF
+
+
diff --git a/gio/pltcheck.sh b/gio/pltcheck.sh
new file mode 100755 (executable)
index 0000000..6858527
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+LANG=C
+
+status=0
+
+if ! which readelf 2>/dev/null >/dev/null; then
+       echo "'readelf' not found; skipping test"
+       exit 0
+fi
+
+SKIP='\<g_access\|\<g_array_\|\<g_ascii\|\<g_list_\|\<g_assert_warning\|\<g_atomic_int\|\<g_build_filename\|\<g_byte_array\|\<g_child_watch\|\<g_convert\|\<g_dir_\|\<g_error_\|\<g_file_error_quark\|\<g_file_get_contents\|\<g_file_set_contents\|\<g_file_test\|\<g_filename_\|\<g_find_program_in_path\|\<g_free\|\<g_get_\|\<g_getenv\|\<g_hash_table_\|\<g_idle_\|\<g_intern_static_string\|\<g_io_channel_\|\<g_key_file_\|\<g_listenv\|\<g_locale_to_utf8\|\<g_log\|\<g_main_context_wakeup\|\<g_malloc\|\<g_markup_\|\<g_mkdir_\|\<g_mkstemp\|\<g_module_\|\<g_object_\|\<g_once_\|\<g_param_spec_\|\<g_path_\|\<g_printerr\|\<g_propagate_error\|\<g_ptr_array_\|\<g_qsort_\|\<g_quark_\|\<g_queue_\|\<g_realloc\|\<g_return_if_fail\|\<g_set_error\|\<g_shell_\|\<g_signal_\|\<g_slice_\|\<g_slist_\|\<g_snprintf\|\<g_source_\|\<g_spawn_\|\<g_static_\|\<g_str\|\<g_thread_pool_\|\<g_time_val_add\|\<g_timeout_\|\<g_type_\|\<g_unlink\|\<g_uri_\|\<g_utf8_\|\<g_value_'
+
+for so in .libs/lib*.so; do
+       echo Checking $so for local PLT entries
+       readelf -r $so | grep 'JU\?MP_SLOT' | grep '\<g_' | grep -v $SKIP && status=1
+done
+
+exit $status
index 41f16a7..87fc048 100644 (file)
@@ -1,3 +1,5 @@
+include $(top_srcdir)/Makefile.decl
+
 AM_CPPFLAGS = -DXDG_PREFIX=_gio_xdg
 
 noinst_LTLIBRARIES = libxdgmime.la