xdrgen: Rename "variable-length strings"
authorChuck Lever <chuck.lever@oracle.com>
Mon, 30 Sep 2024 00:50:13 +0000 (20:50 -0400)
committerChuck Lever <chuck.lever@oracle.com>
Mon, 11 Nov 2024 18:41:59 +0000 (13:41 -0500)
I misread RFC 4506. The built-in data type is called simply
"string", as there is no fixed-length variety.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
27 files changed:
tools/net/sunrpc/xdrgen/generators/pointer.py
tools/net/sunrpc/xdrgen/generators/struct.py
tools/net/sunrpc/xdrgen/generators/typedef.py
tools/net/sunrpc/xdrgen/grammars/xdr.lark
tools/net/sunrpc/xdrgen/templates/C/pointer/decoder/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/pointer/decoder/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/templates/C/pointer/definition/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/pointer/definition/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/templates/C/pointer/encoder/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/pointer/encoder/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/templates/C/struct/decoder/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/struct/decoder/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/templates/C/struct/definition/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/struct/definition/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/templates/C/struct/encoder/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/struct/encoder/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/templates/C/typedef/declaration/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/typedef/declaration/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/templates/C/typedef/definition/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/typedef/definition/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/templates/C/typedef/encoder/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/typedef/encoder/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/templates/C/union/decoder/string.j2 [new file with mode: 0644]
tools/net/sunrpc/xdrgen/templates/C/union/decoder/variable_length_string.j2 [deleted file]
tools/net/sunrpc/xdrgen/xdr_ast.py

index b0b27f1..0aa3d35 100644 (file)
@@ -8,7 +8,7 @@ from jinja2 import Environment
 from generators import SourceGenerator, kernel_c_type
 from generators import create_jinja2_environment, get_jinja2_template
 
-from xdr_ast import _XdrBasic, _XdrVariableLengthString
+from xdr_ast import _XdrBasic, _XdrString
 from xdr_ast import _XdrFixedLengthOpaque, _XdrVariableLengthOpaque
 from xdr_ast import _XdrFixedLengthArray, _XdrVariableLengthArray
 from xdr_ast import _XdrOptionalData, _XdrPointer, _XdrDeclaration
@@ -46,7 +46,7 @@ def emit_pointer_member_definition(
     elif isinstance(field, _XdrVariableLengthOpaque):
         template = get_jinja2_template(environment, "definition", field.template)
         print(template.render(name=field.name))
-    elif isinstance(field, _XdrVariableLengthString):
+    elif isinstance(field, _XdrString):
         template = get_jinja2_template(environment, "definition", field.template)
         print(template.render(name=field.name))
     elif isinstance(field, _XdrFixedLengthArray):
@@ -119,7 +119,7 @@ def emit_pointer_member_decoder(
                 maxsize=field.maxsize,
             )
         )
