summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorpaul <paul>2005-04-16 15:51:05 +0000
committerpaul <paul>2005-04-16 15:51:05 +0000
commitdc830cbfac8dd9633e070550359a5d6f8dac8fe5 (patch)
tree9b412c3e737868b0ef3917b97c5b62165ca6cf13 /lib
parent03ecfb6789c25d65a35e050661fa7f23f1e4e66e (diff)
2005-04-16 Paul Jakma <paul@dishone.st>
* memtypes.c: the comment about use of comments in the comments headers was causing comment within comment warnings from compiler * memtypes.awk: Add extensive comments on the file format for memtypes.c. tighten the pattern for the MTYPE matching action (suggestion from Andrew) and tighten which field we try the match on.
Diffstat (limited to 'lib')
-rw-r--r--lib/ChangeLog9
-rw-r--r--lib/memtypes.awk36
-rw-r--r--lib/memtypes.c6
3 files changed, 44 insertions, 7 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index c50a3646..e5ee5494 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,12 @@
+2005-04-16 Paul Jakma <paul@dishone.st>
+
+ * memtypes.c: the comment about use of comments in the comments
+ headers was causing comment within comment warnings from compiler
+ * memtypes.awk: Add extensive comments on the file format for
+ memtypes.c.
+ tighten the pattern for the MTYPE matching action (suggestion from
+ Andrew) and tighten which field we try the match on.
+
2005-04-15 Paul Jakma <paul@dishone.st>
* memtypes.c: The new, unified location for memory type definitions.
diff --git a/lib/memtypes.awk b/lib/memtypes.awk
index 2da6547b..9ab931bf 100644
--- a/lib/memtypes.awk
+++ b/lib/memtypes.awk
@@ -1,13 +1,37 @@
-# $Id: memtypes.awk,v 1.1 2005/04/15 11:47:15 paul Exp $
+# $Id: memtypes.awk,v 1.2 2005/04/16 15:51:05 paul Exp $
#
# Scan a file of memory definitions (see eg memtypes.c) and generate
# a corresponding header file with an enum of the MTYPE's and declarations
# for the struct memory_list arrays
#
+# struct memory_list's must be declared as:
+# '\nstruct memory_list memory_list_<name>[] .....'
+#
+# Each MTYPE_ within the definition must the second token on the line,
+# tokens being delineated by whitespace. It may only consist of the set of
+# characters [A-Z_0-9]. Eg:
+#
+# '\n { MTYPE_AWESOME_IPV8 , "Amazing new protocol, says genius" {}..boo'
+#
+# We try to ignore lines whose first token is /* or *, ie C comment lines.
+# So the following should work fine:
+#
+# '/* This is the best memory_list ever!
+# ' * It's got all my MTYPE's */
+# '
+# 'struct memory_list memory_list_my_amazing_mlist[] = =
+# '{
+# ' { MTYPE_DONGLE, "Dongle widget" }
+# ' { MTYPE_FROB, "Frobulator" },
+# '{ MTYPE_WIPPLE, "Wipple combombulator"}
+# '}}}
+#
+# Even if it isn't quite a valid C declaration.
+#
BEGIN {
mlistregex = "memory_list_(.*)\\[\\]";
- mtyperegex = "^.*(MTYPE_[A-Z_0-9]+).*$";
+ mtyperegex = "^(MTYPE_[A-Z_0-9]+).*";
header = "/* Auto-generated from memtypes.c by " ARGV[0] ". */\n";
header = header "/* Do not edit! */\n";
header = header "\n#ifndef _QUAGGA_MEMTYPES_H\n";
@@ -17,12 +41,16 @@ BEGIN {
printf ("%s\n", header);
}
+# catch lines beginning with 'struct memory list ' and try snag the
+# memory_list name. Has to be 3rd field.
($0 ~ /^struct memory_list /) && (NF >= 3) {
mlists[lcount++] = gensub(mlistregex,"\\1",g,$3);
}
-($1 != "/*") && ($1 != "*") && ($2 ~ /MTYPE_/) {
- mtype[tcount++] = gensub(mtyperegex,"\\1",1, $0);
+# snag the MTYPE, it must self-standing and the second field,
+# though we do manage to tolerate the , C seperator being appended
+($1 !~ /^\/?\*/) && ($2 ~ /^MTYPE_/) {
+ mtype[tcount++] = gensub(mtyperegex,"\\1",1, $2);
}
END {
diff --git a/lib/memtypes.c b/lib/memtypes.c
index a643d43b..6ee75a58 100644
--- a/lib/memtypes.c
+++ b/lib/memtypes.c
@@ -3,10 +3,10 @@
* MTYPE_ and memory_list_.. information in order to autogenerate
* memtypes.h.
*
- * The script is sensitive to the format (though not whitespace), so
- * be careful. Comment lines /must/ start with either /* or *.
+ * The script is sensitive to the format (though not whitespace), see
+ * the top of memtypes.awk for more details.
*
- * $Id: memtypes.c,v 1.1 2005/04/15 11:47:15 paul Exp $
+ * $Id: memtypes.c,v 1.2 2005/04/16 15:51:05 paul Exp $
*/
#include "zebra.h"