static Eina_Bool user_setattr_check(Zentific_Ctx *ctx, const char *attribute, const char *value){ if (!zshare_strcmp(attribute, "name")){ if (eina_strlen_bounded(value, MAX_USERNAME_LENGTH + 1) > MAX_USERNAME_LENGTH){ ctx->error = AZY_ERR(INVALID_PARAMETER); CTX_RETURN; } if (!ctx->count){ db->isUserName(db, ctx, value); CTX_CB_ADD(user_cb_name); CTX_RETURN; } } else if (!zshare_strcmp(attribute, "email")){ char *at, *dot; //FIXME: add email validation function or is this lazy attempt enough? if (!(at = strrchr(value, '@')) || !(dot = strrchr(value, '.')) || (dot - at < 0)){ ctx->error = AZY_ERR(INVALID_PARAMETER); CTX_RETURN; } } else if (!zshare_strcmp(attribute, "active")){ if (zshare_strcmp(value, "0") || zshare_strcmp(value, "1")){ ctx->error = AZY_ERR(INVALID_PARAMETER); CTX_RETURN; } } else if (!zshare_strcmp(attribute, "type")){ int t; if (value[1]){ ctx->error = AZY_ERR(INVALID_PARAMETER); CTX_RETURN; } errno = 0; t = strtol(value, NULL, 10); if (errno){ WRN("Failed to convert '%s' to int because of error: %s", value, strerror(errno)); ctx->error = AZY_ERR(INVALID_PARAMETER); CTX_RETURN; } if ((t < USER_TYPE_SUPER_USER) || (t > USER_TYPE_NODE)){ ctx->error = AZY_ERR(INVALID_PARAMETER); CTX_RETURN; } } else if (!zshare_strcmp(attribute, "language")){ if (ctx->count < 2){ db->getLanguageCode(db, ctx, strtol(value, NULL, 10)); CTX_CB_ADD(user_cb_lang); CTX_RETURN; } } else { ctx->error = AZY_ERR(INVALID_PARAMETER); CTX_RETURN; } CTX_RETURN; }
EAPI Eina_Bool eina_str_has_prefix(const char *str, const char *prefix) { size_t str_len; size_t prefix_len; str_len = strlen(str); prefix_len = eina_strlen_bounded(prefix, str_len); if (prefix_len == (size_t)-1) return EINA_FALSE; return (strncmp(str, prefix, prefix_len) == 0); }
/* * Internal helper function used by eina_str_has_suffix() and * eina_str_has_extension() */ static inline Eina_Bool eina_str_has_suffix_helper(const char *str, const char *suffix, int (*cmp)(const char *, const char *)) { size_t str_len; size_t suffix_len; str_len = strlen(str); suffix_len = eina_strlen_bounded(suffix, str_len); if (suffix_len == (size_t)-1) return EINA_FALSE; return cmp(str + str_len - suffix_len, suffix) == 0; }