⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getdate.c

📁 samba-3.0.22.tar.gz 编译smb服务器的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
    { PC.rel_month += yyvsp[0].intval; }    break;  case 40:#line 376 "getdate.y"    { PC.rel_day += yyvsp[-1].textintval.value * yyvsp[0].intval; }    break;  case 41:#line 378 "getdate.y"    { PC.rel_day += yyvsp[-1].textintval.value * yyvsp[0].intval; }    break;  case 42:#line 380 "getdate.y"    { PC.rel_day += yyvsp[0].intval; }    break;  case 43:#line 382 "getdate.y"    { PC.rel_hour += yyvsp[-1].textintval.value * yyvsp[0].intval; }    break;  case 44:#line 384 "getdate.y"    { PC.rel_hour += yyvsp[-1].textintval.value * yyvsp[0].intval; }    break;  case 45:#line 386 "getdate.y"    { PC.rel_hour += yyvsp[0].intval; }    break;  case 46:#line 388 "getdate.y"    { PC.rel_minutes += yyvsp[-1].textintval.value * yyvsp[0].intval; }    break;  case 47:#line 390 "getdate.y"    { PC.rel_minutes += yyvsp[-1].textintval.value * yyvsp[0].intval; }    break;  case 48:#line 392 "getdate.y"    { PC.rel_minutes += yyvsp[0].intval; }    break;  case 49:#line 394 "getdate.y"    { PC.rel_seconds += yyvsp[-1].textintval.value * yyvsp[0].intval; }    break;  case 50:#line 396 "getdate.y"    { PC.rel_seconds += yyvsp[-1].textintval.value * yyvsp[0].intval; }    break;  case 51:#line 398 "getdate.y"    { PC.rel_seconds += yyvsp[0].intval; }    break;  case 52:#line 403 "getdate.y"    {	if (PC.dates_seen	    && ! PC.rels_seen && (PC.times_seen || 2 < yyvsp[0].textintval.digits))	  PC.year = yyvsp[0].textintval;	else	  {	    if (4 < yyvsp[0].textintval.digits)	      {		PC.dates_seen++;		PC.day = yyvsp[0].textintval.value % 100;		PC.month = (yyvsp[0].textintval.value / 100) % 100;		PC.year.value = yyvsp[0].textintval.value / 10000;		PC.year.digits = yyvsp[0].textintval.digits - 4;	      }	    else	      {		PC.times_seen++;		if (yyvsp[0].textintval.digits <= 2)		  {		    PC.hour = yyvsp[0].textintval.value;		    PC.minutes = 0;		  }		else		  {		    PC.hour = yyvsp[0].textintval.value / 100;		    PC.minutes = yyvsp[0].textintval.value % 100;		  }		PC.seconds = 0;		PC.meridian = MER24;	      }	  }      }    break;  case 53:#line 439 "getdate.y"    { yyval.intval = MER24; }    break;  case 54:#line 441 "getdate.y"    { yyval.intval = yyvsp[0].intval; }    break;    }/* Line 999 of yacc.c.  */#line 1593 "getdate.c"  yyvsp -= yylen;  yyssp -= yylen;  YY_STACK_PRINT (yyss, yyssp);  *++yyvsp = yyval;  /* Now `shift' the result of the reduction.  Determine what state     that goes to, based on the state we popped back to and the rule     number reduced by.  */  yyn = yyr1[yyn];  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)    yystate = yytable[yystate];  else    yystate = yydefgoto[yyn - YYNTOKENS];  goto yynewstate;/*------------------------------------.| yyerrlab -- here on detecting error |`------------------------------------*/yyerrlab:  /* If not already recovering from an error, report this error.  */  if (!yyerrstatus)    {      ++yynerrs;#if YYERROR_VERBOSE      yyn = yypact[yystate];      if (YYPACT_NINF < yyn && yyn < YYLAST)	{	  YYSIZE_T yysize = 0;	  int yytype = YYTRANSLATE (yychar);	  char *yymsg;	  int yyx, yycount;	  yycount = 0;	  /* Start YYX at -YYN if negative to avoid negative indexes in	     YYCHECK.  */	  for (yyx = yyn < 0 ? -yyn : 0;	       yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)	    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)	      yysize += yystrlen (yytname[yyx]) + 15, yycount++;	  yysize += yystrlen ("syntax error, unexpected ") + 1;	  yysize += yystrlen (yytname[yytype]);	  yymsg = (char *) YYSTACK_ALLOC (yysize);	  if (yymsg != 0)	    {	      char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");	      yyp = yystpcpy (yyp, yytname[yytype]);	      if (yycount < 5)		{		  yycount = 0;		  for (yyx = yyn < 0 ? -yyn : 0;		       yyx < (int) (sizeof (yytname) / sizeof (char *));		       yyx++)		    if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)		      {			const char *yyq = ! yycount ? ", expecting " : " or ";			yyp = yystpcpy (yyp, yyq);			yyp = yystpcpy (yyp, yytname[yyx]);			yycount++;		      }		}	      yyerror (yymsg);	      YYSTACK_FREE (yymsg);	    }	  else	    yyerror ("syntax error; also virtual memory exhausted");	}      else#endif /* YYERROR_VERBOSE */	yyerror ("syntax error");    }  if (yyerrstatus == 3)    {      /* If just tried and failed to reuse lookahead token after an	 error, discard it.  */      /* Return failure if at end of input.  */      if (yychar == YYEOF)        {	  /* Pop the error token.  */          YYPOPSTACK;	  /* Pop the rest of the stack.  */	  while (yyss < yyssp)	    {	      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);	      yydestruct (yystos[*yyssp], yyvsp);	      YYPOPSTACK;	    }	  YYABORT;        }      YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);      yydestruct (yytoken, &yylval);      yychar = YYEMPTY;    }  /* Else will try to reuse lookahead token after shifting the error     token.  */  goto yyerrlab1;/*----------------------------------------------------.| yyerrlab1 -- error raised explicitly by an action.  |`----------------------------------------------------*/yyerrlab1:  yyerrstatus = 3;	/* Each real token shifted decrements this.  */  for (;;)    {      yyn = yypact[yystate];      if (yyn != YYPACT_NINF)	{	  yyn += YYTERROR;	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)	    {	      yyn = yytable[yyn];	      if (0 < yyn)		break;	    }	}      /* Pop the current state because it cannot handle the error token.  */      if (yyssp == yyss)	YYABORT;      YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);      yydestruct (yystos[yystate], yyvsp);      yyvsp--;      yystate = *--yyssp;      YY_STACK_PRINT (yyss, yyssp);    }  if (yyn == YYFINAL)    YYACCEPT;  YYDPRINTF ((stderr, "Shifting error token, "));  *++yyvsp = yylval;  yystate = yyn;  goto yynewstate;/*-------------------------------------.| yyacceptlab -- YYACCEPT comes here.  |`-------------------------------------*/yyacceptlab:  yyresult = 0;  goto yyreturn;/*-----------------------------------.| yyabortlab -- YYABORT comes here.  |`-----------------------------------*/yyabortlab:  yyresult = 1;  goto yyreturn;#ifndef yyoverflow/*----------------------------------------------.| yyoverflowlab -- parser overflow comes here.  |`----------------------------------------------*/yyoverflowlab:  yyerror ("parser stack overflow");  yyresult = 2;  /* Fall through.  */#endifyyreturn:#ifndef yyoverflow  if (yyss != yyssa)    YYSTACK_FREE (yyss);#endif  return yyresult;}#line 444 "getdate.y"/* Include this file down here because bison inserts code above which   may define-away `const'.  We want the prototype for get_date to have   the same signature as the function definition.  */#include "modules/getdate.h"#ifndef gmtimestruct tm *gmtime ();#endif#ifndef localtimestruct tm *localtime ();#endif#ifndef mktimetime_t mktime ();#endifstatic table const meridian_table[] ={  { "AM",   tMERIDIAN, MERam },  { "A.M.", tMERIDIAN, MERam },  { "PM",   tMERIDIAN, MERpm },  { "P.M.", tMERIDIAN, MERpm },  { 0, 0, 0 }};static table const dst_table[] ={  { "DST", tDST, 0 }};static table const month_and_day_table[] ={  { "JANUARY",	tMONTH,	 1 },  { "FEBRUARY",	tMONTH,	 2 },  { "MARCH",	tMONTH,	 3 },  { "APRIL",	tMONTH,	 4 },  { "MAY",	tMONTH,	 5 },  { "JUNE",	tMONTH,	 6 },  { "JULY",	tMONTH,	 7 },  { "AUGUST",	tMONTH,	 8 },  { "SEPTEMBER",tMONTH,	 9 },  { "SEPT",	tMONTH,	 9 },  { "OCTOBER",	tMONTH,	10 },  { "NOVEMBER",	tMONTH,	11 },  { "DECEMBER",	tMONTH,	12 },  { "SUNDAY",	tDAY,	 0 },  { "MONDAY",	tDAY,	 1 },  { "TUESDAY",	tDAY,	 2 },  { "TUES",	tDAY,	 2 },  { "WEDNESDAY",tDAY,	 3 },  { "WEDNES",	tDAY,	 3 },  { "THURSDAY",	tDAY,	 4 },  { "THUR",	tDAY,	 4 },  { "THURS",	tDAY,	 4 },  { "FRIDAY",	tDAY,	 5 },  { "SATURDAY",	tDAY,	 6 },  { 0, 0, 0 }};static table const time_units_table[] ={  { "YEAR",	tYEAR_UNIT,	 1 },  { "MONTH",	tMONTH_UNIT,	 1 },  { "FORTNIGHT",tDAY_UNIT,	14 },  { "WEEK",	tDAY_UNIT,	 7 },  { "DAY",	tDAY_UNIT,	 1 },  { "HOUR",	tHOUR_UNIT,	 1 },  { "MINUTE",	tMINUTE_UNIT,	 1 },  { "MIN",	tMINUTE_UNIT,	 1 },  { "SECOND",	tSEC_UNIT,	 1 },  { "SEC",	tSEC_UNIT,	 1 },  { 0, 0, 0 }};/* Assorted relative-time words. */static table const relative_time_table[] ={  { "TOMORROW",	tMINUTE_UNIT,	24 * 60 },  { "YESTERDAY",tMINUTE_UNIT,	- (24 * 60) },  { "TODAY",	tMINUTE_UNIT,	 0 },  { "NOW",	tMINUTE_UNIT,	 0 },  { "LAST",	tUNUMBER,	-1 },  { "THIS",	tUNUMBER,	 0 },  { "NEXT",	tUNUMBER,	 1 },  { "FIRST",	tUNUMBER,	 1 },/*{ "SECOND",	tUNUMBER,	 2 }, */  { "THIRD",	tUNUMBER,	 3 },  { "FOURTH",	tUNUMBER,	 4 },  { "FIFTH",	tUNUMBER,	 5 },  { "SIXTH",	tUNUMBER,	 6 },  { "SEVENTH",	tUNUMBER,	 7 },  { "EIGHTH",	tUNUMBER,	 8 },  { "NINTH",	tUNUMBER,	 9 },  { "TENTH",	tUNUMBER,	10 },  { "ELEVENTH",	tUNUMBER,	11 },  { "TWELFTH",	tUNUMBER,	12 },  { "AGO",	tAGO,		 1 },  { 0, 0, 0 }};/* The time zone table.  This table is necessarily incomplete, as time   zone abbreviations are ambiguous; e.g. Australians interpret "EST"   as Eastern time in Australia, not as US Eastern Standard Time.   You cannot rely on getdate to handle arbitrary time zone   abbreviations; use numeric abbreviations like `-0500' instead.  */static table const time_zone_table[] ={  { "GMT",	tZONE,     HOUR ( 0) },	/* Greenwich Mean */  { "UT",	tZONE,     HOUR ( 0) },	/* Universal (Coordinated) */  { "UTC",	tZONE,     HOUR ( 0) },  { "WET",	tZONE,     HOUR ( 0) },	/* Western European */  { "WEST",	tDAYZONE,  HOUR ( 0) },	/* Western European Summer */  { "BST",	tDAYZONE,  HOUR ( 0) },	/* British Summer */  { "ART",	tZONE,	  -HOUR ( 3) },	/* Argentina */  { "BRT",	tZONE,	  -HOUR ( 3) },	/* Brazil */  { "BRST",	tDAYZONE, -HOUR ( 3) },	/* Brazil Summer */  { "NST",	tZONE,	 -(HOUR ( 3) + 30) },	/* Newfoundland Standard */  { "NDT",	tDAYZONE,-(HOUR ( 3) + 30) },	/* Newfoundland Daylight */  { "AST",	tZONE,    -HOUR ( 4) },	/* Atlantic Standard */  { "ADT",	tDAYZONE, -HOUR ( 4) },	/* Atlantic Daylight */  { "CLT",	tZONE,    -HOUR ( 4) },	/* Chile */  { "CLST",	tDAYZONE, -HOUR ( 4) },	/* Chile Summer */  { "EST",	tZONE,    -HOUR ( 5) },	/* Eastern Standard */  { "EDT",	tDAYZONE, -HOUR ( 5) },	/* Eastern Daylight */  { "CST",	tZONE,    -HOUR ( 6) },	/* Central Standard */  { "CDT",	tDAYZONE, -HOUR ( 6) },	/* Central Daylight */  { "MST",	tZONE,    -HOUR ( 7) },	/* Mountain Standard */  { "MDT",	tDAYZONE, -HOUR ( 7) },	/* Mountain Daylight */  { "PST",	tZONE,    -HOUR ( 8) },	/* Pacific Standard */  { "PDT",	tDAYZONE, -HOUR ( 8) },	/* Pacific Daylight */  { "AKST",	tZONE,    -HOUR ( 9) },	/* Alaska Standard */  { "AKDT",	tDAYZONE, -HOUR ( 9) },	/* Alaska Daylight */  { "HST",	tZONE,    -HOUR (10) },	/* Hawaii Standard */  { "HAST",	tZONE,	  -HOUR (10) },	/* Hawaii-Aleutian Standard */  { "HADT",	tDAYZONE, -HOUR (10) },	/* Hawaii-Aleutian Daylight */  { "SST",	tZONE,    -HOUR (12) },	/* Samoa Standard */  { "WAT",	tZONE,     HOUR ( 1) },	/* West Africa */  { "CET",	tZONE,     HOUR ( 1) },	/* Central European */  { "CEST",	tDAYZONE,  HOUR ( 1) },	/* Central European Summer */  { "MET",	tZONE,     HOUR ( 1) },	/* Middle European */  { "MEZ",	tZONE,     HOUR ( 1) },	/* Middle European */  { "MEST",	tDAYZONE,  HOUR ( 1) },	/* Middle European Summer */  { "MESZ",	tDAYZONE,  HOUR ( 1) },	/* Middle European Summer */  { "EET",	tZONE,     HOUR ( 2) },	/* Eastern European */  { "EEST",	tDAYZONE,  HOUR ( 2) },	/* Eastern European Summer */  { "CAT",	tZONE,	   HOUR ( 2) },	/* Central Africa */  { "SAST",	tZONE,	   HOUR ( 2) },	/* South Africa Standard */  { "EAT",	tZONE,	   HOUR ( 3) },	/* East Africa */  { "MSK",	tZONE,	   HOUR ( 3) },	/* Moscow */  { "MSD",	tDAYZONE,  HOUR ( 3) },	/* Moscow Daylight */  { "IST",	tZONE,	  (HOUR ( 5) + 30) },	/* India Standard */  { "SGT",	tZONE,     HOUR ( 8) },	/* Singapore */  { "KST",	tZONE,     HOUR ( 9) },	/* Korea Standard */  { "JST",	tZONE,     HOUR ( 9) },	/* Japan Standard */  { "GST",	tZONE,     HOUR (10) },	/* Guam Standard */  { "NZST",	tZONE,     HOUR (12) },	/* New Zealand Standard */  { "NZDT",	tDAYZONE,  HOUR (12) },	/* New Zealand Daylight */  { 0, 0, 0  }};/* Military time zone table. */static table const military_table[] ={  { "A", tZONE,	-HOUR ( 1) },  { "B", tZONE,	-HOUR ( 2) },  { "C", tZONE,	-HOUR ( 3) },  { "D", tZONE,	-HOUR ( 4) },  { "E", tZONE,	-HOUR ( 5) },  { "F", tZONE,	-HOUR ( 6) },  { "G", tZONE,	-HOUR ( 7) },  { "H", tZONE,	-HOUR ( 8) },  { "I", tZONE,	-HOUR ( 9) },  { "K", tZONE,	-HOUR (10) },  { "L", tZONE,	-HOUR (11) },  { "M", tZONE,	-HOUR (12) },  { "N", tZONE,	 HOUR ( 1) },  { "O", tZONE,	 HOUR ( 2) },  { "P", tZONE,	 HOUR ( 3) },  { "Q", tZONE,	 HOUR ( 4) },  { "R", tZONE,	 HOUR ( 5) },  { "S", tZONE,	 HOUR ( 6) },  { "T", tZONE,	 HOUR ( 7) },  { "U", tZONE,	 HOUR ( 8) },  { "V", tZONE,	 HOUR ( 9) },

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -