Imported Upstream version 2.14.2
[platform/upstream/fontconfig.git] / fc-list / fc-list.c
index 5ad1333..54796c8 100644 (file)
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-#include <fontconfig/fontconfig.h>
-#include <stdio.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
 #ifdef HAVE_CONFIG_H
 #include <config.h>
 #else
 #endif
 #define HAVE_GETOPT 1
 #endif
+#include <fontconfig/fontconfig.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#ifdef ENABLE_NLS
+#include <libintl.h>
+#define _(x)           (dgettext(GETTEXT_PACKAGE, x))
+#else
+#define dgettext(d, s) (s)
+#define _(x)           (x)
+#endif
 
 #ifndef HAVE_GETOPT
 #define HAVE_GETOPT 0
@@ -49,6 +61,7 @@
 #include <getopt.h>
 const struct option longopts[] = {
     {"verbose", 0, 0, 'v'},
+    {"brief", 0, 0, 'b'},
     {"format", 1, 0, 'f'},
     {"quiet", 0, 0, 'q'},
     {"version", 0, 0, 'V'},
@@ -67,26 +80,28 @@ usage (char *program, int error)
 {
     FILE *file = error ? stderr : stdout;
 #if HAVE_GETOPT_LONG
-    fprintf (file, "usage: %s [-vqVh] [-f FORMAT] [--verbose] [--format=FORMAT] [--quiet] [--version] [--help] [pattern] {element ...} \n",
+    fprintf (file, _("usage: %s [-vbqVh] [-f FORMAT] [--verbose] [--brief] [--format=FORMAT] [--quiet] [--version] [--help] [pattern] {element ...} \n"),
             program);
 #else
-    fprintf (file, "usage: %s [-vqVh] [-f FORMAT] [pattern] {element ...} \n",
+    fprintf (file, _("usage: %s [-vbqVh] [-f FORMAT] [pattern] {element ...} \n"),
             program);
 #endif
-    fprintf (file, "List fonts matching [pattern]\n");
+    fprintf (file, _("List fonts matching [pattern]\n"));
     fprintf (file, "\n");
 #if HAVE_GETOPT_LONG
-    fprintf (file, "  -v, --verbose        display entire font pattern verbosely\n");
-    fprintf (file, "  -f, --format=FORMAT  use the given output format\n");
-    fprintf (file, "  -q, --quiet          suppress all normal output, exit 1 if no fonts matched\n");
-    fprintf (file, "  -V, --version        display font config version and exit\n");
-    fprintf (file, "  -h, --help           display this help and exit\n");
+    fprintf (file, _("  -v, --verbose        display entire font pattern verbosely\n"));
+    fprintf (file, _("  -b, --brief          display entire font pattern briefly\n"));
+    fprintf (file, _("  -f, --format=FORMAT  use the given output format\n"));
+    fprintf (file, _("  -q, --quiet          suppress all normal output, exit 1 if no fonts matched\n"));
+    fprintf (file, _("  -V, --version        display font config version and exit\n"));
+    fprintf (file, _("  -h, --help           display this help and exit\n"));
 #else
-    fprintf (file, "  -v         (verbose) display entire font pattern verbosely\n");
-    fprintf (file, "  -f FORMAT  (format)  use the given output format\n");
-    fprintf (file, "  -q,        (quiet)   suppress all normal output, exit 1 if no fonts matched\n");
-    fprintf (file, "  -V         (version) display font config version and exit\n");
-    fprintf (file, "  -h         (help)    display this help and exit\n");
+    fprintf (file, _("  -v         (verbose) display entire font pattern verbosely\n"));
+    fprintf (file, _("  -b         (brief)   display entire font pattern briefly\n"));
+    fprintf (file, _("  -f FORMAT  (format)  use the given output format\n"));
+    fprintf (file, _("  -q,        (quiet)   suppress all normal output, exit 1 if no fonts matched\n"));
+    fprintf (file, _("  -V         (version) display font config version and exit\n"));
+    fprintf (file, _("  -h         (help)    display this help and exit\n"));
 #endif
     exit (error);
 }
@@ -95,6 +110,7 @@ int
 main (int argc, char **argv)
 {
     int                        verbose = 0;
+    int                        brief = 0;
     int                        quiet = 0;
     const FcChar8      *format = NULL;
     int                        nfont = 0;
@@ -105,16 +121,20 @@ main (int argc, char **argv)
 #if HAVE_GETOPT_LONG || HAVE_GETOPT
     int                        c;
 
+    setlocale (LC_ALL, "");
 #if HAVE_GETOPT_LONG
-    while ((c = getopt_long (argc, argv, "vf:qVh", longopts, NULL)) != -1)
+    while ((c = getopt_long (argc, argv, "vbf:qVh", longopts, NULL)) != -1)
 #else
-    while ((c = getopt (argc, argv, "vf:qVh")) != -1)
+    while ((c = getopt (argc, argv, "vbf:qVh")) != -1)
 #endif
     {
        switch (c) {
        case 'v':
            verbose = 1;
            break;
+       case 'b':
+           brief = 1;
+           break;
        case 'f':
            format = (FcChar8 *) strdup (optarg);
            break;
@@ -139,6 +159,11 @@ main (int argc, char **argv)
     if (argv[i])
     {
        pat = FcNameParse ((FcChar8 *) argv[i]);
+       if (!pat)
+       {
+           fprintf (stderr, _("Unable to parse the pattern\n"));
+           return 1;
+       }
        while (argv[++i])
        {
            if (!os)
@@ -150,7 +175,7 @@ main (int argc, char **argv)
        pat = FcPatternCreate ();
     if (quiet && !os)
        os = FcObjectSetCreate ();
-    if (!verbose && !format && !os)
+    if (!verbose && !brief && !format && !os)
        os = FcObjectSetBuild (FC_FAMILY, FC_STYLE, FC_FILE, (char *) 0);
     if (!format)
         format = (const FcChar8 *) "%{=fclist}\n";
@@ -166,8 +191,13 @@ main (int argc, char **argv)
 
        for (j = 0; j < fs->nfont; j++)
        {
-           if (verbose)
+           if (verbose || brief)
            {
+               if (brief)
+               {
+                   FcPatternDel (fs->fonts[j], FC_CHARSET);
+                   FcPatternDel (fs->fonts[j], FC_LANG);
+               }
                FcPatternPrint (fs->fonts[j]);
            }
            else