mirror of
https://github.com/moparisthebest/socat
synced 2024-11-13 20:45:02 -05:00
68 lines
1.7 KiB
C
68 lines
1.7 KiB
C
/* source: xioparam.c */
|
|
/* Copyright Gerhard Rieger 2001-2006 */
|
|
/* 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 */
|
|
"!!", /* pipesep */
|
|
":", /* paramsep */
|
|
",", /* optionsep */
|
|
':', /* ip4portsep */
|
|
':', /* ip6portsep */
|
|
'\0', /* logopt */
|
|
NULL, /* syslogfac */
|
|
'4', /* default_ip */
|
|
'4' /* preferred_ip */
|
|
} ;
|
|
|
|
|
|
/* 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;
|
|
}
|