aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/config
diff options
context:
space:
mode:
authorKyle Evans <kevans@FreeBSD.org>2018-07-05 18:55:42 +0000
committerKyle Evans <kevans@FreeBSD.org>2018-07-05 18:55:42 +0000
commit417d105fae1e04326f2e6dc5234b612aa0093575 (patch)
treefe75891c781d8d319a96576ac50bcc7d0e6c7312 /usr.sbin/config
parentf1e0a986a883ca897cf829667ea4317a54c3ef8a (diff)
downloadsrc-417d105fae1e04326f2e6dc5234b612aa0093575.tar.gz
src-417d105fae1e04326f2e6dc5234b612aa0093575.zip
Revert r336011,r336012 until I can competently test
Notes
Notes: svn path=/head/; revision=336013
Diffstat (limited to 'usr.sbin/config')
-rw-r--r--usr.sbin/config/Makefile4
-rw-r--r--usr.sbin/config/mkmakefile.c169
2 files changed, 75 insertions, 98 deletions
diff --git a/usr.sbin/config/Makefile b/usr.sbin/config/Makefile
index 12e62bfbb497..845a3263dfc5 100644
--- a/usr.sbin/config/Makefile
+++ b/usr.sbin/config/Makefile
@@ -14,11 +14,11 @@ kernconf.c: kernconf.tmpl
${FILE2C} 'char kernconfstr[] = {' ',0};' < \
${SRCDIR}/kernconf.tmpl > kernconf.c
-CFLAGS+= -I. -I${SRCDIR} -I${SRCTOP}/sys
+CFLAGS+= -I. -I${SRCDIR}
NO_WMISSING_VARIABLE_DECLARATIONS=
-LIBADD= l nv sbuf
+LIBADD= l sbuf
CLEANFILES+= kernconf.c
diff --git a/usr.sbin/config/mkmakefile.c b/usr.sbin/config/mkmakefile.c
index edde07ce694a..bc9104b691b7 100644
--- a/usr.sbin/config/mkmakefile.c
+++ b/usr.sbin/config/mkmakefile.c
@@ -49,8 +49,6 @@ static const char rcsid[] =
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
-#include <sys/cnv.h>
-#include <sys/nv.h>
#include <sys/param.h>
#include "y.tab.h"
#include "config.h"
@@ -64,10 +62,6 @@ static void do_objs(FILE *);
static void do_before_depend(FILE *);
static int opteq(const char *, const char *);
static void read_files(void);
-static void sanitize_envline(char *result, const char *src);
-static void process_into_file(char *line, FILE *ofp);
-static void process_into_nvlist(char *line, nvlist_t *nvl);
-static void dump_nvlist(nvlist_t *nvl, FILE *ofp);
static void errout(const char *fmt, ...)
{
@@ -186,6 +180,64 @@ makefile(void)
moveifchanged(path("Makefile.new"), path("Makefile"));
}
+/*
+ * Build hints.c from the skeleton
+ */
+void
+makehints(void)
+{
+ FILE *ifp, *ofp;
+ char line[BUFSIZ];
+ char *s;
+ struct hint *hint;
+
+ ofp = fopen(path("hints.c.new"), "w");
+ if (ofp == NULL)
+ err(1, "%s", path("hints.c.new"));
+ fprintf(ofp, "#include <sys/types.h>\n");
+ fprintf(ofp, "#include <sys/systm.h>\n");
+ fprintf(ofp, "\n");
+ fprintf(ofp, "char static_hints[] = {\n");
+ STAILQ_FOREACH(hint, &hints, hint_next) {
+ ifp = fopen(hint->hint_name, "r");
+ if (ifp == NULL)
+ err(1, "%s", hint->hint_name);
+ while (fgets(line, BUFSIZ, ifp) != NULL) {
+ /* zap trailing CR and/or LF */
+ while ((s = strrchr(line, '\n')) != NULL)
+ *s = '\0';
+ while ((s = strrchr(line, '\r')) != NULL)
+ *s = '\0';
+ /* remove # comments */
+ s = strchr(line, '#');
+ if (s)
+ *s = '\0';
+ /* remove any whitespace and " characters */
+ s = line;
+ while (*s) {
+ if (*s == ' ' || *s == '\t' || *s == '"') {
+ while (*s) {
+ s[0] = s[1];
+ s++;
+ }
+ /* start over */
+ s = line;
+ continue;
+ }
+ s++;
+ }
+ /* anything left? */
+ if (*line == '\0')
+ continue;
+ fprintf(ofp, "\"%s\\0\"\n", line);
+ }
+ fclose(ifp);
+ }
+ fprintf(ofp, "\"\\0\"\n};\n");
+ fclose(ofp);
+ moveifchanged(path("hints.c.new"), path("hints.c"));
+}
+
static void
sanitize_envline(char *result, const char *src)
{
@@ -243,87 +295,6 @@ sanitize_envline(char *result, const char *src)
*dst = 0;
}
-static void
-process_into_file(char *line, FILE *ofp)
-{
- char result[BUFSIZ];
-
- sanitize_envline(result, line);
- /* anything left? */
- if (*result == '\0')
- return;
- fprintf(ofp, "\"%s\\0\"\n", result);
-}
-
-static void
-process_into_nvlist(char *line, nvlist_t *nvl)
-{
- char result[BUFSIZ], *s;
-
- sanitize_envline(result, line);
- /* anything left? */
- if (*result == '\0')
- return;
- s = strchr(result, '=');
- *s = 0;
- if (nvlist_exists(nvl, result))
- nvlist_free(nvl, result);
- nvlist_add_string(nvl, result, s + 1);
-}
-
-static void
-dump_nvlist(nvlist_t *nvl, FILE *ofp)
-{
- const char *name;
- void *cookie;
-
- if (nvl == NULL)
- return;
-
- while (!nvlist_empty(nvl)) {
- cookie = NULL;
- name = nvlist_next(nvl, NULL, &cookie);
- fprintf(ofp, "\"%s=%s\\0\"\n", name,
- cnvlist_get_string(cookie));
-
- cnvlist_free_string(cookie);
- }
-}
-
-/*
- * Build hints.c from the skeleton
- */
-void
-makehints(void)
-{
- FILE *ifp, *ofp;
- nvlist_t *nvl;
- char line[BUFSIZ];
- struct hint *hint;
-
- ofp = fopen(path("hints.c.new"), "w");
- if (ofp == NULL)
- err(1, "%s", path("hints.c.new"));
- fprintf(ofp, "#include <sys/types.h>\n");
- fprintf(ofp, "#include <sys/systm.h>\n");
- fprintf(ofp, "\n");
- fprintf(ofp, "char static_hints[] = {\n");
- nvl = nvlist_create(0);
- STAILQ_FOREACH(hint, &hints, hint_next) {
- ifp = fopen(hint->hint_name, "r");
- if (ifp == NULL)
- err(1, "%s", hint->hint_name);
- while (fgets(line, BUFSIZ, ifp) != NULL)
- process_into_nvlist(line, nvl);
- dump_nvlist(nvl, ofp);
- fclose(ifp);
- }
- nvlist_destroy(nvl);
- fprintf(ofp, "\"\\0\"\n};\n");
- fclose(ofp);
- moveifchanged(path("hints.c.new"), path("hints.c"));
-}
-
/*
* Build env.c from the skeleton
*/
@@ -331,8 +302,7 @@ void
makeenv(void)
{
FILE *ifp, *ofp;
- nvlist_t *nvl;
- char line[BUFSIZ];
+ char line[BUFSIZ], result[BUFSIZ], *linep;
struct envvar *envvar;
ofp = fopen(path("env.c.new"), "w");
@@ -342,20 +312,27 @@ makeenv(void)
fprintf(ofp, "#include <sys/systm.h>\n");
fprintf(ofp, "\n");
fprintf(ofp, "char static_env[] = {\n");
- nvl = nvlist_create(0);
STAILQ_FOREACH(envvar, &envvars, envvar_next) {
if (envvar->env_is_file) {
ifp = fopen(envvar->env_str, "r");
if (ifp == NULL)
err(1, "%s", envvar->env_str);
- while (fgets(line, BUFSIZ, ifp) != NULL)
- process_into_nvlist(line, nvl);
- dump_nvlist(nvl, ofp);
+ while (fgets(line, BUFSIZ, ifp) != NULL) {
+ sanitize_envline(result, line);
+ /* anything left? */
+ if (*result == '\0')
+ continue;
+ fprintf(ofp, "\"%s\\0\"\n", result);
+ }
fclose(ifp);
- } else
- process_into_file(envvar->env_str, ofp);
+ } else {
+ linep = envvar->env_str;
+ sanitize_envline(result, linep);
+ if (*result == '\0')
+ continue;
+ fprintf(ofp, "\"%s\\0\"\n", result);
+ }
}
- nvlist_destroy(nvl);
fprintf(ofp, "\"\\0\"\n};\n");
fclose(ofp);
moveifchanged(path("env.c.new"), path("env.c"));