Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re^2: Packing struct timeval

by zwon (Abbot)
on Nov 24, 2012 at 15:52 UTC ( #1005385=note: print w/replies, xml ) Need Help??

in reply to Re: Packing struct timeval
in thread Packing struct timeval

Thank you, that's definitely interesting, but not exactly suit my taste ;) I tried to make a quick example with it and failed. First, my timeincl contains two files:
$ perl -V:timeincl timeincl='/usr/include/x86_64-linux-gnu/sys/time.h /usr/include/time.h + ';
Second, it seems not that easy to make it parse time.h, you may have to add some include directories and define some macros, depending on the system, so it is not that portable. I stopped with this:
use 5.010; use strict; use warnings; use Convert::Binary::C; use Config; my $c = Convert::Binary::C->new; $c->Include( '/usr/include', '/usr/include/x86_64-linux-gnu/sys/', '/usr/include/x86_64-linux-gnu/' )->Define('__WORDSIZE=64'); $c->parse_file('/usr/include/x86_64-linux-gnu/sys/time.h'); my $timeval = $c->pack( 'struct timeval', { tv_sec => 1, tv_usec => 0 +} );
And it gave me
bits/wordsize.h, line 7: macro '__WORDSIZE' redefined unidentically included from /usr/include/x86_64-linux-gnu//sys/cdefs.h:378 included from /usr/include/features.h:357 included from /usr/include/x86_64-linux-gnu/sys/time.h:23 at pack_ line 10.
I probably would be able to make it work on my particular system, but not in general case. And it requires that includes were installed on a target system, which may not be the case.

Replies are listed 'Best First'.
Re^3: Packing struct timeval
by Anonymous Monk on Nov 25, 2012 at 10:49 UTC

    I tried to make a quick example with it and failed.

    I kinda knew it would -- reinventing a compiler is hard -- it much simpler to compile a c program to dump the structure of struct, kinda sorta the trick C::DynaLib::Struct/hparse employs

    I suppose you could always "fingerprint an os" and build a database of time formats ... pure-perl is pure insanity if you ask me, much less work to install a compiler :)

      I wish I knew how many people use PP version of my module, if any ;) For the moment I will probably just special case NetBSD 6 and postpone more cardinal solution till other OSes will follow with 64-bit time_t

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1005385]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (6)
As of 2018-05-21 11:32 GMT
Find Nodes?
    Voting Booth?