summaryrefslogtreecommitdiffstats
path: root/libsmartcols/src/symbols.c
diff options
context:
space:
mode:
authorOndrej Oprala2014-03-17 12:19:48 +0100
committerKarel Zak2014-04-03 12:29:16 +0200
commitb36992fb2a44a49c21a608a18cd7da9ceef349c7 (patch)
treecfc8d6374fec458df7b52dbee22f8b7cb493be33 /libsmartcols/src/symbols.c
parentlibsmartcols: add iterator (diff)
downloadkernel-qcow2-util-linux-b36992fb2a44a49c21a608a18cd7da9ceef349c7.tar.gz
kernel-qcow2-util-linux-b36992fb2a44a49c21a608a18cd7da9ceef349c7.tar.xz
kernel-qcow2-util-linux-b36992fb2a44a49c21a608a18cd7da9ceef349c7.zip
libsmartcols: add symbols
[kzak@redhat.com: - split scols_new_symbols() to regular getters functions] Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libsmartcols/src/symbols.c')
-rw-r--r--libsmartcols/src/symbols.c103
1 files changed, 103 insertions, 0 deletions
diff --git a/libsmartcols/src/symbols.c b/libsmartcols/src/symbols.c
new file mode 100644
index 000000000..344ddcf53
--- /dev/null
+++ b/libsmartcols/src/symbols.c
@@ -0,0 +1,103 @@
+#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);
+}