monitoring-plugins/lib/utils_cmd.h
Lorenz Kästle 7bfb16e0da Implement replacement functions for executing commands
This commit implements replacement functions for the previous
exec functions.
The replacements are implemented in a more "pure" style, the do no
longer receive pointer arguments which they will write to, but create
the pointers themselves and should therefore be easier to use,
since it is more obvious what goes in and what comes out.

Also a essentialy unused variable was removed with this.
2025-11-16 14:26:41 +01:00

43 lines
1.1 KiB
C

#ifndef _UTILS_CMD_
#define _UTILS_CMD_
/*
* Header file for Monitoring Plugins utils_cmd.c
*
*/
#include "../config.h"
#include <stddef.h>
/** types **/
typedef struct {
char *buf; /* output buffer */
size_t buflen; /* output buffer content length */
char **line; /* array of lines (points to buf) */
size_t lines; /* lines of output */
} output;
/** prototypes **/
int cmd_run(const char *, output *, output *, int);
int cmd_run_array(char *const *, output *, output *, int);
int cmd_file_read(const char *, output *, int);
typedef struct {
int error_code;
int cmd_error_code;
output stdout;
output stderr;
} cmd_run_result;
cmd_run_result cmd_run2(const char *cmd, int flags);
cmd_run_result cmd_run_array2(char * const *cmd, int flags);
/* only multi-threaded plugins need to bother with this */
void cmd_init(void);
#define CMD_INIT cmd_init()
/* possible flags for cmd_run()'s fourth argument */
#define CMD_NO_ARRAYS 0x01 /* don't populate arrays at all */
#define CMD_NO_ASSOC 0x02 /* output.line won't point to buf */
void timeout_alarm_handler(int);
#endif /* _UTILS_CMD_ */