socat/xioparam.c

81 lines
2.1 KiB
C
Raw Normal View History

2008-01-28 21:37:16 +00:00
/* source: xioparam.c */
2008-02-17 13:59:16 +00:00
/* Copyright Gerhard Rieger 2001-2007 */
2008-01-27 12:00:08 +00:00
/* Published under the GNU General Public License V.2, see file COPYING */
/* this file contains the source for xio options handling */
#include "xiosysincludes.h"
#include "xioopen.h"
/*#include "xioparam.h" are all in xio.h */
/* options that can be applied to this module */
xioopts_t xioopts = {
false, /* strictopts */
2008-02-17 13:59:16 +00:00
"%", /* pipesep */
2008-01-27 12:00:08 +00:00
":", /* paramsep */
",", /* optionsep */
':', /* ip4portsep */
':', /* ip6portsep */
NULL, /* syslogfac */
'4', /* default_ip */
2008-02-17 13:59:16 +00:00
'4', /* preferred_ip */
"^", /* reversechar */
"|", /* chainsep */
8192, /* bufsiz */
false, /* verbose */
false, /* verbhex */
0, /* debug */
's', /* logopt */
{0,0}, /* total_timeout */
{1,0}, /* pollintv */
{0,500000}, /* closwait */
false, /* lefttoright */
false, /* righttoleft */
0, /* pipetype: two unidirectional socketpairs */
2008-01-27 12:00:08 +00:00
} ;
2008-02-17 13:59:16 +00:00
xioopts_t *xioparams = &xioopts;
2008-01-27 12:00:08 +00:00
/* allow application to set xioopen options */
int xiosetopt(char what, const char *arg) {
switch (what) {
case 's': xioopts.strictopts = true; break;
case 'p': if ((xioopts.pipesep = strdup(arg)) == NULL) {
Error1("strdup("F_Zu"): out of memory", strlen(arg)+1);
return -1;
}
break;
case 'o': xioopts.ip4portsep = arg[0];
if (arg[1] != '\0') {
Error2("xiosetopt('%c', \"%s\"): port separator must be single character",
what, arg);
return -1;
}
break;
case 'l': xioopts.logopt = *arg; break;
case 'y': xioopts.syslogfac = arg; break;
default:
Error2("xiosetopt('%c', \"%s\"): unknown option",
what, arg?arg:"NULL");
return -1;
}
return 0;
}
int xioinqopt(char what, char *arg, size_t n) {
switch (what) {
case 's': return xioopts.strictopts;
case 'p': strncpy(arg, xioopts.pipesep, n);
return 0;
case 'o': return xioopts.ip4portsep;
case 'l': return xioopts.logopt;
default:
Error3("xioinqopt('%c', \"%s\", "F_Zu"): unknown option",
what, arg, n);
return -1;
}
return 0;
}