Hi Thomas, thanks a lot for your quick answer!
> :-/ Perhaps _long or _intptr would be a better choice than _int, since > they would adapt to the system's word size, which is more likely to be > right everywhere than _int that is always 32 bits wide, according to the > Racket documentation, but you can't be sure. In fact, I've already experimented with _int64, which gave me similar - and very strange! -results as these two ... the result always is either 6 (looking like real microseconds :-;), or 10, or 16 digits long (examples would be: 644199 4295162899 9359042975779072 ), and when I reexecute the code several times in a row, the results very often seem to look like the example in the middle, starting with digits 4295... and having a length of 10... (sorry if this sounds a bit silly, but...) What kind of magic might this be...? > > There is, however, a PLaneT package (planet dherman/c:4:0) providing the > facilities to parse header files and extract structure layout > information like that required here using the system's C compiler. Thanks for the pointer (pun intended :-;), I will have a look... But in fact I hope that other than experimenting with calls like these, that is, when working with a "real", user-friendly library, I will not have too great a need to use it :-) > > The zero microseconds value could mean that you were actually "lucky" > with the call, that your system simply doesn't support time values with > microsecond precision or that your system's implementation of > gettimeofday doesn't support that. Well, I think I should at least get the milliseconds, because Racket has them in (current-milliseconds), so in that case I'd expect to see something like 123000 in the microsecond field... I want to have a look at dtrace as soon as I have time (it seems to work a bit less straightforward than strace :-;) to see how Racket does it,- or of course I might check out the sources... > > By the way, I think that the dsttime field in _timezone should probably > have the type _bool. But the POSIX standard says anyway that if the > second argument to gettimeofday is anything else than the null pointer, > the behaviour of the whole function call is undefined, so you have no > right to complain no matter how strange the result is ;-) Well in this case in fact, I was happy with the result, the 1 looked fine given we're having daylight saving time :-; But your remark reminds me of another part of the man page that was not clear to me: If tp is NULL and tzp is non-NULL, gettimeofday() will populate the timezone struct in tzp. If tp is non-NULL and tzp is NULL, then only the timeval struct in tp is populated. If both tp and tzp are NULL, nothing is returned. I was wondering whether this really meant the caller had to specify a different kind of pointer (null or non null) in a variable designed for OUTPUT/return... this sounded illogical somehow, but in any case, using Racket (_ptr o _timeval) seems to have worked - meaning that Racket does NOT provide a null pointer here I guess? > > Welcome to the world of C -- I guess my e-mail signature sums up the > situation in this case, too ;-) Well thank you - as long as you know you're a visitor only, you can stay relaxed, and just gaze at all the ancient curiosities (or so I hope, for now :-;) Thanks again for your patience with the c foreigners, Sigrid > > Ciao, > Thomas > > > -- > When C++ is your hammer, every problem looks like your thumb. _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users