summaryrefslogtreecommitdiff
path: root/src/label_support.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/label_support.c')
-rw-r--r--src/label_support.c117
1 files changed, 0 insertions, 117 deletions
diff --git a/src/label_support.c b/src/label_support.c
deleted file mode 100644
index e226d51..0000000
--- a/src/label_support.c
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * This file contains helper functions for labeling support.
- *
- * Author : Richard Haines <richard_c_haines@btinternet.com>
- */
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include <ctype.h>
-#include <string.h>
-#include <errno.h>
-#include "label_internal.h"
-
-/*
- * The read_spec_entries and read_spec_entry functions may be used to
- * replace sscanf to read entries from spec files. The file and
- * property services now use these.
- */
-
-/*
- * Read an entry from a spec file (e.g. file_contexts)
- * entry - Buffer to allocate for the entry.
- * ptr - current location of the line to be processed.
- * returns - 0 on success and *entry is set to be a null
- * terminated value. On Error it returns -1 and
- errno will be set.
- *
- */
-static inline int read_spec_entry(char **entry, char **ptr, int *len, const char **errbuf)
-{
- *entry = NULL;
- char *tmp_buf = NULL;
-
- while (isspace(**ptr) && **ptr != '\0')
- (*ptr)++;
-
- tmp_buf = *ptr;
- *len = 0;
-
- while (!isspace(**ptr) && **ptr != '\0') {
- if (!isascii(**ptr)) {
- errno = EINVAL;
- *errbuf = "Non-ASCII characters found";
- return -1;
- }
- (*ptr)++;
- (*len)++;
- }
-
- if (*len) {
- *entry = strndup(tmp_buf, *len);
- if (!*entry)
- return -1;
- }
-
- return 0;
-}
-
-/*
- * line_buf - Buffer containing the spec entries .
- * errbuf - Double pointer used for passing back specific error messages.
- * num_args - The number of spec parameter entries to process.
- * ... - A 'char **spec_entry' for each parameter.
- * returns - The number of items processed. On error, it returns -1 with errno
- * set and may set errbuf to a specific error message.
- *
- * This function calls read_spec_entry() to do the actual string processing.
- * As such, can return anything from that function as well.
- */
-int hidden read_spec_entries(char *line_buf, const char **errbuf, int num_args, ...)
-{
- char **spec_entry, *buf_p;
- int len, rc, items, entry_len = 0;
- va_list ap;
-
- *errbuf = NULL;
-
- len = strlen(line_buf);
- if (line_buf[len - 1] == '\n')
- line_buf[len - 1] = '\0';
- else
- /* Handle case if line not \n terminated by bumping
- * the len for the check below (as the line is NUL
- * terminated by getline(3)) */
- len++;
-
- buf_p = line_buf;
- while (isspace(*buf_p))
- buf_p++;
-
- /* Skip comment lines and empty lines. */
- if (*buf_p == '#' || *buf_p == '\0')
- return 0;
-
- /* Process the spec file entries */
- va_start(ap, num_args);
-
- items = 0;
- while (items < num_args) {
- spec_entry = va_arg(ap, char **);
-
- if (len - 1 == buf_p - line_buf) {
- va_end(ap);
- return items;
- }
-
- rc = read_spec_entry(spec_entry, &buf_p, &entry_len, errbuf);
- if (rc < 0) {
- va_end(ap);
- return rc;
- }
- if (entry_len)
- items++;
- }
- va_end(ap);
- return items;
-}