\
libsmartcols/src/smartcolsP.h \
libsmartcols/src/iter.c \
+ libsmartcols/src/symbols.c \
$(smartcolsinc_HEADERS)
nodist_libsmartcols_la_SOURCES = libsmartcols/src/smartcolsP.h
#define LIBSMARTCOLS_VERSION "@LIBSMARTCOLS_VERSION@"
struct libscols_iter;
+struct libscols_symbols;
/* iter.c */
extern void scols_reset_iter(struct libscols_iter *itr, int direction);
extern int scols_iter_get_direction(struct libscols_iter *itr);
+/* symbols.c */
+extern struct libscols_symbols *scols_new_symbols(void);
+struct libscols_symbols *scols_copy_symbols(const struct libscols_symbols *sb);
+extern void scols_free_symbols(struct libscols_symbols *sb);
+extern int scols_symbols_set_branch(struct libscols_symbols *sb, const char *str);
+extern int scols_symbols_set_vertical(struct libscols_symbols *sb, const char *str);
+extern int scols_symbols_set_right(struct libscols_symbols *sb, const char *str);
+
#ifdef __cplusplus
}
#endif
int direction; /* SCOLS_ITER_{FOR,BACK}WARD */
};
+/*
+ * Tree symbols
+ */
+struct libscols_symbols {
+ char *branch;
+ char *vert;
+ char *right;
+};
+
#endif /* _LIBSMARTCOLS_PRIVATE_H */
--- /dev/null
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include "smartcolsP.h"
+
+struct libscols_symbols *scols_new_symbols(void)
+{
+ return calloc(1, sizeof(struct libscols_symbols));
+}
+
+int scols_symbols_set_branch(struct libscols_symbols *sb, const char *str)
+{
+ char *p = NULL;
+
+ assert(sb);
+
+ if (!sb)
+ return -EINVAL;
+ if (str) {
+ p = strdup(str);
+ if (!p)
+ return -ENOMEM;
+ }
+ free(sb->branch);
+ sb->branch = p;
+ return 0;
+}
+
+int scols_symbols_set_vertical(struct libscols_symbols *sb, const char *str)
+{
+ char *p = NULL;
+
+ assert(sb);
+
+ if (!sb)
+ return -EINVAL;
+ if (str) {
+ p = strdup(str);
+ if (!p)
+ return -ENOMEM;
+ }
+ free(sb->vert);
+ sb->vert = p;
+ return 0;
+}
+
+int scols_symbols_set_right(struct libscols_symbols *sb, const char *str)
+{
+ char *p = NULL;
+
+ assert(sb);
+
+ if (!sb)
+ return -EINVAL;
+ if (str) {
+ p = strdup(str);
+ if (!p)
+ return -ENOMEM;
+ }
+ free(sb->right);
+ sb->right = p;
+ return 0;
+}
+
+
+struct libscols_symbols *scols_copy_symbols(const struct libscols_symbols *sb)
+{
+ struct libscols_symbols *ret;
+ int rc;
+
+ assert(sb);
+ if (!sb)
+ return NULL;
+
+ ret = scols_new_symbols();
+ if (!ret)
+ return NULL;
+
+ rc = scols_symbols_set_branch(ret, sb->branch);
+ if (!rc)
+ rc = scols_symbols_set_vertical(ret, sb->vert);
+ if (!rc)
+ rc = scols_symbols_set_right(ret, sb->right);
+ if (!rc)
+ return ret;
+
+ scols_free_symbols(ret);
+ return NULL;
+
+}
+
+void scols_free_symbols(struct libscols_symbols *sb)
+{
+ if (!sb)
+ return;
+
+ free(sb->branch);
+ free(sb->vert);
+ free(sb->right);
+ free(sb);
+}