diff --git a/swad_agenda.c b/swad_agenda.c
index 56424e43..cf2b3b7a 100644
--- a/swad_agenda.c
+++ b/swad_agenda.c
@@ -716,6 +716,7 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
extern const char *Txt_Today;
char *Anchor = NULL;
static unsigned UniqueId = 0;
+ char *Id;
struct AgendaEvent AgdEvent;
Dat_StartEndTime_t StartEndTime;
char Txt[Cns_MAX_BYTES_TEXT + 1];
@@ -747,17 +748,18 @@ static void Agd_ShowOneEvent (Agd_AgendaType_t AgendaType,long AgdCod)
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{
- HTM_TD_Begin ("id=\"agd_date_%u_%u\" class=\"%s LB COLOR%u\"",
- (unsigned) StartEndTime,UniqueId,
+ if (asprintf (&Id,"agd_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LB COLOR%u\"",
+ Id,
AgdEvent.Hidden ? Dat_TimeStatusClassHidden[AgdEvent.TimeStatus] :
Dat_TimeStatusClassVisible[AgdEvent.TimeStatus],
Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'agd_date_%u_%u',%ld,"
- "%u,'
','%s',true,true,0x6",
- (unsigned) StartEndTime,UniqueId,
- AgdEvent.TimeUTC[StartEndTime],
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,true,0x6",
+ Id,AgdEvent.TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
}
/* Event */
diff --git a/swad_assignment.c b/swad_assignment.c
index f119857c..6feb3739 100644
--- a/swad_assignment.c
+++ b/swad_assignment.c
@@ -25,8 +25,10 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
+#define _GNU_SOURCE // For asprintf
#include // For PATH_MAX
#include // For NULL
+#include // For asprintf
#include // For calloc
#include // For string functions
@@ -340,6 +342,7 @@ static void Asg_ShowOneAssignment (long AsgCod,bool PrintView)
extern const char *Txt_Today;
char *Anchor = NULL;
static unsigned UniqueId = 0;
+ char *Id;
struct Assignment Asg;
Dat_StartEndTime_t StartEndTime;
char Txt[Cns_MAX_BYTES_TEXT + 1];
@@ -371,26 +374,28 @@ static void Asg_ShowOneAssignment (long AsgCod,bool PrintView)
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{
+ if (asprintf (&Id,"asg_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
if (PrintView)
- HTM_TD_Begin ("id=\"asg_date_%u_%u\" class=\"%s LB\"",
- (unsigned) StartEndTime,UniqueId,
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LB\"",
+ Id,
Asg.Hidden ? (Asg.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"));
else
- HTM_TD_Begin ("id=\"asg_date_%u_%u\" class=\"%s LB COLOR%u\"",
- (unsigned) StartEndTime,UniqueId,
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LB COLOR%u\"",
+ Id,
Asg.Hidden ? (Asg.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
(Asg.Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'asg_date_%u_%u',%ld,"
- "%u,'
','%s',true,true,0x7",
- (unsigned) StartEndTime,UniqueId,Asg.TimeUTC[StartEndTime],
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,true,0x7",
+ Id,Asg.TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
}
/* Assignment title */
diff --git a/swad_attendance.c b/swad_attendance.c
index a5cf3080..ea312f93 100644
--- a/swad_attendance.c
+++ b/swad_attendance.c
@@ -25,9 +25,11 @@
/********************************** Headers **********************************/
/*****************************************************************************/
+#define _GNU_SOURCE // For asprintf
#include // For PATH_MAX
#include // For NULL
#include // To access MySQL databases
+#include // For asprintf
#include // For calloc
#include // For string functions
@@ -373,6 +375,7 @@ static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAt
extern const char *Txt_View_event;
char *Anchor = NULL;
static unsigned UniqueId = 0;
+ char *Id;
Dat_StartEndTime_t StartEndTime;
char Description[Cns_MAX_BYTES_TEXT + 1];
@@ -408,26 +411,28 @@ static void Att_ShowOneAttEvent (struct AttendanceEvent *Att,bool ShowOnlyThisAt
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{
+ if (asprintf (&Id,"att_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
if (ShowOnlyThisAttEventComplete)
- HTM_TD_Begin ("id=\"att_date_%u_%u\" class=\"%s LB\"",
- (unsigned) StartEndTime,UniqueId,
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LB\"",
+ Id,
Att->Hidden ? (Att->Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
(Att->Open ? "DATE_GREEN" :
"DATE_RED"));
else
- HTM_TD_Begin ("id=\"att_date_%u_%u\" class=\"%s LB COLOR%u\"",
- (unsigned) StartEndTime,UniqueId,
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LB COLOR%u\"",
+ Id,
Att->Hidden ? (Att->Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT") :
(Att->Open ? "DATE_GREEN" :
"DATE_RED"),
Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'att_date_%u_%u',%ld,"
- "%u,'
','%s',true,true,0x7",
- (unsigned) StartEndTime,UniqueId,Att->TimeUTC[StartEndTime],
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,true,0x7",
+ Id,Att->TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
}
/* Attendance event title */
@@ -3072,6 +3077,7 @@ static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView)
extern const char *Txt_Today;
extern const char *Txt_Update_attendance;
unsigned UniqueId;
+ char *Id;
unsigned NumAttEvent;
bool NormalView = (TypeOfView == Att_NORMAL_VIEW_ONLY_ME ||
TypeOfView == Att_NORMAL_VIEW_STUDENTS);
@@ -3131,16 +3137,18 @@ static void Att_ListEventsToSelect (Att_TypeOfView_t TypeOfView)
NumAttEvent,NumAttEvent + 1);
HTM_TD_End ();
+ if (asprintf (&Id,"att_date_start_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,"",
- NumAttEvent,UniqueId);
- Dat_WriteLocalDateHMSFromUTC ("'att_date_start_%u',%ld,"
- "%u,', ','%s',true,true,0x7",
- UniqueId,Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
+ NumAttEvent,Id);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',true,true,0x7",
+ Id,Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out,"%s",Gbl.AttEvents.Lst[NumAttEvent].Title);
@@ -3490,6 +3498,7 @@ static void Att_ListAttEventsForAStd (unsigned NumUsr,struct UsrData *UsrDat)
bool ShowPhoto;
unsigned NumAttEvent;
unsigned UniqueId;
+ char *Id;
bool Present;
bool ShowCommentStd;
bool ShowCommentTch;
@@ -3574,17 +3583,19 @@ static void Att_ListAttEventsForAStd (unsigned NumUsr,struct UsrData *UsrDat)
Att_PutCheckOrCross (Present);
HTM_TD_End ();
+ if (asprintf (&Id,"att_date_start_%u_%u",NumUsr,UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
- fprintf (Gbl.F.Out,""
+ fprintf (Gbl.F.Out,""
"
%s",
- NumUsr,UniqueId,
+ Id,
Gbl.AttEvents.Lst[NumAttEvent].Title);
- Dat_WriteLocalDateHMSFromUTC ("'att_date_start_%u_%u',%ld,"
- "%u,', ','%s',true,true,0x7",
- NumUsr,UniqueId,
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',true,true,0x7",
+ Id,
Gbl.AttEvents.Lst[NumAttEvent].TimeUTC[Att_START_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
HTM_TR_End ();
diff --git a/swad_changelog.h b/swad_changelog.h
index 612116eb..a42a7f0e 100644
--- a/swad_changelog.h
+++ b/swad_changelog.h
@@ -487,7 +487,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
-#define Log_PLATFORM_VERSION "SWAD 19.50 (2019-11-01)"
+#define Log_PLATFORM_VERSION "SWAD 19.50.1 (2019-11-01)"
#define CSS_FILE "swad19.47.css"
#define JS_FILE "swad19.39.js"
/*
@@ -495,6 +495,7 @@ ps2pdf source.ps destination.pdf
// TODO: Impedir la creación y edición de proyectos si no son editables.
// TODO: Importante: filtrar proyectos por usuarios (igual que en trabajos o en asistencia)
+ Version 19.50.1: Nov 01, 2019 Code refactoring related with writing of local date-time. (246088 lines)
Version 19.50: Nov 01, 2019 Code refactoring related with writing of local date-time. (246016 lines)
Version 19.49: Nov 01, 2019 Code refactoring in HTML scripts. (246052 lines)
Version 19.48: Oct 31, 2019 Code refactoring in HTML textareas. (246038 lines)
diff --git a/swad_date.c b/swad_date.c
index 1bf2b23e..b560312f 100644
--- a/swad_date.c
+++ b/swad_date.c
@@ -166,10 +166,14 @@ void Dat_PutSpanDateFormat (Dat_Format_t Format)
void Dat_PutScriptDateFormat (Dat_Format_t Format)
{
- Dat_WriteLocalDateHMSFromUTC ("'date_format_%u',%ld,"
- "%u,'',null,true,false,0x0",
- (unsigned) Format,(long) Gbl.StartExecutionTimeUTC,
+ char *Id;
+
+ if (asprintf (&Id,"date_format_%u",(unsigned) Format) < 0)
+ Lay_NotEnoughMemoryExit ();
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'',null,true,false,0x0",
+ Id,(long) Gbl.StartExecutionTimeUTC,
(unsigned) Format);
+ free ((void *) Id);
}
/*****************************************************************************/
diff --git a/swad_file_browser.c b/swad_file_browser.c
index 00bca723..e423d4ae 100644
--- a/swad_file_browser.c
+++ b/swad_file_browser.c
@@ -6388,6 +6388,7 @@ static void Brw_WriteDatesAssignment (void)
extern const char *Txt_Today;
extern const char *Txt_unknown_assignment;
static unsigned UniqueId = 0;
+ char *Id;
HTM_TD_Begin ("colspan=\"2\" class=\"%s RM COLOR%u\"",
Gbl.FileBrowser.Asg.Open ? "ASG_LST_DATE_GREEN" :
@@ -6398,20 +6399,28 @@ static void Brw_WriteDatesAssignment (void)
{
UniqueId++;
- /***** Write start and end dates *****/
- fprintf (Gbl.F.Out,"",UniqueId);
- Dat_WriteLocalDateHMSFromUTC ("'asg_start_date_%u',%ld,"
- "%u,', ','%s',true,false,0x7",
- UniqueId,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME],
- (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
- fprintf (Gbl.F.Out,""
- "→"
- "",UniqueId);
- Dat_WriteLocalDateHMSFromUTC ("'asg_end_date_%u',%ld,"
- "%u,', ','%s',false,false,0x7",
- UniqueId,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME],
+ /***** Write start date *****/
+ if (asprintf (&Id,"asg_start_date_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ fprintf (Gbl.F.Out,"",Id);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',true,false,0x7",
+ Id,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
fprintf (Gbl.F.Out,"");
+ free ((void *) Id);
+
+ /***** Arrow *****/
+ fprintf (Gbl.F.Out,"→");
+
+ /***** Write end date *****/
+ if (asprintf (&Id,"asg_end_date_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ fprintf (Gbl.F.Out,"",Id);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',false,false,0x7",
+ Id,(long) Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME],
+ (unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ fprintf (Gbl.F.Out,"");
+ free ((void *) Id);
}
else
fprintf (Gbl.F.Out," (%s)",Txt_unknown_assignment);
@@ -6426,6 +6435,7 @@ static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata)
{
extern const char *Txt_Today;
static unsigned UniqueId = 0;
+ char *Id;
char FileSizeStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
/***** Write the file size *****/
@@ -6446,11 +6456,13 @@ static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata)
Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_LINK)
{
UniqueId++;
- fprintf (Gbl.F.Out,"",UniqueId);
- Dat_WriteLocalDateHMSFromUTC ("'filedate%u',%ld,"
- "%u,', ','%s',true,false,0x6",
- UniqueId,(long) FileMetadata->Time,
+ if (asprintf (&Id,"filedate%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ fprintf (Gbl.F.Out,"",Id);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',true,false,0x6",
+ Id,(long) FileMetadata->Time,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ free ((void *) Id);
}
HTM_TD_End ();
}
@@ -9566,8 +9578,7 @@ void Brw_ShowFileMetadata (void)
HTM_TD_End ();
HTM_TD_Begin ("id=\"filedate\" class=\"DAT LM\"");
- Dat_WriteLocalDateHMSFromUTC ("'filedate',%ld,"
- "%u,', ','%s',true,true,0x7",
+ Dat_WriteLocalDateHMSFromUTC ("'filedate',%ld,%u,', ','%s',true,true,0x7",
(long) FileMetadata.Time,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
diff --git a/swad_forum.c b/swad_forum.c
index 6b3d4e7c..330ba385 100644
--- a/swad_forum.c
+++ b/swad_forum.c
@@ -3335,6 +3335,7 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
unsigned NumThr;
unsigned NumThrInScreen; // From 0 to Pag_ITEMS_PER_PAGE-1
unsigned UniqueId;
+ char *Id;
struct ForumThread Thr;
struct UsrData UsrDat;
For_Order_t Order;
@@ -3457,13 +3458,14 @@ static void For_ListForumThrs (long ThrCods[Pag_ITEMS_PER_PAGE],
/* Write the date of first or last message (it's in YYYYMMDDHHMMSS format) */
TimeUTC = Thr.WriteTime[Order];
UniqueId++;
- HTM_TD_Begin ("id=\"thr_date_%u\" class=\"%s LT %s\"",
- UniqueId,Style,BgColor);
- Dat_WriteLocalDateHMSFromUTC ("'thr_date_%u',%ld,"
- "%u,'
','%s',true,false,0x6",
- UniqueId,(long) TimeUTC,
+ if (asprintf (&Id,"thr_date_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT %s\"",Id,Style,BgColor);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,false,0x6",
+ Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
}
else
for (Column = 1;
diff --git a/swad_game.c b/swad_game.c
index e0fd1044..afb4eacf 100644
--- a/swad_game.c
+++ b/swad_game.c
@@ -376,6 +376,7 @@ void Gam_ShowOneGame (long GamCod,
extern const char *Txt_Matches;
char *Anchor = NULL;
static unsigned UniqueId = 0;
+ char *Id;
struct Game Game;
Dat_StartEndTime_t StartEndTime;
char Txt[Cns_MAX_BYTES_TEXT + 1];
@@ -419,24 +420,23 @@ void Gam_ShowOneGame (long GamCod,
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{
+ if (asprintf (&Id,"gam_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
if (ShowOnlyThisGame)
- HTM_TD_Begin ("id=\"gam_date_%u_%u\" class=\"%s LT\"",
- (unsigned) StartEndTime,UniqueId,
- Game.Hidden ? "DATE_GREEN_LIGHT":
- "DATE_GREEN");
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
+ Id,Game.Hidden ? "DATE_GREEN_LIGHT":
+ "DATE_GREEN");
else
- HTM_TD_Begin ("id=\"gam_date_%u_%u\" class=\"%s LT COLOR%u\"",
- (unsigned) StartEndTime,UniqueId,
- Game.Hidden ? "DATE_GREEN_LIGHT":
- "DATE_GREEN",
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
+ Id,Game.Hidden ? "DATE_GREEN_LIGHT":
+ "DATE_GREEN",
Gbl.RowEvenOdd);
if (Game.TimeUTC[Dat_START_TIME])
- Dat_WriteLocalDateHMSFromUTC ("'gam_date_%u_%u',%ld,"
- "%u,'
','%s',true,true,0x7",
- (unsigned) StartEndTime,UniqueId,
- Game.TimeUTC[StartEndTime],
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,true,0x7",
+ Id,Game.TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
}
/***** Game title and main data *****/
diff --git a/swad_group.c b/swad_group.c
index d02228dd..9ba494de 100644
--- a/swad_group.c
+++ b/swad_group.c
@@ -2328,6 +2328,7 @@ static void Grp_WriteGrpHead (struct GroupType *GrpTyp)
extern const char *Txt_ROLES_PLURAL_BRIEF_Abc[Rol_NUM_ROLES];
extern const char *Txt_Vacants;
static unsigned UniqueId = 0;
+ char *Id;
Rol_Role_t Role;
/***** Name of group type *****/
@@ -2337,14 +2338,16 @@ static void Grp_WriteGrpHead (struct GroupType *GrpTyp)
if (GrpTyp->MustBeOpened)
{
UniqueId++;
+ if (asprintf (&Id,"open_time_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
fprintf (Gbl.F.Out,"
%s: "
- "",
+ "",
Txt_Opening_of_groups,
- UniqueId);
- Dat_WriteLocalDateHMSFromUTC ("'open_time_%u',%ld,"
- "%u,', ','%s',true,true,0x7",
- UniqueId,(long) GrpTyp->OpenTimeUTC,
+ Id);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',true,true,0x7",
+ Id,(long) GrpTyp->OpenTimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ free ((void *) Id);
}
HTM_TD_End ();
HTM_TR_End ();
diff --git a/swad_match.c b/swad_match.c
index 03bebf5d..071230a2 100644
--- a/swad_match.c
+++ b/swad_match.c
@@ -544,22 +544,24 @@ static void Mch_ListOneOrMoreMatchesTimes (const struct Match *Match,unsigned Un
{
extern const char *Txt_Today;
Dat_StartEndTime_t StartEndTime;
+ char *Id;
for (StartEndTime = (Dat_StartEndTime_t) 0;
StartEndTime <= (Dat_StartEndTime_t) (Dat_NUM_START_END_TIME - 1);
StartEndTime++)
{
- HTM_TD_Begin ("id=\"mch_time_%u_%u\" class=\"%s LT COLOR%u\"",
- (unsigned) StartEndTime,UniqueId,
+ if (asprintf (&Id,"mch_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
+ Id,
Match->Status.QstInd >= Mch_AFTER_LAST_QUESTION ? "DATE_RED" :
"DATE_GREEN",
Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'mch_time_%u_%u',"
- "%ld,%u,'
','%s',true,true,0x7",
- (unsigned) StartEndTime,UniqueId,
- Match->TimeUTC[StartEndTime],
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,true,0x7",
+ Id,Match->TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
}
}
diff --git a/swad_match_result.c b/swad_match_result.c
index d9d37f63..2a515fdc 100644
--- a/swad_match_result.c
+++ b/swad_match_result.c
@@ -363,6 +363,7 @@ static void McR_ShowMchResults (Usr_MeOrOther_t MeOrOther)
unsigned NumResults;
unsigned NumResult;
static unsigned UniqueId = 0;
+ char *Id;
struct Match Match;
Dat_StartEndTime_t StartEndTime;
unsigned NumQstsInThisResult;
@@ -431,15 +432,15 @@ static void McR_ShowMchResults (Usr_MeOrOther_t MeOrOther)
{
TimeUTC[StartEndTime] = Dat_GetUNIXTimeFromStr (row[1 + StartEndTime]);
UniqueId++;
- HTM_TD_Begin ("id =\"mch_time_%u_%u\" class=\"DAT LT COLOR%u\"",
- (unsigned) StartEndTime,UniqueId,
- Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'mch_time_%u_%u',"
- "%ld,%u,'
','%s',true,false,0x7",
- (unsigned) StartEndTime,UniqueId,
- (long) TimeUTC[StartEndTime],
+ if (asprintf (&Id,"mch_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id =\"%s\" class=\"DAT LT COLOR%u\"",
+ Id,Gbl.RowEvenOdd);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,false,0x7",
+ Id,(long) TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
}
/* Write match title */
@@ -633,6 +634,7 @@ void McR_ShowOneMchResult (void)
struct UsrData *UsrDat;
time_t TimeUTC[Dat_NUM_START_END_TIME]; // Match result UTC date-time
Dat_StartEndTime_t StartEndTime;
+ char *Id;
unsigned NumQsts;
unsigned NumQstsNotBlank;
double TotalScore;
@@ -787,13 +789,14 @@ void McR_ShowOneMchResult (void)
fprintf (Gbl.F.Out,"%s:",Txt_START_END_TIME[StartEndTime]);
HTM_TD_End ();
- HTM_TD_Begin ("id=\"match_%u\" class=\"DAT LT\"",(unsigned) StartEndTime);
- Dat_WriteLocalDateHMSFromUTC ("'match_%u',%ld,"
- "%u,', ','%s',true,true,0x7",
- (unsigned) StartEndTime,
- TimeUTC[StartEndTime],
+ if (asprintf (&Id,"match_%u",(unsigned) StartEndTime) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id=\"%s\" class=\"DAT LT\"",Id);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',true,true,0x7",
+ Id,TimeUTC[StartEndTime],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
HTM_TR_End ();
}
diff --git a/swad_message.c b/swad_message.c
index aff7fda2..55f013e2 100644
--- a/swad_message.c
+++ b/swad_message.c
@@ -3612,21 +3612,25 @@ void Msg_WriteMsgDate (time_t TimeUTC,const char *ClassBackground)
{
extern const char *Txt_Today;
static unsigned UniqueId = 0;
+ char *Id;
UniqueId++;
+ if (asprintf (&Id,"msg_date_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
/***** Start cell *****/
- HTM_TD_Begin ("id=\"msg_date_%u\" class=\"%s RT\" style=\"width:106px;\"",
- UniqueId,ClassBackground);
+ HTM_TD_Begin ("id=\"%s\" class=\"%s RT\" style=\"width:106px;\"",
+ Id,ClassBackground);
/***** Write date and time *****/
- Dat_WriteLocalDateHMSFromUTC ("'msg_date_%u',%ld,"
- "%u,', ','%s',true,false,0x6",
- UniqueId,(long) TimeUTC,
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',true,false,0x6",
+ Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
/***** End cell *****/
HTM_TD_End ();
+
+ free ((void *) Id);
}
/*****************************************************************************/
diff --git a/swad_notice.c b/swad_notice.c
index e874229a..6f809cbf 100644
--- a/swad_notice.c
+++ b/swad_notice.c
@@ -640,6 +640,7 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
"NOTICE_AUTHOR_OBSOLETE", // Not_OBSOLETE_NOTICE
};
static unsigned UniqueId = 0;
+ char *Id;
struct UsrData UsrDat;
char *Anchor = NULL;
@@ -691,17 +692,18 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
Not_PutHiddenParamNotCod (NotCod);
Frm_LinkFormSubmit (Txt_See_full_notice,DateClass[Status],NULL);
}
- fprintf (Gbl.F.Out,"",
- UniqueId);
+ if (asprintf (&Id,"not_date_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ fprintf (Gbl.F.Out,"",Id);
if (TypeNoticesListing == Not_LIST_BRIEF_NOTICES)
{
Frm_LinkFormEnd ();
Frm_EndForm ();
}
- Dat_WriteLocalDateHMSFromUTC ("'not_date_%u',%ld,"
- "%u,'
','%s',true,false,0x6",
- UniqueId,(long) TimeUTC,
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,false,0x6",
+ Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
+ free ((void *) Id);
HTM_DIV_End ();
/***** Write the content of the notice *****/
diff --git a/swad_profile.c b/swad_profile.c
index 2faf9009..c53c479a 100644
--- a/swad_profile.c
+++ b/swad_profile.c
@@ -501,8 +501,7 @@ static void Prf_ShowTimeSinceFirstClick (const struct UsrData *UsrDat,
}
fprintf (Gbl.F.Out,")");
}
- Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,"
- "%u,', ','%s',true,false,0x6",
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',true,false,0x6",
IdFirstClickTime,(long) UsrFigures->FirstClickTimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
}
diff --git a/swad_project.c b/swad_project.c
index 4dff0cbf..5cdf876a 100644
--- a/swad_project.c
+++ b/swad_project.c
@@ -1046,6 +1046,7 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
struct Prj_Faults Faults;
bool PrjIsFaulty;
static unsigned UniqueId = 0;
+ char *Id;
/***** Set CSS classes *****/
ClassLabel = (Prj->Hidden == Prj_HIDDEN) ? "ASG_LABEL_LIGHT" :
@@ -1105,41 +1106,45 @@ static void Prj_ShowOneProject (unsigned NumIndex,struct Project *Prj,
/* Creation date/time */
UniqueId++;
+ if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
- HTM_TD_Begin ("id=\"prj_creat_%u\" class=\"%s LT COLOR%u\"",
- UniqueId,ClassDate,Gbl.RowEvenOdd);
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
+ Id,ClassDate,Gbl.RowEvenOdd);
break;
default:
- HTM_TD_Begin ("id=\"prj_creat_%u\" class=\"%s LT\"",
- UniqueId,ClassDate);
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
+ Id,ClassDate);
break;
}
- Dat_WriteLocalDateHMSFromUTC ("'prj_creat_%u',%ld,"
- "%u,'
','%s',true,true,0x7",
- UniqueId,Prj->CreatTime,
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,true,0x7",
+ Id,Prj->CreatTime,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
/* Modification date/time */
UniqueId++;
+ if (asprintf (&Id,"prj_modif_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
switch (ProjectView)
{
case Prj_LIST_PROJECTS:
- HTM_TD_Begin ("id=\"prj_modif_%u\" class=\"%s LT COLOR%u\"",
- UniqueId,ClassDate,Gbl.RowEvenOdd);
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
+ Id,ClassDate,Gbl.RowEvenOdd);
break;
default:
- HTM_TD_Begin ("id=\"prj_modif_%u\" class=\"%s LT\"",
- UniqueId,ClassDate);
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
+ Id,ClassDate);
break;
}
- Dat_WriteLocalDateHMSFromUTC ("'prj_modif_%u',%ld,"
- "%u,'
','%s',true,true,0x7",
- UniqueId,Prj->ModifTime,
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,true,0x7",
+ Id,Prj->ModifTime,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
/* Project title */
switch (ProjectView)
@@ -1474,6 +1479,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
const char *ClassDate;
const char *ClassData;
static unsigned UniqueId = 0;
+ char *Id;
/***** Get data of this project *****/
Prj_GetDataOfProjectByCod (Prj);
@@ -1489,23 +1495,27 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
/***** Start date/time *****/
UniqueId++;
- HTM_TD_Begin ("id=\"prj_creat_%u\" class=\"LT %s COLOR%u\"",
- UniqueId,ClassDate,Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'prj_creat_%u',%ld,"
- "%u,'
','%s',true,true,0x7",
- UniqueId,Prj->CreatTime,
+ if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id=\"%s\" class=\"LT %s COLOR%u\"",
+ Id,ClassDate,Gbl.RowEvenOdd);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,true,0x7",
+ Id,Prj->CreatTime,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
/***** End date/time *****/
UniqueId++;
- HTM_TD_Begin ("id=\"prj_modif_%u\" class=\"LT %s COLOR%u\"",
- UniqueId,ClassDate,Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'prj_modif_%u',%ld,"
- "%u,'
','%s',true,true,0x7",
- UniqueId,Prj->ModifTime,
+ if (asprintf (&Id,"prj_modif_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id=\"%s\" class=\"LT %s COLOR%u\"",
+ Id,ClassDate,Gbl.RowEvenOdd);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,true,0x7",
+ Id,Prj->ModifTime,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
/***** Project title *****/
HTM_TD_Begin ("class=\"LT %s COLOR%u\"",
diff --git a/swad_statistic.c b/swad_statistic.c
index 2cb01149..31fb153c 100644
--- a/swad_statistic.c
+++ b/swad_statistic.c
@@ -1547,6 +1547,7 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
long LogCod;
Rol_Role_t RoleFromLog;
unsigned UniqueId;
+ char *Id;
long ActCod;
char ActTxt[Act_MAX_BYTES_ACTION_TXT + 1];
@@ -1715,13 +1716,14 @@ static void Sta_ShowDetailedAccessesList (unsigned long NumRows,MYSQL_RES *mysql
HTM_TD_End ();
/* Write the date-time (row[3]) */
- HTM_TD_Begin ("id=\"log_date_%u\" class=\"LOG RT COLOR%u\"",
- UniqueId,Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'log_date_%u',%ld,"
- "%u,', ','%s',true,false,0x7",
- UniqueId,(long) Dat_GetUNIXTimeFromStr (row[3]),
+ if (asprintf (&Id,"log_date_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id=\"%s\" class=\"LOG RT COLOR%u\"",Id,Gbl.RowEvenOdd);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',true,false,0x7",
+ Id,(long) Dat_GetUNIXTimeFromStr (row[3]),
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
/* Write the action */
if (sscanf (row[4],"%ld",&ActCod) != 1)
diff --git a/swad_survey.c b/swad_survey.c
index 97175f3e..9a54906a 100644
--- a/swad_survey.c
+++ b/swad_survey.c
@@ -437,6 +437,7 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
extern const char *Txt_View_survey_results;
char *Anchor = NULL;
static unsigned UniqueId = 0;
+ char *Id;
struct Survey Svy;
char Txt[Cns_MAX_BYTES_TEXT + 1];
@@ -470,48 +471,52 @@ static void Svy_ShowOneSurvey (long SvyCod,struct SurveyQuestion *SvyQst,
/* Start date/time */
UniqueId++;
+ if (asprintf (&Id,"svy_date_start_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
if (ShowOnlyThisSvyComplete)
- HTM_TD_Begin ("id=\"svy_date_start_%u\" class=\"%s LT\"",
- UniqueId,
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
+ Id,
Svy.Status.Visible ? (Svy.Status.Open ? "DATE_GREEN" :
"DATE_RED") :
(Svy.Status.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT"));
else
- HTM_TD_Begin ("id=\"svy_date_start_%u\" class=\"%s LT COLOR%u\"",
- UniqueId,
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
+ Id,
Svy.Status.Visible ? (Svy.Status.Open ? "DATE_GREEN" :
"DATE_RED") :
(Svy.Status.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT"),
Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'svy_date_start_%u',%ld,"
- "%u,'
','%s',true,true,0x7",
- UniqueId,Svy.TimeUTC[Svy_START_TIME],
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,true,0x7",
+ Id,Svy.TimeUTC[Svy_START_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
/* End date/time */
+ if (asprintf (&Id,"svy_date_end_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
if (ShowOnlyThisSvyComplete)
- HTM_TD_Begin ("id=\"svy_date_end_%u\" class=\"%s LT\"",
- UniqueId,
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
+ Id,
Svy.Status.Visible ? (Svy.Status.Open ? "DATE_GREEN" :
"DATE_RED") :
(Svy.Status.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT"));
else
- HTM_TD_Begin ("id=\"svy_date_end_%u\" class=\"%s LT COLOR%u\"",
- UniqueId,
+ HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
+ Id,
Svy.Status.Visible ? (Svy.Status.Open ? "DATE_GREEN" :
"DATE_RED") :
(Svy.Status.Open ? "DATE_GREEN_LIGHT" :
"DATE_RED_LIGHT"),
Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'svy_date_end_%u',%ld,"
- "%u,'
','%s',false,true,0x7",
- UniqueId,Svy.TimeUTC[Svy_END_TIME],
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',false,true,0x7",
+ Id,Svy.TimeUTC[Svy_END_TIME],
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
/* Survey title */
if (ShowOnlyThisSvyComplete)
diff --git a/swad_test.c b/swad_test.c
index 07f99a1e..666f27f2 100644
--- a/swad_test.c
+++ b/swad_test.c
@@ -25,12 +25,13 @@
/*********************************** Headers *********************************/
/*****************************************************************************/
+#define _GNU_SOURCE // For asprintf
#include // For UINT_MAX
#include // For PATH_MAX
#include // For NULL
#include // To access MySQL databases
#include // For boolean type
-#include // For fprintf, etc.
+#include // For fprintf, asprintf, etc.
#include // For exit, system, malloc, free, etc
#include // For string functions
#include // For mkdir
@@ -2806,6 +2807,7 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
unsigned long NumRow;
MYSQL_ROW row;
unsigned UniqueId;
+ char *Id;
time_t TimeUTC;
unsigned long NumHitsThisQst;
unsigned long NumHitsNotBlankThisQst;
@@ -2929,13 +2931,15 @@ static void Tst_ListOneOrMoreQuestionsForEdition (unsigned long NumRows,
/* Write the date (row[1] has the UTC date-time) */
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
- HTM_TD_Begin ("id=\"tst_date_%u\" class=\"DAT_SMALL CT COLOR%u\"",
- UniqueId,Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'tst_date_%u',%ld,"
- "%u,'
','%s',true,false,0x7",
- UniqueId,(long) TimeUTC,
+ if (asprintf (&Id,"tst_date_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT COLOR%u\"",
+ Id,Gbl.RowEvenOdd);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,false,0x7",
+ Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
/* Write the question tags */
HTM_TD_Begin ("class=\"LT COLOR%u\"",Gbl.RowEvenOdd);
@@ -3063,6 +3067,7 @@ static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,
unsigned long NumRow;
MYSQL_ROW row;
unsigned UniqueId;
+ char *Id;
time_t TimeUTC;
/***** Begin box *****/
@@ -3138,13 +3143,15 @@ static void Tst_ListOneOrMoreQuestionsForSelection (unsigned long NumRows,
/* Write the date (row[1] has the UTC date-time) */
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
- HTM_TD_Begin ("id=\"tst_date_%u\" class=\"DAT_SMALL CT COLOR%u\">",
- UniqueId,Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'tst_date_%u',%ld,"
- "%u,'
','%s',true,false,0x7",
- UniqueId,(long) TimeUTC,
+ if (asprintf (&Id,"tst_date_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT COLOR%u\">",
+ Id,Gbl.RowEvenOdd);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,'
','%s',true,false,0x7",
+ Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
/* Write the question tags */
HTM_TD_Begin ("class=\"LT COLOR%u\"",Gbl.RowEvenOdd);
@@ -7685,6 +7692,7 @@ static void Tst_ShowTstResults (struct UsrData *UsrDat)
unsigned NumExams;
unsigned NumTest;
static unsigned UniqueId = 0;
+ char *Id;
long TstCod;
unsigned NumQstsInThisTest;
unsigned NumQstsNotBlankInThisTest;
@@ -7772,13 +7780,15 @@ static void Tst_ShowTstResults (struct UsrData *UsrDat)
/* Write date and time (row[2] holds UTC date-time) */
TimeUTC = Dat_GetUNIXTimeFromStr (row[2]);
UniqueId++;
- HTM_TD_Begin ("id=\"tst_date_%u\" class=\"%s RT COLOR%u\"",
- UniqueId,ClassDat,Gbl.RowEvenOdd);
- Dat_WriteLocalDateHMSFromUTC ("'tst_date_%u',%ld,"
- "%u,', ','%s',true,false,0x7",
- UniqueId,(long) TimeUTC,
+ if (asprintf (&Id,"tst_date_%u",UniqueId) < 0)
+ Lay_NotEnoughMemoryExit ();
+ HTM_TD_Begin ("id=\"%s\" class=\"%s RT COLOR%u\"",
+ Id,ClassDat,Gbl.RowEvenOdd);
+ Dat_WriteLocalDateHMSFromUTC ("'%s',%ld,%u,', ','%s',true,false,0x7",
+ Id,(long) TimeUTC,
(unsigned) Gbl.Prefs.DateFormat,Txt_Today);
HTM_TD_End ();
+ free ((void *) Id);
/* Get number of questions (row[3]) */
if (sscanf (row[3],"%u",&NumQstsInThisTest) != 1)