Explorar el Código

markup for translation, use common.h, fix problems compiling

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@638 f882894a-f735-0410-b71e-b25c423dba1c
Karl DeBisschop hace 22 años
padre
commit
099a9023f6
Se han modificado 2 ficheros con 176 adiciones y 128 borrados
  1. 1 1
      plugins/Makefile.am
  2. 175 127
      plugins/check_ide-smart.c

+ 1 - 1
plugins/Makefile.am

@@ -21,7 +21,7 @@ check_tcp_programs = check_ftp check_imap check_nntp check_pop check_udp2 \
 
 EXTRA_PROGRAMS = check_mysql check_radius check_pgsql check_snmp check_hpjd \
 	check_swap check_fping check_ldap check_game check_dig \
-	check_nagios check_by_ssh check_dns check_nt
+	check_nagios check_by_ssh check_dns check_nt check_ide-smart
 
 EXTRA_DIST = t utils.c netutils.c popen.c utils.h netutils.h popen.h common.h \
 	getaddrinfo.c getaddrinfo.h gethostbyname.c gethostbyname.h

+ 175 - 127
plugins/check_ide-smart.c

@@ -16,7 +16,7 @@
  *	     - Returns 2 on prefailure
  *	     - Returns -1 not too often
  *
- *  ide-smart 1.3 - IDE S.M.A.R.T. cheking tool
+ *  ide-smart 1.3 - IDE S.M.A.R.T. checking tool
  *  Copyright (C) 1998-1999 Ragnar Hojland Espinosa <ragnar@lightside.dhis.org>
  *		  1998	    Gadi Oxman <gadio@netvision.net.il>
  *
@@ -33,15 +33,13 @@
  *  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.
- */  
+ */
 	
-#include <stdio.h>
-#include <sys/types.h>
+#include "common.h"
+#include "utils.h"
 #include <sys/stat.h>
 #include <sys/ioctl.h>
 #include <fcntl.h>
-#include <string.h>
-#include <unistd.h>
 #include <linux/hdreg.h>
 #include <linux/types.h>
 #include <errno.h>
@@ -56,13 +54,15 @@
 #define ADVISORY 1
 #define OPERATIONAL 0
 #define UNKNOWN -1
-	typedef struct threshold_s
+
+typedef struct threshold_s
 {
 	__u8 id;
 	__u8 threshold;
 	__u8 reserved[10];
 }
 __attribute__ ((packed)) threshold_t;
+
 typedef struct thresholds_s
 {
 	__u16 revision;
@@ -72,6 +72,7 @@ typedef struct thresholds_s
 	__u8 checksum;
 }
 __attribute__ ((packed)) thresholds_t;
+
 typedef struct value_s
 {
 	__u8 id;
@@ -80,6 +81,7 @@ typedef struct value_s
 	__u8 vendor[8];
 }
 __attribute__ ((packed)) value_t;
+
 typedef struct values_s
 {
 	__u16 revision;
@@ -95,49 +97,46 @@ typedef struct values_s
 	__u8 checksum;
 }
 __attribute__ ((packed)) values_t;
+
 struct
 {
 	__u8 value;
 	char *text;
- }
+}
+
 offline_status_text[] =
-{
-	 {
-	0x00, "NeverStarted"}
-	,  {
-	0x02, "Completed"}
-	,  {
-	0x04, "Suspended"}
-	,  {
-	0x05, "Aborted"}
-	,  {
-	0x06, "Failed"}
-	,  {
-	0, 0}
-};
+	{
+		{0x00, "NeverStarted"},
+		{0x02, "Completed"},
+		{0x04, "Suspended"},
+		{0x05, "Aborted"},
+		{0x06, "Failed"},
+		{0, 0}
+	};
+
 struct
 {
 	__u8 value;
 	char *text;
- }
+}
+
 smart_command[] =
-{
-	 {
-	SMART_ENABLE, "SMART_ENABLE"}
-	,  {
-	SMART_DISABLE, "SMART_DISABLE"}
-	,  {
-	SMART_IMMEDIATE_OFFLINE, "SMART_IMMEDIATE_OFFLINE"}
-	,  {
-	SMART_AUTO_OFFLINE, "SMART_AUTO_OFFLINE"}
-, };
+	{
+		{SMART_ENABLE, "SMART_ENABLE"},
+		{SMART_DISABLE, "SMART_DISABLE"},
+		{SMART_IMMEDIATE_OFFLINE, "SMART_IMMEDIATE_OFFLINE"},
+		{SMART_AUTO_OFFLINE, "SMART_AUTO_OFFLINE"}
+	};
 
 
 /* Index to smart_command table, keep in order */ 
 enum SmartCommand 
