mirror of
https://repo.or.cz/socat.git
synced 2024-12-22 15:32:35 +00:00
68 lines
1.8 KiB
C
68 lines
1.8 KiB
C
/* source: xioparam.c */
|
|
/* Copyright Gerhard Rieger and contributors (see file CHANGES) */
|
|
/* 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':
|
|
arg[0] = '\0'; strncat(arg, xioopts.pipesep, n-1);
|
|
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;
|
|
}
|