Merge pull request #171 from NieDzejkob/master

Implement separate time constants

Signed-off-by: Antonio Niño Díaz <antonio_nd@outlook.com>
This commit is contained in:
Antonio Niño Díaz
2017-04-22 11:36:59 +02:00
2 changed files with 58 additions and 0 deletions

View File

@@ -521,6 +521,12 @@ The following symbols are defined by the assembler:
.It Ic EQUS Ta Ic __TIME__ Ta Ta The current time .It Ic EQUS Ta Ic __TIME__ Ta Ta The current time
.It Ic EQUS Ta Ic __ISO_8601_LOCAL__ Ta ISO 8601 timestamp (local) .It Ic EQUS Ta Ic __ISO_8601_LOCAL__ Ta ISO 8601 timestamp (local)
.It Ic EQUS Ta Ic __ISO_8601_UTC__ Ta ISO 8601 timestamp (UTC) .It Ic EQUS Ta Ic __ISO_8601_UTC__ Ta ISO 8601 timestamp (UTC)
.It Ic EQU Ta Ic __UTC_YEAR__ Ta Ta Today's year
.It Ic EQU Ta Ic __UTC_MONTH__ Ta Ta Today's month number, 1-12
.It Ic EQU Ta Ic __UTC_DAY__ Ta Ta Today's day of the month, 1-31
.It Ic EQU Ta Ic __UTC_HOUR__ Ta Ta Current hour, 0-23
.It Ic EQU Ta Ic __UTC_MINUTE__ Ta Ta Current minute, 0-59
.It Ic EQU Ta Ic __UTC_SECOND__ Ta Ta Current second, 0-59
.El .El
.Pp .Pp
.Sh DEFINING DATA .Sh DEFINING DATA

View File

