chiark
/
gitweb
/
~mdw
/
adns
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Version 1.0.
[adns]
/
client
/
adh-main.c
diff --git
a/client/adh-main.c
b/client/adh-main.c
index 81cff540c67ed423d6be74ec0c923fcfaa0b2417..193092a8ef4e31293cf504ad51f8908cb88696d0 100644
(file)
--- a/
client/adh-main.c
+++ b/
client/adh-main.c
@@
-5,11
+5,11
@@
*/
/*
* This file is
*/
/*
* This file is
- * Copyright (C) 1997-
1999
Ian Jackson <ian@davenant.greenend.org.uk>
+ * Copyright (C) 1997-
2000
Ian Jackson <ian@davenant.greenend.org.uk>
*
* It is part of adns, which is
*
* It is part of adns, which is
- * Copyright (C) 1997-
1999
Ian Jackson <ian@davenant.greenend.org.uk>
- * Copyright (C) 1999 Tony Finch <dot@dotat.at>
+ * Copyright (C) 1997-
2000
Ian Jackson <ian@davenant.greenend.org.uk>
+ * Copyright (C) 1999
-2000
Tony Finch <dot@dotat.at>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@
-28,9
+28,22
@@
#include "adnshost.h"
#include "adnshost.h"
+int rcode;
+const char *config_text;
+
+static int used, avail;
+static char *buf;
+
+void quitnow(int rc) {
+ if (ads) adns_finish(ads);
+ free(buf);
+ free(ov_id);
+ exit(rc);
+}
+
void sysfail(const char *what, int errnoval) {
fprintf(stderr,"adnshost failed: %s: %s\n",what,strerror(errnoval));
void sysfail(const char *what, int errnoval) {
fprintf(stderr,"adnshost failed: %s: %s\n",what,strerror(errnoval));
-
exit
(10);
+
quitnow
(10);
}
void usageerr(const char *fmt, ...) {
}
void usageerr(const char *fmt, ...) {
@@
-40,7
+53,7
@@
void usageerr(const char *fmt, ...) {
vfprintf(stderr,fmt,al);
va_end(al);
putc('\n',stderr);
vfprintf(stderr,fmt,al);
va_end(al);
putc('\n',stderr);
-
exit
(11);
+
quitnow
(11);
}
void outerr(void) {
}
void outerr(void) {
@@
-62,7
+75,11
@@
char *xstrsave(const char *str) {
return p;
}
return p;
}
-void of_type(const struct optioninfo *oi, const char *arg) {
+void of_config(const struct optioninfo *oi, const char *arg, const char *arg2) {
+ config_text= arg;
+}
+
+void of_type(const struct optioninfo *oi, const char *arg, const char *arg2) {
static const struct typename {
adns_rrtype type;
const char *desc;
static const struct typename {
adns_rrtype type;
const char *desc;
@@
-100,12
+117,11
@@
void of_type(const struct optioninfo *oi, const char *arg) {
ov_type= tnp->type;
}
ov_type= tnp->type;
}
-int rcode;
-
static void process_optarg(const char *arg,
const char *const **argv_p,
const char *value) {
const struct optioninfo *oip;
static void process_optarg(const char *arg,
const char *const **argv_p,
const char *value) {
const struct optioninfo *oip;
+ const char *arg2;
int invert;
if (arg[0] == '-' || arg[0] == '+') {
int invert;
if (arg[0] == '-' || arg[0] == '+') {
@@
-120,11
+136,19
@@
static void process_optarg(const char *arg,
if (oip->type == ot_funcarg) {
arg= argv_p ? *++(*argv_p) : value;
if (!arg) usageerr("option --%s requires a value argument",oip->lopt);
if (oip->type == ot_funcarg) {
arg= argv_p ? *++(*argv_p) : value;
if (!arg) usageerr("option --%s requires a value argument",oip->lopt);
+ arg2= 0;
+ } else if (oip->type == ot_funcarg2) {
+ assert(argv_p);
+ arg= *++(*argv_p);
+ arg2= arg ? *++(*argv_p) : 0;
+ if (!arg || !arg2)
+ usageerr("option --%s requires two more arguments", oip->lopt);
} else {
if (value) usageerr("option --%s does not take a value",oip->lopt);
arg= 0;
} else {
if (value) usageerr("option --%s does not take a value",oip->lopt);
arg= 0;
+ arg2= 0;
}
}
- opt_do(oip,
arg,invert
);
+ opt_do(oip,
invert,arg,arg2
);
} else if (arg[0] == '-' && arg[1] == 0) {
arg= argv_p ? *++(*argv_p) : value;
if (!arg) usageerr("option `-' must be followed by a domain");
} else if (arg[0] == '-' && arg[1] == 0) {
arg= argv_p ? *++(*argv_p) : value;
if (!arg) usageerr("option `-' must be followed by a domain");
@@
-141,11
+165,11
@@
static void process_optarg(const char *arg,
} else {
if (value) usageerr("two values for option -%s given !",oip->sopt);
}
} else {
if (value) usageerr("two values for option -%s given !",oip->sopt);
}
- opt_do(oip,
arg,invert
);
+ opt_do(oip,
invert,arg,0
);
arg= "";
} else {
if (value) usageerr("option -%s does not take a value",oip->sopt);
arg= "";
} else {
if (value) usageerr("option -%s does not take a value",oip->sopt);
- opt_do(oip,
0,invert
);
+ opt_do(oip,
invert,0,0
);
}
}
}
}
}
}
@@
-155,9
+179,6
@@
static void process_optarg(const char *arg,
}
static void read_stdin(void) {
}
static void read_stdin(void) {
- static int used, avail;
- static char *buf;
-
int anydone, r;
char *newline, *space;
int anydone, r;
char *newline, *space;
@@
-239,5
+260,5
@@
int main(int argc, const char *const *argv) {
}
x_quit:
if (fclose(stdout)) outerr();
}
x_quit:
if (fclose(stdout)) outerr();
-
exit
(rcode);
+
quitnow
(rcode);
}
}