Previously only write_func_prot() was performing line wrapping. As the next patch in this series also requires line wrapping, then this patch introduces a generic line wrapping helper in CodeWriter called p_wrap(), which can be used in both cases. This patch causes a change in the generated prototype for psp_device_get_locked(), as the skb argument actually fits on the first line, while not exceeding 80 characters. No functional changes. Signed-off-by: Asbjørn Sloth Tønnesen --- net/psp/psp-nl-gen.h | 4 +-- tools/net/ynl/pyynl/ynl_gen_c.py | 42 +++++++++++++++++++------------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/net/psp/psp-nl-gen.h b/net/psp/psp-nl-gen.h index 25268ed11fb56..ac5f59b4f498c 100644 --- a/net/psp/psp-nl-gen.h +++ b/net/psp/psp-nl-gen.h @@ -14,8 +14,8 @@ /* Common nested types */ extern const struct nla_policy psp_keys_nl_policy[PSP_A_KEYS_SPI + 1]; -int psp_device_get_locked(const struct genl_split_ops *ops, - struct sk_buff *skb, struct genl_info *info); +int psp_device_get_locked(const struct genl_split_ops *ops, struct sk_buff *skb, + struct genl_info *info); int psp_assoc_device_get_locked(const struct genl_split_ops *ops, struct sk_buff *skb, struct genl_info *info); void diff --git a/tools/net/ynl/pyynl/ynl_gen_c.py b/tools/net/ynl/pyynl/ynl_gen_c.py index b00762721280c..1201c2ac352ea 100755 --- a/tools/net/ynl/pyynl/ynl_gen_c.py +++ b/tools/net/ynl/pyynl/ynl_gen_c.py @@ -1693,6 +1693,27 @@ class CodeWriter: ind += add_ind self._out.write('\t' * ind + line + '\n') + def p_wrap(self, prefix, parts): + assert(len(parts) > 0) + ts = 8 + pfx_len = len(prefix) + pfx_ind_tabs = pfx_len // ts + pfx_ind = '\t' * pfx_ind_tabs + ' ' * (pfx_len % ts) + max_len = 80 - (self._ind * ts) + is_first_line = True + buf = f'{prefix}{parts[0]}' + for part in parts[1:]: + next_buf = f'{buf} {part}' + if len(next_buf) <= max_len: + buf = next_buf + else: + self.p(buf) + buf = f'{pfx_ind}{part}' + if is_first_line: + max_len -= pfx_ind_tabs * (ts-1) + is_first_line = False + self.p(buf) + def nl(self): self._nl = True @@ -1751,23 +1772,10 @@ class CodeWriter: v = '' elif qual_ret[-1] != '*': v += ' ' - v += name + '(' - ind = '\t' * (len(v) // 8) + ' ' * (len(v) % 8) - delta_ind = len(v) - len(ind) - v += args[0] - i = 1 - while i < len(args): - next_len = len(v) + len(args[i]) - if v[0] == '\t': - next_len += delta_ind - if next_len > 76: - self.p(v + ',') - v = ind - else: - v += ', ' - v += args[i] - i += 1 - self.p(v + ')' + suffix) + + parts = [f'{arg},' for arg in args[:-1]] + parts.append(f'{args[-1]}){suffix}') + self.p_wrap(f'{v}{name}(', parts) def write_func_lvar(self, local_vars): if not local_vars: -- 2.51.0