do while is not supported.  Sorry.

julia

On Sun, 17 May 2015, Sébastien Hinderer wrote:

> Hi Nicholas,
> 
> Nicholas Mc Guire (2015/05/17 08:18 +0200):
> > 
> > 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);
> 
> I know it is not relevant for your problem, but the last argumentof the
> read system call looks suspiscious to me. I'd rather write BUFFSIZE-of
> but perhaps you wrote it that way just to simplify.
> 
> > 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 ?
> 
> just try this:
> 
> export OCAMLRUNPARAM=b
> And then re-run the spatch that caused the exception. You should get a
> backtrace that you can post here.
> 
> In case you do not get it, it will probably mean that you have compiled
> a native-code version of coccinelle. We will have to get a byte-code one
> to be able to have a backtrace.
> 
> And by the way, do you really need <+... and ...+> ? Wouldn't two mere
> ... be enough?
> 
> hth,
> Sébastien.
> _______________________________________________
> Cocci mailing list
> [email protected]
> https://systeme.lip6.fr/mailman/listinfo/cocci
> 
_______________________________________________
Cocci mailing list
[email protected]
https://systeme.lip6.fr/mailman/listinfo/cocci

Reply via email to