diff options
Diffstat (limited to 'build-aux')
-rw-r--r-- | build-aux/qmi-codegen/Message.py | 15 | ||||
-rw-r--r-- | build-aux/qmi-codegen/Variable.py | 5 | ||||
-rw-r--r-- | build-aux/qmi-codegen/VariableArray.py | 3 | ||||
-rw-r--r-- | build-aux/qmi-codegen/VariableSequence.py | 7 | ||||
-rw-r--r-- | build-aux/qmi-codegen/VariableStruct.py | 7 |
5 files changed, 34 insertions, 3 deletions
diff --git a/build-aux/qmi-codegen/Message.py b/build-aux/qmi-codegen/Message.py index c60e4593..8d1b7cc1 100644 --- a/build-aux/qmi-codegen/Message.py +++ b/build-aux/qmi-codegen/Message.py @@ -286,6 +286,7 @@ class Message: '{\n' ' const gchar *tlv_type_str = NULL;\n' ' g_autofree gchar *translated_value = NULL;\n' + ' gboolean value_has_personal_info = FALSE;\n' '\n') if self.type == 'Message': @@ -303,7 +304,11 @@ class Message: ' tlv_type_str = "${field_name}";\n' ' translated_value = ${underscore_field}_get_printable (\n' ' ctx->self,\n' - ' ctx->line_prefix);\n' + ' ctx->line_prefix);\n') + if field.variable is not None and field.variable.contains_personal_info: + field_template += ( + ' value_has_personal_info = TRUE;\n') + field_template += ( ' break;\n') template += string.Template(field_template).substitute(translations) @@ -326,7 +331,11 @@ class Message: ' tlv_type_str = "${field_name}";\n' ' translated_value = ${underscore_field}_get_printable (\n' ' ctx->self,\n' - ' ctx->line_prefix);\n' + ' ctx->line_prefix);\n') + if field.variable is not None and field.variable.contains_personal_info: + field_template += ( + ' value_has_personal_info = TRUE;\n') + field_template += ( ' break;\n') template += string.Template(field_template).substitute(translations) @@ -348,7 +357,7 @@ class Message: ' } else {\n' ' g_autofree gchar *value_hex = NULL;\n' '\n' - ' if (qmi_utils_get_show_personal_info ())\n' + ' if (qmi_utils_get_show_personal_info () || !value_has_personal_info)\n' ' value_hex = qmi_helpers_str_hex (value, length, \':\');\n' ' else\n' ' value_hex = g_strdup ("###...");\n' diff --git a/build-aux/qmi-codegen/Variable.py b/build-aux/qmi-codegen/Variable.py index 65bca8d3..dc28f219 100644 --- a/build-aux/qmi-codegen/Variable.py +++ b/build-aux/qmi-codegen/Variable.py @@ -117,6 +117,11 @@ class Variable: else: self.personal_info = False; + """ + Whether the variable contains personal info or not + """ + self.contains_personal_info = self.personal_info + """ Emits the code to declare specific new types required by the variable. """ diff --git a/build-aux/qmi-codegen/VariableArray.py b/build-aux/qmi-codegen/VariableArray.py index 074f4710..17f5bc74 100644 --- a/build-aux/qmi-codegen/VariableArray.py +++ b/build-aux/qmi-codegen/VariableArray.py @@ -93,6 +93,9 @@ class VariableArray(Variable): # Arrays need compat GIR support if the array element needs compat GIR support self.needs_compat_gir = self.array_element.needs_compat_gir + # Arrays contain personal info if the array element contains personal info or they themselves are personal info + self.contains_personal_info = self.contains_personal_info or self.array_element.contains_personal_info + def emit_types(self, hfile, cfile, since, static): self.array_element.emit_types(hfile, cfile, since, static) diff --git a/build-aux/qmi-codegen/VariableSequence.py b/build-aux/qmi-codegen/VariableSequence.py index 4343d67c..061b797b 100644 --- a/build-aux/qmi-codegen/VariableSequence.py +++ b/build-aux/qmi-codegen/VariableSequence.py @@ -57,6 +57,13 @@ class VariableSequence(Variable): self.needs_compat_gir = True break + # We'll contain personal info if at least one of the members contains personal info or we ourselves are personal info + if not self.contains_personal_info: + for member in self.members: + if member['object'].contains_personal_info: + self.contains_personal_info = True + break + def emit_types(self, hfile, cfile, since, static): for member in self.members: diff --git a/build-aux/qmi-codegen/VariableStruct.py b/build-aux/qmi-codegen/VariableStruct.py index 0d084809..3e5b0aed 100644 --- a/build-aux/qmi-codegen/VariableStruct.py +++ b/build-aux/qmi-codegen/VariableStruct.py @@ -87,6 +87,13 @@ class VariableStruct(Variable): self.new_method_gir = '__' + utils.build_underscore_name(self.struct_type_name_gir) + '_new' self.free_method_gir = '__' + utils.build_underscore_name(self.struct_type_name_gir) + '_free' + # We'll contain personal info if at least one of the members contains personal info or we ourselves are personal info + if not self.contains_personal_info: + for member in self.members: + if member['object'].contains_personal_info: + self.contains_personal_info = True + break + def build_variable_declaration(self, line_prefix, variable_name): raise RuntimeError('Variable of type "struct" can only be defined as array members') |