diff --git a/app/Makefile.am b/app/Makefile.am index 674fcb2b34..ecaad105f1 100644 --- a/app/Makefile.am +++ b/app/Makefile.am @@ -178,6 +178,8 @@ gimpconsoleldadd = \ $(PANGOCAIRO_LIBS) \ $(HARFBUZZ_LIBS) \ $(CAIRO_LIBS) \ + $(GIO_UNIX_LIBS) \ + $(GIO_WINDOWS_LIBS) \ $(GEGL_LIBS) \ $(GLIB_LIBS) \ $(GEXIV2_LIBS) \ diff --git a/app/config/Makefile.am b/app/config/Makefile.am index 804629198e..c5772bc3e6 100644 --- a/app/config/Makefile.am +++ b/app/config/Makefile.am @@ -14,6 +14,8 @@ AM_CPPFLAGS = \ -I$(top_srcdir) \ -I$(top_builddir)/app \ -I$(top_srcdir)/app \ + $(GIO_UNIX_CFLAGS) \ + $(GIO_WINDOWS_CFLAGS) \ $(GEGL_CFLAGS) \ $(CAIRO_CFLAGS) \ $(GDK_PIXBUF_CFLAGS) \ diff --git a/app/config/gimpconfig-dump.c b/app/config/gimpconfig-dump.c index 1de633011a..8f3decd1a6 100644 --- a/app/config/gimpconfig-dump.c +++ b/app/config/gimpconfig-dump.c @@ -23,22 +23,20 @@ #include #include -#ifdef HAVE_UNISTD_H -#include -#endif - #include #include #include +#ifdef G_OS_WIN32 +#include +#else +#include +#endif + #include "libgimpbase/gimpbase.h" #include "libgimpcolor/gimpcolor.h" #include "libgimpconfig/gimpconfig.h" -#ifdef G_OS_WIN32 -#include "libgimpbase/gimpwin32-io.h" -#endif - #include "config-types.h" #include "gimpconfig-dump.h" @@ -48,23 +46,31 @@ static void dump_gimprc_system (GimpConfig *rc, GimpConfigWriter *writer, - gint fd); + GOutputStream *output); static void dump_gimprc_manpage (GimpConfig *rc, GimpConfigWriter *writer, - gint fd); + GOutputStream *output); static gchar * dump_describe_param (GParamSpec *param_spec); -static void dump_with_linebreaks (gint fd, +static void dump_with_linebreaks (GOutputStream *output, const gchar *text); gboolean gimp_config_dump (GimpConfigDumpFormat format) { + GOutputStream *output; GimpConfigWriter *writer; GimpConfig *rc; rc = g_object_new (GIMP_TYPE_RC, NULL); - writer = gimp_config_writer_new_fd (1); + +#ifdef G_OS_WIN32 + output = g_win32_output_stream_new ((gpointer) 1, FALSE); +#else + output = g_unix_output_stream_new (1, FALSE); +#endif + + writer = gimp_config_writer_new_stream (output, NULL, NULL); switch (format) { @@ -80,15 +86,16 @@ gimp_config_dump (GimpConfigDumpFormat format) break; case GIMP_CONFIG_DUMP_GIMPRC_SYSTEM: - dump_gimprc_system (rc, writer, 1); + dump_gimprc_system (rc, writer, output); break; case GIMP_CONFIG_DUMP_GIMPRC_MANPAGE: - dump_gimprc_manpage (rc, writer, 1); + dump_gimprc_manpage (rc, writer, output); break; } gimp_config_writer_finish (writer, NULL, NULL); + g_object_unref (output); g_object_unref (rc); return TRUE; @@ -113,7 +120,7 @@ static const gchar system_gimprc_header[] = static void dump_gimprc_system (GimpConfig *rc, GimpConfigWriter *writer, - gint fd) + GOutputStream *output) { GObjectClass *klass; GParamSpec **property_specs; @@ -244,14 +251,15 @@ static const gchar man_page_footer[] = static void dump_gimprc_manpage (GimpConfig *rc, GimpConfigWriter *writer, - gint fd) + GOutputStream *output) { GObjectClass *klass; GParamSpec **property_specs; guint n_property_specs; guint i; - write (fd, man_page_header, strlen (man_page_header)); + gimp_output_stream_printf (output, NULL, NULL, NULL, + "%s", man_page_header); klass = G_OBJECT_GET_CLASS (rc); property_specs = g_object_class_list_properties (klass, &n_property_specs); @@ -267,16 +275,20 @@ dump_gimprc_manpage (GimpConfig *rc, if (prop_spec->flags & GIMP_CONFIG_PARAM_IGNORE) continue; - write (fd, ".TP\n", strlen (".TP\n")); + gimp_output_stream_printf (output, NULL, NULL, NULL, + ".TP\n"); if (gimp_config_serialize_property (rc, prop_spec, writer)) { - write (fd, "\n", 1); + gimp_output_stream_printf (output, NULL, NULL, NULL, + "\n"); desc = dump_describe_param (prop_spec); - dump_with_linebreaks (fd, desc); - write (fd, "\n", 1); + dump_with_linebreaks (output, desc); + + gimp_output_stream_printf (output, NULL, NULL, NULL, + "\n"); g_free (desc); } @@ -284,8 +296,10 @@ dump_gimprc_manpage (GimpConfig *rc, g_free (property_specs); - write (fd, man_page_path, strlen (man_page_path)); - write (fd, man_page_footer, strlen (man_page_footer)); + gimp_output_stream_printf (output, NULL, NULL, NULL, + "%s", man_page_path); + gimp_output_stream_printf (output, NULL, NULL, NULL, + "%s", man_page_footer); } @@ -495,8 +509,8 @@ dump_describe_param (GParamSpec *param_spec) #define LINE_LENGTH 78 static void -dump_with_linebreaks (gint fd, - const gchar *text) +dump_with_linebreaks (GOutputStream *output, + const gchar *text) { gint len = strlen (text); @@ -507,7 +521,8 @@ dump_with_linebreaks (gint fd, /* groff doesn't like lines to start with a single quote */ if (*text == '\'') - write (fd, "\\&", 2); /* this represents a zero width space */ + gimp_output_stream_printf (output, NULL, NULL, NULL, + "\\&"); /* a zero width space */ for (t = text, i = 0, space = 0; *t != '\n' && (i <= LINE_LENGTH || space == 0) && i < len; @@ -520,11 +535,13 @@ dump_with_linebreaks (gint fd, if (i > LINE_LENGTH && space && *t != '\n') i = space; - write (fd, text, i); - write (fd, "\n", 1); + g_output_stream_write_all (output, text, i, NULL, NULL, NULL); + gimp_output_stream_printf (output, NULL, NULL, NULL, + "\n"); if (*t == '\n') - write (fd, ".br\n", 4); + gimp_output_stream_printf (output, NULL, NULL, NULL, + ".br\n"); i++;