diff options
author | paul <paul> | 2005-04-16 15:51:05 +0000 |
---|---|---|
committer | paul <paul> | 2005-04-16 15:51:05 +0000 |
commit | dc830cbfac8dd9633e070550359a5d6f8dac8fe5 (patch) | |
tree | 9b412c3e737868b0ef3917b97c5b62165ca6cf13 /lib | |
parent | 03ecfb6789c25d65a35e050661fa7f23f1e4e66e (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/ChangeLog | 9 | ||||
-rw-r--r-- | lib/memtypes.awk | 36 | ||||
-rw-r--r-- | lib/memtypes.c | 6 |
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" |