summaryrefslogtreecommitdiff
path: root/include/net-snmp/library/text_utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net-snmp/library/text_utils.h')
-rw-r--r--include/net-snmp/library/text_utils.h113
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 */