localtime question

Mipam mipam at ibb.net
Tue Aug 10 09:45:27 PDT 2004


> Note that it's a good idea to explicitly specify that main() does
> nothing to its argument with:
> 
>         int
>         main(void)
>         {
>                 ...
>         }
> 
> and that main() has to `return' some value that fits in an `int' as its
> definition says it should.
> 
> > But at compilation it complains:
> >
> > tijd.c: In function `main':
> > tijd.c:15: warning: passing arg 1 of `ctime' makes pointer from integer without a cast
> >
> > What am i doing wrong?
> 
> You're passing the "value" of tv.tv_sec in a function that expects a
> pointer to it.
> 
>         % man ctime
> 
>              char *
>              ctime(const time_t *clock);
> 
> The value you passed to ctime() is not an address of a constant time_t
> object but the value of the time_t object itself.  The compiler detects
> that a conversion from an integral type to a pointer needs to take place
> and warns you about it.
> 
> This is not a fatal error (c.f. the rationale of the ANSI C99 standard,
> which specifies that pointers might be converted to integral values and
> back to the same pointer type without losing any information).  However,
> it is usually a very common mistake (forgetting to pass a reference to
> the object and passing the object itself).  This is why you get warned.
> 
> Try calling ctime() with the address of tv.tv_sec:
> 
>         printf("%s\n", ctime(&tv.tv_sec));

#include <stdio.h>
#include <sys/time.h>

int main(void)
{
struct timeval tv;
struct timeval tv_current;
if (gettimeofday(&tv_current, NULL) == -1)
   err(1, "Could not get local time of day");
tv.tv_sec = tv_current.tv_sec-86400;
printf("%s\n", ctime(&tv.tv_sec));
return 0;
}

Does the job, thanks!
At compile time i get:

tijd.c: In function `main':
tijd.c:11: warning: passing arg 1 of `ctime' from incompatible pointer 
type

But it works:
Mon Aug  9 18:44:04 2004
nicely the time of yesterday.
Only thing left is another format like: 2004 Aug  9 18:44:04
Any hints?
Bye,

Mipam.


More information about the freebsd-questions mailing list