-    elif isinstance(field, _XdrVariableLengthString):
+    elif isinstance(field, _XdrString):
         template = get_jinja2_template(environment, "decoder", field.template)
         print(
             template.render(
@@ -198,7 +198,7 @@ def emit_pointer_member_encoder(
                 maxsize=field.maxsize,
             )
         )
-    elif isinstance(field, _XdrVariableLengthString):
+    elif isinstance(field, _XdrString):
         template = get_jinja2_template(environment, "encoder", field.template)
         print(
             template.render(
index b694cd4..6dd7f4d 100644 (file)
@@ -8,7 +8,7 @@ from jinja2 import Environment
 from generators import SourceGenerator, kernel_c_type
 from generators import create_jinja2_environment, get_jinja2_template
 
-from xdr_ast import _XdrBasic, _XdrVariableLengthString
+from xdr_ast import _XdrBasic, _XdrString
 from xdr_ast import _XdrFixedLengthOpaque, _XdrVariableLengthOpaque
 from xdr_ast import _XdrFixedLengthArray, _XdrVariableLengthArray
 from xdr_ast import _XdrOptionalData, _XdrStruct, _XdrDeclaration
@@ -46,7 +46,7 @@ def emit_struct_member_definition(
     elif isinstance(field, _XdrVariableLengthOpaque):
         template = get_jinja2_template(environment, "definition", field.template)
         print(template.render(name=field.name))
-    elif isinstance(field, _XdrVariableLengthString):
+    elif isinstance(field, _XdrString):
         template = get_jinja2_template(environment, "definition", field.template)
         print(template.render(name=field.name))
     elif isinstance(field, _XdrFixedLengthArray):
@@ -119,7 +119,7 @@ def emit_struct_member_decoder(
                 maxsize=field.maxsize,
             )
         )
-    elif isinstance(field, _XdrVariableLengthString):
+    elif isinstance(field, _XdrString):
         template = get_jinja2_template(environment, "decoder", field.template)
         print(
             template.render(
@@ -198,7 +198,7 @@ def emit_struct_member_encoder(
                 maxsize=field.maxsize,
             )
         )
-    elif isinstance(field, _XdrVariableLengthString):
+    elif isinstance(field, _XdrString):
         template = get_jinja2_template(environment, "encoder", field.template)
         print(
             template.render(
index 85a1b23..6ea9844 100644 (file)
@@ -8,7 +8,7 @@ from jinja2 import Environment
 from generators import SourceGenerator, kernel_c_type
 from generators import create_jinja2_environment, get_jinja2_template
 
-from xdr_ast import _XdrBasic, _XdrTypedef, _XdrVariableLengthString
+from xdr_ast import _XdrBasic, _XdrTypedef, _XdrString
 from xdr_ast import _XdrFixedLengthOpaque, _XdrVariableLengthOpaque
 from xdr_ast import _XdrFixedLengthArray, _XdrVariableLengthArray
 from xdr_ast import _XdrOptionalData, _XdrVoid, _XdrDeclaration
@@ -28,7 +28,7 @@ def emit_typedef_declaration(environment: Environment, node: _XdrDeclaration) ->
                 classifier=node.spec.c_classifier,
             )
         )
-    elif isinstance(node, _XdrVariableLengthString):
+    elif isinstance(node, _XdrString):
         template = get_jinja2_template(environment, "declaration", node.template)
         print(template.render(name=node.name))
     elif isinstance(node, _XdrFixedLengthOpaque):
@@ -74,7 +74,7 @@ def emit_type_definition(environment: Environment, node: _XdrDeclaration) -> Non
                 classifier=node.spec.c_classifier,
             )
         )
-    elif isinstance(node, _XdrVariableLengthString):
+    elif isinstance(node, _XdrString):
         template = get_jinja2_template(environment, "definition", node.template)
         print(template.render(name=node.name))
     elif isinstance(node, _XdrFixedLengthOpaque):
@@ -119,7 +119,7 @@ def emit_typedef_decoder(environment: Environment, node: _XdrDeclaration) -> Non
                 type=node.spec.type_name,
             )
         )
-    elif isinstance(node, _XdrVariableLengthString):
+    elif isinstance(node, _XdrString):
         template = get_jinja2_template(environment, "decoder", node.template)
         print(
             template.render(
@@ -180,7 +180,7 @@ def emit_typedef_encoder(environment: Environment, node: _XdrDeclaration) -> Non
                 type=node.spec.type_name,
             )
         )
