From: Petteri Aimonen Date: Thu, 7 Feb 2013 15:40:17 +0000 (+0200) Subject: Sanitize filenames before putting them in #ifndef. X-Git-Tag: 5.0.2~186^2~413 X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=commitdiff_plain;h=47b10ec0ab370475c51294707c0fe6e160046973;p=apps%2Fagl-service-can-low-level.git Sanitize filenames before putting them in #ifndef. Update issue 50 Status: FixedInGit --- 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 \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