From 12c017ea09b1158392b893e10bc6f13958ab0252 Mon Sep 17 00:00:00 2001 From: jkh Date: Sat, 15 Feb 1997 15:24:14 +0000 Subject: Read /etc/resolv.conf information as well as /etc/sysconfig info, making this a little more robust. --- release/sysinstall/config.c | 29 ++++++++++++++++++++++++++--- release/sysinstall/install.c | 10 ++++++++++ release/sysinstall/main.c | 4 +--- release/sysinstall/sysinstall.h | 4 +++- 4 files changed, 40 insertions(+), 7 deletions(-) (limited to 'release') diff --git a/release/sysinstall/config.c b/release/sysinstall/config.c index 2ef56a2..dc601f4 100644 --- a/release/sysinstall/config.c +++ b/release/sysinstall/config.c @@ -301,9 +301,9 @@ readConfig(char *config, char **lines, int max) #define MAX_LINES 2000 /* Some big number we're not likely to ever reach - I'm being really lazy here, I know */ -/* Load the environment from /etc/sysconfig, if it exists */ +/* Load the environment from a sysconfig file */ void -configEnvironment(char *config) +configEnvironmentSysconfig(char *config) { char *lines[MAX_LINES], *cp, *cp2; int i, j, nlines; @@ -332,6 +332,30 @@ configEnvironment(char *config) } } +/* Load the environment from a resolv.conf file */ +void +configEnvironmentResolv(char *config) +{ + char *lines[MAX_LINES]; + int i, nlines; + + nlines = readConfig(config, lines, MAX_LINES); + if (nlines == -1) + return; + for (i = 0; i < nlines; i++) { + Boolean name_set = FALSE; + + if (!strncmp(lines[i], "domain", 6)) + variable_set2(VAR_DOMAINNAME, string_skipwhite(lines[i] + 6)); + else if (!strncmp(lines[i], "nameserver", 10) && !name_set) { + /* Only take the first nameserver setting - we're lame */ + variable_set2(VAR_NAMESERVER, string_skipwhite(lines[i] + 10)); + name_set = TRUE; + } + free(lines[i]); + } +} + /* * This sucks in /etc/sysconfig, substitutes anything needing substitution, then * writes it all back out. It's pretty gross and needs re-writing at some point. @@ -360,7 +384,6 @@ configSysconfig(char *config) free(lines[i]); lines[i] = (char *)malloc(strlen(v->name) + strlen(v->value) + 5); sprintf(lines[i], "%s=\"%s\"\n", v->name, v->value); - msgDebug("Variable substitution on: %s\n", lines[i]); } } } diff --git a/release/sysinstall/install.c b/release/sysinstall/install.c index 627706f..769221b 100644 --- a/release/sysinstall/install.c +++ b/release/sysinstall/install.c @@ -973,6 +973,16 @@ installVarDefaults(dialogMenuItem *self) return DITEM_SUCCESS; } +/* Load the environment up from various system configuration files */ +void +installEnvironment(void) +{ + if (file_readable("/etc/sysconfig")) + configEnvironmentSysconfig("/etc/sysconfig"); + if (file_readable("/etc/resolv.conf")) + configEnvironmentResolv("/etc/resolv.conf"); +} + /* Copy the boot floppy contents into /stand */ Boolean copySelf(void) diff --git a/release/sysinstall/main.c b/release/sysinstall/main.c index ece57d4..ba11239 100644 --- a/release/sysinstall/main.c +++ b/release/sysinstall/main.c @@ -70,9 +70,7 @@ main(int argc, char **argv) /* Set default flag and variable values */ installVarDefaults(NULL); - - if (file_readable("/etc/sysconfig")) - configEnvironment("/etc/sysconfig"); + installEnvironment(); if (argc > 1 && !strcmp(argv[1], "-fake")) { variable_set2(VAR_DEBUG, "YES"); diff --git a/release/sysinstall/sysinstall.h b/release/sysinstall/sysinstall.h index 3a835ae..087cc0d 100644 --- a/release/sysinstall/sysinstall.h +++ b/release/sysinstall/sysinstall.h @@ -404,7 +404,8 @@ extern void command_func_add(char *key, commandFunc func, void *data); /* config.c */ extern int configFstab(void); -extern void configEnvironment(char *config); +extern void configEnvironmentSysconfig(char *config); +extern void configEnvironmentResolv(char *config); extern void configSysconfig(char *config); extern void configResolv(void); extern int configPackages(dialogMenuItem *self); @@ -530,6 +531,7 @@ extern int installFixup(dialogMenuItem *self); extern int installUpgrade(dialogMenuItem *self); extern int installFilesystems(dialogMenuItem *self); extern int installVarDefaults(dialogMenuItem *self); +extern void installEnvironment(void); extern Boolean copySelf(void); /* keymap.c */ -- cgit v1.1