Fixed a stupid bug in time conversion code that generated abnormally high

build numbers.

svn path=/trunk/; revision=954
This commit is contained in:
Emanuele Aliberti 2000-01-22 14:25:48 +00:00
parent 0ab77c8e74
commit 5415f6f333
2 changed files with 66 additions and 12 deletions

View file

@ -1,4 +1,4 @@
# $Id: Makefile,v 1.3 1999/11/12 12:01:09 dwelch Exp $ # $Id: Makefile,v 1.4 2000/01/22 14:25:48 ea Exp $
# #
BASE_CFLAGS = -I../../include BASE_CFLAGS = -I../../include
@ -6,7 +6,7 @@ TARGETNAME=buildno
CLEAN_FILES= $(TARGETNAME).o $(TARGETNAME)$(EXE_POSTFIX) $(TARGETNAME).sym CLEAN_FILES= $(TARGETNAME).o $(TARGETNAME)$(EXE_POSTFIX) $(TARGETNAME).sym
all: $(TARGETNAME)$(EXE_POSTFIX) all: $(TARGETNAME)$(EXE_POSTFIX)
$(EXE_PREFIX)$(TARGETNAME)$(EXE_POSTFIX) -q $(EXE_PREFIX)$(TARGETNAME)$(EXE_POSTFIX)
$(TARGETNAME)$(EXE_POSTFIX): $(TARGETNAME).c ../../include/reactos/version.h $(TARGETNAME)$(EXE_POSTFIX): $(TARGETNAME).c ../../include/reactos/version.h

View file

@ -1,16 +1,18 @@
/* $Id: buildno.c,v 1.2 1999/12/26 20:21:02 ea Exp $ /* $Id: buildno.c,v 1.3 2000/01/22 14:25:48 ea Exp $
* *
* buildno - Generate the build number for ReactOS * buildno - Generate the build number for ReactOS
* *
* Copyright (c) 1999 Emanuele Aliberti * Copyright (c) 1999,2000 Emanuele Aliberti
* *
* License: GNU GPL
* *
* It assumes the last release date is defined in * It assumes the last release date is defined in
* <reactos/version.h> as a macro named * <reactos/version.h> as a macro named
* *
* KERNEL_RELEASE_DATE * KERNEL_RELEASE_DATE
* *
* as a 32-bit unsigned long YYYYMMDD (UTC). * as a 32-bit unsigned long YYYYMMDD (UTC;
* MM=01-12; DD=01-31).
* *
* The build number is the number of full days * The build number is the number of full days
* elapsed since the last release date (UTC). * elapsed since the last release date (UTC).
@ -18,8 +20,15 @@
* The build number is stored in the file * The build number is stored in the file
* <reactos/buildno.h> as a set of macros: * <reactos/buildno.h> as a set of macros:
* *
* KERNEL_VERSION_BUILD * KERNEL_VERSION_BUILD base 10 number
* KERNEL_VERSION_BUILD_STR * KERNEL_VERSION_BUILD_STR C string
* KERNEL_VERSION_BUILD_RC RC string
*
* REVISIONS
* ---------
* 2000-01-22 (ea)
* Fixed bugs: tm_year is (current_year - 1900),
* tm_month is 0-11 not 1-12 and code ignored TZ.
*/ */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -34,6 +43,22 @@
static char * argv0 = ""; static char * argv0 = "";
#ifdef DBG
void
tm_dump (const char *tag, struct tm * t)
{
printf ("%s->tm_sec = %d\n", tag, t->tm_sec);
printf ("%s->tm_min = %d\n", tag, t->tm_min);
printf ("%s->tm_hour = %d\n", tag, t->tm_hour);
printf ("%s->tm_mday = %d\n", tag, t->tm_mday);
printf ("%s->tm_mon = %d\n", tag, t->tm_mon);
printf ("%s->tm_year = %d\n", tag, t->tm_year);
printf ("%s->tm_wday = %d\n", tag, t->tm_wday);
printf ("%s->tm_yday = %d\n", tag, t->tm_yday);
printf ("%s->tm_isdst = %d\n\n", tag, t->tm_isdst);
}
#endif
int int
elapsed_days ( elapsed_days (
@ -131,7 +156,7 @@ usage (void)
{ {
fprintf ( fprintf (
stderr, stderr,
"Usage: %s [-q]\n", "Usage: %s [-q]\n\n -q quiet mode\n",
argv0 argv0
); );
exit (EXIT_SUCCESS); exit (EXIT_SUCCESS);
@ -179,6 +204,10 @@ main (int argc, char * argv [])
default: default:
usage (); usage ();
} }
/*
* Set TZ information.
*/
tzset ();
/* /*
* We are building TODAY! * We are building TODAY!
*/ */
@ -209,25 +238,50 @@ Last release: %4d-%02d-%02d\n",
day day
); );
} }
t0_tm.tm_year = year - ((year > 1999) ? 2000 : 1900); #ifdef DBG
t0_tm.tm_mon = month; tm_dump ("t0", & t0_tm);
#endif
t0_tm.tm_year = (year - 1900);
t0_tm.tm_mon = --month; /* 0-11 */
t0_tm.tm_mday = day; t0_tm.tm_mday = day;
t0_tm.tm_hour = 0;
t0_tm.tm_min = 0;
t0_tm.tm_sec = 1;
t0_tm.tm_isdst = -1;
t0 = mktime (& t0_tm); #ifdef DBG
tm_dump ("t0", & t0_tm);
#endif
if (-1 == (t0 = mktime (& t0_tm)))
{
fprintf (
stderr,
"%s: can not convert release date!\n",
argv[0]
);
return EXIT_FAILURE;
}
time (& t1); /* current build time */ time (& t1); /* current build time */
t1_tm = gmtime (& t1); t1_tm = gmtime (& t1);
#ifdef DBG
tm_dump ("t1", t1_tm);
#endif
t1_tm->tm_year += t1_tm->tm_year +=
(t1_tm->tm_year < 70) (t1_tm->tm_year < 70)
? 2000 ? 2000
: 1900; : 1900;
#ifdef DBG
tm_dump ("t1", t1_tm);
#endif
if (FALSE == quiet) if (FALSE == quiet)
{ {
printf ( printf (
"Current date: %4d-%02d-%02d\n\n", "Current date: %4d-%02d-%02d\n\n",
t1_tm->tm_year, t1_tm->tm_year,
t1_tm->tm_mon, (t1_tm->tm_mon + 1),
t1_tm->tm_mday t1_tm->tm_mday
); );
} }