Version 18.6.3

This commit is contained in:
Antonio Cañas Vargas 2018-10-17 10:32:18 +02:00
parent 182b6eb2e1
commit c95fe7dc36
14 changed files with 322 additions and 176 deletions

View File

@ -355,10 +355,11 @@ En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 18.6.2 (2018-10-17)" #define Log_PLATFORM_VERSION "SWAD 18.6.3 (2018-10-17)"
#define CSS_FILE "swad18.4.css" #define CSS_FILE "swad18.4.css"
#define JS_FILE "swad17.17.1.js" #define JS_FILE "swad17.17.1.js"
/* /*
Version 18.6.3: Oct 17, 2018 Some sprintf changed by snprintf or asprintf. (235954 lines)
Version 18.6.2: Oct 17, 2018 Some sprintf changed by snprintf. (235808 lines) Version 18.6.2: Oct 17, 2018 Some sprintf changed by snprintf. (235808 lines)
Version 18.6.1: Oct 16, 2018 Some sprintf changed by snprintf. (235755 lines) Version 18.6.1: Oct 16, 2018 Some sprintf changed by snprintf. (235755 lines)
Version 18.6: Oct 16, 2018 sprintf changed by snprintf in alerts. (235730 lines) Version 18.6: Oct 16, 2018 sprintf changed by snprintf in alerts. (235730 lines)

View File

@ -144,7 +144,9 @@ void Cht_ShowListOfAvailableChatRooms (void)
/***** Link to chat available for all the users *****/ /***** Link to chat available for all the users *****/
IsLastItemInLevel[1] = (!Gbl.Usrs.Me.IBelongToCurrentCrs && IsLastItemInLevel[1] = (!Gbl.Usrs.Me.IBelongToCurrentCrs &&
!Gbl.Usrs.Me.MyDegs.Num); !Gbl.Usrs.Me.MyDegs.Num);
sprintf (ThisRoomFullName,"%s (%s)",Txt_General,Txt_SEX_PLURAL_abc[Usr_SEX_ALL]); snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),
"%s (%s)",
Txt_General,Txt_SEX_PLURAL_abc[Usr_SEX_ALL]);
Cht_WriteLinkToChat1 ("GBL_USR",Txt_SEX_PLURAL_Abc[Usr_SEX_ALL],ThisRoomFullName,1,IsLastItemInLevel); Cht_WriteLinkToChat1 ("GBL_USR",Txt_SEX_PLURAL_Abc[Usr_SEX_ALL],ThisRoomFullName,1,IsLastItemInLevel);
fprintf (Gbl.F.Out,"<img src=\"%s/chat64x64.gif\"" fprintf (Gbl.F.Out,"<img src=\"%s/chat64x64.gif\""
" alt=\"%s\" title=\"%s\"" " alt=\"%s\" title=\"%s\""
@ -158,8 +160,9 @@ void Cht_ShowListOfAvailableChatRooms (void)
switch (Gbl.Usrs.Me.Role.Logged) switch (Gbl.Usrs.Me.Role.Logged)
{ {
case Rol_STD: case Rol_STD:
sprintf (ThisRoomFullName,"%s (%s)", snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),
Txt_General,Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_ALL]); "%s (%s)",
Txt_General,Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_ALL]);
Cht_WriteLinkToChat1 ("GBL_STD",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD],ThisRoomFullName,1,IsLastItemInLevel); Cht_WriteLinkToChat1 ("GBL_STD",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD],ThisRoomFullName,1,IsLastItemInLevel);
fprintf (Gbl.F.Out,"<img src=\"%s/chat64x64.gif\"" fprintf (Gbl.F.Out,"<img src=\"%s/chat64x64.gif\""
" alt=\"%s\" title=\"%s\"" " alt=\"%s\" title=\"%s\""
@ -170,8 +173,9 @@ void Cht_ShowListOfAvailableChatRooms (void)
break; break;
case Rol_NET: case Rol_NET:
case Rol_TCH: case Rol_TCH:
sprintf (ThisRoomFullName,"%s (%s)", snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),
Txt_General,Txt_ROLES_PLURAL_abc[Rol_TCH][Usr_SEX_ALL]); "%s (%s)",
Txt_General,Txt_ROLES_PLURAL_abc[Rol_TCH][Usr_SEX_ALL]);
Cht_WriteLinkToChat1 ("GBL_TCH",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH],ThisRoomFullName,1,IsLastItemInLevel); Cht_WriteLinkToChat1 ("GBL_TCH",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH],ThisRoomFullName,1,IsLastItemInLevel);
fprintf (Gbl.F.Out,"<img src=\"%s/chat64x64.gif\"" fprintf (Gbl.F.Out,"<img src=\"%s/chat64x64.gif\""
" alt=\"%s\" title=\"%s\"" " alt=\"%s\" title=\"%s\""
@ -196,9 +200,15 @@ void Cht_ShowListOfAvailableChatRooms (void)
/* Link to the room of this degree */ /* Link to the room of this degree */
IsLastItemInLevel[1] = (NumMyDeg == Gbl.Usrs.Me.MyDegs.Num - 1); IsLastItemInLevel[1] = (NumMyDeg == Gbl.Usrs.Me.MyDegs.Num - 1);
sprintf (ThisRoomCode,"DEG_%ld",Deg.DegCod); snprintf (ThisRoomCode,sizeof (ThisRoomCode),
sprintf (ThisRoomShrtName,"%s",Deg.ShrtName); "DEG_%ld",
sprintf (ThisRoomFullName,"%s %s",Txt_Degree,Deg.ShrtName); Deg.DegCod);
snprintf (ThisRoomShrtName,sizeof (ThisRoomShrtName),
"%s",
Deg.ShrtName);
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),
"%s %s",
Txt_Degree,Deg.ShrtName);
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,ThisRoomFullName,1,IsLastItemInLevel); Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,ThisRoomFullName,1,IsLastItemInLevel);
Log_DrawLogo (Sco_SCOPE_DEG,Deg.DegCod,Deg.ShrtName,20,NULL,true); Log_DrawLogo (Sco_SCOPE_DEG,Deg.DegCod,Deg.ShrtName,20,NULL,true);
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName); Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
@ -220,9 +230,15 @@ void Cht_ShowListOfAvailableChatRooms (void)
/* Link to the room of this course */ /* Link to the room of this course */
IsLastItemInLevel[2] = (NumRow == NumRows - 1); IsLastItemInLevel[2] = (NumRow == NumRows - 1);
sprintf (ThisRoomCode,"CRS_%ld",Crs.CrsCod); snprintf (ThisRoomCode,sizeof (ThisRoomCode),
sprintf (ThisRoomShrtName,"%s",Crs.ShrtName); "CRS_%ld",
sprintf (ThisRoomFullName,"%s %s",Txt_Course,Crs.ShrtName); Crs.CrsCod);
snprintf (ThisRoomShrtName,sizeof (ThisRoomShrtName),
"%s",
Crs.ShrtName);
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),
"%s %s",
Txt_Course,Crs.ShrtName);
Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,ThisRoomFullName,2,IsLastItemInLevel); Cht_WriteLinkToChat1 (ThisRoomCode,ThisRoomShrtName,ThisRoomFullName,2,IsLastItemInLevel);
fprintf (Gbl.F.Out,"<img src=\"%s/dot64x64.png\"" fprintf (Gbl.F.Out,"<img src=\"%s/dot64x64.png\""
" alt=\"%s\" title=\"%s\"" " alt=\"%s\" title=\"%s\""
@ -448,7 +464,9 @@ void Cht_OpenChatWindow (void)
Usr_MAX_BYTES_FULL_NAME); Usr_MAX_BYTES_FULL_NAME);
/***** Build the lists of available rooms *****/ /***** Build the lists of available rooms *****/
sprintf (ListRoomCodes,"#%s",RoomCode); snprintf (ListRoomCodes,sizeof (ListRoomCodes),
"#%s",
RoomCode);
Str_Copy (ListRoomShrtNames,RoomShrtName, Str_Copy (ListRoomShrtNames,RoomShrtName,
Cht_MAX_BYTES_ROOM_SHRT_NAMES); Cht_MAX_BYTES_ROOM_SHRT_NAMES);
Str_Copy (ListRoomFullNames ,RoomFullName, Str_Copy (ListRoomFullNames ,RoomFullName,
@ -459,12 +477,15 @@ void Cht_OpenChatWindow (void)
Str_Concat (ListRoomCodes,"|#GBL_USR", Str_Concat (ListRoomCodes,"|#GBL_USR",
Cht_MAX_BYTES_ROOM_CODES); Cht_MAX_BYTES_ROOM_CODES);
sprintf (RoomShrtName,"|%s",Txt_SEX_PLURAL_Abc[Usr_SEX_ALL]); snprintf (RoomShrtName,sizeof (RoomShrtName),
"|%s",
Txt_SEX_PLURAL_Abc[Usr_SEX_ALL]);
Str_Concat (ListRoomShrtNames,RoomShrtName, Str_Concat (ListRoomShrtNames,RoomShrtName,
Cht_MAX_BYTES_ROOM_SHRT_NAMES); Cht_MAX_BYTES_ROOM_SHRT_NAMES);
sprintf (RoomFullName,"|%s (%s)", snprintf (RoomFullName,sizeof (RoomFullName),
Txt_General,Txt_SEX_PLURAL_abc[Usr_SEX_ALL]); "|%s (%s)",
Txt_General,Txt_SEX_PLURAL_abc[Usr_SEX_ALL]);
Str_Concat (ListRoomFullNames,RoomFullName, Str_Concat (ListRoomFullNames,RoomFullName,
Cht_MAX_BYTES_ROOM_FULL_NAMES); Cht_MAX_BYTES_ROOM_FULL_NAMES);
} }
@ -475,12 +496,15 @@ void Cht_OpenChatWindow (void)
Str_Concat (ListRoomCodes,"|#GBL_STD", Str_Concat (ListRoomCodes,"|#GBL_STD",
Cht_MAX_BYTES_ROOM_CODES); Cht_MAX_BYTES_ROOM_CODES);
sprintf (RoomShrtName,"|%s",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD]); snprintf (RoomShrtName,sizeof (RoomShrtName),
"|%s",
Txt_ROLES_PLURAL_BRIEF_Abc[Rol_STD]);
Str_Concat (ListRoomShrtNames,RoomShrtName, Str_Concat (ListRoomShrtNames,RoomShrtName,
Cht_MAX_BYTES_ROOM_SHRT_NAMES); Cht_MAX_BYTES_ROOM_SHRT_NAMES);
sprintf (RoomFullName,"|%s (%s)",Txt_General, snprintf (RoomFullName,sizeof (RoomFullName),
Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_ALL]); "|%s (%s)",
Txt_General,Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_ALL]);
Str_Concat (ListRoomFullNames,RoomFullName, Str_Concat (ListRoomFullNames,RoomFullName,
Cht_MAX_BYTES_ROOM_FULL_NAMES); Cht_MAX_BYTES_ROOM_FULL_NAMES);
} }
@ -492,12 +516,15 @@ void Cht_OpenChatWindow (void)
Str_Concat (ListRoomCodes,"|#GBL_TCH", Str_Concat (ListRoomCodes,"|#GBL_TCH",
Cht_MAX_BYTES_ROOM_CODES); Cht_MAX_BYTES_ROOM_CODES);
sprintf (RoomShrtName,"|%s",Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH]); snprintf (RoomShrtName,sizeof (RoomShrtName),
"|%s",
Txt_ROLES_PLURAL_BRIEF_Abc[Rol_TCH]);
Str_Concat (ListRoomShrtNames,RoomShrtName, Str_Concat (ListRoomShrtNames,RoomShrtName,
Cht_MAX_BYTES_ROOM_SHRT_NAMES); Cht_MAX_BYTES_ROOM_SHRT_NAMES);
sprintf (RoomFullName,"|%s (%s)", snprintf (RoomFullName,sizeof (RoomFullName),
Txt_General,Txt_ROLES_PLURAL_abc[Rol_TCH][Usr_SEX_ALL]); "|%s (%s)",
Txt_General,Txt_ROLES_PLURAL_abc[Rol_TCH][Usr_SEX_ALL]);
Str_Concat (ListRoomFullNames,RoomFullName, Str_Concat (ListRoomFullNames,RoomFullName,
Cht_MAX_BYTES_ROOM_FULL_NAMES); Cht_MAX_BYTES_ROOM_FULL_NAMES);
} }
@ -506,7 +533,9 @@ void Cht_OpenChatWindow (void)
NumMyDeg < Gbl.Usrs.Me.MyDegs.Num; NumMyDeg < Gbl.Usrs.Me.MyDegs.Num;
NumMyDeg++) NumMyDeg++)
{ {
sprintf (ThisRoomCode,"DEG_%ld",Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod); snprintf (ThisRoomCode,sizeof (ThisRoomCode),
"DEG_%ld",
Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod);
if (strcmp (RoomCode,ThisRoomCode)) if (strcmp (RoomCode,ThisRoomCode))
{ {
Str_Concat (ListRoomCodes,"|#", Str_Concat (ListRoomCodes,"|#",
@ -518,13 +547,17 @@ void Cht_OpenChatWindow (void)
Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod; Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod;
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg);
sprintf (ThisRoomShortName,"%s",Deg.ShrtName); snprintf (ThisRoomShortName,sizeof (ThisRoomShortName),
"%s",
Deg.ShrtName);
Str_Concat (ListRoomShrtNames,"|", Str_Concat (ListRoomShrtNames,"|",
Cht_MAX_BYTES_ROOM_SHRT_NAMES); Cht_MAX_BYTES_ROOM_SHRT_NAMES);
Str_Concat (ListRoomShrtNames,ThisRoomShortName, Str_Concat (ListRoomShrtNames,ThisRoomShortName,
Cht_MAX_BYTES_ROOM_SHRT_NAMES); Cht_MAX_BYTES_ROOM_SHRT_NAMES);
sprintf (ThisRoomFullName,"%s %s",Txt_Degree,Deg.ShrtName); snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),
"%s %s",
Txt_Degree,Deg.ShrtName);
Str_Concat (ListRoomFullNames,"|", Str_Concat (ListRoomFullNames,"|",
Cht_MAX_BYTES_ROOM_FULL_NAMES); Cht_MAX_BYTES_ROOM_FULL_NAMES);
Str_Concat (ListRoomFullNames,ThisRoomFullName, Str_Concat (ListRoomFullNames,ThisRoomFullName,
@ -536,7 +569,9 @@ void Cht_OpenChatWindow (void)
NumMyCrs < Gbl.Usrs.Me.MyCrss.Num; NumMyCrs < Gbl.Usrs.Me.MyCrss.Num;
NumMyCrs++) NumMyCrs++)
{ {
sprintf (ThisRoomCode,"CRS_%ld",Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod); snprintf (ThisRoomCode,sizeof (ThisRoomCode),
"CRS_%ld",
Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod);
if (strcmp (RoomCode,ThisRoomCode)) if (strcmp (RoomCode,ThisRoomCode))
{ {
Str_Concat (ListRoomCodes,"|#", Str_Concat (ListRoomCodes,"|#",
@ -548,13 +583,17 @@ void Cht_OpenChatWindow (void)
Crs.CrsCod = Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod; Crs.CrsCod = Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod;
Crs_GetDataOfCourseByCod (&Crs); Crs_GetDataOfCourseByCod (&Crs);
sprintf (ThisRoomShortName,"%s",Crs.ShrtName); snprintf (ThisRoomShortName,sizeof (ThisRoomShortName),
"%s",
Crs.ShrtName);
Str_Concat (ListRoomShrtNames,"|", Str_Concat (ListRoomShrtNames,"|",
Cht_MAX_BYTES_ROOM_SHRT_NAMES); Cht_MAX_BYTES_ROOM_SHRT_NAMES);
Str_Concat (ListRoomShrtNames,ThisRoomShortName, Str_Concat (ListRoomShrtNames,ThisRoomShortName,
Cht_MAX_BYTES_ROOM_SHRT_NAMES); Cht_MAX_BYTES_ROOM_SHRT_NAMES);
sprintf (ThisRoomFullName,"%s %s",Txt_Course,Crs.ShrtName); snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),
"%s %s",
Txt_Course,Crs.ShrtName);
Str_Concat (ListRoomFullNames,"|", Str_Concat (ListRoomFullNames,"|",
Cht_MAX_BYTES_ROOM_FULL_NAMES); Cht_MAX_BYTES_ROOM_FULL_NAMES);
Str_Concat (ListRoomFullNames,ThisRoomFullName, Str_Concat (ListRoomFullNames,ThisRoomFullName,

View File

@ -28,9 +28,9 @@
/** Uncomment one of the following installations of SWAD or create your own **/ /** Uncomment one of the following installations of SWAD or create your own **/
/*****************************************************************************/ /*****************************************************************************/
//#define LOCALHOST_UBUNTU // Comment this line if not applicable #define LOCALHOST_UBUNTU // Comment this line if not applicable
//#define OPENSWAD_ORG // Comment this line if not applicable //#define OPENSWAD_ORG // Comment this line if not applicable
#define SWAD_UGR_ES // Comment this line if not applicable //#define SWAD_UGR_ES // Comment this line if not applicable
//#define SWADBERRY_UGR_ES // Comment this line if not applicable //#define SWADBERRY_UGR_ES // Comment this line if not applicable
/*****************************************************************************/ /*****************************************************************************/

View File

@ -97,8 +97,10 @@ void Con_ShowConnectedUsrs (void)
/***** Start box *****/ /***** Start box *****/
/* Current time */ /* Current time */
sprintf (Gbl.Title,"%s<div id=\"connected_current_time\"></div>", snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Connected_users); "%s"
"<div id=\"connected_current_time\"></div>",
Txt_Connected_users);
Box_StartBox (NULL,Gbl.Title,Con_PutIconToUpdateConnected, Box_StartBox (NULL,Gbl.Title,Con_PutIconToUpdateConnected,
Hlp_USERS_Connected,Box_NOT_CLOSABLE); Hlp_USERS_Connected,Box_NOT_CLOSABLE);
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">" fprintf (Gbl.F.Out,"<script type=\"text/javascript\">"

View File

@ -52,17 +52,20 @@ int main (void)
char OldPathUsr[PATH_MAX + 1]; char OldPathUsr[PATH_MAX + 1];
char Command[1024 + PATH_MAX * 2]; char Command[1024 + PATH_MAX * 2];
sprintf (Command,"mv %s/%s %s/%s_backup", snprintf (Command,sizeof (Command),
PATH_SWAD_PRIVATE,FOLDER_USR, "mv %s/%s %s/%s_backup",
PATH_SWAD_PRIVATE,FOLDER_USR); PATH_SWAD_PRIVATE,FOLDER_USR,
PATH_SWAD_PRIVATE,FOLDER_USR);
ExecuteCommand (Command); ExecuteCommand (Command);
sprintf (Command,"mkdir %s/%s", snprintf (Command,sizeof (Command),
PATH_SWAD_PRIVATE,FOLDER_USR); "mkdir %s/%s",
PATH_SWAD_PRIVATE,FOLDER_USR);
ExecuteCommand (Command); ExecuteCommand (Command);
for (i=0; i<100; i++) for (i=0; i<100; i++)
{ {
sprintf (Command,"mkdir %s/%s/%02u", snprintf (Command,sizeof (Command),
PATH_SWAD_PRIVATE,FOLDER_USR,i); "mkdir %s/%s/%02u",
PATH_SWAD_PRIVATE,FOLDER_USR,i);
ExecuteCommand (Command); ExecuteCommand (Command);
} }
@ -98,13 +101,15 @@ int main (void)
{ {
Str_Copy (UsrID,row[1], Str_Copy (UsrID,row[1],
ID_MAX_BYTES_USR_ID); // UsrID ID_MAX_BYTES_USR_ID); // UsrID
sprintf (OldPathUsr,"%s/%s_backup/%c/%s", snprintf (OldPathUsr,sizeof (OldPathUsr),
PATH_SWAD_PRIVATE,FOLDER_USR,UsrID[strlen (UsrID)-1],UsrID); "%s/%s_backup/%c/%s",
PATH_SWAD_PRIVATE,FOLDER_USR,UsrID[strlen (UsrID)-1],UsrID);
if (CheckIfPathExists (OldPathUsr)) if (CheckIfPathExists (OldPathUsr))
{ {
sprintf (Command,"mv %s %s/%s/%02u/%ld", snprintf (Command,sizeof (Command),
OldPathUsr, "mv %s %s/%s/%02u/%ld",
PATH_SWAD_PRIVATE,FOLDER_USR,(unsigned) (UsrCod % 100),UsrCod); OldPathUsr,
PATH_SWAD_PRIVATE,FOLDER_USR,(unsigned) (UsrCod % 100),UsrCod);
ExecuteCommand (Command); ExecuteCommand (Command);
NumUsrs++; NumUsrs++;
} }
@ -112,9 +117,10 @@ int main (void)
} }
} }
mysql_free_result (mysql_res); mysql_free_result (mysql_res);
sprintf (Command,"chown -R %s:%s %s/%s", snprintf (Command,sizeof (Command),
WEB_USER,WEB_USER, "chown -R %s:%s %s/%s",
PATH_SWAD_PRIVATE,FOLDER_USR); WEB_USER,WEB_USER,
PATH_SWAD_PRIVATE,FOLDER_USR);
ExecuteCommand (Command); ExecuteCommand (Command);
printf ("# Rows : %u\n" printf ("# Rows : %u\n"

View File

@ -53,17 +53,20 @@ int main (void)
char OldPathPhoto[PATH_MAX + 1]; char OldPathPhoto[PATH_MAX + 1];
char Command[1024 + PATH_MAX * 2]; char Command[1024 + PATH_MAX * 2];
sprintf (Command,"mv %s/%s %s/%s_backup", snprintf (Command,sizeof (Command),
PATH_SWAD_PRIVATE,FOLDER_PHOTO, "mv %s/%s %s/%s_backup",
PATH_SWAD_PRIVATE,FOLDER_PHOTO); PATH_SWAD_PRIVATE,FOLDER_PHOTO,
PATH_SWAD_PRIVATE,FOLDER_PHOTO);
ExecuteCommand (Command); ExecuteCommand (Command);
sprintf (Command,"mkdir %s/%s", snprintf (Command,sizeof (Command),
PATH_SWAD_PRIVATE,FOLDER_PHOTO); "mkdir %s/%s",
PATH_SWAD_PRIVATE,FOLDER_PHOTO);
ExecuteCommand (Command); ExecuteCommand (Command);
for (i=0; i<100; i++) for (i=0; i<100; i++)
{ {
sprintf (Command,"mkdir %s/%s/%02u", snprintf (Command,sizeof (Command),
PATH_SWAD_PRIVATE,FOLDER_PHOTO,i); "mkdir %s/%s/%02u",
PATH_SWAD_PRIVATE,FOLDER_PHOTO,i);
ExecuteCommand (Command); ExecuteCommand (Command);
} }
@ -99,23 +102,27 @@ int main (void)
{ {
Str_Copy (UsrID,row[1], Str_Copy (UsrID,row[1],
ID_MAX_BYTES_USR_ID); // UsrID ID_MAX_BYTES_USR_ID); // UsrID
sprintf (OldPathPhoto,"%s/%s_backup/%s_original.jpg", snprintf (OldPathPhoto,sizeof (OldPathPhoto),
PATH_SWAD_PRIVATE,FOLDER_PHOTO,UsrID); "%s/%s_backup/%s_original.jpg",
PATH_SWAD_PRIVATE,FOLDER_PHOTO,UsrID);
if (CheckIfPathExists (OldPathPhoto)) if (CheckIfPathExists (OldPathPhoto))
{ {
sprintf (Command,"cp -a %s %s/%s/%02u/%ld_original.jpg", snprintf (Command,sizeof (Command),
OldPathPhoto, "cp -a %s %s/%s/%02u/%ld_original.jpg",
PATH_SWAD_PRIVATE,FOLDER_PHOTO,(unsigned) (UsrCod % 100),UsrCod); OldPathPhoto,
PATH_SWAD_PRIVATE,FOLDER_PHOTO,(unsigned) (UsrCod % 100),UsrCod);
ExecuteCommand (Command); ExecuteCommand (Command);
} }
sprintf (OldPathPhoto,"%s/%s_backup/%s.jpg", snprintf (OldPathPhoto,sizeof (OldPathPhoto),
PATH_SWAD_PRIVATE,FOLDER_PHOTO,UsrID); "%s/%s_backup/%s.jpg",
PATH_SWAD_PRIVATE,FOLDER_PHOTO,UsrID);
if (CheckIfPathExists (OldPathPhoto)) if (CheckIfPathExists (OldPathPhoto))
{ {
sprintf (Command,"cp -a %s %s/%s/%02u/%ld.jpg", snprintf (Command,sizeof (Command),
OldPathPhoto, "cp -a %s %s/%s/%02u/%ld.jpg",
PATH_SWAD_PRIVATE,FOLDER_PHOTO,(unsigned) (UsrCod % 100),UsrCod); OldPathPhoto,
PATH_SWAD_PRIVATE,FOLDER_PHOTO,(unsigned) (UsrCod % 100),UsrCod);
ExecuteCommand (Command); ExecuteCommand (Command);
NumPhotos++; NumPhotos++;
} }
@ -123,13 +130,15 @@ int main (void)
} }
} }
mysql_free_result (mysql_res); mysql_free_result (mysql_res);
sprintf (Command,"chown -R %s:%s %s/%s", snprintf (Command,sizeof (Command),
WEB_USER,WEB_USER, "chown -R %s:%s %s/%s",
PATH_SWAD_PRIVATE,FOLDER_PHOTO); WEB_USER,WEB_USER,
PATH_SWAD_PRIVATE,FOLDER_PHOTO);
ExecuteCommand (Command); ExecuteCommand (Command);
sprintf (Command,"rm -f %s/%s/*.jpg", snprintf (Command,sizeof (Command),
PATH_SWAD_PUBLIC,FOLDER_PHOTO); "rm -f %s/%s/*.jpg",
PATH_SWAD_PUBLIC,FOLDER_PHOTO);
ExecuteCommand (Command); ExecuteCommand (Command);
printf ("# Rows : %u\n" printf ("# Rows : %u\n"

View File

@ -82,21 +82,28 @@ int main (void)
} }
if ((NumCrss = (unsigned) mysql_num_rows (mysql_res_crs))) if ((NumCrss = (unsigned) mysql_num_rows (mysql_res_crs)))
{ {
for (NumCrs=0; NumCrs<NumCrss; NumCrs++) for (NumCrs = 0;
NumCrs < NumCrss;
NumCrs++)
{ {
row = mysql_fetch_row (mysql_res_crs); row = mysql_fetch_row (mysql_res_crs);
if (row[0]) if (row[0])
if (row[0][0]) if (row[0][0])
if (sscanf (row[0],"%ld",&CrsCod) == 1) // CrsCod if (sscanf (row[0],"%ld",&CrsCod) == 1) // CrsCod
{ {
sprintf (OldPathUsrs,"%s/%s/%ld/%s", snprintf (OldPathUsrs,sizeof (OldPathUsrs),
PATH_SWAD_PRIVATE,FOLDER_CRS,CrsCod,FOLDER_USR); "%s/%s/%ld/%s",
PATH_SWAD_PRIVATE,FOLDER_CRS,CrsCod,FOLDER_USR);
if (CheckIfPathExists (OldPathUsrs)) if (CheckIfPathExists (OldPathUsrs))
{ {
sprintf (Command,"mv %s %s_backup",OldPathUsrs,OldPathUsrs); snprintf (Command,sizeof (Command),
"mv %s %s_backup",
OldPathUsrs,OldPathUsrs);
ExecuteCommand (Command); ExecuteCommand (Command);
sprintf (Command,"mkdir %s",OldPathUsrs); snprintf (Command,sizeof (Command),
"mkdir %s",
OldPathUsrs);
ExecuteCommand (Command); ExecuteCommand (Command);
sprintf (Query,"SELECT usr_IDs.UsrCod,usr_IDs.UsrID" sprintf (Query,"SELECT usr_IDs.UsrCod,usr_IDs.UsrID"
@ -128,27 +135,38 @@ int main (void)
{ {
Str_Copy (UsrID,row[1], Str_Copy (UsrID,row[1],
ID_MAX_BYTES_USR_ID,62); // UsrID ID_MAX_BYTES_USR_ID,62); // UsrID
sprintf (OldPathUsr,"%s_backup/%s",OldPathUsrs,UsrID); snprintf (OldPathUsr,sizeof (OldPathUsr),
"%s_backup/%s",
OldPathUsrs,UsrID);
if (CheckIfPathExists (OldPathUsr)) if (CheckIfPathExists (OldPathUsr))
{ {
sprintf (Path02u,"%s/%02u", snprintf (Path02u,sizeof (Path02u),
OldPathUsrs,(unsigned) (UsrCod % 100)); "%s/%02u",
OldPathUsrs,(unsigned) (UsrCod % 100));
if (!CheckIfPathExists (Path02u)) if (!CheckIfPathExists (Path02u))
{ {
sprintf (Command,"mkdir %s",Path02u); snprintf (Command,sizeof (Command),
"mkdir %s",
Path02u);
ExecuteCommand (Command); ExecuteCommand (Command);
} }
sprintf (Command,"mv %s %s/%ld",OldPathUsr,Path02u,UsrCod); snprintf (Command,sizeof (Command),
"mv %s %s/%ld",
OldPathUsr,Path02u,UsrCod);
ExecuteCommand (Command); ExecuteCommand (Command);
} }
} }
} }
mysql_free_result (mysql_res_usr); mysql_free_result (mysql_res_usr);
} }
sprintf (Command,"chown -R %s:%s %s",WEB_USER,WEB_USER,OldPathUsrs); snprintf (Command,sizeof (Command),
"chown -R %s:%s %s",
WEB_USER,WEB_USER,OldPathUsrs);
ExecuteCommand (Command); ExecuteCommand (Command);
/* /*
sprintf (Command,"rm -Rf %s_backup",OldPathUsrs); snprintf (Command,sizeof (Command),
"rm -Rf %s_backup",
OldPathUsrs);
ExecuteCommand (Command); ExecuteCommand (Command);
*/ */
printf ("\n"); printf ("\n");

View File

@ -385,8 +385,9 @@ static void Cty_Configuration (bool PrintView)
/* Form to go to see institutions of this country */ /* Form to go to see institutions of this country */
Act_StartFormGoTo (ActSeeIns); Act_StartFormGoTo (ActSeeIns);
Cty_PutParamCtyCod (Gbl.CurrentCty.Cty.CtyCod); Cty_PutParamCtyCod (Gbl.CurrentCty.Cty.CtyCod);
sprintf (Gbl.Title,Txt_Institutions_of_COUNTRY_X, snprintf (Gbl.Title,sizeof (Gbl.Title),
Gbl.CurrentCty.Cty.Name[Gbl.Prefs.Language]); Txt_Institutions_of_COUNTRY_X,
Gbl.CurrentCty.Cty.Name[Gbl.Prefs.Language]);
Act_LinkFormSubmit (Gbl.Title,"DAT",NULL); Act_LinkFormSubmit (Gbl.Title,"DAT",NULL);
fprintf (Gbl.F.Out,"%u</a>", fprintf (Gbl.F.Out,"%u</a>",
Ins_GetNumInssInCty (Gbl.CurrentCty.Cty.CtyCod)); Ins_GetNumInssInCty (Gbl.CurrentCty.Cty.CtyCod));
@ -803,7 +804,9 @@ void Cty_DrawCountryMapAndNameWithLink (struct Country *Cty,Act_Action_t Action,
fprintf (Gbl.F.Out,"<div class=\"%s\">",ClassContainer); fprintf (Gbl.F.Out,"<div class=\"%s\">",ClassContainer);
/***** Link to action *****/ /***** Link to action *****/
sprintf (Gbl.Title,Txt_Go_to_X,Cty->Name[Gbl.Prefs.Language]); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Go_to_X,
Cty->Name[Gbl.Prefs.Language]);
Act_LinkFormSubmit (Gbl.Title,ClassLink,NULL); Act_LinkFormSubmit (Gbl.Title,ClassLink,NULL);
/***** Draw country map *****/ /***** Draw country map *****/
@ -852,12 +855,13 @@ bool Cty_CheckIfCountryMapExists (struct Country *Cty)
{ {
char PathMap[PATH_MAX + 1]; char PathMap[PATH_MAX + 1];
sprintf (PathMap,"%s/%s/%s/%s/%s.png", snprintf (PathMap,sizeof (PathMap),
Cfg_PATH_SWAD_PUBLIC, "%s/%s/%s/%s/%s.png",
Cfg_FOLDER_PUBLIC_ICON, Cfg_PATH_SWAD_PUBLIC,
Cfg_ICON_FOLDER_COUNTRIES, Cfg_FOLDER_PUBLIC_ICON,
Cty->Alpha2, Cfg_ICON_FOLDER_COUNTRIES,
Cty->Alpha2); Cty->Alpha2,
Cty->Alpha2);
return Fil_CheckIfPathExists (PathMap); return Fil_CheckIfPathExists (PathMap);
} }
@ -1015,21 +1019,25 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
Lan <= Txt_NUM_LANGUAGES; Lan <= Txt_NUM_LANGUAGES;
Lan++) Lan++)
{ {
sprintf (StrField,"countries.Name_%s,", snprintf (StrField,sizeof (StrField),
Txt_STR_LANG_ID[Lan]); "countries.Name_%s,",
Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryNam1,StrField, Str_Concat (SubQueryNam1,StrField,
Cty_MAX_BYTES_SUBQUERY_CTYS); Cty_MAX_BYTES_SUBQUERY_CTYS);
sprintf (StrField,"Name_%s,", snprintf (StrField,sizeof (StrField),
Txt_STR_LANG_ID[Lan]); "Name_%s,",
Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryNam2,StrField, Str_Concat (SubQueryNam2,StrField,
Cty_MAX_BYTES_SUBQUERY_CTYS); Cty_MAX_BYTES_SUBQUERY_CTYS);
sprintf (StrField,"countries.WWW_%s,", snprintf (StrField,sizeof (StrField),
Txt_STR_LANG_ID[Lan]); "countries.WWW_%s,",
Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryWWW1,StrField, Str_Concat (SubQueryWWW1,StrField,
Cty_MAX_BYTES_SUBQUERY_CTYS); Cty_MAX_BYTES_SUBQUERY_CTYS);
sprintf (StrField,"WWW_%s,", snprintf (StrField,sizeof (StrField),
Txt_STR_LANG_ID[Lan]); "WWW_%s,",
Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryWWW2,StrField, Str_Concat (SubQueryWWW2,StrField,
Cty_MAX_BYTES_SUBQUERY_CTYS); Cty_MAX_BYTES_SUBQUERY_CTYS);
} }
@ -1311,17 +1319,25 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD
Lan <= Txt_NUM_LANGUAGES; Lan <= Txt_NUM_LANGUAGES;
Lan++) Lan++)
{ {
sprintf (StrField,"countries.Name_%s,",Txt_STR_LANG_ID[Lan]); snprintf (StrField,sizeof (StrField),
"countries.Name_%s,",
Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryNam1,StrField, Str_Concat (SubQueryNam1,StrField,
Cty_MAX_BYTES_SUBQUERY_CTYS); Cty_MAX_BYTES_SUBQUERY_CTYS);
sprintf (StrField,"Name_%s,",Txt_STR_LANG_ID[Lan]); snprintf (StrField,sizeof (StrField),
"Name_%s,",
Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryNam2,StrField, Str_Concat (SubQueryNam2,StrField,
Cty_MAX_BYTES_SUBQUERY_CTYS); Cty_MAX_BYTES_SUBQUERY_CTYS);
sprintf (StrField,"countries.WWW_%s,",Txt_STR_LANG_ID[Lan]); snprintf (StrField,sizeof (StrField),
"countries.WWW_%s,",
Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryWWW1,StrField, Str_Concat (SubQueryWWW1,StrField,
Cty_MAX_BYTES_SUBQUERY_CTYS); Cty_MAX_BYTES_SUBQUERY_CTYS);
sprintf (StrField,"WWW_%s,",Txt_STR_LANG_ID[Lan]); snprintf (StrField,sizeof (StrField),
"WWW_%s,",
Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryWWW2,StrField, Str_Concat (SubQueryWWW2,StrField,
Cty_MAX_BYTES_SUBQUERY_CTYS); Cty_MAX_BYTES_SUBQUERY_CTYS);
} }
@ -1773,7 +1789,9 @@ void Cty_RenameCountry (void)
else else
{ {
/* Update the table changing old name by new name */ /* Update the table changing old name by new name */
sprintf (FieldName,"Name_%s",Txt_STR_LANG_ID[Language]); snprintf (FieldName,sizeof (FieldName),
"Name_%s",
Txt_STR_LANG_ID[Language]);
Cty_UpdateCtyNameDB (Cty->CtyCod,FieldName,NewCtyName); Cty_UpdateCtyNameDB (Cty->CtyCod,FieldName,NewCtyName);
/* Write message to show the change made */ /* Write message to show the change made */
@ -2149,7 +2167,9 @@ void Cty_RecFormNewCountry (void)
Lan <= Txt_NUM_LANGUAGES; Lan <= Txt_NUM_LANGUAGES;
Lan++) Lan++)
{ {
sprintf (ParamName,"Name_%s",Txt_STR_LANG_ID[Lan]); snprintf (ParamName,sizeof (ParamName),
"Name_%s",
Txt_STR_LANG_ID[Lan]);
Par_GetParToText (ParamName,Cty->Name[Lan],Cty_MAX_BYTES_NAME); Par_GetParToText (ParamName,Cty->Name[Lan],Cty_MAX_BYTES_NAME);
if (Cty->Name[Lan][0]) // If there's a country name if (Cty->Name[Lan][0]) // If there's a country name
@ -2172,7 +2192,9 @@ void Cty_RecFormNewCountry (void)
break; break;
} }
sprintf (ParamName,"WWW_%s",Txt_STR_LANG_ID[Lan]); snprintf (ParamName,sizeof (ParamName),
"WWW_%s",
Txt_STR_LANG_ID[Lan]);
Par_GetParToText (ParamName,Cty->WWW[Lan],Cns_MAX_BYTES_WWW); Par_GetParToText (ParamName,Cty->WWW[Lan],Cns_MAX_BYTES_WWW);
} }
} }
@ -2218,7 +2240,9 @@ static void Cty_CreateCountry (struct Country *Cty)
Lan <= Txt_NUM_LANGUAGES; Lan <= Txt_NUM_LANGUAGES;
Lan++) Lan++)
{ {
sprintf (StrField,",Name_%s",Txt_STR_LANG_ID[Lan]); snprintf (StrField,sizeof (StrField),
",Name_%s",
Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryNam1,StrField, Str_Concat (SubQueryNam1,StrField,
Cty_MAX_BYTES_SUBQUERY_CTYS); Cty_MAX_BYTES_SUBQUERY_CTYS);
@ -2229,7 +2253,9 @@ static void Cty_CreateCountry (struct Country *Cty)
Str_Concat (SubQueryNam2,"'", Str_Concat (SubQueryNam2,"'",
Cty_MAX_BYTES_SUBQUERY_CTYS_NAME); Cty_MAX_BYTES_SUBQUERY_CTYS_NAME);
sprintf (StrField,",WWW_%s",Txt_STR_LANG_ID[Lan]); snprintf (StrField,sizeof (StrField),
",WWW_%s",
Txt_STR_LANG_ID[Lan]);
Str_Concat (SubQueryWWW1,StrField, Str_Concat (SubQueryWWW1,StrField,
Cty_MAX_BYTES_SUBQUERY_CTYS); Cty_MAX_BYTES_SUBQUERY_CTYS);
@ -2379,9 +2405,10 @@ unsigned Cty_ListCtysFound (const char *Query)
{ {
/***** Start box and table *****/ /***** Start box and table *****/
/* Number of countries found */ /* Number of countries found */
sprintf (Gbl.Title,"%u %s", snprintf (Gbl.Title,sizeof (Gbl.Title),
NumCtys,NumCtys == 1 ? Txt_country : "%u %s",
Txt_countries); NumCtys,NumCtys == 1 ? Txt_country :
Txt_countries);
Box_StartBoxTable (NULL,Gbl.Title,NULL, Box_StartBoxTable (NULL,Gbl.Title,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);

View File

@ -448,8 +448,10 @@ static void Crs_Configuration (bool PrintView)
The_ClassForm[Gbl.Prefs.Theme], The_ClassForm[Gbl.Prefs.Theme],
Txt_Indicators); Txt_Indicators);
Act_StartForm (ActReqStaCrs); Act_StartForm (ActReqStaCrs);
sprintf (Gbl.Title,"%u %s %u", snprintf (Gbl.Title,sizeof (Gbl.Title),
Indicators.NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS); "%u %s %u",
Indicators.NumIndicators,
Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS);
Act_LinkFormSubmit (Gbl.Title,"DAT",NULL); Act_LinkFormSubmit (Gbl.Title,"DAT",NULL);
fprintf (Gbl.F.Out,"%s " fprintf (Gbl.F.Out,"%s "
"<img src=\"%s/%s\" alt=\"%s\"" "<img src=\"%s/%s\" alt=\"%s\""
@ -544,7 +546,9 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
char ClassHighlight[64]; char ClassHighlight[64];
ClassNormal = The_ClassForm[Gbl.Prefs.Theme]; ClassNormal = The_ClassForm[Gbl.Prefs.Theme];
sprintf (ClassHighlight,"%s LIGHT_BLUE",The_ClassFormDark[Gbl.Prefs.Theme]); snprintf (ClassHighlight,sizeof (ClassHighlight),
"%s LIGHT_BLUE",
The_ClassFormDark[Gbl.Prefs.Theme]);
/***** Start box *****/ /***** Start box *****/
Box_StartBox (NULL,Txt_My_courses,Crs_PutIconToSearchCourses, Box_StartBox (NULL,Txt_My_courses,Crs_PutIconToSearchCourses,
@ -734,7 +738,9 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
Lay_IndentDependingOnLevel (5,IsLastItemInLevel); Lay_IndentDependingOnLevel (5,IsLastItemInLevel);
Act_StartForm (ActMyCrs); Act_StartForm (ActMyCrs);
Crs_PutParamCrsCod (Crs.CrsCod); Crs_PutParamCrsCod (Crs.CrsCod);
sprintf (Gbl.Title,Txt_Go_to_X,Crs.ShrtName); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Go_to_X,
Crs.ShrtName);
Act_LinkFormSubmit (Gbl.Title, Act_LinkFormSubmit (Gbl.Title,
Highlight ? ClassHighlight : Highlight ? ClassHighlight :
ClassNormal,NULL); ClassNormal,NULL);
@ -1135,7 +1141,9 @@ static void Crs_ListCourses (void)
unsigned Year; unsigned Year;
/***** Start box *****/ /***** Start box *****/
sprintf (Gbl.Title,Txt_Courses_of_DEGREE_X,Gbl.CurrentDeg.Deg.ShrtName); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Courses_of_DEGREE_X,
Gbl.CurrentDeg.Deg.ShrtName);
Box_StartBox (NULL,Gbl.Title,Crs_PutIconsListCourses, Box_StartBox (NULL,Gbl.Title,Crs_PutIconsListCourses,
Hlp_DEGREE_Courses,Box_NOT_CLOSABLE); Hlp_DEGREE_Courses,Box_NOT_CLOSABLE);
@ -1284,7 +1292,9 @@ static bool Crs_ListCoursesOfAYearForSeeing (unsigned Year)
TxtClassStrong,BgColor); TxtClassStrong,BgColor);
Act_StartFormGoTo (ActSeeCrsInf); Act_StartFormGoTo (ActSeeCrsInf);
Crs_PutParamCrsCod (Crs->CrsCod); Crs_PutParamCrsCod (Crs->CrsCod);
sprintf (Gbl.Title,Txt_Go_to_X,Crs->FullName); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Go_to_X,
Crs->FullName);
Act_LinkFormSubmit (Gbl.Title,TxtClassStrong,NULL); Act_LinkFormSubmit (Gbl.Title,TxtClassStrong,NULL);
fprintf (Gbl.F.Out,"%s</a>", fprintf (Gbl.F.Out,"%s</a>",
Crs->FullName); Crs->FullName);
@ -2274,11 +2284,13 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
DB_QueryDELETE (Query,"can not remove users from a course"); DB_QueryDELETE (Query,"can not remove users from a course");
/***** Remove directories of the course *****/ /***** Remove directories of the course *****/
sprintf (PathRelCrs,"%s/%s/%ld", snprintf (PathRelCrs,sizeof (PathRelCrs),
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod); "%s/%s/%ld",
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod);
Fil_RemoveTree (PathRelCrs); Fil_RemoveTree (PathRelCrs);
sprintf (PathRelCrs,"%s/%s/%ld", snprintf (PathRelCrs,sizeof (PathRelCrs),
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CRS,CrsCod); "%s/%s/%ld",
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CRS,CrsCod);
Fil_RemoveTree (PathRelCrs); Fil_RemoveTree (PathRelCrs);
} }
} }
@ -2881,7 +2893,9 @@ static void Crs_PutButtonToGoToCrs (void)
{ {
Act_StartForm (ActSeeCrsInf); Act_StartForm (ActSeeCrsInf);
Crs_PutParamCrsCod (Gbl.Degs.EditingCrs.CrsCod); Crs_PutParamCrsCod (Gbl.Degs.EditingCrs.CrsCod);
sprintf (Gbl.Title,Txt_Go_to_X,Gbl.Degs.EditingCrs.ShrtName); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Go_to_X,
Gbl.Degs.EditingCrs.ShrtName);
Btn_PutConfirmButton (Gbl.Title); Btn_PutConfirmButton (Gbl.Title);
Act_EndForm (); Act_EndForm ();
} }
@ -2901,7 +2915,9 @@ static void Crs_PutButtonToRegisterInCrs (void)
// If the course beeing edited is different to the current one... // If the course beeing edited is different to the current one...
if (Gbl.Degs.EditingCrs.CrsCod != Gbl.CurrentCrs.Crs.CrsCod) if (Gbl.Degs.EditingCrs.CrsCod != Gbl.CurrentCrs.Crs.CrsCod)
Crs_PutParamCrsCod (Gbl.Degs.EditingCrs.CrsCod); Crs_PutParamCrsCod (Gbl.Degs.EditingCrs.CrsCod);
sprintf (Gbl.Title,Txt_Register_me_in_X,Gbl.Degs.EditingCrs.ShrtName); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Register_me_in_X,
Gbl.Degs.EditingCrs.ShrtName);
Btn_PutCreateButton (Gbl.Title); Btn_PutCreateButton (Gbl.Title);
Act_EndForm (); Act_EndForm ();
} }
@ -3075,9 +3091,10 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);
/* Heading row */ /* Heading row */
sprintf (Gbl.Title,Txt_USER_in_COURSE, snprintf (Gbl.Title,sizeof (Gbl.Title),
Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role Txt_USER_in_COURSE,
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]); Role == Rol_UNK ? Txt_User[Usr_SEX_UNKNOWN] : // Role == Rol_UNK ==> any role
Txt_ROLES_SINGUL_Abc[Role][UsrDat->Sex]);
fprintf (Gbl.F.Out,"<tr>" fprintf (Gbl.F.Out,"<tr>"
"<th colspan=\"7\" class=\"LEFT_MIDDLE\">%s:</th>" "<th colspan=\"7\" class=\"LEFT_MIDDLE\">%s:</th>"
"</tr>" "</tr>"
@ -3153,9 +3170,10 @@ unsigned Crs_ListCrssFound (const char *Query)
{ {
/***** Start box and table *****/ /***** Start box and table *****/
/* Number of courses found */ /* Number of courses found */
sprintf (Gbl.Title,"%u %s", snprintf (Gbl.Title,sizeof (Gbl.Title),
NumCrss,(NumCrss == 1) ? Txt_course : "%u %s",
Txt_courses); NumCrss,(NumCrss == 1) ? Txt_course :
Txt_courses);
Box_StartBoxTable (NULL,Gbl.Title,NULL, Box_StartBoxTable (NULL,Gbl.Title,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);
@ -3298,7 +3316,9 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
StyleNoBR,BgColor); StyleNoBR,BgColor);
Act_StartFormGoTo (ActSeeDegInf); Act_StartFormGoTo (ActSeeDegInf);
Deg_PutParamDegCod (Deg.DegCod); Deg_PutParamDegCod (Deg.DegCod);
sprintf (Gbl.Title,Txt_Go_to_X,row[2]); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Go_to_X,
row[2]);
Act_LinkFormSubmit (Gbl.Title,StyleNoBR,NULL); Act_LinkFormSubmit (Gbl.Title,StyleNoBR,NULL);
Log_DrawLogo (Sco_SCOPE_DEG,Deg.DegCod,Deg.ShrtName,20,"CENTER_TOP",true); Log_DrawLogo (Sco_SCOPE_DEG,Deg.DegCod,Deg.ShrtName,20,"CENTER_TOP",true);
fprintf (Gbl.F.Out," %s (%s)" fprintf (Gbl.F.Out," %s (%s)"
@ -3318,7 +3338,9 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
Style,BgColor); Style,BgColor);
Act_StartFormGoTo (ActSeeCrsInf); Act_StartFormGoTo (ActSeeCrsInf);
Crs_PutParamCrsCod (CrsCod); Crs_PutParamCrsCod (CrsCod);
sprintf (Gbl.Title,Txt_Go_to_X,row[6]); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Go_to_X,
row[6]);
Act_LinkFormSubmit (Gbl.Title,Style,NULL); Act_LinkFormSubmit (Gbl.Title,Style,NULL);
fprintf (Gbl.F.Out,"%s</a>",row[5]); fprintf (Gbl.F.Out,"%s</a>",row[5]);
Act_EndForm (); Act_EndForm ();

View File

@ -149,7 +149,8 @@ void Cry_CreateUniqueNameEncrypted (char UniqueNameEncrypted[Cry_BYTES_ENCRYPTED
char UniqueNamePlain[Cns_MAX_BYTES_IP + 1 + 10 + 1 + 10 + 1 + 10 + 1]; char UniqueNamePlain[Cns_MAX_BYTES_IP + 1 + 10 + 1 + 10 + 1 + 10 + 1];
NumCall++; NumCall++;
sprintf (UniqueNamePlain,"%s-%lx-%x-%x", snprintf (UniqueNamePlain,sizeof (UniqueNamePlain),
Gbl.IP,Gbl.StartExecutionTimeUTC,Gbl.PID,NumCall); "%s-%lx-%x-%x",
Gbl.IP,Gbl.StartExecutionTimeUTC,Gbl.PID,NumCall);
Cry_EncryptSHA256Base64 (UniqueNamePlain,UniqueNameEncrypted); // Make difficult to guess a unique name Cry_EncryptSHA256Base64 (UniqueNamePlain,UniqueNameEncrypted); // Make difficult to guess a unique name
} }

View File

@ -3195,9 +3195,10 @@ void DB_FreeMySQLResult (MYSQL_RES **mysql_res)
void DB_ExitOnMySQLError (const char *Message) void DB_ExitOnMySQLError (const char *Message)
{ {
char BigErrorMsg[1024 * 1024]; char BigErrorMsg[64 * 1024];
sprintf (BigErrorMsg,"Database error: %s (%s).", snprintf (BigErrorMsg,sizeof (BigErrorMsg),
Message,mysql_error (&Gbl.mysql)); "Database error: %s (%s).",
Message,mysql_error (&Gbl.mysql));
Lay_ShowErrorAndExit (BigErrorMsg); Lay_ShowErrorAndExit (BigErrorMsg);
} }

View File

@ -251,13 +251,15 @@ void Dat_GetAndConvertCurrentDateTime (void)
Gbl.Now.Time.Second = tm_ptr->tm_sec; Gbl.Now.Time.Second = tm_ptr->tm_sec;
/***** Initialize current date in format YYYYMMDD *****/ /***** Initialize current date in format YYYYMMDD *****/
sprintf (Gbl.Now.Date.YYYYMMDD,"%04u%02u%02u", snprintf (Gbl.Now.Date.YYYYMMDD,sizeof (Gbl.Now.Date.YYYYMMDD),
Gbl.Now.Date.Year,Gbl.Now.Date.Month,Gbl.Now.Date.Day); "%04u%02u%02u",
Gbl.Now.Date.Year,Gbl.Now.Date.Month,Gbl.Now.Date.Day);
/***** Initialize current time in format YYYYMMDDHHMMSS *****/ /***** Initialize current time in format YYYYMMDDHHMMSS *****/
sprintf (Gbl.Now.YYYYMMDDHHMMSS,"%04u%02u%02u%02u%02u%02u", snprintf (Gbl.Now.YYYYMMDDHHMMSS,sizeof (Gbl.Now.YYYYMMDDHHMMSS),
Gbl.Now.Date.Year,Gbl.Now.Date.Month,Gbl.Now.Date.Day, "%04u%02u%02u%02u%02u%02u",
Gbl.Now.Time.Hour,Gbl.Now.Time.Minute,Gbl.Now.Time.Second); Gbl.Now.Date.Year,Gbl.Now.Date.Month,Gbl.Now.Date.Day,
Gbl.Now.Time.Hour,Gbl.Now.Time.Minute,Gbl.Now.Time.Second);
/***** Compute what day was yesterday *****/ /***** Compute what day was yesterday *****/
Dat_GetDateBefore (&Gbl.Now.Date,&Gbl.Yesterday); Dat_GetDateBefore (&Gbl.Now.Date,&Gbl.Yesterday);
@ -393,22 +395,25 @@ void Dat_ConvDateToDateStr (struct Date *Date,char StrDate[Cns_MAX_BYTES_DATE +
switch (Gbl.Prefs.DateFormat) switch (Gbl.Prefs.DateFormat)
{ {
case Dat_FORMAT_YYYY_MM_DD: case Dat_FORMAT_YYYY_MM_DD:
sprintf (StrDate,"%04u-%02u-%02u", snprintf (StrDate,Cns_MAX_BYTES_DATE,
Date->Year, "%04u-%02u-%02u",
Date->Month, Date->Year,
Date->Day); Date->Month,
Date->Day);
break; break;
case Dat_FORMAT_DD_MONTH_YYYY: case Dat_FORMAT_DD_MONTH_YYYY:
sprintf (StrDate,"%u&nbsp;%s&nbsp;%04u", snprintf (StrDate,Cns_MAX_BYTES_DATE,
Date->Day, "%u&nbsp;%s&nbsp;%04u",
Txt_MONTHS_SMALL_SHORT[Date->Month - 1], Date->Day,
Date->Year); Txt_MONTHS_SMALL_SHORT[Date->Month - 1],
Date->Year);
break; break;
case Dat_FORMAT_MONTH_DD_YYYY: case Dat_FORMAT_MONTH_DD_YYYY:
sprintf (StrDate,"%s&nbsp;%u,&nbsp;%04u", snprintf (StrDate,Cns_MAX_BYTES_DATE,
Txt_MONTHS_SMALL_SHORT[Date->Month - 1], "%s&nbsp;%u,&nbsp;%04u",
Date->Day, Txt_MONTHS_SMALL_SHORT[Date->Month - 1],
Date->Year); Date->Day,
Date->Year);
break; break;
} }
} }
@ -776,13 +781,15 @@ void Dat_GetBrowserTimeZone (char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1])
/* Convert from minutes to +-hh:mm */ /* Convert from minutes to +-hh:mm */
// BrowserTimeZone must have space for strings in +hh:mm format (6 chars + \0) // BrowserTimeZone must have space for strings in +hh:mm format (6 chars + \0)
if (ClientUTCMinusLocal > 0) if (ClientUTCMinusLocal > 0)
sprintf (BrowserTimeZone,"-%02u:%02u", snprintf (BrowserTimeZone,Dat_MAX_BYTES_TIME_ZONE,
(unsigned) ClientUTCMinusLocal / 60, "-%02u:%02u",
(unsigned) ClientUTCMinusLocal % 60); (unsigned) ClientUTCMinusLocal / 60,
(unsigned) ClientUTCMinusLocal % 60);
else // ClientUTCMinusLocal <= 0 else // ClientUTCMinusLocal <= 0
sprintf (BrowserTimeZone,"+%02u:%02u", snprintf (BrowserTimeZone,Dat_MAX_BYTES_TIME_ZONE,
(unsigned) (-ClientUTCMinusLocal) / 60, "+%02u:%02u",
(unsigned) (-ClientUTCMinusLocal) % 60); (unsigned) (-ClientUTCMinusLocal) / 60,
(unsigned) (-ClientUTCMinusLocal) % 60);
} }
} }

