doc: Minor change to the included yat2m.
[gnupg.git] / doc / mkdefsinc.c
index 9e17332..b8fbed6 100644 (file)
    values are not valid for the build platform but we need some values
    nevertheless.  */
 #include "config.h"
-/* When building for Windows some -D macros are not available.  We
-   provide replacements here.  */
+/* When building for Windows the -D macros do not have appropriate
+   values.  We provide replacements here.  */
 #ifdef HAVE_W32_SYSTEM
+# undef  GNUPG_BINDIR
+# undef  GNUPG_LIBEXECDIR
+# undef  GNUPG_LIBDIR
+# undef  GNUPG_DATADIR
+# undef  GNUPG_SYSCONFDIR
+# undef  GNUPG_LOCALSTATEDIR
 # define GNUPG_BINDIR        "INSTDIR/bin"
 # define GNUPG_LIBEXECDIR    "INSTDIR/bin"
 # define GNUPG_LIBDIR        "INSTDIR/lib/" PACKAGE_NAME
 #endif /*HAVE_W32_SYSTEM*/
 
 
+#if USE_GPG2_HACK
+# define gpg2_suffix "2"
+#else
+# define gpg2_suffix ""
+#endif
+
+
 static int verbose;
 
 
@@ -127,6 +140,27 @@ get_date_from_files (char **files)
 }
 
 
+/* We need to escape file names for Texinfo.  */
+static void
+print_filename (const char *prefix, const char *name)
+{
+  const char *s;
+
+  fputs (prefix, stdout);
+  for (s=name; *s; s++)
+    switch (*s)
+      {
+      case '@': fputs ("@atchar{}",        stdout); break;
+      case '{': fputs ("@lbracechar{}",    stdout); break;
+      case '}': fputs ("@rbracechar{}",    stdout); break;
+      case ',': fputs ("@comma{}",         stdout); break;
+      case '\\':fputs ("@backslashchar{}", stdout); break;
+      case '#': fputs ("@hashchar{}",      stdout); break;
+      default: putchar (*s); break;
+      }
+  putchar('\n');
+}
+
 
 int
 main (int argc, char **argv)
@@ -261,21 +295,30 @@ main (int argc, char **argv)
 
   fputs ("@c defs.inc                         -*- texinfo -*-\n"
          "@c Common and build specific constants for the manuals.\n"
-         "@c This file has been created by " PGM ".\n", stdout);
+         "@c This file has been created by " PGM ".\n\n", stdout);
+
+  fputs ("@ifclear defsincincluded\n"
+         "@set defsincincluded 1\n\n", stdout);
+
+
+  fputs ("\n@c Flags\n\n", stdout);
+
+#if USE_GPG2_HACK
+  fputs ("@set gpgtwohack 1\n\n", stdout);
+#endif
 
   fputs ("\n@c Directories\n\n", stdout);
 
-  fputs ("@set BINDIR         " GNUPG_BINDIR        "\n"
-         "@set LIBEXECDIR     " GNUPG_LIBEXECDIR    "\n"
-         "@set LIBDIR         " GNUPG_LIBDIR        "\n"
-         "@set DATADIR        " GNUPG_DATADIR       "\n"
-         "@set SYSCONFDIR     " GNUPG_SYSCONFDIR    "\n"
-         "@set LOCALSTATEDIR  " GNUPG_LOCALSTATEDIR "\n"
-         "@set LOCALCACHEDIR  " GNUPG_LOCALSTATEDIR
-         /*                  */ "/cache/" PACKAGE_NAME "\n"
-         "@set LOCALRUNDIR    " GNUPG_LOCALSTATEDIR
-         /*                  */ "/run/"  PACKAGE_NAME "\n"
-         , stdout);
+  print_filename ("@set BINDIR         ", GNUPG_BINDIR );
+  print_filename ("@set LIBEXECDIR     ", GNUPG_LIBEXECDIR );
+  print_filename ("@set LIBDIR         ", GNUPG_LIBDIR );
+  print_filename ("@set DATADIR        ", GNUPG_DATADIR );
+  print_filename ("@set SYSCONFDIR     ", GNUPG_SYSCONFDIR );
+  print_filename ("@set LOCALSTATEDIR  ", GNUPG_LOCALSTATEDIR );
+  print_filename ("@set LOCALCACHEDIR  ", (GNUPG_LOCALSTATEDIR
+                                           "/cache/" PACKAGE_NAME));
+  print_filename ("@set LOCALRUNDIR    ", (GNUPG_LOCALSTATEDIR
+                                           "/run/"   PACKAGE_NAME));
 
   p = xstrdup (GNUPG_SYSCONFDIR);
   pend = strrchr (p, '/');
@@ -300,8 +343,16 @@ main (int argc, char **argv)
   /* Fixme: Use a config.h macro here:  */
   fputs ("@set GPGSYMENCALGO AES-128\n", stdout);
 
+  fputs ("\n@c Macros\n\n", stdout);
+
+  printf ("@macro gpgname\n%s%s\n@end macro\n", GPG_NAME, gpg2_suffix);
+  printf ("@macro gpgvname\n%sv%s\n@end macro\n", GPG_NAME, gpg2_suffix);
+
 
+  /* Trailer.  */
   fputs ("\n"
+         "@end ifclear\n"
+         "\n"
          "@c Loc" "al Variables:\n"
          "@c buffer-read-only: t\n"
          "@c End:\n", stdout);