From fef1cb17ae025c866c0bbfbab298ff839a7a29b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Mon, 30 Dec 2019 14:55:25 +0100 Subject: [PATCH] Version19.108.2 --- swad_account.c | 7 +++---- swad_agenda.c | 21 +++++++++------------ swad_centre.c | 16 ++++++++-------- swad_centre_config.c | 8 ++++---- swad_changelog.h | 4 +++- swad_country_config.c | 8 ++++---- swad_course.c | 33 +++++++++++++++------------------ swad_hierarchy.c | 15 ++------------- swad_report.c | 8 ++++---- swad_string.c | 26 ++++++++++++++++++++++++++ swad_string.h | 3 +++ 11 files changed, 81 insertions(+), 68 deletions(-) diff --git a/swad_account.c b/swad_account.c index f917ea2b..bfbc9232 100644 --- a/swad_account.c +++ b/swad_account.c @@ -420,11 +420,10 @@ void Acc_ShowFormGoToRequestNewAccount (void) extern const char *Txt_Create_account; /***** Begin box *****/ - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_New_on_PLATFORM_Sign_up, - Cfg_PLATFORM_SHORT_NAME); - Box_BoxBegin (NULL,Gbl.Title,NULL, + Box_BoxBegin (NULL,Str_BuildStrMsg (Txt_New_on_PLATFORM_Sign_up, + Cfg_PLATFORM_SHORT_NAME),NULL, Hlp_PROFILE_SignUp,Box_NOT_CLOSABLE); + Str_FreeStrMsg (); /***** Button to go to request the creation of a new account *****/ Frm_StartForm (ActFrmMyAcc); diff --git a/swad_agenda.c b/swad_agenda.c index cece2068..c81fc022 100644 --- a/swad_agenda.c +++ b/swad_agenda.c @@ -356,14 +356,13 @@ void Agd_ShowUsrAgenda (void) Error = false; /***** Begin box *****/ - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_Public_agenda_USER, - Gbl.Usrs.Other.UsrDat.FullName); ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod); - Box_BoxBegin ("100%",Gbl.Title, + Box_BoxBegin ("100%",Str_BuildStrMsg (Txt_Public_agenda_USER, + Gbl.Usrs.Other.UsrDat.FullName), ItsMe ? Agd_PutIconsMyPublicAgenda : Agd_PutIconsOtherPublicAgenda, Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE); + Str_FreeStrMsg (); /***** Show the current events in the user's agenda *****/ Agd_ShowEventsToday (Agd_ANOTHER_AGENDA_TODAY); @@ -400,14 +399,13 @@ void Agd_ShowOtherAgendaAfterLogIn (void) if (Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Usr_DONT_GET_PREFS)) // Existing user { /***** Begin box *****/ - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_Public_agenda_USER, - Gbl.Usrs.Other.UsrDat.FullName); ItsMe = Usr_ItsMe (Gbl.Usrs.Other.UsrDat.UsrCod); - Box_BoxBegin ("100%",Gbl.Title, + Box_BoxBegin ("100%",Str_BuildStrMsg (Txt_Public_agenda_USER, + Gbl.Usrs.Other.UsrDat.FullName), ItsMe ? Agd_PutIconToViewEditMyFullAgenda : Agd_PutIconsOtherPublicAgenda, Hlp_PROFILE_Agenda_public_agenda,Box_NOT_CLOSABLE); + Str_FreeStrMsg (); /***** Show the current events in the user's agenda *****/ Agd_ShowEventsToday (Agd_ANOTHER_AGENDA_TODAY); @@ -1902,11 +1900,10 @@ void Agd_PrintAgdQRCode (void) extern const char *Txt_Where_s_USER; /***** Begin box *****/ - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_Where_s_USER, - Gbl.Usrs.Me.UsrDat.FullName); - Box_BoxBegin (NULL,Gbl.Title,NULL, + Box_BoxBegin (NULL,Str_BuildStrMsg (Txt_Where_s_USER, + Gbl.Usrs.Me.UsrDat.FullName),NULL, NULL,Box_NOT_CLOSABLE); + Str_FreeStrMsg (); /***** Print QR code ****/ QR_PrintQRCode (); diff --git a/swad_centre.c b/swad_centre.c index 56982da8..affabb95 100644 --- a/swad_centre.c +++ b/swad_centre.c @@ -264,11 +264,11 @@ static void Ctr_ListCentres (void) unsigned NumCtr; /***** Begin box *****/ - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_Centres_of_INSTITUTION_X, - Gbl.Hierarchy.Ins.FullName); - Box_BoxBegin (NULL,Gbl.Title,Ctr_PutIconsListingCentres, + Box_BoxBegin (NULL,Str_BuildStrMsg (Txt_Centres_of_INSTITUTION_X, + Gbl.Hierarchy.Ins.FullName), + Ctr_PutIconsListingCentres, Hlp_INSTITUTION_Centres,Box_NOT_CLOSABLE); + Str_FreeStrMsg (); if (Gbl.Hierarchy.Ins.Ctrs.Num) // There are centres in the current institution { @@ -476,11 +476,11 @@ static void Ctr_EditCentresInternal (void) Hie_WriteMenuHierarchy (); /***** Begin box *****/ - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_Centres_of_INSTITUTION_X, - Gbl.Hierarchy.Ins.FullName); - Box_BoxBegin (NULL,Gbl.Title,Ctr_PutIconsEditingCentres, + Box_BoxBegin (NULL,Str_BuildStrMsg (Txt_Centres_of_INSTITUTION_X, + Gbl.Hierarchy.Ins.FullName), + Ctr_PutIconsEditingCentres, Hlp_INSTITUTION_Centres,Box_NOT_CLOSABLE); + Str_FreeStrMsg (); /***** Put a form to create a new centre *****/ Ctr_PutFormToCreateCentre (); diff --git a/swad_centre_config.c b/swad_centre_config.c index e7c81858..b5181670 100644 --- a/swad_centre_config.c +++ b/swad_centre_config.c @@ -797,10 +797,10 @@ static void CtrCfg_NumDegs (void) HTM_TD_Begin ("class=\"LB\""); Frm_StartFormGoTo (ActSeeDeg); Ctr_PutParamCtrCod (Gbl.Hierarchy.Ctr.CtrCod); - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_Degrees_of_CENTRE_X, - Gbl.Hierarchy.Ctr.ShrtName); - HTM_BUTTON_SUBMIT_Begin (Gbl.Title,"BT_LINK DAT",NULL); + HTM_BUTTON_SUBMIT_Begin (Str_BuildStrMsg (Txt_Degrees_of_CENTRE_X, + Gbl.Hierarchy.Ctr.ShrtName), + "BT_LINK DAT",NULL); + Str_FreeStrMsg (); HTM_Unsigned (Deg_GetNumDegsInCtr (Gbl.Hierarchy.Ctr.CtrCod)); HTM_BUTTON_End (); Frm_EndForm (); diff --git a/swad_changelog.h b/swad_changelog.h index 949eb963..86eaa51c 100644 --- a/swad_changelog.h +++ b/swad_changelog.h @@ -492,7 +492,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.108 (2019-12-30)" +#define Log_PLATFORM_VERSION "SWAD 19.108.2 (2019-12-30)" #define CSS_FILE "swad19.101.5.css" #define JS_FILE "swad19.91.1.js" /* @@ -502,6 +502,8 @@ ps2pdf source.ps destination.pdf Version 19.10x: Dec 30, 2019 Map in country information. (? lines) Version 19.10x: Dec 30, 2019 Map in institution information. (? lines) + Version 19.108.2: Dec 30, 2019 Code refactoring related to printing messages. (249739 lines) + Version 19.108.1: Dec 30, 2019 Code refactoring related to printing messages. (249746 lines) Version 19.108: Dec 30, 2019 Code refactoring related to hierarchy. (249730 lines) Version 19.107: Dec 29, 2019 New module swad_hierarchy_config for common hierarchy configuration functions. (249760 lines) Version 19.106: Dec 29, 2019 New module swad_country_config for country configuration. (249683 lines) diff --git a/swad_country_config.c b/swad_country_config.c index b5c8930e..137a6388 100644 --- a/swad_country_config.c +++ b/swad_country_config.c @@ -343,10 +343,10 @@ static void CtyCfg_NumInss (void) HTM_TD_Begin ("class=\"LB\""); Frm_StartFormGoTo (ActSeeIns); Cty_PutParamCtyCod (Gbl.Hierarchy.Cty.CtyCod); - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_Institutions_of_COUNTRY_X, - Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]); - HTM_BUTTON_SUBMIT_Begin (Gbl.Title,"BT_LINK DAT",NULL); + HTM_BUTTON_SUBMIT_Begin (Str_BuildStrMsg (Txt_Institutions_of_COUNTRY_X, + Gbl.Hierarchy.Cty.Name[Gbl.Prefs.Language]), + "BT_LINK DAT",NULL); + Str_FreeStrMsg (); HTM_Unsigned (Ins_GetNumInssInCty (Gbl.Hierarchy.Cty.CtyCod)); HTM_BUTTON_End (); Frm_EndForm (); diff --git a/swad_course.c b/swad_course.c index bdbc78d7..ada5c417 100644 --- a/swad_course.c +++ b/swad_course.c @@ -743,11 +743,11 @@ static void Crs_ListCourses (void) unsigned Year; /***** Begin box *****/ - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_Courses_of_DEGREE_X, - Gbl.Hierarchy.Deg.ShrtName); - Box_BoxBegin (NULL,Gbl.Title,Crs_PutIconsListCourses, + Box_BoxBegin (NULL,Str_BuildStrMsg (Txt_Courses_of_DEGREE_X, + Gbl.Hierarchy.Deg.ShrtName), + Crs_PutIconsListCourses, Hlp_DEGREE_Courses,Box_NOT_CLOSABLE); + Str_FreeStrMsg (); if (Gbl.Hierarchy.Deg.Crss.Num) // There are courses in the current degree { @@ -947,11 +947,11 @@ static void Crs_EditCoursesInternal (void) Hie_WriteMenuHierarchy (); /***** Begin box *****/ - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_Courses_of_DEGREE_X, - Gbl.Hierarchy.Deg.ShrtName); - Box_BoxBegin (NULL,Gbl.Title,Crs_PutIconsEditingCourses, + Box_BoxBegin (NULL,Str_BuildStrMsg (Txt_Courses_of_DEGREE_X, + Gbl.Hierarchy.Deg.ShrtName), + Crs_PutIconsEditingCourses, Hlp_DEGREE_Courses,Box_NOT_CLOSABLE); + Str_FreeStrMsg (); /***** Put a form to create or request a new course *****/ Crs_PutFormToCreateCourse (); @@ -2269,10 +2269,9 @@ static void Crs_PutButtonToRegisterInCrs (void) // If the course being edited is different to the current one... if (Crs_EditingCrs->CrsCod != Gbl.Hierarchy.Crs.CrsCod) Crs_PutParamCrsCod (Crs_EditingCrs->CrsCod); - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_Register_me_in_X, - Crs_EditingCrs->ShrtName); - Btn_PutCreateButton (Gbl.Title); + Btn_PutCreateButton (Str_BuildStrMsg (Txt_Register_me_in_X, + Crs_EditingCrs->ShrtName)); + Str_FreeStrMsg (); Frm_EndForm (); } @@ -2443,15 +2442,13 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role) NULL,Box_NOT_CLOSABLE,2); /* Heading row */ - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_USER_in_COURSE, - Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role - Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]); - HTM_TR_Begin (NULL); HTM_TH_Begin (1,7,"LM"); - HTM_TxtF ("%s:",Gbl.Title); + HTM_TxtF ("%s:",Str_BuildStrMsg (Txt_USER_in_COURSE, + Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role + Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex])); + Str_FreeStrMsg (); HTM_TH_End (); HTM_TR_End (); diff --git a/swad_hierarchy.c b/swad_hierarchy.c index a9a41e47..bd246d51 100644 --- a/swad_hierarchy.c +++ b/swad_hierarchy.c @@ -48,12 +48,6 @@ extern struct Globals Gbl; /***************************** Private types *********************************/ /*****************************************************************************/ -/*****************************************************************************/ -/*************************** Private variables *******************************/ -/*****************************************************************************/ - -char *Hie_GoToMsg = NULL; - /*****************************************************************************/ /*************************** Private constants *******************************/ /*****************************************************************************/ @@ -794,15 +788,10 @@ char *Hie_BuildGoToMsg (const char *Where) { extern const char *Txt_Go_to_X; - Hie_FreeGoToMsg (); - if (asprintf (&Hie_GoToMsg,Txt_Go_to_X,Where) < 0) - Lay_NotEnoughMemoryExit (); - - return Hie_GoToMsg; + return Str_BuildStrMsg (Txt_Go_to_X,Where); } void Hie_FreeGoToMsg (void) { - if (Hie_GoToMsg != NULL) - free (Hie_GoToMsg); + Str_FreeStrMsg (); } diff --git a/swad_report.c b/swad_report.c index f7861df2..e8a86e26 100644 --- a/swad_report.c +++ b/swad_report.c @@ -998,14 +998,14 @@ static void Rep_GetAndWriteMyCurrentCrss (Rol_Role_t Role, long CrsCod; NumCrss = Usr_GetNumCrssOfUsrWithARole (Gbl.Usrs.Me.UsrDat.UsrCod,Role); - snprintf (Gbl.Title,sizeof (Gbl.Title), - Txt_USER_in_COURSE, - Txt_ROLES_SINGUL_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]); fprintf (Gbl.F.Rep,"
  • %s %u %s", - Gbl.Title, + Str_BuildStrMsg (Txt_USER_in_COURSE, + Txt_ROLES_SINGUL_Abc[Role][Gbl.Usrs.Me.UsrDat.Sex]), NumCrss, NumCrss == 1 ? Txt_course : Txt_courses); + Str_FreeStrMsg (); + if (NumCrss) { fprintf (Gbl.F.Rep," (%u %s / %u %s):", diff --git a/swad_string.c b/swad_string.c index 51366632..6df4a7c8 100644 --- a/swad_string.c +++ b/swad_string.c @@ -2922,3 +2922,29 @@ void Str_Concat (char *Dst,const char *Src,size_t DstSize) /***** Concatenate ******/ strcat (Dst,Src); } + +/*****************************************************************************/ +/************************** Build a string message ***************************/ +/*****************************************************************************/ +// FormatMsg must be a string including "%s" +// Str_FreeStrMsg() must be called after calling this function + +static char *Str_StrMsg = NULL; + +char *Str_BuildStrMsg (const char *FormatMsg,const char *Str) + { + Str_FreeStrMsg (); + if (asprintf (&Str_StrMsg,FormatMsg,Str) < 0) + Lay_NotEnoughMemoryExit (); + + return Str_StrMsg; + } + +void Str_FreeStrMsg (void) + { + if (Str_StrMsg != NULL) + { + free (Str_StrMsg); + Str_StrMsg = NULL; + } + } diff --git a/swad_string.h b/swad_string.h index f782fe36..257237f1 100644 --- a/swad_string.h +++ b/swad_string.h @@ -136,4 +136,7 @@ void Str_CreateRandomAlphanumStr (char *Str,size_t Length); void Str_Copy (char *Dst,const char *Src,size_t DstSize); void Str_Concat (char *Dst,const char *Src,size_t DstSize); +char *Str_BuildStrMsg (const char *FormatMsg,const char *Str); +void Str_FreeStrMsg (void); + #endif