Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37591006
en ru br
ALT Linux repos
S:0.97.4-alt0.9
5.0: 0.97-alt2
4.1: 0.96.1-alt3.1
4.0: 0.96.1-alt1
3.0: 0.94-alt9cvs20050730

Other repositories
Upstream:0.96-pre9

Group :: Office
RPM: dia

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs and FR  Repocop 

Patch: dia-0.94-alt.patch
Download


Index: app/app_procs.c
===================================================================
RCS file: /cvs/gnome/dia/app/app_procs.c,v
retrieving revision 1.166
diff -u -r1.166 app_procs.c
--- app/app_procs.c	3 Jul 2005 17:55:49 -0000	1.166
+++ app/app_procs.c	30 Jul 2005 08:32:43 -0000
@@ -151,9 +151,8 @@
   
   vsprintf (buf, fmt, *args2);
   
-  fprintf(stderr,
-          "%s: %s\n", 
-          title,buf);
+  g_error ("%s: %s\n", title,buf);
+
 }
 
 #ifdef GNOME
@@ -194,19 +193,23 @@
 }
 #endif
 
-char *
-build_output_file_name(const char *infname, const char *format)
+/** Return an filename with new extension.
+ * The value returned is newly allocated. 
+ */
+gchar *
+build_filename_extension(const gchar *infname, const gchar *extension)
 {
-  /* FIXME: probably overly confident... */
-  char *p = strrchr(infname,'.');
-  char *tmp;
-  if (!p) {
-    return g_strconcat(infname,".",format,NULL);
-  }
-  tmp = g_malloc0(strlen(infname)+1+strlen(format)+1);
-  memcpy(tmp,infname,p-infname);
-  strcat(tmp,".");
-  strcat(tmp,format);
+  gchar *tmp, *last_dot;
+  gchar *filename;
+  if (infname == NULL || infname[0] == '\0' ||
+      infname[0] == '.' || extension == NULL)
+    return NULL;
+  filename = g_strdup(infname);
+  last_dot = g_strrstr(filename, ".");
+  if (last_dot)
+    *last_dot='\0';
+  tmp = g_strconcat(filename,".",extension,NULL);
+  g_free(filename);
   return tmp;
 }
 
@@ -372,9 +375,9 @@
  */
 static gboolean
 do_convert(const char *infname, 
-	   const char *outfname, DiaExportFilter *ef,
-	   const char *size,
-	   char *show_layers)
+	   const gchar *outfname, DiaExportFilter *ef,
+	   const gchar *size,
+	   gchar *show_layers)
 {
   DiaImportFilter *inf;
   DiagramData *diagdata = NULL;
@@ -387,7 +390,7 @@
     ef = filter_guess_export_filter(outfname);
     if (!ef) {
       g_error(_("%s error: don't know how to export into %s\n"),
-	      argv0,outfname);
+	      dia_message_filename(argv0), dia_message_filename(outfname));
       exit(1);
     }
   }
@@ -396,7 +399,7 @@
 
   if (0==strcmp(infname,outfname)) {
     g_error(_("%s error: input and output file name is identical: %s"),
-            argv0, infname);
+            dia_message_filename(argv0), dia_message_filename(infname));
     exit(1);
   }
   
@@ -404,7 +407,7 @@
 
   if (!inf->import_func(infname,diagdata,inf->user_data)) {
     g_error(_("%s error: need valid input file %s\n"),
-            argv0, infname);
+            dia_message_filename(argv0), dia_message_filename(infname));
     exit(1);
   }
 
@@ -427,9 +430,8 @@
   }
   else
     ef->export_func(diagdata, outfname, infname, ef->user_data);
-  /* if (!quiet) */ fprintf(stdout,
-                      _("%s --> %s\n"),
-                        infname,outfname);
+  g_print(_("%s --> %s\n"),
+          dia_message_filename(infname),dia_message_filename(outfname));
   g_object_unref(diagdata);
   return TRUE;
 }
@@ -563,7 +565,7 @@
     DiaExportFilter *ef = NULL;
 
     /* First try guessing based on extension */
-    export_file_name = build_output_file_name(in_file_name,
+    export_file_name = build_filename_extension(in_file_name,
 					      export_file_format);
 
     /* to make the --size hack even uglier but work again for the only filter supporting it */
@@ -578,7 +580,7 @@
 	return FALSE;
       }
       g_free (export_file_name);
