Imported Upstream version 2.14.2
[platform/upstream/fontconfig.git] / fc-scan / fc-scan.c
index 4d0b1db..dca1cd5 100644 (file)
 #include <fontconfig/fontconfig.h>
 #include <fontconfig/fcfreetype.h>
 #include <stdio.h>
-#include <unistd.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
@@ -52,8 +64,9 @@
 #define _GNU_SOURCE
 #include <getopt.h>
 static const struct option longopts[] = {
-    {"ignore-blanks", 0, 0, 'b'},
+    {"brief", 0, 0, 'b'},
     {"format", 1, 0, 'f'},
+    {"sysroot", required_argument, 0, 'y'},
     {"version", 0, 0, 'V'},
     {"help", 0, 0, 'h'},
     {NULL,0,0,0},
@@ -70,24 +83,26 @@ usage (char *program, int error)
 {
     FILE *file = error ? stderr : stdout;
 #if HAVE_GETOPT_LONG
-    fprintf (file, "usage: %s [-Vbh] [-f FORMAT] [--ignore-blanks] [--format FORMAT] [--version] [--help] font-file...\n",
+    fprintf (file, _("usage: %s [-bcVh] [-f FORMAT] [-y SYSROOT] [--brief] [--format FORMAT] [--version] [--help] font-file...\n"),
             program);
 #else
-    fprintf (file, "usage: %s [-Vbh] [-f FORMAT] font-file...\n",
+    fprintf (file, _("usage: %s [-bcVh] [-f FORMAT] [-y SYSROOT] font-file...\n"),
             program);
 #endif
-    fprintf (file, "Scan font files and directories, and print resulting pattern(s)\n");
+    fprintf (file, _("Scan font files and directories, and print resulting pattern(s)\n"));
     fprintf (file, "\n");
 #if HAVE_GETOPT_LONG
-    fprintf (file, "  -b, --ignore-blanks  ignore blanks to compute languages\n");
-    fprintf (file, "  -f, --format=FORMAT  use the given output format\n");
-    fprintf (file, "  -V, --version        display font config version and exit\n");
-    fprintf (file, "  -h, --help           display this help and exit\n");
+    fprintf (file, _("  -b, --brief            display font pattern briefly\n"));
+    fprintf (file, _("  -f, --format=FORMAT    use the given output format\n"));
+    fprintf (file, _("  -y, --sysroot=SYSROOT  prepend SYSROOT to all paths for scanning\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, "  -b         (ignore-blanks) ignore blanks to compute languages\n");
-    fprintf (file, "  -f FORMAT  (format)        use the given output format\n");
-    fprintf (file, "  -V         (version)       display font config version and exit\n");
-    fprintf (file, "  -h         (help)          display this help and exit\n");
+    fprintf (file, _("  -b         (brief)         display font pattern briefly\n"));
+    fprintf (file, _("  -f FORMAT  (format)        use the given output format\n"));
+    fprintf (file, _("  -y SYSROOT (sysroot)       prepend SYSROOT to all paths for scanning\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,27 +110,30 @@ usage (char *program, int error)
 int
 main (int argc, char **argv)
 {
-    FcChar8     *format = NULL;
+    int         brief = 0;
+    FcChar8     *format = NULL, *sysroot = NULL;
     int                i;
-    int                ignore_blanks = 0;
     FcFontSet   *fs;
-    FcBlanks    *blanks = NULL;
 #if HAVE_GETOPT_LONG || HAVE_GETOPT
     int                c;
 
+    setlocale (LC_ALL, "");
 #if HAVE_GETOPT_LONG
-    while ((c = getopt_long (argc, argv, "bf:Vh", longopts, NULL)) != -1)
+    while ((c = getopt_long (argc, argv, "bf:y:Vh", longopts, NULL)) != -1)
 #else
-    while ((c = getopt (argc, argv, "bf:Vh")) != -1)
+    while ((c = getopt (argc, argv, "bf:y:Vh")) != -1)
 #endif
     {
        switch (c) {
        case 'b':
-           ignore_blanks = 1;
+           brief = 1;
            break;
        case 'f':
            format = (FcChar8 *) strdup (optarg);
            break;
+       case 'y':
+           sysroot = FcStrCopy ((const FcChar8 *) optarg);
+           break;
        case 'V':
            fprintf (stderr, "fontconfig version %d.%d.%d\n",
                     FC_MAJOR, FC_MINOR, FC_REVISION);
@@ -134,23 +152,26 @@ main (int argc, char **argv)
     if (i == argc)
        usage (argv[0], 1);
 
+    if (sysroot)
+    {
+       FcConfigSetSysRoot (NULL, sysroot);
+       FcStrFree (sysroot);
+    }
     fs = FcFontSetCreate ();
-    if (!ignore_blanks)
-       blanks = FcConfigGetBlanks (NULL);
 
     for (; i < argc; i++)
     {
        const FcChar8 *file = (FcChar8*) argv[i];
 
        if (!FcFileIsDir (file))
-           FcFileScan (fs, NULL, NULL, blanks, file, FcTrue);
+           FcFileScan (fs, NULL, NULL, NULL, file, FcTrue);
        else
        {
            FcStrSet *dirs = FcStrSetCreate ();
            FcStrList *strlist = FcStrListCreate (dirs);
            do
            {
-               FcDirScan (fs, dirs, NULL, blanks, file, FcTrue);
+               FcDirScan (fs, dirs, NULL, NULL, file, FcTrue);
            }
            while ((file = FcStrListNext (strlist)));
            FcStrListDone (strlist);
@@ -160,9 +181,13 @@ main (int argc, char **argv)
 
     for (i = 0; i < fs->nfont; i++)
     {
-       FcPattern *pat;
+       FcPattern *pat = fs->fonts[i];
 
-       pat = fs->fonts[i];
+       if (brief)
+       {
+           FcPatternDel (pat, FC_CHARSET);
+           FcPatternDel (pat, FC_LANG);
+       }
 
        if (format)
        {