Eli Green [mailto:eli.green / codedogs.ca] wrote:

> test succeeded. =)

Fine. It gave me a bad suprise with the signal handlers. But this seems to
be fixed in the new libraries.

I forgot to ask: Did you also try something like the mutex example on page
118 of Programming Ruby (see
http://www.pragmaticprogrammer.com/ruby/samples/smp118.html )?
With QNX 6.0, without the #undef HAVE_SETITIMER the first thread will run to
completion before the second thread starts.

> I did it with 6.1a ... I think the Dinkum C libraries have fixed
> almost all
> the problems you had. The only changes you made that I had to do were:
>
> - Adding the unix.h include to the top of io.c,
> - Adding QNXNTO to the #ifdef for excluding socketpair

> In io.c, I added this to the READ_DATA_PENDING #ifdef block:
>
> #elif defined(__QNXNTO__)
> #  define READ_DATA_PENDING(fp) !eof(fp->_Handle)
>
> but I'm not 100% sure that this is the right way to do it. The _Filet
> structure isn't exactly well-documented.

Strange. I had no problems with that one.

> Oh, and I just rebuilt it with a libruby.so, and everything seems to be
> working OK. I can now run irb and anything that has a "require
> 'socket'" at
> the top of it. I guess the answer is that either you build
> everything shared
> or everything static. I'll see what the QNX folks have to say about it.

I think that's right. I fell into that trap when porting readline. Does 6.1
already include it?

> I have a binary .qpr of the port if anybody's interested.

You could upload it to qnxstart. I think the package should include the
sources as well, because you seem to have to recompile everything after each
new QNX release...

> Matz, I'm not sure wether you'll want to include all those
> changes in there or
> not ... they were required under QNX 6.0, but are apparently unnecessary
> under 6.1 (brand new C libaries!) ...

I think we should target 6.1.