aboutsummaryrefslogtreecommitdiffstats
path: root/plpprint
diff options
context:
space:
mode:
authorFritz Elfert <felfert@to.com>2002-03-06 02:29:40 +0000
committerFritz Elfert <felfert@to.com>2002-03-06 02:29:40 +0000
commita58750b626d7b1493a8cceae2f91b67e5f473ffb (patch)
treeebf1ed14b480c8e05e2e7e77bdc0114839092b1c /plpprint
parent98cb2c4a2927ea5990ecfe7bb380624f9b838e61 (diff)
downloadplptools-a58750b626d7b1493a8cceae2f91b67e5f473ffb.tar.gz
plptools-a58750b626d7b1493a8cceae2f91b67e5f473ffb.tar.bz2
plptools-a58750b626d7b1493a8cceae2f91b67e5f473ffb.zip
- Unified arguments
Diffstat (limited to 'plpprint')
-rw-r--r--plpprint/plpprintd.cc46
1 files changed, 38 insertions, 8 deletions
diff --git a/plpprint/plpprintd.cc b/plpprint/plpprintd.cc
index a3d33cd..9d43281 100644
--- a/plpprint/plpprintd.cc
+++ b/plpprint/plpprintd.cc
@@ -684,13 +684,13 @@ help() {
cout <<
"Options of plpprintd:\n"
"\n"
- " -d, --debug Debugging, do not fork.\n"
- " -h, --help Display this text.\n"
- " -v, --verbose Increase verbosity.\n"
- " -V, --version Print version and exit.\n"
- " -p, --port=NUM Connect to port NUM.\n"
- " -s, --spooldir=DIR Specify spooldir DIR.\n"
- " -c, --printcmd=CMD Specify print command.\n";
+ " -d, --debug Debugging, do not fork.\n"
+ " -h, --help Display this text.\n"
+ " -v, --verbose Increase verbosity.\n"
+ " -V, --version Print version and exit.\n"
+ " -p, --port=[HOST:]PORT Connect to port PORT on host HOST.\n"
+ " -s, --spooldir=DIR Specify spooldir DIR.\n"
+ " -c, --printcmd=CMD Specify print command.\n";
}
static void
@@ -710,10 +710,40 @@ static struct option opts[] = {
{NULL, 0, 0, 0 }
};
+static void
+parse_destination(const char *arg, const char **host, int *port)
+{
+ if (!arg)
+ return;
+ // We don't want to modify argv, therefore copy it first ...
+ char *argcpy = strdup(arg);
+ char *pp = strchr(argcpy, ':');
+
+ if (pp) {
+ // host.domain:400
+ // 10.0.0.1:400
+ *pp ++= '\0';
+ *host = argcpy;
+ } else {
+ // 400
+ // host.domain
+ // host
+ // 10.0.0.1
+ if (strchr(argcpy, '.') || !isdigit(argcpy[0])) {
+ *host = argcpy;
+ pp = 0L;
+ } else
+ pp = argcpy;
+ }
+ if (pp)
+ *port = atoi(pp);
+}
+
int
main(int argc, char **argv)
{
ppsocket *skt;
+ const char *host = "127.0.0.1";
int status = 0;
int sockNum = DPORT;
int ret = 0;
@@ -745,7 +775,7 @@ main(int argc, char **argv)
help();
return 0;
case 'p':
- sscanf(optarg, "%hd", &sockNum);
+ parse_destination(optarg, &host, &sockNum);
break;
case 's':
spooldir = strdup(optarg);