-      export_file_name = build_output_file_name(in_file_name,
+      export_file_name = build_filename_extension(in_file_name,
 						ef->extensions[0]);
     }
     made_conversions |= do_convert(in_file_name,
@@ -748,9 +750,13 @@
   argv0 = (argc > 0) ? argv[0] : "(none)";
 
   gtk_set_locale();
+  /* Hack for correct export formats with float numbers in text */
   setlocale(LC_NUMERIC, "C");
   
   bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
+#if defined ENABLE_NLS && defined HAVE_BIND_TEXTDOMAIN_CODESET
+  bind_textdomain_codeset(GETTEXT_PACKAGE,"UTF-8");  
+#endif
   textdomain(GETTEXT_PACKAGE);
 
   process_opts(argc, argv, 
@@ -760,12 +766,8 @@
                &files,
 	     &export_file_name, &export_file_format, &size, &show_layers, &nosplash);
 
-#if defined ENABLE_NLS && defined HAVE_BIND_TEXTDOMAIN_CODESET
-  bind_textdomain_codeset(GETTEXT_PACKAGE,"UTF-8");  
-#endif
-  textdomain(GETTEXT_PACKAGE);
 
-  if (argv && dia_is_interactive && !version) {
+  if (argv && app_is_interactive() && !version) {
 #ifdef GNOME
     GnomeProgram *program =
       gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE,
@@ -809,16 +811,16 @@
   if (version) {
 #if (defined __TIME__) && (defined __DATE__)
     /* TRANSLATOR: 2nd and 3rd %s are time and date respectively. */
-    printf(g_locale_from_utf8(_("Dia version %s, compiled %s %s\n"), -1, NULL, NULL, NULL), VERSION, __TIME__, __DATE__);
+    g_print(_("Dia version %s, compiled %s %s\n"), VERSION, __TIME__, __DATE__);
 #else
-    printf(g_locale_from_utf8(_("Dia version %s\n"), -1, NULL, NULL, NULL), VERSION);
+    g_print(_("Dia version %s\n"), VERSION);
 #endif
     if (verbose)
       dump_dependencies();
     exit(0);
   }
 
-  if (!dia_is_interactive)
+  if (!app_is_interactive())
     log_to_stderr = TRUE;
   else {
 #ifdef G_OS_WIN32
@@ -839,7 +841,7 @@
 
   stdprops_init();
 
-  if (dia_is_interactive) {
+  if (app_is_interactive()) {
     dia_image_init();
 
     gdk_rgb_init();
@@ -849,13 +851,9 @@
     if (!nosplash) {
       app_splash_init("");
     }
-  }
 
-  if (dia_is_interactive)
     create_user_dirs();
-
-  /* Init cursors: */
-  if (dia_is_interactive) {
+    /* Init cursors: */
     color_init();
     default_cursor = gdk_cursor_new(GDK_LEFT_PTR);
     ddisplay_set_all_cursor(default_cursor);
@@ -885,7 +883,7 @@
   /** Must load prefs after persistence */
   prefs_init();
 
-  if (dia_is_interactive) {
+  if (app_is_interactive()) {
 
     /* further initialization *before* reading files */  
     active_tool = create_modify_tool();
@@ -915,7 +913,7 @@
 
   made_conversions = handle_all_diagrams(files, export_file_name,
 					 export_file_format, size, show_layers);
-  if (dia_is_interactive && files == NULL) {
+  if (app_is_interactive() && files == NULL) {
     gchar *filename = g_filename_from_utf8(_("Diagram1.dia"), -1, NULL, NULL, NULL);
     Diagram *diagram = new_diagram (filename);
     g_free(filename);
@@ -1020,7 +1018,7 @@
   }
   
   /* save pluginrc */
-  if (dia_is_interactive)
+  if (app_is_interactive())
     dia_pluginrc_write();
 
   gtk_main_quit();
@@ -1102,7 +1100,6 @@
   return DIA_PLUGIN_INIT_OK;
 }
 
-/* Note: running in locale encoding */
 static void
 process_opts(int argc, char **argv,
 #if USE_GOPTION
@@ -1120,7 +1117,7 @@
   poptSetOtherOptionHelp(poptCtx, _("[OPTION...] [FILE...]"));
   while (rc >= 0) {
     if((rc = poptGetNextOpt(poptCtx)) < -1) {
-      fprintf(stderr,_("Error on option %s: %s.\nRun '%s --help' to see a full list of available command line options.\n"),
+      g_error(_("Error on option %s: %s.\nRun '%s --help' to see a full list of available command line options.\n"),
 	      poptBadOption(poptCtx, 0),
 	      poptStrerror(rc),
 	      argv[0]);
@@ -1151,10 +1148,10 @@
       g_option_context_add_group (context, gtk_get_option_group (FALSE));
 #  endif
       if (!g_option_context_parse (context, &argc, &argv, &error)) {
-	g_print (error->message);
-	g_error_free (error);
+        g_print (error->message);
+        g_error_free (error);
         g_option_context_free(context);
-	exit(0);
+        exit(0);
       }
       if (argc < 2) {
         g_option_context_free(context);
@@ -1218,11 +1215,17 @@
   GSList *node = NULL;
   gboolean made_conversions = FALSE;
 
+#if GLIB_CHECK_VERSION(2,5,5)
+  export_file_name = g_filename_from_utf8(export_file_name, -1, NULL, NULL, NULL);
+#endif
   for (node = files; node; node = node->next) {
     made_conversions |=
       handle_initial_diagram(node->data, export_file_name,
 			     export_file_format, size, show_layers);
   }
+#if GLIB_CHECK_VERSION(2,5,5)
+  free(export_file_name);
+#endif
   return made_conversions;
 }
 
Index: app/app_procs.h
===================================================================
RCS file: /cvs/gnome/dia/app/app_procs.h,v
retrieving revision 1.12
diff -u -r1.12 app_procs.h
--- app/app_procs.h	5 Mar 2005 18:57:39 -0000	1.12
+++ app/app_procs.h	30 Jul 2005 08:32:43 -0000
@@ -28,7 +28,7 @@
 gboolean app_exit(void);
 int app_is_embedded(void);
 
-char *build_output_file_name(const char *infname, const char *format);
+gchar *build_filename_extension(const gchar *infname, const gchar *extension);
 
 void app_splash_init(const gchar* name);
 void app_splash_done(void);
Index: app/commands.c
===================================================================
RCS file: /cvs/gnome/dia/app/commands.c,v
retrieving revision 1.134
diff -u -r1.134 commands.c
--- app/commands.c	10 Jun 2005 15:58:24 -0000	1.134
+++ app/commands.c	30 Jul 2005 08:32:43 -0000
@@ -131,11 +131,32 @@
   Diagram *dia;
   DDisplay *ddisp;
   static int untitled_nr = 1;
-  char buffer[24];
-
-  g_snprintf(buffer, 24, _("Diagram%d.dia"), untitled_nr++);
-  
-  dia = new_diagram(buffer);
+  char *buffer;
+  char *filename;
+  GList *list;
+  gboolean flag;
+  for(flag = TRUE; flag ; ) {
+    flag = FALSE;
+    buffer = g_strdup_printf(_("Diagram%d.dia"), untitled_nr++);
+    list = dia_open_diagrams();
+    while (list != NULL) {
+      Diagram *dia = (Diagram *)list->data;
+      gchar *name = diagram_get_name(dia);
+      if (0 == strcmp(name,buffer))
+      {
+        flag = TRUE;
+        g_free(name);
+	g_free(buffer);
+        break;
+      }
+      g_free(name);
+      list = g_list_next(list);
+    }
+  } 
+  filename = g_filename_from_utf8(buffer, -1, NULL, NULL, NULL);
+  g_free(buffer);
+  dia = new_diagram(filename);
+  g_free(filename);
   ddisp = new_display(dia);
   diagram_tree_add(diagram_tree(), dia);
 }
Index: app/diaconv.c
===================================================================
RCS file: /cvs/gnome/dia/app/diaconv.c,v
retrieving revision 1.8
diff -u -r1.8 diaconv.c
--- app/diaconv.c	19 Jan 2004 19:51:30 -0000	1.8
+++ app/diaconv.c	30 Jul 2005 08:32:43 -0000
@@ -212,7 +212,7 @@
     
     while (in_file_name) {
       g_message("in_file_name = %s",in_file_name);
-      export_file_name = build_output_file_name(in_file_name,
+      export_file_name = build_file_name_extension(in_file_name,
                                                 export_file_format);
       g_message("export_file_name = %s",export_file_name);
       do_convert(in_file_name, export_file_name, NULL);
Index: app/diagram.c
===================================================================
RCS file: /cvs/gnome/dia/app/diagram.c,v
retrieving revision 1.101
diff -u -r1.101 diagram.c
--- app/diagram.c	19 Jul 2005 21:04:14 -0000	1.101
+++ app/diagram.c	30 Jul 2005 08:32:44 -0000
@@ -58,7 +58,7 @@
 
 
 static void diagram_class_init (DiagramClass *klass);
-static gboolean diagram_init(Diagram *obj, const char *filename);
+static gboolean diagram_init(Diagram *obj, const gchar *filename);
 
 enum {
   SELECTION_CHANGED,
@@ -115,8 +115,7 @@
 
   diagram_cleanup_autosave(dia);
 
-  if (dia->filename)
-    g_free(dia->filename);
+  g_free(dia->filename);
   dia->filename = NULL;
 
   G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -177,7 +176,7 @@
  * encoding.
  */
 static gboolean
-diagram_init(Diagram *dia, const char *filename)
+diagram_init(Diagram *dia, const gchar *filename)
 {
   gchar *newfilename = NULL;
   GError *error = NULL;
@@ -243,7 +242,7 @@
 
 int
 diagram_load_into(Diagram         *diagram,
-		  const char      *filename,
+		  const gchar      *filename,
 		  DiaImportFilter *ifilter)
 {
   if (!ifilter)
@@ -259,7 +258,7 @@
     diagram->unsaved = FALSE;
     diagram_set_modified(diagram, FALSE);
     if (app_is_interactive())
-      recent_file_history_add(filename);
+      recent_file_history_add(diagram->filename);
     diagram_tree_add(diagram_tree(), diagram);
     return TRUE;
   } else
@@ -267,7 +266,7 @@
 }
 
 Diagram *
-diagram_load(const char *filename, DiaImportFilter *ifilter)
+diagram_load(const gchar *filename, DiaImportFilter *ifilter)
 {
   Diagram *diagram;
 
@@ -288,7 +287,7 @@
  * a legal string in the current encoding, return NULL.
  */
 Diagram *
-new_diagram(const char *filename)  /* Note: filename is copied */
+new_diagram(const gchar *filename)  /* Note: filename is copied */
 {
   Diagram *dia = g_object_new(DIA_TYPE_DIAGRAM, NULL);
 
@@ -1346,14 +1345,18 @@
 }
 
 void
-diagram_set_filename(Diagram *dia, const char *filename)
+diagram_set_filename(Diagram *dia, const gchar *filename)
 {
   GSList *l;
   DDisplay *ddisp;
-  char *title;
-  
+  gchar *title;
+  gchar *newfilename;
+  /* Make the filename is absolute */
+  newfilename = dia_get_absolute_filename (filename);
   g_free(dia->filename);
-  dia->filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
+  /* Diagram has filename in UTF-8 encoding  */
+  dia->filename = g_filename_to_utf8(newfilename, -1, NULL, NULL, NULL);
+  g_free(newfilename);
 
   title = diagram_get_name(dia);
 
@@ -1369,11 +1372,25 @@
   g_free(title);
 
   layer_dialog_update_diagram_list();
-  recent_file_history_add(filename);
+  recent_file_history_add(dia->filename);
 
   diagram_tree_update_name(diagram_tree(), dia);
 }
 
+/** Returns a string with filename of diagram
+ * in filesystem encoding or NULL if has not filename.
+ * The string should be freed after use.
+ */
+char *
+diagram_get_filename(Diagram *dia)
+{
+  char *tmp;
+  if (dia == NULL || dia->filename == NULL)
+    return NULL;
+  tmp = g_filename_from_utf8(dia->filename, -1, NULL, NULL, NULL);
+  return tmp;
+}
+
 /** Returns a string with a 'sensible' (human-readable) name for the
  * diagram.  The string should be freed after use.
  * This name may or may not be the same as the filename.
@@ -1381,14 +1398,13 @@
 gchar *
 diagram_get_name(Diagram *dia)
 {
-  gchar *title = strrchr(dia->filename, G_DIR_SEPARATOR);
-  if (title==NULL) {
-    title = dia->filename;
-  } else {
-    title++;
-  }
-  
-  return g_strdup(title);
+  gchar *title;
+  if (dia->filename == NULL)
+    title = g_strdup(_("<unnamed>"));
+  else
+    title = g_path_get_basename(dia->filename);
+ 
+  return title;
 }
 
 int diagram_modified_exists(void)
Index: app/diagram.h
===================================================================
RCS file: /cvs/gnome/dia/app/diagram.h,v
retrieving revision 1.40
diff -u -r1.40 diagram.h
--- app/diagram.h	3 Jul 2005 17:55:49 -0000	1.40
+++ app/diagram.h	30 Jul 2005 08:32:44 -0000
@@ -43,12 +43,12 @@
 struct _Diagram {
   DiagramData parent_instance;
 
-  char *filename;
+  gchar *filename;         /* Filename of the diagram in UTF8 encoding */
   int unsaved;            /* True if diagram is created but not saved.*/
   int mollified;
   gboolean autosaved;     /* True if the diagram is autosaved since last mod */
-  char *autosavefilename;     /* Holds the name of the current autosave file
-			       * for this diagram, or NULL.  */
+  gchar *autosavefilename;     /* Holds the name of the current autosave file
+			       * for this diagram in filesystem enc, or NULL.  */
 
   Color pagebreak_color; /*!< just to show page breaks */
   DiaGrid     grid;      /*!< the display grid */
@@ -79,9 +79,9 @@
 
 GList *dia_open_diagrams(void); /* Read only! */
 
-Diagram *diagram_load(const char *filename, DiaImportFilter *ifilter);
-int diagram_load_into (Diagram *dest, const char *filename, DiaImportFilter *ifilter);
-Diagram *new_diagram(const char *filename); /*Note: filename is copied*/
+Diagram *diagram_load(const gchar *filename, DiaImportFilter *ifilter);
+int diagram_load_into (Diagram *dest, const gchar *filename, DiaImportFilter *ifilter);
+Diagram *new_diagram(const gchar *filename); /*Note: filename is copied*/
 /** Perform updates related to getting a new current diagram */
 void diagram_set_current(Diagram *diagram);
 void diagram_destroy(Diagram *dia);
@@ -139,8 +139,9 @@
 void diagram_unparent_selected(Diagram *dia);
 void diagram_unparent_children_selected(Diagram *dia);
 
-void diagram_set_filename(Diagram *dia, const char *filename);
+void diagram_set_filename(Diagram *dia, const gchar *filename);
 gchar *diagram_get_name(Diagram *dia);
+gchar *diagram_get_filename(Diagram *dia);
 
 int diagram_modified_exists(void);
 
Index: app/diapsft2renderer.c
===================================================================
RCS file: /cvs/gnome/dia/app/diapsft2renderer.c,v
retrieving revision 1.10
diff -u -r1.10 diapsft2renderer.c
--- app/diapsft2renderer.c	26 Jun 2005 18:51:15 -0000	1.10
+++ app/diapsft2renderer.c	30 Jul 2005 08:32:44 -0000
@@ -210,12 +210,12 @@
     int glyph_idx;
 
     if (font == NULL) {
-      fprintf(stderr, "No font found\n");
+      g_error("No font found\n");
       continue;
     } 
     ft_face = pango_ft2_font_get_face(font);
     if (ft_face == NULL) {
-      fprintf(stderr, "Failed to get face for font %s\n",
+      g_error("Failed to get face for font %s\n",
 	      pango_font_description_to_string(pango_font_describe(font)));
       continue;
     }
@@ -303,7 +303,7 @@
   fprintf(renderer->file, "start_ol\n");
 
   if ((error=FT_Load_Glyph(face, glyph_index, load_flags))) {
-    fprintf(stderr, "Can't load glyph: %d\n", error);
+    g_error("Can't load glyph: %d\n", error);
     return;
   }
   FT_Get_Glyph (face->glyph, &glyph);
Index: app/display.c
===================================================================
RCS file: /cvs/gnome/dia/app/display.c,v
retrieving revision 1.97
diff -u -r1.97 display.c
--- app/display.c	3 Jul 2005 17:55:49 -0000	1.97
+++ app/display.c	30 Jul 2005 08:32:45 -0000
@@ -182,12 +182,6 @@
   ddisp->display_areas = NULL;
   ddisp->update_id = 0;
 
-  filename = strrchr(dia->filename, G_DIR_SEPARATOR);
-  if (filename==NULL) {
-    filename = dia->filename;
-  } else {
-    filename++;
-  }
 
   diagram_add_ddisplay(dia, ddisp);
   g_signal_connect (dia, "selection_changed", G_CALLBACK(selection_changed), ddisp);
@@ -217,8 +211,10 @@
                     ddisp);
   ddisp->preedit_attrs = NULL;
   
+  filename = diagram_get_name(dia);
   create_display_shell(ddisp, prefs.new_view.width, prefs.new_view.height,
 		       filename, prefs.new_view.use_menu_bar, !embedded);
+  g_free(filename);
   
   ddisplay_update_statusbar (ddisp);
 
@@ -251,7 +247,6 @@
           input_methods_done = TRUE;
       }
   }
-
   return ddisp;  /*  set the user data  */
 }
 
@@ -1004,7 +999,6 @@
   GtkWidget *dialog, *button;
   gchar *fname;
   gchar *msg;
-
   g_return_if_fail(ddisp != NULL);
 
   dia = ddisp->diagram;
@@ -1015,14 +1009,12 @@
     return;
   }
 
-  fname = dia->filename;
-  if (!fname)
-    fname = _("<unnamed>");
+  fname = diagram_get_name(dia);
   msg = g_strdup_printf (
           _("The diagram '%s'\n"
             "has not been saved. Save changes now?"),
 	  fname);
-
+  g_free(fname);
   dialog = gtk_message_dialog_new(GTK_WINDOW (ddisp->shell), 
                                   GTK_DIALOG_MODAL,
                                   GTK_MESSAGE_QUESTION,
Index: app/export_png.c
===================================================================
RCS file: /cvs/gnome/dia/app/export_png.c,v
retrieving revision 1.19
diff -u -r1.19 export_png.c
--- app/export_png.c	11 Jan 2004 21:06:49 -0000	1.19
+++ app/export_png.c	30 Jul 2005 08:32:45 -0000
@@ -131,7 +131,8 @@
 
   fp = fopen(cbdata->filename, "wb");
   if (fp == NULL) {
-    message_error(_("Can't open output file %s: %s\n"), cbdata->filename, strerror(errno));
+    message_error(_("Can't open output file %s: %s\n"),
+                  dia_message_filename(cbdata->filename), g_strerror(errno));
     goto error;
   }
 
Index: app/filedlg.c
===================================================================
RCS file: /cvs/gnome/dia/app/filedlg.c,v
retrieving revision 1.56
diff -u -r1.56 filedlg.c
--- app/filedlg.c	18 Jul 2005 16:35:13 -0000	1.56
+++ app/filedlg.c	30 Jul 2005 08:32:45 -0000
@@ -32,6 +32,7 @@
 #include "intl.h"
 #include "filter.h"
 #include "dia_dirs.h"
+#include "app_procs.h"
 #include "persistence.h"
 #include "display.h"
 #include "message.h"
@@ -149,7 +150,7 @@
                             gint       response, 
                             gpointer   user_data)
 {
-  const char *filename;
+  char *filename;
   Diagram *diagram = NULL;
   DDisplay *ddisp;
 
@@ -158,10 +159,11 @@
 
     if (index >= 0) /* remember it */
       persistence_set_integer ("import-filter", index);
+
     filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(fs));
-    
     diagram = diagram_load(filename, ifilter_by_index (index - 1, filename));
-    
+    g_free(filename);
+
     if (diagram != NULL) {
       diagram_update_extents(diagram);
       layer_dialog_set_diagram(diagram);
@@ -184,7 +186,7 @@
     DDisplay *ddisp;
     Diagram *dia = NULL;
     GtkWindow *parent_window;
-    gchar *filename = NULL;
+    gchar *filename;
     
     /* FIXME: we should not use ddisp_active but instead get the current diagram
      * from caller. Thus we could offer the option to "load into" if invoked by
@@ -207,15 +209,11 @@
 					  NULL);
     gtk_window_set_role(GTK_WINDOW(opendlg), "open_diagram");
     gtk_window_set_position(GTK_WINDOW(opendlg), GTK_WIN_POS_MOUSE);
-    if (dia && dia->filename)
-      filename = g_filename_from_utf8(dia->filename, -1, NULL, NULL, NULL);
-    if (filename != NULL) {
-      char* fnabs = dia_get_absolute_filename (filename);
-      if (fnabs)
-        gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(opendlg), fnabs);
-      g_free(fnabs);
-      g_free(filename);
-    }
+    
+    filename = diagram_get_filename(dia);
+    gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(opendlg), filename);
+    g_free(filename);
+    
     g_signal_connect(GTK_OBJECT(opendlg), "destroy",
 		     G_CALLBACK(gtk_widget_destroyed), &opendlg);
   } else {
@@ -287,26 +285,17 @@
 
     if (stat(filename, &stat_struct) == 0) {
       GtkWidget *dialog = NULL;
-      char buffer[300];
-      char *utf8filename = NULL;
-      if (!g_utf8_validate(filename, -1, NULL)) {
-	utf8filename = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
-	if (utf8filename == NULL) {
-	  message_warning(_("Some characters in the filename are neither UTF-8\n" 
-			    "nor your local encoding.\nSome things will break."));
-	}
-      }
-      if (utf8filename == NULL) utf8filename = g_strdup(filename);
-
-      g_snprintf(buffer, 300,
+      char *buffer;
+      buffer = g_strdup_printf(
 		 _("The file '%s' already exists.\n"
-		   "Do you want to overwrite it?"), utf8filename);
-      g_free(utf8filename);
+		   "Do you want to overwrite it?"),
+		 dia_message_filename(filename));
 
       dialog = gtk_message_dialog_new (GTK_WINDOW(fs),
 				       GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION,
 				       GTK_BUTTONS_YES_NO,
 				       buffer);
+      g_free(buffer);
       gtk_window_set_title (GTK_WINDOW (dialog), _("File already exists"));
       gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
 
@@ -341,7 +330,7 @@
 {
   DDisplay *ddisp;
   Diagram *dia;
-  gchar *filename = NULL;
+  gchar *filename;
 
   ddisp = ddisplay_active();
   if (!ddisp) return;
@@ -394,20 +383,17 @@
       return;
     }
   }
-  if (dia && dia->filename)
-    filename = g_filename_from_utf8(dia->filename, -1, NULL, NULL, NULL);
-  if (filename != NULL) {
-    char* fnabs = dia_get_absolute_filename (filename);
-    if (fnabs) {
-      gchar *base = g_path_get_basename(fnabs);
-      gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(savedlg), fnabs);
+  
+  filename = diagram_get_name(dia);
+  if (filename) {
+      gchar *base = diagram_get_name(dia);
+      gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(savedlg), filename);
       /* FileChooser api insist on exiting files for set_filename  */
       gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(savedlg), base);
-      g_free(base);
-    }
-    g_free(fnabs);
-    g_free(filename);
+	  g_free(base);
+      g_free(filename);
   }
+  
   g_object_ref(dia);
   gtk_object_set_user_data(GTK_OBJECT(savedlg), dia);
 
@@ -430,7 +416,7 @@
   if (diagram->unsaved) {
     file_save_as_callback(data, action, widget);
   } else {
-    gchar *filename = g_filename_from_utf8(diagram->filename, -1, NULL, NULL, NULL);
+    gchar *filename = diagram_get_filename(diagram);
     diagram_update_extents(diagram);
     diagram_save(diagram, filename);
     g_free (filename);
@@ -462,24 +448,16 @@
 {
   int index = gtk_combo_box_get_active (GTK_COMBO_BOX(widget)) - 1; /* Ignore "By Extension" */
   DiaExportFilter *efilter = efilter_by_index (index, NULL);
-  GString *s;
-  const gchar *text = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(exportdlg));
-  const gchar *last_dot = text ? strrchr(text, '.') : NULL;
-  gchar *basename = NULL;
-
-  if (!efilter || last_dot == text || text[0] == '\0' ||
-      efilter->extensions[0] == NULL)
+  gchar *s;
+  gchar *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(exportdlg));
+  if (filename == NULL || efilter == NULL)
     return;
-  basename = g_path_get_basename (text);
-  last_dot = strrchr(basename, '.');
-  s = g_string_new(basename);
-  if (last_dot)
-    g_string_truncate(s, last_dot-basename);
-  g_string_append(s, ".");
-  g_string_append(s, efilter->extensions[0]);
-  gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(exportdlg), s->str);
-  g_string_free (s, TRUE);
-  g_free (basename);
+  s = build_filename_extension(filename, efilter->extensions[0]);
+  g_free (filename);
+  filename = g_path_get_basename(s);
+  g_free (s);
+  gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(exportdlg), dia_message_filename(filename));
+  g_free (filename);
 }
 
 /**
@@ -534,9 +512,8 @@
 
     if (stat(filename, &statbuf) == 0) {
       GtkWidget *dialog = NULL;
-      char buffer[300];
-
-      g_snprintf(buffer, 300,
+      char *buffer;
+      buffer=g_strdup_printf(
 		 _("The file '%s' already exists.\n"
 		   "Do you want to overwrite it?"), dia_message_filename(filename));
       dialog = gtk_message_dialog_new (GTK_WINDOW(fs),
@@ -544,6 +521,7 @@
 				       GTK_MESSAGE_QUESTION,
 				       GTK_BUTTONS_YES_NO,
 				       buffer);
+      g_free(buffer);
       gtk_window_set_title (GTK_WINDOW (dialog), _("File already exists"));
       gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
 
@@ -562,8 +540,10 @@
     if (!ef)
       ef = filter_guess_export_filter(filename);
     if (ef) {
+      gchar *diafilename = diagram_get_filename(dia);
       g_object_ref(dia->data);
-      ef->export_func(dia->data, filename, dia->filename, ef->user_data);
+      ef->export_func(dia->data, filename, diafilename, ef->user_data);
+      g_free(diafilename);
       g_object_unref(dia->data);
     } else
       message_error(_("Could not determine which export filter\n"
@@ -571,6 +551,7 @@
   }
   g_object_unref (dia); /* drop our diagram reference */
   gtk_widget_destroy(exportdlg);
+
 }
 
 /**
@@ -581,7 +562,7 @@
 {
   DDisplay *ddisp;
   Diagram *dia;
-  gchar *filename = NULL;
+  gchar *filename;
 
   ddisp = ddisplay_active();
   if (!ddisp) return;
@@ -647,8 +628,7 @@
   gtk_object_set_user_data(GTK_OBJECT(exportdlg), dia);
   gtk_widget_set_sensitive(exportdlg, TRUE);
 
-  if (dia && dia->filename)
-    filename = g_filename_from_utf8(dia->filename, -1, NULL, NULL, NULL);
+  filename = diagram_get_filename(dia);
   if (filename != NULL) {
     char* fnabs = dia_get_absolute_filename (filename);
     if (fnabs) {
@@ -663,6 +643,7 @@
     g_free(fnabs);
     g_free(filename);
   }
+
   export_set_extension(GTK_WIDGET(g_object_get_data(G_OBJECT(exportdlg), 
 						    "export-menu")));
 
Index: app/layer_dialog.c
===================================================================
RCS file: /cvs/gnome/dia/app/layer_dialog.c,v
retrieving revision 1.40
diff -u -r1.40 layer_dialog.c
--- app/layer_dialog.c	20 May 2005 18:00:03 -0000	1.40
+++ app/layer_dialog.c	30 Jul 2005 08:32:46 -0000
@@ -477,7 +477,7 @@
   GtkWidget *menu_item;
   GList *dia_list;
   Diagram *dia;
-  char *filename;
+  gchar *filename;
   int i;
   int current_nr;
 
@@ -500,15 +500,10 @@
     if (dia == layer_dialog->diagram) {
       current_nr = i;
     }
-    
-    filename = strrchr(dia->filename, G_DIR_SEPARATOR);
-    if (filename==NULL) {
-      filename = dia->filename;
-    } else {
-      filename++;
-    }
+    filename = diagram_get_name(dia);
 
     menu_item = gtk_menu_item_new_with_label(filename);
+    g_free(filename);
 
     g_signal_connect (GTK_OBJECT (menu_item), "activate",
 			(GtkSignalFunc) layer_dialog_select_diagram_callback,
Index: app/load_save.c
===================================================================
RCS file: /cvs/gnome/dia/app/load_save.c,v
retrieving revision 1.72
diff -u -r1.72 load_save.c
--- app/load_save.c	18 Jul 2005 16:35:13 -0000	1.72
+++ app/load_save.c	30 Jul 2005 08:32:46 -0000
@@ -40,6 +40,7 @@
 #include "load_save.h"
 #include "group.h"
 #include "diagramdata.h"
+#include "dia_dirs.h"
 #include "message.h"
 #include "preferences.h"
 #include "diapagelayout.h"
@@ -67,16 +68,16 @@
 			     gpointer       value,
 			     gpointer       user_data);
 static xmlNodePtr find_node_named (xmlNodePtr p, const char *name);
-static gboolean diagram_data_load(const char *filename, DiagramData *data,
+static gboolean diagram_data_load(const gchar *filename, DiagramData *data,
 				  void* user_data);
 static gboolean write_objects(GList *objects, xmlNodePtr objects_node,
 			      GHashTable *objects_hash, int *obj_nr, 
 			      const char *filename);
 static gboolean write_connections(GList *objects, xmlNodePtr layer_node,
 				  GHashTable *objects_hash);
-static xmlDocPtr diagram_data_write_doc(DiagramData *data, const char *filename);
-static int diagram_data_raw_save(DiagramData *data, const char *filename);
-static int diagram_data_save(DiagramData *data, const char *filename);
+static xmlDocPtr diagram_data_write_doc(DiagramData *data, const gchar *filename);
+static int diagram_data_raw_save(DiagramData *data, const gchar *filename);
+static int diagram_data_save(DiagramData *data, const gchar *filename);
 
 
 static void
@@ -332,7 +333,7 @@
 }
 
 static gboolean
-diagram_data_load(const char *filename, DiagramData *data, void* user_data)
+diagram_data_load(const gchar *filename, DiagramData *data, void* user_data)
 {
   GHashTable *objects_hash;
   int fd;
@@ -749,7 +750,7 @@
 
 /* Filename seems to be junk, but is passed on to objects */
 static xmlDocPtr
-diagram_data_write_doc(DiagramData *data, const char *filename)
+diagram_data_write_doc(DiagramData *data, const gchar *filename)
 {
   xmlDocPtr doc;
   xmlNodePtr tree;
@@ -868,7 +869,7 @@
  * Returns >= 0 on success.
  * Only for internal use. */
 static int
-diagram_data_raw_save(DiagramData *data, const char *filename)
+diagram_data_raw_save(DiagramData *data, const gchar *filename)
 {
   xmlDocPtr doc;
   int ret;
@@ -883,10 +884,10 @@
 
 /** This saves the diagram, using a backup in case of failure */
 static int
-diagram_data_save(DiagramData *data, const char *filename)
+diagram_data_save(DiagramData *data, const gchar *filename)
 {
   FILE *file;
-  char *bakname,*tmpname,*dirname,*p;
+  gchar *bakname,*tmpname,*dirname,*p;
   int mode,_umask;
   int fildes;
   int ret;
@@ -915,7 +916,7 @@
 
   if (file==NULL) {
     message_error(_("Can't open output file %s: %s\n"), 
-		  dia_message_filename(tmpname), strerror(errno));
+		  dia_message_filename(tmpname), g_strerror(errno));
     return FALSE;
   }
   fclose(file);
@@ -943,7 +944,7 @@
 }
 
 int
-diagram_save(Diagram *dia, const char *filename)
+diagram_save(Diagram *dia, const gchar *filename)
 {
   gboolean res = diagram_data_save(dia->data, filename);
 
@@ -966,18 +967,18 @@
 void
 diagram_cleanup_autosave(Diagram *dia)
 {
-  gchar *savefile;
+  gchar *tmp;
+  gchar *savefile = dia->autosavefilename;
   struct stat statbuf;
 
-  savefile = dia->autosavefilename;
   if (savefile == NULL) return;
-  g_print("Cleaning up autosave %s for %s\n", 
-          savefile, dia->filename ? dia->filename : "<no name>");
-
+  g_print(_("Cleaning up autosave %s for %s\n"), 
+          dia_message_filename(savefile),
+	  dia_message_filename(diagram_get_filename(dia)));
   if (stat(savefile, &statbuf) == 0) { /* Success */
     unlink(savefile);
   }
-  g_free(savefile);
+  g_free(dia->autosavefilename);
   dia->autosavefilename = NULL;
   dia->autosaved = FALSE;
 }
@@ -988,7 +989,7 @@
 void
 diagram_autosave(Diagram *dia)
 {
-  gchar *save_filename;
+  gchar *savefile;
 
   /* Must check if the diagram is still valid, or Death Ensues! */
   GList *diagrams = dia_open_diagrams();
@@ -998,12 +999,12 @@
     if (diagram == dia &&
 	diagram_is_modified(diagram) && 
 	!diagram->autosaved) {
-      save_filename = g_strdup_printf("%s.autosave", dia->filename);
-
-      if (dia->autosavefilename != NULL) 
-	g_free(dia->autosavefilename);
-      dia->autosavefilename = save_filename;
-      diagram_data_raw_save(dia->data, save_filename);
+      gchar *tmp = diagram_get_filename(dia);
+      savefile = g_strdup_printf("%s.autosave", tmp);
+      g_free(tmp);
+      g_free(dia->autosavefilename);
+      dia->autosavefilename = savefile;
+      diagram_data_raw_save(dia->data, savefile);
       dia->autosaved = TRUE;
       return;
     }
Index: app/paginate_psprint.c
===================================================================
RCS file: /cvs/gnome/dia/app/paginate_psprint.c,v
retrieving revision 1.45
diff -u -r1.45 paginate_psprint.c
--- app/paginate_psprint.c	3 Jul 2005 17:55:49 -0000	1.45
+++ app/paginate_psprint.c	30 Jul 2005 08:32:46 -0000
@@ -29,6 +29,7 @@
 #include <errno.h>
 
 #include "intl.h"
+#include "dia_dirs.h"
 #include "message.h"
 #include "diagram.h"
 #include "diagramdata.h"
@@ -391,11 +392,12 @@
   
   if (!file) {
     if (is_pipe) {
-      message_warning(_("Could not run command '%s': %s"), printcmd, strerror(errno));
+      message_warning(_("Could not run command '%s': %s"),
+                      dia_message_filename(printcmd), g_strerror(errno));
       g_free(printcmd);
     } else
       message_warning(_("Could not open '%s' for writing: %s"),
-		      gtk_entry_get_text(GTK_ENTRY(ofile)), strerror(errno));
+		      gtk_entry_get_text(GTK_ENTRY(ofile)), g_strerror(errno));
     gtk_widget_destroy(dialog);
     return;
   }
@@ -411,8 +413,8 @@
   if (is_pipe) {
     int exitval = pclose(file);
     if (exitval != 0) {
-      message_error(_("Printing error: command '%s' returned %d\n"),
-		    printcmd, exitval);
+      message_error("Printing error: command '%s' returned %d\n",
+		    dia_message_filename(printcmd), exitval);
     }
   } else
     fclose(file);
@@ -422,8 +424,8 @@
   signal(SIGPIPE, old_action);
 #endif
   if (sigpipe_received)
-    message_error(_("Printing error: command '%s' caused sigpipe."),
-		  printcmd);
+    message_error("Printing error: command '%s' caused sigpipe.",
+		  dia_message_filename(printcmd));
 
   if (is_pipe) g_free(printcmd);
 }
Index: app/recent_files.c
===================================================================
RCS file: /cvs/gnome/dia/app/recent_files.c,v
retrieving revision 1.19
diff -u -r1.19 recent_files.c
--- app/recent_files.c	26 Jun 2005 18:51:15 -0000	1.19
+++ app/recent_files.c	30 Jul 2005 08:32:46 -0000
@@ -156,15 +156,11 @@
  * moving them.
  */
 void
-recent_file_history_add(const char *fname)
+recent_file_history_add(const gchar *filename)
 {
-    gchar *absname = dia_get_absolute_filename(fname);
-	gchar *filename = g_filename_to_utf8(absname, -1, NULL, NULL, NULL);
+    /* filename is already in UTF-8 and has absolute path */
     recent_file_history_clear_menu();
     persistent_list_add("recent-files", filename);
-    g_free(absname);
-    g_free(filename);
-    
     recent_file_history_make_menu();
 }
 
@@ -185,15 +181,12 @@
 /* remove a broken file from the history and update menu accordingly
  * Xing Wang, 2002.06 */
 void
-recent_file_history_remove (const char *fname) 
+recent_file_history_remove (const gchar *filename) 
 {
-    gchar *absname = dia_get_absolute_filename(fname);
-	gchar *filename = g_filename_to_utf8(absname, -1, NULL, NULL, NULL);
+    /* filename is already in UTF-8 and has absolute path */
     recent_file_history_clear_menu();
 
     persistent_list_remove("recent-files", filename);
-    g_free(absname);
-    g_free(filename);
 
     recent_file_history_make_menu();
 }
@@ -203,7 +196,8 @@
 {
 	DiaImportFilter *ifilter = NULL;
 	Diagram *diagram = NULL;
-	gchar *filename = g_filename_from_utf8((gchar *)data, -1, NULL, NULL, NULL);
+	gchar *utf8filename = (gchar *)data;
+	gchar *filename = g_filename_from_utf8(utf8filename, -1, NULL, NULL, NULL);
 
 	ifilter = filter_guess_import_filter(filename);
 	
@@ -213,6 +207,6 @@
 	    layer_dialog_set_diagram(diagram);
 	    new_display(diagram);
 	} else
-	    recent_file_history_remove (filename);
+	    recent_file_history_remove (utf8filename);
 	g_free(filename);
 }
Index: app/render_eps.c
===================================================================
RCS file: /cvs/gnome/dia/app/render_eps.c,v
retrieving revision 1.74
diff -u -r1.74 render_eps.c
--- app/render_eps.c	18 Jul 2005 16:35:13 -0000	1.74
+++ app/render_eps.c	30 Jul 2005 08:32:46 -0000
@@ -57,6 +57,7 @@
 
 #include "intl.h"
 #include "render_eps.h"
+#include "dia_dirs.h"
 #include "message.h"
 #include "diagramdata.h"
 #include "font.h"
@@ -101,7 +102,7 @@
   outfile = fopen(filename, "w");
   if (outfile == NULL) {
     message_error(_("Can't open output file %s: %s\n"), 
-		  dia_message_filename(filename), strerror(errno));
+		  dia_message_filename(filename), g_strerror(errno));
     g_object_unref(renderer);
     return;
   }
Index: app/sheets_dialog_callbacks.c
===================================================================
RCS file: /cvs/gnome/dia/app/sheets_dialog_callbacks.c,v
retrieving revision 1.23
diff -u -r1.23 sheets_dialog_callbacks.c
--- app/sheets_dialog_callbacks.c	18 Jul 2005 16:35:13 -0000	1.23
+++ app/sheets_dialog_callbacks.c	30 Jul 2005 08:32:47 -0000
@@ -806,7 +806,7 @@
     if (stat(file_name, &stat_buf) == -1)
     {
       message_error(_("Error examining %s: %s"), 
-		    dia_message_filename(file_name), strerror(errno));
+		    dia_message_filename(file_name), g_strerror(errno));
       g_free(file_name);
       return;
     }
@@ -1594,14 +1594,14 @@
   if ((fp_src = fopen(src, "rb")) == NULL)
   {
     message_error(_("Couldn't open '%s': %s"), 
-		  dia_message_filename(src), strerror(errno));
+		  dia_message_filename(src), g_strerror(errno));
     return FALSE;
   }
  
   if ((fp_dst = fopen(dst, "wb")) == NULL)
   {
     message_error(_("Couldn't open '%s': %s"), 
-		  dia_message_filename(dst), strerror(errno));
+		  dia_message_filename(dst), g_strerror(errno));
     return FALSE;
   }
 
Index: lib/widgets.c
===================================================================
RCS file: /cvs/gnome/dia/lib/widgets.c,v
retrieving revision 1.119
diff -u -r1.119 widgets.c
--- lib/widgets.c	1 Jul 2005 16:33:58 -0000	1.119
+++ lib/widgets.c	30 Jul 2005 08:32:48 -0000
@@ -1262,10 +1262,8 @@
     gtk_widget_destroy(GTK_WIDGET(fs->dialog));
     fs->dialog = NULL;
   }
