From af3f796fa53066d8213741228ce10a13530ccf2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 1 Nov 2019 22:53:39 +0100 Subject: [PATCH] Version19.50.1 --- swad_agenda.c | 14 ++++++----- swad_assignment.c | 19 +++++++++------ swad_attendance.c | 45 ++++++++++++++++++++++------------- swad_changelog.h | 3 ++- swad_date.c | 10 +++++--- swad_file_browser.c | 47 ++++++++++++++++++++++-------------- swad_forum.c | 12 ++++++---- swad_game.c | 24 +++++++++---------- swad_group.c | 13 ++++++---- swad_match.c | 14 ++++++----- swad_match_result.c | 27 +++++++++++---------- swad_message.c | 14 +++++++---- swad_notice.c | 12 ++++++---- swad_profile.c | 3 +-- swad_project.c | 58 ++++++++++++++++++++++++++------------------- swad_statistic.c | 12 ++++++---- swad_survey.c | 33 +++++++++++++++----------- swad_test.c | 42 +++++++++++++++++++------------- 18 files changed, 239 insertions(+), 163 deletions(-) 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)