Esempio n. 1
0
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;
}
Esempio n. 2
0
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);
}
Esempio n. 3
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;
}