mirror of https://github.com/acanas/swad-core.git
Version 18.6.3
This commit is contained in:
parent
182b6eb2e1
commit
c95fe7dc36
|
@ -355,10 +355,11 @@ En OpenSWAD:
|
|||
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 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.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)
|
||||
|
|
93
swad_chat.c
93
swad_chat.c
|
@ -144,7 +144,9 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
/***** Link to chat available for all the users *****/
|
||||
IsLastItemInLevel[1] = (!Gbl.Usrs.Me.IBelongToCurrentCrs &&
|
||||
!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);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/chat64x64.gif\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
|
@ -158,8 +160,9 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
switch (Gbl.Usrs.Me.Role.Logged)
|
||||
{
|
||||
case Rol_STD:
|
||||
sprintf (ThisRoomFullName,"%s (%s)",
|
||||
Txt_General,Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_ALL]);
|
||||
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),
|
||||
"%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);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/chat64x64.gif\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
|
@ -170,8 +173,9 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
break;
|
||||
case Rol_NET:
|
||||
case Rol_TCH:
|
||||
sprintf (ThisRoomFullName,"%s (%s)",
|
||||
Txt_General,Txt_ROLES_PLURAL_abc[Rol_TCH][Usr_SEX_ALL]);
|
||||
snprintf (ThisRoomFullName,sizeof (ThisRoomFullName),
|
||||
"%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);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/chat64x64.gif\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
|
@ -196,9 +200,15 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
|
||||
/* Link to the room of this degree */
|
||||
IsLastItemInLevel[1] = (NumMyDeg == Gbl.Usrs.Me.MyDegs.Num - 1);
|
||||
sprintf (ThisRoomCode,"DEG_%ld",Deg.DegCod);
|
||||
sprintf (ThisRoomShrtName,"%s",Deg.ShrtName);
|
||||
sprintf (ThisRoomFullName,"%s %s",Txt_Degree,Deg.ShrtName);
|
||||
snprintf (ThisRoomCode,sizeof (ThisRoomCode),
|
||||
"DEG_%ld",
|
||||
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);
|
||||
Log_DrawLogo (Sco_SCOPE_DEG,Deg.DegCod,Deg.ShrtName,20,NULL,true);
|
||||
Cht_WriteLinkToChat2 (ThisRoomCode,ThisRoomFullName);
|
||||
|
@ -220,9 +230,15 @@ void Cht_ShowListOfAvailableChatRooms (void)
|
|||
|
||||
/* Link to the room of this course */
|
||||
IsLastItemInLevel[2] = (NumRow == NumRows - 1);
|
||||
sprintf (ThisRoomCode,"CRS_%ld",Crs.CrsCod);
|
||||
sprintf (ThisRoomShrtName,"%s",Crs.ShrtName);
|
||||
sprintf (ThisRoomFullName,"%s %s",Txt_Course,Crs.ShrtName);
|
||||
snprintf (ThisRoomCode,sizeof (ThisRoomCode),
|
||||
"CRS_%ld",
|
||||
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);
|
||||
fprintf (Gbl.F.Out,"<img src=\"%s/dot64x64.png\""
|
||||
" alt=\"%s\" title=\"%s\""
|
||||
|
@ -448,7 +464,9 @@ void Cht_OpenChatWindow (void)
|
|||
Usr_MAX_BYTES_FULL_NAME);
|
||||
|
||||
/***** Build the lists of available rooms *****/
|
||||
sprintf (ListRoomCodes,"#%s",RoomCode);
|
||||
snprintf (ListRoomCodes,sizeof (ListRoomCodes),
|
||||
"#%s",
|
||||
RoomCode);
|
||||
Str_Copy (ListRoomShrtNames,RoomShrtName,
|
||||
Cht_MAX_BYTES_ROOM_SHRT_NAMES);
|
||||
Str_Copy (ListRoomFullNames ,RoomFullName,
|
||||
|
@ -459,12 +477,15 @@ void Cht_OpenChatWindow (void)
|
|||
Str_Concat (ListRoomCodes,"|#GBL_USR",
|
||||
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,
|
||||
Cht_MAX_BYTES_ROOM_SHRT_NAMES);
|
||||
|
||||
sprintf (RoomFullName,"|%s (%s)",
|
||||
Txt_General,Txt_SEX_PLURAL_abc[Usr_SEX_ALL]);
|
||||
snprintf (RoomFullName,sizeof (RoomFullName),
|
||||
"|%s (%s)",
|
||||
Txt_General,Txt_SEX_PLURAL_abc[Usr_SEX_ALL]);
|
||||
Str_Concat (ListRoomFullNames,RoomFullName,
|
||||
Cht_MAX_BYTES_ROOM_FULL_NAMES);
|
||||
}
|
||||
|
@ -475,12 +496,15 @@ void Cht_OpenChatWindow (void)
|
|||
Str_Concat (ListRoomCodes,"|#GBL_STD",
|
||||
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,
|
||||
Cht_MAX_BYTES_ROOM_SHRT_NAMES);
|
||||
|
||||
sprintf (RoomFullName,"|%s (%s)",Txt_General,
|
||||
Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_ALL]);
|
||||
snprintf (RoomFullName,sizeof (RoomFullName),
|
||||
"|%s (%s)",
|
||||
Txt_General,Txt_ROLES_PLURAL_abc[Rol_STD][Usr_SEX_ALL]);
|
||||
Str_Concat (ListRoomFullNames,RoomFullName,
|
||||
Cht_MAX_BYTES_ROOM_FULL_NAMES);
|
||||
}
|
||||
|
@ -492,12 +516,15 @@ void Cht_OpenChatWindow (void)
|
|||
Str_Concat (ListRoomCodes,"|#GBL_TCH",
|
||||
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,
|
||||
Cht_MAX_BYTES_ROOM_SHRT_NAMES);
|
||||
|
||||
sprintf (RoomFullName,"|%s (%s)",
|
||||
Txt_General,Txt_ROLES_PLURAL_abc[Rol_TCH][Usr_SEX_ALL]);
|
||||
snprintf (RoomFullName,sizeof (RoomFullName),
|
||||
"|%s (%s)",
|
||||
Txt_General,Txt_ROLES_PLURAL_abc[Rol_TCH][Usr_SEX_ALL]);
|
||||
Str_Concat (ListRoomFullNames,RoomFullName,
|
||||
Cht_MAX_BYTES_ROOM_FULL_NAMES);
|
||||
}
|
||||
|
@ -506,7 +533,9 @@ void Cht_OpenChatWindow (void)
|
|||
NumMyDeg < Gbl.Usrs.Me.MyDegs.Num;
|
||||
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))
|
||||
{
|
||||
Str_Concat (ListRoomCodes,"|#",
|
||||
|
@ -518,13 +547,17 @@ void Cht_OpenChatWindow (void)
|
|||
Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod;
|
||||
Deg_GetDataOfDegreeByCod (&Deg);
|
||||
|
||||
sprintf (ThisRoomShortName,"%s",Deg.ShrtName);
|
||||
snprintf (ThisRoomShortName,sizeof (ThisRoomShortName),
|
||||
"%s",
|
||||
Deg.ShrtName);
|
||||
Str_Concat (ListRoomShrtNames,"|",
|
||||
Cht_MAX_BYTES_ROOM_SHRT_NAMES);
|
||||
Str_Concat (ListRoomShrtNames,ThisRoomShortName,
|
||||
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,"|",
|
||||
Cht_MAX_BYTES_ROOM_FULL_NAMES);
|
||||
Str_Concat (ListRoomFullNames,ThisRoomFullName,
|
||||
|
@ -536,7 +569,9 @@ void Cht_OpenChatWindow (void)
|
|||
NumMyCrs < Gbl.Usrs.Me.MyCrss.Num;
|
||||
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))
|
||||
{
|
||||
Str_Concat (ListRoomCodes,"|#",
|
||||
|
@ -548,13 +583,17 @@ void Cht_OpenChatWindow (void)
|
|||
Crs.CrsCod = Gbl.Usrs.Me.MyCrss.Crss[NumMyCrs].CrsCod;
|
||||
Crs_GetDataOfCourseByCod (&Crs);
|
||||
|
||||
sprintf (ThisRoomShortName,"%s",Crs.ShrtName);
|
||||
snprintf (ThisRoomShortName,sizeof (ThisRoomShortName),
|
||||
"%s",
|
||||
Crs.ShrtName);
|
||||
Str_Concat (ListRoomShrtNames,"|",
|
||||
Cht_MAX_BYTES_ROOM_SHRT_NAMES);
|
||||
Str_Concat (ListRoomShrtNames,ThisRoomShortName,
|
||||
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,"|",
|
||||
Cht_MAX_BYTES_ROOM_FULL_NAMES);
|
||||
Str_Concat (ListRoomFullNames,ThisRoomFullName,
|
||||
|
|
|
@ -28,9 +28,9 @@
|
|||
/** 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 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
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
@ -97,8 +97,10 @@ void Con_ShowConnectedUsrs (void)
|
|||
|
||||
/***** Start box *****/
|
||||
/* Current time */
|
||||
sprintf (Gbl.Title,"%s<div id=\"connected_current_time\"></div>",
|
||||
Txt_Connected_users);
|
||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||
"%s"
|
||||
"<div id=\"connected_current_time\"></div>",
|
||||
Txt_Connected_users);
|
||||
Box_StartBox (NULL,Gbl.Title,Con_PutIconToUpdateConnected,
|
||||
Hlp_USERS_Connected,Box_NOT_CLOSABLE);
|
||||
fprintf (Gbl.F.Out,"<script type=\"text/javascript\">"
|
||||
|
|
|
@ -52,17 +52,20 @@ int main (void)
|
|||
char OldPathUsr[PATH_MAX + 1];
|
||||
char Command[1024 + PATH_MAX * 2];
|
||||
|
||||
sprintf (Command,"mv %s/%s %s/%s_backup",
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR,
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mv %s/%s %s/%s_backup",
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR,
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR);
|
||||
ExecuteCommand (Command);
|
||||
sprintf (Command,"mkdir %s/%s",
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mkdir %s/%s",
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR);
|
||||
ExecuteCommand (Command);
|
||||
for (i=0; i<100; i++)
|
||||
{
|
||||
sprintf (Command,"mkdir %s/%s/%02u",
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR,i);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mkdir %s/%s/%02u",
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR,i);
|
||||
ExecuteCommand (Command);
|
||||
}
|
||||
|
||||
|
@ -98,13 +101,15 @@ int main (void)
|
|||
{
|
||||
Str_Copy (UsrID,row[1],
|
||||
ID_MAX_BYTES_USR_ID); // UsrID
|
||||
sprintf (OldPathUsr,"%s/%s_backup/%c/%s",
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR,UsrID[strlen (UsrID)-1],UsrID);
|
||||
snprintf (OldPathUsr,sizeof (OldPathUsr),
|
||||
"%s/%s_backup/%c/%s",
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR,UsrID[strlen (UsrID)-1],UsrID);
|
||||
if (CheckIfPathExists (OldPathUsr))
|
||||
{
|
||||
sprintf (Command,"mv %s %s/%s/%02u/%ld",
|
||||
OldPathUsr,
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR,(unsigned) (UsrCod % 100),UsrCod);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mv %s %s/%s/%02u/%ld",
|
||||
OldPathUsr,
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR,(unsigned) (UsrCod % 100),UsrCod);
|
||||
ExecuteCommand (Command);
|
||||
NumUsrs++;
|
||||
}
|
||||
|
@ -112,9 +117,10 @@ int main (void)
|
|||
}
|
||||
}
|
||||
mysql_free_result (mysql_res);
|
||||
sprintf (Command,"chown -R %s:%s %s/%s",
|
||||
WEB_USER,WEB_USER,
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"chown -R %s:%s %s/%s",
|
||||
WEB_USER,WEB_USER,
|
||||
PATH_SWAD_PRIVATE,FOLDER_USR);
|
||||
ExecuteCommand (Command);
|
||||
|
||||
printf ("# Rows : %u\n"
|
||||
|
|
|
@ -53,17 +53,20 @@ int main (void)
|
|||
char OldPathPhoto[PATH_MAX + 1];
|
||||
char Command[1024 + PATH_MAX * 2];
|
||||
|
||||
sprintf (Command,"mv %s/%s %s/%s_backup",
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mv %s/%s %s/%s_backup",
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO);
|
||||
ExecuteCommand (Command);
|
||||
sprintf (Command,"mkdir %s/%s",
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mkdir %s/%s",
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO);
|
||||
ExecuteCommand (Command);
|
||||
for (i=0; i<100; i++)
|
||||
{
|
||||
sprintf (Command,"mkdir %s/%s/%02u",
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,i);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mkdir %s/%s/%02u",
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,i);
|
||||
ExecuteCommand (Command);
|
||||
}
|
||||
|
||||
|
@ -99,23 +102,27 @@ int main (void)
|
|||
{
|
||||
Str_Copy (UsrID,row[1],
|
||||
ID_MAX_BYTES_USR_ID); // UsrID
|
||||
sprintf (OldPathPhoto,"%s/%s_backup/%s_original.jpg",
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,UsrID);
|
||||
snprintf (OldPathPhoto,sizeof (OldPathPhoto),
|
||||
"%s/%s_backup/%s_original.jpg",
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,UsrID);
|
||||
if (CheckIfPathExists (OldPathPhoto))
|
||||
{
|
||||
sprintf (Command,"cp -a %s %s/%s/%02u/%ld_original.jpg",
|
||||
OldPathPhoto,
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,(unsigned) (UsrCod % 100),UsrCod);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"cp -a %s %s/%s/%02u/%ld_original.jpg",
|
||||
OldPathPhoto,
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,(unsigned) (UsrCod % 100),UsrCod);
|
||||
ExecuteCommand (Command);
|
||||
}
|
||||
|
||||
sprintf (OldPathPhoto,"%s/%s_backup/%s.jpg",
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,UsrID);
|
||||
snprintf (OldPathPhoto,sizeof (OldPathPhoto),
|
||||
"%s/%s_backup/%s.jpg",
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,UsrID);
|
||||
if (CheckIfPathExists (OldPathPhoto))
|
||||
{
|
||||
sprintf (Command,"cp -a %s %s/%s/%02u/%ld.jpg",
|
||||
OldPathPhoto,
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,(unsigned) (UsrCod % 100),UsrCod);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"cp -a %s %s/%s/%02u/%ld.jpg",
|
||||
OldPathPhoto,
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO,(unsigned) (UsrCod % 100),UsrCod);
|
||||
ExecuteCommand (Command);
|
||||
NumPhotos++;
|
||||
}
|
||||
|
@ -123,13 +130,15 @@ int main (void)
|
|||
}
|
||||
}
|
||||
mysql_free_result (mysql_res);
|
||||
sprintf (Command,"chown -R %s:%s %s/%s",
|
||||
WEB_USER,WEB_USER,
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"chown -R %s:%s %s/%s",
|
||||
WEB_USER,WEB_USER,
|
||||
PATH_SWAD_PRIVATE,FOLDER_PHOTO);
|
||||
ExecuteCommand (Command);
|
||||
|
||||
sprintf (Command,"rm -f %s/%s/*.jpg",
|
||||
PATH_SWAD_PUBLIC,FOLDER_PHOTO);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"rm -f %s/%s/*.jpg",
|
||||
PATH_SWAD_PUBLIC,FOLDER_PHOTO);
|
||||
ExecuteCommand (Command);
|
||||
|
||||
printf ("# Rows : %u\n"
|
||||
|
|
|
@ -82,21 +82,28 @@ int main (void)
|
|||
}
|
||||
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);
|
||||
if (row[0])
|
||||
if (row[0][0])
|
||||
if (sscanf (row[0],"%ld",&CrsCod) == 1) // CrsCod
|
||||
{
|
||||
sprintf (OldPathUsrs,"%s/%s/%ld/%s",
|
||||
PATH_SWAD_PRIVATE,FOLDER_CRS,CrsCod,FOLDER_USR);
|
||||
snprintf (OldPathUsrs,sizeof (OldPathUsrs),
|
||||
"%s/%s/%ld/%s",
|
||||
PATH_SWAD_PRIVATE,FOLDER_CRS,CrsCod,FOLDER_USR);
|
||||
if (CheckIfPathExists (OldPathUsrs))
|
||||
{
|
||||
sprintf (Command,"mv %s %s_backup",OldPathUsrs,OldPathUsrs);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mv %s %s_backup",
|
||||
OldPathUsrs,OldPathUsrs);
|
||||
ExecuteCommand (Command);
|
||||
|
||||
sprintf (Command,"mkdir %s",OldPathUsrs);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mkdir %s",
|
||||
OldPathUsrs);
|
||||
ExecuteCommand (Command);
|
||||
|
||||
sprintf (Query,"SELECT usr_IDs.UsrCod,usr_IDs.UsrID"
|
||||
|
@ -128,27 +135,38 @@ int main (void)
|
|||
{
|
||||
Str_Copy (UsrID,row[1],
|
||||
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))
|
||||
{
|
||||
sprintf (Path02u,"%s/%02u",
|
||||
OldPathUsrs,(unsigned) (UsrCod % 100));
|
||||
snprintf (Path02u,sizeof (Path02u),
|
||||
"%s/%02u",
|
||||
OldPathUsrs,(unsigned) (UsrCod % 100));
|
||||
if (!CheckIfPathExists (Path02u))
|
||||
{
|
||||
sprintf (Command,"mkdir %s",Path02u);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mkdir %s",
|
||||
Path02u);
|
||||
ExecuteCommand (Command);
|
||||
}
|
||||
sprintf (Command,"mv %s %s/%ld",OldPathUsr,Path02u,UsrCod);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"mv %s %s/%ld",
|
||||
OldPathUsr,Path02u,UsrCod);
|
||||
ExecuteCommand (Command);
|
||||
}
|
||||
}
|
||||
}
|
||||
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);
|
||||
/*
|
||||
sprintf (Command,"rm -Rf %s_backup",OldPathUsrs);
|
||||
snprintf (Command,sizeof (Command),
|
||||
"rm -Rf %s_backup",
|
||||
OldPathUsrs);
|
||||
ExecuteCommand (Command);
|
||||
*/
|
||||
printf ("\n");
|
||||
|
|
|
@ -385,8 +385,9 @@ static void Cty_Configuration (bool PrintView)
|
|||
/* Form to go to see institutions of this country */
|
||||
Act_StartFormGoTo (ActSeeIns);
|
||||
Cty_PutParamCtyCod (Gbl.CurrentCty.Cty.CtyCod);
|
||||
sprintf (Gbl.Title,Txt_Institutions_of_COUNTRY_X,
|
||||
Gbl.CurrentCty.Cty.Name[Gbl.Prefs.Language]);
|
||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||
Txt_Institutions_of_COUNTRY_X,
|
||||
Gbl.CurrentCty.Cty.Name[Gbl.Prefs.Language]);
|
||||
Act_LinkFormSubmit (Gbl.Title,"DAT",NULL);
|
||||
fprintf (Gbl.F.Out,"%u</a>",
|
||||
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);
|
||||
|
||||
/***** 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);
|
||||
|
||||
/***** Draw country map *****/
|
||||
|
@ -852,12 +855,13 @@ bool Cty_CheckIfCountryMapExists (struct Country *Cty)
|
|||
{
|
||||
char PathMap[PATH_MAX + 1];
|
||||
|
||||
sprintf (PathMap,"%s/%s/%s/%s/%s.png",
|
||||
Cfg_PATH_SWAD_PUBLIC,
|
||||
Cfg_FOLDER_PUBLIC_ICON,
|
||||
Cfg_ICON_FOLDER_COUNTRIES,
|
||||
Cty->Alpha2,
|
||||
Cty->Alpha2);
|
||||
snprintf (PathMap,sizeof (PathMap),
|
||||
"%s/%s/%s/%s/%s.png",
|
||||
Cfg_PATH_SWAD_PUBLIC,
|
||||
Cfg_FOLDER_PUBLIC_ICON,
|
||||
Cfg_ICON_FOLDER_COUNTRIES,
|
||||
Cty->Alpha2,
|
||||
Cty->Alpha2);
|
||||
return Fil_CheckIfPathExists (PathMap);
|
||||
}
|
||||
|
||||
|
@ -1015,21 +1019,25 @@ void Cty_GetListCountries (Cty_GetExtraData_t GetExtraData)
|
|||
Lan <= Txt_NUM_LANGUAGES;
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
Cty_MAX_BYTES_SUBQUERY_CTYS);
|
||||
}
|
||||
|
@ -1311,17 +1319,25 @@ bool Cty_GetDataOfCountryByCod (struct Country *Cty,Cty_GetExtraData_t GetExtraD
|
|||
Lan <= Txt_NUM_LANGUAGES;
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
Cty_MAX_BYTES_SUBQUERY_CTYS);
|
||||
}
|
||||
|
@ -1773,7 +1789,9 @@ void Cty_RenameCountry (void)
|
|||
else
|
||||
{
|
||||
/* 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);
|
||||
|
||||
/* Write message to show the change made */
|
||||
|
@ -2149,7 +2167,9 @@ void Cty_RecFormNewCountry (void)
|
|||
Lan <= Txt_NUM_LANGUAGES;
|
||||
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);
|
||||
|
||||
if (Cty->Name[Lan][0]) // If there's a country name
|
||||
|
@ -2172,7 +2192,9 @@ void Cty_RecFormNewCountry (void)
|
|||
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);
|
||||
}
|
||||
}
|
||||
|
@ -2218,7 +2240,9 @@ static void Cty_CreateCountry (struct Country *Cty)
|
|||
Lan <= Txt_NUM_LANGUAGES;
|
||||
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,
|
||||
Cty_MAX_BYTES_SUBQUERY_CTYS);
|
||||
|
||||
|
@ -2229,7 +2253,9 @@ static void Cty_CreateCountry (struct Country *Cty)
|
|||
Str_Concat (SubQueryNam2,"'",
|
||||
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,
|
||||
Cty_MAX_BYTES_SUBQUERY_CTYS);
|
||||
|
||||
|
@ -2379,9 +2405,10 @@ unsigned Cty_ListCtysFound (const char *Query)
|
|||
{
|
||||
/***** Start box and table *****/
|
||||
/* Number of countries found */
|
||||
sprintf (Gbl.Title,"%u %s",
|
||||
NumCtys,NumCtys == 1 ? Txt_country :
|
||||
Txt_countries);
|
||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||
"%u %s",
|
||||
NumCtys,NumCtys == 1 ? Txt_country :
|
||||
Txt_countries);
|
||||
Box_StartBoxTable (NULL,Gbl.Title,NULL,
|
||||
NULL,Box_NOT_CLOSABLE,2);
|
||||
|
||||
|
|
|
@ -448,8 +448,10 @@ static void Crs_Configuration (bool PrintView)
|
|||
The_ClassForm[Gbl.Prefs.Theme],
|
||||
Txt_Indicators);
|
||||
Act_StartForm (ActReqStaCrs);
|
||||
sprintf (Gbl.Title,"%u %s %u",
|
||||
Indicators.NumIndicators,Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS);
|
||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||
"%u %s %u",
|
||||
Indicators.NumIndicators,
|
||||
Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS);
|
||||
Act_LinkFormSubmit (Gbl.Title,"DAT",NULL);
|
||||
fprintf (Gbl.F.Out,"%s "
|
||||
"<img src=\"%s/%s\" alt=\"%s\""
|
||||
|
@ -544,7 +546,9 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
|
|||
char ClassHighlight[64];
|
||||
|
||||
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 *****/
|
||||
Box_StartBox (NULL,Txt_My_courses,Crs_PutIconToSearchCourses,
|
||||
|
@ -734,7 +738,9 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
|
|||
Lay_IndentDependingOnLevel (5,IsLastItemInLevel);
|
||||
Act_StartForm (ActMyCrs);
|
||||
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,
|
||||
Highlight ? ClassHighlight :
|
||||
ClassNormal,NULL);
|
||||
|
@ -1135,7 +1141,9 @@ static void Crs_ListCourses (void)
|
|||
unsigned Year;
|
||||
|
||||
/***** 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,
|
||||
Hlp_DEGREE_Courses,Box_NOT_CLOSABLE);
|
||||
|
||||
|
@ -1284,7 +1292,9 @@ static bool Crs_ListCoursesOfAYearForSeeing (unsigned Year)
|
|||
TxtClassStrong,BgColor);
|
||||
Act_StartFormGoTo (ActSeeCrsInf);
|
||||
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);
|
||||
fprintf (Gbl.F.Out,"%s</a>",
|
||||
Crs->FullName);
|
||||
|
@ -2274,11 +2284,13 @@ static void Crs_EmptyCourseCompletely (long CrsCod)
|
|||
DB_QueryDELETE (Query,"can not remove users from a course");
|
||||
|
||||
/***** Remove directories of the course *****/
|
||||
sprintf (PathRelCrs,"%s/%s/%ld",
|
||||
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod);
|
||||
snprintf (PathRelCrs,sizeof (PathRelCrs),
|
||||
"%s/%s/%ld",
|
||||
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_CRS,CrsCod);
|
||||
Fil_RemoveTree (PathRelCrs);
|
||||
sprintf (PathRelCrs,"%s/%s/%ld",
|
||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CRS,CrsCod);
|
||||
snprintf (PathRelCrs,sizeof (PathRelCrs),
|
||||
"%s/%s/%ld",
|
||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_CRS,CrsCod);
|
||||
Fil_RemoveTree (PathRelCrs);
|
||||
}
|
||||
}
|
||||
|
@ -2881,7 +2893,9 @@ static void Crs_PutButtonToGoToCrs (void)
|
|||
{
|
||||
Act_StartForm (ActSeeCrsInf);
|
||||
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);
|
||||
Act_EndForm ();
|
||||
}
|
||||
|
@ -2901,7 +2915,9 @@ static void Crs_PutButtonToRegisterInCrs (void)
|
|||
// If the course beeing edited is different to the current one...
|
||||
if (Gbl.Degs.EditingCrs.CrsCod != Gbl.CurrentCrs.Crs.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);
|
||||
Act_EndForm ();
|
||||
}
|
||||
|
@ -3075,9 +3091,10 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
|
|||
NULL,Box_NOT_CLOSABLE,2);
|
||||
|
||||
/* Heading row */
|
||||
sprintf (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]);
|
||||
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]);
|
||||
fprintf (Gbl.F.Out,"<tr>"
|
||||
"<th colspan=\"7\" class=\"LEFT_MIDDLE\">%s:</th>"
|
||||
"</tr>"
|
||||
|
@ -3153,9 +3170,10 @@ unsigned Crs_ListCrssFound (const char *Query)
|
|||
{
|
||||
/***** Start box and table *****/
|
||||
/* Number of courses found */
|
||||
sprintf (Gbl.Title,"%u %s",
|
||||
NumCrss,(NumCrss == 1) ? Txt_course :
|
||||
Txt_courses);
|
||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||
"%u %s",
|
||||
NumCrss,(NumCrss == 1) ? Txt_course :
|
||||
Txt_courses);
|
||||
Box_StartBoxTable (NULL,Gbl.Title,NULL,
|
||||
NULL,Box_NOT_CLOSABLE,2);
|
||||
|
||||
|
@ -3298,7 +3316,9 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
|
|||
StyleNoBR,BgColor);
|
||||
Act_StartFormGoTo (ActSeeDegInf);
|
||||
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);
|
||||
Log_DrawLogo (Sco_SCOPE_DEG,Deg.DegCod,Deg.ShrtName,20,"CENTER_TOP",true);
|
||||
fprintf (Gbl.F.Out," %s (%s)"
|
||||
|
@ -3318,7 +3338,9 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
|
|||
Style,BgColor);
|
||||
Act_StartFormGoTo (ActSeeCrsInf);
|
||||
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);
|
||||
fprintf (Gbl.F.Out,"%s</a>",row[5]);
|
||||
Act_EndForm ();
|
||||
|
|
|
@ -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];
|
||||
|
||||
NumCall++;
|
||||
sprintf (UniqueNamePlain,"%s-%lx-%x-%x",
|
||||
Gbl.IP,Gbl.StartExecutionTimeUTC,Gbl.PID,NumCall);
|
||||
snprintf (UniqueNamePlain,sizeof (UniqueNamePlain),
|
||||
"%s-%lx-%x-%x",
|
||||
Gbl.IP,Gbl.StartExecutionTimeUTC,Gbl.PID,NumCall);
|
||||
Cry_EncryptSHA256Base64 (UniqueNamePlain,UniqueNameEncrypted); // Make difficult to guess a unique name
|
||||
}
|
||||
|
|
|
@ -3195,9 +3195,10 @@ void DB_FreeMySQLResult (MYSQL_RES **mysql_res)
|
|||
|
||||
void DB_ExitOnMySQLError (const char *Message)
|
||||
{
|
||||
char BigErrorMsg[1024 * 1024];
|
||||
char BigErrorMsg[64 * 1024];
|
||||
|
||||
sprintf (BigErrorMsg,"Database error: %s (%s).",
|
||||
Message,mysql_error (&Gbl.mysql));
|
||||
snprintf (BigErrorMsg,sizeof (BigErrorMsg),
|
||||
"Database error: %s (%s).",
|
||||
Message,mysql_error (&Gbl.mysql));
|
||||
Lay_ShowErrorAndExit (BigErrorMsg);
|
||||
}
|
||||
|
|
53
swad_date.c
53
swad_date.c
|
@ -251,13 +251,15 @@ void Dat_GetAndConvertCurrentDateTime (void)
|
|||
Gbl.Now.Time.Second = tm_ptr->tm_sec;
|
||||
|
||||
/***** Initialize current date in format YYYYMMDD *****/
|
||||
sprintf (Gbl.Now.Date.YYYYMMDD,"%04u%02u%02u",
|
||||
Gbl.Now.Date.Year,Gbl.Now.Date.Month,Gbl.Now.Date.Day);
|
||||
snprintf (Gbl.Now.Date.YYYYMMDD,sizeof (Gbl.Now.Date.YYYYMMDD),
|
||||
"%04u%02u%02u",
|
||||
Gbl.Now.Date.Year,Gbl.Now.Date.Month,Gbl.Now.Date.Day);
|
||||
|
||||
/***** Initialize current time in format YYYYMMDDHHMMSS *****/
|
||||
sprintf (Gbl.Now.YYYYMMDDHHMMSS,"%04u%02u%02u%02u%02u%02u",
|
||||
Gbl.Now.Date.Year,Gbl.Now.Date.Month,Gbl.Now.Date.Day,
|
||||
Gbl.Now.Time.Hour,Gbl.Now.Time.Minute,Gbl.Now.Time.Second);
|
||||
snprintf (Gbl.Now.YYYYMMDDHHMMSS,sizeof (Gbl.Now.YYYYMMDDHHMMSS),
|
||||
"%04u%02u%02u%02u%02u%02u",
|
||||
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 *****/
|
||||
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)
|
||||
{
|
||||
case Dat_FORMAT_YYYY_MM_DD:
|
||||
sprintf (StrDate,"%04u-%02u-%02u",
|
||||
Date->Year,
|
||||
Date->Month,
|
||||
Date->Day);
|
||||
snprintf (StrDate,Cns_MAX_BYTES_DATE,
|
||||
"%04u-%02u-%02u",
|
||||
Date->Year,
|
||||
Date->Month,
|
||||
Date->Day);
|
||||
break;
|
||||
case Dat_FORMAT_DD_MONTH_YYYY:
|
||||
sprintf (StrDate,"%u %s %04u",
|
||||
Date->Day,
|
||||
Txt_MONTHS_SMALL_SHORT[Date->Month - 1],
|
||||
Date->Year);
|
||||
snprintf (StrDate,Cns_MAX_BYTES_DATE,
|
||||
"%u %s %04u",
|
||||
Date->Day,
|
||||
Txt_MONTHS_SMALL_SHORT[Date->Month - 1],
|
||||
Date->Year);
|
||||
break;
|
||||
case Dat_FORMAT_MONTH_DD_YYYY:
|
||||
sprintf (StrDate,"%s %u, %04u",
|
||||
Txt_MONTHS_SMALL_SHORT[Date->Month - 1],
|
||||
Date->Day,
|
||||
Date->Year);
|
||||
snprintf (StrDate,Cns_MAX_BYTES_DATE,
|
||||
"%s %u, %04u",
|
||||
Txt_MONTHS_SMALL_SHORT[Date->Month - 1],
|
||||
Date->Day,
|
||||
Date->Year);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -776,13 +781,15 @@ void Dat_GetBrowserTimeZone (char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1])
|
|||
/* Convert from minutes to +-hh:mm */
|
||||
// BrowserTimeZone must have space for strings in +hh:mm format (6 chars + \0)
|
||||
if (ClientUTCMinusLocal > 0)
|
||||
sprintf (BrowserTimeZone,"-%02u:%02u",
|
||||
(unsigned) ClientUTCMinusLocal / 60,
|
||||
(unsigned) ClientUTCMinusLocal % 60);
|
||||
snprintf (BrowserTimeZone,Dat_MAX_BYTES_TIME_ZONE,
|
||||
"-%02u:%02u",
|
||||
(unsigned) ClientUTCMinusLocal / 60,
|
||||
(unsigned) ClientUTCMinusLocal % 60);
|
||||
else // ClientUTCMinusLocal <= 0
|
||||
sprintf (BrowserTimeZone,"+%02u:%02u",
|
||||
(unsigned) (-ClientUTCMinusLocal) / 60,
|
||||
(unsigned) (-ClientUTCMinusLocal) % 60);
|
||||
snprintf (BrowserTimeZone,Dat_MAX_BYTES_TIME_ZONE,
|
||||
"+%02u:%02u",
|
||||
(unsigned) (-ClientUTCMinusLocal) / 60,
|
||||
(unsigned) (-ClientUTCMinusLocal) % 60);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -243,7 +243,9 @@ void Deg_DrawDegreeLogoAndNameWithLink (struct Degree *Deg,Act_Action_t Action,
|
|||
Deg_PutParamDegCod (Deg->DegCod);
|
||||
|
||||
/***** 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);
|
||||
|
||||
/***** Draw degree logo *****/
|
||||
|
@ -510,8 +512,9 @@ static void Deg_Configuration (bool PrintView)
|
|||
/* Form to go to see courses of this degree */
|
||||
Act_StartFormGoTo (ActSeeCrs);
|
||||
Deg_PutParamDegCod (Gbl.CurrentDeg.Deg.DegCod);
|
||||
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);
|
||||
Act_LinkFormSubmit (Gbl.Title,"DAT",NULL);
|
||||
fprintf (Gbl.F.Out,"%u</a>",
|
||||
Crs_GetNumCrssInDeg (Gbl.CurrentDeg.Deg.DegCod));
|
||||
|
@ -1173,7 +1176,9 @@ static void Deg_ListDegrees (void)
|
|||
unsigned NumDeg;
|
||||
|
||||
/***** 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,
|
||||
Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE);
|
||||
|
||||
|
@ -1351,8 +1356,9 @@ void Deg_EditDegrees (void)
|
|||
DT_GetListDegreeTypes (Sco_SCOPE_SYS,DT_ORDER_BY_DEGREE_TYPE);
|
||||
|
||||
/***** Start box *****/
|
||||
sprintf (Gbl.Title,Txt_Degrees_of_CENTRE_X,
|
||||
Gbl.CurrentCtr.Ctr.FullName);
|
||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||
Txt_Degrees_of_CENTRE_X,
|
||||
Gbl.CurrentCtr.Ctr.FullName);
|
||||
Box_StartBox (NULL,Gbl.Title,Deg_PutIconsEditingDegrees,
|
||||
Hlp_CENTRE_Degrees,Box_NOT_CLOSABLE);
|
||||
|
||||
|
@ -1877,10 +1883,11 @@ void Deg_RemoveDegreeCompletely (long DegCod)
|
|||
Brw_RemoveDegFilesFromDB (DegCod);
|
||||
|
||||
/***** Remove directories of the degree *****/
|
||||
sprintf (PathDeg,"%s/%s/%02u/%u",
|
||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_DEG,
|
||||
(unsigned) (DegCod % 100),
|
||||
(unsigned) DegCod);
|
||||
snprintf (PathDeg,sizeof (PathDeg),
|
||||
"%s/%s/%02u/%u",
|
||||
Cfg_PATH_SWAD_PUBLIC,Cfg_FOLDER_DEG,
|
||||
(unsigned) (DegCod % 100),
|
||||
(unsigned) DegCod);
|
||||
Fil_RemoveTree (PathDeg);
|
||||
|
||||
/***** Remove administrators of this degree *****/
|
||||
|
@ -2288,7 +2295,9 @@ void Deg_ShowAlertAndButtonToGoToDeg (void)
|
|||
if (Gbl.Degs.EditingDeg.DegCod != Gbl.CurrentDeg.Deg.DegCod)
|
||||
{
|
||||
/***** 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,
|
||||
ActSeeCrs,NULL,NULL,Deg_PutParamGoToDeg,
|
||||
Btn_CONFIRM_BUTTON,Gbl.Title);
|
||||
|
@ -2580,9 +2589,10 @@ unsigned Deg_ListDegsFound (const char *Query)
|
|||
{
|
||||
/***** Start box and table *****/
|
||||
/* Number of degrees found */
|
||||
sprintf (Gbl.Title,"%u %s",
|
||||
NumDegs,(NumDegs == 1) ? Txt_degree :
|
||||
Txt_degrees);
|
||||
snprintf (Gbl.Title,sizeof (Gbl.Title),
|
||||
"%u %s",
|
||||
NumDegs,(NumDegs == 1) ? Txt_degree :
|
||||
Txt_degrees);
|
||||
Box_StartBoxTable (NULL,Gbl.Title,NULL,
|
||||
NULL,Box_NOT_CLOSABLE,2);
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
/*********************************** Headers *********************************/
|
||||
/*****************************************************************************/
|
||||
|
||||
#define _GNU_SOURCE // For asprintf
|
||||
#include <stdio.h> // For asprintf
|
||||
#include <stdlib.h> // For exit, system, malloc, free, rand, etc.
|
||||
#include <string.h> // For string functions
|
||||
|
||||
|
@ -2154,10 +2156,11 @@ void Enr_GetNotifEnrolmentRequest (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
|
|||
Ntf_MAX_BYTES_SUMMARY);
|
||||
|
||||
if (GetContent)
|
||||
if ((*ContentStr = (char *) malloc (256)))
|
||||
/* Write desired role into content */
|
||||
sprintf (*ContentStr,"%s", // TODO: Write more info in this content
|
||||
Txt_ROLES_SINGUL_Abc[DesiredRole][UsrDat.Sex]);
|
||||
/* Write desired role into content */
|
||||
if (asprintf (ContentStr,
|
||||
"%s", // TODO: Write more info in this content
|
||||
Txt_ROLES_SINGUL_Abc[DesiredRole][UsrDat.Sex]) < 0)
|
||||
Lay_ShowErrorAndExit ("Not enough memory to store string.");
|
||||
|
||||
/* Free memory used for user's data */
|
||||
Usr_UsrDataDestructor (&UsrDat);
|
||||
|
|
Loading…
Reference in New Issue