public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
From: Juliusz Chroboczek <Juliusz.Chroboczek@pps•jussieu.fr>
To: git@vger•kernel.org
Subject: Re: Trying to use AUTHOR_DATE
Date: Sat, 30 Apr 2005 23:59:44 +0200	[thread overview]
Message-ID: <7ism18exin.fsf@lanthane.pps.jussieu.fr> (raw)
In-Reply-To: <Pine.LNX.4.58.0504301322130.2296@ppc970.osdl.org> (Linus Torvalds's message of "Sat, 30 Apr 2005 13:32:35 -0700 (PDT)")

Hi,

Here's the code I'm using in darcs-git (copied from Polipo, another
project of mine).  You're welcome to use it in any way you see fit.

sprintf_a is defined as strdup of sprintf.

                                        Juliusz
#if defined __GLIBC__
#define HAVE_TM_GMTOFF
#define HAVE_SETENV
#ifndef __UCLIBC__
#define HAVE_TIMEGM
#endif
#endif

#if defined(__linux__) && (__GNU_LIBRARY__ == 1)
/* Linux libc 5 */
#define HAVE_TIMEGM
#define HAVE_SETENV
#endif

#ifdef BSD
#define HAVE_TM_GMTOFF
#define HAVE_SETENV
#endif

#ifdef __CYGWIN__
#define HAVE_SETENV
#endif

#if _POSIX_VERSION >= 200112L
#define HAVE_SETENV
#endif

#define HAVE_TZSET

/* Like mktime(3), but UTC rather than local time */
#if defined(HAVE_TIMEGM)
time_t
mktime_gmt(struct tm *tm)
{
    return timegm(tm);
}
#elif defined(HAVE_TM_GMTOFF)
time_t
mktime_gmt(struct tm *tm)
{
    time_t t;
    struct tm *ltm;

    t = mktime(tm);
    if(t < 0)
        return -1;
    ltm = localtime(&t);
    if(ltm == NULL)
        return -1;
    return t + ltm->tm_gmtoff;
}
#elif defined(HAVE_TZSET)
#ifdef HAVE_SETENV
/* Taken from the Linux timegm(3) man page. */
time_t
mktime_gmt(struct tm *tm)
{
    time_t t;
    char *tz;

    tz = getenv("TZ");
    setenv("TZ", "", 1);
    tzset();
    t = mktime(tm);
    if(tz)
        setenv("TZ", tz, 1);
    else
        unsetenv("TZ");
    tzset();
    return t;
}
#else
time_t
mktime_gmt(struct tm *tm)
{
    time_t t;
    char *tz;
    static char *old_tz = NULL;

    tz = getenv("TZ");
    putenv("TZ=");
    tzset();
    t = mktime(tm);
    if(old_tz)
        free(old_tz);
    if(tz)
        old_tz = sprintf_a("TZ=%s", tz);
    else
        old_tz = strdup("TZ");  /* XXX - non-portable? */
    if(old_tz)
        putenv(old_tz);
    tzset();
    return t;
}
#endif
#else
#error no mktime_gmt implementation on this platform
#endif

  reply	other threads:[~2005-04-30 21:54 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-04-30  3:44 Trying to use AUTHOR_DATE Luck, Tony
2005-04-30  3:49 ` H. Peter Anvin
2005-04-30  4:02   ` Linus Torvalds
2005-04-30  4:22     ` Linus Torvalds
2005-04-30  4:32       ` Russ Allbery
2005-04-30  8:02         ` David Woodhouse
2005-04-30 10:40           ` Edgar Toernig
2005-04-30 18:10             ` Russ Allbery
2005-04-30 20:32               ` Linus Torvalds
2005-04-30 21:59                 ` Juliusz Chroboczek [this message]
2005-04-30 22:54                 ` Edgar Toernig
2005-04-30 23:18                   ` Linus Torvalds
2005-05-01 16:46                   ` Linus Torvalds
2005-05-01 16:57                     ` Randy.Dunlap
2005-05-01 17:23                     ` Edgar Toernig
2005-04-30  5:43       ` Junio C Hamano
2005-04-30 10:53       ` Edgar Toernig
2005-04-30 11:13         ` David Woodhouse
2005-04-30 12:08           ` Kay Sievers
2005-04-30 12:13             ` David Woodhouse
2005-04-30 12:49           ` Edgar Toernig
2005-04-30 12:59             ` David Woodhouse
2005-04-30 13:22               ` Edgar Toernig
2005-05-02 22:10               ` Krzysztof Halasa
2005-05-02 22:26                 ` H. Peter Anvin
2005-05-02 23:30                   ` Krzysztof Halasa
2005-05-02 23:32                     ` H. Peter Anvin
2005-05-03  0:30                       ` Krzysztof Halasa
2005-05-03  0:38                         ` H. Peter Anvin
2005-04-30 23:14           ` H. Peter Anvin
2005-04-30  4:50 ` Edgar Toernig
  -- strict thread matches above, loose matches on Subject: below --
2005-04-30  5:28 Luck, Tony
2005-04-30 23:14 ` H. Peter Anvin
2005-04-29 23:14 tony.luck
2005-04-29 23:35 ` H. Peter Anvin
2005-04-30  0:21   ` tony.luck
2005-04-30  3:23     ` Edgar Toernig
2005-04-30  3:47       ` H. Peter Anvin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7ism18exin.fsf@lanthane.pps.jussieu.fr \
    --to=juliusz.chroboczek@pps$(echo .)jussieu.fr \
    --cc=git@vger$(echo .)kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox