From 19559b1884084ddd39ba3182d3a16e60e07e54fc Mon Sep 17 00:00:00 2001 From: Ton Voon Date: Wed, 22 Mar 2006 15:45:20 +0000 Subject: Options to change line ends for -s and -q (John Rouillard - 1346104) git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1344 f882894a-f735-0410-b71e-b25c423dba1c diff --git a/THANKS.in b/THANKS.in index 3a1090e..3b2405d 100644 --- a/THANKS.in +++ b/THANKS.in @@ -178,3 +178,4 @@ Jason Crawford Steven Kreuzer Johan Fischer Sakari Lehtonen +John Rouillard diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c index 5915af2..5c287b7 100644 --- a/plugins/check_tcp.c +++ b/plugins/check_tcp.c @@ -54,6 +54,8 @@ static int server_port = 0; static char *server_address = NULL; static char *server_send = NULL; static char *server_quit = NULL; +char *lineend = ""; +char *lineendquit = "\r\n"; static char **server_expect; static size_t server_expect_count = 0; static size_t maxbytes = 0; @@ -369,6 +371,7 @@ process_arguments (int argc, char **argv) {"timeout", required_argument, 0, 't'}, {"protocol", required_argument, 0, 'P'}, {"port", required_argument, 0, 'p'}, + {"lineend", required_argument, 0, 'l'}, {"send", required_argument, 0, 's'}, {"expect", required_argument, 0, 'e'}, {"maxbytes", required_argument, 0, 'm'}, @@ -410,7 +413,7 @@ process_arguments (int argc, char **argv) } while (1) { - c = getopt_long (argc, argv, "+hVv46H:s:e:q:m:c:w:t:p:C:W:d:Sr:jD:M:", + c = getopt_long (argc, argv, "+hVv46H:l:s:e:q:m:c:w:t:p:C:W:d:Sr:jD:M:", longopts, &option); if (c == -1 || c == EOF || c == 1) @@ -478,8 +481,30 @@ process_arguments (int argc, char **argv) else server_port = atoi (optarg); break; + case 'l': + switch (*optarg) { + case 'n': + lineend = strdup("\n"); + lineendquit = lineend; + break; + case 'r': + lineend = strdup("\r"); + lineendquit = lineend; + break; + case 'b': + lineend = strdup("\r\n"); + lineendquit = lineend; + break; + case 'e': + lineend = strdup(""); + lineendquit = lineend; + break; + default: + usage4 (_("Unrecognized option to -l, must be r, n, b or e")); + } + break; case 's': - server_send = optarg; + asprintf(&server_send, "%s%s", optarg, lineend); break; case 'e': /* expect string (may be repeated) */ EXPECT = NULL; @@ -496,7 +521,7 @@ process_arguments (int argc, char **argv) else maxbytes = strtol (optarg, NULL, 0); case 'q': - asprintf(&server_quit, "%s\r\n", optarg); + asprintf(&server_quit, "%s%s", optarg, lineendquit); break; case 'r': if (!strncmp(optarg,"ok",2)) @@ -575,6 +600,10 @@ print_help (void) printf (_(UT_IPv46)); printf (_("\ + -l, --lineend=b|e|n|r\n\ + Ending on -s and -q strings. b - both: style, e - empty no\n\ + end, n - newline: newline end, r - return: carriage return end\n\ + Default is \"-l e -s -l b -q \".\n\ -s, --send=STRING\n\ String to send to the server\n\ -e, --expect=STRING\n\ @@ -620,6 +649,6 @@ Usage: %s -H host -p port [-w ] [-c ]\n\ [-s ] [-e ] [-q ]\n\ [-m ] [-d ] [-t ]\n\ [-r ] [-M ] [-v] [-4|-6] [-j]\n\ - [-D ] [-S ]\n", progname); + [-D ] [-S ] [-l ]\n", progname); } -- cgit v0.10-9-g596f