From b2b62c13d10f85c35ad6d949c85003bded986b53 Mon Sep 17 00:00:00 2001 From: Kevin B Kenny Date: Fri, 4 Nov 2005 20:13:30 +0000 Subject: Bug 1298737 --- ChangeLog | 4 +++ generic/tclDate.c | 97 ++++++++++++++++++++++++++++------------------------ generic/tclGetDate.y | 5 ++- library/clock.tcl | 5 ++- 4 files changed, 64 insertions(+), 47 deletions(-) diff --git a/ChangeLog b/ChangeLog index cf3989b..784af48 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2005-11-04 Kevin Kenny + * generic/tclGetDate.y: Added abbreviations for the Korean + * library/clock.tcl: timezone. + * generic/tclDate.c: Regenerated. + * tools/findBadExternals.tcl: Added this script, which locates external symbols that do not begin with 'Tcl' or 'tcl' and hence might be in conflict with other link libraries. Thanks to George diff --git a/generic/tclDate.c b/generic/tclDate.c index 2020335..2daf7b2 100644 --- a/generic/tclDate.c +++ b/generic/tclDate.c @@ -1,7 +1,7 @@ -/* A Bison parser, made by GNU Bison 1.875b. */ +/* A Bison parser, made by GNU Bison 1.875. */ /* Skeleton parser for Yacc-like parsing with Bison, - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -645,7 +645,6 @@ static const unsigned char yystos[] = #define YYABORT goto yyabortlab #define YYERROR goto yyerrlab1 - /* Like YYERROR except do call yyerror. This remains here temporarily to ease the transition to the new meaning of YYERROR, for GCC. Once GCC version 2 has supplanted version 1, this can go. */ @@ -766,9 +765,9 @@ yy_reduce_print (yyrule) #endif { int yyi; - unsigned int yylno = yyrline[yyrule]; + unsigned int yylineno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ", - yyrule - 1, yylno); + yyrule - 1, yylineno); /* Print the symbols being reduced, and their result. */ for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++) YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]); @@ -1657,7 +1656,7 @@ yyreduce: } -/* Line 999 of yacc.c. */ +/* Line 991 of yacc.c. */ yyvsp -= yylen; @@ -1699,33 +1698,18 @@ yyerrlab: { YYSIZE_T yysize = 0; int yytype = YYTRANSLATE (yychar); - const char* yyprefix; char *yymsg; - int yyx; + int yyx, yycount; + yycount = 0; /* Start YYX at -YYN if negative to avoid negative indexes in YYCHECK. */ - int yyxbegin = yyn < 0 ? -yyn : 0; - - /* Stay within bounds of both yycheck and yytname. */ - int yychecklim = YYLAST - yyn; - int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; - int yycount = 0; - - yyprefix = ", expecting "; - for (yyx = yyxbegin; yyx < yyxend; ++yyx) + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) - { - yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]); - yycount += 1; - if (yycount == 5) - { - yysize = 0; - break; - } - } - yysize += (sizeof ("syntax error, unexpected ") - + yystrlen (yytname[yytype])); + yysize += yystrlen (yytname[yyx]) + 15, yycount++; + yysize += yystrlen ("syntax error, unexpected ") + 1; + yysize += yystrlen (yytname[yytype]); yymsg = (char *) YYSTACK_ALLOC (yysize); if (yymsg != 0) { @@ -1734,13 +1718,16 @@ yyerrlab: if (yycount < 5) { - yyprefix = ", expecting "; - for (yyx = yyxbegin; yyx < yyxend; ++yyx) + yycount = 0; + for (yyx = yyn < 0 ? -yyn : 0; + yyx < (int) (sizeof (yytname) / sizeof (char *)); + yyx++) if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) { - yyp = yystpcpy (yyp, yyprefix); + const char *yyq = ! yycount ? ", expecting " : " or "; + yyp = yystpcpy (yyp, yyq); yyp = yystpcpy (yyp, yytname[yyx]); - yyprefix = " or "; + yycount++; } } yyerror (yymsg); @@ -1784,13 +1771,30 @@ yyerrlab: /* Else will try to reuse lookahead token after shifting the error token. */ - goto yyerrlab1; + goto yyerrlab2; /*----------------------------------------------------. | yyerrlab1 -- error raised explicitly by an action. | `----------------------------------------------------*/ yyerrlab1: + + /* Suppress GCC warning that yyerrlab1 is unused when no action + invokes YYERROR. Doesn't work in C++ */ +#ifndef __cplusplus +#if defined (__GNUC_MINOR__) && 2093 <= (__GNUC__ * 1000 + __GNUC_MINOR__) + __attribute__ ((__unused__)) +#endif +#endif + + + goto yyerrlab2; + + +/*---------------------------------------------------------------. +| yyerrlab2 -- pop states until the error token can be shifted. | +`---------------------------------------------------------------*/ +yyerrlab2: yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) @@ -2013,6 +2017,9 @@ static TABLE TimezoneTable[] = { { "jt", tZONE, -HOUR(15/2) }, /* Java (3pm in Cronusland!) */ { "cct", tZONE, -HOUR( 8) }, /* China Coast, USSR Zone 7 */ { "jst", tZONE, -HOUR( 9) }, /* Japan Standard, USSR Zone 8 */ + { "jdt", tDAYZONE, -HOUR( 9) }, /* Japan Daylight */ + { "kst", tZONE, -HOUR( 9) }, /* Korea Standard */ + { "kdt", tDAYZONE, -HOUR( 9) }, /* Korea Daylight */ { "cast", tZONE, -HOUR(19/2) }, /* Central Australian Standard */ { "cadt", tDAYZONE, -HOUR(19/2) }, /* Central Australian Daylight */ { "east", tZONE, -HOUR(10) }, /* Eastern Australian Standard */ @@ -2359,17 +2366,17 @@ TclClockOldscanObjCmd( clientData, interp, objc, objv ) resultElement = Tcl_NewObj(); if ( yyHaveDate ) { Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) yyYear ) ); + Tcl_NewIntObj( yyYear ) ); Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) yyMonth ) ); + Tcl_NewIntObj( yyMonth ) ); Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) yyDay ) ); + Tcl_NewIntObj( yyDay ) ); } Tcl_ListObjAppendElement( interp, result, resultElement ); if ( yyHaveTime ) { Tcl_ListObjAppendElement( interp, result, - Tcl_NewIntObj( (int) ToSeconds( yyHour, + Tcl_NewIntObj( ToSeconds( yyHour, yyMinutes, yySeconds, yyMeridian ) ) ); @@ -2380,7 +2387,7 @@ TclClockOldscanObjCmd( clientData, interp, objc, objv ) resultElement = Tcl_NewObj(); if ( yyHaveZone ) { Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) -yyTimezone ) ); + Tcl_NewIntObj( -yyTimezone ) ); Tcl_ListObjAppendElement( interp, resultElement, Tcl_NewIntObj( 1-yyDSTmode ) ); } @@ -2389,29 +2396,29 @@ TclClockOldscanObjCmd( clientData, interp, objc, objv ) resultElement = Tcl_NewObj(); if ( yyHaveRel ) { Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) yyRelMonth ) ); + Tcl_NewIntObj( yyRelMonth ) ); Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) yyRelDay ) ); + Tcl_NewIntObj( yyRelDay ) ); Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) yyRelSeconds ) ); + Tcl_NewIntObj( yyRelSeconds ) ); } Tcl_ListObjAppendElement( interp, result, resultElement ); resultElement = Tcl_NewObj(); if ( yyHaveDay && !yyHaveDate ) { Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) yyDayOrdinal ) ); + Tcl_NewIntObj( yyDayOrdinal ) ); Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) yyDayNumber ) ); + Tcl_NewIntObj( yyDayNumber ) ); } Tcl_ListObjAppendElement( interp, result, resultElement ); resultElement = Tcl_NewObj(); if ( yyHaveOrdinalMonth ) { Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) yyMonthOrdinal ) ); + Tcl_NewIntObj( yyMonthOrdinal ) ); Tcl_ListObjAppendElement( interp, resultElement, - Tcl_NewIntObj( (int) yyMonth ) ); + Tcl_NewIntObj( yyMonth ) ); } Tcl_ListObjAppendElement( interp, result, resultElement ); diff --git a/generic/tclGetDate.y b/generic/tclGetDate.y index 6f67e50..8ce6df3 100644 --- a/generic/tclGetDate.y +++ b/generic/tclGetDate.y @@ -11,7 +11,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclGetDate.y,v 1.28 2005/11/02 14:51:04 dkf Exp $ + * RCS: @(#) $Id: tclGetDate.y,v 1.29 2005/11/04 20:13:30 kennykb Exp $ */ %{ @@ -579,6 +579,9 @@ static TABLE TimezoneTable[] = { { "jt", tZONE, -HOUR(15/2) }, /* Java (3pm in Cronusland!) */ { "cct", tZONE, -HOUR( 8) }, /* China Coast, USSR Zone 7 */ { "jst", tZONE, -HOUR( 9) }, /* Japan Standard, USSR Zone 8 */ + { "jdt", tDAYZONE, -HOUR( 9) }, /* Japan Daylight */ + { "kst", tZONE, -HOUR( 9) }, /* Korea Standard */ + { "kdt", tDAYZONE, -HOUR( 9) }, /* Korea Daylight */ { "cast", tZONE, -HOUR(19/2) }, /* Central Australian Standard */ { "cadt", tDAYZONE, -HOUR(19/2) }, /* Central Australian Daylight */ { "east", tZONE, -HOUR(10) }, /* Eastern Australian Standard */ diff --git a/library/clock.tcl b/library/clock.tcl index 1f2558b..eaa512d 100644 --- a/library/clock.tcl +++ b/library/clock.tcl @@ -13,7 +13,7 @@ # See the file "license.terms" for information on usage and redistribution # of this file, and for a DISCLAIMER OF ALL WARRANTIES. # -# RCS: @(#) $Id: clock.tcl,v 1.19 2005/08/12 23:59:07 kennykb Exp $ +# RCS: @(#) $Id: clock.tcl,v 1.20 2005/11/04 20:13:30 kennykb Exp $ # #---------------------------------------------------------------------- @@ -558,7 +558,10 @@ proc ::tcl::clock::Initialize {} { jt +0730 \ cct +0800 \ jst +0900 \ + kst +0900 \ cast +0930 \ + jdt +1000 \ + kdt +1000 \ cadt +1030 \ east +1000 \ eadt +1030 \ -- cgit v0.12