Index: trunk/scconfig/gen_conf.sh =================================================================== --- trunk/scconfig/gen_conf.sh (revision 2047) +++ trunk/scconfig/gen_conf.sh (revision 2048) @@ -52,9 +52,23 @@ if (desc == "") desc = "<" name ">" + flags = ""; + while(match("@[a-zA-Z_]+", desc)) { + flag=substr(desc, RSTART, RLENGTH) + sub("[ \t]*" flag "[ \t]*", " ", desc) + sub("^@", "",flag) + flag="CFF_" toupper(flag) + if (flags == "") + flags = flag + else + flags = flags " | " flag + } + if (flags == "") + flags = 0; + path_tmp=path sub("^/", "", path_tmp) - printf("conf_reg(%-36s %s %-16s %-25s %-25s %s)\n", id cm, (array ? "array, " : "scalar,"), type cm, q path_tmp q cm, q name q cm, q desc q) + printf("conf_reg(%-36s %s %-16s %-25s %-25s %s, %s)\n", id cm, (array ? "array, " : "scalar,"), type cm, q path_tmp q cm, q name q cm, q desc q, flags) } Index: trunk/src/conf.c =================================================================== --- trunk/src/conf.c (revision 2047) +++ trunk/src/conf.c (revision 2048) @@ -645,7 +645,7 @@ return !strcmp(a, b); } -void conf_reg_field_(void *value, int array_size, conf_native_type_t type, const char *path, const char *desc) +void conf_reg_field_(void *value, int array_size, conf_native_type_t type, const char *path, const char *desc, conf_flag_t flags) { conf_native_t *node; @@ -664,6 +664,7 @@ node->prop = calloc(sizeof(confprop_t), array_size); node->description = desc; node->hash_path = path; + node->flags = flags; vtp0_init(&(node->hid_data)); htsp_set(conf_fields, (char *)path, node); Index: trunk/src/conf.h =================================================================== --- trunk/src/conf.h (revision 2047) +++ trunk/src/conf.h (revision 2048) @@ -40,6 +40,10 @@ POL_invalid } conf_policy_t; +typedef enum { /* bitfield */ + CFF_USAGE = 1 /* settings should be printed in usage help */ +} conf_flag_t; + typedef union conflist_u conflist_t; typedef char * CFT_STRING; @@ -88,6 +92,7 @@ const char *hash_path; /* points to the hash key once its added in the hash (else: NULL) */ int array_size; conf_native_type_t type; + conf_flag_t flags; struct { unsigned io_pcb_no_attrib:1; unsigned read_only:1; /* set by conf_core, has no lihata, should not be overwritten */ @@ -137,7 +142,7 @@ void conf_update(const char *path); conf_native_t *conf_get_field(const char *path); -void conf_reg_field_(void *value, int array_size, conf_native_type_t type, const char *path, const char *desc); +void conf_reg_field_(void *value, int array_size, conf_native_type_t type, const char *path, const char *desc, conf_flag_t flags); void conf_unreg_fields(const char *prefix); @@ -165,15 +170,15 @@ /* Attempt to consume argv[] using conf_set_from_cli */ void conf_parse_arguments(const char *prefix, int *argc, char ***argv); -#define conf_reg_field_array(globvar, field, type_name, path, desc) \ - conf_reg_field_((void *)&globvar.field, (sizeof(globvar.field) / sizeof(globvar.field[0])), type_name, path, desc) +#define conf_reg_field_array(globvar, field, type_name, path, desc, flags) \ + conf_reg_field_((void *)&globvar.field, (sizeof(globvar.field) / sizeof(globvar.field[0])), type_name, path, desc, flags) -#define conf_reg_field_scalar(globvar, field, type_name, path, desc) \ - conf_reg_field_((void *)&globvar.field, 1, type_name, path, desc) +#define conf_reg_field_scalar(globvar, field, type_name, path, desc, flags) \ + conf_reg_field_((void *)&globvar.field, 1, type_name, path, desc, flags) /* register a config field, array or scalar, selecting the right macro */ -#define conf_reg_field(globvar, field,isarray,type_name,cpath,cname, desc) \ - conf_reg_field_ ## isarray(globvar, field,type_name,cpath "/" cname, desc) +#define conf_reg_field(globvar, field,isarray,type_name,cpath,cname, desc, flags) \ + conf_reg_field_ ## isarray(globvar, field,type_name,cpath "/" cname, desc, flags) /* convert a policy text to policy value - return POL_invalid on error */ conf_policy_t conf_policy_parse(const char *s); Index: trunk/src/conf_core.c =================================================================== --- trunk/src/conf_core.c (revision 2047) +++ trunk/src/conf_core.c (revision 2048) @@ -4,8 +4,8 @@ void conf_core_init() { -#define conf_reg(field,isarray,type_name,cpath,cname,desc) \ - conf_reg_field(conf_core, field,isarray,type_name,cpath,cname,desc); +#define conf_reg(field,isarray,type_name,cpath,cname,desc,flags) \ + conf_reg_field(conf_core, field,isarray,type_name,cpath,cname,desc,flags); #include "conf_core_fields.h" } Index: trunk/src_plugins/djopt/djopt.c =================================================================== --- trunk/src_plugins/djopt/djopt.c (revision 2047) +++ trunk/src_plugins/djopt/djopt.c (revision 2048) @@ -2696,8 +2696,8 @@ #include "dolists.h" pcb_uninit_t hid_djopt_init(void) { -#define conf_reg(field,isarray,type_name,cpath,cname,desc) \ - conf_reg_field(conf_djopt, field,isarray,type_name,cpath,cname,desc); +#define conf_reg(field,isarray,type_name,cpath,cname,desc,flags) \ + conf_reg_field(conf_djopt, field,isarray,type_name,cpath,cname,desc,flags); #include "djopt_conf_fields.h" REGISTER_ACTIONS(djopt_action_list, djopt_cookie) Index: trunk/src_plugins/hid_gtk/gtkhid-main.c =================================================================== --- trunk/src_plugins/hid_gtk/gtkhid-main.c (revision 2047) +++ trunk/src_plugins/hid_gtk/gtkhid-main.c (revision 2048) @@ -1998,8 +1998,8 @@ hid_register_hid(&ghid_hid); -#define conf_reg(field,isarray,type_name,cpath,cname,desc) \ - conf_reg_field(conf_hid_gtk, field,isarray,type_name,cpath,cname,desc); +#define conf_reg(field,isarray,type_name,cpath,cname,desc,flags) \ + conf_reg_field(conf_hid_gtk, field,isarray,type_name,cpath,cname,desc,flags); #include "hid_gtk_conf_fields.h" return NULL; Index: trunk/src_plugins/import_sch/import_sch.c =================================================================== --- trunk/src_plugins/import_sch/import_sch.c (revision 2047) +++ trunk/src_plugins/import_sch/import_sch.c (revision 2048) @@ -453,8 +453,8 @@ char *tmp; REGISTER_ACTIONS(import_sch_action_list, import_sch_cookie) -#define conf_reg(field,isarray,type_name,cpath,cname,desc) \ - conf_reg_field(conf_import_sch, field,isarray,type_name,cpath,cname,desc); +#define conf_reg(field,isarray,type_name,cpath,cname,desc,flags) \ + conf_reg_field(conf_import_sch, field,isarray,type_name,cpath,cname,desc,flags); #include "import_sch_conf_fields.h" /* Compatibility: get some settings from the env */ Index: trunk/src_plugins/mincut/rats_mincut.c =================================================================== --- trunk/src_plugins/mincut/rats_mincut.c (revision 2047) +++ trunk/src_plugins/mincut/rats_mincut.c (revision 2048) @@ -413,8 +413,8 @@ { stub_rat_found_short = rat_found_short; stub_rat_proc_shorts = rat_proc_shorts; -#define conf_reg(field,isarray,type_name,cpath,cname,desc) \ - conf_reg_field(conf_mincut, field,isarray,type_name,cpath,cname,desc); +#define conf_reg(field,isarray,type_name,cpath,cname,desc,flags) \ + conf_reg_field(conf_mincut, field,isarray,type_name,cpath,cname,desc,flags); #include "rats_mincut_conf_fields.h" return hid_mincut_uninit; } Index: trunk/src_plugins/vendordrill/vendor.c =================================================================== --- trunk/src_plugins/vendordrill/vendor.c (revision 2047) +++ trunk/src_plugins/vendordrill/vendor.c (revision 2048) @@ -751,8 +751,8 @@ #include "dolists.h" pcb_uninit_t hid_vendordrill_init(void) { -#define conf_reg(field,isarray,type_name,cpath,cname,desc) \ - conf_reg_field(conf_vendor, field,isarray,type_name,cpath,cname,desc); +#define conf_reg(field,isarray,type_name,cpath,cname,desc,flags) \ + conf_reg_field(conf_vendor, field,isarray,type_name,cpath,cname,desc,flags); #include "vendor_conf_fields.h" stub_vendorDrillMap = vendorDrillMap;