]> git.saurik.com Git - bison.git/commitdiff
Implement --print-datadir.
authorJoel E. Denny <jdenny@ces.clemson.edu>
Fri, 5 Oct 2007 02:54:33 +0000 (02:54 +0000)
committerJoel E. Denny <jdenny@ces.clemson.edu>
Fri, 5 Oct 2007 02:54:33 +0000 (02:54 +0000)
* src/getargs.c (usage): Mention.
(PRINT_DATADIR_OPTION): New anonymous enum member.
(long_options): Add entry for it.
(getargs): Add case for it calling compute_pkgdatadir.
* src/output.c (output_skeleton): Encapsulate data directory
computation from here...
(prepare): ... and from here...
(compute_pkgdatadir): ... into this new function.
* src/output.h (compute_pkgdatadir): Prototype.

ChangeLog
src/getargs.c
src/output.c
src/output.h

index 358179b2e047b5e46e542ad03965e9d46a6b981e..62d14dbab432218ef3f72aad68aefa71d3dcd0ff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2007-10-04  Joel E. Denny  <jdenny@ces.clemson.edu>
+
+       Implement --print-datadir.
+       * src/getargs.c (usage): Mention.
+       (PRINT_DATADIR_OPTION): New anonymous enum member.
+       (long_options): Add entry for it.
+       (getargs): Add case for it calling compute_pkgdatadir.
+       * src/output.c (output_skeleton): Encapsulate data directory
+       computation from here...
+       (prepare): ... and from here...
+       (compute_pkgdatadir): ... into this new function.
+       * src/output.h (compute_pkgdatadir): Prototype.
+
 2007-09-29  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        * src/print-xml.c (escape_bufs): New static global variable
index 45b0dc847f22101eebd19dea64f4579ac4ff553f..ff0aa3bc087dcfd20307978cd748dafe7f841e68 100644 (file)
@@ -21,6 +21,7 @@
 #include <config.h>
 #include "system.h"
 #include "revision.h"
+#include "output.h"
 
 #include <argmatch.h>
 #include <c-strcase.h>
@@ -261,6 +262,7 @@ Operation modes:\n\
   -h, --help                 display this help and exit\n\
   -V, --version              output version information and exit\n\
       --print-localedir      output directory containing locale-dependent data\n\
+      --print-datadir        output directory containing skeletons and XSLT\n\
   -y, --yacc                 emulate POSIX Yacc\n\
 \n\
 "), stdout);
@@ -393,7 +395,8 @@ static char const short_options[] = "yvegxdhr:L:ltknVo:b:p:S:T::W";
 enum
 {
   LOCATIONS_OPTION = CHAR_MAX + 1,
-  PRINT_LOCALEDIR_OPTION
+  PRINT_LOCALEDIR_OPTION,
+  PRINT_DATADIR_OPTION
 };
 
 static struct option const long_options[] =
@@ -402,6 +405,7 @@ static struct option const long_options[] =
   { "help",            no_argument,      0,   'h' },
   { "version",         no_argument,      0,   'V' },
   { "print-localedir", no_argument,      0,   PRINT_LOCALEDIR_OPTION },
+  { "print-datadir",   no_argument,      0,   PRINT_DATADIR_OPTION   },
   { "warnings",        optional_argument, 0,   'W' },
 
   /* Parser. */
@@ -555,6 +559,10 @@ getargs (int argc, char *argv[])
        printf ("%s\n", LOCALEDIR);
        exit (EXIT_SUCCESS);
 
+      case PRINT_DATADIR_OPTION:
+       printf ("%s\n", compute_pkgdatadir ());
+       exit (EXIT_SUCCESS);
+
       default:
        usage (EXIT_FAILURE);
       }
index 6cdc17bc80d9932d776f35068c668716927e4c76..c9400e690da00cf917e937b6d6c35b63ad7953b1 100644 (file)
@@ -482,7 +482,7 @@ output_skeleton (void)
   char *full_skeleton;
   char const *p;
   char const *m4 = (p = getenv ("M4")) ? p : M4;
-  char const *pkgdatadir = (p = getenv ("BISON_PKGDATADIR")) ? p : PKGDATADIR;
+  char const *pkgdatadir = compute_pkgdatadir ();
   size_t skeleton_size = strlen (skeleton) + 1;
   size_t pkgdatadirlen = strlen (pkgdatadir);
   while (pkgdatadirlen && pkgdatadir[pkgdatadirlen - 1] == '/')
@@ -602,12 +602,10 @@ prepare (void)
 
   /* About the skeletons.  */
   {
-    char const *pkgdatadir = getenv ("BISON_PKGDATADIR");
     /* b4_pkgdatadir is used inside m4_include in the skeletons, so digraphs
        would never be expanded.  Hopefully no one has M4-special characters in
        his Bison installation path.  */
-    MUSCLE_INSERT_STRING_RAW ("pkgdatadir",
-                              pkgdatadir ? pkgdatadir : PKGDATADIR);
+    MUSCLE_INSERT_STRING_RAW ("pkgdatadir", compute_pkgdatadir ());
   }
 }
 
@@ -633,3 +631,10 @@ output (void)
 
   obstack_free (&format_obstack, NULL);
 }
+
+char const *
+compute_pkgdatadir (void)
+{
+  char const *pkgdatadir = getenv ("BISON_PKGDATADIR");
+  return pkgdatadir ? pkgdatadir : PKGDATADIR;
+}
index 9bd5717d2aaebda9cb87c8f4a2fe197a46ec5a83..abd88f5c4470a1c1198a4bd0eb972e49d70b7ebc 100644 (file)
@@ -1,5 +1,6 @@
 /* Output the generated parsing program for bison,
-   Copyright (C) 2000, 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2002, 2003, 2006, 2007 Free Software Foundation,
+   Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -21,5 +22,6 @@
 
 /* Output the parsing tables and the parser code to FTABLE.  */
 void output (void);
+char const *compute_pkgdatadir (void);
 
 #endif /* !OUTPUT_H_ */