-  if (fs->sys_filename) {
-    g_free(fs->sys_filename);
-    fs->sys_filename = NULL;
-  }
+  g_free(fs->sys_filename);
+  fs->sys_filename = NULL;
 
   (* GTK_WIDGET_CLASS (gtk_type_class(gtk_hbox_get_type ()))->unrealize) (widget);
 }
@@ -1338,7 +1336,7 @@
   fs->dialog = NULL;
   fs->sys_filename = NULL;  
   fs->entry = GTK_ENTRY(gtk_entry_new());
-  gtk_box_pack_start(GTK_BOX(fs), GTK_WIDGET(fs->entry), FALSE, TRUE, 0);
+  gtk_box_pack_start(GTK_BOX(fs), GTK_WIDGET(fs->entry), TRUE, TRUE, 0);
   gtk_widget_show(GTK_WIDGET(fs->entry));
   fs->browse = GTK_BUTTON(gtk_button_new_with_label(_("Browse")));
   gtk_box_pack_start(GTK_BOX(fs), GTK_WIDGET(fs->browse), FALSE, TRUE, 0);
Index: objects/standard/image.c
===================================================================
RCS file: /cvs/gnome/dia/objects/standard/image.c,v
retrieving revision 1.50
diff -u -r1.50 image.c
--- objects/standard/image.c	10 Jul 2005 15:09:34 -0000	1.50
+++ objects/standard/image.c	30 Jul 2005 08:32:49 -0000
@@ -26,6 +26,7 @@
 
 #include "intl.h"
 #include "message.h"