View File

@ -243,7 +243,9 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Degree *Deg,Act_Action_t Action,
Deg_PutParamDegCod (Deg->DegCod); Deg_PutParamDegCod (Deg->DegCod);
/***** Link to action *****/ /***** Link to action *****/
sprintf (Gbl.Title,Txt_Go_to_X,Deg->FullName); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Go_to_X,
Deg->FullName);
Act_LinkFormSubmit (Gbl.Title,ClassLink,NULL); Act_LinkFormSubmit (Gbl.Title,ClassLink,NULL);
/***** Draw degree logo *****/ /***** Draw degree logo *****/
@ -510,8 +512,9 @@ static void Deg_Configuration (bool PrintView)
/* Form to go to see courses of this degree */ /* Form to go to see courses of this degree */
Act_StartFormGoTo (ActSeeCrs); Act_StartFormGoTo (ActSeeCrs);
Deg_PutParamDegCod (Gbl.CurrentDeg.Deg.DegCod); Deg_PutParamDegCod (Gbl.CurrentDeg.Deg.DegCod);
sprintf (Gbl.Title,Txt_Courses_of_DEGREE_X, snprintf (Gbl.Title,sizeof (Gbl.Title),
Gbl.CurrentDeg.Deg.ShrtName); Txt_Courses_of_DEGREE_X,
Gbl.CurrentDeg.Deg.ShrtName);
Act_LinkFormSubmit (Gbl.Title,"DAT",NULL); Act_LinkFormSubmit (Gbl.Title,"DAT",NULL);
fprintf (Gbl.F.Out,"%u</a>", fprintf (Gbl.F.Out,"%u</a>",
Crs_GetNumCrssInDeg (Gbl.CurrentDeg.Deg.DegCod)); Crs_GetNumCrssInDeg (Gbl.CurrentDeg.Deg.DegCod));
@ -1173,7 +1176,9 @@ static void Deg_ListDegrees (void)
unsigned NumDeg; unsigned NumDeg;
/***** Start box *****/ /***** Start box *****/
sprintf (Gbl.Title,Txt_Degrees_of_CENTRE_X,Gbl.CurrentCtr.Ctr.ShrtName); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Degrees_of_CENTRE_X,
Gbl.CurrentCtr.Ctr.ShrtName);
Box_StartBox (NULL,Gbl.Title,Deg_PutIconsListDegrees, Box_StartBox (NULL,Gbl.Title,Deg_PutIconsListDegrees,
Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE); Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE);
@ -1351,8 +1356,9 @@ void Deg_EditDegrees (void)
DT_GetListDegreeTypes (Sco_SCOPE_SYS,DT_ORDER_BY_DEGREE_TYPE); DT_GetListDegreeTypes (Sco_SCOPE_SYS,DT_ORDER_BY_DEGREE_TYPE);
/***** Start box *****/ /***** Start box *****/
sprintf (Gbl.Title,Txt_Degrees_of_CENTRE_X, snprintf (Gbl.Title,sizeof (Gbl.Title),
Gbl.CurrentCtr.Ctr.FullName); Txt_Degrees_of_CENTRE_X,
Gbl.CurrentCtr.Ctr.FullName);
Box_StartBox (NULL,Gbl.Title,Deg_PutIconsEditingDegrees, Box_StartBox (NULL,Gbl.Title,Deg_PutIconsEditingDegrees,
Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE); Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE);
@ -1877,10 +1883,11 @@ void Deg_RemoveDegreeCompletely (long DegCod)
Brw_RemoveDegFilesFromDB (DegCod); Brw_RemoveDegFilesFromDB (DegCod);
/***** Remove directories of the degree *****/ /***** Remove directories of the degree *****/
sprintf (PathDeg,"%s/%s/%02u/%u", snprintf (PathDeg,sizeof (PathDeg),
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_DEG, "%s/%s/%02u/%u",
(unsigned) (DegCod % 100), Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_DEG,
(unsigned) DegCod); (unsigned) (DegCod % 100),
(unsigned) DegCod);
Fil_RemoveTree (PathDeg); Fil_RemoveTree (PathDeg);
/***** Remove administrators of this degree *****/ /***** Remove administrators of this degree *****/
@ -2288,7 +2295,9 @@ void Deg_ShowAlertAndButtonToGoToDeg (void)
if (Gbl.Degs.EditingDeg.DegCod != Gbl.CurrentDeg.Deg.DegCod) if (Gbl.Degs.EditingDeg.DegCod != Gbl.CurrentDeg.Deg.DegCod)
{ {
/***** Alert with button to go to degree *****/ /***** Alert with button to go to degree *****/
sprintf (Gbl.Title,Txt_Go_to_X,Gbl.Degs.EditingDeg.ShrtName); snprintf (Gbl.Title,sizeof (Gbl.Title),
Txt_Go_to_X,
Gbl.Degs.EditingDeg.ShrtName);
Ale_ShowAlertAndButton (Gbl.Alert.Type,Gbl.Alert.Txt, Ale_ShowAlertAndButton (Gbl.Alert.Type,Gbl.Alert.Txt,
ActSeeCrs,NULL,NULL,Deg_PutParamGoToDeg, ActSeeCrs,NULL,NULL,Deg_PutParamGoToDeg,
Btn_CONFIRM_BUTTON,Gbl.Title); Btn_CONFIRM_BUTTON,Gbl.Title);
@ -2580,9 +2589,10 @@ unsigned Deg_ListDegsFound (const char *Query)
{ {
/***** Start box and table *****/ /***** Start box and table *****/
/* Number of degrees found */ /* Number of degrees found */
sprintf (Gbl.Title,"%u %s", snprintf (Gbl.Title,sizeof (Gbl.Title),
NumDegs,(NumDegs == 1) ? Txt_degree : "%u %s",
Txt_degrees); NumDegs,(NumDegs == 1) ? Txt_degree :
Txt_degrees);
Box_StartBoxTable (NULL,Gbl.Title,NULL, Box_StartBoxTable (NULL,Gbl.Title,NULL,
NULL,Box_NOT_CLOSABLE,2); NULL,Box_NOT_CLOSABLE,2);

View File

@ -25,6 +25,8 @@
/*********************************** Headers *********************************/ /*********************************** Headers *********************************/
/*****************************************************************************/ /*****************************************************************************/
#define _GNU_SOURCE // For asprintf
#include <stdio.h> // For asprintf
#include <stdlib.h> // For exit, system, malloc, free, rand, etc. #include <stdlib.h> // For exit, system, malloc, free, rand, etc.
#include <string.h> // For string functions #include <string.h> // For string functions
@ -2154,10 +2156,11 @@ void Enr_GetNotifEnrolmentRequest (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
Ntf_MAX_BYTES_SUMMARY); Ntf_MAX_BYTES_SUMMARY);
if (GetContent) if (GetContent)
if ((*ContentStr = (char *) malloc (256))) /* Write desired role into content */
/* Write desired role into content */ if (asprintf (ContentStr,
sprintf (*ContentStr,"%s", // TODO: Write more info in this content "%s", // TODO: Write more info in this content
Txt_ROLES_SINGUL_Abc[DesiredRole][UsrDat.Sex]); Txt_ROLES_SINGUL_Abc[DesiredRole][UsrDat.Sex]) < 0)
Lay_ShowErrorAndExit ("Not enough memory to store string.");
/* Free memory used for user's data */ /* Free memory used for user's data */
Usr_UsrDataDestructor (&UsrDat); Usr_UsrDataDestructor (&UsrDat);