summaryrefslogtreecommitdiffstats
path: root/release
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1997-02-15 15:24:14 +0000
committerjkh <jkh@FreeBSD.org>1997-02-15 15:24:14 +0000
commit12c017ea09b1158392b893e10bc6f13958ab0252 (patch)
treef333efd55918daca9d43497782d6cee2e0221cc9 /release
parent3bb96193748acd86854b70e7d2f451bab7de2d00 (diff)
downloadFreeBSD-src-12c017ea09b1158392b893e10bc6f13958ab0252.zip
FreeBSD-src-12c017ea09b1158392b893e10bc6f13958ab0252.tar.gz
Read /etc/resolv.conf information as well as /etc/sysconfig info, making
this a little more robust.
Diffstat (limited to 'release')
-rw-r--r--release/sysinstall/config.c29
-rw-r--r--release/sysinstall/install.c10
-rw-r--r--release/sysinstall/main.c4
-rw-r--r--release/sysinstall/sysinstall.h4
4 files changed, 40 insertions, 7 deletions
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 */
OpenPOWER on IntegriCloud