+#include "dia_dirs.h"
 #include "object.h"
 #include "element.h"
 #include "connectionpoint.h"
@@ -681,13 +682,15 @@
 	    char *tmp;
 	    /* Found file in current dir. */
 	    message_warning(_("The image file '%s' was not found in that directory.\n"
-			    "Using the file '%s' instead\n"), image->file, image_file_name);
+			    "Using the file '%s' instead\n"),
+			    dia_message_filename(image->file),
+			    dia_message_filename(image_file_name));
 	    tmp = image->file;
 	    image->file = g_strdup(image_file_name);
 	    g_free(tmp);
 	  } else {
 	    message_warning(_("The image file '%s' was not found.\n"),
-			    image_file_name);
+			    dia_message_filename(image_file_name));
 	  }
 	}
       }
@@ -709,7 +712,7 @@
 	if (image->image == NULL) {
 	  /* Didn't find file in current dir. */
 	  message_warning(_("The image file '%s' was not found.\n"),
-			  image->file);
+			  dia_message_filename(image->file));
 	}
       }
     }
Index: plug-ins/Makefile.am
===================================================================
RCS file: /cvs/gnome/dia/plug-ins/Makefile.am,v
retrieving revision 1.21
diff -u -r1.21 Makefile.am
--- plug-ins/Makefile.am	27 Nov 2004 21:04:30 -0000	1.21
+++ plug-ins/Makefile.am	30 Jul 2005 08:32:49 -0000
@@ -1,6 +1,10 @@
-# Remember to also add subdirs in configure.in
+if WITH_GNOMEPRINT
+gprint_subdir = gprint
+endif
+
+# Remember to also add subdirs in configure.am
 SUBDIRS = cgm cairo pstricks hpgl wpg svg shape dxf python xfig \
