Example #1
0
//-------------------------------------------------------------------
// PURPOSE:     Save parameters to paramset for script
//                  Use: conf.script_file, conf.script_param_set
// PARAMETERS:  enforce = 1 mean save always
//                      = 0 mean save only if any values was changed
//                        (script_loaded_params[i] != conf.script_vars[i])
//
// NOTE:    1. create SCRIPT_DATA_PATH/scriptname.cfg 
//                      which store # of last saved paramset
//          2. create SCRIPT_DATA_PATH/scriptname_PARAMSETNUM 
//                      which param_str
//-------------------------------------------------------------------
void save_params_values( int enforce )
{
    if (conf.script_param_save && (conf.script_param_set != DEFAULT_PARAM_SET))
    {
        // Write paramsetnum file
        make_param_filename( MAKE_PARAMSETNUM_FILENAME, conf.script_file, 0);
        save_int_value_file( cfg_name, conf.script_param_set );

        int i, changed=0;

        // Check is anything changed since last time
        for(i = 0; i < SCRIPT_NUM_PARAMS; i++)
        {
            if (script_loaded_params[i] != conf.script_vars[i]) changed++;
            script_loaded_params[i] = conf.script_vars[i];
        }

        if (enforce || changed)
        {
            // Write parameters file
            make_param_filename( MAKE_PARAM_FILENAME, conf.script_file, conf.script_param_set);
            do_save_param_file(cfg_param_name);
        }
    }
}
Example #2
0
//-------------------------------------------------------------------
// read last paramset num of script "fn" to conf.script_param_set
//-------------------------------------------------------------------
void get_last_paramset_num(const char *fn)
{
    // skip if internal script used
    if (fn == NULL || fn[0] == 0) return;

    make_param_filename( MAKE_PARAMSETNUM_FILENAME, fn, 0);
    if ( !load_int_value_file( cfg_name, &conf.script_param_set ) )
       conf.script_param_set = 0;
    make_param_filename( MAKE_PARAM_FILENAME, fn, conf.script_param_set);
}
Example #3
0
//-------------------------------------------------------------------
// PURPOSE:     Save parameters to paramset for script
//                  Use: conf.script_file, conf.script_param_set
// PARAMETERS:  enforce = 1 mean save always
//                      = 0 mean save only if any values was changed
//                        (script_params[i].old_val != script_params[i].val)
//
// NOTE:    1. create SCRIPT_DATA_PATH/scriptname.cfg 
//                      which store # of last saved paramset
//          2. create SCRIPT_DATA_PATH/scriptname_PARAMSETNUM 
//                      which param_str
//-------------------------------------------------------------------
void save_params_values( int enforce )
{
    if (conf.script_param_save && (conf.script_param_set != DEFAULT_PARAM_SET))
    {
        // Write paramsetnum file
        if (conf.script_param_set != last_script_param_set)
        {
            char *nm = make_param_filename(MAKE_PARAMSETNUM_FILENAME);
            save_int_value_file( nm, conf.script_param_set );
            last_script_param_set = conf.script_param_set;
        }

        int i, changed=0;

        // Check is anything changed since last time
        sc_param *p = script_params;
        while (p)
        {
            if (p->old_val != p->val)
            {
                changed++;
                p->old_val = p->val;
            }
            p = p->next;
        }

        if (enforce || changed)
        {
            // Write parameters file
            do_save_param_file();
        }
    }
}
Example #4
0
//-------------------------------------------------------------------
// PURPOSE:     Load parameters from paramset for script
// PARAMETERS:  fn - full path of script
//              paramset - num of loaded paramset (usually conf.script_param_set)
// RETURN:      1-succesfully applied, 0 - something was failed
//-------------------------------------------------------------------
int load_params_values(const char *fn, int paramset)
{
    // skip if internal script used
    if (fn == NULL || fn[0] == 0) return 0;
    // skip if 'default' parameters requested
    if (paramset == DEFAULT_PARAM_SET) return 0;
    
    if ((paramset < 0) || (paramset > 10)) paramset = 0;
    conf.script_param_set = paramset;
    make_param_filename( MAKE_PARAM_FILENAME, fn, paramset );

    char* buf = load_file(cfg_param_name, 0, 1);
    if (!buf)
        return 0;

    const char* ptr = buf;

    // Initial scan of saved paramset file
    // Ensure all saved params match defaults from script
    // If not assume saved file is invalid and don't load it
    //   may occur if script is changed, or file was saved by a different script with same name
    while (ptr[0]) 
    {
        ptr = skip_whitespace(ptr);
        if (ptr[0]=='@')
        {
            if (strncmp("@param", ptr, 6) == 0) 
            {
                if (!check_param(ptr+6))
                    return 0;
            }
        }
        ptr = skip_eol(ptr);
    }

    // All ok, reset and process file
    ptr = buf;

    while (ptr[0]) 
    {
        ptr = skip_whitespace(ptr);
        if (ptr[0]=='@')
        {
            // Already checked file, so only need to load the @default values
            // @param, @range & @values already set from script
            if (strncmp("@default", ptr, 8)==0)
            {
                process_default(ptr+8);
            }
        }
        ptr = skip_eol(ptr);
    }

    free(buf);

    return 1;
}
Example #5
0
//-------------------------------------------------------------------
// read last paramset num of script "fn" to conf.script_param_set
//-------------------------------------------------------------------
static void get_last_paramset_num()
{
    // skip if no script available
    if (conf.script_file[0] == 0) return;

    char *nm = make_param_filename(MAKE_PARAMSETNUM_FILENAME);
    if ( !load_int_value_file( nm, &conf.script_param_set ) )
    {
        conf.script_param_set = 0;
        last_script_param_set = -1;      // failed to load so force next save
    }
    else
    {
        last_script_param_set = conf.script_param_set;  // save last value loaded from file
    }
    if ((conf.script_param_set < 0) || (conf.script_param_set > 10))
        conf.script_param_set = 0;
}
Example #6
0
//-------------------------------------------------------------------
// PURPOSE:     Auxilary function.
//                Actually save param file
//-------------------------------------------------------------------
static void do_save_param_file()
{
    char buf[100];

    char *fn = make_param_filename(MAKE_PARAM_FILENAME_V2);
    int fd = open(fn, O_WRONLY|O_CREAT|O_TRUNC, 0777);

    if (fd >= 0)
    {
        sc_param *p = script_params;
        while (p)
        {
            // Only save parameters, skip 'subtitle' lines
            if (p->name != 0)
            {
                // Only need to save name and value - saved as #name=value
                sprintf(buf,"#%s=%d\n",p->name,p->val);
                write(fd, buf, strlen(buf));
            }
            p = p->next;
        }
        close(fd);
    }
}
Example #7
0
//-------------------------------------------------------------------
// PURPOSE:     Load parameters from paramset for script
// PARAMETERS:  fn - full path of script
//              paramset - num of loaded paramset (usually conf.script_param_set)
// RETURN:      1-succesfully applied, 0 - something was failed
//-------------------------------------------------------------------
static int load_params_values()
{
    // skip if no script loaded
    if (conf.script_file[0] == 0) return 0;
    // skip if 'default' parameters requested
    if (conf.script_param_set == DEFAULT_PARAM_SET) return 0;
    
    if ((conf.script_param_set < 0) || (conf.script_param_set > 10))
        conf.script_param_set = 0;

    char *nm = make_param_filename(MAKE_PARAM_FILENAME_V2);

    char* buf = load_file(nm, 0, 1);
    if (buf == 0)
    {
        nm = make_param_filename(MAKE_PARAM_FILENAME);
        buf = load_file(nm, 0, 1);
        if (buf == 0)
            return 0;
    }

    const char* ptr = buf;
    int valid = 1;

    // Initial scan of saved paramset file
    // Ensure all saved params match defaults from script
    // If not assume saved file is invalid and don't load it
    //   may occur if script is changed, or file was saved by a different script with same name
    while (ptr[0] && valid)
    {
        ptr = skip_whitespace(ptr);
        if (ptr[0] == '@')
        {
            if (strncmp("@param", ptr, 6) == 0) 
            {
                if (!check_param(ptr+6))
                    valid = 0;
            }
        }
        else if (ptr[0] == '#')
        {
            if (!check_param(ptr+1))
                valid = 0;
        }
        ptr = skip_eol(ptr);
    }

    if (valid)
    {
        // All ok, reset and process file
        ptr = buf;

        while (ptr[0])
        {
            ptr = skip_whitespace(ptr);
            if (ptr[0]=='@')
            {
                // Already checked file, so only need to load the @default values
                // @param, @range & @values already set from script
                if (strncmp("@default", ptr, 8)==0)
                {
                    process_default(ptr+8, 0);
                }
            }
            else if (ptr[0] == '#')
            {
                process_default(ptr+1, 0);
            }
            ptr = skip_eol(ptr);
        }
    }

    free(buf);

    return valid;
}