-{ SMART_CMD_ENABLE, SMART_CMD_DISABLE, SMART_CMD_IMMEDIATE_OFFLINE,
+	{ SMART_CMD_ENABLE,
+		SMART_CMD_DISABLE,
+		SMART_CMD_IMMEDIATE_OFFLINE,
 		SMART_CMD_AUTO_OFFLINE 
-};
+	};
+
 char *
 get_offline_text (int status) 
 {
@@ -149,19 +148,25 @@ get_offline_text (int status)
 	}
 	return "unknown";
 }
+
 int
 smart_read_values (int fd, values_t * values) 
 {
-	__u8 args[4 + 512] = {
-	WIN_SMART, 0, SMART_READ_VALUES, 1,};
+	int e;
+	__u8 args[4 + 512];
+	args[0] = WIN_SMART;
+	args[1] = 0;
+	args[2] = SMART_READ_VALUES;
+	args[3] = 1;
 	if (ioctl (fd, HDIO_DRIVE_CMD, &args)) {
-		int e = errno;
-		printf ("Critical: SMART_READ_VALUES: %s\n", strerror (errno));
+		e = errno;
+		printf (_("Critical: SMART_READ_VALUES: %s\n"), strerror (errno));
 		return e;
 	}
 	memcpy (values, args + 4, 512);
 	return 0;
 }
+
 int
 values_not_passed (values_t * p, thresholds_t * t) 
 {
@@ -184,6 +189,7 @@ values_not_passed (values_t * p, thresholds_t * t)
 	}
 	return (passed ? -failed : 2);
 }
+
 int
 net_saint (values_t * p, thresholds_t * t) 
 {
@@ -219,34 +225,40 @@ net_saint (values_t * p, thresholds_t * t)
 	}
 	switch (status) {
 	case PREFAILURE:
-		printf ("Critical: %d Harddrive PreFailure%cDetected! " 
-						 "%d/%d tests failed.\n", prefailure, prefailure > 1 ? 's' : ' ',
-						 failed, total);
+		printf (_("Critical: %d Harddrive PreFailure%cDetected! %d/%d tests failed.\n"),
+		        prefailure,
+		        prefailure > 1 ? 's' : ' ',
+		        failed,
+	          total);
 		break;
 	case ADVISORY:
-		printf ("Warning: %d Harddrive Advisor%s Detected. " 
-						 "%d/%d tests failed.\n", advisory, advisory > 1 ? "ies" : "y",
-						 failed, total);
+		printf (_("Warning: %d Harddrive Advisor%s Detected. %d/%d tests failed.\n"),
+		        advisory,
+		        advisory > 1 ? "ies" : "y",
+		        failed,
+		        total);
 		break;
 	case OPERATIONAL:
-		printf ("Status: Operational (%d/%d tests passed)\n", passed, total);
+		printf (_("Status: Operational (%d/%d tests passed)\n"), passed, total);
 		break;
 	default:
-		printf ("Error: Status '%d' uknown. %d/%d tests passed\n", status,
-						 passed, total);
+		printf (_("Error: Status '%d' uknown. %d/%d tests passed\n"), status,
+						passed, total);
 		status = -1;
 		break;
 	}
 	return status;
 }
+
 void
 print_value (value_t * p, threshold_t * t) 
 {
 	printf ("Id=%3d, Status=%2d {%s , %s}, Value=%3d, Threshold=%3d, %s\n",
-					 p->id, p->status, p->status & 1 ? "PreFailure" : "Advisory   ",
-					 p->status & 2 ? "OnLine " : "OffLine", p->value, t->threshold,
-					 p->value > t->threshold ? "Passed" : "Failed");
+					p->id, p->status, p->status & 1 ? "PreFailure" : "Advisory   ",
+					p->status & 2 ? "OnLine " : "OffLine", p->value, t->threshold,
+					p->value > t->threshold ? "Passed" : "Failed");
 }
+
 void
 print_values (values_t * p, thresholds_t * t) 
 {
@@ -259,18 +271,26 @@ print_values (values_t * p, thresholds_t * t)
 		}
 	}
 	printf
