Commit 4ba84ebc authored by Martin Mares's avatar Martin Mares
Browse files

Slightly better generator of default protocol instance names.

parent 241b7311
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -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;
      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
+1 −1
Original line number Diff line number Diff line
@@ -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 */

+1 −0
Original line number Diff line number Diff line
@@ -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);
    }
+1 −0
Original line number Diff line number Diff line
@@ -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 */