diff options
author | Csaba Henk <csaba@redhat.com> | 2017-05-09 19:23:18 +0200 |
---|---|---|
committer | Shyamsundar Ranganathan <srangana@redhat.com> | 2017-05-23 13:21:20 +0000 |
commit | 98db583e9b2e7aa8e095a75a6bb5f42b0d65ae79 (patch) | |
tree | 44b49138df370965ab948ff2b7c9326924f1a054 /contrib | |
parent | 02979e4663ea9e8a925f785f206d1dba02f253c4 (diff) |
libglusterfs: extract some functionality to functions
- code in run.c to close all file descriptors,
except for specified ones is extracted to
int close_fds_except (int *fdv, size_t count);
- tokenizing and editing a string that consists
of comma-separated tokens (as done eg. in
mount_param_to_flag() of contrib/fuse/mount.c
is abstacted into the following API:
char *token_iter_init (char *str, char sep, token_iter_t *tit);
gf_boolean_t next_token (char **tokenp, token_iter_t *tit);
void drop_token (char *token, token_iter_t *tit);
Updates #153
Change-Id: I7cb5bda38f680f08882e2a7ef84f9142ffaa54eb
Signed-off-by: Csaba Henk <csaba@redhat.com>
Reviewed-on: https://review.gluster.org/17229
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Amar Tumballi <amarts@redhat.com>
Diffstat (limited to 'contrib')
-rw-r--r-- | contrib/fuse-lib/mount.c | 39 |
1 files changed, 14 insertions, 25 deletions
diff --git a/contrib/fuse-lib/mount.c b/contrib/fuse-lib/mount.c index 1dfd2a71c05..5bdf454686b 100644 --- a/contrib/fuse-lib/mount.c +++ b/contrib/fuse-lib/mount.c @@ -252,38 +252,30 @@ static int mount_param_to_flag (char *mnt_param, mount_flag_t *mntflags, char **mnt_param_new) { - int i = 0; - int j = 0; - char *p = NULL; gf_boolean_t found = _gf_false; struct mount_flags *flag = NULL; + char *param_tok = NULL; + token_iter_t tit = {0,}; + gf_boolean_t iter_end = _gf_false; /* Allocate a buffer that will hold the mount parameters remaining * after the ones corresponding to mount flags are processed and * removed.The length of the original params are a good upper bound * of the size needed. */ - *mnt_param_new = CALLOC (1, strlen (mnt_param) + 1); + *mnt_param_new = strdup (mnt_param); if (!*mnt_param_new) return -1; - p = *mnt_param_new; - - while (mnt_param[j]) { - if (j > 0) - i = j+1; - j = i; - /* Seek the delimiters. */ - while (mnt_param[j] != ',' && mnt_param[j] != '\0') - j++; + for (param_tok = token_iter_init (*mnt_param_new, ',', &tit) ;;) { + iter_end = next_token (¶m_tok, &tit); found = _gf_false; for (flag = mount_flags; flag->opt; flag++) { /* Compare the mount flag name to the param - * name at hand (from i to j in mnt_param). + * name at hand. */ - if (strlen (flag->opt) == j - i && - memcmp (flag->opt, mnt_param + i, j - i) == 0) { + if (strcmp (flag->opt, param_tok) == 0) { /* If there is a match, adjust mntflags * accordingly and break. */ @@ -296,15 +288,12 @@ mount_param_to_flag (char *mnt_param, mount_flag_t *mntflags, break; } } - /* If the param did't match any flag name, retain it (ie. copy - * over to the new param buffer). - */ - if (!found) { - if (p != *mnt_param_new) - *p++ = ','; - memcpy (p, mnt_param + i, j - i); - p += j - i; - } + /* Exclude flag names from new parameter list. */ + if (found) + drop_token (param_tok, &tit); + + if (iter_end) + break; } return 0; |