Slightly better generator of default protocol instance names.
This commit is contained in:
parent
241b7311ec
commit
4ba84ebc82
4 changed files with 10 additions and 7 deletions
|
@ -33,7 +33,6 @@ static struct keyword {
|
|||
static struct keyword *kw_hash[KW_HASH_SIZE];
|
||||
static struct symbol **sym_hash;
|
||||
static int allow_new_symbols;
|
||||
static int default_counter;
|
||||
|
||||
int conf_lino;
|
||||
|
||||
|
@ -163,8 +162,11 @@ cf_find_sym(byte *c, unsigned int h0)
|
|||
int l;
|
||||
|
||||
while (s)
|
||||
if (!strcmp(s->name, c))
|
||||
return s;
|
||||
{
|
||||
if (!strcmp(s->name, c))
|
||||
return s;
|
||||
s = s->next;
|
||||
}
|
||||
if (!allow_new_symbols)
|
||||
return NULL;
|
||||
l = strlen(c);
|
||||
|
@ -181,14 +183,14 @@ cf_find_sym(byte *c, unsigned int h0)
|
|||
}
|
||||
|
||||
struct symbol *
|
||||
cf_default_name(char *prefix)
|
||||
cf_default_name(char *prefix, int *counter)
|
||||
{
|
||||
char buf[32];
|
||||
struct symbol *s;
|
||||
|
||||
do
|
||||
{
|
||||
sprintf(buf, "%s%d", prefix, default_counter++);
|
||||
sprintf(buf, "%s%d", prefix, ++(*counter));
|
||||
s = cf_find_sym(buf, cf_hash(buf));
|
||||
if (!s) cf_error("Unable to generate default name");
|
||||
}
|
||||
|
@ -202,7 +204,6 @@ cf_lex_init(int flag)
|
|||
if (allow_new_symbols = flag)
|
||||
sym_hash = cfg_allocz(SYM_HASH_SIZE * sizeof(struct keyword *));
|
||||
conf_lino = 1;
|
||||
default_counter = 1;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -67,7 +67,7 @@ extern int conf_lino;
|
|||
void cf_lex_init_tables(void);
|
||||
int cf_lex(void);
|
||||
void cf_lex_init(int flag);
|
||||
struct symbol *cf_default_name(char *prefix);
|
||||
struct symbol *cf_default_name(char *prefix, int *counter);
|
||||
|
||||
/* Parser */
|
||||
|
||||
|
|
|
@ -127,6 +127,7 @@ protos_preconfig(struct config *c)
|
|||
WALK_LIST(p, protocol_list)
|
||||
{
|
||||
debug(" %s", p->name);
|
||||
p->name_counter = 0;
|
||||
if (p->preconfig)
|
||||
p->preconfig(p, c);
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@ struct protocol {
|
|||
char *name;
|
||||
unsigned debug; /* Default debugging flags */
|
||||
int priority; /* Protocol priority (usually 0) */
|
||||
int name_counter; /* Counter for automatic name generation */
|
||||
|
||||
void (*preconfig)(struct protocol *, struct config *); /* Just before configuring */
|
||||
void (*postconfig)(struct proto_config *); /* After configuring each instance */
|
||||
|
|
Loading…
Reference in a new issue