diff --git a/capplets/screensaver/screensavers/extract-labels.c b/capplets/screensaver/screensavers/extract-labels.c new file mode 100644 index 000000000..0e7626468 --- /dev/null +++ b/capplets/screensaver/screensavers/extract-labels.c @@ -0,0 +1,96 @@ +/* -*- mode: c; style: linux -*- */ + +/* extract-labels.c + * Copyright (C) 2000 Helix Code, Inc. + * + * Written by Bradford Hovinen (hovinen@helixcode.com) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +static void +write_label (xmlNodePtr node, char *attr, FILE *out) +{ + char *str; + + str = xmlGetProp (node, attr); + if (!str) return; + + fprintf (out, "gchar *s = N_(\"%s\");\n", str); +} + +static void +output_labels (xmlNodePtr element, FILE *out) +{ + xmlNodePtr node; + + for (node = element->childs; node; node = node->next) { + write_label (node, "label", out); + write_label (node, "low-label", out); + write_label (node, "high-label", out); + output_labels (node, out); + } +} + +int +main (int argc, char **argv) +{ + char *out_filename; + FILE *out; + xmlDocPtr doc; + + bindtextdomain (PACKAGE, GNOMELOCALEDIR); + textdomain (PACKAGE); + + if (argc < 2) { + fprintf (stderr, "Usage: extract-labels \n"); + exit (-1); + } + + out_filename = g_strconcat (argv[1], ".h", NULL); + + doc = xmlParseFile (argv[1]); + + if (!doc) + exit (-1); + + out = fopen (out_filename, "w"); + + if (!out) { + perror ("Could not open output file: "); + exit (-1); + } + + fprintf (out, + "/*\n" \ + " * Translatable strings file generated by extract-labels\n" \ + " * Add this file to your project's POTFILES.in.\n" \ + " * DO NOT compile it as part of your application.\n" \ + " */\n\n"); + + output_labels (xmlDocGetRootElement (doc), out); + + return 0; +}