@@ -24,8 +24,29 @@ char SavedTIME[256];
char SavedDATE[256]; char SavedDATE[256];
char SavedTIMESTAMP_ISO8601_LOCAL[256]; char SavedTIMESTAMP_ISO8601_LOCAL[256];
char SavedTIMESTAMP_ISO8601_UTC[256]; char SavedTIMESTAMP_ISO8601_UTC[256];
char SavedDAY[3];
char SavedMONTH[3];
char SavedYEAR[5];
char SavedHOUR[3];
char SavedMINUTE[3];
char SavedSECOND[3];
bool exportall; bool exportall;
void helper_RemoveLeadingZeros(char * string){
char * new_beginning = string;
while(*new_beginning == '0')
new_beginning++;
if(new_beginning == string)
return;
if(*new_beginning == '\0')
new_beginning--;
memmove(string, new_beginning, strlen(new_beginning) + 1);
}
SLONG SLONG
Callback_NARG(struct sSymbol * sym) Callback_NARG(struct sSymbol * sym)
{ {
@@ -800,6 +821,12 @@ sym_PrepPass2(void)
sym_AddString("__DATE__", SavedDATE); sym_AddString("__DATE__", SavedDATE);
sym_AddString("__ISO_8601_LOCAL__", SavedTIMESTAMP_ISO8601_LOCAL); sym_AddString("__ISO_8601_LOCAL__", SavedTIMESTAMP_ISO8601_LOCAL);
sym_AddString("__ISO_8601_UTC__", SavedTIMESTAMP_ISO8601_UTC); sym_AddString("__ISO_8601_UTC__", SavedTIMESTAMP_ISO8601_UTC);
sym_AddString("__UTC_DAY__", SavedDAY);
sym_AddString("__UTC_MONTH__", SavedMONTH);
sym_AddString("__UTC_YEAR__", SavedYEAR);
sym_AddString("__UTC_HOUR__", SavedHOUR);
sym_AddString("__UTC_MINUTE__", SavedMINUTE);
sym_AddString("__UTC_SECOND__", SavedSECOND);
sym_AddSet("_RS", 0); sym_AddSet("_RS", 0);
sym_AddEqu("_NARG", 0); sym_AddEqu("_NARG", 0);
@@ -845,6 +872,19 @@ sym_Init(void)
struct tm *time_utc = gmtime(&now); struct tm *time_utc = gmtime(&now);
strftime(SavedTIMESTAMP_ISO8601_UTC, strftime(SavedTIMESTAMP_ISO8601_UTC,
sizeof(SavedTIMESTAMP_ISO8601_UTC), "\"%FT%TZ\"", time_utc); sizeof(SavedTIMESTAMP_ISO8601_UTC), "\"%FT%TZ\"", time_utc);
strftime(SavedDAY, sizeof(SavedDAY), "%d", time_utc);
strftime(SavedMONTH, sizeof(SavedMONTH), "%m", time_utc);
strftime(SavedYEAR, sizeof(SavedYEAR), "%Y", time_utc);
strftime(SavedHOUR, sizeof(SavedHOUR), "%H", time_utc);
strftime(SavedMINUTE, sizeof(SavedMINUTE), "%M", time_utc);
strftime(SavedSECOND, sizeof(SavedSECOND), "%S", time_utc);
helper_RemoveLeadingZeros(SavedDAY);
helper_RemoveLeadingZeros(SavedMONTH);
helper_RemoveLeadingZeros(SavedHOUR);
helper_RemoveLeadingZeros(SavedMINUTE);
helper_RemoveLeadingZeros(SavedSECOND);
} else { } else {
warnx("Couldn't determine current time."); warnx("Couldn't determine current time.");
/* The '?' have to be escaped or they will be treated as /* The '?' have to be escaped or they will be treated as
@@ -853,12 +893,24 @@ sym_Init(void)
strcpy(SavedDATE, "\"\?\? \?\?\? \?\?\?\?\""); strcpy(SavedDATE, "\"\?\? \?\?\? \?\?\?\?\"");
strcpy(SavedTIMESTAMP_ISO8601_LOCAL, "\"\?\?\?\?-\?\?-\?\?T\?\?:\?\?:\?\?+\?\?\?\?\""); strcpy(SavedTIMESTAMP_ISO8601_LOCAL, "\"\?\?\?\?-\?\?-\?\?T\?\?:\?\?:\?\?+\?\?\?\?\"");
strcpy(SavedTIMESTAMP_ISO8601_UTC, "\"\?\?\?\?-\?\?-\?\?T\?\?:\?\?:\?\?Z\""); strcpy(SavedTIMESTAMP_ISO8601_UTC, "\"\?\?\?\?-\?\?-\?\?T\?\?:\?\?:\?\?Z\"");
strcpy(SavedDAY, "1");
strcpy(SavedMONTH, "1");
strcpy(SavedYEAR, "1900");
strcpy(SavedHOUR, "0");
strcpy(SavedMINUTE, "0");
strcpy(SavedSECOND, "0");
} }
sym_AddString("__TIME__", SavedTIME); sym_AddString("__TIME__", SavedTIME);
sym_AddString("__DATE__", SavedDATE); sym_AddString("__DATE__", SavedDATE);
sym_AddString("__ISO_8601_LOCAL__", SavedTIMESTAMP_ISO8601_LOCAL); sym_AddString("__ISO_8601_LOCAL__", SavedTIMESTAMP_ISO8601_LOCAL);
sym_AddString("__ISO_8601_UTC__", SavedTIMESTAMP_ISO8601_UTC); sym_AddString("__ISO_8601_UTC__", SavedTIMESTAMP_ISO8601_UTC);
sym_AddString("__UTC_DAY__", SavedDAY);
sym_AddString("__UTC_MONTH__", SavedMONTH);
sym_AddString("__UTC_YEAR__", SavedYEAR);
sym_AddString("__UTC_HOUR__", SavedHOUR);
sym_AddString("__UTC_MINUTE__", SavedMINUTE);
sym_AddString("__UTC_SECOND__", SavedSECOND);
pScope = NULL; pScope = NULL;