]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Added generator of default names.
authorMartin Mares <mj@ucw.cz>
Fri, 27 Nov 1998 21:07:02 +0000 (21:07 +0000)
committerMartin Mares <mj@ucw.cz>
Fri, 27 Nov 1998 21:07:02 +0000 (21:07 +0000)
conf/cf-lex.l
conf/conf.h

index 5509faefe8420adba33e31c3e82f946489bb42d1..f653bcad007118db46d3e17b445b0353b576f0c6 100644 (file)
@@ -32,6 +32,7 @@ static struct keyword *kw_hash[KW_HASH_SIZE];
 static struct symbol **sym_hash;
 static int allow_new_symbols;
 static int cf_lino;
+static int default_counter;
 
 static int cf_hash(byte *c);
 static struct symbol *cf_find_sym(byte *c, unsigned int h0);
@@ -180,12 +181,29 @@ cf_find_sym(byte *c, unsigned int h0)
   return s;
 }
 
+struct symbol *
+cf_default_name(char *prefix)
+{
+  char buf[32];
+  struct symbol *s;
+
+  do
+    {
+      sprintf(buf, "%s%d", prefix, default_counter++);
+      s = cf_find_sym(buf, cf_hash(buf));
+      if (!s) cf_error("Unable to generate default name");
+    }
+  while (s->class != SYM_VOID);
+  return s;
+}
+
 void
 cf_lex_init(int flag)
 {
   if (allow_new_symbols = flag)
     sym_hash = mp_allocz(cfg_mem, SYM_HASH_SIZE * sizeof(struct keyword *));
   cf_lino = 1;
+  default_counter = 1;
 }
 
 void
index d49ee5db4d9dd7ae680a938654546477c602a9cd..0853ae8ed0eb5eef0722df3d98f5022f6f7119d5 100644 (file)
@@ -26,12 +26,14 @@ struct symbol {
 };
 
 #define SYM_VOID 0
+#define SYM_PROTO 1
 
 void cf_lex_init_tables(void);
 int cf_lex(void);
 void cf_lex_init(int flag);
 void cf_error(char *msg) NORET;
 void cf_allocate(void);
+struct symbol *cf_default_name(char *prefix);
 
 /* Parser */