chiark
/
gitweb
/
~mdw
/
tripe
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
proxy/tripe-mitm.c: Allow user control over the delimiter.
[tripe]
/
proxy
/
tripe-mitm.c
diff --git
a/proxy/tripe-mitm.c
b/proxy/tripe-mitm.c
index ab05a88215b16c72e20313605c517ab30f250e1a..2530f15118a99336a07825b7daba21afcff66b7e 100644
(file)
--- a/
proxy/tripe-mitm.c
+++ b/
proxy/tripe-mitm.c
@@
-97,6
+97,7
@@
static peer peers[2];
static unsigned npeer = 0;
static key_file keys;
static grand *rng;
static unsigned npeer = 0;
static key_file keys;
static grand *rng;
+static const char *delim = ":";
#define PASS(f, buf, sz) ((f) ? (f)->func((f), (buf), (sz)) : (void)0)
#define RND(i) (rng->ops->range(rng, (i)))
#define PASS(f, buf, sz) ((f) ? (f)->func((f), (buf), (sz)) : (void)0)
#define RND(i) (rng->ops->range(rng, (i)))
@@
-568,11
+569,11
@@
static void parse(char *p)
unsigned c = 0;
const struct cmdtab *ct;
unsigned c = 0;
const struct cmdtab *ct;
- p = strtok(p,
":"
);
+ p = strtok(p,
delim
);
if (!p || *p == '#') return;
do {
v[c++] = p;
if (!p || *p == '#') return;
do {
v[c++] = p;
- p = strtok(0,
":"
);
+ p = strtok(0,
delim
);
} while (p && c < AVMAX - 1);
v[c] = 0;
for (ct = cmdtab; ct->name; ct++) {
} while (p && c < AVMAX - 1);
v[c] = 0;
for (ct = cmdtab; ct->name; ct++) {
@@
-590,7
+591,7
@@
static void version(FILE *fp)
{ pquis(fp, "$, TrIPE version " VERSION "\n"); }
static void usage(FILE *fp)
{ pquis(fp, "$, TrIPE version " VERSION "\n"); }
static void usage(FILE *fp)
- { pquis(fp, "Usage: $ [-k KEYRING] DIRECTIVE...\n"); }
+ { pquis(fp, "Usage: $ [-
d CHAR] [-
k KEYRING] DIRECTIVE...\n"); }
static void help(FILE *fp)
{
static void help(FILE *fp)
{
@@
-604,6
+605,7
@@
Options:\n\
-v, --version Show the version number.\n\
-u, --usage Show terse usage summary.\n\
\n\
-v, --version Show the version number.\n\
-u, --usage Show terse usage summary.\n\
\n\
+-d, --delimiter=CHAR Use CHAR rather than `:' as delimiter.\n\
-k, --keyring=FILE Fetch keys from FILE.\n\
\n\
Directives:\n\
-k, --keyring=FILE Fetch keys from FILE.\n\
\n\
Directives:\n\
@@
-638,14
+640,20
@@
int main(int argc, char *argv[])
{ "help", 0, 0, 'h' },
{ "version", 0, 0, 'v' },
{ "usage", 0, 0, 'u' },
{ "help", 0, 0, 'h' },
{ "version", 0, 0, 'v' },
{ "usage", 0, 0, 'u' },
+ { "delimiter", OPTF_ARGREQ, 0, 'd' },
{ "keyring", OPTF_ARGREQ, 0, 'k' },
{ 0, 0, 0, 0 }
};
{ "keyring", OPTF_ARGREQ, 0, 'k' },
{ 0, 0, 0, 0 }
};
- if ((i = mdwopt(argc, argv, "hvuk:", opt, 0, 0, 0)) < 0) break;
+ if ((i = mdwopt(argc, argv, "hvu
d:
k:", opt, 0, 0, 0)) < 0) break;
switch (i) {
case 'h': help(stdout); exit(0);
case 'v': version(stdout); exit(0);
case 'u': usage(stdout); exit(0);
switch (i) {
case 'h': help(stdout); exit(0);
case 'v': version(stdout); exit(0);
case 'u': usage(stdout); exit(0);
+ case 'd':
+ if (!optarg[0] || optarg[1])
+ die(1, "delimiter must be a single character");
+ delim = optarg;
+ break;
case 'k': kfname = optarg; break;
default: f |= f_bogus; break;
}
case 'k': kfname = optarg; break;
default: f |= f_bogus; break;
}