Example #1
0
bool service_set_param_value (
        SERVICE*            service,
        CONFIG_PARAMETER*   param,
        char*               valstr,
        count_spec_t        count_spec,
        config_param_type_t type)
{
        char* p;
        int   valint;
        bool  succp;
        
        /**
         * Find out whether the value is numeric and ends with '%' or '\0'
         */
        p = valstr;
        
        while(isdigit(*p)) p++;

        errno = 0;
        
        if (p == valstr || (*p != '%' && *p != '\0'))
        {
                succp = false;
        }
        else if (*p == '%')
        {
                if (*(p+1) == '\0')
                {
                        *p = '\0';
                        valint = (int) strtol(valstr, (char **)NULL, 10);
                        
                        if (valint == 0 && errno != 0)
                        {
                                succp = false;
                        }
                        else if (PARAM_IS_TYPE(type,PERCENT_TYPE))
                        {
                                succp   = true;
                                config_set_qualified_param(param, (void *)&valint, PERCENT_TYPE);
                        }
                        else
                        {
                                /** Log error */
                        }
                }
                else
                {
                        succp = false;
                }
        }
        else if (*p == '\0')
        {
                valint = (int) strtol(valstr, (char **)NULL, 10);
                
                if (valint == 0 && errno != 0)
                {
                        succp = false;
                }
                else if (PARAM_IS_TYPE(type,COUNT_TYPE))
                {
                        succp = true;
                        config_set_qualified_param(param, (void *)&valint, COUNT_TYPE);
                }
                else
                {
                        /** Log error */
                }
        }
        
        if (succp)
        {
                service_add_qualified_param(service, param); /*< add param to svc */
        }
        return succp;
}
Example #2
0
bool service_set_param_value (
        SERVICE*            service,
        CONFIG_PARAMETER*   param,
        char*               valstr,
        count_spec_t        count_spec,
        config_param_type_t type)
{
        char*    p;
        int      valint;
	bool     valbool;
	target_t valtarget;
	bool     succp = true;
                
	if (PARAM_IS_TYPE(type,PERCENT_TYPE) ||PARAM_IS_TYPE(type,COUNT_TYPE))
	{
		/**
		 * Find out whether the value is numeric and ends with '%' or '\0'
		 */
		p = valstr;
		
		while(isdigit(*p)) p++;

		errno = 0;
		
		if (p == valstr || (*p != '%' && *p != '\0'))
		{
			succp = false;
		}
		else if (*p == '%')
		{
			if (*(p+1) == '\0')
			{
				*p = '\0';
				valint = (int) strtol(valstr, (char **)NULL, 10);
				
				if (valint == 0 && errno != 0)
				{
					succp = false;
				}
				else if (PARAM_IS_TYPE(type,PERCENT_TYPE))
				{
					succp   = true;
					config_set_qualified_param(param, (void *)&valint, PERCENT_TYPE);
				}
				else
				{
					/** Log error */
				}
			}
			else
			{
				succp = false;
			}
		}
		else if (*p == '\0')
		{
			valint = (int) strtol(valstr, (char **)NULL, 10);
			
			if (valint == 0 && errno != 0)
			{
				succp = false;
			}
			else if (PARAM_IS_TYPE(type,COUNT_TYPE))
			{
				succp = true;
				config_set_qualified_param(param, (void *)&valint, COUNT_TYPE);
			}
			else
			{
				/** Log error */
			}
		}
	}
	else if (type == BOOL_TYPE)
	{
		unsigned int rc;

		rc = find_type(&bool_type, valstr, strlen(valstr)+1);
		
		if (rc > 0)
		{
			succp = true;
			if (rc%2 == 1)
			{
				valbool = false;
			}
			else if (rc%2 == 0)
			{
				valbool = true;
			}
			/** add param to config */
			config_set_qualified_param(param, 
						   (void *)&valbool, 
						   BOOL_TYPE); 
		}
		else
		{
			succp = false;
		}
	}
	else if (type == SQLVAR_TARGET_TYPE)
	{
		unsigned int rc;
		
		rc = find_type(&sqlvar_target_type, valstr, strlen(valstr)+1);
		
		if (rc > 0 && rc < 3)
		{
			succp = true;
			if (rc == 1)
			{
				valtarget = TYPE_MASTER;
			}
			else if (rc == 2)
			{
				valtarget = TYPE_ALL;
			}
			/** add param to config */
			config_set_qualified_param(param, 
						   (void *)&valtarget, 
						   SQLVAR_TARGET_TYPE);
		}
		else
		{
			succp = false;
		}
	}
	
        if (succp)
        {
		service_add_qualified_param(service, param); /*< add param to svc */
        }
        return succp;
}