-    elif isinstance(node, _XdrVariableLengthString):
+    elif isinstance(node, _XdrString):
         template = get_jinja2_template(environment, "encoder", node.template)
         print(
             template.render(
index f3c4552..0e1aeb0 100644 (file)
@@ -3,7 +3,7 @@
 
 declaration             : "opaque" identifier "[" value "]"            -> fixed_length_opaque
                         | "opaque" identifier "<" [ value ] ">"        -> variable_length_opaque
-                        | "string" identifier "<" [ value ] ">"        -> variable_length_string
+                        | "string" identifier "<" [ value ] ">"        -> string
                         | type_specifier identifier "[" value "]"      -> fixed_length_array
                         | type_specifier identifier "<" [ value ] ">"  -> variable_length_array
                         | type_specifier "*" identifier                -> optional_data
diff --git a/tools/net/sunrpc/xdrgen/templates/C/pointer/decoder/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/pointer/decoder/string.j2
new file mode 100644 (file)
index 0000000..12d20b1
--- /dev/null
@@ -0,0 +1,6 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+{% if annotate %}
+       /* member {{ name }} (variable-length string) */
+{% endif %}
+       if (!xdrgen_decode_string(xdr, (string *)ptr, {{ maxsize }}))
+               return false;
diff --git a/tools/net/sunrpc/xdrgen/templates/C/pointer/decoder/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/pointer/decoder/variable_length_string.j2
deleted file mode 100644 (file)
index 12d20b1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-{% if annotate %}
-       /* member {{ name }} (variable-length string) */
-{% endif %}
-       if (!xdrgen_decode_string(xdr, (string *)ptr, {{ maxsize }}))
-               return false;
diff --git a/tools/net/sunrpc/xdrgen/templates/C/pointer/definition/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/pointer/definition/string.j2
new file mode 100644 (file)
index 0000000..2de2fee
--- /dev/null
@@ -0,0 +1,5 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+{% if annotate %}
+       /* (variable-length string) */
+{% endif %}
+       string {{ name }};
diff --git a/tools/net/sunrpc/xdrgen/templates/C/pointer/definition/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/pointer/definition/variable_length_string.j2
deleted file mode 100644 (file)
index 2de2fee..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-{% if annotate %}
-       /* (variable-length string) */
-{% endif %}
-       string {{ name }};
diff --git a/tools/net/sunrpc/xdrgen/templates/C/pointer/encoder/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/pointer/encoder/string.j2
new file mode 100644 (file)
index 0000000..cf65b71
--- /dev/null
@@ -0,0 +1,8 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+{% if annotate %}
+       /* member {{ name }} (variable-length string) */
+{% endif %}
+       if (value->{{ name }}.len > {{ maxsize }})
+               return false;
+       if (xdr_stream_encode_opaque(xdr, value->{{ name }}.data, value->{{ name }}.len) < 0)
+               return false;
diff --git a/tools/net/sunrpc/xdrgen/templates/C/pointer/encoder/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/pointer/encoder/variable_length_string.j2
deleted file mode 100644 (file)
index cf65b71..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-{% if annotate %}
-       /* member {{ name }} (variable-length string) */
-{% endif %}
-       if (value->{{ name }}.len > {{ maxsize }})
-               return false;
-       if (xdr_stream_encode_opaque(xdr, value->{{ name }}.data, value->{{ name }}.len) < 0)
-               return false;
diff --git a/tools/net/sunrpc/xdrgen/templates/C/struct/decoder/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/struct/decoder/string.j2
new file mode 100644 (file)
index 0000000..12d20b1
--- /dev/null
@@ -0,0 +1,6 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+{% if annotate %}
+       /* member {{ name }} (variable-length string) */
+{% endif %}
+       if (!xdrgen_decode_string(xdr, (string *)ptr, {{ maxsize }}))
+               return false;
diff --git a/tools/net/sunrpc/xdrgen/templates/C/struct/decoder/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/struct/decoder/variable_length_string.j2
deleted file mode 100644 (file)
index 12d20b1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-{% if annotate %}
-       /* member {{ name }} (variable-length string) */
-{% endif %}
-       if (!xdrgen_decode_string(xdr, (string *)ptr, {{ maxsize }}))
-               return false;
diff --git a/tools/net/sunrpc/xdrgen/templates/C/struct/definition/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/struct/definition/string.j2
new file mode 100644 (file)
index 0000000..2de2fee
--- /dev/null
@@ -0,0 +1,5 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+{% if annotate %}
+       /* (variable-length string) */
+{% endif %}
+       string {{ name }};
diff --git a/tools/net/sunrpc/xdrgen/templates/C/struct/definition/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/struct/definition/variable_length_string.j2
deleted file mode 100644 (file)
index 2de2fee..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-{% if annotate %}
-       /* (variable-length string) */
-{% endif %}
-       string {{ name }};
diff --git a/tools/net/sunrpc/xdrgen/templates/C/struct/encoder/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/struct/encoder/string.j2
new file mode 100644 (file)
index 0000000..cf65b71
--- /dev/null
@@ -0,0 +1,8 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+{% if annotate %}
+       /* member {{ name }} (variable-length string) */
+{% endif %}
+       if (value->{{ name }}.len > {{ maxsize }})
+               return false;
+       if (xdr_stream_encode_opaque(xdr, value->{{ name }}.data, value->{{ name }}.len) < 0)
+               return false;
diff --git a/tools/net/sunrpc/xdrgen/templates/C/struct/encoder/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/struct/encoder/variable_length_string.j2
deleted file mode 100644 (file)
index cf65b71..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-{% if annotate %}
-       /* member {{ name }} (variable-length string) */
-{% endif %}
-       if (value->{{ name }}.len > {{ maxsize }})
-               return false;
-       if (xdr_stream_encode_opaque(xdr, value->{{ name }}.data, value->{{ name }}.len) < 0)
-               return false;
diff --git a/tools/net/sunrpc/xdrgen/templates/C/typedef/declaration/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/typedef/declaration/string.j2
new file mode 100644 (file)
index 0000000..3fe3ddd
--- /dev/null
@@ -0,0 +1,4 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+
+bool xdrgen_decode_{{ name }}(struct xdr_stream *xdr, {{ classifier }}{{ name }} *ptr);
+bool xdrgen_encode_{{ name }}(struct xdr_stream *xdr, const {{ classifier }}{{ name }} value);
diff --git a/tools/net/sunrpc/xdrgen/templates/C/typedef/declaration/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/typedef/declaration/variable_length_string.j2
deleted file mode 100644 (file)
index 3fe3ddd..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-
-bool xdrgen_decode_{{ name }}(struct xdr_stream *xdr, {{ classifier }}{{ name }} *ptr);
-bool xdrgen_encode_{{ name }}(struct xdr_stream *xdr, const {{ classifier }}{{ name }} value);
diff --git a/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/string.j2
new file mode 100644 (file)
index 0000000..56c5a17
--- /dev/null
@@ -0,0 +1,17 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+
+{% if annotate %}
+/* typedef {{ name }} */
+{% endif %}
+{% if name in public_apis %}
+bool
+{% else %}
+static bool __maybe_unused
+{% endif %}
+xdrgen_decode_{{ name }}(struct xdr_stream *xdr, {{ classifier }}{{ name }} *ptr)
+{
+{% if annotate %}
+       /* (variable-length string) */
+{% endif %}
+       return xdrgen_decode_string(xdr, ptr, {{ maxsize }});
+};
diff --git a/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/typedef/decoder/variable_length_string.j2
deleted file mode 100644 (file)
index 56c5a17..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-
-{% if annotate %}
-/* typedef {{ name }} */
-{% endif %}
-{% if name in public_apis %}
-bool
-{% else %}
-static bool __maybe_unused
-{% endif %}
-xdrgen_decode_{{ name }}(struct xdr_stream *xdr, {{ classifier }}{{ name }} *ptr)
-{
-{% if annotate %}
-       /* (variable-length string) */
-{% endif %}
-       return xdrgen_decode_string(xdr, ptr, {{ maxsize }});
-};
diff --git a/tools/net/sunrpc/xdrgen/templates/C/typedef/definition/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/typedef/definition/string.j2
new file mode 100644 (file)
index 0000000..c03c2df
--- /dev/null
@@ -0,0 +1,6 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+
+{% if annotate %}
+/* typedef {{ name }} (variable-length string) */
+{% endif %}
+typedef string {{ name }};
diff --git a/tools/net/sunrpc/xdrgen/templates/C/typedef/definition/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/typedef/definition/variable_length_string.j2
deleted file mode 100644 (file)
index c03c2df..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-
-{% if annotate %}
-/* typedef {{ name }} (variable-length string) */
-{% endif %}
-typedef string {{ name }};
diff --git a/tools/net/sunrpc/xdrgen/templates/C/typedef/encoder/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/typedef/encoder/string.j2
new file mode 100644 (file)
index 0000000..3d490ff
--- /dev/null
@@ -0,0 +1,17 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+
+{% if annotate %}
+/* typedef {{ name }} */
+{% endif %}
+{% if name in public_apis %}
+bool
+{% else %}
+static bool __maybe_unused
+{% endif %}
+xdrgen_encode_{{ name }}(struct xdr_stream *xdr, const {{ classifier }}{{ name }} value)
+{
+{% if annotate %}
+       /* (variable-length string) */
+{% endif %}
+       return xdr_stream_encode_opaque(xdr, value.data, value.len) >= 0;
+};
diff --git a/tools/net/sunrpc/xdrgen/templates/C/typedef/encoder/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/typedef/encoder/variable_length_string.j2
deleted file mode 100644 (file)
index 3d490ff..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-
-{% if annotate %}
-/* typedef {{ name }} */
-{% endif %}
-{% if name in public_apis %}
-bool
-{% else %}
-static bool __maybe_unused
-{% endif %}
-xdrgen_encode_{{ name }}(struct xdr_stream *xdr, const {{ classifier }}{{ name }} value)
-{
-{% if annotate %}
-       /* (variable-length string) */
-{% endif %}
-       return xdr_stream_encode_opaque(xdr, value.data, value.len) >= 0;
-};
diff --git a/tools/net/sunrpc/xdrgen/templates/C/union/decoder/string.j2 b/tools/net/sunrpc/xdrgen/templates/C/union/decoder/string.j2
new file mode 100644 (file)
index 0000000..83b6e5a
--- /dev/null
@@ -0,0 +1,6 @@
+{# SPDX-License-Identifier: GPL-2.0 #}
+{% if annotate %}
+               /* member {{ name }} (variable-length string) */
+{% endif %}
+               if (!xdrgen_decode_string(xdr, (struct string *)ptr->u.{{ name }}, {{ maxsize }}))
+                       return false;
diff --git a/tools/net/sunrpc/xdrgen/templates/C/union/decoder/variable_length_string.j2 b/tools/net/sunrpc/xdrgen/templates/C/union/decoder/variable_length_string.j2
deleted file mode 100644 (file)
index 83b6e5a..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{# SPDX-License-Identifier: GPL-2.0 #}
-{% if annotate %}
-               /* member {{ name }} (variable-length string) */
-{% endif %}
-               if (!xdrgen_decode_string(xdr, (struct string *)ptr->u.{{ name }}, {{ maxsize }}))
-                       return false;
index 5d96c54..17d1689 100644 (file)
@@ -88,12 +88,12 @@ class _XdrVariableLengthOpaque(_XdrDeclaration):
 
 
 @dataclass
-class _XdrVariableLengthString(_XdrDeclaration):
+class _XdrString(_XdrDeclaration):
     """A (NUL-terminated) variable-length string declaration"""
 
     name: str
     maxsize: str
-    template: str = "variable_length_string"
+    template: str = "string"
 
 
 @dataclass
@@ -350,15 +350,15 @@ class ParseToAst(Transformer):
 
         return _XdrVariableLengthOpaque(name, maxsize)
 
-    def variable_length_string(self, children):
-        """Instantiate one _XdrVariableLengthString declaration object"""
+    def string(self, children):
+        """Instantiate one _XdrString declaration object"""
         name = children[0].symbol
         if children[1] is not None:
             maxsize = children[1].value
         else:
             maxsize = "0"
 
-        return _XdrVariableLengthString(name, maxsize)
+        return _XdrString(name, maxsize)
 
     def fixed_length_array(self, children):
         """Instantiate one _XdrFixedLengthArray declaration object"""