+struct buildargs {
+ const char **v;
+ int n, max;
+};
+
+static void addarg(struct buildargs *args, const char *a) {
+ if (args->n > args->max) error("too many arguments");
+ args->v[args->n++]= a;
+}
+
+static void add_userv_var(const char *en, const char *ev,
+ struct buildargs *args) {
+ size_t l;
+ char *a;
+
+ l= strlen(ev); if (l > MAX_ENVVAR_VALUE) error("environment variable too long");
+ a= xmalloc(strlen(en)+l+6);
+ sprintf(a,"-DE_%s=%s",en,ev);
+ addarg(args, a);
+}
+