diff options
Diffstat (limited to 'include/net-snmp/library/text_utils.h')
-rw-r--r-- | include/net-snmp/library/text_utils.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/include/net-snmp/library/text_utils.h b/include/net-snmp/library/text_utils.h new file mode 100644 index 0000000..864ca3f --- /dev/null +++ b/include/net-snmp/library/text_utils.h @@ -0,0 +1,113 @@ +#ifndef NETSNMP_TEXT_UTILS_H +#define NETSNMP_TEXT_UTILS_H + +#ifdef __cplusplus +extern "C" { +#endif + + + /*------------------------------------------------------------------ + * + * text file processing + * + */ + netsnmp_container * + netsnmp_file_text_parse(netsnmp_file *f, netsnmp_container *cin, + int parse_mode, u_int flags, void *context); + +#define PM_SAVE_EVERYTHING 1 +#define PM_INDEX_STRING_STRING 2 +#define PM_USER_FUNCTION 3 + +#define PM_FLAG_NO_CONTAINER 0x00000001 +#define PM_FLAG_SKIP_WHITESPACE 0x00000002 + + + /* + * line processing user function + */ + struct netsnmp_line_process_info_s; /* fwd decl */ + + typedef struct netsnmp_line_info_s { + + size_t index; + + char *line; + size_t line_len; + size_t line_max; + + char *start; + size_t start_len; + + } netsnmp_line_info; + + typedef int (Netsnmp_Process_Text_Line) + (netsnmp_line_info *line_info, void *mem, + struct netsnmp_line_process_info_s* lpi); + + typedef struct netsnmp_line_process_info_s { + + size_t line_max; /* defaults to STRINGMAX if 0 */ + size_t mem_size; + + u_int flags; + + Netsnmp_Process_Text_Line *process; + + void *user_context; + + } netsnmp_line_process_info; + +/* + * user function return codes + */ +#define PMLP_RC_STOP_PROCESSING -1 +#define PMLP_RC_MEMORY_USED 0 +#define PMLP_RC_MEMORY_UNUSED 1 + + +/** ALLOC_LINE: wasteful, but fast */ +#define PMLP_FLAG_ALLOC_LINE 0x00000001 +/** STRDUP_LINE: slower if you don't keep memory in most cases */ +#define PMLP_FLAG_STRDUP_LINE 0x00000002 +/** don't strip trailing newlines */ +#define PMLP_FLAG_LEAVE_NEWLINE 0x00000004 +/** don't skip blank or comment lines */ +#define PMLP_FLAG_PROCESS_WHITESPACE 0x00000008 +/** just process line, don't save it */ +#define PMLP_FLAG_NO_CONTAINER 0x00000010 + + + /* + * a few useful pre-defined helpers + */ + + typedef struct netsnmp_token_value_index_s { + + char *token; + netsnmp_cvalue value; + size_t index; + + } netsnmp_token_value_index; + + netsnmp_container *netsnmp_text_token_container_from_file(const char *file, + u_int flags, + netsnmp_container *c, + void *context); +/* + * flags + */ +#define NSTTC_FLAG_TYPE_CONTEXT_DIRECT 0x00000001 + + +#define PMLP_TYPE_UNSIGNED 1 +#define PMLP_TYPE_INTEGER 2 +#define PMLP_TYPE_STRING 3 +#define PMLP_TYPE_BOOLEAN 4 + + +#ifdef __cplusplus +} +#endif + +#endif /* NETSNMP_TEXT_UTILS_H */ |