X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Furlize.c;h=96bbdc00543f8ca2bc9039ac0fffd3f2a6fdbda5;hb=f573447d1f6dbf25b58bbfea81226a2ae3736555;hp=b9217072e5c3b0b8af5567fc747fef0a4c8527d6;hpb=68b985f6a0d34e2e81270e68447d0f57818c563a;p=nagiosplug.git diff --git a/plugins/urlize.c b/plugins/urlize.c index b921707..96bbdc0 100644 --- a/plugins/urlize.c +++ b/plugins/urlize.c @@ -1,117 +1,116 @@ /****************************************************************************** - * - * urlize.c - * - * Program: plugin wrapper for Nagios - * License: GPL - * Copyright (c) 2000 Karl DeBisschop (kdebiss@alum.mit.edu) - * - * Last Modified: $Date$ - * 2000-06-01 Karl DeBisschop - * Written based of concept in urlize.pl - * - * Usage: urlize ... - * - * Description: - * - * This plugin wraps the text output of another command (plugin) in HTML - * tags, thus displaying the plugin output in as a clickable link in - * the Nagios status screen. The return status is the same as the plugin - * invoked by urlize - * - * License Information: - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - *****************************************************************************/ + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id$ + +******************************************************************************/ const char *progname = "urlize"; +const char *revision = "$Revision$"; +const char *copyright = "2000-2004"; +const char *email = "nagiosplug-devel@lists.sourceforge.net"; #include "common.h" #include "utils.h" #include "popen.h" -void print_usage (const char *); -void print_help (const char *); +void print_help (void); +void print_usage (void); int main (int argc, char **argv) { - int i = 0, found = 0, result = STATE_UNKNOWN; - char *cmd = NULL; - char input_buffer[MAX_INPUT_BUFFER]; - - if (argc < 2) { - print_usage (progname); - exit (STATE_UNKNOWN); - } - - if (!strcmp (argv[1], "-h") || !strcmp (argv[1], "--help")) { - print_help (argv[0]); - exit (STATE_OK); - } - - if (!strcmp (argv[1], "-V") || !strcmp (argv[1], "--version")) { - print_revision (progname, "$Revision$"); - exit (STATE_OK); + int found = 0, result = STATE_UNKNOWN; + char *url = NULL; + char *cmd; + char *buf; + + int c; + int option = 0; + static struct option longopts[] = { + {"help", no_argument, 0, 'h'}, + {"version", no_argument, 0, 'V'}, + {"url", required_argument, 0, 'u'}, + {0, 0, 0, 0} + }; + + setlocale (LC_ALL, ""); + bindtextdomain (PACKAGE, LOCALEDIR); + textdomain (PACKAGE); + + while (1) { + c = getopt_long (argc, argv, "+hVu:", longopts, &option); + + if (c == -1 || c == EOF) + break; + + switch (c) { + case 'h': /* help */ + print_help (); + exit (EXIT_SUCCESS); + break; + case 'V': /* version */ + print_revision (progname, revision); + exit (EXIT_SUCCESS); + break; + case 'u': + url = strdup (argv[optind]); + break; + case '?': + default: + usage2 (_("Unknown argument"), optarg); + } } - if (argc < 2) { - print_usage (progname); - exit (STATE_UNKNOWN); - } + if (url == NULL) + url = strdup (argv[optind++]); - asprintf (&cmd, "%s", argv[2]); - for (i = 3; i < argc; i++) { - asprintf (&cmd, "%s %s", cmd, argv[i]); + cmd = strdup (argv[optind++]); + for (c = optind; c < argc; c++) { + asprintf (&cmd, "%s %s", cmd, argv[c]); } child_process = spopen (cmd); if (child_process == NULL) { - printf ("Could not open pipe: %s\n", cmd); + printf (_("Could not open pipe: %s\n"), cmd); exit (STATE_UNKNOWN); } child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r"); if (child_stderr == NULL) { - printf ("Could not open stderr for %s\n", cmd); + printf (_("Could not open stderr for %s\n"), cmd); } + buf = malloc(MAX_INPUT_BUFFER); printf ("", argv[1]); - while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { + while (fgets (buf, MAX_INPUT_BUFFER - 1, child_process)) { found++; - if (index (input_buffer, '\n')) { - input_buffer[strcspn (input_buffer, "\n")] = 0; - printf ("%s", input_buffer); - } - else { - printf ("%s", input_buffer); - } + printf ("%s", buf); } - if (!found) { - printf ("%s problem - No data recieved from host\nCMD: %s\n", argv[0], - cmd); - exit (STATE_UNKNOWN); - } + if (!found) + die (STATE_UNKNOWN, + _("%s UNKNOWN - No data received from host\nCMD: %s\n"), + argv[0], cmd); /* close the pipe */ result = spclose (child_process); /* WARNING if output found on stderr */ - if (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) + if (fgets (buf, MAX_INPUT_BUFFER - 1, child_stderr)) result = max_state (result, STATE_WARNING); /* close stderr */ @@ -121,24 +120,25 @@ main (int argc, char **argv) return result; } -void -print_usage (const char *cmd) -{ - printf ("Usage:\n %s ... \n", cmd); -} + void -print_help (const char *cmd) +print_help (void) { - print_revision (progname, "$Revision$"); - printf ("\ -Copyright (c) 2000 Karl DeBisschop (kdebiss@alum.mit.edu)\n\n\ -\nThis plugin wraps the text output of another command (plugin) in HTML\n\ + print_revision (progname, revision); + + printf ("Copyright (c) 2000 Karl DeBisschop \n"); + printf (COPYRIGHT, copyright, email); + + printf (_("\n\ +This plugin wraps the text output of another command (plugin) in HTML\n\ tags, thus displaying the plugin output in as a clickable link in\n\ the Nagios status screen. The return status is the same as the invoked\n\ -plugin.\n\n"); - print_usage (cmd); - printf ("\n\ +plugin.\n\n")); + + print_usage (); + + printf (_("\n\ Pay close attention to quoting to ensure that the shell passes the expected\n\ data to the plugin. For example, in:\n\ \n\ @@ -150,6 +150,15 @@ the shell will remove the single quotes and urlize will see:\n\ \n\ You probably want:\n\ \n\ - urlize http://example.com/ \"check_http -H example.com -r 'two words'\"\n"); - exit (STATE_OK); + urlize http://example.com/ \"check_http -H example.com -r 'two words'\"\n")); + + printf (_(UT_SUPPORT)); +} + + + +void +print_usage (void) +{ + printf ("Usage:\n %s ... \n", progname); }