From 926f3e4af44cff5c515641badb8a79d2609d8061 Mon Sep 17 00:00:00 2001 From: Joshua Kwan Date: Mon, 5 Jan 2004 09:18:39 +0000 Subject: [PATCH] works! git-svn-id: svn://katsu.triplehelix.org/dgamelaunch/trunk@86 db0b04b0-f4d1-0310-9a6d-de3e77497b0e --- config.l | 2 +- config.y | 26 ++++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/config.l b/config.l index c4b1de6..97afd86 100644 --- a/config.l +++ b/config.l @@ -29,7 +29,7 @@ LONGCOMMENT "/*" %% /* BEGIN RULES SECTION */ -{NUMBER} { yylval.i = atoi(yytext); } +{NUMBER} { yylval.i = atoi(yytext); return TYPE_NUMBER; } {VALUE} { yytext[yyleng - 1] = '\0'; /* Kill the trailing quote */ yytext++; /* Kill the leading quote */ diff --git a/config.y b/config.y index 3d60ed7..81a8e5a 100644 --- a/config.y +++ b/config.y @@ -105,21 +105,31 @@ KeyPair: KeyType '=' TYPE_VALUE { free($3); } | KeyType '=' TYPE_NUMBER { + if (!myconfig) + myconfig = calloc(1, sizeof(struct dg_config)); + switch ($1) { case TYPE_SUID: - if (!myconfig->shed_user && getpwuid($3) != NULL) - myconfig->shed_uid = $3; - else - fprintf(stderr, "%s: no such uid %lu\n", config, $3); + if (!myconfig->shed_user) + { + if (getpwuid($3) != NULL) + myconfig->shed_uid = $3; + else + fprintf(stderr, "%s: no such uid %lu\n", config, $3); + } break; case TYPE_SGID: - if (!myconfig->shed_group && getgrgid($3) != NULL) - myconfig->shed_gid = $3; - else - fprintf(stderr, "%s: no such gid %lu\n", config, $3); + if (!myconfig->shed_group) + { + if (getgrgid($3) != NULL) + myconfig->shed_gid = $3; + else + fprintf(stderr, "%s: no such gid %lu\n", config, $3); + } + break; case TYPE_MAX: