summaryrefslogtreecommitdiffstats
path: root/utils/utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/utils.c')
-rw-r--r--utils/utils.c179
1 files changed, 179 insertions, 0 deletions
diff --git a/utils/utils.c b/utils/utils.c
new file mode 100644
index 0000000..a43a347
--- /dev/null
+++ b/utils/utils.c
@@ -0,0 +1,179 @@
+/*
+ Copyright (c) 2016 Red Hat, Inc. <http://www.redhat.com>
+ This file is part of gluster-block.
+
+ This file is licensed to you under your choice of the GNU Lesser
+ General Public License, version 3 or any later version (LGPLv3 or
+ later), or the GNU General Public License, version 2 (GPLv2), in all
+ cases as published by the Free Software Foundation.
+*/
+
+
+# include "utils.h"
+
+
+
+int
+glusterBlockCLIOptEnumParse(const char *opt)
+{
+ int i;
+
+
+ if (!opt) {
+ return GB_CLI_OPT_MAX;
+ }
+
+ for (i = 0; i < GB_CLI_OPT_MAX; i++) {
+ if (!strcmp(opt, gbCmdlineOptLookup[i])) {
+ return i;
+ }
+ }
+
+ return i;
+}
+
+
+int
+glusterBlockCLICreateOptEnumParse(const char *opt)
+{
+ int i;
+
+
+ if (!opt) {
+ return GB_CLI_CREATE_OPT_MAX;
+ }
+
+ /* i = 11, enum start look gbCmdlineCreateOption */
+ for (i = 11; i < GB_CLI_CREATE_OPT_MAX; i++) {
+ if (!strcmp(opt, gbCmdlineCreateOptLookup[i])) {
+ return i;
+ }
+ }
+
+ return i;
+}
+
+
+int
+glusterBlockCLICommonOptEnumParse(const char *opt)
+{
+ int i;
+
+
+ if (!opt) {
+ return GB_CLI_COMMON_OPT_MAX;
+ }
+
+ /* i = 21, enum start look gbCmdlineCreateOption */
+ for (i = 21; i < GB_CLI_COMMON_OPT_MAX; i++) {
+ if (!strcmp(opt, gbCmdlineCommonOptLookup[i])) {
+ return i;
+ }
+ }
+
+ return i;
+}
+
+
+int
+blockMetaKeyEnumParse(const char *opt)
+{
+ int i;
+
+
+ if (!opt) {
+ return GB_METAKEY_MAX;
+ }
+
+ for (i = 0; i < GB_METAKEY_MAX; i++) {
+ if (!strcmp(opt, MetakeyLookup[i])) {
+ return i;
+ }
+ }
+
+ return i;
+}
+
+
+int
+blockMetaStatusEnumParse(const char *opt)
+{
+ int i;
+
+
+ if (!opt) {
+ return GB_METASTATUS_MAX;
+ }
+
+ for (i = 0; i < GB_METASTATUS_MAX; i++) {
+ if (!strcmp(opt, MetaStatusLookup[i])) {
+ return i;
+ }
+ }
+
+ return i;
+}
+
+
+int
+gbAlloc(void *ptrptr, size_t size,
+ const char *filename, const char *funcname, size_t linenr)
+{
+ *(void **)ptrptr = calloc(1, size);
+
+ if (*(void **)ptrptr == NULL) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ return 0;
+}
+
+
+int
+gbAllocN(void *ptrptr, size_t size, size_t count,
+ const char *filename, const char *funcname, size_t linenr)
+{
+ *(void**)ptrptr = calloc(count, size);
+
+ if (*(void**)ptrptr == NULL) {
+ errno = ENOMEM;
+ return -1;
+ }
+
+ return 0;
+}
+
+
+void
+gbFree(void *ptrptr)
+{
+ int save_errno = errno;
+
+
+ if(*(void**)ptrptr == NULL) {
+ return;
+ }
+
+ free(*(void**)ptrptr);
+ *(void**)ptrptr = NULL;
+ errno = save_errno;
+}
+
+
+int
+gbStrdup(char **dest, const char *src,
+ const char *filename, const char *funcname, size_t linenr)
+{
+ *dest = NULL;
+
+ if (!src) {
+ return 0;
+ }
+
+ if (!(*dest = strdup(src))) {
+ return -1;
+ }
+
+ return 0;
+}