diff --git a/plugins/urlize.c b/plugins/urlize.c
index b9217072e5c3b0b8af5567fc747fef0a4c8527d6..96bbdc00543f8ca2bc9039ac0fffd3f2a6fdbda5 100644 (file)
--- a/plugins/urlize.c
+++ b/plugins/urlize.c
/******************************************************************************
/******************************************************************************
- *
- * 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 <karl@debisschop.net>
- * Written based of concept in urlize.pl
- *
- * Usage: urlize <url> <plugin> <arg1> ... <argN>
- *
- * Description:
- *
- * This plugin wraps the text output of another command (plugin) in HTML
- * <A> 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 *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"
#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
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) {
}
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) {
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 ("<A href=\"%s\">", argv[1]);
printf ("<A href=\"%s\">", argv[1]);
- while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
+ while (fgets (buf, MAX_INPUT_BUFFER - 1, child_process)) {
found++;
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</A>\n", argv[0],
- cmd);
- exit (STATE_UNKNOWN);
- }
+ if (!found)
+ die (STATE_UNKNOWN,
+ _("%s UNKNOWN - No data received from host\nCMD: %s</A>\n"),
+ argv[0], cmd);
/* close the pipe */
result = spclose (child_process);
/* WARNING if output found on stderr */
/* 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 */
result = max_state (result, STATE_WARNING);
/* close stderr */
return result;
}
return result;
}
-void
-print_usage (const char *cmd)
-{
- printf ("Usage:\n %s <url> <plugin> <arg1> ... <argN>\n", cmd);
-}
+
void
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 <kdebisschop@users.sourceforge.net>\n");
+ printf (COPYRIGHT, copyright, email);
+
+ printf (_("\n\
+This plugin wraps the text output of another command (plugin) in HTML\n\
<A> 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\
<A> 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\
Pay close attention to quoting to ensure that the shell passes the expected\n\
data to the plugin. For example, in:\n\
\n\
\n\
You probably want:\n\
\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 <url> <plugin> <arg1> ... <argN>\n", progname);
}
}