Actually, that printf was for my debugging: diff /sys/src/ape/lib/ap/plan9/_buf.c _buf.c 294a295 > /* 298c299 < errno = EBADF; /* how X tells a client is gone */ --- > errno = EBADF; // how X tells a client > is gone 300a302 > */
On Feb 25, 2013, at 8:29 PM, Jeff Sickel <[email protected]> wrote: > I've been tracking down little errors in the APE select() function that > cropped up when trying to use Python's subprocess module. After a few too > many hours of investigation, I've come to the conclusion that the code that > causes error is intentional code to handle a specific case for X (I'll assume > X11 until corrected): > > ; diff /sys/src/ape/lib/ap/plan9/_buf.c _buf.c > 292a293 >> printf("no buffered %d\n", i); > 294a296 >> /* > 298c300 > < errno = EBADF; /* how X tells a client > is gone */ > --- >> errno = EBADF; // how X tells a client >> is gone > 300a303 >> */ > > > > By removing the above, Python code that uses subprocess.Popen(cmd, > stdout=PIPE, stderr=PIPE) will now work correctly, without having to resort > to os.popen3(cmd) attempts to get around the select.error: (4, 'Bad file > number') that would crop up without the change. > > My question is: does anyone still use the X11 code based on APE? Is this > section safe to remove in sources? Or do you have additional recommendations > to work around the select() error? > > If not, I'll prep a patch. Thanks. > > -jas > >