-		("OffLineStatus=%d {%s}, AutoOffLine=%s, OffLineTimeout=%d minutes\n",
-		 p->offline_status, get_offline_text (p->offline_status & 0x7f),
-		 (p->offline_status & 0x80 ? "Yes" : "No"), p->offline_timeout / 60);
-	printf ("OffLineCapability=%d {%s %s %s}\n", p->offline_capability,
-					 p->offline_capability & 1 ? "Immediate" : "",
-					 p->offline_capability & 2 ? "Auto" : "",
-					 p->offline_capability & 4 ? "AbortOnCmd" : "SuspendOnCmd");
-	printf ("SmartRevision=%d, CheckSum=%d, SmartCapability=%d {%s %s}\n",
-					 p->revision, p->checksum, p->smart_capability,
-					 p->smart_capability & 1 ? "SaveOnStandBy" : "",
-					 p->smart_capability & 2 ? "AutoSave" : "");
+		(_("OffLineStatus=%d {%s}, AutoOffLine=%s, OffLineTimeout=%d minutes\n"),
+		 p->offline_status,
+		 get_offline_text (p->offline_status & 0x7f),
+		 (p->offline_status & 0x80 ? "Yes" : "No"),
+		 p->offline_timeout / 60);
+	printf
+		(_("OffLineCapability=%d {%s %s %s}\n"),
+		 p->offline_capability,
+		 p->offline_capability & 1 ? "Immediate" : "",
+		 p->offline_capability & 2 ? "Auto" : "",
+		 p->offline_capability & 4 ? "AbortOnCmd" : "SuspendOnCmd");
+	printf
+		(_("SmartRevision=%d, CheckSum=%d, SmartCapability=%d {%s %s}\n"),
+		 p->revision,
+		 p->checksum,
+		 p->smart_capability,
+		 p->smart_capability & 1 ? "SaveOnStandBy" : "",
+		 p->smart_capability & 2 ? "AutoSave" : "");
 }
+
 void
 print_thresholds (thresholds_t * p) 
 {
@@ -281,39 +301,49 @@ print_thresholds (thresholds_t * p)
 	for (i = 0; i < NR_ATTRIBUTES; i++) {
 		if (threshold->id) {
 			printf ("Id=%3d, Threshold=%3d\n", threshold->id,
-							 threshold->threshold); }
+							threshold->threshold); }
 		++threshold;
 	}
 	printf ("CheckSum=%d\n", p->checksum);
 }
+
 int
 smart_cmd_simple (int fd, enum SmartCommand command, __u8 val0,
 									char show_error) 
 {
-	__u8 args[4] = {
-	WIN_SMART, val0, smart_command[command].value, 0};
 	int e = 0;
+	__u8 args[4];
+	args[0] = WIN_SMART;
+	args[1] = val0;
+	args[2] = smart_command[command].value;
+	args[3] = 0;
 	if (ioctl (fd, HDIO_DRIVE_CMD, &args)) {
 		e = errno;
 		if (show_error) {
-			printf ("Critical: %s: %s\n", smart_command[command].text,
-							 strerror (errno)); }
+			printf (_("Critical: %s: %s\n"), smart_command[command].text, strerror (errno));
+		}
 	}
 	return e;
 }
+
 int
 smart_read_thresholds (int fd, thresholds_t * thresholds) 
 {
-	__u8 args[4 + 512] = {
-	WIN_SMART, 0, SMART_READ_THRESHOLDS, 1,};
+	int e;
+	__u8 args[4 + 512];
+	args[0] = WIN_SMART;
+  args[1] = 0;
+  args[2] = SMART_READ_THRESHOLDS;
+  args[3] = 1;
 	if (ioctl (fd, HDIO_DRIVE_CMD, &args)) {
-		int e = errno;
-		printf ("Critical: SMART_READ_THRESHOLDS: %s\n", strerror (errno));
+		e = errno;
+		printf (_("Critical: SMART_READ_THRESHOLDS: %s\n"), strerror (errno));
 		return e;
 	}
 	memcpy (thresholds, args + 4, 512);
 	return 0;
 }
+
 void
 show_version () 
 {
@@ -321,18 +351,28 @@ show_version ()
 	printf ("Nagios feature - Robert Dale <rdale@digital-mission.com>\n");
 	printf ("(C) 1999 Ragnar Hojland Espinosa <ragnar@lightside.dhis.org>\n");
 }
+
 void
 show_help () 
 {
-	printf ("Usage: check_ide-smart [DEVICE] [OPTION]\n" 
-					 "	   -d, --device=DEVICE	Select device DEVICE\n" 
-					 "	   -i, --immediate	Perform immediately offline tests\n" 
-					 "	   -q, --quiet-check	Returns the number of failed tests\n" 
-					 "	   -1, --auto-on	Turn on automatic offline tests\n" 
-					 "	   -0, --auto-off	Turn off automatic offline tests\n" 
-					 "	   -n, --net-saint	Output suitable for Net Saint\n" 
-					 "	   -h, --help\n"  "	   -V, --version\n");
+	printf (_("\
+Usage: check_ide-smart [DEVICE] [OPTION]\n\
+ -d, --device=DEVICE\n\
+    Select device DEVICE\n\
+ -i, --immediate\n\
+    Perform immediately offline tests\n\
+ -q, --quiet-check\n\
+    Returns the number of failed tests\n\
+ -1, --auto-on\n\
+    Turn on automatic offline tests\n\
+ -0, --auto-off\n\
+    Turn off automatic offline tests\n\
+ -n, --net-saint\n\
+    Output suitable for Net Saint\n\
+ -h, --help\n\
+ -V, --version\n"));
 }
