Add new gf_strstr dropin replacement for "strstr"

Signed-off-by: Harshavardhana <harsha@gluster.com>
Signed-off-by: Anand V. Avati <avati@dev.gluster.com>

BUG: 609 (Add new "conf-dir" option)
URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=609
This commit is contained in:
Harshavardhana Ranganath 2010-02-22 04:39:26 +00:00 committed by Anand V. Avati
parent 867b0beafb
commit bca308d50d
3 changed files with 41 additions and 2 deletions

View File

@ -565,6 +565,42 @@ free_exit:
}
int
gf_strstr (const char *str, const char *delim, const char *match)
{
char *tmp = NULL;
char *save_ptr = NULL;
char *tmp_str = NULL;
int ret = 0;
tmp_str = strdup (str);
if (str == NULL || delim == NULL || match == NULL || tmp_str == NULL) {
ret = -1;
goto out;
}
tmp = strtok_r (tmp_str, delim, &save_ptr);
while (tmp) {
ret = strcmp (tmp, match);
if (ret == 0)
break;
tmp = strtok_r (NULL, delim, &save_ptr);
}
out:
if (tmp_str)
free (tmp_str);
return ret;
}
int
gf_volume_name_validate (const char *volume_name)
{
const char *vname = NULL;

View File

@ -313,6 +313,8 @@ int gf_string2uint16 (const char *str, uint16_t *n);
int gf_string2uint32 (const char *str, uint32_t *n);
int gf_string2uint64 (const char *str, uint64_t *n);
int gf_strstr (const char *str, const char *delim, const char *match);
int gf_string2ulong_base10 (const char *str, unsigned long *n);
int gf_string2uint_base10 (const char *str, unsigned int *n);
int gf_string2uint8_base10 (const char *str, uint8_t *n);

View File

@ -5239,7 +5239,8 @@ build_volfile_path (xlator_t *this, const char *key, char *path,
/* Make sure that conf-dir doesn't
* contain ".." in path
*/
if (strstr (conf_dir_data->data, "..")) {
if ((gf_strstr (conf_dir_data->data,
"/", "..")) == -1) {
ret = -1;
gf_log (this->name, GF_LOG_ERROR,
"%s: invalid conf_dir",
@ -5251,7 +5252,7 @@ build_volfile_path (xlator_t *this, const char *key, char *path,
* contain "../" in path
*/
if (strstr (key, "../")) {
if ((gf_strstr (key, "/", "..")) == -1) {
ret = -1;
gf_log (this->name, GF_LOG_ERROR,
"%s: invalid key", key);