Module: monitoring-plugins
 Branch: master
 Commit: 5a79cd31c48307d18a637271f4a0a13327fd3073
 Author: Lorenz Kästle <[email protected]>
   Date: Wed Mar 12 22:15:57 2025 +0100
    URL: 
https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=5a79cd31

Reintroduce positional arguments

---

 plugins/check_users.c | 47 +++++++++++++++++++++++++++++++----------------
 1 file changed, 31 insertions(+), 16 deletions(-)

diff --git a/plugins/check_users.c b/plugins/check_users.c
index 61427f97..b7b7bd24 100644
--- a/plugins/check_users.c
+++ b/plugins/check_users.c
@@ -200,27 +200,42 @@ check_users_config_wrapper process_arguments(int argc, 
char **argv) {
                }
        }
 
+       int option_char = optind;
+
+       if (warning_range == NULL && argc > option_char) {
+               warning_range = argv[option_char++];
+       }
+
+       if (critical_range == NULL && argc > option_char) {
+               critical_range = argv[option_char++];
+       }
+
        // TODO add proper verification for ranges here!
+       mp_range_parsed tmp;
        if (warning_range) {
-               mp_range_parsed tmp = mp_parse_range_string(warning_range);
-               if (tmp.error == MP_PARSING_SUCCES) {
-                       result.config.thresholds.warning = tmp.range;
-                       result.config.thresholds.warning_is_set = true;
-               } else {
-                       printf("Failed to parse warning range: %s", 
warning_range);
-                       exit(STATE_UNKNOWN);
-               }
+               tmp = mp_parse_range_string(warning_range);
+       } else {
+               tmp = mp_parse_range_string(argv[option_char++]);
+       }
+       if (tmp.error == MP_PARSING_SUCCES) {
+               result.config.thresholds.warning = tmp.range;
+               result.config.thresholds.warning_is_set = true;
+       } else {
+               printf("Failed to parse warning range: %s", warning_range);
+               exit(STATE_UNKNOWN);
        }
 
        if (critical_range) {
-               mp_range_parsed tmp = mp_parse_range_string(critical_range);
-               if (tmp.error == MP_PARSING_SUCCES) {
-                       result.config.thresholds.critical = tmp.range;
-                       result.config.thresholds.critical_is_set = true;
-               } else {
-                       printf("Failed to parse critical range: %s", 
critical_range);
-                       exit(STATE_UNKNOWN);
-               }
+               tmp = mp_parse_range_string(critical_range);
+       } else {
+               tmp = mp_parse_range_string(argv[option_char++]);
+       }
+       if (tmp.error == MP_PARSING_SUCCES) {
+               result.config.thresholds.critical = tmp.range;
+               result.config.thresholds.critical_is_set = true;
+       } else {
+               printf("Failed to parse critical range: %s", critical_range);
+               exit(STATE_UNKNOWN);
        }
 
        return result;

Reply via email to