+
 int
 main (int argc, char *argv[]) 
 {
@@ -340,9 +380,13 @@ main (int argc, char *argv[])
 	int command = -1;
 	int o, longindex;
 	int retval = 0;
-	
-	const struct option longopts[] = { 
-			{"device", required_argument, 0, 'd'}, 
+
+	thresholds_t thresholds;
+	values_t values;
+	int fd;
+
+	static struct option longopts[] = { 
+		{"device", required_argument, 0, 'd'}, 
 		{"immediate", no_argument, 0, 'i'}, 
 		{"quiet-check", no_argument, 0, 'q'}, 
 		{"auto-on", no_argument, 0, '1'}, 
@@ -351,13 +395,14 @@ main (int argc, char *argv[])
 		{"help", no_argument, 0, 'h'}, 
 		{"version", no_argument, 0, 'V'}, {0, 0, 0, 0} 
 	};
-	
-		while (1) {
+
+	while (1) {
 		
-			o = getopt_long (argc, argv, "+d:iq10nhV", longopts, &longindex);
+		o = getopt_long (argc, argv, "+d:iq10nhV", longopts, &longindex);
 		
-			if (o == -1 || o == EOF)
+		if (o == -1 || o == EOF)
 			break;
+
 		switch (o) {
 		case 'd':
 			device = optarg;
@@ -384,57 +429,60 @@ main (int argc, char *argv[])
 			show_version ();
 			return 0;
 		default:
-			printf ("Try `%s --help' for more information.\n", argv[0]);
+			printf (_("Try `%s --help' for more information.\n"), argv[0]);
 			return 1;
 		}
+
 		if (optind < argc) {
 			device = argv[optind];
 		}
+
 		if (!device) {
 			show_help ();
 			show_version ();
 			return -1;
 		}
-		if (1) {
-			thresholds_t thresholds;
-			values_t values;
-			int fd = open (device, O_RDONLY);
-			if (fd < 0) {
-				printf ("Critical: Couldn't open device: %s\n", strerror (errno));
-				return 2;
-			}
-			if (smart_cmd_simple (fd, SMART_CMD_ENABLE, 0, TRUE)) {
-				printf ("Critical: SMART_CMD_ENABLE\n");
-				return 2;
-			}
-			switch (command) {
-			case 0:
-				retval = smart_cmd_simple (fd, SMART_CMD_AUTO_OFFLINE, 0, TRUE);
-				break;
-			case 1:
-				retval = smart_cmd_simple (fd, SMART_CMD_AUTO_OFFLINE, 0xF8, TRUE);
-				break;
-			case 2:
-				retval = smart_cmd_simple (fd, SMART_CMD_IMMEDIATE_OFFLINE, 0, TRUE);
-				break;
-			case 3:
-				smart_read_values (fd, &values);
-				smart_read_thresholds (fd, &thresholds);
-				retval = values_not_passed (&values, &thresholds);
-				break;
-			case 4:
-				smart_read_values (fd, &values);
-				smart_read_thresholds (fd, &thresholds);
-				retval = net_saint (&values, &thresholds);
-				break;
-			default:
-				smart_read_values (fd, &values);
-				smart_read_thresholds (fd, &thresholds);
-				print_values (&values, &thresholds);
-				break;
-			}
-			close (fd);
+
+		fd = open (device, O_RDONLY);
+
+		if (fd < 0) {
+			printf (_("Critical: Couldn't open device: %s\n"), strerror (errno));
+			return 2;
+		}
+
+		if (smart_cmd_simple (fd, SMART_CMD_ENABLE, 0, TRUE)) {
+			printf (_("Critical: SMART_CMD_ENABLE\n"));
+			return 2;
+		}
+
+		switch (command) {
+		case 0:
+			retval = smart_cmd_simple (fd, SMART_CMD_AUTO_OFFLINE, 0, TRUE);
+			break;
+		case 1:
+			retval = smart_cmd_simple (fd, SMART_CMD_AUTO_OFFLINE, 0xF8, TRUE);
+			break;
+		case 2:
+			retval = smart_cmd_simple (fd, SMART_CMD_IMMEDIATE_OFFLINE, 0, TRUE);
+			break;
+		case 3:
+			smart_read_values (fd, &values);
+			smart_read_thresholds (fd, &thresholds);
+			retval = values_not_passed (&values, &thresholds);
+			break;
+		case 4:
+			smart_read_values (fd, &values);
+			smart_read_thresholds (fd, &thresholds);
+			retval = net_saint (&values, &thresholds);
+			break;
+		default:
+			smart_read_values (fd, &values);
+			smart_read_thresholds (fd, &thresholds);
+			print_values (&values, &thresholds);
+			break;
 		}
-		return retval;
+		close (fd);
 	}
+	return retval;
+}