Hi !
Writing some simple checks for user-space sample code to check that a
read loop has some error checking in it - the read loop should look
something like this:
do {
len = read(fd, buff + off, BUFFSIZE);
if (len < 0 && len != -EAGAIN) {
perror("read failed");
exit(-1);
}
off += len;
} while (len > 0);
to check this the following cocci spatch was intended
<snip>
virtual report
virtual org
@check_open@
identifier f,retval;
idexpression int fd;
idexpression int l;
idexpression int o;
idexpression char * b;
position p;
@@
f(...) {
<+...
do {
...
l = read@p(fd,b+o,...);
if (l < 0 && l != -EAGAIN) {
? perror(...);
(
exit(...);
|
return ...;
)
}
l = l + o;
} while ( l > 0);
return retval;
...+>
}
@script: python@
p<<check_open.p;
fn<<check_open.f;
@@
print "OK: read loop in %s:%s line %s checking errors" % (p[0].file,fn,
p[0].line)
<snip>
spatch --parse-cocci gives no errors and the output looks fine (just the iso
expansions basically) - but when run with:
spatch --sp-file check_read_loop.cocci open_read_ok.c
its giving me:
init_defs_builtins: /usr/local/share/coccinelle/standard.h
Fatal error: exception Failure("not supported")
how can I figure out what is "not supported" here ?
thx!
hofrat
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci