diff options
author | Ondrej Oprala | 2014-03-17 12:19:48 +0100 |
---|---|---|
committer | Karel Zak | 2014-04-03 12:29:16 +0200 |
commit | b36992fb2a44a49c21a608a18cd7da9ceef349c7 (patch) | |
tree | cfc8d6374fec458df7b52dbee22f8b7cb493be33 /libsmartcols/src/symbols.c | |
parent | libsmartcols: add iterator (diff) | |
download | kernel-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.c | 103 |
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); +} |