diff options
author | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2013-02-07 17:40:17 +0200 |
---|---|---|
committer | Petteri Aimonen <jpa@git.mail.kapsi.fi> | 2013-02-07 17:40:17 +0200 |
commit | 47b10ec0ab370475c51294707c0fe6e160046973 (patch) | |
tree | c3035169f58a463564dbb3d0bc286ecd83a09f6f | |
parent | 4b7ddabbcf2b4e272675edbd20fd64fe921c99cf (diff) |
Sanitize filenames before putting them in #ifndef.
Update issue 50
Status: FixedInGit
-rw-r--r-- | generator/nanopb_generator.py | 12 | ||||
-rw-r--r-- | tests/Makefile | 3 | ||||
-rw-r--r-- | tests/funny-proto+name.proto | 0 |
3 files changed, 13 insertions, 2 deletions
diff --git a/generator/nanopb_generator.py b/generator/nanopb_generator.py index 9e85a11d..d35a4252 100644 --- a/generator/nanopb_generator.py +++ b/generator/nanopb_generator.py @@ -452,6 +452,16 @@ def sort_dependencies(messages): if msgname in message_by_name: yield message_by_name[msgname] +def make_identifier(headername): + '''Make #ifndef identifier that contains uppercase A-Z and digits 0-9''' + result = "" + for c in headername.upper(): + if c.isalnum(): + result += c + else: + result += '_' + return result + def generate_header(dependencies, headername, enums, messages): '''Generate content for a header file. Generates strings, which should be concatenated and stored to file. @@ -460,7 +470,7 @@ def generate_header(dependencies, headername, enums, messages): yield '/* Automatically generated nanopb header */\n' yield '/* Generated by %s at %s. */\n\n' % (nanopb_version, time.asctime()) - symbol = headername.replace('.', '_').upper() + symbol = make_identifier(headername) yield '#ifndef _PB_%s_\n' % symbol yield '#define _PB_%s_\n' % symbol yield '#include <pb.h>\n\n' diff --git a/tests/Makefile b/tests/Makefile index 38f10eae..7385fe35 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -6,7 +6,7 @@ TESTS= decode_unittests encode_unittests \ test_decode1 test_decode2 test_decode3 test_decode3_buf \ test_encode1 test_encode2 test_encode3 test_encode3_buf \ test_decode_callbacks test_encode_callbacks \ - test_missing_fields test_no_messages \ + test_missing_fields test_no_messages test_funny_name \ test_multiple_files test_cxxcompile test_options \ bc_encode bc_decode @@ -73,6 +73,7 @@ test_missing_fields: test_missing_fields.o pb_encode.o pb_decode.o missing_field decode_unittests: decode_unittests.o pb_decode.o unittestproto.pb.o encode_unittests: encode_unittests.o pb_encode.o unittestproto.pb.o test_no_messages: no_messages.pb.h no_messages.pb.c no_messages.pb.o +test_funny_name: funny-proto+name.pb.h funny-proto+name.pb.o bc_encode: bc_alltypes.pb.o pb_encode.o bc_encode.o bc_decode: bc_alltypes.pb.o pb_decode.o bc_decode.o diff --git a/tests/funny-proto+name.proto b/tests/funny-proto+name.proto new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/tests/funny-proto+name.proto |