On Tue, 9 Jun 2020, Markus Elfring wrote:
> Hello,
>
> My software development attention was caught also by a recent patch.
> https://lore.kernel.org/linux-fsdevel/20200608141629.GA1912173@mwanda/
> https://lore.kernel.org/patchwork/patch/1253499/
>
> Thus I have tried another tiny script out for the semantic patch language
> (according to the software combination “Coccinelle 1.0.8-00104-ge06b9156”).
>
>
> @display@
> expression e, x, y;
> @@
> *brelse(e);
> *y = x(<+... e ...+>, ...);
>
>
> An usable output is generated then as expected for a test source file
> like the following.
> https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/fs/exfat/nls.c?id=b676fdbcf4c8424f3c02ed7f31576d99b963bded#n652
>
> // SPDX-License-Identifier: GPL-2.0-or-later
> // deleted part
> static int exfat_load_upcase_table(struct super_block *sb,
> sector_t sector, unsigned long long num_sectors,
> unsigned int utbl_checksum)
> {
> struct exfat_sb_info *sbi = EXFAT_SB(sb);
> unsigned int sect_size = sb->s_blocksize;
> unsigned int i, index = 0;
> u32 chksum = 0;
> // deleted part
> while (sector < num_sectors) {
> struct buffer_head *bh;
>
> bh = sb_bread(sb, sector);
> // deleted part
> brelse(bh);
> chksum = exfat_calc_chksum32(bh->b_data, i, chksum, CS_DEFAULT);
> }
> // deleted part
> }
> // deleted part
>
>
> If I omit the specification “, ...” from the function call parameters
> because I could be unsure about the number of arguments in other
> software situations, I do not get the desired test output as before.
This has been discussed before. When you put <+... ...+> in an argument
list, it doesn't mean an unknown number of arguments, it means one
arguemnt that has something as a subexpression.
>
> If I omit even the semicolon from the assignment statement in the
> search pattern, I get an error message.
>
> elfring@Sonne:~/Projekte/Coccinelle/janitor> spatch --parse-cocci
> show_questionable_brelse_usage6.cocci
> …
> minus: parse error:
> File "show_questionable_brelse_usage6.cocci", line 6, column 0, charpos = 67
> around = '',
> whole content =
That is quite normal. One statement should be followed by another
statement.
>
> Will such observations influence subsequent software evolution?
No.
julia
_______________________________________________
Cocci mailing list
Cocci@systeme.lip6.fr
https://systeme.lip6.fr/mailman/listinfo/cocci