summaryrefslogtreecommitdiffstats
path: root/web/attachments/123407-long_long_swap.patch
diff options
context:
space:
mode:
Diffstat (limited to 'web/attachments/123407-long_long_swap.patch')
-rw-r--r--web/attachments/123407-long_long_swap.patch173
1 files changed, 173 insertions, 0 deletions
diff --git a/web/attachments/123407-long_long_swap.patch b/web/attachments/123407-long_long_swap.patch
new file mode 100644
index 0000000..fcd5802
--- /dev/null
+++ b/web/attachments/123407-long_long_swap.patch
@@ -0,0 +1,173 @@
1Index: check_swap.c
2===================================================================
3RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/check_swap.c,v
4retrieving revision 1.9
5diff -u -r1.9 check_swap.c
6--- check_swap.c 18 Feb 2003 03:46:15 -0000 1.9
7+++ check_swap.c 27 Feb 2005 23:58:43 -0000
8@@ -36,6 +36,18 @@
9 #define EMAIL "kdebisschop@users.sourceforge.net"
10 #define SUMMARY "Check swap space on local server.\n"
11
12+#ifdef HAVE_LONGLONG
13+typedef long long unsigned int swapsize_t;
14+#define SWAPSIZEFORMAT "%llu"
15+#define SWAPSIZEFORMAT_OUT SWAPSIZEFORMAT
16+#define atos atoll
17+#else
18+typedef float swapsize_t;
19+#define SWAPSIZEFORMAT "%f"
20+#define SWAPSIZEFORMAT_OUT "%.0f"
21+#define atos (float)atof
22+#endif
23+
24 int process_arguments (int argc, char **argv);
25 int validate_arguments (void);
26 void print_usage (void);
27@@ -43,8 +55,8 @@
28
29 int warn_percent = 200;
30 int crit_percent = 200;
31-long unsigned int warn_size = 0;
32-long unsigned int crit_size = 0;
33+swapsize_t warn_size = 0;
34+swapsize_t crit_size = 0;
35 int verbose;
36 int allswaps;
37
38@@ -52,8 +64,8 @@
39 main (int argc, char **argv)
40 {
41 int percent_used, percent;
42- long unsigned int total_swap = 0, used_swap = 0, free_swap = 0;
43- long unsigned int total, used, free;
44+ swapsize_t total_swap = 0, used_swap = 0, free_swap = 0;
45+ swapsize_t total, used, free;
46 int result = STATE_OK;
47 char input_buffer[MAX_INPUT_BUFFER];
48 #ifdef HAVE_SWAP
49@@ -61,6 +73,7 @@
50 #endif
51 #ifdef HAVE_PROC_MEMINFO
52 FILE *fp;
53+ char str_format[32];
54 #endif
55 char str[32];
56 char *status = "";
57@@ -70,9 +83,10 @@
58
59 #ifdef HAVE_PROC_MEMINFO
60 fp = fopen (PROC_MEMINFO, "r");
61+ sprintf (str_format, " %%s %s %s %s", SWAPSIZEFORMAT, SWAPSIZEFORMAT, SWAPSIZEFORMAT);
62 asprintf (&status, "%s", "Swap used:");
63 while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, fp)) {
64- if (sscanf (input_buffer, " %s %lu %lu %lu", str, &total, &used, &free) == 4 &&
65+ if (sscanf (input_buffer, str_format, str, &total, &used, &free) == 4 &&
66 strstr (str, "Swap")) {
67 total_swap += total;
68 used_swap += used;
69@@ -83,8 +97,10 @@
70 result = max_state (STATE_CRITICAL, result);
71 else if (percent >= warn_percent || free <= warn_size)
72 result = max_state (STATE_WARNING, result);
73- if (verbose)
74- asprintf (&status, "%s [%lu/%lu]", status, used, total);
75+ if (verbose) {
76+ sprintf (str_format, "%%s [%s/%s]", SWAPSIZEFORMAT_OUT, SWAPSIZEFORMAT_OUT);
77+ asprintf (&status, str_format, status, used, total);
78+ }
79 }
80 }
81 }
82@@ -93,7 +109,8 @@
83 result = max_state (STATE_CRITICAL, result);
84 else if (percent_used >= warn_percent || free_swap <= warn_size)
85 result = max_state (STATE_WARNING, result);
86- asprintf (&status, "%s %2d%% (%lu out of %lu)", status, percent_used,
87+ sprintf (str_format, "%%s %%2d%%%% (%s out of %s)", SWAPSIZEFORMAT_OUT, SWAPSIZEFORMAT_OUT);
88+ asprintf (&status, str_format, status, percent_used,
89 used_swap, total_swap);
90 fclose (fp);
91 #else
92@@ -137,8 +154,9 @@
93 result = max_state (STATE_CRITICAL, result);
94 else if (percent >= warn_percent || free <= warn_size)
95 result = max_state (STATE_WARNING, result);
96- if (verbose)
97- asprintf (&status, "%s [%lu/%lu]", status, used, total);
98+ if (verbose) {
99+ sprintf (str_format, "%%s [%s/%s]", SWAPSIZEFORMAT_OUT, SWAPSIZEFORMAT_OUT);
100+ asprintf (&status, str_format, status, used, total);
101 }
102 }
103 percent_used = 100 * ((double) used_swap) / ((double) total_swap);
104@@ -146,8 +164,9 @@
105 result = max_state (STATE_CRITICAL, result);
106 else if (percent_used >= warn_percent || free_swap <= warn_size)
107 result = max_state (STATE_WARNING, result);
108- asprintf (&status, "%s %2d%% (%lu out of %lu)",
109- status, percent_used, used_swap, total_swap);
110+ sprintf (str_format, "%%s %%2d%%%% (%s out of %s)", SWAPSIZEFORMAT_OUT, SWAPSIZEFORMAT_OUT)
111+ asprintf (&status, str_format,
112+ status, percent_used, used_swap, total_swap);
113
114 /* If we get anything on STDERR, at least set warning */
115 while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr))
116@@ -198,6 +217,8 @@
117 int wc = 0; /* warning counter */
118 int cc = 0; /* critical counter */
119
120+ char str_format[32];
121+
122 #ifdef HAVE_GETOPT_H
123 int option_index = 0;
124 static struct option long_options[] = {
125@@ -224,15 +245,16 @@
126 if (c == -1 || c == EOF)
127 break;
128
129+ sprintf (str_format, "%s,%%d%%%%", SWAPSIZEFORMAT);
130 switch (c) {
131 case 'w': /* warning time threshold */
132 if (is_intnonneg (optarg)) {
133- warn_size = atoi (optarg);
134+ warn_size = atos (optarg);
135 break;
136 }
137 else if (strstr (optarg, ",") &&
138 strstr (optarg, "%") &&
139- sscanf (optarg, "%lu,%d%%", &warn_size, &warn_percent) == 2) {
140+ sscanf (optarg, str_format, &warn_size, &warn_percent) == 2) {
141 break;
142 }
143 else if (strstr (optarg, "%") &&
144@@ -245,12 +267,12 @@
145 wc++;
146 case 'c': /* critical time threshold */
147 if (is_intnonneg (optarg)) {
148- crit_size = atoi (optarg);
149+ crit_size = atos (optarg);
150 break;
151 }
152 else if (strstr (optarg, ",") &&
153 strstr (optarg, "%") &&
154- sscanf (optarg, "%lu,%d%%", &crit_size, &crit_percent) == 2) {
155+ sscanf (optarg, str_format, &crit_size, &crit_percent) == 2) {
156 break;
157 }
158 else if (strstr (optarg, "%") &&
159@@ -292,12 +314,12 @@
160 if (c == argc)
161 return validate_arguments ();
162 if (warn_size < 0 && is_intnonneg (argv[c]))
163- warn_size = atoi (argv[c++]);
164+ warn_size = atos (argv[c++]);
165
166 if (c == argc)
167 return validate_arguments ();
168 if (crit_size < 0 && is_intnonneg (argv[c]))
169- crit_size = atoi (argv[c++]);
170+ crit_size = atos (argv[c++]);
171
172 return validate_arguments ();
173 }