t"include" command added to configuration files. - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 13bf14f9aaae235b67d03104a6679ad55eac4fba
 (DIR) parent fcd5abf4210e5a4013925f1dd3dd02b20c61f6da
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Mon,  5 Aug 2002 11:40:01 +0000
       
       "include" command added to configuration files.
       
       
       Diffstat:
         M src/dopewars.c                      |      23 +++++++++++++++++++++--
         M src/dopewars.h                      |       1 -
       
       2 files changed, 21 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/src/dopewars.c b/src/dopewars.c
       t@@ -1777,7 +1777,7 @@ void ScannerErrorHandler(GScanner *scanner, gchar *msg, gint error)
         * Read a configuration file given by "FileName"; GScanner under Win32
         * doesn't work properly with files, so we use a nasty workaround.
         */
       -void ReadConfigFile(char *FileName)
       +static gboolean ReadConfigFile(char *FileName)
        {
          FILE *fp;
        
       t@@ -1795,7 +1795,7 @@ void ReadConfigFile(char *FileName)
            read_string(fp, &buf);
            if (!buf) {
              fclose(fp);
       -      return;
       +      return TRUE;
            }
            g_scanner_input_text(scanner, buf, strlen(buf));
        #else
       t@@ -1813,6 +1813,9 @@ void ReadConfigFile(char *FileName)
        #ifdef CYGWIN
            g_free(buf);
        #endif
       +    return TRUE;
       +  } else {
       +    return FALSE;
          }
        }
        
       t@@ -1833,6 +1836,22 @@ gboolean ParseNextConfig(GScanner *scanner, gboolean print)
                                  NULL, NULL, FALSE);
            return FALSE;
          }
       +
       +  if (g_strcasecmp(scanner->value.v_identifier, "include") == 0) {
       +    token = g_scanner_get_next_token(scanner);
       +    if (token == G_TOKEN_STRING) {
       +      if (!ReadConfigFile(scanner->value.v_string)) {
       +        g_scanner_error(scanner, _("Unable to open file %s"),
       +                        scanner->value.v_string);
       +      }
       +      return TRUE;
       +    } else {
       +      g_scanner_unexp_token(scanner, G_TOKEN_STRING, NULL, NULL,
       +                            NULL, NULL, FALSE);
       +      return FALSE;
       +    }
       +  }
       +
          ID1 = g_strdup(scanner->value.v_identifier);
          token = g_scanner_get_next_token(scanner);
          if (token == G_TOKEN_LEFT_BRACE) {
 (DIR) diff --git a/src/dopewars.h b/src/dopewars.h
       t@@ -414,7 +414,6 @@ void SetupParameters(void);
        void HandleHelpTexts(void);
        void GeneralStartup(int argc, char *argv[]);
        void StripTerminators(gchar *str);
       -void ReadConfigFile(char *FileName);
        gboolean ParseNextConfig(GScanner *scanner, gboolean print);
        int GetGlobalIndex(gchar *ID1, gchar *ID2);
        gchar **GetGlobalString(int GlobalIndex, int StructIndex);