-	  wmf metapost xslt pixbuf gprint
+	  wmf metapost xslt pixbuf $(gprint_subdir)
 
 EXTRA_DIST = \
 	makefile.msc objects.def
Index: plug-ins/cgm/cgm.c
===================================================================
RCS file: /cvs/gnome/dia/plug-ins/cgm/cgm.c,v
retrieving revision 1.27
diff -u -r1.27 cgm.c
--- plug-ins/cgm/cgm.c	18 Jul 2005 18:53:26 -0000	1.27
+++ plug-ins/cgm/cgm.c	30 Jul 2005 08:32:50 -0000
@@ -705,7 +705,7 @@
 	write_int16(renderer->file, 1);
 	break;
     default:
-	message_error("svg_renderer: Unsupported fill mode specified!\n");
+	message_error("cgm_renderer: Unsupported fill mode specified!\n");
     }
 #endif
 }
Index: plug-ins/svg/render_svg.c
===================================================================
RCS file: /cvs/gnome/dia/plug-ins/svg/render_svg.c,v
retrieving revision 1.31
diff -u -r1.31 render_svg.c
--- plug-ins/svg/render_svg.c	18 Jul 2005 18:53:29 -0000	1.31
+++ plug-ins/svg/render_svg.c	30 Jul 2005 08:32:50 -0000
@@ -147,7 +147,7 @@
 
   if (file==NULL) {
     message_error(_("Can't open output file %s: %s\n"), 
-		  dia_message_filename(filename), strerror(errno));
+		  dia_message_filename(filename), g_strerror(errno));
     return NULL;
   }
   fclose(file);
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin