Version 20.68: Apr 26, 2021 New module swad_error.

This commit is contained in:
acanas 2021-04-26 15:27:27 +02:00
parent 660147563c
commit 9af6b0d4f9
107 changed files with 2146 additions and 1948 deletions

View File

@ -35,7 +35,7 @@ OBJS = swad_account.o swad_action.o swad_agenda.o swad_alert.o \
swad_course_config.o swad_cryptography.o \ swad_course_config.o swad_cryptography.o \
swad_database.o swad_date.o swad_degree.o swad_degree_config.o \ swad_database.o swad_date.o swad_degree.o swad_degree_config.o \
swad_degree_type.o swad_department.o swad_duplicate.o \ swad_degree_type.o swad_department.o swad_duplicate.o \
swad_enrolment.o swad_exam.o swad_exam_log.o \ swad_enrolment.o swad_error.o swad_exam.o swad_exam_log.o \
swad_exam_print.o swad_exam_result.o swad_exam_session.o \ swad_exam_print.o swad_exam_result.o swad_exam_session.o \
swad_exam_set.o \ swad_exam_set.o \
swad_figure.o swad_figure_cache.o swad_file.o swad_file_browser.o \ swad_figure.o swad_figure_cache.o swad_file.o swad_file_browser.o \

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -105,6 +105,7 @@ cp -f /home/acanas/swad/swad/swad /var/www/cgi-bin/
#include "swad_API.h" #include "swad_API.h"
#include "swad_attendance.h" #include "swad_attendance.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_file_browser.h" #include "swad_file_browser.h"
#include "swad_forum.h" #include "swad_forum.h"
#include "swad_global.h" #include "swad_global.h"
@ -1653,7 +1654,7 @@ static int API_WritePageIntoHTMLBuffer (struct soap *soap,
/***** Write page from file to text buffer *****/ /***** Write page from file to text buffer *****/
/* Open file */ /* Open file */
if ((FileHTML = fopen (PathRelFileHTML,"rb")) == NULL) if ((FileHTML = fopen (PathRelFileHTML,"rb")) == NULL)
Lay_ShowErrorAndExit ("Can not open XML file."); Err_ShowErrorAndExit ("Can not open XML file.");
/* Compute file size */ /* Compute file size */
fseek (FileHTML,0L,SEEK_END); fseek (FileHTML,0L,SEEK_END);
@ -1664,7 +1665,7 @@ static int API_WritePageIntoHTMLBuffer (struct soap *soap,
if ((*HTMLBuffer = malloc (Length + 1)) == NULL) if ((*HTMLBuffer = malloc (Length + 1)) == NULL)
{ {
fclose (FileHTML); fclose (FileHTML);
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
return soap_receiver_fault (soap, return soap_receiver_fault (soap,
"Web page can not be copied into buffer", "Web page can not be copied into buffer",
"Not enough memory for buffer"); "Not enough memory for buffer");
@ -2262,7 +2263,7 @@ int swad__sendMyGroups (struct soap *soap,
/***** Create a list of groups selected from myGroups *****/ /***** Create a list of groups selected from myGroups *****/
if ((LstGrpsIWant.GrpCods = calloc (LstGrpsIWant.NumGrps, if ((LstGrpsIWant.GrpCods = calloc (LstGrpsIWant.NumGrps,
sizeof (*LstGrpsIWant.GrpCods))) == NULL) sizeof (*LstGrpsIWant.GrpCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
for (NumGrp = 0, Ptr = myGroups; for (NumGrp = 0, Ptr = myGroups;
*Ptr; *Ptr;
NumGrp++) NumGrp++)
@ -2836,7 +2837,7 @@ static void API_GetLstGrpsSel (const char *Groups)
// Here NestedCalls is always 1 // Here NestedCalls is always 1
if ((Gbl.Crs.Grps.LstGrpsSel.GrpCods = calloc (Gbl.Crs.Grps.LstGrpsSel.NumGrps, if ((Gbl.Crs.Grps.LstGrpsSel.GrpCods = calloc (Gbl.Crs.Grps.LstGrpsSel.NumGrps,
sizeof (*Gbl.Crs.Grps.LstGrpsSel.GrpCods))) == NULL) sizeof (*Gbl.Crs.Grps.LstGrpsSel.GrpCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
for (Ptr = Groups, NumGrp = 0; for (Ptr = Groups, NumGrp = 0;
*Ptr; *Ptr;
@ -3636,7 +3637,7 @@ int swad__sendMessage (struct soap *soap,
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = malloc (API_MAX_BYTES_QUERY_RECIPIENTS + 1)) == NULL) if ((Query = malloc (API_MAX_BYTES_QUERY_RECIPIENTS + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Build query for recipients from database *****/ /***** Build query for recipients from database *****/
if (ReplyUsrCod > 0) if (ReplyUsrCod > 0)

View File

@ -30,6 +30,7 @@
#include <stdio.h> // For vasprintf #include <stdio.h> // For vasprintf
#include <stdlib.h> // For free #include <stdlib.h> // For free
#include "swad_error.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -128,7 +129,7 @@ void HTM_TABLE_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Class,fmt,ap); NumBytesPrinted = vasprintf (&Class,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<table class=\"%s\">",Class); HTM_TxtF ("<table class=\"%s\">",Class);
@ -252,7 +253,7 @@ void HTM_TBODY_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<tbody %s>",Attr); HTM_TxtF ("<tbody %s>",Attr);
@ -294,7 +295,7 @@ void HTM_TR_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<tr %s>",Attr); HTM_TxtF ("<tr %s>",Attr);
@ -391,7 +392,7 @@ static void HTM_TH_BeginAttr (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<th %s>",Attr); HTM_TxtF ("<th %s>",Attr);
@ -453,7 +454,7 @@ void HTM_TD_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<td %s>",Attr); HTM_TxtF ("<td %s>",Attr);
@ -528,7 +529,7 @@ void HTM_DIV_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<div %s>",Attr); HTM_TxtF ("<div %s>",Attr);
@ -619,7 +620,7 @@ void HTM_SPAN_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<span %s>",Attr); HTM_TxtF ("<span %s>",Attr);
@ -685,7 +686,7 @@ void HTM_UL_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<ul %s>",Attr); HTM_TxtF ("<ul %s>",Attr);
@ -734,7 +735,7 @@ void HTM_LI_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<li %s>",Attr); HTM_TxtF ("<li %s>",Attr);
@ -838,7 +839,7 @@ void HTM_A_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<a %s>",Attr); HTM_TxtF ("<a %s>",Attr);
@ -915,7 +916,7 @@ void HTM_PARAM (const char *Name,
NumBytesPrinted = vasprintf (&Value,fmt,ap); NumBytesPrinted = vasprintf (&Value,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("\n<param name=\"%s\" value=\"%s\">",Name,Value); HTM_TxtF ("\n<param name=\"%s\" value=\"%s\">",Name,Value);
@ -942,7 +943,7 @@ void HTM_LABEL_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<label %s>",Attr); HTM_TxtF ("<label %s>",Attr);
@ -996,7 +997,7 @@ void HTM_INPUT_TEXT (const char *Name,unsigned MaxLength,const char *Value,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1030,7 +1031,7 @@ void HTM_INPUT_SEARCH (const char *Name,unsigned MaxLength,const char *Value,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1061,7 +1062,7 @@ void HTM_INPUT_TEL (const char *Name,const char *Value,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1095,7 +1096,7 @@ void HTM_INPUT_EMAIL (const char *Name,unsigned MaxLength,const char *Value,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1126,7 +1127,7 @@ void HTM_INPUT_URL (const char *Name,const char *Value,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1161,7 +1162,7 @@ void HTM_INPUT_FILE (const char *Name,const char *Accept,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1221,7 +1222,7 @@ void HTM_INPUT_PASSWORD (const char *Name,const char *PlaceHolder,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1254,7 +1255,7 @@ void HTM_INPUT_LONG (const char *Name,long Min,long Max,long Value,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1301,7 +1302,7 @@ void HTM_INPUT_FLOAT (const char *Name,double Min,double Max,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1330,7 +1331,7 @@ void HTM_INPUT_RADIO (const char *Name,bool SubmitOnClick,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1362,7 +1363,7 @@ void HTM_INPUT_CHECKBOX (const char *Name,HTM_SubmitOnChange_t SubmitOnChange,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1476,7 +1477,7 @@ void HTM_TEXTAREA_Begin (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<textarea %s>",Attr); HTM_TxtF ("<textarea %s>",Attr);
@ -1526,7 +1527,7 @@ void HTM_SELECT_Begin (HTM_SubmitOnChange_t SubmitOnChange,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_TxtF ("<select %s",Attr); HTM_TxtF ("<select %s",Attr);
@ -1614,7 +1615,7 @@ void HTM_OPTION (HTM_Type_t Type,const void *ValuePtr,bool Selected,bool Disable
NumBytesPrinted = vasprintf (&Content,fmt,ap); NumBytesPrinted = vasprintf (&Content,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_Txt (Content); HTM_Txt (Content);
@ -1661,7 +1662,7 @@ void HTM_IMG (const char *URL,const char *Icon,const char *Title,
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print attributes *****/ /***** Print attributes *****/
HTM_SPTxt (Attr); HTM_SPTxt (Attr);
@ -1762,7 +1763,7 @@ void HTM_TxtF (const char *fmt,...)
NumBytesPrinted = vasprintf (&Attr,fmt,ap); NumBytesPrinted = vasprintf (&Attr,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Print HTML *****/ /***** Print HTML *****/
HTM_Txt (Attr); HTM_Txt (Attr);

View File

@ -33,6 +33,7 @@
#include "swad_account.h" #include "swad_account.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -151,7 +152,7 @@ void ID_ReallocateListIDs (struct UsrData *UsrDat,unsigned NumIDs)
/***** Allocate space for the list *****/ /***** Allocate space for the list *****/
if ((UsrDat->IDs.List = malloc (NumIDs * sizeof (*UsrDat->IDs.List))) == NULL) if ((UsrDat->IDs.List = malloc (NumIDs * sizeof (*UsrDat->IDs.List))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -197,7 +198,7 @@ unsigned ID_GetListUsrCodsFromUsrID (struct UsrData *UsrDat,
/***** Allocate memory for subquery string *****/ /***** Allocate memory for subquery string *****/
MaxLength = 512 + UsrDat->IDs.Num * (1 + ID_MAX_BYTES_USR_ID + 1) - 1; MaxLength = 512 + UsrDat->IDs.Num * (1 + ID_MAX_BYTES_USR_ID + 1) - 1;
if ((SubQueryAllUsrs = malloc (MaxLength + 1)) == NULL) if ((SubQueryAllUsrs = malloc (MaxLength + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
SubQueryAllUsrs[0] = '\0'; SubQueryAllUsrs[0] = '\0';
/***** Get user's code(s) from database *****/ /***** Get user's code(s) from database *****/

View File

@ -33,6 +33,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -80,7 +81,7 @@ void MFU_AllocateMFUActions (struct MFU_ListMFUActions *ListMFUActions,unsigned
{ {
if ((ListMFUActions->Actions = malloc (MaxActionsShown * if ((ListMFUActions->Actions = malloc (MaxActionsShown *
sizeof (*ListMFUActions->Actions))) == NULL) sizeof (*ListMFUActions->Actions))) == NULL)
Lay_ShowErrorAndExit ("Can not allocate memory for list of most frequently used actions."); Err_ShowErrorAndExit ("Can not allocate memory for list of most frequently used actions.");
} }
/*****************************************************************************/ /*****************************************************************************/
@ -357,7 +358,7 @@ void MFU_UpdateMFUActions (void)
{ {
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%lf",&Score) != 1) if (sscanf (row[0],"%lf",&Score) != 1)
Lay_ShowErrorAndExit ("Error when getting score for current action."); Err_ShowErrorAndExit ("Error when getting score for current action.");
Score *= MFU_INCREASE_FACTOR; Score *= MFU_INCREASE_FACTOR;
if (Score > MFU_MAX_SCORE) if (Score > MFU_MAX_SCORE)
Score = MFU_MAX_SCORE; Score = MFU_MAX_SCORE;

View File

@ -30,6 +30,7 @@
#include <stdlib.h> // For free #include <stdlib.h> // For free
#include "swad_action.h" #include "swad_action.h"
#include "swad_error.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
#include "swad_ID.h" #include "swad_ID.h"
@ -118,7 +119,7 @@ void QR_ImageQRCode (const char *QRString)
if (asprintf (&URL,"https://chart.googleapis.com/chart?cht=qr&amp;chs=%ux%u&amp;chl=%s", if (asprintf (&URL,"https://chart.googleapis.com/chart?cht=qr&amp;chs=%ux%u&amp;chl=%s",
QR_CODE_SIZE,QR_CODE_SIZE,QRString) < 0) QR_CODE_SIZE,QR_CODE_SIZE,QRString) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (URL,NULL,QRString, HTM_IMG (URL,NULL,QRString,
"style=\"width:%upx;height:%upx;border:1px dashed silver;\"", "style=\"width:%upx;height:%upx;border:1px dashed silver;\"",
QR_CODE_SIZE,QR_CODE_SIZE); QR_CODE_SIZE,QR_CODE_SIZE);
@ -141,13 +142,13 @@ void QR_LinkTo (unsigned Size,const char *ParamName,long Cod)
{ {
if (asprintf (&URL,"https://chart.googleapis.com/chart?cht=qr&amp;chs=%ux%u&amp;chl=%s/?%s=%ld", if (asprintf (&URL,"https://chart.googleapis.com/chart?cht=qr&amp;chs=%ux%u&amp;chl=%s/?%s=%ld",
Size,Size,Cfg_URL_SWAD_CGI,ParamName,Cod) < 0) Size,Size,Cfg_URL_SWAD_CGI,ParamName,Cod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (&URL,"https://chart.googleapis.com/chart?cht=qr&amp;chs=%ux%u&amp;chl=%s/", if (asprintf (&URL,"https://chart.googleapis.com/chart?cht=qr&amp;chs=%ux%u&amp;chl=%s/",
Size,Size,Cfg_URL_SWAD_CGI) < 0) Size,Size,Cfg_URL_SWAD_CGI) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
HTM_IMG (URL,NULL,Txt_Shortcut, HTM_IMG (URL,NULL,Txt_Shortcut,
"style=\"width:%upx;height:%upx;\"",Size,Size); "style=\"width:%upx;height:%upx;\"",Size,Size);
@ -170,7 +171,7 @@ void QR_ExamAnnnouncement (void)
300,300, 300,300,
Cfg_URL_SWAD_CGI,Gbl.Hierarchy.Crs.CrsCod, Cfg_URL_SWAD_CGI,Gbl.Hierarchy.Crs.CrsCod,
Act_GetActCod (ActSeeAllExaAnn)) < 0) Act_GetActCod (ActSeeAllExaAnn)) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (URL,NULL,Txt_Link_to_call_for_exam, HTM_IMG (URL,NULL,Txt_Link_to_call_for_exam,
"style=\"width:250px;height:250px;\""); "style=\"width:250px;height:250px;\"");
free (URL); free (URL);

View File

@ -32,6 +32,7 @@
#include "swad_call_for_exam.h" #include "swad_call_for_exam.h"
#include "swad_changelog.h" #include "swad_changelog.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_notice.h" #include "swad_notice.h"
#include "swad_RSS.h" #include "swad_RSS.h"
@ -74,7 +75,7 @@ void RSS_UpdateRSSFileForACrs (struct Crs_Course *Crs)
snprintf (PathRelPublRSSFile,sizeof (PathRelPublRSSFile),"%s/%s", snprintf (PathRelPublRSSFile,sizeof (PathRelPublRSSFile),"%s/%s",
PathRelPublRSSDir,Cfg_RSS_FILE); PathRelPublRSSDir,Cfg_RSS_FILE);
if ((FileRSS = fopen (PathRelPublRSSFile,"wb")) == NULL) if ((FileRSS = fopen (PathRelPublRSSFile,"wb")) == NULL)
Lay_ShowErrorAndExit ("Can not create RSS file."); Err_ShowErrorAndExit ("Can not create RSS file.");
/***** Write RSS header *****/ /***** Write RSS header *****/
fprintf (FileRSS,"<?xml version=\"1.0\" encoding=\"windows-1252\"?>\n"); fprintf (FileRSS,"<?xml version=\"1.0\" encoding=\"windows-1252\"?>\n");
@ -186,7 +187,7 @@ static void RSS_WriteNotices (FILE *FileRSS,struct Crs_Course *Crs)
/* Get notice code */ /* Get notice code */
if (sscanf (row[0],"%ld",&NotCod) != 1) if (sscanf (row[0],"%ld",&NotCod) != 1)
Lay_WrongNoticeExit (); Err_WrongNoticeExit ();
/* Get UTC date-time of publication */ /* Get UTC date-time of publication */
CreatTimeUTC = 0L; CreatTimeUTC = 0L;
@ -290,7 +291,7 @@ static void RSS_WriteCallsForExams (FILE *FileRSS,struct Crs_Course *Crs)
/* Get call for exam code */ /* Get call for exam code */
if (sscanf (row[0],"%ld",&ExaCod) != 1) if (sscanf (row[0],"%ld",&ExaCod) != 1)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/* Get UTC date-time of publication */ /* Get UTC date-time of publication */
CallTimeUTC = 0L; CallTimeUTC = 0L;

View File

@ -36,6 +36,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_duplicate.h" #include "swad_duplicate.h"
#include "swad_enrolment.h" #include "swad_enrolment.h"
#include "swad_error.h"
#include "swad_exam_print.h" #include "swad_exam_print.h"
#include "swad_follow.h" #include "swad_follow.h"
#include "swad_form.h" #include "swad_form.h"
@ -738,7 +739,7 @@ void Acc_CreateNewUsr (struct UsrData *UsrDat,bool CreatingMyOwnAccount)
/***** Trivial check: user's code should be <= 0 *****/ /***** Trivial check: user's code should be <= 0 *****/
if (UsrDat->UsrCod > 0) if (UsrDat->UsrCod > 0)
Lay_ShowErrorAndExit ("Can not create new user."); Err_ShowErrorAndExit ("Can not create new user.");
/***** Create encrypted user's code *****/ /***** Create encrypted user's code *****/
Acc_CreateNewEncryptedUsrCod (UsrDat); Acc_CreateNewEncryptedUsrCod (UsrDat);
@ -844,7 +845,7 @@ static void Acc_CreateNewEncryptedUsrCod (struct UsrData *UsrDat)
break; break;
} }
if (NumTry == MAX_TRY) if (NumTry == MAX_TRY)
Lay_ShowErrorAndExit ("Can not create a new encrypted user's code."); Err_ShowErrorAndExit ("Can not create a new encrypted user's code.");
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -36,6 +36,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_date.h" #include "swad_date.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_group.h" #include "swad_group.h"
@ -821,7 +822,7 @@ static void Agd_ShowOneEvent (struct Agd_Agenda *Agenda,
StartEndTime++) StartEndTime++)
{ {
if (asprintf (&Id,"agd_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"agd_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"%s LB COLOR%u\"", HTM_TD_Begin ("id=\"%s\" class=\"%s LB COLOR%u\"",
Id, Id,
AgdEvent.Hidden ? Dat_TimeStatusClassHidden[AgdEvent.TimeStatus] : AgdEvent.Hidden ? Dat_TimeStatusClassHidden[AgdEvent.TimeStatus] :
@ -1074,7 +1075,7 @@ static void Agd_GetListEvents (struct Agd_Agenda *Agenda,
{ {
if (asprintf (&UsrSubQuery,"UsrCod=%ld", if (asprintf (&UsrSubQuery,"UsrCod=%ld",
Gbl.Usrs.Me.UsrDat.UsrCod) < 0) Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (AgendaType == Agd_MY_AGENDA_TODAY) if (AgendaType == Agd_MY_AGENDA_TODAY)
Str_Copy (Past__FutureEventsSubQuery, Str_Copy (Past__FutureEventsSubQuery,
" AND DATE(StartTime)<=CURDATE()" " AND DATE(StartTime)<=CURDATE()"
@ -1131,7 +1132,7 @@ static void Agd_GetListEvents (struct Agd_Agenda *Agenda,
case Agd_ANOTHER_AGENDA: case Agd_ANOTHER_AGENDA:
if (asprintf (&UsrSubQuery,"UsrCod=%ld", if (asprintf (&UsrSubQuery,"UsrCod=%ld",
Gbl.Usrs.Other.UsrDat.UsrCod) < 0) Gbl.Usrs.Other.UsrDat.UsrCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (AgendaType == Agd_ANOTHER_AGENDA_TODAY) if (AgendaType == Agd_ANOTHER_AGENDA_TODAY)
Str_Copy (Past__FutureEventsSubQuery, Str_Copy (Past__FutureEventsSubQuery,
" AND DATE(StartTime)<=CURDATE()" " AND DATE(StartTime)<=CURDATE()"
@ -1170,7 +1171,7 @@ static void Agd_GetListEvents (struct Agd_Agenda *Agenda,
/***** Create list of events *****/ /***** Create list of events *****/
if ((Agenda->LstAgdCods = calloc ((size_t) Agenda->Num, if ((Agenda->LstAgdCods = calloc ((size_t) Agenda->Num,
sizeof (*Agenda->LstAgdCods))) == NULL) sizeof (*Agenda->LstAgdCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the events codes *****/ /***** Get the events codes *****/
for (NumEvent = 0; for (NumEvent = 0;
@ -1178,7 +1179,7 @@ static void Agd_GetListEvents (struct Agd_Agenda *Agenda,
NumEvent++) NumEvent++)
/* Get next event code */ /* Get next event code */
if ((Agenda->LstAgdCods[NumEvent] = DB_GetNextCode (mysql_res)) < 0) if ((Agenda->LstAgdCods[NumEvent] = DB_GetNextCode (mysql_res)) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
@ -1327,7 +1328,7 @@ void Agd_AskRemEvent (void)
/***** Get event code *****/ /***** Get event code *****/
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0) if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Get data of the event from database *****/ /***** Get data of the event from database *****/
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod; AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
@ -1363,7 +1364,7 @@ void Agd_RemoveEvent (void)
/***** Get event code *****/ /***** Get event code *****/
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0) if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Get data of the event from database *****/ /***** Get data of the event from database *****/
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod; AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
@ -1402,7 +1403,7 @@ void Agd_HideEvent (void)
/***** Get event code *****/ /***** Get event code *****/
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0) if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Get data of the event from database *****/ /***** Get data of the event from database *****/
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod; AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
@ -1438,7 +1439,7 @@ void Agd_UnhideEvent (void)
/***** Get event code *****/ /***** Get event code *****/
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0) if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Get data of the event from database *****/ /***** Get data of the event from database *****/
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod; AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
@ -1475,7 +1476,7 @@ void Agd_MakeEventPrivate (void)
/***** Get event code *****/ /***** Get event code *****/
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0) if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Get data of the event from database *****/ /***** Get data of the event from database *****/
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod; AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
@ -1516,7 +1517,7 @@ void Agd_MakeEventPublic (void)
/***** Get event code *****/ /***** Get event code *****/
if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0) if ((AgdEvent.AgdCod = Agd_GetParamAgdCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Get data of the event from database *****/ /***** Get data of the event from database *****/
AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod; AgdEvent.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
@ -1932,7 +1933,7 @@ unsigned Agd_GetNumUsrsWithEvents (Hie_Lvl_Level_t Scope)
" AND crs_users.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
return 0; // Not reached return 0; // Not reached
} }
} }
@ -2023,7 +2024,7 @@ unsigned Agd_GetNumEvents (Hie_Lvl_Level_t Scope)
" AND crs_users.UsrCod=agd_agendas.UsrCod", " AND crs_users.UsrCod=agd_agendas.UsrCod",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
return 0; // Not reached return 0; // Not reached
} }
} }

View File

@ -33,6 +33,7 @@
#include <string.h> // For string functions #include <string.h> // For string functions
#include "swad_alert.h" #include "swad_alert.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -78,7 +79,7 @@ void Ale_CreateAlert (Ale_AlertType_t Type,const char *Section,
size_t i; size_t i;
if (Gbl.Alerts.Num + 1 > Ale_MAX_ALERTS) if (Gbl.Alerts.Num + 1 > Ale_MAX_ALERTS)
Lay_ShowErrorAndExit ("Too many alerts."); Err_ShowErrorAndExit ("Too many alerts.");
i = Gbl.Alerts.Num; i = Gbl.Alerts.Num;
Gbl.Alerts.Num++; Gbl.Alerts.Num++;
@ -90,13 +91,13 @@ void Ale_CreateAlert (Ale_AlertType_t Type,const char *Section,
if (Section[0]) if (Section[0])
if (asprintf (&Gbl.Alerts.List[i].Section,"%s", if (asprintf (&Gbl.Alerts.List[i].Section,"%s",
Section) < 0) Section) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
va_start (ap,fmt); va_start (ap,fmt);
NumBytesPrinted = vasprintf (&Gbl.Alerts.List[i].Text,fmt,ap); NumBytesPrinted = vasprintf (&Gbl.Alerts.List[i].Text,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -203,7 +204,7 @@ static void Ale_ResetAlert (size_t i)
void Ale_ShowAlertsAndExit () void Ale_ShowAlertsAndExit ()
{ {
Ale_ShowAlerts (NULL); Ale_ShowAlerts (NULL);
Lay_ShowErrorAndExit (NULL); Err_ShowErrorAndExit (NULL);
} }
/*****************************************************************************/ /*****************************************************************************/
@ -254,7 +255,7 @@ void Ale_ShowAlert (Ale_AlertType_t AlertType,const char *fmt,...)
NumBytesPrinted = vasprintf (&Txt,fmt,ap); NumBytesPrinted = vasprintf (&Txt,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Show alert *****/ /***** Show alert *****/
Ale_ShowFixAlert (AlertType,Txt); Ale_ShowFixAlert (AlertType,Txt);
@ -328,7 +329,7 @@ void Ale_ShowAlertAndButton (Act_Action_t NextAction,const char *Anchor,const ch
NumBytesPrinted = vasprintf (&Txt,fmt,ap); NumBytesPrinted = vasprintf (&Txt,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/****** Print fix alert and button ******/ /****** Print fix alert and button ******/
Ale_ShowFixAlertAndButton1 (AlertType,Txt); Ale_ShowFixAlertAndButton1 (AlertType,Txt);
@ -355,7 +356,7 @@ void Ale_ShowAlertAndButton1 (Ale_AlertType_t AlertType,const char *fmt,...)
NumBytesPrinted = vasprintf (&Txt,fmt,ap); NumBytesPrinted = vasprintf (&Txt,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/****** Print start of fix alert and button ******/ /****** Print start of fix alert and button ******/
Ale_ShowFixAlertAndButton1 (AlertType,Txt); Ale_ShowFixAlertAndButton1 (AlertType,Txt);

View File

@ -28,6 +28,7 @@
#include "swad_announcement.h" #include "swad_announcement.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -155,7 +156,7 @@ void Ann_ShowAllAnnouncements (void)
/* Get announcement code (row[0]) */ /* Get announcement code (row[0]) */
if (sscanf (row[0],"%ld",&AnnCod) != 1) if (sscanf (row[0],"%ld",&AnnCod) != 1)
Lay_WrongAnnouncementExit (); Err_WrongAnnouncementExit ();
/* Get status of the announcement (row[1]) */ /* Get status of the announcement (row[1]) */
Status = Ann_OBSOLETE_ANNOUNCEMENT; Status = Ann_OBSOLETE_ANNOUNCEMENT;
@ -165,7 +166,7 @@ void Ann_ShowAllAnnouncements (void)
/* Get roles (row[2]) */ /* Get roles (row[2]) */
if (sscanf (row[2],"%u",&Roles) != 1) if (sscanf (row[2],"%u",&Roles) != 1)
Lay_ShowErrorAndExit ("Error when reading roles of announcement."); Err_ShowErrorAndExit ("Error when reading roles of announcement.");
/* Get the subject (row[3]), the content (row[4]), and insert links */ /* Get the subject (row[3]), the content (row[4]), and insert links */
Str_Copy (Subject,row[3],sizeof (Subject) - 1); Str_Copy (Subject,row[3],sizeof (Subject) - 1);
@ -260,7 +261,7 @@ void Ann_ShowMyAnnouncementsNotMarkedAsSeen (void)
/* Get announcement code (row[0]) */ /* Get announcement code (row[0]) */
if (sscanf (row[0],"%ld",&AnnCod) != 1) if (sscanf (row[0],"%ld",&AnnCod) != 1)
Lay_WrongAnnouncementExit (); Err_WrongAnnouncementExit ();
/* Get the subject (row[1]), the content (row[2]), and insert links */ /* Get the subject (row[1]), the content (row[2]), and insert links */
Str_Copy (Subject,row[1],sizeof (Subject) - 1); Str_Copy (Subject,row[1],sizeof (Subject) - 1);
@ -395,7 +396,7 @@ static long Ann_GetParamAnnCod (void)
/***** Get announcement code *****/ /***** Get announcement code *****/
if ((AnnCod = Par_GetParToLong ("AnnCod")) <= 0) if ((AnnCod = Par_GetParToLong ("AnnCod")) <= 0)
Lay_WrongAnnouncementExit (); Err_WrongAnnouncementExit ();
return AnnCod; return AnnCod;
} }

View File

@ -35,6 +35,7 @@
#include "swad_assignment.h" #include "swad_assignment.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -416,7 +417,7 @@ static void Asg_ShowOneAssignment (struct Asg_Assignments *Assignments,
StartEndTime++) StartEndTime++)
{ {
if (asprintf (&Id,"asg_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"asg_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (PrintView) if (PrintView)
HTM_TD_Begin ("id=\"%s\" class=\"%s LB\"", HTM_TD_Begin ("id=\"%s\" class=\"%s LB\"",
Id, Id,
@ -549,7 +550,7 @@ static void Asg_WriteAssignmentFolder (struct Asg_Assignment *Asg,bool PrintView
Frm_BeginForm (ActFrmCreAsgCrs); Frm_BeginForm (ActFrmCreAsgCrs);
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
Str_Copy (Gbl.FileBrowser.FilFolLnk.Path,Brw_INTERNAL_NAME_ROOT_FOLDER_ASSIGNMENTS, Str_Copy (Gbl.FileBrowser.FilFolLnk.Path,Brw_INTERNAL_NAME_ROOT_FOLDER_ASSIGNMENTS,
@ -734,7 +735,7 @@ static void Asg_GetListAssignments (struct Asg_Assignments *Assignments)
/***** Create list of assignments *****/ /***** Create list of assignments *****/
if ((Assignments->LstAsgCods = calloc (NumAsgs, if ((Assignments->LstAsgCods = calloc (NumAsgs,
sizeof (*Assignments->LstAsgCods))) == NULL) sizeof (*Assignments->LstAsgCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the assignments codes *****/ /***** Get the assignments codes *****/
for (NumAsg = 0; for (NumAsg = 0;
@ -743,7 +744,7 @@ static void Asg_GetListAssignments (struct Asg_Assignments *Assignments)
{ {
/* Get next assignment code */ /* Get next assignment code */
if ((Assignments->LstAsgCods[NumAsg] = DB_GetNextCode (mysql_res)) <= 0) if ((Assignments->LstAsgCods[NumAsg] = DB_GetNextCode (mysql_res)) <= 0)
Lay_WrongAssignmentExit (); Err_WrongAssignmentExit ();
} }
} }
else else
@ -985,7 +986,7 @@ void Asg_GetNotifAssignment (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
{ {
Length = strlen (row[1]); Length = strlen (row[1]);
if ((*ContentStr = malloc (Length + 1)) == NULL) if ((*ContentStr = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (*ContentStr,row[1],Length); Str_Copy (*ContentStr,row[1],Length);
} }
} }
@ -1034,7 +1035,7 @@ void Asg_ReqRemAssignment (void)
/***** Get assignment code *****/ /***** Get assignment code *****/
if ((Asg.AsgCod = Asg_GetParamAsgCod ()) <= 0) if ((Asg.AsgCod = Asg_GetParamAsgCod ()) <= 0)
Lay_WrongAssignmentExit (); Err_WrongAssignmentExit ();
/***** Get data of the assignment from database *****/ /***** Get data of the assignment from database *****/
Asg_GetDataOfAssignmentByCod (&Asg); Asg_GetDataOfAssignmentByCod (&Asg);
@ -1071,7 +1072,7 @@ void Asg_RemoveAssignment (void)
/***** Get assignment code *****/ /***** Get assignment code *****/
if ((Asg.AsgCod = Asg_GetParamAsgCod ()) <= 0) if ((Asg.AsgCod = Asg_GetParamAsgCod ()) <= 0)
Lay_WrongAssignmentExit (); Err_WrongAssignmentExit ();
/***** Get data of the assignment from database *****/ /***** Get data of the assignment from database *****/
Asg_GetDataOfAssignmentByCod (&Asg); // Inside this function, the course is checked to be the current one Asg_GetDataOfAssignmentByCod (&Asg); // Inside this function, the course is checked to be the current one
@ -1121,7 +1122,7 @@ void Asg_HideAssignment (void)
/***** Get assignment code *****/ /***** Get assignment code *****/
if ((Asg.AsgCod = Asg_GetParamAsgCod ()) <= 0) if ((Asg.AsgCod = Asg_GetParamAsgCod ()) <= 0)
Lay_WrongAssignmentExit (); Err_WrongAssignmentExit ();
/***** Get data of the assignment from database *****/ /***** Get data of the assignment from database *****/
Asg_GetDataOfAssignmentByCod (&Asg); Asg_GetDataOfAssignmentByCod (&Asg);
@ -1158,7 +1159,7 @@ void Asg_ShowAssignment (void)
/***** Get assignment code *****/ /***** Get assignment code *****/
if ((Asg.AsgCod = Asg_GetParamAsgCod ()) <= 0) if ((Asg.AsgCod = Asg_GetParamAsgCod ()) <= 0)
Lay_WrongAssignmentExit (); Err_WrongAssignmentExit ();
/***** Get data of the assignment from database *****/ /***** Get data of the assignment from database *****/
Asg_GetDataOfAssignmentByCod (&Asg); Asg_GetDataOfAssignmentByCod (&Asg);
@ -1926,7 +1927,7 @@ unsigned Asg_GetNumCoursesWithAssignments (Hie_Lvl_Level_t Scope)
" WHERE CrsCod=%ld", " WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
return 0; return 0;
} }
} }
@ -2014,20 +2015,20 @@ unsigned Asg_GetNumAssignments (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
/***** Get number of assignments *****/ /***** Get number of assignments *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumAssignments) != 1) if (sscanf (row[0],"%u",&NumAssignments) != 1)
Lay_ShowErrorAndExit ("Error when getting number of assignments."); Err_ShowErrorAndExit ("Error when getting number of assignments.");
/***** Get number of notifications by email *****/ /***** Get number of notifications by email *****/
if (row[1]) if (row[1])
{ {
if (sscanf (row[1],"%u",NumNotif) != 1) if (sscanf (row[1],"%u",NumNotif) != 1)
Lay_ShowErrorAndExit ("Error when getting number of notifications of assignments."); Err_ShowErrorAndExit ("Error when getting number of notifications of assignments.");
} }
else else
*NumNotif = 0; *NumNotif = 0;

View File

@ -36,6 +36,7 @@
#include "swad_attendance.h" #include "swad_attendance.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_group.h" #include "swad_group.h"
@ -486,7 +487,7 @@ static void Att_ShowOneAttEvent (struct Att_Events *Events,
StartEndTime++) StartEndTime++)
{ {
if (asprintf (&Id,"att_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"att_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (ShowOnlyThisAttEventComplete) if (ShowOnlyThisAttEventComplete)
HTM_TD_Begin ("id=\"%s\" class=\"%s LB\"", HTM_TD_Begin ("id=\"%s\" class=\"%s LB\"",
Id, Id,
@ -711,7 +712,7 @@ static void Att_GetListAttEvents (struct Att_Events *Events,
{ {
/***** Create list of attendance events *****/ /***** Create list of attendance events *****/
if ((Events->Lst = calloc (Events->Num,sizeof (*Events->Lst))) == NULL) if ((Events->Lst = calloc (Events->Num,sizeof (*Events->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the attendance events codes *****/ /***** Get the attendance events codes *****/
for (NumAttEvent = 0; for (NumAttEvent = 0;
@ -720,7 +721,7 @@ static void Att_GetListAttEvents (struct Att_Events *Events,
{ {
/* Get next attendance event code */ /* Get next attendance event code */
if ((Events->Lst[NumAttEvent].AttCod = DB_GetNextCode (mysql_res)) < 0) if ((Events->Lst[NumAttEvent].AttCod = DB_GetNextCode (mysql_res)) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
} }
} }
@ -739,10 +740,10 @@ static void Att_GetDataOfAttEventByCodAndCheckCrs (struct Att_Event *Event)
if (Att_GetDataOfAttEventByCod (Event)) if (Att_GetDataOfAttEventByCod (Event))
{ {
if (Event->CrsCod != Gbl.Hierarchy.Crs.CrsCod) if (Event->CrsCod != Gbl.Hierarchy.Crs.CrsCod)
Lay_WrongEventExit (); Err_WrongEventExit ();
} }
else // Attendance event not found else // Attendance event not found
Lay_WrongEventExit (); Err_WrongEventExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -920,7 +921,7 @@ void Att_AskRemAttEvent (void)
/***** Get attendance event code *****/ /***** Get attendance event code *****/
if ((Event.AttCod = Att_GetParamAttCod ()) < 0) if ((Event.AttCod = Att_GetParamAttCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Get data of the attendance event from database *****/ /***** Get data of the attendance event from database *****/
Att_GetDataOfAttEventByCodAndCheckCrs (&Event); Att_GetDataOfAttEventByCodAndCheckCrs (&Event);
@ -955,7 +956,7 @@ void Att_GetAndRemAttEvent (void)
/***** Get attendance event code *****/ /***** Get attendance event code *****/
if ((Event.AttCod = Att_GetParamAttCod ()) < 0) if ((Event.AttCod = Att_GetParamAttCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Get data of the attendance event from database *****/ /***** Get data of the attendance event from database *****/
// Inside this function, the course is checked to be the current one // Inside this function, the course is checked to be the current one
@ -998,7 +999,7 @@ void Att_HideAttEvent (void)
/***** Get attendance event code *****/ /***** Get attendance event code *****/
if ((Event.AttCod = Att_GetParamAttCod ()) < 0) if ((Event.AttCod = Att_GetParamAttCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Get data of the attendance event from database *****/ /***** Get data of the attendance event from database *****/
Att_GetDataOfAttEventByCodAndCheckCrs (&Event); Att_GetDataOfAttEventByCodAndCheckCrs (&Event);
@ -1026,7 +1027,7 @@ void Att_ShowAttEvent (void)
/***** Get attendance event code *****/ /***** Get attendance event code *****/
if ((Event.AttCod = Att_GetParamAttCod ()) < 0) if ((Event.AttCod = Att_GetParamAttCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Get data of the attendance event from database *****/ /***** Get data of the attendance event from database *****/
Att_GetDataOfAttEventByCodAndCheckCrs (&Event); Att_GetDataOfAttEventByCodAndCheckCrs (&Event);
@ -1753,7 +1754,7 @@ unsigned Att_GetNumCoursesWithAttEvents (Hie_Lvl_Level_t Scope)
" WHERE CrsCod=%ld", " WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
return 0; // Not reached return 0; // Not reached
} }
} }
@ -1825,20 +1826,20 @@ unsigned Att_GetNumAttEvents (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
/***** Get number of attendance events *****/ /***** Get number of attendance events *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumAttEvents) != 1) if (sscanf (row[0],"%u",&NumAttEvents) != 1)
Lay_ShowErrorAndExit ("Error when getting number of attendance events."); Err_ShowErrorAndExit ("Error when getting number of attendance events.");
/***** Get number of notifications by email *****/ /***** Get number of notifications by email *****/
if (row[1]) if (row[1])
{ {
if (sscanf (row[1],"%u",NumNotif) != 1) if (sscanf (row[1],"%u",NumNotif) != 1)
Lay_ShowErrorAndExit ("Error when getting number of notifications of attendance events."); Err_ShowErrorAndExit ("Error when getting number of notifications of attendance events.");
} }
else else
*NumNotif = 0; *NumNotif = 0;
@ -1862,7 +1863,7 @@ void Att_SeeOneAttEvent (void)
/***** Get attendance event code *****/ /***** Get attendance event code *****/
if ((Events.AttCod = Att_GetParamAttCod ()) < 0) if ((Events.AttCod = Att_GetParamAttCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
/***** Show event *****/ /***** Show event *****/
Att_ShowEvent (&Events); Att_ShowEvent (&Events);
@ -2097,7 +2098,7 @@ static void Att_WriteRowUsrToCallTheRoll (unsigned NumUsr,
// A student can see only her/his attendance // A student can see only her/his attendance
ItsMe = Usr_ItsMe (UsrDat->UsrCod); ItsMe = Usr_ItsMe (UsrDat->UsrCod);
if (!ItsMe) if (!ItsMe)
Lay_ShowErrorAndExit ("Wrong call."); Err_ShowErrorAndExit ("Wrong call.");
ICanChangeStdAttendance = false; ICanChangeStdAttendance = false;
ICanEditStdComment = Event->Open; // Attendance event is open ICanEditStdComment = Event->Open; // Attendance event is open
ICanEditTchComment = false; ICanEditTchComment = false;
@ -2260,7 +2261,7 @@ static void Att_PutParamsCodGrps (long AttCod)
{ {
MaxLengthGrpCods = NumGrps * (1 + 20) - 1; MaxLengthGrpCods = NumGrps * (1 + 20) - 1;
if ((GrpCods = malloc (MaxLengthGrpCods + 1)) == NULL) if ((GrpCods = malloc (MaxLengthGrpCods + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
GrpCods[0] = '\0'; GrpCods[0] = '\0';
/* Get groups */ /* Get groups */
@ -2307,7 +2308,7 @@ void Att_RegisterMeAsStdInAttEvent (void)
/***** Get attendance event code *****/ /***** Get attendance event code *****/
if ((Event.AttCod = Att_GetParamAttCod ()) < 0) if ((Event.AttCod = Att_GetParamAttCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
Att_GetDataOfAttEventByCodAndCheckCrs (&Event); // This checks that event belong to current course Att_GetDataOfAttEventByCodAndCheckCrs (&Event); // This checks that event belong to current course
if (Event.Open) if (Event.Open)
@ -2372,7 +2373,7 @@ void Att_RegisterStudentsInAttEvent (void)
/***** Get attendance event code *****/ /***** Get attendance event code *****/
if ((Event.AttCod = Att_GetParamAttCod ()) < 0) if ((Event.AttCod = Att_GetParamAttCod ()) < 0)
Lay_WrongEventExit (); Err_WrongEventExit ();
Att_GetDataOfAttEventByCodAndCheckCrs (&Event); // This checks that event belong to current course Att_GetDataOfAttEventByCodAndCheckCrs (&Event); // This checks that event belong to current course
/***** Get groups selected *****/ /***** Get groups selected *****/
@ -2739,7 +2740,7 @@ static void Att_ReqListOrPrintUsrsAttendanceCrs (void *TypeOfView)
Att_FreeListAttEvents (&Events); Att_FreeListAttEvents (&Events);
break; break;
default: default:
Lay_WrongTypeOfViewExit (); Err_WrongTypeOfViewExit ();
break; break;
} }
} }
@ -2807,7 +2808,7 @@ static void Att_ListOrPrintMyAttendanceCrs (Att_TypeOfView_t TypeOfView)
NULL,Box_NOT_CLOSABLE); NULL,Box_NOT_CLOSABLE);
break; break;
default: default:
Lay_WrongTypeOfViewExit (); Err_WrongTypeOfViewExit ();
break; break;
} }
@ -2837,7 +2838,7 @@ static void Att_ListOrPrintMyAttendanceCrs (Att_TypeOfView_t TypeOfView)
Att_FreeListAttEvents (&Events); Att_FreeListAttEvents (&Events);
break; break;
default: default:
Lay_WrongTypeOfViewExit (); Err_WrongTypeOfViewExit ();
break; break;
} }
} }
@ -2923,7 +2924,7 @@ static void Att_ListOrPrintUsrsAttendanceCrs (void *TypeOfView)
NULL,Box_NOT_CLOSABLE); NULL,Box_NOT_CLOSABLE);
break; break;
default: default:
Lay_WrongTypeOfViewExit (); Err_WrongTypeOfViewExit ();
} }
/***** List events to select *****/ /***** List events to select *****/
@ -2957,7 +2958,7 @@ static void Att_ListOrPrintUsrsAttendanceCrs (void *TypeOfView)
Grp_FreeListCodSelectedGrps (); Grp_FreeListCodSelectedGrps ();
break; break;
default: default:
Lay_WrongTypeOfViewExit (); Err_WrongTypeOfViewExit ();
break; break;
} }
} }
@ -2982,7 +2983,7 @@ static void Att_GetListSelectedAttCods (struct Att_Events *Events)
/***** Allocate memory for list of attendance events selected *****/ /***** Allocate memory for list of attendance events selected *****/
MaxSizeListAttCodsSelected = (size_t) Events->Num * (Cns_MAX_DECIMAL_DIGITS_LONG + 1); MaxSizeListAttCodsSelected = (size_t) Events->Num * (Cns_MAX_DECIMAL_DIGITS_LONG + 1);
if ((Events->StrAttCodsSelected = malloc (MaxSizeListAttCodsSelected + 1)) == NULL) if ((Events->StrAttCodsSelected = malloc (MaxSizeListAttCodsSelected + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get parameter multiple with list of attendance events selected *****/ /***** Get parameter multiple with list of attendance events selected *****/
Par_GetParMultiToText ("AttCods",Events->StrAttCodsSelected,MaxSizeListAttCodsSelected); Par_GetParMultiToText ("AttCods",Events->StrAttCodsSelected,MaxSizeListAttCodsSelected);
@ -3241,7 +3242,7 @@ static void Att_ListEventsToSelect (const struct Att_Events *Events,
HTM_TD_End (); HTM_TD_End ();
if (asprintf (&Id,"att_date_start_%u",UniqueId) < 0) if (asprintf (&Id,"att_date_start_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd); HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
HTM_LABEL_Begin ("for=\"Event%u\"",NumAttEvent); HTM_LABEL_Begin ("for=\"Event%u\"",NumAttEvent);
HTM_SPAN_Begin ("id=\"%s\"",Id); HTM_SPAN_Begin ("id=\"%s\"",Id);
@ -3684,7 +3685,7 @@ static void Att_ListAttEventsForAStd (const struct Att_Events *Events,
HTM_TD_End (); HTM_TD_End ();
if (asprintf (&Id,"att_date_start_%u_%u",NumUsr,UniqueId) < 0) if (asprintf (&Id,"att_date_start_%u_%u",NumUsr,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd); HTM_TD_Begin ("class=\"DAT LT COLOR%u\"",Gbl.RowEvenOdd);
HTM_SPAN_Begin ("id=\"%s\"",Id); HTM_SPAN_Begin ("id=\"%s\"",Id);
HTM_SPAN_End (); HTM_SPAN_End ();

View File

@ -33,6 +33,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_constant.h" #include "swad_constant.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -311,7 +312,7 @@ static void Ban_GetListBanners (struct Ban_Banners *Banners,
/***** Create list with banners *****/ /***** Create list with banners *****/
if ((Banners->Lst = calloc ((size_t) Banners->Num,sizeof (*Banners->Lst))) == NULL) if ((Banners->Lst = calloc ((size_t) Banners->Num,sizeof (*Banners->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the banners *****/ /***** Get the banners *****/
for (NumBan = 0; for (NumBan = 0;
@ -325,7 +326,7 @@ static void Ban_GetListBanners (struct Ban_Banners *Banners,
/* Get banner code (row[0]) */ /* Get banner code (row[0]) */
if ((Ban->BanCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Ban->BanCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongBannerExit (); Err_WrongBannerExit ();
/* Get if banner is hidden (row[1]) */ /* Get if banner is hidden (row[1]) */
Ban->Hidden = (row[1][0] == 'Y'); Ban->Hidden = (row[1][0] == 'Y');
@ -573,7 +574,7 @@ void Ban_RemoveBanner (void)
/***** Get banner code *****/ /***** Get banner code *****/
if ((Ban.BanCod = Ban_GetParamBanCod ()) <= 0) if ((Ban.BanCod = Ban_GetParamBanCod ()) <= 0)
Lay_WrongBannerExit (); Err_WrongBannerExit ();
/***** Get data of the banner from database *****/ /***** Get data of the banner from database *****/
Ban_GetDataOfBannerByCod (&Ban); Ban_GetDataOfBannerByCod (&Ban);
@ -637,7 +638,7 @@ static void Ban_ShowOrHideBanner (struct Ban_Banner *Ban,bool Hide)
{ {
/***** Get banner code *****/ /***** Get banner code *****/
if ((Ban->BanCod = Ban_GetParamBanCod ()) <= 0) if ((Ban->BanCod = Ban_GetParamBanCod ()) <= 0)
Lay_WrongBannerExit (); Err_WrongBannerExit ();
/***** Get data of the banner from database *****/ /***** Get data of the banner from database *****/
Ban_GetDataOfBannerByCod (Ban); Ban_GetDataOfBannerByCod (Ban);
@ -724,7 +725,7 @@ static void Ban_RenameBanner (struct Ban_Banner *Ban,
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the banner */ /* Get the code of the banner */
if ((Ban->BanCod = Ban_GetParamBanCod ()) <= 0) if ((Ban->BanCod = Ban_GetParamBanCod ()) <= 0)
Lay_WrongBannerExit (); Err_WrongBannerExit ();
/* Get the new name for the banner */ /* Get the new name for the banner */
Par_GetParToText (ParamName,NewBanName,MaxBytes); Par_GetParToText (ParamName,NewBanName,MaxBytes);
@ -816,7 +817,7 @@ void Ban_ChangeBannerImg (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the banner */ /* Get the code of the banner */
if ((Ban.BanCod = Ban_GetParamBanCod ()) <= 0) if ((Ban.BanCod = Ban_GetParamBanCod ()) <= 0)
Lay_WrongBannerExit (); Err_WrongBannerExit ();
/* Get the new WWW for the banner */ /* Get the new WWW for the banner */
Par_GetParToText ("Img",NewImg,Ban_MAX_BYTES_IMAGE); Par_GetParToText ("Img",NewImg,Ban_MAX_BYTES_IMAGE);
@ -867,7 +868,7 @@ void Ban_ChangeBannerWWW (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the banner */ /* Get the code of the banner */
if ((Ban.BanCod = Ban_GetParamBanCod ()) <= 0) if ((Ban.BanCod = Ban_GetParamBanCod ()) <= 0)
Lay_WrongBannerExit (); Err_WrongBannerExit ();
/* Get the new WWW for the banner */ /* Get the new WWW for the banner */
Par_GetParToText ("WWW",NewWWW,Cns_MAX_BYTES_WWW); Par_GetParToText ("WWW",NewWWW,Cns_MAX_BYTES_WWW);
@ -1156,7 +1157,7 @@ void Ban_ClickOnBanner (void)
/***** Get banner code *****/ /***** Get banner code *****/
if ((Ban.BanCod = Ban_GetParamBanCod ()) <= 0) if ((Ban.BanCod = Ban_GetParamBanCod ()) <= 0)
Lay_WrongBannerExit (); Err_WrongBannerExit ();
/***** Get data of the banner from database *****/ /***** Get data of the banner from database *****/
Ban_GetDataOfBannerByCod (&Ban); Ban_GetDataOfBannerByCod (&Ban);

View File

@ -30,6 +30,7 @@
#include "swad_action.h" #include "swad_action.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_help.h" #include "swad_help.h"
@ -124,7 +125,7 @@ static void Box_BoxInternalBegin (const char *Width,const char *Title,
/***** Check level of nesting *****/ /***** Check level of nesting *****/
if (Gbl.Box.Nested >= Box_MAX_NESTED - 1) // Can not nest a new box if (Gbl.Box.Nested >= Box_MAX_NESTED - 1) // Can not nest a new box
Lay_ShowErrorAndExit ("Box nesting limit reached."); Err_ShowErrorAndExit ("Box nesting limit reached.");
/***** Increase level of nesting *****/ /***** Increase level of nesting *****/
Gbl.Box.Nested++; Gbl.Box.Nested++;
@ -133,7 +134,7 @@ static void Box_BoxInternalBegin (const char *Width,const char *Title,
if (Closable == Box_CLOSABLE) if (Closable == Box_CLOSABLE)
{ {
if ((Gbl.Box.Ids[Gbl.Box.Nested] = malloc (Frm_MAX_BYTES_ID + 1)) == NULL) if ((Gbl.Box.Ids[Gbl.Box.Nested] = malloc (Frm_MAX_BYTES_ID + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
Gbl.Box.Ids[Gbl.Box.Nested] = NULL; Gbl.Box.Ids[Gbl.Box.Nested] = NULL;
@ -224,7 +225,7 @@ void Box_BoxEnd (void)
{ {
/***** Check level of nesting *****/ /***** Check level of nesting *****/
if (Gbl.Box.Nested < 0) if (Gbl.Box.Nested < 0)
Lay_ShowErrorAndExit ("Trying to end a box not open."); Err_ShowErrorAndExit ("Trying to end a box not open.");
/***** Free memory allocated for box id string *****/ /***** Free memory allocated for box id string *****/
if (Gbl.Box.Ids[Gbl.Box.Nested]) if (Gbl.Box.Ids[Gbl.Box.Nested])

View File

@ -32,6 +32,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_building.h" #include "swad_building.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -355,7 +356,7 @@ void Bld_GetListBuildings (struct Bld_Buildings *Buildings,
{ {
/***** Create list with courses in center *****/ /***** Create list with courses in center *****/
if ((Buildings->Lst = calloc ((size_t) Buildings->Num,sizeof (*Buildings->Lst))) == NULL) if ((Buildings->Lst = calloc ((size_t) Buildings->Num,sizeof (*Buildings->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the buildings *****/ /***** Get the buildings *****/
for (NumBuilding = 0; for (NumBuilding = 0;
@ -369,7 +370,7 @@ void Bld_GetListBuildings (struct Bld_Buildings *Buildings,
/* Get building code (row[0]) */ /* Get building code (row[0]) */
if ((Building->BldCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Building->BldCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongBuildingExit (); Err_WrongBuildingExit ();
/* Get the short name of the building (row[1]) */ /* Get the short name of the building (row[1]) */
Str_Copy (Building->ShrtName,row[1],sizeof (Building->ShrtName) - 1); Str_Copy (Building->ShrtName,row[1],sizeof (Building->ShrtName) - 1);
@ -552,7 +553,7 @@ void Bld_RemoveBuilding (void)
/***** Get building code *****/ /***** Get building code *****/
if ((Bld_EditingBuilding->BldCod = Bld_GetParamBldCod ()) <= 0) if ((Bld_EditingBuilding->BldCod = Bld_GetParamBldCod ()) <= 0)
Lay_WrongBuildingExit (); Err_WrongBuildingExit ();
/***** Get data of the building from database *****/ /***** Get data of the building from database *****/
Bld_GetDataOfBuildingByCod (Bld_EditingBuilding); Bld_GetDataOfBuildingByCod (Bld_EditingBuilding);
@ -649,7 +650,7 @@ static void Bld_RenameBuilding (Cns_ShrtOrFullName_t ShrtOrFullName)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the building */ /* Get the code of the building */
if ((Bld_EditingBuilding->BldCod = Bld_GetParamBldCod ()) <= 0) if ((Bld_EditingBuilding->BldCod = Bld_GetParamBldCod ()) <= 0)
Lay_WrongBuildingExit (); Err_WrongBuildingExit ();
/* Get the new name for the building */ /* Get the new name for the building */
Par_GetParToText (ParamName,NewClaName,MaxBytes); Par_GetParToText (ParamName,NewClaName,MaxBytes);
@ -742,7 +743,7 @@ void Bld_ChangeBuildingLocation (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the building */ /* Get the code of the building */
if ((Bld_EditingBuilding->BldCod = Bld_GetParamBldCod ()) <= 0) if ((Bld_EditingBuilding->BldCod = Bld_GetParamBldCod ()) <= 0)
Lay_WrongBuildingExit (); Err_WrongBuildingExit ();
/* Get the new location for the building */ /* Get the new location for the building */
Par_GetParToText ("Location",NewLocation,Bld_MAX_BYTES_LOCATION); Par_GetParToText ("Location",NewLocation,Bld_MAX_BYTES_LOCATION);
@ -942,11 +943,11 @@ static void Bld_EditingBuildingConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Bld_EditingBuilding != NULL) if (Bld_EditingBuilding != NULL)
Lay_WrongBuildingExit (); Err_WrongBuildingExit ();
/***** Allocate memory for building *****/ /***** Allocate memory for building *****/
if ((Bld_EditingBuilding = malloc (sizeof (*Bld_EditingBuilding))) == NULL) if ((Bld_EditingBuilding = malloc (sizeof (*Bld_EditingBuilding))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset building *****/ /***** Reset building *****/
Bld_EditingBuilding->BldCod = -1L; Bld_EditingBuilding->BldCod = -1L;

View File

@ -35,6 +35,7 @@
#include "swad_call_for_exam.h" #include "swad_call_for_exam.h"
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_hierarchy.h" #include "swad_hierarchy.h"
@ -262,25 +263,25 @@ static long Cfe_GetParamsCallsForExams (struct Cfe_CallsForExams *CallsForExams)
static void Cfe_AllocMemCallForExam (struct Cfe_CallsForExams *CallsForExams) static void Cfe_AllocMemCallForExam (struct Cfe_CallsForExams *CallsForExams)
{ {
if ((CallsForExams->CallForExam.Place = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((CallsForExams->CallForExam.Place = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if ((CallsForExams->CallForExam.Mode = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((CallsForExams->CallForExam.Mode = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if ((CallsForExams->CallForExam.Structure = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((CallsForExams->CallForExam.Structure = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if ((CallsForExams->CallForExam.DocRequired = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((CallsForExams->CallForExam.DocRequired = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if ((CallsForExams->CallForExam.MatRequired = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((CallsForExams->CallForExam.MatRequired = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if ((CallsForExams->CallForExam.MatAllowed = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((CallsForExams->CallForExam.MatAllowed = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if ((CallsForExams->CallForExam.OtherInfo = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((CallsForExams->CallForExam.OtherInfo = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -424,7 +425,7 @@ void Cfe_PrintCallForExam (void)
/***** Get the code of the call for exam *****/ /***** Get the code of the call for exam *****/
if ((ExaCod = Cfe_GetParamExaCod ()) <= 0) if ((ExaCod = Cfe_GetParamExaCod ()) <= 0)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/***** Read call for exam from the database *****/ /***** Read call for exam from the database *****/
Cfe_GetDataCallForExamFromDB (&CallsForExams,ExaCod); Cfe_GetDataCallForExamFromDB (&CallsForExams,ExaCod);
@ -453,7 +454,7 @@ void Cfe_ReqRemoveCallForExam (void)
/***** Get the code of the call for exam *****/ /***** Get the code of the call for exam *****/
if ((ExaCod = Cfe_GetParamExaCod ()) <= 0) if ((ExaCod = Cfe_GetParamExaCod ()) <= 0)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/***** Show question and button to remove call for exam *****/ /***** Show question and button to remove call for exam *****/
/* Begin alert */ /* Begin alert */
@ -489,7 +490,7 @@ void Cfe_RemoveCallForExam1 (void)
/***** Get the code of the call for exam *****/ /***** Get the code of the call for exam *****/
if ((ExaCod = Cfe_GetParamExaCod ()) <= 0) if ((ExaCod = Cfe_GetParamExaCod ()) <= 0)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/***** Mark the call for exam as deleted in the database *****/ /***** Mark the call for exam as deleted in the database *****/
DB_QueryUPDATE ("can not remove call for exam", DB_QueryUPDATE ("can not remove call for exam",
@ -538,7 +539,7 @@ void Cfe_HideCallForExam (void)
/***** Get the code of the call for exam *****/ /***** Get the code of the call for exam *****/
if ((ExaCod = Cfe_GetParamExaCod ()) <= 0) if ((ExaCod = Cfe_GetParamExaCod ()) <= 0)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/***** Mark the call for exam as hidden in the database *****/ /***** Mark the call for exam as hidden in the database *****/
DB_QueryUPDATE ("can not hide call for exam", DB_QueryUPDATE ("can not hide call for exam",
@ -570,7 +571,7 @@ void Cfe_UnhideCallForExam (void)
/***** Get the code of the call for exam *****/ /***** Get the code of the call for exam *****/
if ((ExaCod = Cfe_GetParamExaCod ()) <= 0) if ((ExaCod = Cfe_GetParamExaCod ()) <= 0)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/***** Mark the call for exam as visible in the database *****/ /***** Mark the call for exam as visible in the database *****/
DB_QueryUPDATE ("can not unhide call for exam", DB_QueryUPDATE ("can not unhide call for exam",
@ -737,7 +738,7 @@ static void Cfe_ListCallsForExams (struct Cfe_CallsForExams *CallsForExams,
{ {
/***** Get the code of the call for exam (row[0]) *****/ /***** Get the code of the call for exam (row[0]) *****/
if ((ExaCod = DB_GetNextCode (mysql_res)) <= 0) if ((ExaCod = DB_GetNextCode (mysql_res)) <= 0)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/***** Allocate memory for the call for exam *****/ /***** Allocate memory for the call for exam *****/
Cfe_AllocMemCallForExam (CallsForExams); Cfe_AllocMemCallForExam (CallsForExams);
@ -921,7 +922,7 @@ void Cfe_CreateListCallsForExams (struct Cfe_CallsForExams *CallsForExams)
{ {
/***** Allocate memory for the list *****/ /***** Allocate memory for the list *****/
if ((CallsForExams->Lst = calloc (NumExaAnns,sizeof (*CallsForExams->Lst))) == NULL) if ((CallsForExams->Lst = calloc (NumExaAnns,sizeof (*CallsForExams->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the dates of the existing calls for exams *****/ /***** Get the dates of the existing calls for exams *****/
for (NumExaAnn = 0; for (NumExaAnn = 0;
@ -939,7 +940,7 @@ void Cfe_CreateListCallsForExams (struct Cfe_CallsForExams *CallsForExams)
&CallsForExams->Lst[CallsForExams->NumCallsForExams].ExamDate.Year, &CallsForExams->Lst[CallsForExams->NumCallsForExams].ExamDate.Year,
&CallsForExams->Lst[CallsForExams->NumCallsForExams].ExamDate.Month, &CallsForExams->Lst[CallsForExams->NumCallsForExams].ExamDate.Month,
&CallsForExams->Lst[CallsForExams->NumCallsForExams].ExamDate.Day) != 3) &CallsForExams->Lst[CallsForExams->NumCallsForExams].ExamDate.Day) != 3)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/***** Increment number of elements in list *****/ /***** Increment number of elements in list *****/
CallsForExams->NumCallsForExams++; CallsForExams->NumCallsForExams++;
@ -999,7 +1000,7 @@ static void Cfe_GetDataCallForExamFromDB (struct Cfe_CallsForExams *CallsForExam
" FROM cfe_exams" " FROM cfe_exams"
" WHERE ExaCod=%ld", " WHERE ExaCod=%ld",
ExaCod) != 1) ExaCod) != 1)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/***** Get the data of the call for exam *****/ /***** Get the data of the call for exam *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -1009,9 +1010,9 @@ static void Cfe_GetDataCallForExamFromDB (struct Cfe_CallsForExams *CallsForExam
/* Status of the call for exam (row[1]) */ /* Status of the call for exam (row[1]) */
if (sscanf (row[1],"%u",&UnsignedNum) != 1) if (sscanf (row[1],"%u",&UnsignedNum) != 1)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
if (UnsignedNum >= Cfe_NUM_STATUS) if (UnsignedNum >= Cfe_NUM_STATUS)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
CallsForExams->CallForExam.Status = (Cfe_Status_t) UnsignedNum; CallsForExams->CallForExam.Status = (Cfe_Status_t) UnsignedNum;
/* Name of the course (row[2]) */ /* Name of the course (row[2]) */
@ -1020,7 +1021,7 @@ static void Cfe_GetDataCallForExamFromDB (struct Cfe_CallsForExams *CallsForExam
/* Year (row[3]) */ /* Year (row[3]) */
if (sscanf (row[3],"%u",&CallsForExams->CallForExam.Year) != 1) if (sscanf (row[3],"%u",&CallsForExams->CallForExam.Year) != 1)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/* Exam session (row[4]) */ /* Exam session (row[4]) */
Str_Copy (CallsForExams->CallForExam.Session,row[4], Str_Copy (CallsForExams->CallForExam.Session,row[4],
@ -1034,7 +1035,7 @@ static void Cfe_GetDataCallForExamFromDB (struct Cfe_CallsForExams *CallsForExam
&Hour, &Hour,
&Minute, &Minute,
&Second) != 6) &Second) != 6)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/* Date of exam (row[6]) */ /* Date of exam (row[6]) */
if (sscanf (row[6],"%04u-%02u-%02u %02u:%02u:%02u", if (sscanf (row[6],"%04u-%02u-%02u %02u:%02u:%02u",
@ -1044,7 +1045,7 @@ static void Cfe_GetDataCallForExamFromDB (struct Cfe_CallsForExams *CallsForExam
&CallsForExams->CallForExam.StartTime.Hour, &CallsForExams->CallForExam.StartTime.Hour,
&CallsForExams->CallForExam.StartTime.Minute, &CallsForExams->CallForExam.StartTime.Minute,
&Second) != 6) &Second) != 6)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
snprintf (CallsForExams->CallForExam.ExamDate.YYYYMMDD, snprintf (CallsForExams->CallForExam.ExamDate.YYYYMMDD,
sizeof (CallsForExams->CallForExam.ExamDate.YYYYMMDD),"%04u%02u%02u", sizeof (CallsForExams->CallForExam.ExamDate.YYYYMMDD),"%04u%02u%02u",
CallsForExams->CallForExam.ExamDate.Year, CallsForExams->CallForExam.ExamDate.Year,
@ -1056,7 +1057,7 @@ static void Cfe_GetDataCallForExamFromDB (struct Cfe_CallsForExams *CallsForExam
&CallsForExams->CallForExam.Duration.Hour, &CallsForExams->CallForExam.Duration.Hour,
&CallsForExams->CallForExam.Duration.Minute, &CallsForExams->CallForExam.Duration.Minute,
&Second) != 3) &Second) != 3)
Lay_WrongCallForExamExit (); Err_WrongCallForExamExit ();
/* Place (row[8]), exam mode (row[9]), structure (row[10]), /* Place (row[8]), exam mode (row[9]), structure (row[10]),
documentation required (row[11]), material required (row[12]), documentation required (row[11]), material required (row[12]),
@ -1837,5 +1838,5 @@ static void Cfe_GetNotifContentCallForExam (const struct Cfe_CallsForExams *Call
Txt_CALL_FOR_EXAM_Material_required,CallsForExams->CallForExam.MatRequired, Txt_CALL_FOR_EXAM_Material_required,CallsForExams->CallForExam.MatRequired,
Txt_CALL_FOR_EXAM_Material_allowed,CallsForExams->CallForExam.MatAllowed, Txt_CALL_FOR_EXAM_Material_allowed,CallsForExams->CallForExam.MatAllowed,
Txt_CALL_FOR_EXAM_Other_information,CallsForExams->CallForExam.OtherInfo) < 0) Txt_CALL_FOR_EXAM_Other_information,CallsForExams->CallForExam.OtherInfo) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }

View File

@ -33,6 +33,7 @@
#include "swad_center.h" #include "swad_center.h"
#include "swad_center_config.h" #include "swad_center_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_figure_cache.h" #include "swad_figure_cache.h"
#include "swad_form.h" #include "swad_form.h"
@ -577,7 +578,7 @@ void Ctr_GetBasicListOfCenters (long InsCod)
/***** Create list with courses in degree *****/ /***** Create list with courses in degree *****/
if ((Gbl.Hierarchy.Ctrs.Lst = calloc ((size_t) Gbl.Hierarchy.Ctrs.Num, if ((Gbl.Hierarchy.Ctrs.Lst = calloc ((size_t) Gbl.Hierarchy.Ctrs.Num,
sizeof (*Gbl.Hierarchy.Ctrs.Lst))) == NULL) sizeof (*Gbl.Hierarchy.Ctrs.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the centers *****/ /***** Get the centers *****/
for (NumCtr = 0; for (NumCtr = 0;
@ -663,7 +664,7 @@ void Ctr_GetFullListOfCenters (long InsCod)
/***** Create list with courses in degree *****/ /***** Create list with courses in degree *****/
if ((Gbl.Hierarchy.Ctrs.Lst = calloc ((size_t) Gbl.Hierarchy.Ctrs.Num, if ((Gbl.Hierarchy.Ctrs.Lst = calloc ((size_t) Gbl.Hierarchy.Ctrs.Num,
sizeof (*Gbl.Hierarchy.Ctrs.Lst))) == NULL) sizeof (*Gbl.Hierarchy.Ctrs.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the centers *****/ /***** Get the centers *****/
for (NumCtr = 0; for (NumCtr = 0;
@ -750,7 +751,7 @@ static void Ctr_GetDataOfCenterFromRow (struct Ctr_Center *Ctr,MYSQL_ROW row)
{ {
/***** Get center code (row[0]) *****/ /***** Get center code (row[0]) *****/
if ((Ctr->CtrCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Ctr->CtrCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongCenterExit (); Err_WrongCenterExit ();
/***** Get institution code (row[1]) *****/ /***** Get institution code (row[1]) *****/
Ctr->InsCod = Str_ConvertStrCodToLongCod (row[1]); Ctr->InsCod = Str_ConvertStrCodToLongCod (row[1]);
@ -760,7 +761,7 @@ static void Ctr_GetDataOfCenterFromRow (struct Ctr_Center *Ctr,MYSQL_ROW row)
/***** Get center status (row[3]) *****/ /***** Get center status (row[3]) *****/
if (sscanf (row[3],"%u",&(Ctr->Status)) != 1) if (sscanf (row[3],"%u",&(Ctr->Status)) != 1)
Lay_WrongStatusExit (); Err_WrongStatusExit ();
/***** Get requester user's code (row[4]) *****/ /***** Get requester user's code (row[4]) *****/
Ctr->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[4]); Ctr->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[4]);
@ -881,7 +882,7 @@ void Ctr_WriteSelectorOfCenter (void)
/* Get center code (row[0]) */ /* Get center code (row[0]) */
if ((CtrCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((CtrCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongCenterExit (); Err_WrongCenterExit ();
/* Write option */ /* Write option */
HTM_OPTION (HTM_Type_LONG,&CtrCod, HTM_OPTION (HTM_Type_LONG,&CtrCod,
@ -1185,7 +1186,7 @@ long Ctr_GetAndCheckParamOtherCtrCod (long MinCodAllowed)
/***** Get and check parameter with code of center *****/ /***** Get and check parameter with code of center *****/
if ((CtrCod = Par_GetParToLong ("OthCtrCod")) < MinCodAllowed) if ((CtrCod = Par_GetParToLong ("OthCtrCod")) < MinCodAllowed)
Lay_WrongCenterExit (); Err_WrongCenterExit ();
return CtrCod; return CtrCod;
} }
@ -1518,7 +1519,7 @@ void Ctr_ChangeCtrStatus (void)
(unsigned long) Ctr_MAX_STATUS, (unsigned long) Ctr_MAX_STATUS,
(unsigned long) Ctr_WRONG_STATUS); (unsigned long) Ctr_WRONG_STATUS);
if (Status == Ctr_WRONG_STATUS) if (Status == Ctr_WRONG_STATUS)
Lay_WrongStatusExit (); Err_WrongStatusExit ();
StatusTxt = Ctr_GetStatusTxtFromStatusBits (Status); StatusTxt = Ctr_GetStatusTxtFromStatusBits (Status);
Status = Ctr_GetStatusBitsFromStatusTxt (StatusTxt); // New status Status = Ctr_GetStatusBitsFromStatusTxt (StatusTxt); // New status
@ -1603,7 +1604,7 @@ static void Ctr_PutFormToCreateCenter (const struct Plc_Places *Places)
else if (Gbl.Usrs.Me.Role.Max >= Rol_GST) else if (Gbl.Usrs.Me.Role.Max >= Rol_GST)
Frm_BeginForm (ActReqCtr); Frm_BeginForm (ActReqCtr);
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Begin box and table *****/ /***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_New_center, Box_BoxTableBegin (NULL,Txt_New_center,
@ -2283,11 +2284,11 @@ static void Ctr_EditingCenterConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Ctr_EditingCtr != NULL) if (Ctr_EditingCtr != NULL)
Lay_WrongCenterExit (); Err_WrongCenterExit ();
/***** Allocate memory for center *****/ /***** Allocate memory for center *****/
if ((Ctr_EditingCtr = malloc (sizeof (*Ctr_EditingCtr))) == NULL) if ((Ctr_EditingCtr = malloc (sizeof (*Ctr_EditingCtr))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset center *****/ /***** Reset center *****/
Ctr_EditingCtr->CtrCod = -1L; Ctr_EditingCtr->CtrCod = -1L;

View File

@ -35,6 +35,7 @@
#include "swad_center.h" #include "swad_center.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure_cache.h" #include "swad_figure_cache.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -464,10 +465,10 @@ static void CtrCfg_Photo (bool PrintView,bool PutForm,bool PutLink,
Cfg_URL_CTR_PUBLIC, Cfg_URL_CTR_PUBLIC,
(unsigned) (Gbl.Hierarchy.Ctr.CtrCod % 100), (unsigned) (Gbl.Hierarchy.Ctr.CtrCod % 100),
(unsigned) Gbl.Hierarchy.Ctr.CtrCod) < 0) (unsigned) Gbl.Hierarchy.Ctr.CtrCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&Icon,"%u.jpg", if (asprintf (&Icon,"%u.jpg",
(unsigned) Gbl.Hierarchy.Ctr.CtrCod) < 0) (unsigned) Gbl.Hierarchy.Ctr.CtrCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (URL,Icon,Gbl.Hierarchy.Ctr.FullName, HTM_IMG (URL,Icon,Gbl.Hierarchy.Ctr.FullName,
"class=\"%s\"",PrintView ? "CENTER_PHOTO_PRINT CENTER_PHOTO_WIDTH" : "class=\"%s\"",PrintView ? "CENTER_PHOTO_PRINT CENTER_PHOTO_WIDTH" :
"CENTER_PHOTO_SHOW CENTER_PHOTO_WIDTH"); "CENTER_PHOTO_SHOW CENTER_PHOTO_WIDTH");
@ -531,7 +532,7 @@ static void CtrCfg_GetPhotoAttr (long CtrCod,char **PhotoAttribution)
{ {
Length = strlen (row[0]); Length = strlen (row[0]);
if (((*PhotoAttribution) = malloc (Length + 1)) == NULL) if (((*PhotoAttribution) = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (*PhotoAttribution,row[0],Length); Str_Copy (*PhotoAttribution,row[0],Length);
} }
} }
@ -970,7 +971,7 @@ void CtrCfg_ReceivePhoto (void)
PathFileImg); PathFileImg);
ReturnCode = system (Command); ReturnCode = system (Command);
if (ReturnCode == -1) if (ReturnCode == -1)
Lay_ShowErrorAndExit ("Error when running command to process image."); Err_ShowErrorAndExit ("Error when running command to process image.");
/***** Write message depending on return code *****/ /***** Write message depending on return code *****/
ReturnCode = WEXITSTATUS(ReturnCode); ReturnCode = WEXITSTATUS(ReturnCode);
@ -980,7 +981,7 @@ void CtrCfg_ReceivePhoto (void)
"Image could not be processed successfully.<br />" "Image could not be processed successfully.<br />"
"Error code returned by the program of processing: %d", "Error code returned by the program of processing: %d",
ReturnCode); ReturnCode);
Lay_ShowErrorAndExit (ErrorMsg); Err_ShowErrorAndExit (ErrorMsg);
} }
/***** Remove temporary file *****/ /***** Remove temporary file *****/

View File

@ -600,13 +600,14 @@ TODO: Salvador Romero Cort
TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria. TODO: FIX BUG, URGENT! En las fechas como parámetro Dat_WriteParamsIniEndDates(), por ejemplo al cambiar el color de la gráfica de accesos por día y hora, no se respeta la zona horaria.
*/ */
#define Log_PLATFORM_VERSION "SWAD 20.67.11 (2021-04-26)" #define Log_PLATFORM_VERSION "SWAD 20.68 (2021-04-26)"
#define CSS_FILE "swad20.45.css" #define CSS_FILE "swad20.45.css"
#define JS_FILE "swad20.6.2.js" #define JS_FILE "swad20.6.2.js"
/* /*
TODO: Rename CENTRE to CENTER in help wiki. TODO: Rename CENTRE to CENTER in help wiki.
TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams TODO: Rename ASSESSMENT.Announcements to ASSESSMENT.Calls_for_exams
Version 20.68: Apr 26, 2021 New module swad_error. (309853 lines)
Version 20.67.11: Apr 26, 2021 Fixed bug in departments. (309677 lines) Version 20.67.11: Apr 26, 2021 Fixed bug in departments. (309677 lines)
Version 20.67.10: Apr 25, 2021 Fixed bug in notification about new assignment, reported by Eva Martínez Ortigosa. (? lines) Version 20.67.10: Apr 25, 2021 Fixed bug in notification about new assignment, reported by Eva Martínez Ortigosa. (? lines)
Version 20.67.9: Apr 25, 2021 Fixed bug in users' works, reported by Eva Martínez Ortigosa. (309675 lines) Version 20.67.9: Apr 25, 2021 Fixed bug in users' works, reported by Eva Martínez Ortigosa. (309675 lines)

View File

@ -33,6 +33,7 @@
#include "swad_chat.h" #include "swad_chat.h"
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -176,7 +177,7 @@ void Cht_ShowListOfAvailableChatRooms (void)
/* Get data of this degree */ /* Get data of this degree */
Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod; Deg.DegCod = Gbl.Usrs.Me.MyDegs.Degs[NumMyDeg].DegCod;
if (!Deg_GetDataOfDegreeByCod (&Deg)) if (!Deg_GetDataOfDegreeByCod (&Deg))
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
/* 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);
@ -399,9 +400,9 @@ void Cht_OpenChatWindow (void)
Par_GetParToText ("RoomFullName",RoomFullName,Cht_MAX_BYTES_ROOM_FULL_NAME); Par_GetParToText ("RoomFullName",RoomFullName,Cht_MAX_BYTES_ROOM_FULL_NAME);
if (!RoomCode[0] || !RoomShrtName[0] || !RoomFullName[0]) if (!RoomCode[0] || !RoomShrtName[0] || !RoomFullName[0])
Lay_ShowErrorAndExit ("Wrong code or name of chat room."); Err_ShowErrorAndExit ("Wrong code or name of chat room.");
if (strcspn (RoomCode," \t\n\r") != strlen (RoomCode)) // If RoomCode contiene espacios if (strcspn (RoomCode," \t\n\r") != strlen (RoomCode)) // If RoomCode contiene espacios
Lay_ShowErrorAndExit ("Wrong code of chat room."); Err_ShowErrorAndExit ("Wrong code of chat room.");
/***** Fill the lists with the degrees and courses I belong to *****/ /***** Fill the lists with the degrees and courses I belong to *****/
Usr_GetMyDegrees (); Usr_GetMyDegrees ();
@ -521,7 +522,7 @@ void Cht_OpenChatWindow (void)
/***** Open index.html file with the HTML page for the chat *****/ /***** Open index.html file with the HTML page for the chat *****/
if ((FileChat = fopen (Cfg_PATH_AND_FILE_REL_CHAT_PRIVATE,"rb")) == NULL) if ((FileChat = fopen (Cfg_PATH_AND_FILE_REL_CHAT_PRIVATE,"rb")) == NULL)
Lay_ShowErrorAndExit ("Can not open chat."); Err_ShowErrorAndExit ("Can not open chat.");
/***** Start writing the index.html file to the output *****/ /***** Start writing the index.html file to the output *****/
HTM_Txt ("Content-type: text/html; charset=windows-1252\n\n"); // Two carriage returns at the end of the line are mandatory! HTM_Txt ("Content-type: text/html; charset=windows-1252\n\n"); // Two carriage returns at the end of the line are mandatory!

View File

@ -31,6 +31,7 @@
#include <string.h> // For strcasecmp... #include <string.h> // For strcasecmp...
#include "swad_config.h" #include "swad_config.h"
#include "swad_error.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_layout.h" #include "swad_layout.h"
#include "swad_string.h" #include "swad_string.h"
@ -78,7 +79,7 @@ void Cfg_GetConfigFromFile (void)
/***** Read config from file to string *****/ /***** Read config from file to string *****/
/* Open config file */ /* Open config file */
if ((FileCfg = fopen (Cfg_FILE_CONFIG,"rb")) == NULL) if ((FileCfg = fopen (Cfg_FILE_CONFIG,"rb")) == NULL)
Lay_ShowErrorAndExit ("Can not open config file."); Err_ShowErrorAndExit ("Can not open config file.");
/* Compute file size */ /* Compute file size */
fseek (FileCfg,0L,SEEK_END); fseek (FileCfg,0L,SEEK_END);
@ -89,14 +90,14 @@ void Cfg_GetConfigFromFile (void)
if ((Config = malloc (Length + 1)) == NULL) if ((Config = malloc (Length + 1)) == NULL)
{ {
fclose (FileCfg); fclose (FileCfg);
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/* Copy file content into buffer */ /* Copy file content into buffer */
if (fread (Config,sizeof (char),Length,FileCfg) != Length) if (fread (Config,sizeof (char),Length,FileCfg) != Length)
{ {
fclose (FileCfg); fclose (FileCfg);
Lay_ShowErrorAndExit ("Can not read config."); Err_ShowErrorAndExit ("Can not read config.");
} }
Config[Length] = '\0'; Config[Length] = '\0';
@ -116,5 +117,5 @@ void Cfg_GetConfigFromFile (void)
if (!Gbl.Config.DatabasePassword[0] || if (!Gbl.Config.DatabasePassword[0] ||
!Gbl.Config.SMTPPassword[0]) !Gbl.Config.SMTPPassword[0])
Lay_ShowErrorAndExit ("Bad config format."); Err_ShowErrorAndExit ("Bad config format.");
} }

View File

@ -35,6 +35,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_hierarchy_level.h" #include "swad_hierarchy_level.h"
@ -104,7 +105,7 @@ void Con_ShowConnectedUsrs (void)
if (asprintf (&Title,"%s" if (asprintf (&Title,"%s"
"<div id=\"connected_current_time\"></div>", "<div id=\"connected_current_time\"></div>",
Txt_Connected_users) < 0) Txt_Connected_users) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Box_BoxBegin (NULL,Title, Box_BoxBegin (NULL,Title,
Con_PutIconToUpdateConnected,NULL, Con_PutIconToUpdateConnected,NULL,
Hlp_USERS_Connected,Box_NOT_CLOSABLE); Hlp_USERS_Connected,Box_NOT_CLOSABLE);
@ -597,7 +598,7 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
break; break;
@ -741,12 +742,12 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
(unsigned) Role); (unsigned) Role);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
@ -754,11 +755,11 @@ static void Con_GetNumConnectedUsrsWithARoleBelongingCurrentLocation (Rol_Role_t
/***** Get number of users (row[0]) *****/ /***** Get number of users (row[0]) *****/
if (sscanf (row[0],"%u",&(Usrs->NumUsrs)) != 1) if (sscanf (row[0],"%u",&(Usrs->NumUsrs)) != 1)
Lay_ShowErrorAndExit ("Error when getting number of connected users who belong to this location."); Err_ShowErrorAndExit ("Error when getting number of connected users who belong to this location.");
/***** Get number of distinct sexs (row[1]) *****/ /***** Get number of distinct sexs (row[1]) *****/
if (sscanf (row[1],"%u",&NumSexs) != 1) if (sscanf (row[1],"%u",&NumSexs) != 1)
Lay_ShowErrorAndExit ("Error when getting number of sexs in connected users who belong to this location."); Err_ShowErrorAndExit ("Error when getting number of sexs in connected users who belong to this location.");
/***** Get users' sex (row[2]) *****/ /***** Get users' sex (row[2]) *****/
Usrs->Sex = Usr_SEX_UNKNOWN; Usrs->Sex = Usr_SEX_UNKNOWN;
@ -910,7 +911,7 @@ static void Con_WriteRowConnectedUsrOnRightColumn (Rol_Role_t Role)
Frm_BeginFormUnique (ActSeeRecOneTch); Frm_BeginFormUnique (ActSeeRecOneTch);
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod); Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
@ -1111,12 +1112,12 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
(unsigned) Role); (unsigned) Role);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
if (NumUsrs) if (NumUsrs)
@ -1176,7 +1177,7 @@ static void Con_ShowConnectedUsrsCurrentLocationOneByOneOnMainZone (Rol_Role_t R
Frm_BeginForm (ActSeeRecOneTch); Frm_BeginForm (ActSeeRecOneTch);
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
} }
Usr_PutParamUsrCodEncrypted (UsrDat.EnUsrCod); Usr_PutParamUsrCodEncrypted (UsrDat.EnUsrCod);
} }

View File

@ -34,6 +34,7 @@
#include "swad_country_config.h" #include "swad_country_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_figure_cache.h" #include "swad_figure_cache.h"
#include "swad_form.h" #include "swad_form.h"
@ -564,7 +565,7 @@ void Cty_DrawCountryMap (struct Cty_Countr *Cty,const char *Class)
if (asprintf (&URL,"%s/%s", if (asprintf (&URL,"%s/%s",
Cfg_URL_ICON_COUNTRIES_PUBLIC, Cfg_URL_ICON_COUNTRIES_PUBLIC,
Cty->Alpha2) < 0) Cty->Alpha2) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (URL,Str_BuildStringStr ("%s.png",Cty->Alpha2), HTM_IMG (URL,Str_BuildStringStr ("%s.png",Cty->Alpha2),
Cty->Name[Gbl.Prefs.Language], Cty->Name[Gbl.Prefs.Language],
"class=\"%s\"",Class); "class=\"%s\"",Class);
@ -772,7 +773,7 @@ void Cty_GetBasicListOfCountries (void)
/***** Create list with countries *****/ /***** Create list with countries *****/
if ((Gbl.Hierarchy.Ctys.Lst = calloc ((size_t) Gbl.Hierarchy.Ctys.Num, if ((Gbl.Hierarchy.Ctys.Lst = calloc ((size_t) Gbl.Hierarchy.Ctys.Num,
sizeof (*Gbl.Hierarchy.Ctys.Lst))) == NULL) sizeof (*Gbl.Hierarchy.Ctys.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the countries *****/ /***** Get the countries *****/
for (NumCty = 0; for (NumCty = 0;
@ -786,7 +787,7 @@ void Cty_GetBasicListOfCountries (void)
/* Get numerical country code (row[0]) */ /* Get numerical country code (row[0]) */
if ((Cty->CtyCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Cty->CtyCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongCountrExit (); Err_WrongCountrExit ();
/* Get Alpha-2 country code (row[1]) */ /* Get Alpha-2 country code (row[1]) */
Str_Copy (Cty->Alpha2,row[1],sizeof (Cty->Alpha2) - 1); Str_Copy (Cty->Alpha2,row[1],sizeof (Cty->Alpha2) - 1);
@ -862,7 +863,7 @@ void Cty_GetFullListOfCountries (void)
/* Build order subquery */ /* Build order subquery */
if (asprintf (&OrderBySubQuery,OrderBySubQueryFmt[Gbl.Hierarchy.Ctys.SelectedOrder], if (asprintf (&OrderBySubQuery,OrderBySubQueryFmt[Gbl.Hierarchy.Ctys.SelectedOrder],
Lan_STR_LANG_ID[Gbl.Prefs.Language]) < 0) Lan_STR_LANG_ID[Gbl.Prefs.Language]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/* Query database */ /* Query database */
Gbl.Hierarchy.Ctys.Num = (unsigned) Gbl.Hierarchy.Ctys.Num = (unsigned)
@ -898,7 +899,7 @@ void Cty_GetFullListOfCountries (void)
/***** Create list with countries *****/ /***** Create list with countries *****/
if ((Gbl.Hierarchy.Ctys.Lst = calloc ((size_t) Gbl.Hierarchy.Ctys.Num, if ((Gbl.Hierarchy.Ctys.Lst = calloc ((size_t) Gbl.Hierarchy.Ctys.Num,
sizeof (*Gbl.Hierarchy.Ctys.Lst))) == NULL) sizeof (*Gbl.Hierarchy.Ctys.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the countries *****/ /***** Get the countries *****/
for (NumCty = 0; for (NumCty = 0;
@ -912,7 +913,7 @@ void Cty_GetFullListOfCountries (void)
/* Get numerical country code (row[0]) */ /* Get numerical country code (row[0]) */
if ((Cty->CtyCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Cty->CtyCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongCountrExit (); Err_WrongCountrExit ();
/* Get Alpha-2 country code (row[1]) */ /* Get Alpha-2 country code (row[1]) */
Str_Copy (Cty->Alpha2,row[1],sizeof (Cty->Alpha2) - 1); Str_Copy (Cty->Alpha2,row[1],sizeof (Cty->Alpha2) - 1);
@ -981,7 +982,7 @@ void Cty_WriteSelectorOfCountry (void)
/* Get country code (row[0]) */ /* Get country code (row[0]) */
if ((CtyCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((CtyCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongCountrExit (); Err_WrongCountrExit ();
/* Write option */ /* Write option */
HTM_OPTION (HTM_Type_LONG,&CtyCod, HTM_OPTION (HTM_Type_LONG,&CtyCod,
@ -1302,7 +1303,7 @@ long Cty_GetAndCheckParamOtherCtyCod (long MinCodAllowed)
/***** Get and check parameter with code of country *****/ /***** Get and check parameter with code of country *****/
if ((CtyCod = Cty_GetParamOtherCtyCod ()) < MinCodAllowed) if ((CtyCod = Cty_GetParamOtherCtyCod ()) < MinCodAllowed)
Lay_WrongCountrExit (); Err_WrongCountrExit ();
return CtyCod; return CtyCod;
} }
@ -2119,11 +2120,11 @@ static void Cty_EditingCountryConstructor (void)
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Cty_EditingCty != NULL) if (Cty_EditingCty != NULL)
Lay_WrongCountrExit (); Err_WrongCountrExit ();
/***** Allocate memory for country *****/ /***** Allocate memory for country *****/
if ((Cty_EditingCty = malloc (sizeof (*Cty_EditingCty))) == NULL) if ((Cty_EditingCty = malloc (sizeof (*Cty_EditingCty))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset country *****/ /***** Reset country *****/
Cty_EditingCty->CtyCod = -1L; Cty_EditingCty->CtyCod = -1L;

View File

@ -33,6 +33,7 @@
#include <string.h> // For string functions #include <string.h> // For string functions
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure_cache.h" #include "swad_figure_cache.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -257,7 +258,7 @@ static void CtyCfg_GetCoordAndZoom (struct Coordinates *Coord,unsigned *Zoom)
" AND ctr_centers.Latitude<>0" " AND ctr_centers.Latitude<>0"
" AND ctr_centers.Longitude<>0", " AND ctr_centers.Longitude<>0",
Gbl.Hierarchy.Cty.CtyCod) < 0) Gbl.Hierarchy.Cty.CtyCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Map_GetCoordAndZoom (Coord,Zoom,Query); Map_GetCoordAndZoom (Coord,Zoom,Query);
free (Query); free (Query);
} }
@ -593,7 +594,7 @@ static void CtyCfg_GetMapAttr (long CtyCod,char **MapAttribution)
{ {
Length = strlen (row[0]); Length = strlen (row[0]);
if ((*MapAttribution = malloc (Length + 1)) == NULL) if ((*MapAttribution = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (*MapAttribution,row[0],Length); Str_Copy (*MapAttribution,row[0],Length);
} }
} }

View File

@ -36,6 +36,7 @@
#include "swad_course.h" #include "swad_course.h"
#include "swad_course_config.h" #include "swad_course_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_figure_cache.h" #include "swad_figure_cache.h"
#include "swad_form.h" #include "swad_form.h"
@ -215,7 +216,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get data of this institution *****/ /***** Get data of this institution *****/
Hie.Cty.CtyCod = Str_ConvertStrCodToLongCod (row[0]); Hie.Cty.CtyCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Cty_GetDataOfCountryByCod (&Hie.Cty)) if (!Cty_GetDataOfCountryByCod (&Hie.Cty))
Lay_WrongCountrExit (); Err_WrongCountrExit ();
/***** Write link to country *****/ /***** Write link to country *****/
Highlight = (Gbl.Hierarchy.Ins.InsCod <= 0 && Highlight = (Gbl.Hierarchy.Ins.InsCod <= 0 &&
@ -249,7 +250,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get data of this institution *****/ /***** Get data of this institution *****/
Hie.Ins.InsCod = Str_ConvertStrCodToLongCod (row[0]); Hie.Ins.InsCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Ins_GetDataOfInstitutionByCod (&Hie.Ins)) if (!Ins_GetDataOfInstitutionByCod (&Hie.Ins))
Lay_WrongInstitExit (); Err_WrongInstitExit ();
/***** Write link to institution *****/ /***** Write link to institution *****/
Highlight = (Gbl.Hierarchy.Ctr.CtrCod <= 0 && Highlight = (Gbl.Hierarchy.Ctr.CtrCod <= 0 &&
@ -283,7 +284,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get data of this center *****/ /***** Get data of this center *****/
Hie.Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]); Hie.Ctr.CtrCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Ctr_GetDataOfCenterByCod (&Hie.Ctr)) if (!Ctr_GetDataOfCenterByCod (&Hie.Ctr))
Lay_WrongCenterExit (); Err_WrongCenterExit ();
/***** Write link to center *****/ /***** Write link to center *****/
Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_CTR && Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_CTR &&
@ -317,7 +318,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get data of this degree *****/ /***** Get data of this degree *****/
Hie.Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]); Hie.Deg.DegCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Deg_GetDataOfDegreeByCod (&Hie.Deg)) if (!Deg_GetDataOfDegreeByCod (&Hie.Deg))
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
/***** Write link to degree *****/ /***** Write link to degree *****/
Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_DEG && Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_DEG &&
@ -351,7 +352,7 @@ static void Crs_WriteListMyCoursesToSelectOne (void)
/***** Get data of this course *****/ /***** Get data of this course *****/
Hie.Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]); Hie.Crs.CrsCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Crs_GetDataOfCourseByCod (&Hie.Crs)) if (!Crs_GetDataOfCourseByCod (&Hie.Crs))
Lay_WrongCourseExit (); Err_WrongCourseExit ();
/***** Write link to course *****/ /***** Write link to course *****/
Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_CRS && Highlight = (Gbl.Hierarchy.Level == Hie_Lvl_CRS &&
@ -711,7 +712,7 @@ void Crs_WriteSelectorOfCourse (void)
/* Get course code (row[0]) */ /* Get course code (row[0]) */
if ((CrsCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((CrsCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongCourseExit (); Err_WrongCourseExit ();
/* Write option */ /* Write option */
HTM_OPTION (HTM_Type_LONG,&CrsCod, HTM_OPTION (HTM_Type_LONG,&CrsCod,
@ -812,7 +813,7 @@ static void Crs_GetListCrssInCurrentDeg (Crs_WhatCourses_t WhatCourses)
/***** Create list with courses in degree *****/ /***** Create list with courses in degree *****/
if ((Gbl.Hierarchy.Crss.Lst = calloc (NumCrss, if ((Gbl.Hierarchy.Crss.Lst = calloc (NumCrss,
sizeof (*Gbl.Hierarchy.Ctys.Lst))) == NULL) sizeof (*Gbl.Hierarchy.Ctys.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the courses in degree *****/ /***** Get the courses in degree *****/
for (NumCrs = 0; for (NumCrs = 0;
@ -1464,7 +1465,7 @@ static void Crs_PutFormToCreateCourse (void)
else if (Gbl.Usrs.Me.Role.Max >= Rol_GST) else if (Gbl.Usrs.Me.Role.Max >= Rol_GST)
Frm_BeginForm (ActReqCrs); Frm_BeginForm (ActReqCrs);
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Begin box and table *****/ /***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_New_course, Box_BoxTableBegin (NULL,Txt_New_course,
@ -1772,7 +1773,7 @@ void Crs_RemoveCourse (void)
} }
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1833,7 +1834,7 @@ static void Crs_GetDataOfCourseFromRow (struct Crs_Course *Crs,MYSQL_ROW row)
{ {
/***** Get course code (row[0]) *****/ /***** Get course code (row[0]) *****/
if ((Crs->CrsCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Crs->CrsCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongCourseExit (); Err_WrongCourseExit ();
/***** Get code of degree (row[1]) *****/ /***** Get code of degree (row[1]) *****/
Crs->DegCod = Str_ConvertStrCodToLongCod (row[1]); Crs->DegCod = Str_ConvertStrCodToLongCod (row[1]);
@ -1846,7 +1847,7 @@ static void Crs_GetDataOfCourseFromRow (struct Crs_Course *Crs,MYSQL_ROW row)
/***** Get course status (row[4]) *****/ /***** Get course status (row[4]) *****/
if (sscanf (row[4],"%u",&(Crs->Status)) != 1) if (sscanf (row[4],"%u",&(Crs->Status)) != 1)
Lay_WrongStatusExit (); Err_WrongStatusExit ();
/***** Get requester user'code (row[5]) *****/ /***** Get requester user'code (row[5]) *****/
Crs->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[5]); Crs->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[5]);
@ -2128,7 +2129,7 @@ void Crs_ChangeInsCrsCod (void)
Crs_EditingCrs->ShrtName); Crs_EditingCrs->ShrtName);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2191,7 +2192,7 @@ void Crs_ChangeCrsYear (void)
NewYear); NewYear);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2332,7 +2333,7 @@ void Crs_RenameCourse (struct Crs_Course *Crs,Cns_ShrtOrFullName_t ShrtOrFullNam
Ale_CreateAlertYouCanNotLeaveFieldEmpty (); Ale_CreateAlertYouCanNotLeaveFieldEmpty ();
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2397,7 +2398,7 @@ void Crs_ChangeCrsStatus (void)
(unsigned long) Crs_MAX_STATUS, (unsigned long) Crs_MAX_STATUS,
(unsigned long) Crs_WRONG_STATUS); (unsigned long) Crs_WRONG_STATUS);
if (Status == Crs_WRONG_STATUS) if (Status == Crs_WRONG_STATUS)
Lay_WrongStatusExit (); Err_WrongStatusExit ();
StatusTxt = Crs_GetStatusTxtFromStatusBits (Status); StatusTxt = Crs_GetStatusTxtFromStatusBits (Status);
Status = Crs_GetStatusBitsFromStatusTxt (StatusTxt); // New status Status = Crs_GetStatusBitsFromStatusTxt (StatusTxt); // New status
@ -2619,7 +2620,7 @@ static long Crs_GetAndCheckParamOtherCrsCod (long MinCodAllowed)
/***** Get and check parameter with code of course *****/ /***** Get and check parameter with code of course *****/
if ((CrsCod = Par_GetParToLong ("OthCrsCod")) < MinCodAllowed) if ((CrsCod = Par_GetParToLong ("OthCrsCod")) < MinCodAllowed)
Lay_WrongCourseExit (); Err_WrongCourseExit ();
return CrsCod; return CrsCod;
} }
@ -2647,12 +2648,12 @@ void Crs_GetAndWriteCrssOfAUsr (const struct UsrData *UsrDat,Rol_Role_t Role)
if (Role == Rol_UNK) // Role == Rol_UNK ==> any role if (Role == Rol_UNK) // Role == Rol_UNK ==> any role
{ {
if (asprintf (&SubQuery,"%s","") < 0) if (asprintf (&SubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (&SubQuery," AND crs_users.Role=%u",(unsigned) Role) < 0) if (asprintf (&SubQuery," AND crs_users.Role=%u",(unsigned) Role) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
NumCrss = (unsigned) NumCrss = (unsigned)
DB_QuerySELECT (&mysql_res,"can not get courses of a user", DB_QuerySELECT (&mysql_res,"can not get courses of a user",
@ -2826,13 +2827,13 @@ static void Crs_WriteRowCrsData (unsigned NumCrs,MYSQL_ROW row,bool WriteColumnA
/***** Get degree code (row[0]) *****/ /***** Get degree code (row[0]) *****/
if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
if (!Deg_GetDataOfDegreeByCod (&Deg)) if (!Deg_GetDataOfDegreeByCod (&Deg))
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
/***** Get course code (row[1]) *****/ /***** Get course code (row[1]) *****/
if ((CrsCod = Str_ConvertStrCodToLongCod (row[1])) < 0) if ((CrsCod = Str_ConvertStrCodToLongCod (row[1])) < 0)
Lay_WrongCourseExit (); Err_WrongCourseExit ();
/***** Get number of teachers and students in this course *****/ /***** Get number of teachers and students in this course *****/
NumStds = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,CrsCod,1 << Rol_STD); NumStds = Usr_GetNumUsrsInCrss (Hie_Lvl_CRS,CrsCod,1 << Rol_STD);
@ -3024,7 +3025,7 @@ void Crs_RemoveOldCrss (void)
Crs_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS, Crs_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_CRSS,
UINT_MAX); UINT_MAX);
if (MonthsWithoutAccess == UINT_MAX) if (MonthsWithoutAccess == UINT_MAX)
Lay_ShowErrorAndExit ("Wrong number of months without clicks."); Err_ShowErrorAndExit ("Wrong number of months without clicks.");
SecondsWithoutAccess = (unsigned long) MonthsWithoutAccess * Dat_SECONDS_IN_ONE_MONTH; SecondsWithoutAccess = (unsigned long) MonthsWithoutAccess * Dat_SECONDS_IN_ONE_MONTH;
/***** Get old courses from database *****/ /***** Get old courses from database *****/
@ -3071,11 +3072,11 @@ static void Crs_EditingCourseConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Crs_EditingCrs != NULL) if (Crs_EditingCrs != NULL)
Lay_WrongCourseExit (); Err_WrongCourseExit ();
/***** Allocate memory for course *****/ /***** Allocate memory for course *****/
if ((Crs_EditingCrs = malloc (sizeof (*Crs_EditingCrs))) == NULL) if ((Crs_EditingCrs = malloc (sizeof (*Crs_EditingCrs))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset course *****/ /***** Reset course *****/
Crs_EditingCrs->CrsCod = -1L; Crs_EditingCrs->CrsCod = -1L;

View File

@ -33,6 +33,7 @@
#include <string.h> // For string functions #include <string.h> // For string functions
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_hierarchy.h" #include "swad_hierarchy.h"
@ -445,7 +446,7 @@ static void CrsCfg_Indicators (void)
if (asprintf (&Title,"%u %s %u", if (asprintf (&Title,"%u %s %u",
IndicatorsCrs.NumIndicators, IndicatorsCrs.NumIndicators,
Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS) < 0) Txt_of_PART_OF_A_TOTAL,Ind_NUM_INDICATORS) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BUTTON_SUBMIT_Begin (Title,"BT_LINK DAT",NULL); HTM_BUTTON_SUBMIT_Begin (Title,"BT_LINK DAT",NULL);
HTM_TxtF ("%s&nbsp;",Title); HTM_TxtF ("%s&nbsp;",Title);
Ico_PutIcon ((IndicatorsCrs.NumIndicators == Ind_NUM_INDICATORS) ? "check-circle.svg" : Ico_PutIcon ((IndicatorsCrs.NumIndicators == Ind_NUM_INDICATORS) ? "check-circle.svg" :

View File

@ -36,6 +36,7 @@
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
#include "swad_language.h" #include "swad_language.h"
@ -3741,7 +3742,7 @@ static void DB_CreateTable (const char *Query)
void DB_OpenDBConnection (void) void DB_OpenDBConnection (void)
{ {
if (mysql_init (&Gbl.mysql) == NULL) if (mysql_init (&Gbl.mysql) == NULL)
Lay_ShowErrorAndExit ("Can not init MySQL."); Err_ShowErrorAndExit ("Can not init MySQL.");
if (mysql_real_connect (&Gbl.mysql,Cfg_DATABASE_HOST, if (mysql_real_connect (&Gbl.mysql,Cfg_DATABASE_HOST,
Cfg_DATABASE_USER,Gbl.Config.DatabasePassword, Cfg_DATABASE_USER,Gbl.Config.DatabasePassword,
@ -3774,13 +3775,13 @@ void DB_BuildQuery (char **Query,const char *fmt,...)
int NumBytesPrinted; int NumBytesPrinted;
if (*Query != NULL) if (*Query != NULL)
Lay_ShowErrorAndExit ("Error building query."); Err_ShowErrorAndExit ("Error building query.");
va_start (ap,fmt); va_start (ap,fmt);
NumBytesPrinted = vasprintf (Query,fmt,ap); NumBytesPrinted = vasprintf (Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -3799,7 +3800,7 @@ unsigned long DB_QuerySELECT (MYSQL_RES **mysql_res,const char *MsgError,
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Do SELECT query *****/ /***** Do SELECT query *****/
return DB_QuerySELECTusingQueryStr (Query,mysql_res,MsgError); return DB_QuerySELECTusingQueryStr (Query,mysql_res,MsgError);
@ -3823,7 +3824,7 @@ long DB_QuerySELECTCode (const char *MsgError,
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Do SELECT query *****/ /***** Do SELECT query *****/
if (DB_QuerySELECTusingQueryStr (Query,&mysql_res,MsgError)) // Row found if (DB_QuerySELECTusingQueryStr (Query,&mysql_res,MsgError)) // Row found
@ -3856,7 +3857,7 @@ unsigned DB_QuerySELECTUnsigned (const char *MsgError,
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Do SELECT query *****/ /***** Do SELECT query *****/
if (DB_QuerySELECTusingQueryStr (Query,&mysql_res,MsgError)) // Row found if (DB_QuerySELECTusingQueryStr (Query,&mysql_res,MsgError)) // Row found
@ -3891,7 +3892,7 @@ double DB_QuerySELECTDouble (const char *MsgError,
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Do SELECT query *****/ /***** Do SELECT query *****/
if (DB_QuerySELECTusingQueryStr (Query,&mysql_res,MsgError)) // Row found if (DB_QuerySELECTusingQueryStr (Query,&mysql_res,MsgError)) // Row found
@ -3926,7 +3927,7 @@ Rol_Role_t DB_QuerySELECTRole (const char *MsgError,
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Do SELECT query *****/ /***** Do SELECT query *****/
if (DB_QuerySELECTusingQueryStr (Query,&mysql_res,MsgError)) // Row found if (DB_QuerySELECTusingQueryStr (Query,&mysql_res,MsgError)) // Row found
@ -3963,7 +3964,7 @@ void DB_QuerySELECTString (char *Str,size_t StrSize,const char *MsgError,
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Do SELECT query *****/ /***** Do SELECT query *****/
Str[0] = '\0'; Str[0] = '\0';
@ -3985,7 +3986,7 @@ void DB_QuerySELECTString (char *Str,size_t StrSize,const char *MsgError,
"Too large string from database," "Too large string from database,"
" it exceed the maximum allowed size (%zu bytes).", " it exceed the maximum allowed size (%zu bytes).",
StrSize); StrSize);
Lay_ShowErrorAndExit (ErrorTxt); Err_ShowErrorAndExit (ErrorTxt);
} }
} }
@ -4002,7 +4003,7 @@ static unsigned long DB_QuerySELECTusingQueryStr (char *Query,
/***** Check that query string pointer /***** Check that query string pointer
does point to an allocated string *****/ does point to an allocated string *****/
if (Query == NULL) if (Query == NULL)
Lay_ShowErrorAndExit ("Wrong query string."); Err_ShowErrorAndExit ("Wrong query string.");
/***** Query database and free query string pointer *****/ /***** Query database and free query string pointer *****/
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
@ -4060,7 +4061,7 @@ unsigned long DB_QueryCOUNT (const char *MsgError,const char *fmt,...)
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Make query "SELECT COUNT(*) FROM..." *****/ /***** Make query "SELECT COUNT(*) FROM..." *****/
DB_QuerySELECTusingQueryStr (Query,&mysql_res,MsgError); DB_QuerySELECTusingQueryStr (Query,&mysql_res,MsgError);
@ -4068,7 +4069,7 @@ unsigned long DB_QueryCOUNT (const char *MsgError,const char *fmt,...)
/***** Get number of rows *****/ /***** Get number of rows *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%lu",&NumRows) != 1) if (sscanf (row[0],"%lu",&NumRows) != 1)
Lay_ShowErrorAndExit ("Error when counting number of rows."); Err_ShowErrorAndExit ("Error when counting number of rows.");
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -4091,7 +4092,7 @@ void DB_QueryINSERT (const char *MsgError,const char *fmt,...)
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Query database and free query string pointer *****/ /***** Query database and free query string pointer *****/
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
@ -4115,7 +4116,7 @@ long DB_QueryINSERTandReturnCode (const char *MsgError,const char *fmt,...)
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Query database and free query string pointer *****/ /***** Query database and free query string pointer *****/
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
@ -4142,7 +4143,7 @@ void DB_QueryREPLACE (const char *MsgError,const char *fmt,...)
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Query database and free query string pointer *****/ /***** Query database and free query string pointer *****/
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
@ -4166,7 +4167,7 @@ void DB_QueryUPDATE (const char *MsgError,const char *fmt,...)
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Query database and free query string pointer *****/ /***** Query database and free query string pointer *****/
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
@ -4190,7 +4191,7 @@ void DB_QueryDELETE (const char *MsgError,const char *fmt,...)
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Query database and free query string pointer *****/ /***** Query database and free query string pointer *****/
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
@ -4214,7 +4215,7 @@ void DB_Query (const char *MsgError,const char *fmt,...)
NumBytesPrinted = vasprintf (&Query,fmt,ap); NumBytesPrinted = vasprintf (&Query,fmt,ap);
va_end (ap); va_end (ap);
if (NumBytesPrinted < 0) // -1 if no memory or any other error if (NumBytesPrinted < 0) // -1 if no memory or any other error
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Query database and free query string pointer *****/ /***** Query database and free query string pointer *****/
Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success Result = mysql_query (&Gbl.mysql,Query); // Returns 0 on success
@ -4247,5 +4248,5 @@ void DB_ExitOnMySQLError (const char *Message)
snprintf (BigErrorMsg,sizeof (BigErrorMsg),"Database error: %s (%s).", snprintf (BigErrorMsg,sizeof (BigErrorMsg),"Database error: %s (%s).",
Message,mysql_error (&Gbl.mysql)); Message,mysql_error (&Gbl.mysql));
Lay_ShowErrorAndExit (BigErrorMsg); Err_ShowErrorAndExit (BigErrorMsg);
} }

View File

@ -36,6 +36,7 @@
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_date.h" #include "swad_date.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -384,7 +385,7 @@ struct tm *Dat_GetLocalTimeFromClock (const time_t *timep)
struct tm *tm_ptr; struct tm *tm_ptr;
if ((tm_ptr = localtime (timep)) == NULL) if ((tm_ptr = localtime (timep)) == NULL)
Lay_ShowErrorAndExit ("Can not get local time from clock."); Err_ShowErrorAndExit ("Can not get local time from clock.");
/***** Convert from sunday, monday, tuesday... /***** Convert from sunday, monday, tuesday...
to monday, tuesday, wednesday... *****/ to monday, tuesday, wednesday... *****/
@ -716,9 +717,9 @@ void Dat_WriteFormClientLocalDateTimeFromTimeUTC (const char *Id,
/***** Hidden field with UTC time (seconds since 1970) used to send time *****/ /***** Hidden field with UTC time (seconds since 1970) used to send time *****/
if (asprintf (&IdTimeUTC,"%sTimeUTC",Id) < 0) if (asprintf (&IdTimeUTC,"%sTimeUTC",Id) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&ParamNameTimeUTC,"%sTimeUTC",ParamName) < 0) if (asprintf (&ParamNameTimeUTC,"%sTimeUTC",ParamName) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Par_PutHiddenParamLong (IdTimeUTC,ParamNameTimeUTC,(long) TimeUTC); Par_PutHiddenParamLong (IdTimeUTC,ParamNameTimeUTC,(long) TimeUTC);
free (ParamNameTimeUTC); free (ParamNameTimeUTC);
free (IdTimeUTC); free (IdTimeUTC);

View File

@ -33,6 +33,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_degree.h" #include "swad_degree.h"
#include "swad_degree_config.h" #include "swad_degree_config.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_figure_cache.h" #include "swad_figure_cache.h"
#include "swad_form.h" #include "swad_form.h"
@ -296,7 +297,7 @@ void Deg_WriteSelectorOfDegree (void)
/* Get degree code (row[0]) */ /* Get degree code (row[0]) */
if ((DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
/* Write option */ /* Write option */
HTM_OPTION (HTM_Type_LONG,&DegCod, HTM_OPTION (HTM_Type_LONG,&DegCod,
@ -604,7 +605,7 @@ static void Deg_PutFormToCreateDegree (void)
else if (Gbl.Usrs.Me.Role.Max >= Rol_GST) else if (Gbl.Usrs.Me.Role.Max >= Rol_GST)
Frm_BeginForm (ActReqDeg); Frm_BeginForm (ActReqDeg);
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Begin box and table *****/ /***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_New_degree, Box_BoxTableBegin (NULL,Txt_New_degree,
@ -904,7 +905,7 @@ static void Deg_ListOneDegreeForSeeing (struct Deg_Degree *Deg,unsigned NumDeg)
/***** Get data of type of degree of this degree *****/ /***** Get data of type of degree of this degree *****/
DegTyp.DegTypCod = Deg->DegTypCod; DegTyp.DegTypCod = Deg->DegTypCod;
if (!DT_GetDataOfDegreeTypeByCod (&DegTyp)) if (!DT_GetDataOfDegreeTypeByCod (&DegTyp))
Lay_WrongDegTypExit (); Err_WrongDegTypExit ();
if (Deg->Status & Deg_STATUS_BIT_PENDING) if (Deg->Status & Deg_STATUS_BIT_PENDING)
{ {
@ -1103,7 +1104,7 @@ void Deg_GetListAllDegsWithStds (struct ListDegrees *Degs)
{ {
/***** Create list with degrees *****/ /***** Create list with degrees *****/
if ((Degs->Lst = calloc (Degs->Num,sizeof (*Degs->Lst))) == NULL) if ((Degs->Lst = calloc (Degs->Num,sizeof (*Degs->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the degrees *****/ /***** Get the degrees *****/
for (NumDeg = 0; for (NumDeg = 0;
@ -1155,7 +1156,7 @@ void Deg_GetListDegsInCurrentCtr (void)
/***** Create list with degrees of this center *****/ /***** Create list with degrees of this center *****/
if ((Gbl.Hierarchy.Degs.Lst = calloc ((size_t) Gbl.Hierarchy.Degs.Num, if ((Gbl.Hierarchy.Degs.Lst = calloc ((size_t) Gbl.Hierarchy.Degs.Num,
sizeof (*Gbl.Hierarchy.Degs.Lst))) == NULL) sizeof (*Gbl.Hierarchy.Degs.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the degrees of this center *****/ /***** Get the degrees of this center *****/
for (NumDeg = 0; for (NumDeg = 0;
@ -1339,7 +1340,7 @@ long Deg_GetAndCheckParamOtherDegCod (long MinCodAllowed)
/***** Get and check parameter with code of degree *****/ /***** Get and check parameter with code of degree *****/
if ((DegCod = Par_GetParToLong ("OthDegCod")) < MinCodAllowed) if ((DegCod = Par_GetParToLong ("OthDegCod")) < MinCodAllowed)
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
return DegCod; return DegCod;
} }
@ -1404,7 +1405,7 @@ static void Deg_GetDataOfDegreeFromRow (struct Deg_Degree *Deg,MYSQL_ROW row)
{ {
/***** Get degree code (row[0]) *****/ /***** Get degree code (row[0]) *****/
if ((Deg->DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Deg->DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
/***** Get center code (row[1]) *****/ /***** Get center code (row[1]) *****/
Deg->CtrCod = Str_ConvertStrCodToLongCod (row[1]); Deg->CtrCod = Str_ConvertStrCodToLongCod (row[1]);
@ -1414,7 +1415,7 @@ static void Deg_GetDataOfDegreeFromRow (struct Deg_Degree *Deg,MYSQL_ROW row)
/* Get course status (row[3]) */ /* Get course status (row[3]) */
if (sscanf (row[3],"%u",&(Deg->Status)) != 1) if (sscanf (row[3],"%u",&(Deg->Status)) != 1)
Lay_WrongStatusExit (); Err_WrongStatusExit ();
/* Get requester user's code (row[4]) */ /* Get requester user's code (row[4]) */
Deg->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[4]); Deg->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[4]);
@ -1512,7 +1513,7 @@ void Deg_RemoveDegreeCompletely (long DegCod)
{ {
/* Get next course */ /* Get next course */
if ((CrsCod = DB_GetNextCode (mysql_res)) < 0) if ((CrsCod = DB_GetNextCode (mysql_res)) < 0)
Lay_WrongCourseExit (); Err_WrongCourseExit ();
/* Remove course */ /* Remove course */
Crs_RemoveCourseCompletely (CrsCod); Crs_RemoveCourseCompletely (CrsCod);
@ -1807,7 +1808,7 @@ void Deg_ChangeDegStatus (void)
(unsigned long) Deg_MAX_STATUS, (unsigned long) Deg_MAX_STATUS,
(unsigned long) Deg_WRONG_STATUS); (unsigned long) Deg_WRONG_STATUS);
if (Status == Deg_WRONG_STATUS) if (Status == Deg_WRONG_STATUS)
Lay_WrongStatusExit (); Err_WrongStatusExit ();
StatusTxt = Deg_GetStatusTxtFromStatusBits (Status); StatusTxt = Deg_GetStatusTxtFromStatusBits (Status);
Status = Deg_GetStatusBitsFromStatusTxt (StatusTxt); // New status Status = Deg_GetStatusBitsFromStatusTxt (StatusTxt); // New status
@ -2197,11 +2198,11 @@ static void Deg_EditingDegreeConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Deg_EditingDeg != NULL) if (Deg_EditingDeg != NULL)
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
/***** Allocate memory for degree *****/ /***** Allocate memory for degree *****/
if ((Deg_EditingDeg = malloc (sizeof (*Deg_EditingDeg))) == NULL) if ((Deg_EditingDeg = malloc (sizeof (*Deg_EditingDeg))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset degree *****/ /***** Reset degree *****/
Deg_EditingDeg->DegCod = -1L; Deg_EditingDeg->DegCod = -1L;

View File

@ -37,6 +37,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_degree.h" #include "swad_degree.h"
#include "swad_degree_type.h" #include "swad_degree_type.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -697,7 +698,7 @@ void DT_GetListDegreeTypes (Hie_Lvl_Level_t Scope,DT_Order_t Order)
OrderBySubQuery[Order]); OrderBySubQuery[Order]);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -707,7 +708,7 @@ void DT_GetListDegreeTypes (Hie_Lvl_Level_t Scope,DT_Order_t Order)
/***** Create a list of degree types *****/ /***** Create a list of degree types *****/
if ((Gbl.DegTypes.Lst = calloc (Gbl.DegTypes.Num, if ((Gbl.DegTypes.Lst = calloc (Gbl.DegTypes.Num,
sizeof (*Gbl.DegTypes.Lst))) == NULL) sizeof (*Gbl.DegTypes.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get degree types *****/ /***** Get degree types *****/
for (NumTyp = 0; for (NumTyp = 0;
@ -719,7 +720,7 @@ void DT_GetListDegreeTypes (Hie_Lvl_Level_t Scope,DT_Order_t Order)
/* Get degree type code (row[0]) */ /* Get degree type code (row[0]) */
if ((Gbl.DegTypes.Lst[NumTyp].DegTypCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Gbl.DegTypes.Lst[NumTyp].DegTypCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongDegTypExit (); Err_WrongDegTypExit ();
/* Get degree type name (row[1]) */ /* Get degree type name (row[1]) */
Str_Copy (Gbl.DegTypes.Lst[NumTyp].DegTypName,row[1], Str_Copy (Gbl.DegTypes.Lst[NumTyp].DegTypName,row[1],
@ -727,7 +728,7 @@ void DT_GetListDegreeTypes (Hie_Lvl_Level_t Scope,DT_Order_t Order)
/* Number of degrees of this type (row[2]) */ /* Number of degrees of this type (row[2]) */
if (sscanf (row[2],"%u",&Gbl.DegTypes.Lst[NumTyp].NumDegs) != 1) if (sscanf (row[2],"%u",&Gbl.DegTypes.Lst[NumTyp].NumDegs) != 1)
Lay_ShowErrorAndExit ("Error when getting number of degrees of a type"); Err_ShowErrorAndExit ("Error when getting number of degrees of a type");
} }
} }
@ -804,7 +805,7 @@ void DT_RemoveDegreeType (void)
/***** Get data of the degree type from database *****/ /***** Get data of the degree type from database *****/
if (!DT_GetDataOfDegreeTypeByCod (DT_EditingDegTyp)) if (!DT_GetDataOfDegreeTypeByCod (DT_EditingDegTyp))
Lay_WrongDegTypExit (); Err_WrongDegTypExit ();
/***** Check if this degree type has degrees *****/ /***** Check if this degree type has degrees *****/
if (DT_EditingDegTyp->NumDegs) // Degree type has degrees => don't remove if (DT_EditingDegTyp->NumDegs) // Degree type has degrees => don't remove
@ -842,7 +843,7 @@ long DT_GetAndCheckParamOtherDegTypCod (long MinCodAllowed)
/***** Get and check parameter with code of degree type *****/ /***** Get and check parameter with code of degree type *****/
if ((DegTypCod = Par_GetParToLong ("OthDegTypCod")) < MinCodAllowed) if ((DegTypCod = Par_GetParToLong ("OthDegTypCod")) < MinCodAllowed)
Lay_WrongDegTypExit (); Err_WrongDegTypExit ();
return DegTypCod; return DegTypCod;
} }
@ -921,7 +922,7 @@ static void DT_RemoveDegreeTypeCompletely (long DegTypCod)
{ {
/* Get next degree */ /* Get next degree */
if ((DegCod = DB_GetNextCode (mysql_res)) < 0) if ((DegCod = DB_GetNextCode (mysql_res)) < 0)
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
/* Remove degree */ /* Remove degree */
Deg_RemoveDegreeCompletely (DegCod); Deg_RemoveDegreeCompletely (DegCod);
@ -960,7 +961,7 @@ void DT_RenameDegreeType (void)
/***** Get from the database the old name of the degree type *****/ /***** Get from the database the old name of the degree type *****/
if (!DT_GetDataOfDegreeTypeByCod (DT_EditingDegTyp)) if (!DT_GetDataOfDegreeTypeByCod (DT_EditingDegTyp))
Lay_WrongDegTypExit (); Err_WrongDegTypExit ();
/***** Check if new name is empty *****/ /***** Check if new name is empty *****/
if (NewNameDegTyp[0]) if (NewNameDegTyp[0])
@ -1045,11 +1046,11 @@ static void DT_EditingDegreeTypeConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (DT_EditingDegTyp != NULL) if (DT_EditingDegTyp != NULL)
Lay_WrongDegTypExit (); Err_WrongDegTypExit ();
/***** Allocate memory for degree type *****/ /***** Allocate memory for degree type *****/
if ((DT_EditingDegTyp = malloc (sizeof (*DT_EditingDegTyp))) == NULL) if ((DT_EditingDegTyp = malloc (sizeof (*DT_EditingDegTyp))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset degree type *****/ /***** Reset degree type *****/
DT_EditingDegTyp->DegTypCod = -1L; DT_EditingDegTyp->DegTypCod = -1L;

View File

@ -34,6 +34,7 @@
#include "swad_constant.h" #include "swad_constant.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_department.h" #include "swad_department.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -377,7 +378,7 @@ static void Dpt_GetListDepartments (struct Dpt_Departments *Departments,long Ins
/***** Create list with courses in degree *****/ /***** Create list with courses in degree *****/
if ((Departments->Lst = calloc (Departments->Num, if ((Departments->Lst = calloc (Departments->Num,
sizeof (*Departments->Lst))) == NULL) sizeof (*Departments->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the departments *****/ /***** Get the departments *****/
for (NumDpt = 0; for (NumDpt = 0;
@ -391,11 +392,11 @@ static void Dpt_GetListDepartments (struct Dpt_Departments *Departments,long Ins
/* Get department code (row[0]) */ /* Get department code (row[0]) */
if ((Dpt->DptCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Dpt->DptCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongDepartmentExit (); Err_WrongDepartmentExit ();
/* Get institution code (row[1]) */ /* Get institution code (row[1]) */
if ((Dpt->InsCod = Str_ConvertStrCodToLongCod (row[1])) <= 0) if ((Dpt->InsCod = Str_ConvertStrCodToLongCod (row[1])) <= 0)
Lay_WrongInstitExit (); Err_WrongInstitExit ();
/* Get short name (row[2]), full name (row[3]) /* Get short name (row[2]), full name (row[3])
and URL (row[4]) of the department */ and URL (row[4]) of the department */
@ -644,7 +645,7 @@ long Dpt_GetAndCheckParamDptCod (long MinCodAllowed)
/***** Get and check parameter with code of department *****/ /***** Get and check parameter with code of department *****/
if ((DptCod = Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME)) < MinCodAllowed) if ((DptCod = Par_GetParToLong (Dpt_PARAM_DPT_COD_NAME)) < MinCodAllowed)
Lay_WrongDepartmentExit (); Err_WrongDepartmentExit ();
return DptCod; return DptCod;
} }
@ -1206,11 +1207,11 @@ static void Dpt_EditingDepartmentConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Dpt_EditingDpt != NULL) if (Dpt_EditingDpt != NULL)
Lay_WrongDepartmentExit (); Err_WrongDepartmentExit ();
/***** Allocate memory for department *****/ /***** Allocate memory for department *****/
if ((Dpt_EditingDpt = malloc (sizeof (*Dpt_EditingDpt))) == NULL) if ((Dpt_EditingDpt = malloc (sizeof (*Dpt_EditingDpt))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset department *****/ /***** Reset department *****/
Dpt_EditingDpt->DptCod = -1L; Dpt_EditingDpt->DptCod = -1L;

View File

@ -30,6 +30,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_duplicate.h" #include "swad_duplicate.h"
#include "swad_enrolment.h" #include "swad_enrolment.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -204,7 +205,7 @@ void Dup_ListDuplicateUsrs (void)
/* Write number of informants (row[1]) if greater than 1 */ /* Write number of informants (row[1]) if greater than 1 */
if (sscanf (row[1],"%u",&NumInformants) != 1) if (sscanf (row[1],"%u",&NumInformants) != 1)
Lay_ShowErrorAndExit ("Wrong number of informants."); Err_ShowErrorAndExit ("Wrong number of informants.");
if (NumInformants > 1) if (NumInformants > 1)
{ {
HTM_TxtColonNBSP (Txt_Informants); HTM_TxtColonNBSP (Txt_Informants);

View File

@ -37,6 +37,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_duplicate.h" #include "swad_duplicate.h"
#include "swad_enrolment.h" #include "swad_enrolment.h"
#include "swad_error.h"
#include "swad_exam_print.h" #include "swad_exam_print.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -243,7 +244,7 @@ void Enr_ModifyRoleInCurrentCrs (struct UsrData *UsrDat,Rol_Role_t NewRole)
case Rol_TCH: case Rol_TCH:
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
} }
/***** Update the role of a user in a course *****/ /***** Update the role of a user in a course *****/
@ -289,7 +290,7 @@ void Enr_RegisterUsrInCurrentCrs (struct UsrData *UsrDat,Rol_Role_t NewRole,
case Rol_TCH: case Rol_TCH:
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
} }
/***** Register user in current course in database *****/ /***** Register user in current course in database *****/
@ -363,7 +364,7 @@ static void Enr_NotifyAfterEnrolment (struct UsrData *UsrDat,Rol_Role_t NewRole)
break; break;
default: default:
NotifyEvent = Ntf_EVENT_UNKNOWN; NotifyEvent = Ntf_EVENT_UNKNOWN;
Lay_WrongRoleExit (); Err_WrongRoleExit ();
} }
/***** Remove possible enrolment request ******/ /***** Remove possible enrolment request ******/
@ -453,7 +454,7 @@ void Enr_ReqAcceptRegisterInCrs (void)
Frm_BeginForm (ActAccEnrTch); Frm_BeginForm (ActAccEnrTch);
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
} }
Btn_PutCreateButtonInline (Txt_Confirm_my_enrolment); Btn_PutCreateButtonInline (Txt_Confirm_my_enrolment);
Frm_EndForm (); Frm_EndForm ();
@ -471,7 +472,7 @@ void Enr_ReqAcceptRegisterInCrs (void)
Frm_BeginForm (ActRemMe_Tch); Frm_BeginForm (ActRemMe_Tch);
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
} }
Btn_PutRemoveButtonInline (Txt_Remove_me_from_this_course); Btn_PutRemoveButtonInline (Txt_Remove_me_from_this_course);
Frm_EndForm (); Frm_EndForm ();
@ -493,7 +494,7 @@ void Enr_ReqAcceptRegisterInCrs (void)
break; break;
default: default:
NotifyEvent = Ntf_EVENT_UNKNOWN; NotifyEvent = Ntf_EVENT_UNKNOWN;
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
Ntf_MarkNotifAsSeen (NotifyEvent,-1L,Gbl.Hierarchy.Crs.CrsCod, Ntf_MarkNotifAsSeen (NotifyEvent,-1L,Gbl.Hierarchy.Crs.CrsCod,
@ -560,7 +561,7 @@ void Enr_UpdateUsrData (struct UsrData *UsrDat)
/***** Check if user's code is initialized *****/ /***** Check if user's code is initialized *****/
if (UsrDat->UsrCod <= 0) if (UsrDat->UsrCod <= 0)
Lay_ShowErrorAndExit ("Can not update user's data. Wrong user's code."); Err_ShowErrorAndExit ("Can not update user's data. Wrong user's code.");
/***** Filter some user's data before updating */ /***** Filter some user's data before updating */
Enr_FilterUsrDat (UsrDat); Enr_FilterUsrDat (UsrDat);
@ -672,7 +673,7 @@ static void Enr_ReqAdminUsrs (Rol_Role_t Role)
Enr_ReqAnotherUsrIDToRegisterRemove (Role); Enr_ReqAnotherUsrIDToRegisterRemove (Role);
break; break;
default: default:
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
} }
} }
@ -726,7 +727,7 @@ static void Enr_ShowFormRegRemSeveralUsrs (Rol_Role_t Role)
default: default:
NextAction = ActUnk; NextAction = ActUnk;
Title = NULL; Title = NULL;
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
@ -751,7 +752,7 @@ static void Enr_ShowFormRegRemSeveralUsrs (Rol_Role_t Role)
default: default:
NextAction = ActUnk; NextAction = ActUnk;
Title = NULL; Title = NULL;
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
Frm_BeginForm (NextAction); Frm_BeginForm (NextAction);
@ -888,7 +889,7 @@ void Enr_RemoveOldUsrs (void)
Usr_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS, Usr_MAX_MONTHS_WITHOUT_ACCESS_TO_REMOVE_OLD_USRS,
(unsigned long) UINT_MAX); (unsigned long) UINT_MAX);
if (MonthsWithoutAccess == UINT_MAX) if (MonthsWithoutAccess == UINT_MAX)
Lay_ShowErrorAndExit ("Wrong number of months."); Err_ShowErrorAndExit ("Wrong number of months.");
SecondsWithoutAccess = (time_t) MonthsWithoutAccess * Dat_SECONDS_IN_ONE_MONTH; SecondsWithoutAccess = (time_t) MonthsWithoutAccess * Dat_SECONDS_IN_ONE_MONTH;
/***** Get old users from database *****/ /***** Get old users from database *****/
@ -1106,16 +1107,16 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
case Rol_STD: case Rol_STD:
if (Gbl.Usrs.Me.Role.Logged < Rol_TCH) // Can I register/remove students? if (Gbl.Usrs.Me.Role.Logged < Rol_TCH) // Can I register/remove students?
// No, I can not // No, I can not
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
case Rol_NET: case Rol_NET:
case Rol_TCH: case Rol_TCH:
if (Gbl.Usrs.Me.Role.Logged < Rol_DEG_ADM) // Can I register/remove teachers? if (Gbl.Usrs.Me.Role.Logged < Rol_DEG_ADM) // Can I register/remove teachers?
// No, I can not // No, I can not
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
@ -1169,10 +1170,10 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
WhatToDo.RegisterUsrs = false; WhatToDo.RegisterUsrs = false;
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
default: default:
Lay_ShowErrorAndExit ("Wrong registering / removing specification."); Err_ShowErrorAndExit ("Wrong registering / removing specification.");
break; break;
} }
@ -1206,7 +1207,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
/***** Get list of users' IDs *****/ /***** Get list of users' IDs *****/
if ((ListUsrsIDs = malloc (ID_MAX_BYTES_LIST_USRS_IDS + 1)) == NULL) if ((ListUsrsIDs = malloc (ID_MAX_BYTES_LIST_USRS_IDS + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Par_GetParToText ("UsrsIDs",ListUsrsIDs,ID_MAX_BYTES_LIST_USRS_IDS); Par_GetParToText ("UsrsIDs",ListUsrsIDs,ID_MAX_BYTES_LIST_USRS_IDS);
/***** Initialize structure with user's data *****/ /***** Initialize structure with user's data *****/
@ -1810,7 +1811,7 @@ static void Enr_RegisterUsr (struct UsrData *UsrDat,Rol_Role_t RegRemRole,
/***** Check if I can register this user *****/ /***** Check if I can register this user *****/
if (Gbl.Usrs.Me.Role.Logged == Rol_TCH && if (Gbl.Usrs.Me.Role.Logged == Rol_TCH &&
RegRemRole != Rol_STD) RegRemRole != Rol_STD)
Lay_ShowErrorAndExit ("A teacher only can register several users as students."); Err_ShowErrorAndExit ("A teacher only can register several users as students.");
/***** Check if the record of the user exists and get the type of user *****/ /***** Check if the record of the user exists and get the type of user *****/
if (UsrDat->UsrCod > 0) // User exists in database if (UsrDat->UsrCod > 0) // User exists in database
@ -1982,7 +1983,7 @@ void Enr_ReqSignUpInCrs (void)
/***** Show form to modify only the user's role or the user's data *****/ /***** Show form to modify only the user's role or the user's data *****/
Rec_ShowFormSignUpInCrsWithMySharedRecord (); Rec_ShowFormSignUpInCrsWithMySharedRecord ();
else else
Lay_ShowErrorAndExit ("You must be logged to sign up in a course."); // This never should happen Err_ShowErrorAndExit ("You must be logged to sign up in a course."); // This never should happen
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2016,7 +2017,7 @@ void Enr_SignUpInCrs (void)
if (!(RoleFromForm == Rol_STD || if (!(RoleFromForm == Rol_STD ||
RoleFromForm == Rol_NET || RoleFromForm == Rol_NET ||
RoleFromForm == Rol_TCH)) RoleFromForm == Rol_TCH))
Lay_WrongRoleExit (); Err_WrongRoleExit ();
/***** Try to get and old request of the same user in the same course from database *****/ /***** Try to get and old request of the same user in the same course from database *****/
ReqCod = DB_QuerySELECTCode ("can not get enrolment request", ReqCod = DB_QuerySELECTCode ("can not get enrolment request",
@ -2115,7 +2116,7 @@ void Enr_GetNotifEnrolmentRequest (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
if (asprintf (ContentStr, if (asprintf (ContentStr,
"%s", // TODO: Write more info in this content "%s", // TODO: Write more info in this content
Txt_ROLES_SINGUL_Abc[DesiredRole][UsrDat.Sex]) < 0) Txt_ROLES_SINGUL_Abc[DesiredRole][UsrDat.Sex]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/* Free memory used for user's data */ /* Free memory used for user's data */
Usr_UsrDataDestructor (&UsrDat); Usr_UsrDataDestructor (&UsrDat);
@ -2179,7 +2180,7 @@ void Enr_AskIfRejectSignUp (void)
Btn_REMOVE_BUTTON,Txt_Reject); Btn_REMOVE_BUTTON,Txt_Reject);
} }
else else
Lay_WrongRoleExit (); Err_WrongRoleExit ();
} }
} }
else else
@ -2247,7 +2248,7 @@ void Enr_ShowEnrolmentRequests (void)
(1 << Rol_TCH)); (1 << Rol_TCH));
break; break;
default: default:
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
} }
} }
@ -2465,7 +2466,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
RolesSelected); RolesSelected);
break; break;
default: default:
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
} }
break; break;
@ -2617,7 +2618,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
RolesSelected); RolesSelected);
break; break;
default: default:
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
} }
break; break;
@ -2731,7 +2732,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
RolesSelected); RolesSelected);
break; break;
default: default:
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
} }
break; break;
@ -2813,7 +2814,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
RolesSelected); RolesSelected);
break; break;
default: default:
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
} }
break; break;
@ -2866,7 +2867,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
RolesSelected); RolesSelected);
break; break;
default: default:
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
} }
break; break;
@ -2894,12 +2895,12 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
RolesSelected); RolesSelected);
break; break;
default: default:
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
} }
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -3026,7 +3027,7 @@ static void Enr_ShowEnrolmentRequestsGivenRoles (unsigned RolesSelected)
break; break;
default: default:
NextAction = ActUnk; NextAction = ActUnk;
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
Frm_BeginForm (NextAction); Frm_BeginForm (NextAction);
@ -3172,7 +3173,7 @@ void Enr_PutLinkToAdminSeveralUsrs (Rol_Role_t Role)
default: default:
NextAction = ActUnk; NextAction = ActUnk;
TitleText = NULL; TitleText = NULL;
Lay_WrongRoleExit (); Err_WrongRoleExit ();
} }
Lay_PutContextualLinkIconText (NextAction,NULL, Lay_PutContextualLinkIconText (NextAction,NULL,
NULL,NULL, NULL,NULL,
@ -3252,7 +3253,7 @@ static void Enr_ReqAnotherUsrIDToRegisterRemove (Rol_Role_t Role)
break; break;
default: default:
NextAction = ActUnk; NextAction = ActUnk;
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
Enr_WriteFormToReqAnotherUsrID (NextAction,NULL); Enr_WriteFormToReqAnotherUsrID (NextAction,NULL);
@ -3890,7 +3891,7 @@ void Enr_CreateNewUsr1 (void)
Gbl.Action.Act = ActCreTch; Gbl.Action.Act = ActCreTch;
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
Tab_SetCurrentTab (); Tab_SetCurrentTab ();
@ -4021,7 +4022,7 @@ void Enr_ModifyUsr1 (void)
Gbl.Action.Act = ActUpdTch; Gbl.Action.Act = ActUpdTch;
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
Tab_SetCurrentTab (); Tab_SetCurrentTab ();
@ -4186,7 +4187,7 @@ static void Enr_AskIfRemoveUsrFromCrs (struct UsrData *UsrDat)
break; break;
default: default:
NextAction = ActUnk; NextAction = ActUnk;
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
Frm_BeginForm (NextAction); Frm_BeginForm (NextAction);

600
swad_error.c Normal file
View File

@ -0,0 +1,600 @@
// swad_layout.c: page layout
/*
SWAD (Shared Workspace At a Distance),
is a web platform developed at the University of Granada (Spain),
and used to support university teaching.
This file is part of SWAD core.
Copyright (C) 1999-2021 Antonio Cañas Vargas
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*****************************************************************************/
/********************************* Headers ***********************************/
/*****************************************************************************/
#include "swad_database.h"
#include "swad_error.h"
#include "swad_global.h"
#include "swad_layout.h"
#include "swad_log.h"
#include "swad_statistic.h"
/*****************************************************************************/
/************** External global variables from others modules ****************/
/*****************************************************************************/
extern struct Globals Gbl;
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
/*****************************************************************************/
/***************************** Private constants *****************************/
/*****************************************************************************/
/*****************************************************************************/
/******************************* Private types *******************************/
/*****************************************************************************/
/*****************************************************************************/
/***************************** Private prototypes ****************************/
/*****************************************************************************/
/*****************************************************************************/
/********** Write error message and exit when not enough memory **************/
/*****************************************************************************/
void Err_NotEnoughMemoryExit (void)
{
Err_ShowErrorAndExit ("Not enough memory.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong action ****************/
/*****************************************************************************/
void Err_WrongActionExit (void)
{
Err_ShowErrorAndExit ("Wrong action.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong scope *****************/
/*****************************************************************************/
void Err_WrongScopeExit (void)
{
Err_ShowErrorAndExit ("Wrong scope.");
}
/*****************************************************************************/
/********* Write error message and exit *********/
/********* when wrong country, institution, center, degree or course *********/
/*****************************************************************************/
void Err_WrongCountrExit (void)
{
Err_ShowErrorAndExit ("Wrong country.");
}
void Err_WrongInstitExit (void)
{
Err_ShowErrorAndExit ("Wrong institution.");
}
void Err_WrongCenterExit (void)
{
Err_ShowErrorAndExit ("Wrong center.");
}
void Err_WrongDegTypExit (void)
{
Err_ShowErrorAndExit ("Wrong degree type.");
}
void Err_WrongDegreeExit (void)
{
Err_ShowErrorAndExit ("Wrong degree.");
}
void Err_WrongCourseExit (void)
{
Err_ShowErrorAndExit ("Wrong course.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong department **************/
/*****************************************************************************/
void Err_WrongDepartmentExit (void)
{
Err_ShowErrorAndExit ("Wrong department.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong place ****************/
/*****************************************************************************/
void Err_WrongPlaceExit (void)
{
Err_ShowErrorAndExit ("Wrong department.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong order *****************/
/*****************************************************************************/
void Err_WrongOrderExit (void)
{
Err_ShowErrorAndExit ("Wrong order.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong status ****************/
/*****************************************************************************/
void Err_WrongStatusExit (void)
{
Err_ShowErrorAndExit ("Wrong status.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong date ****************/
/*****************************************************************************/
void Err_WrongDateExit (void)
{
Err_ShowErrorAndExit ("Wrong date.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong plugin ***************/
/*****************************************************************************/
void Err_WrongPluginExit (void)
{
Err_ShowErrorAndExit ("Wrong plugin.");
}
/*****************************************************************************/
/********** Write error message and exit when wrong items list/item **********/
/*****************************************************************************/
void Err_WrongItemsListExit (void)
{
Err_ShowErrorAndExit ("Wrong items list.");
}
void Err_WrongItemExit (void)
{
Err_ShowErrorAndExit ("Wrong item.");
}
/*****************************************************************************/
/********** Write error message and exit when wrong syllabus format **********/
/*****************************************************************************/
void Err_WrongSyllabusFormatExit (void)
{
Err_ShowErrorAndExit ("Wrong syllabus format.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong file browser ************/
/*****************************************************************************/
void Err_WrongFileBrowserExit (void)
{
Err_ShowErrorAndExit ("Wrong file browser.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong copy source *************/
/*****************************************************************************/
void Err_WrongCopySrcExit (void)
{
Err_ShowErrorAndExit ("The copy source does not exist.");
}
/*****************************************************************************/
/********** Write error message and exit when wrong number of rows ***********/
/*****************************************************************************/
void Err_WrongNumberOfRowsExit (void)
{
Err_ShowErrorAndExit ("Wrong number of rows.");
}
/*****************************************************************************/
/********* Write error message and exit when wrong group type/group **********/
/*****************************************************************************/
void Err_WrongGrpTypExit (void)
{
Err_ShowErrorAndExit ("Wrong group type.");
}
void Err_WrongGroupExit (void)
{
Err_ShowErrorAndExit ("Wrong group.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong order *****************/
/*****************************************************************************/
void Err_WrongTypeOfViewExit (void)
{
Err_ShowErrorAndExit ("Wrong type of view.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong banner/link *************/
/*****************************************************************************/
void Err_WrongBannerExit (void)
{
Err_ShowErrorAndExit ("Wrong banner.");
}
void Err_WrongLinkExit (void)
{
Err_ShowErrorAndExit ("Wrong link.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong holiday ***************/
/*****************************************************************************/
void Err_WrongHolidayExit (void)
{
Err_ShowErrorAndExit ("Wrong holiday.");
}
/*****************************************************************************/
/********** Write error message and exit when wrong building/room ************/
/*****************************************************************************/
void Err_WrongBuildingExit (void)
{
Err_ShowErrorAndExit ("Wrong building.");
}
void Err_WrongRoomExit (void)
{
Err_ShowErrorAndExit ("Wrong room.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong record field ************/
/*****************************************************************************/
void Err_WrongRecordFieldExit (void)
{
Err_ShowErrorAndExit ("Wrong record field.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong assignment **************/
/*****************************************************************************/
void Err_WrongAssignmentExit (void)
{
Err_ShowErrorAndExit ("Wrong assignment.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong project ***************/
/*****************************************************************************/
void Err_WrongProjectExit (void)
{
Err_ShowErrorAndExit ("Wrong project.");
}
/*****************************************************************************/
/********** Write error message and exit when wrong call for exam ************/
/*****************************************************************************/
void Err_WrongCallForExamExit (void)
{
Err_ShowErrorAndExit ("Wrong call for exam.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong tag *****************/
/*****************************************************************************/
void Err_WrongTagExit (void)
{
Err_ShowErrorAndExit ("Wrong tag.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong test *****************/
/*****************************************************************************/
void Err_WrongTestExit (void)
{
Err_ShowErrorAndExit ("Wrong test.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong exam *****************/
/*****************************************************************************/
void Err_WrongExamExit (void)
{
Err_ShowErrorAndExit ("Wrong exam.");
}
/*****************************************************************************/
/********* Write error message and exit when wrong set of questions **********/
/*****************************************************************************/
void Err_WrongSetExit (void)
{
Err_ShowErrorAndExit ("Wrong set of questions.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong question **************/
/*****************************************************************************/
void Err_WrongQuestionExit (void)
{
Err_ShowErrorAndExit ("Wrong question.");
}
void Err_WrongQuestionIndexExit (void)
{
Err_ShowErrorAndExit ("Wrong question index.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong answer ***************/
/*****************************************************************************/
void Err_WrongAnswerExit (void)
{
Err_ShowErrorAndExit ("Wrong answer.");
}
void Err_WrongAnswerIndexExit (void)
{
Err_ShowErrorAndExit ("Wrong answer index.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong exam session ************/
/*****************************************************************************/
void Err_WrongExamSessionExit (void)
{
Err_ShowErrorAndExit ("Wrong exam session.");
}
/*****************************************************************************/
/************ Write error message and exit when wrong game/match *************/
/*****************************************************************************/
void Err_WrongGameExit (void)
{
Err_ShowErrorAndExit ("Wrong game.");
}
void Err_WrongMatchExit (void)
{
Err_ShowErrorAndExit ("Wrong match.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong survey ***************/
/*****************************************************************************/
void Err_WrongSurveyExit (void)
{
Err_ShowErrorAndExit ("Wrong survey.");
}
/*****************************************************************************/
/*** Write error message and exit when wrong parameter "who" (which users) ***/
/*****************************************************************************/
void Err_WrongWhoExit (void)
{
Err_ShowErrorAndExit ("Wrong parameter who.");
}
/*****************************************************************************/
/**************** Write error message and exit when wrong event **************/
/*****************************************************************************/
void Err_WrongEventExit (void)
{
Err_ShowErrorAndExit ("Wrong event.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong announcement ************/
/*****************************************************************************/
void Err_WrongAnnouncementExit (void)
{
Err_ShowErrorAndExit ("Wrong announcement.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong notice ***************/
/*****************************************************************************/
void Err_WrongNoticeExit (void)
{
Err_ShowErrorAndExit ("Wrong notice.");
}
/*****************************************************************************/
/************ Write error message and exit when wrong forum/post *************/
/*****************************************************************************/
void Err_WrongForumExit (void)
{
Err_ShowErrorAndExit ("Wrong forum.");
}
void Err_WrongPostExit (void)
{
Err_ShowErrorAndExit ("Wrong post.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong message **************/
/*****************************************************************************/
void Err_WrongMessageExit (void)
{
Err_ShowErrorAndExit ("Wrong message.");
}
/*****************************************************************************/
/************ Write error message and exit when wrong mail domain ************/
/*****************************************************************************/
void Err_WrongMailDomainExit (void)
{
Err_ShowErrorAndExit ("Wrong mail domain.");
}
/*****************************************************************************/
/************* Show error message about wrong role and exit ******************/
/*****************************************************************************/
void Err_WrongRoleExit (void)
{
Err_ShowErrorAndExit ("Wrong role.");
}
/*****************************************************************************/
/************ Write error message and exit when user does not exists *********/
/*****************************************************************************/
void Err_WrongUserExit (void)
{
extern const char *Txt_The_user_does_not_exist;
Err_ShowErrorAndExit (Txt_The_user_does_not_exist);
}
/*****************************************************************************/
/*** Write error message and exit when no permission to perform an action ****/
/*****************************************************************************/
void Err_NoPermissionExit (void)
{
extern const char *Txt_You_dont_have_permission_to_perform_this_action;
Err_ShowErrorAndExit (Txt_You_dont_have_permission_to_perform_this_action);
}
/*****************************************************************************/
/******* Write error message, close files, remove lock file, and exit ********/
/*****************************************************************************/
void Err_ShowErrorAndExit (const char *Txt)
{
/***** Unlock tables if locked *****/
if (Gbl.DB.LockedTables)
{
Gbl.DB.LockedTables = false;
mysql_query (&Gbl.mysql,"UNLOCK TABLES");
}
if (!Gbl.WebService.IsWebService)
{
/****** If start of page is not written yet, do it now ******/
if (!Gbl.Layout.HTMLStartWritten)
Lay_WriteStartOfPage ();
/***** Write possible error message *****/
if (Txt)
Ale_ShowAlert (Ale_ERROR,Txt);
/***** Finish the page, except </body> and </html> *****/
Lay_WriteEndOfPage ();
}
/***** Free memory and close all the open files *****/
Gbl_Cleanup ();
/***** Page is generated (except </body> and </html>).
Compute time to generate page *****/
if (!Gbl.Action.IsAJAXAutoRefresh)
Gbl.TimeGenerationInMicroseconds = (long) Sta_ComputeTimeToGeneratePage ();
if (Gbl.WebService.IsWebService) // Serving a plugin request
{
/***** Log access *****/
Gbl.TimeSendInMicroseconds = 0L;
Log_LogAccess (Txt);
}
else
{
/***** Send page.
The HTML output is now in Gbl.F.Out file ==>
==> copy it to standard output *****/
rewind (Gbl.F.Out);
Fil_FastCopyOfOpenFiles (Gbl.F.Out,stdout);
Fil_CloseAndRemoveFileForHTMLOutput ();
if (!Gbl.Action.IsAJAXAutoRefresh)
{
/***** Compute time to send page *****/
Sta_ComputeTimeToSendPage ();
/***** Log access *****/
Log_LogAccess (Txt);
/***** Update last data for next time *****/
if (Gbl.Usrs.Me.Logged)
{
Usr_UpdateMyLastData ();
Crs_UpdateCrsLast ();
}
/***** End the output *****/
if (!Gbl.Layout.HTMLEndWritten)
{
// Here Gbl.F.Out is stdout
if (Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB)
Lay_WriteAboutZone ();
HTM_Txt ("</body>\n"
"</html>\n");
Gbl.Layout.HTMLEndWritten = true;
}
}
}
/***** Close database connection *****/
DB_CloseDBConnection ();
/***** Exit *****/
if (Gbl.WebService.IsWebService)
API_Exit (Txt);
exit (0);
}

100
swad_error.h Normal file
View File

@ -0,0 +1,100 @@
// swad_error.h: exit on error
#ifndef _SWAD_ERR
#define _SWAD_ERR
/*
SWAD (Shared Workspace At a Distance in Spanish),
is a web platform developed at the University of Granada (Spain),
and used to support university teaching.
This file is part of SWAD core.
Copyright (C) 1999-2021 Antonio Cañas Vargas
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/*****************************************************************************/
/********************************* Headers ***********************************/
/*****************************************************************************/
/*****************************************************************************/
/****************************** Public constants *****************************/
/*****************************************************************************/
/*****************************************************************************/
/********************************* Public types ******************************/
/*****************************************************************************/
/*****************************************************************************/
/****************************** Public prototypes ****************************/
/*****************************************************************************/
void Err_NotEnoughMemoryExit (void);
void Err_WrongActionExit (void);
void Err_WrongScopeExit (void);
void Err_WrongCountrExit (void);
void Err_WrongInstitExit (void);
void Err_WrongCenterExit (void);
void Err_WrongDegTypExit (void);
void Err_WrongDegreeExit (void);
void Err_WrongCourseExit (void);
void Err_WrongDepartmentExit (void);
void Err_WrongPlaceExit (void);
void Err_WrongOrderExit (void);
void Err_WrongStatusExit (void);
void Err_WrongDateExit (void);
void Err_WrongPluginExit (void);
void Err_WrongItemsListExit (void);
void Err_WrongItemExit (void);
void Err_WrongSyllabusFormatExit (void);
void Err_WrongFileBrowserExit (void);
void Err_WrongCopySrcExit (void);
void Err_WrongNumberOfRowsExit (void);
void Err_WrongGrpTypExit (void);
void Err_WrongGroupExit (void);
void Err_WrongTypeOfViewExit (void);
void Err_WrongBannerExit (void);
void Err_WrongLinkExit (void);
void Err_WrongHolidayExit (void);
void Err_WrongBuildingExit (void);
void Err_WrongRoomExit (void);
void Err_WrongRecordFieldExit (void);
void Err_WrongAssignmentExit (void);
void Err_WrongProjectExit (void);
void Err_WrongCallForExamExit (void);
void Err_WrongTagExit (void);
void Err_WrongTestExit (void);
void Err_WrongExamExit (void);
void Err_WrongSetExit (void);
void Err_WrongQuestionExit (void);
void Err_WrongQuestionIndexExit (void);
void Err_WrongAnswerExit (void);
void Err_WrongAnswerIndexExit (void);
void Err_WrongExamSessionExit (void);
void Err_WrongGameExit (void);
void Err_WrongMatchExit (void);
void Err_WrongSurveyExit (void);
void Err_WrongWhoExit (void);
void Err_WrongEventExit (void);
void Err_WrongAnnouncementExit (void);
void Err_WrongNoticeExit (void);
void Err_WrongForumExit (void);
void Err_WrongPostExit (void);
void Err_WrongMessageExit (void);
void Err_WrongMailDomainExit (void);
void Err_WrongRoleExit (void);
void Err_WrongUserExit (void);
void Err_NoPermissionExit (void);
void Err_ShowErrorAndExit (const char *Txt);
#endif

View File

@ -35,6 +35,7 @@
#include <string.h> // For string functions #include <string.h> // For string functions
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_exam.h" #include "swad_exam.h"
#include "swad_exam_print.h" #include "swad_exam_print.h"
#include "swad_exam_result.h" #include "swad_exam_result.h"
@ -425,7 +426,7 @@ void Exa_SeeOneExam (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
/***** Get exam data *****/ /***** Get exam data *****/
@ -525,7 +526,7 @@ static void Exa_ShowOneExam (struct Exa_Exams *Exams,
StartEndTime++) StartEndTime++)
{ {
if (asprintf (&Id,"exa_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"exa_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Color = Exam->NumOpenSess ? (Exam->Hidden ? "DATE_GREEN_LIGHT": Color = Exam->NumOpenSess ? (Exam->Hidden ? "DATE_GREEN_LIGHT":
"DATE_GREEN") : "DATE_GREEN") :
(Exam->Hidden ? "DATE_RED_LIGHT": (Exam->Hidden ? "DATE_RED_LIGHT":
@ -812,7 +813,7 @@ void Exa_GetListExams (struct Exa_Exams *Exams,Exa_Order_t SelectedOrder)
{ {
case Rol_STD: case Rol_STD:
if (asprintf (&HiddenSubQuery," AND exa_exams.Hidden='N'") < 0) if (asprintf (&HiddenSubQuery," AND exa_exams.Hidden='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
case Rol_NET: case Rol_NET:
case Rol_TCH: case Rol_TCH:
@ -821,10 +822,10 @@ void Exa_GetListExams (struct Exa_Exams *Exams,Exa_Order_t SelectedOrder)
case Rol_INS_ADM: case Rol_INS_ADM:
case Rol_SYS_ADM: case Rol_SYS_ADM:
if (asprintf (&HiddenSubQuery,"%s","") < 0) if (asprintf (&HiddenSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
@ -853,7 +854,7 @@ void Exa_GetListExams (struct Exa_Exams *Exams,Exa_Order_t SelectedOrder)
/***** Create list of exams *****/ /***** Create list of exams *****/
if ((Exams->Lst = malloc ((size_t) Exams->Num * if ((Exams->Lst = malloc ((size_t) Exams->Num *
sizeof (*Exams->Lst))) == NULL) sizeof (*Exams->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the exams codes *****/ /***** Get the exams codes *****/
for (NumExam = 0; for (NumExam = 0;
@ -863,7 +864,7 @@ void Exa_GetListExams (struct Exa_Exams *Exams,Exa_Order_t SelectedOrder)
/* Get next exam code (row[0]) */ /* Get next exam code (row[0]) */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if ((Exams->Lst[NumExam].ExaCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Exams->Lst[NumExam].ExaCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
} }
} }
@ -888,7 +889,7 @@ void Exa_GetListSelectedExaCods (struct Exa_Exams *Exams)
/***** Allocate memory for list of exams selected *****/ /***** Allocate memory for list of exams selected *****/
MaxSizeListExaCodsSelected = Exams->Num * (Cns_MAX_DECIMAL_DIGITS_LONG + 1); MaxSizeListExaCodsSelected = Exams->Num * (Cns_MAX_DECIMAL_DIGITS_LONG + 1);
if ((Exams->ExaCodsSelected = malloc (MaxSizeListExaCodsSelected + 1)) == NULL) if ((Exams->ExaCodsSelected = malloc (MaxSizeListExaCodsSelected + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get parameter multiple with list of exams selected *****/ /***** Get parameter multiple with list of exams selected *****/
Par_GetParMultiToText ("ExaCod",Exams->ExaCodsSelected,MaxSizeListExaCodsSelected); Par_GetParMultiToText ("ExaCod",Exams->ExaCodsSelected,MaxSizeListExaCodsSelected);
@ -1083,7 +1084,7 @@ void Exa_AskRemExam (void)
/***** Check if I can edit exams *****/ /***** Check if I can edit exams *****/
if (!Exa_CheckIfICanEditExams ()) if (!Exa_CheckIfICanEditExams ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Reset exams context *****/ /***** Reset exams context *****/
Exa_ResetExams (&Exams); Exa_ResetExams (&Exams);
@ -1092,7 +1093,7 @@ void Exa_AskRemExam (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
/***** Get data of the exam from database *****/ /***** Get data of the exam from database *****/
@ -1123,7 +1124,7 @@ void Exa_RemoveExam (void)
/***** Check if I can edit exams *****/ /***** Check if I can edit exams *****/
if (!Exa_CheckIfICanEditExams ()) if (!Exa_CheckIfICanEditExams ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Reset exams context *****/ /***** Reset exams context *****/
Exa_ResetExams (&Exams); Exa_ResetExams (&Exams);
@ -1131,7 +1132,7 @@ void Exa_RemoveExam (void)
/***** Get exam code *****/ /***** Get exam code *****/
if ((Exam.ExaCod = Exa_GetParamExamCod ()) <= 0) if ((Exam.ExaCod = Exa_GetParamExamCod ()) <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
/***** Get data of the exam from database *****/ /***** Get data of the exam from database *****/
Exa_GetDataOfExamByCod (&Exam); Exa_GetDataOfExamByCod (&Exam);
@ -1304,7 +1305,7 @@ void Exa_HideExam (void)
/***** Check if I can edit exams *****/ /***** Check if I can edit exams *****/
if (!Exa_CheckIfICanEditExams ()) if (!Exa_CheckIfICanEditExams ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Reset exams context *****/ /***** Reset exams context *****/
Exa_ResetExams (&Exams); Exa_ResetExams (&Exams);
@ -1313,7 +1314,7 @@ void Exa_HideExam (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
/***** Get data of the exam from database *****/ /***** Get data of the exam from database *****/
@ -1342,7 +1343,7 @@ void Exa_UnhideExam (void)
/***** Check if I can edit exams *****/ /***** Check if I can edit exams *****/
if (!Exa_CheckIfICanEditExams ()) if (!Exa_CheckIfICanEditExams ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Reset exams context *****/ /***** Reset exams context *****/
Exa_ResetExams (&Exams); Exa_ResetExams (&Exams);
@ -1351,7 +1352,7 @@ void Exa_UnhideExam (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
/***** Get data of the exam from database *****/ /***** Get data of the exam from database *****/
@ -1400,7 +1401,7 @@ void Exa_RequestCreatOrEditExam (void)
/***** Check if I can edit exams *****/ /***** Check if I can edit exams *****/
if (!Exa_CheckIfICanEditExams ()) if (!Exa_CheckIfICanEditExams ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Reset exams context *****/ /***** Reset exams context *****/
Exa_ResetExams (&Exams); Exa_ResetExams (&Exams);
@ -1578,7 +1579,7 @@ void Exa_ReceiveFormExam (void)
/***** Check if I can edit exams *****/ /***** Check if I can edit exams *****/
if (!Exa_CheckIfICanEditExams ()) if (!Exa_CheckIfICanEditExams ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Reset exams context *****/ /***** Reset exams context *****/
Exa_ResetExams (&Exams); Exa_ResetExams (&Exams);
@ -1746,7 +1747,7 @@ unsigned Exa_GetParamQstInd (void)
long QstInd; long QstInd;
if ((QstInd = Par_GetParToLong ("QstInd")) <= 0) if ((QstInd = Par_GetParToLong ("QstInd")) <= 0)
Lay_WrongQuestionIndexExit (); Err_WrongQuestionIndexExit ();
return (unsigned) QstInd; return (unsigned) QstInd;
} }
@ -1768,7 +1769,7 @@ long Exa_GetQstCodFromQstInd (long ExaCod,unsigned QstInd)
ExaCod, ExaCod,
QstInd); QstInd);
if (QstCod <= 0) if (QstCod <= 0)
Lay_WrongQuestionIndexExit (); Err_WrongQuestionIndexExit ();
return QstCod; return QstCod;
} }
@ -1909,7 +1910,7 @@ unsigned Exa_GetNumCoursesWithExams (Hie_Lvl_Level_t Scope)
" WHERE CrsCod=%ld", " WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
return 0; // Not reached return 0; // Not reached
} }
} }
@ -1979,7 +1980,7 @@ unsigned Exa_GetNumExams (Hie_Lvl_Level_t Scope)
" WHERE CrsCod=%ld", " WHERE CrsCod=%ld",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
return 0; // Not reached return 0; // Not reached
} }
} }
@ -2072,7 +2073,7 @@ double Exa_GetNumQstsPerCrsExam (Hie_Lvl_Level_t Scope)
" GROUP BY exa_set_questions.ExaCod) AS NumQstsTable", " GROUP BY exa_set_questions.ExaCod) AS NumQstsTable",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
return 0.0; // Not reached return 0.0; // Not reached
} }
} }
@ -2096,7 +2097,7 @@ void Exa_GetScoreRange (long ExaCod,double *MinScore,double *MaxScore)
" GROUP BY tst_answers.QstCod", " GROUP BY tst_answers.QstCod",
ExaCod); ExaCod);
if (NumAnswers < 2) if (NumAnswers < 2)
Lay_ShowErrorAndExit ("Wrong number of answers."); Err_ShowErrorAndExit ("Wrong number of answers.");
/***** Set minimum and maximum scores *****/ /***** Set minimum and maximum scores *****/
*MinScore = *MaxScore = 0.0; *MinScore = *MaxScore = 0.0;

View File

@ -32,6 +32,7 @@
#include "swad_action.h" #include "swad_action.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_exam_log.h" #include "swad_exam_log.h"
#include "swad_global.h" #include "swad_global.h"
@ -231,7 +232,7 @@ static void ExaLog_LogUsrAgent (long LogCod,long PrnCod)
else else
MaxBytes = 0; MaxBytes = 0;
if ((UserAgentDB = malloc (MaxBytes + 1)) == NULL) if ((UserAgentDB = malloc (MaxBytes + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (UserAgent) if (UserAgent)
{ {
Str_Copy (UserAgentDB,UserAgent,MaxBytes); Str_Copy (UserAgentDB,UserAgent,MaxBytes);
@ -389,7 +390,7 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
/* Get session id (row[6]) */ /* Get session id (row[6]) */
if (asprintf (&UserAgent,"%s",row[6] ? row[6] : if (asprintf (&UserAgent,"%s",row[6] ? row[6] :
"=") < 0) "=") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Set color of row depending on action *****/ /***** Set color of row depending on action *****/
if (UsrCouldAnswer) if (UsrCouldAnswer)
@ -422,7 +423,7 @@ void ExaLog_ShowExamLog (const struct ExaPrn_Print *Print)
/* Write click time */ /* Write click time */
if (asprintf (&Id,"click_date_%u",NumClick) < 0) if (asprintf (&Id,"click_date_%u",NumClick) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LT COLOR%u %s\"",Id,Gbl.RowEvenOdd,Class); HTM_TD_Begin ("id=\"%s\" class=\"LT COLOR%u %s\"",Id,Gbl.RowEvenOdd,Class);
Dat_WriteLocalDateHMSFromUTC (Id,ClickTimeUTC, Dat_WriteLocalDateHMSFromUTC (Id,ClickTimeUTC,
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA, Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,

View File

@ -33,6 +33,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_exam.h" #include "swad_exam.h"
#include "swad_exam_log.h" #include "swad_exam_log.h"
#include "swad_exam_print.h" #include "swad_exam_print.h"
@ -415,7 +416,7 @@ static void ExaPrn_GetQuestionsForNewPrintFromDB (struct ExaPrn_Print *Print,lon
/***** Check *****/ /***** Check *****/
if (Print->NumQsts.All != NumQstInPrint) if (Print->NumQsts.All != NumQstInPrint)
Lay_ShowErrorAndExit ("Wrong number of questions."); Err_ShowErrorAndExit ("Wrong number of questions.");
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -556,7 +557,7 @@ static void ExaPrn_GenerateChoiceIndexes (struct TstPrn_PrintedQuestion *Printed
else else
ErrorInIndex = true; ErrorInIndex = true;
if (ErrorInIndex) if (ErrorInIndex)
Lay_WrongAnswerIndexExit (); Err_WrongAnswerIndexExit ();
if (NumOpt == 0) if (NumOpt == 0)
snprintf (StrInd,sizeof (StrInd),"%u",Index); snprintf (StrInd,sizeof (StrInd),"%u",Index);
@ -635,16 +636,16 @@ void ExaPrn_GetPrintQuestionsFromDB (struct ExaPrn_Print *Print)
/* Get question code (row[0]) */ /* Get question code (row[0]) */
if ((Print->PrintedQuestions[NumQst].QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Print->PrintedQuestions[NumQst].QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Get set code (row[1]) */ /* Get set code (row[1]) */
if ((Print->PrintedQuestions[NumQst].SetCod = Str_ConvertStrCodToLongCod (row[1])) < 0) if ((Print->PrintedQuestions[NumQst].SetCod = Str_ConvertStrCodToLongCod (row[1])) < 0)
Lay_WrongSetExit (); Err_WrongSetExit ();
/* Get score (row[2]) */ /* Get score (row[2]) */
Str_SetDecimalPointToUS (); // To get the decimal point as a dot Str_SetDecimalPointToUS (); // To get the decimal point as a dot
if (sscanf (row[2],"%lf",&Print->PrintedQuestions[NumQst].Score) != 1) if (sscanf (row[2],"%lf",&Print->PrintedQuestions[NumQst].Score) != 1)
Lay_ShowErrorAndExit ("Wrong question score."); Err_ShowErrorAndExit ("Wrong question score.");
Str_SetDecimalPointToLocal (); // Return to local system Str_SetDecimalPointToLocal (); // Return to local system
/* Get indexes for this question (row[3]) */ /* Get indexes for this question (row[3]) */
@ -660,7 +661,7 @@ void ExaPrn_GetPrintQuestionsFromDB (struct ExaPrn_Print *Print)
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
if (Print->NumQsts.All > ExaPrn_MAX_QUESTIONS_PER_EXAM_PRINT) if (Print->NumQsts.All > ExaPrn_MAX_QUESTIONS_PER_EXAM_PRINT)
Lay_ShowErrorAndExit ("Too many questions."); Err_ShowErrorAndExit ("Too many questions.");
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1066,22 +1067,22 @@ void ExaPrn_ReceivePrintAnswer (void)
Print.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod; Print.UsrCod = Gbl.Usrs.Me.UsrDat.UsrCod;
ExaPrn_GetDataOfPrintBySesCodAndUsrCod (&Print); ExaPrn_GetDataOfPrintBySesCodAndUsrCod (&Print);
if (Print.PrnCod <= 0) if (Print.PrnCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
/***** Get session data *****/ /***** Get session data *****/
Session.SesCod = Print.SesCod; Session.SesCod = Print.SesCod;
ExaSes_GetDataOfSessionByCod (&Session); ExaSes_GetDataOfSessionByCod (&Session);
if (Session.SesCod <= 0) if (Session.SesCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exams.SesCod = Session.SesCod; Exams.SesCod = Session.SesCod;
/***** Get exam data *****/ /***** Get exam data *****/
Exam.ExaCod = Session.ExaCod; Exam.ExaCod = Session.ExaCod;
Exa_GetDataOfExamByCod (&Exam); Exa_GetDataOfExamByCod (&Exam);
if (Exam.ExaCod <= 0) if (Exam.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
if (Exam.CrsCod != Gbl.Hierarchy.Crs.CrsCod) if (Exam.CrsCod != Gbl.Hierarchy.Crs.CrsCod)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exams.ExaCod = Exam.ExaCod; Exams.ExaCod = Exam.ExaCod;
/***** Get question index from form *****/ /***** Get question index from form *****/
@ -1153,7 +1154,7 @@ static unsigned ExaPrn_GetParamQstInd (void)
NumQst = Par_GetParToLong ("NumQst"); NumQst = Par_GetParToLong ("NumQst");
if (NumQst < 0) if (NumQst < 0)
Lay_ShowErrorAndExit ("Wrong number of question."); Err_ShowErrorAndExit ("Wrong number of question.");
return (unsigned) NumQst; return (unsigned) NumQst;
} }
@ -1289,7 +1290,7 @@ static void ExaPrn_GetCorrectIntAnswerFromDB (struct Tst_Question *Question)
/***** Get correct answer *****/ /***** Get correct answer *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%ld",&Question->Answer.Integer) != 1) if (sscanf (row[0],"%ld",&Question->Answer.Integer) != 1)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -1312,7 +1313,7 @@ static void ExaPrn_GetCorrectFltAnswerFromDB (struct Tst_Question *Question)
/***** Check if number of rows is correct *****/ /***** Check if number of rows is correct *****/
if (Question->Answer.NumOptions != 2) if (Question->Answer.NumOptions != 2)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/***** Get float range *****/ /***** Get float range *****/
for (NumOpt = 0; for (NumOpt = 0;

View File

@ -35,6 +35,7 @@
#include "swad_action.h" #include "swad_action.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_date.h" #include "swad_date.h"
#include "swad_error.h"
#include "swad_exam.h" #include "swad_exam.h"
#include "swad_exam_log.h" #include "swad_exam_log.h"
#include "swad_exam_print.h" #include "swad_exam_print.h"
@ -204,7 +205,7 @@ void ExaRes_ShowMyResultsInExa (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
/***** Get exam data from database *****/ /***** Get exam data from database *****/
@ -256,10 +257,10 @@ void ExaRes_ShowMyResultsInSes (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
if ((Session.SesCod = ExaSes_GetParamSesCod ()) <= 0) if ((Session.SesCod = ExaSes_GetParamSesCod ()) <= 0)
Lay_WrongExamSessionExit (); Err_WrongExamSessionExit ();
Exa_GetDataOfExamByCod (&Exam); Exa_GetDataOfExamByCod (&Exam);
Exams.ExaCod = Exam.ExaCod; Exams.ExaCod = Exam.ExaCod;
ExaSes_GetDataOfSessionByCod (&Session); ExaSes_GetDataOfSessionByCod (&Session);
@ -406,7 +407,7 @@ void ExaRes_ShowAllResultsInExa (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
Exa_GetDataOfExamByCod (&Exam); Exa_GetDataOfExamByCod (&Exam);
Exams.ExaCod = Exam.ExaCod; Exams.ExaCod = Exam.ExaCod;
@ -493,10 +494,10 @@ void ExaRes_ShowAllResultsInSes (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
if ((Session.SesCod = ExaSes_GetParamSesCod ()) <= 0) if ((Session.SesCod = ExaSes_GetParamSesCod ()) <= 0)
Lay_WrongExamSessionExit (); Err_WrongExamSessionExit ();
/***** Get exam data and session *****/ /***** Get exam data and session *****/
Exa_GetDataOfExamByCod (&Exam); Exa_GetDataOfExamByCod (&Exam);
@ -777,7 +778,7 @@ static void ExaRes_BuildExamsSelectedCommas (struct Exa_Exams *Exams,
/***** Allocate memory for subquery of exams selected *****/ /***** Allocate memory for subquery of exams selected *****/
MaxLength = (size_t) Exams->NumSelected * (Cns_MAX_DECIMAL_DIGITS_LONG + 1); MaxLength = (size_t) Exams->NumSelected * (Cns_MAX_DECIMAL_DIGITS_LONG + 1);
if ((*ExamsSelectedCommas = malloc (MaxLength + 1)) == NULL) if ((*ExamsSelectedCommas = malloc (MaxLength + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Build subquery with list of selected exams *****/ /***** Build subquery with list of selected exams *****/
(*ExamsSelectedCommas)[0] = '\0'; (*ExamsSelectedCommas)[0] = '\0';
@ -845,12 +846,12 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
if (SesCod > 0) // One unique session if (SesCod > 0) // One unique session
{ {
if (asprintf (&SesSubQuery," AND exa_prints.SesCod=%ld",SesCod) < 0) if (asprintf (&SesSubQuery," AND exa_prints.SesCod=%ld",SesCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else // All sessions of selected exams else // All sessions of selected exams
{ {
if (asprintf (&SesSubQuery,"%s","") < 0) if (asprintf (&SesSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/***** Subquery: get hidden sessions? /***** Subquery: get hidden sessions?
@ -861,11 +862,11 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
{ {
case Usr_ME: // A student watching her/his results case Usr_ME: // A student watching her/his results
if (asprintf (&HidSesSubQuery," AND exa_sessions.Hidden='N'") < 0) if (asprintf (&HidSesSubQuery," AND exa_sessions.Hidden='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
default: // A teacher/admin watching the results of other users default: // A teacher/admin watching the results of other users
if (asprintf (&HidSesSubQuery,"%s","") < 0) if (asprintf (&HidSesSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
} }
@ -873,7 +874,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
if (ExaCod > 0) // One unique exams if (ExaCod > 0) // One unique exams
{ {
if (asprintf (&ExaSubQuery," AND exa_sessions.ExaCod=%ld",ExaCod) < 0) if (asprintf (&ExaSubQuery," AND exa_sessions.ExaCod=%ld",ExaCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else if (ExamsSelectedCommas) else if (ExamsSelectedCommas)
{ {
@ -881,18 +882,18 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
{ {
if (asprintf (&ExaSubQuery," AND exa_sessions.ExaCod IN (%s)", if (asprintf (&ExaSubQuery," AND exa_sessions.ExaCod IN (%s)",
ExamsSelectedCommas) < 0) ExamsSelectedCommas) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (&ExaSubQuery,"%s","") < 0) if (asprintf (&ExaSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
} }
else // All exams else // All exams
{ {
if (asprintf (&ExaSubQuery,"%s","") < 0) if (asprintf (&ExaSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/***** Subquery: get hidden exams? /***** Subquery: get hidden exams?
@ -903,11 +904,11 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
{ {
case Usr_ME: // A student watching her/his results case Usr_ME: // A student watching her/his results
if (asprintf (&HidExaSubQuery," AND exa_exams.Hidden='N'") < 0) if (asprintf (&HidExaSubQuery," AND exa_exams.Hidden='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
default: // A teacher/admin watching the results of other users default: // A teacher/admin watching the results of other users
if (asprintf (&HidExaSubQuery,"%s","") < 0) if (asprintf (&HidExaSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
} }
@ -951,7 +952,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
{ {
/* Get print code (row[0]) */ /* Get print code (row[0]) */
if ((Print.PrnCod = DB_GetNextCode (mysql_res)) <= 0) if ((Print.PrnCod = DB_GetNextCode (mysql_res)) <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
/* Get print data */ /* Get print data */
ExaPrn_GetDataOfPrintByPrnCod (&Print); ExaPrn_GetDataOfPrintByPrnCod (&Print);
@ -975,7 +976,7 @@ static void ExaRes_ShowResults (struct Exa_Exams *Exams,
{ {
UniqueId++; UniqueId++;
if (asprintf (&Id,"exa_res_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"exa_res_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id =\"%s\" class=\"DAT LT COLOR%u\"", HTM_TD_Begin ("id =\"%s\" class=\"DAT LT COLOR%u\"",
Id,Gbl.RowEvenOdd); Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime], Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime],
@ -1457,9 +1458,9 @@ static void ExaRes_ShowExamResult (const struct Exa_Exam *Exam,
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (UsrDat, if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (UsrDat,
Usr_DONT_GET_PREFS, Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS)) Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Lay_WrongUserExit (); Err_WrongUserExit ();
if (!Usr_CheckIfICanViewTstExaMchResult (UsrDat)) if (!Usr_CheckIfICanViewTstExaMchResult (UsrDat))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Begin table *****/ /***** Begin table *****/
HTM_TABLE_BeginWideMarginPadding (10); HTM_TABLE_BeginWideMarginPadding (10);
@ -1674,7 +1675,7 @@ static void ExaRes_ShowExamResultTime (struct ExaPrn_Print *Print)
/***** Time *****/ /***** Time *****/
if (asprintf (&Id,"match_%u",(unsigned) StartEndTime) < 0) if (asprintf (&Id,"match_%u",(unsigned) StartEndTime) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"DAT LB\"",Id); HTM_TD_Begin ("id=\"%s\" class=\"DAT LB\"",Id);
Dat_WriteLocalDateHMSFromUTC (Id,Print->TimeUTC[StartEndTime], Dat_WriteLocalDateHMSFromUTC (Id,Print->TimeUTC[StartEndTime],
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA, Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,

View File

@ -34,6 +34,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_date.h" #include "swad_date.h"
#include "swad_error.h"
#include "swad_exam.h" #include "swad_exam.h"
#include "swad_exam_print.h" #include "swad_exam_print.h"
#include "swad_exam_result.h" #include "swad_exam_result.h"
@ -163,7 +164,7 @@ void ExaSes_ListSessions (struct Exa_Exams *Exams,
{ {
case Rol_STD: case Rol_STD:
if (asprintf (&HiddenSubQuery," AND Hidden='N'") < 0) if (asprintf (&HiddenSubQuery," AND Hidden='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
case Rol_NET: case Rol_NET:
case Rol_TCH: case Rol_TCH:
@ -172,10 +173,10 @@ void ExaSes_ListSessions (struct Exa_Exams *Exams,
case Rol_INS_ADM: case Rol_INS_ADM:
case Rol_SYS_ADM: case Rol_SYS_ADM:
if (asprintf (&HiddenSubQuery,"%s","") < 0) if (asprintf (&HiddenSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
@ -193,11 +194,11 @@ void ExaSes_ListSessions (struct Exa_Exams *Exams,
" WHERE grp_users.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND exa_groups.GrpCod=grp_users.GrpCod))", " AND exa_groups.GrpCod=grp_users.GrpCod))",
Gbl.Usrs.Me.UsrDat.UsrCod) < 0) Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else // Gbl.Crs.Grps.WhichGrps == Grp_ALL_GROUPS else // Gbl.Crs.Grps.WhichGrps == Grp_ALL_GROUPS
if (asprintf (&GroupsSubQuery,"%s","") < 0) if (asprintf (&GroupsSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get data of sessions from database *****/ /***** Get data of sessions from database *****/
NumSessions = (unsigned) NumSessions = (unsigned)
@ -402,7 +403,7 @@ static void ExaSes_ListOneOrMoreSessions (struct Exa_Exams *Exams,
{ {
/***** Build anchor string *****/ /***** Build anchor string *****/
if (asprintf (&Anchor,"evt_%ld_%ld",Exam->ExaCod,Session.SesCod) < 0) if (asprintf (&Anchor,"evt_%ld_%ld",Exam->ExaCod,Session.SesCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Begin row for this exam session ****/ /***** Begin row for this exam session ****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -591,7 +592,7 @@ static void ExaSes_ListOneOrMoreSessionsTimes (const struct ExaSes_Session *Sess
"DATE_RED"); "DATE_RED");
if (asprintf (&Id,"exa_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"exa_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"", HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
Id,Color,Gbl.RowEvenOdd); Id,Color,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Session->TimeUTC[StartEndTime], Dat_WriteLocalDateHMSFromUTC (Id,Session->TimeUTC[StartEndTime],
@ -737,7 +738,7 @@ static void ExaSes_ListOneOrMoreSessionsResult (struct Exa_Exams *Exams,
ExaSes_ListOneOrMoreSessionsResultTch (Exams,Session); ExaSes_ListOneOrMoreSessionsResultTch (Exams,Session);
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
@ -821,7 +822,7 @@ void ExaSes_ToggleVisResultsSesUsr (void)
/***** Check if visibility of session results can be changed *****/ /***** Check if visibility of session results can be changed *****/
if (!ExaSes_CheckIfVisibilityOfResultsCanBeChanged (&Session)) if (!ExaSes_CheckIfVisibilityOfResultsCanBeChanged (&Session))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Toggle visibility of exam session results *****/ /***** Toggle visibility of exam session results *****/
Session.ShowUsrResults = !Session.ShowUsrResults; Session.ShowUsrResults = !Session.ShowUsrResults;
@ -870,11 +871,11 @@ static void ExaSes_GetSessionDataFromRow (MYSQL_RES *mysql_res,
/***** Get session data *****/ /***** Get session data *****/
/* Code of the session (row[0]) */ /* Code of the session (row[0]) */
if ((Session->SesCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Session->SesCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongExamSessionExit (); Err_WrongExamSessionExit ();
/* Code of the exam (row[1]) */ /* Code of the exam (row[1]) */
if ((Session->ExaCod = Str_ConvertStrCodToLongCod (row[1])) <= 0) if ((Session->ExaCod = Str_ConvertStrCodToLongCod (row[1])) <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
/* Get whether the session is hidden (row[2]) */ /* Get whether the session is hidden (row[2]) */
Session->Hidden = (row[2][0] == 'Y'); Session->Hidden = (row[2][0] == 'Y');
@ -956,7 +957,7 @@ void ExaSes_RemoveSession (void)
/***** Check if I can remove this exam session *****/ /***** Check if I can remove this exam session *****/
if (!ExaSes_CheckIfICanEditThisSession (&Session)) if (!ExaSes_CheckIfICanEditThisSession (&Session))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Remove the exam session from all database tables *****/ /***** Remove the exam session from all database tables *****/
ExaSes_RemoveSessionFromAllTables (Session.SesCod); ExaSes_RemoveSessionFromAllTables (Session.SesCod);
@ -1157,7 +1158,7 @@ void ExaSes_HideSession (void)
/***** Check if I can remove this exam session *****/ /***** Check if I can remove this exam session *****/
if (!ExaSes_CheckIfICanEditThisSession (&Session)) if (!ExaSes_CheckIfICanEditThisSession (&Session))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Hide session *****/ /***** Hide session *****/
DB_QueryUPDATE ("can not hide exam sessions", DB_QueryUPDATE ("can not hide exam sessions",
@ -1197,7 +1198,7 @@ void ExaSes_UnhideSession (void)
/***** Check if I can remove this exam session *****/ /***** Check if I can remove this exam session *****/
if (!ExaSes_CheckIfICanEditThisSession (&Session)) if (!ExaSes_CheckIfICanEditThisSession (&Session))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Unhide session *****/ /***** Unhide session *****/
DB_QueryUPDATE ("can not unhide exam session", DB_QueryUPDATE ("can not unhide exam session",
@ -1250,22 +1251,22 @@ void ExaSes_GetAndCheckParameters (struct Exa_Exams *Exams,
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (Exams); Exa_GetParams (Exams);
if (Exams->ExaCod <= 0) if (Exams->ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam->ExaCod = Exams->ExaCod; Exam->ExaCod = Exams->ExaCod;
Grp_GetParamWhichGroups (); Grp_GetParamWhichGroups ();
if ((Session->SesCod = ExaSes_GetParamSesCod ()) <= 0) if ((Session->SesCod = ExaSes_GetParamSesCod ()) <= 0)
Lay_WrongExamSessionExit (); Err_WrongExamSessionExit ();
/***** Get exam data from database *****/ /***** Get exam data from database *****/
Exa_GetDataOfExamByCod (Exam); Exa_GetDataOfExamByCod (Exam);
if (Exam->CrsCod != Gbl.Hierarchy.Crs.CrsCod) if (Exam->CrsCod != Gbl.Hierarchy.Crs.CrsCod)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exams->ExaCod = Exam->ExaCod; Exams->ExaCod = Exam->ExaCod;
/***** Get set data from database *****/ /***** Get set data from database *****/
ExaSes_GetDataOfSessionByCod (Session); ExaSes_GetDataOfSessionByCod (Session);
if (Session->ExaCod != Exam->ExaCod) if (Session->ExaCod != Exam->ExaCod)
Lay_WrongSetExit (); Err_WrongSetExit ();
Exams->SesCod = Session->SesCod; Exams->SesCod = Session->SesCod;
} }
@ -1445,7 +1446,7 @@ void ExaSes_RequestCreatOrEditSession (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
Grp_GetParamWhichGroups (); Grp_GetParamWhichGroups ();
Session.SesCod = ExaSes_GetParamSesCod (); Session.SesCod = ExaSes_GetParamSesCod ();
@ -1454,7 +1455,7 @@ void ExaSes_RequestCreatOrEditSession (void)
/***** Get exam data from database *****/ /***** Get exam data from database *****/
Exa_GetDataOfExamByCod (&Exam); Exa_GetDataOfExamByCod (&Exam);
if (Exam.CrsCod != Gbl.Hierarchy.Crs.CrsCod) if (Exam.CrsCod != Gbl.Hierarchy.Crs.CrsCod)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exams.ExaCod = Exam.ExaCod; Exams.ExaCod = Exam.ExaCod;
/***** Get session data *****/ /***** Get session data *****/
@ -1466,7 +1467,7 @@ void ExaSes_RequestCreatOrEditSession (void)
/* Get session data from database */ /* Get session data from database */
ExaSes_GetDataOfSessionByCod (&Session); ExaSes_GetDataOfSessionByCod (&Session);
if (Exam.ExaCod != Session.ExaCod) if (Exam.ExaCod != Session.ExaCod)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exams.SesCod = Session.SesCod; Exams.SesCod = Session.SesCod;
} }
@ -1496,7 +1497,7 @@ void ExaSes_ReceiveFormSession (void)
/***** Get main parameters *****/ /***** Get main parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
Grp_GetParamWhichGroups (); Grp_GetParamWhichGroups ();
Session.SesCod = ExaSes_GetParamSesCod (); Session.SesCod = ExaSes_GetParamSesCod ();
@ -1505,7 +1506,7 @@ void ExaSes_ReceiveFormSession (void)
/***** Get exam data from database *****/ /***** Get exam data from database *****/
Exa_GetDataOfExamByCod (&Exam); Exa_GetDataOfExamByCod (&Exam);
if (Exam.CrsCod != Gbl.Hierarchy.Crs.CrsCod) if (Exam.CrsCod != Gbl.Hierarchy.Crs.CrsCod)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exams.ExaCod = Exam.ExaCod; Exams.ExaCod = Exam.ExaCod;
/***** Get session data from database *****/ /***** Get session data from database *****/
@ -1520,7 +1521,7 @@ void ExaSes_ReceiveFormSession (void)
/* Get session data from database */ /* Get session data from database */
ExaSes_GetDataOfSessionByCod (&Session); ExaSes_GetDataOfSessionByCod (&Session);
if (Session.ExaCod != Exam.ExaCod) if (Session.ExaCod != Exam.ExaCod)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exams.SesCod = Session.SesCod; Exams.SesCod = Session.SesCod;
} }

View File

@ -35,6 +35,7 @@
#include <string.h> // For string functions #include <string.h> // For string functions
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_exam.h" #include "swad_exam.h"
#include "swad_exam_result.h" #include "swad_exam_result.h"
#include "swad_exam_session.h" #include "swad_exam_session.h"
@ -367,7 +368,7 @@ void ExaSet_ReceiveFormSet (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Set.ExaCod = Exam.ExaCod = Exams.ExaCod; Set.ExaCod = Exam.ExaCod = Exams.ExaCod;
Exams.SetCod = Set.SetCod = ExaSet_GetParamSetCod (); Exams.SetCod = Set.SetCod = ExaSet_GetParamSetCod ();
ItsANewSet = (Set.SetCod <= 0); ItsANewSet = (Set.SetCod <= 0);
@ -378,7 +379,7 @@ void ExaSet_ReceiveFormSet (void)
/***** Check if exam is editable *****/ /***** Check if exam is editable *****/
if (!Exa_CheckIfEditable (&Exam)) if (!Exa_CheckIfEditable (&Exam))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** If I can edit exams ==> receive set from form *****/ /***** If I can edit exams ==> receive set from form *****/
ExaSet_ReceiveSetFieldsFromForm (&Set); ExaSet_ReceiveSetFieldsFromForm (&Set);
@ -454,7 +455,7 @@ void ExaSet_ChangeSetTitle (void)
/***** Check if I can edit exams *****/ /***** Check if I can edit exams *****/
if (!Exa_CheckIfICanEditExams ()) if (!Exa_CheckIfICanEditExams ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Reset exams context *****/ /***** Reset exams context *****/
Exa_ResetExams (&Exams); Exa_ResetExams (&Exams);
@ -466,7 +467,7 @@ void ExaSet_ChangeSetTitle (void)
/***** Check if exam is editable *****/ /***** Check if exam is editable *****/
if (!Exa_CheckIfEditable (&Exam)) if (!Exa_CheckIfEditable (&Exam))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Receive new title from form *****/ /***** Receive new title from form *****/
Par_GetParToText ("Title",NewTitle,ExaSet_MAX_BYTES_TITLE); Par_GetParToText ("Title",NewTitle,ExaSet_MAX_BYTES_TITLE);
@ -498,7 +499,7 @@ void ExaSet_ChangeNumQstsToExam (void)
/***** Check if I can edit exams *****/ /***** Check if I can edit exams *****/
if (!Exa_CheckIfICanEditExams ()) if (!Exa_CheckIfICanEditExams ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Reset exams context *****/ /***** Reset exams context *****/
Exa_ResetExams (&Exams); Exa_ResetExams (&Exams);
@ -510,7 +511,7 @@ void ExaSet_ChangeNumQstsToExam (void)
/***** Check if exam is editable *****/ /***** Check if exam is editable *****/
if (!Exa_CheckIfEditable (&Exam)) if (!Exa_CheckIfEditable (&Exam))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get number of questions in set to appear in exam print *****/ /***** Get number of questions in set to appear in exam print *****/
NumQstsToPrint = (unsigned) Par_GetParToUnsignedLong ("NumQstsToPrint", NumQstsToPrint = (unsigned) Par_GetParToUnsignedLong ("NumQstsToPrint",
@ -667,7 +668,7 @@ void ExaSet_RequestCreatOrEditSet (void)
/***** Check if I can edit exams *****/ /***** Check if I can edit exams *****/
if (!Exa_CheckIfICanEditExams ()) if (!Exa_CheckIfICanEditExams ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Reset exams context *****/ /***** Reset exams context *****/
Exa_ResetExams (&Exams); Exa_ResetExams (&Exams);
@ -677,7 +678,7 @@ void ExaSet_RequestCreatOrEditSet (void)
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (&Exams); Exa_GetParams (&Exams);
if (Exams.ExaCod <= 0) if (Exams.ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam.ExaCod = Exams.ExaCod; Exam.ExaCod = Exams.ExaCod;
Exams.SetCod = Set.SetCod = ExaSet_GetParamSetCod (); Exams.SetCod = Set.SetCod = ExaSet_GetParamSetCod ();
ItsANewSet = (Set.SetCod <= 0); ItsANewSet = (Set.SetCod <= 0);
@ -785,7 +786,7 @@ static unsigned ExaSet_GetSetIndFromSetCod (long ExaCod,long SetCod)
" WHERE SetCod=%u" " WHERE SetCod=%u"
" AND ExaCod=%ld", // Extra check " AND ExaCod=%ld", // Extra check
SetCod,ExaCod)) SetCod,ExaCod))
Lay_WrongSetExit (); Err_WrongSetExit ();
/***** Get set code (row[0]) *****/ /***** Get set code (row[0]) *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -814,7 +815,7 @@ static long ExaSet_GetSetCodFromSetInd (long ExaCod,unsigned SetInd)
ExaCod, ExaCod,
SetInd); SetInd);
if (SetCod <= 0) if (SetCod <= 0)
Lay_WrongSetExit (); Err_WrongSetExit ();
return SetCod; return SetCod;
} }
@ -1323,7 +1324,7 @@ Tst_AnswerType_t ExaSet_GetQstAnswerTypeFromDB (long QstCod)
" FROM exa_set_questions" " FROM exa_set_questions"
" WHERE QstCod=%ld", " WHERE QstCod=%ld",
QstCod)) QstCod))
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Get type of answer */ /* Get type of answer */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -1414,7 +1415,7 @@ void ExaSet_GetQstDataFromDB (struct Tst_Question *Question)
break; break;
case Tst_ANS_FLOAT: case Tst_ANS_FLOAT:
if (Question->Answer.NumOptions != 2) if (Question->Answer.NumOptions != 2)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
Question->Answer.FloatingPoint[NumOpt] = Str_GetDoubleFromStr (row[1]); Question->Answer.FloatingPoint[NumOpt] = Str_GetDoubleFromStr (row[1]);
break; break;
case Tst_ANS_TRUE_FALSE: case Tst_ANS_TRUE_FALSE:
@ -1426,7 +1427,7 @@ void ExaSet_GetQstDataFromDB (struct Tst_Question *Question)
case Tst_ANS_TEXT: case Tst_ANS_TEXT:
/* Check number of options */ /* Check number of options */
if (Question->Answer.NumOptions > Tst_MAX_OPTIONS_PER_QUESTION) if (Question->Answer.NumOptions > Tst_MAX_OPTIONS_PER_QUESTION)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/* Allocate space for text and feedback */ /* Allocate space for text and feedback */
if (!Tst_AllocateTextChoiceAnswer (Question,NumOpt)) if (!Tst_AllocateTextChoiceAnswer (Question,NumOpt))
@ -1464,7 +1465,7 @@ void ExaSet_GetQstDataFromDB (struct Tst_Question *Question)
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
if (!QuestionExists) if (!QuestionExists)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1596,7 +1597,7 @@ void ExaSet_AddQstsToSet (void)
/* Get next code */ /* Get next code */
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (sscanf (LongStr,"%ld",&QstCod) != 1) if (sscanf (LongStr,"%ld",&QstCod) != 1)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
ExaSet_CopyQstFromBankToExamSet (&Set,QstCod); ExaSet_CopyQstFromBankToExamSet (&Set,QstCod);
} }
@ -1621,7 +1622,7 @@ static void ExaSet_AllocateListSelectedQuestions (struct Exa_Exams *Exams)
if (!Exams->ListQuestions) if (!Exams->ListQuestions)
{ {
if ((Exams->ListQuestions = malloc (ExaSet_MAX_BYTES_LIST_SELECTED_QUESTIONS + 1)) == NULL) if ((Exams->ListQuestions = malloc (ExaSet_MAX_BYTES_LIST_SELECTED_QUESTIONS + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Exams->ListQuestions[0] = '\0'; Exams->ListQuestions[0] = '\0';
} }
} }
@ -1756,7 +1757,7 @@ void ExaSet_RequestRemoveSet (void)
/***** Check if exam is editable *****/ /***** Check if exam is editable *****/
if (!Exa_CheckIfEditable (&Exam)) if (!Exa_CheckIfEditable (&Exam))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show question and button to remove question *****/ /***** Show question and button to remove question *****/
Ale_ShowAlertAndButton (ActRemExaSet,NULL,NULL, Ale_ShowAlertAndButton (ActRemExaSet,NULL,NULL,
@ -1791,7 +1792,7 @@ void ExaSet_RemoveSet (void)
/***** Check if exam is editable *****/ /***** Check if exam is editable *****/
if (!Exa_CheckIfEditable (&Exam)) if (!Exa_CheckIfEditable (&Exam))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Remove the set from all the tables *****/ /***** Remove the set from all the tables *****/
/* Remove questions associated to set */ /* Remove questions associated to set */
@ -1813,7 +1814,7 @@ void ExaSet_RemoveSet (void)
Set.SetCod, Set.SetCod,
Set.ExaCod); Set.ExaCod);
if (!mysql_affected_rows (&Gbl.mysql)) if (!mysql_affected_rows (&Gbl.mysql))
Lay_ShowErrorAndExit ("The set to be removed does not exist."); Err_ShowErrorAndExit ("The set to be removed does not exist.");
/* Change index of sets greater than this */ /* Change index of sets greater than this */
DB_QueryUPDATE ("can not update indexes of sets", DB_QueryUPDATE ("can not update indexes of sets",
@ -1855,7 +1856,7 @@ void ExaSet_MoveUpSet (void)
/***** Check if exam is editable *****/ /***** Check if exam is editable *****/
if (!Exa_CheckIfEditable (&Exam)) if (!Exa_CheckIfEditable (&Exam))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get set index *****/ /***** Get set index *****/
SetIndBottom = ExaSet_GetSetIndFromSetCod (Exam.ExaCod,Set.SetCod); SetIndBottom = ExaSet_GetSetIndFromSetCod (Exam.ExaCod,Set.SetCod);
@ -1866,7 +1867,7 @@ void ExaSet_MoveUpSet (void)
/* Indexes of sets to be exchanged */ /* Indexes of sets to be exchanged */
SetIndTop = ExaSet_GetPrevSetIndexInExam (Exam.ExaCod,SetIndBottom); SetIndTop = ExaSet_GetPrevSetIndexInExam (Exam.ExaCod,SetIndBottom);
if (!SetIndTop) if (!SetIndTop)
Lay_ShowErrorAndExit ("Wrong set index."); Err_ShowErrorAndExit ("Wrong set index.");
/* Exchange sets */ /* Exchange sets */
ExaSet_ExchangeSets (Exam.ExaCod,SetIndTop,SetIndBottom); ExaSet_ExchangeSets (Exam.ExaCod,SetIndTop,SetIndBottom);
@ -1903,7 +1904,7 @@ void ExaSet_MoveDownSet (void)
/***** Check if exam is editable *****/ /***** Check if exam is editable *****/
if (!Exa_CheckIfEditable (&Exam)) if (!Exa_CheckIfEditable (&Exam))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get set index *****/ /***** Get set index *****/
SetIndTop = ExaSet_GetSetIndFromSetCod (Exam.ExaCod,Set.SetCod); SetIndTop = ExaSet_GetSetIndFromSetCod (Exam.ExaCod,Set.SetCod);
@ -1917,7 +1918,7 @@ void ExaSet_MoveDownSet (void)
/* Indexes of sets to be exchanged */ /* Indexes of sets to be exchanged */
SetIndBottom = ExaSet_GetNextSetIndexInExam (Exam.ExaCod,SetIndTop); SetIndBottom = ExaSet_GetNextSetIndexInExam (Exam.ExaCod,SetIndTop);
if (!SetIndBottom) if (!SetIndBottom)
Lay_ShowErrorAndExit ("Wrong set index."); Err_ShowErrorAndExit ("Wrong set index.");
/* Exchange sets */ /* Exchange sets */
ExaSet_ExchangeSets (Exam.ExaCod,SetIndTop,SetIndBottom); ExaSet_ExchangeSets (Exam.ExaCod,SetIndTop,SetIndBottom);
@ -2008,7 +2009,7 @@ void ExaSet_RemoveQstFromSet (void)
QstCod, QstCod,
Set.SetCod); Set.SetCod);
if (!mysql_affected_rows (&Gbl.mysql)) if (!mysql_affected_rows (&Gbl.mysql))
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/***** Write message *****/ /***** Write message *****/
Ale_ShowAlert (Ale_SUCCESS,Txt_Question_removed); Ale_ShowAlert (Ale_SUCCESS,Txt_Question_removed);
@ -2141,22 +2142,22 @@ static void ExaSet_GetAndCheckParameters (struct Exa_Exams *Exams,
/***** Get parameters *****/ /***** Get parameters *****/
Exa_GetParams (Exams); Exa_GetParams (Exams);
if (Exams->ExaCod <= 0) if (Exams->ExaCod <= 0)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exam->ExaCod = Exams->ExaCod; Exam->ExaCod = Exams->ExaCod;
Grp_GetParamWhichGroups (); Grp_GetParamWhichGroups ();
if ((Set->SetCod = ExaSet_GetParamSetCod ()) <= 0) if ((Set->SetCod = ExaSet_GetParamSetCod ()) <= 0)
Lay_WrongSetExit (); Err_WrongSetExit ();
/***** Get exam data from database *****/ /***** Get exam data from database *****/
Exa_GetDataOfExamByCod (Exam); Exa_GetDataOfExamByCod (Exam);
if (Exam->CrsCod != Gbl.Hierarchy.Crs.CrsCod) if (Exam->CrsCod != Gbl.Hierarchy.Crs.CrsCod)
Lay_WrongExamExit (); Err_WrongExamExit ();
Exams->ExaCod = Exam->ExaCod; Exams->ExaCod = Exam->ExaCod;
/***** Get set data from database *****/ /***** Get set data from database *****/
ExaSet_GetDataOfSetByCod (Set); ExaSet_GetDataOfSetByCod (Set);
if (Set->ExaCod != Exam->ExaCod) if (Set->ExaCod != Exam->ExaCod)
Lay_WrongSetExit (); Err_WrongSetExit ();
Exams->SetCod = Set->SetCod; Exams->SetCod = Set->SetCod;
} }

View File

@ -34,6 +34,7 @@
#include "swad_agenda.h" #include "swad_agenda.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_figure_cache.h" #include "swad_figure_cache.h"
#include "swad_file_browser.h" #include "swad_file_browser.h"
@ -674,7 +675,7 @@ static void Fig_GetAndShowHierarchyWithInss (void)
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -717,7 +718,7 @@ static void Fig_GetAndShowHierarchyWithCtrs (void)
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -766,7 +767,7 @@ static void Fig_GetAndShowHierarchyWithDegs (void)
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -823,7 +824,7 @@ static void Fig_GetAndShowHierarchyWithCrss (void)
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -904,7 +905,7 @@ static void Fig_GetAndShowHierarchyWithUsrs (Rol_Role_t Role)
NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod); NumCrssWithUsrs = Crs_GetCachedNumCrssWithUsrs (Role,SubQuery,Hie_Lvl_CRS,Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -962,7 +963,7 @@ static void Fig_GetAndShowHierarchyTotal (void)
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -1115,7 +1116,7 @@ static void Fig_GetAndShowInssOrderedByNumCtrs (void)
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -1191,7 +1192,7 @@ static void Fig_GetAndShowInssOrderedByNumDegs (void)
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -1273,7 +1274,7 @@ static void Fig_GetAndShowInssOrderedByNumCrss (void)
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -1361,7 +1362,7 @@ static void Fig_GetAndShowInssOrderedByNumUsrsInCrss (void)
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -1432,7 +1433,7 @@ static void Fig_GetAndShowInssOrderedByNumUsrsWhoClaimToBelongToThem (void)
Gbl.Hierarchy.Ins.InsCod); Gbl.Hierarchy.Ins.InsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NumInss = 0; // Not reached. Initialized to avoid warning. NumInss = 0; // Not reached. Initialized to avoid warning.
break; break;
} }
@ -1577,11 +1578,11 @@ static unsigned Fig_GetInsAndStat (struct Ins_Instit *Ins,MYSQL_RES *mysql_res)
/***** Get data of this institution (row[0]) *****/ /***** Get data of this institution (row[0]) *****/
Ins->InsCod = Str_ConvertStrCodToLongCod (row[0]); Ins->InsCod = Str_ConvertStrCodToLongCod (row[0]);
if (!Ins_GetDataOfInstitutionByCod (Ins)) if (!Ins_GetDataOfInstitutionByCod (Ins))
Lay_WrongInstitExit (); Err_WrongInstitExit ();
/***** Get statistic (row[1]) *****/ /***** Get statistic (row[1]) *****/
if (sscanf (row[1],"%u",&NumberThisRow) != 1) if (sscanf (row[1],"%u",&NumberThisRow) != 1)
Lay_ShowErrorAndExit ("Error in statistic"); Err_ShowErrorAndExit ("Error in statistic");
return NumberThisRow; return NumberThisRow;
} }
@ -1800,7 +1801,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
(unsigned) FileBrowser); (unsigned) FileBrowser);
break; break;
default: default:
Lay_WrongFileBrowserExit (); Err_WrongFileBrowserExit ();
break; break;
} }
break; break;
@ -1978,7 +1979,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
(unsigned) FileBrowser); (unsigned) FileBrowser);
break; break;
default: default:
Lay_WrongFileBrowserExit (); Err_WrongFileBrowserExit ();
break; break;
} }
break; break;
@ -2144,7 +2145,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
(unsigned) FileBrowser); (unsigned) FileBrowser);
break; break;
default: default:
Lay_WrongFileBrowserExit (); Err_WrongFileBrowserExit ();
break; break;
} }
break; break;
@ -2298,7 +2299,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
(unsigned) FileBrowser); (unsigned) FileBrowser);
break; break;
default: default:
Lay_WrongFileBrowserExit (); Err_WrongFileBrowserExit ();
break; break;
} }
break; break;
@ -2440,7 +2441,7 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
(unsigned) FileBrowser); (unsigned) FileBrowser);
break; break;
default: default:
Lay_WrongFileBrowserExit (); Err_WrongFileBrowserExit ();
break; break;
} }
break; break;
@ -2570,12 +2571,12 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
(unsigned) FileBrowser); (unsigned) FileBrowser);
break; break;
default: default:
Lay_WrongFileBrowserExit (); Err_WrongFileBrowserExit ();
break; break;
} }
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -2591,37 +2592,37 @@ static void Fig_GetSizeOfFileZoneFromDB (Hie_Lvl_Level_t Scope,
/* Get number of courses (row[0]) */ /* Get number of courses (row[0]) */
if (row[0]) if (row[0])
if (sscanf (row[0],"%d",&(SizeOfFileZones->NumCrss)) != 1) if (sscanf (row[0],"%d",&(SizeOfFileZones->NumCrss)) != 1)
Lay_ShowErrorAndExit ("Error when getting number of courses."); Err_ShowErrorAndExit ("Error when getting number of courses.");
/* Get number of groups (row[1]) */ /* Get number of groups (row[1]) */
if (row[1]) if (row[1])
if (sscanf (row[1],"%d",&(SizeOfFileZones->NumGrps)) != 1) if (sscanf (row[1],"%d",&(SizeOfFileZones->NumGrps)) != 1)
Lay_ShowErrorAndExit ("Error when getting number of groups."); Err_ShowErrorAndExit ("Error when getting number of groups.");
/* Get number of users (row[2]) */ /* Get number of users (row[2]) */
if (row[2]) if (row[2])
if (sscanf (row[2],"%d",&(SizeOfFileZones->NumUsrs)) != 1) if (sscanf (row[2],"%d",&(SizeOfFileZones->NumUsrs)) != 1)
Lay_ShowErrorAndExit ("Error when getting number of users."); Err_ShowErrorAndExit ("Error when getting number of users.");
/* Get maximum number of levels (row[3]) */ /* Get maximum number of levels (row[3]) */
if (row[3]) if (row[3])
if (sscanf (row[3],"%u",&(SizeOfFileZones->MaxLevels)) != 1) if (sscanf (row[3],"%u",&(SizeOfFileZones->MaxLevels)) != 1)
Lay_ShowErrorAndExit ("Error when getting maximum number of levels."); Err_ShowErrorAndExit ("Error when getting maximum number of levels.");
/* Get number of folders (row[4]) */ /* Get number of folders (row[4]) */
if (row[4]) if (row[4])
if (sscanf (row[4],"%lu",&(SizeOfFileZones->NumFolders)) != 1) if (sscanf (row[4],"%lu",&(SizeOfFileZones->NumFolders)) != 1)
Lay_ShowErrorAndExit ("Error when getting number of folders."); Err_ShowErrorAndExit ("Error when getting number of folders.");
/* Get number of files (row[5]) */ /* Get number of files (row[5]) */
if (row[5]) if (row[5])
if (sscanf (row[5],"%lu",&(SizeOfFileZones->NumFiles)) != 1) if (sscanf (row[5],"%lu",&(SizeOfFileZones->NumFiles)) != 1)
Lay_ShowErrorAndExit ("Error when getting number of files."); Err_ShowErrorAndExit ("Error when getting number of files.");
/* Get total size (row[6]) */ /* Get total size (row[6]) */
if (row[6]) if (row[6])
if (sscanf (row[6],"%llu",&(SizeOfFileZones->Size)) != 1) if (sscanf (row[6],"%llu",&(SizeOfFileZones->Size)) != 1)
Lay_ShowErrorAndExit ("Error when getting toal size."); Err_ShowErrorAndExit ("Error when getting toal size.");
/* Free structure that stores the query result */ /* Free structure that stores the query result */
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -3079,7 +3080,7 @@ static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,
(unsigned) License); (unsigned) License);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -3099,7 +3100,7 @@ static void Fig_GetNumberOfOERsFromDB (Hie_Lvl_Level_t Scope,
/* Get number of files (row[1]) */ /* Get number of files (row[1]) */
if (sscanf (row[1],"%lu",&NumFiles[Public]) != 1) if (sscanf (row[1],"%lu",&NumFiles[Public]) != 1)
Lay_ShowErrorAndExit ("Error when getting number of files."); Err_ShowErrorAndExit ("Error when getting number of files.");
} }
/* Free structure that stores the query result */ /* Free structure that stores the query result */
@ -3681,7 +3682,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
(unsigned) NoteType); (unsigned) NoteType);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NumRows = 0; // Initialized to avoid warning NumRows = 0; // Initialized to avoid warning
break; break;
} }
@ -3822,7 +3823,7 @@ static void Fig_GetAndShowTimelineActivityStats (void)
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NumRows = 0; // Initialized to avoid warning NumRows = 0; // Initialized to avoid warning
break; break;
} }
@ -4016,7 +4017,7 @@ static void Fig_GetAndShowFollowStats (void)
FieldDB[Fol]); FieldDB[Fol]);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NumUsrs = 0; // Not reached. Initialized to av oid warning NumUsrs = 0; // Not reached. Initialized to av oid warning
break; break;
} }
@ -4155,7 +4156,7 @@ static void Fig_GetAndShowFollowStats (void)
FieldDB[1 - Fol]); FieldDB[1 - Fol]);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
Average = 0.0; // Not reached Average = 0.0; // Not reached
break; break;
} }
@ -4283,7 +4284,7 @@ static void Fig_GetAndShowForumStats (void)
Fig_ShowStatOfAForumType (For_FORUM_COURSE_TCHS,-1L,-1L,-1L,-1L,Gbl.Hierarchy.Crs.CrsCod,&FiguresForum); Fig_ShowStatOfAForumType (For_FORUM_COURSE_TCHS,-1L,-1L,-1L,-1L,Gbl.Hierarchy.Crs.CrsCod,&FiguresForum);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -4418,7 +4419,7 @@ static void Fig_WriteForumTitleAndStats (For_ForumType_t ForumType,
HTM_TD_Begin ("class=\"BT\""); HTM_TD_Begin ("class=\"BT\"");
if (asprintf (&ForumName,"%s%s", if (asprintf (&ForumName,"%s%s",
ForumName1,ForumName2) < 0) ForumName1,ForumName2) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Ico_PutIcon (Icon,ForumName,"ICO16x16"); Ico_PutIcon (Icon,ForumName,"ICO16x16");
free (ForumName); free (ForumName);
HTM_TD_End (); HTM_TD_End ();
@ -4581,7 +4582,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
/* Get the number of users who want to be notified by email on this event, from database */ /* Get the number of users who want to be notified by email on this event, from database */
if (asprintf (&SubQuery,"((usr_data.EmailNtfEvents & %u)<>0)", if (asprintf (&SubQuery,"((usr_data.EmailNtfEvents & %u)<>0)",
(1 << NotifyEvent)) < 0) (1 << NotifyEvent)) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NumUsrs[NotifyEvent] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); NumUsrs[NotifyEvent] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery);
free (SubQuery); free (SubQuery);
@ -4665,7 +4666,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
(unsigned) NotifyEvent); (unsigned) NotifyEvent);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -4675,7 +4676,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
if (row[0]) if (row[0])
{ {
if (sscanf (row[0],"%u",&NumEvents[NotifyEvent]) != 1) if (sscanf (row[0],"%u",&NumEvents[NotifyEvent]) != 1)
Lay_ShowErrorAndExit ("Error when getting the number of notifications by email."); Err_ShowErrorAndExit ("Error when getting the number of notifications by email.");
} }
else else
NumEvents[NotifyEvent] = 0; NumEvents[NotifyEvent] = 0;
@ -4684,7 +4685,7 @@ static void Fig_GetAndShowNumUsrsPerNotifyEvent (void)
if (row[1]) if (row[1])
{ {
if (sscanf (row[1],"%u",&NumMails[NotifyEvent]) != 1) if (sscanf (row[1],"%u",&NumMails[NotifyEvent]) != 1)
Lay_ShowErrorAndExit ("Error when getting the number of emails to notify events3."); Err_ShowErrorAndExit ("Error when getting the number of emails to notify events3.");
} }
else else
NumMails[NotifyEvent] = 0; NumMails[NotifyEvent] = 0;
@ -5146,7 +5147,7 @@ static void Fig_GetAndShowNumUsrsPerPrivacyForAnObject (const char *TxtObject,
/* Get the number of users who have chosen this privacy option from database */ /* Get the number of users who have chosen this privacy option from database */
if (asprintf (&SubQuery,"usr_data.%s='%s'", if (asprintf (&SubQuery,"usr_data.%s='%s'",
FieldName,Pri_VisibilityDB[Visibility]) < 0) FieldName,Pri_VisibilityDB[Visibility]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NumUsrs[Visibility] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); NumUsrs[Visibility] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery);
free (SubQuery); free (SubQuery);
@ -5234,7 +5235,7 @@ static void Fig_GetAndShowNumUsrsPerCookies (void)
/* Get number of users who have chosen this menu from database */ /* Get number of users who have chosen this menu from database */
if (asprintf (&SubQuery,"usr_data.ThirdPartyCookies='%c'", if (asprintf (&SubQuery,"usr_data.ThirdPartyCookies='%c'",
AcceptedInDB[i]) < 0) AcceptedInDB[i]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NumUsrs[i] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); NumUsrs[i] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery);
free (SubQuery); free (SubQuery);
@ -5310,7 +5311,7 @@ static void Fig_GetAndShowNumUsrsPerLanguage (void)
/* Get the number of users who have chosen this language from database */ /* Get the number of users who have chosen this language from database */
if (asprintf (&SubQuery,"usr_data.Language='%s'", if (asprintf (&SubQuery,"usr_data.Language='%s'",
Lan_STR_LANG_ID[Lan]) < 0) Lan_STR_LANG_ID[Lan]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NumUsrs[Lan] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); NumUsrs[Lan] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery);
free (SubQuery); free (SubQuery);
@ -5389,7 +5390,7 @@ static void Fig_GetAndShowNumUsrsPerFirstDayOfWeek (void)
/* Get number of users who have chosen this first day of week from database */ /* Get number of users who have chosen this first day of week from database */
if (asprintf (&SubQuery,"usr_data.FirstDayOfWeek=%u", if (asprintf (&SubQuery,"usr_data.FirstDayOfWeek=%u",
(unsigned) FirstDayOfWeek) < 0) (unsigned) FirstDayOfWeek) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NumUsrs[FirstDayOfWeek] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); NumUsrs[FirstDayOfWeek] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery);
free (SubQuery); free (SubQuery);
@ -5408,7 +5409,7 @@ static void Fig_GetAndShowNumUsrsPerFirstDayOfWeek (void)
HTM_TD_Begin ("class=\"CM\""); HTM_TD_Begin ("class=\"CM\"");
if (asprintf (&Icon,"first-day-of-week-%u.png", if (asprintf (&Icon,"first-day-of-week-%u.png",
FirstDayOfWeek) < 0) FirstDayOfWeek) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Ico_PutIcon (Icon, Ico_PutIcon (Icon,
Str_BuildStringStr (Txt_First_day_of_the_week_X, Str_BuildStringStr (Txt_First_day_of_the_week_X,
Txt_DAYS_SMALL[FirstDayOfWeek]), Txt_DAYS_SMALL[FirstDayOfWeek]),
@ -5472,7 +5473,7 @@ static void Fig_GetAndShowNumUsrsPerDateFormat (void)
/* Get number of users who have chosen this date format from database */ /* Get number of users who have chosen this date format from database */
if (asprintf (&SubQuery,"usr_data.DateFormat=%u", if (asprintf (&SubQuery,"usr_data.DateFormat=%u",
(unsigned) Format) < 0) (unsigned) Format) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NumUsrs[Format] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); NumUsrs[Format] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery);
free (SubQuery); free (SubQuery);
@ -5550,7 +5551,7 @@ static void Fig_GetAndShowNumUsrsPerIconSet (void)
/* Get the number of users who have chosen this icon set from database */ /* Get the number of users who have chosen this icon set from database */
if (asprintf (&SubQuery,"usr_data.IconSet='%s'", if (asprintf (&SubQuery,"usr_data.IconSet='%s'",
Ico_IconSetId[IconSet]) < 0) Ico_IconSetId[IconSet]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NumUsrs[IconSet] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); NumUsrs[IconSet] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery);
free (SubQuery); free (SubQuery);
@ -5568,7 +5569,7 @@ static void Fig_GetAndShowNumUsrsPerIconSet (void)
HTM_TD_Begin ("class=\"LM\""); HTM_TD_Begin ("class=\"LM\"");
if (asprintf (&URL,"%s/%s", if (asprintf (&URL,"%s/%s",
Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[IconSet]) < 0) Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[IconSet]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (URL,"cog.svg",Ico_IconSetNames[IconSet], HTM_IMG (URL,"cog.svg",Ico_IconSetNames[IconSet],
"class=\"ICO40x40\""); "class=\"ICO40x40\"");
free (URL); free (URL);
@ -5631,7 +5632,7 @@ static void Fig_GetAndShowNumUsrsPerMenu (void)
/* Get number of users who have chosen this menu from database */ /* Get number of users who have chosen this menu from database */
if (asprintf (&SubQuery,"usr_data.Menu=%u", if (asprintf (&SubQuery,"usr_data.Menu=%u",
(unsigned) Menu) < 0) (unsigned) Menu) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NumUsrs[Menu] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); NumUsrs[Menu] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery);
free (SubQuery); free (SubQuery);
@ -5708,7 +5709,7 @@ static void Fig_GetAndShowNumUsrsPerTheme (void)
/* Get number of users who have chosen this theme from database */ /* Get number of users who have chosen this theme from database */
if (asprintf (&SubQuery,"usr_data.Theme='%s'", if (asprintf (&SubQuery,"usr_data.Theme='%s'",
The_ThemeId[Theme]) < 0) The_ThemeId[Theme]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NumUsrs[Theme] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); NumUsrs[Theme] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery);
free (SubQuery); free (SubQuery);
@ -5726,7 +5727,7 @@ static void Fig_GetAndShowNumUsrsPerTheme (void)
HTM_TD_Begin ("class=\"CM\""); HTM_TD_Begin ("class=\"CM\"");
if (asprintf (&URL,"%s/%s", if (asprintf (&URL,"%s/%s",
Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Theme]) < 0) Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Theme]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (URL,"theme_32x20.gif",The_ThemeNames[Theme], HTM_IMG (URL,"theme_32x20.gif",The_ThemeNames[Theme],
"style=\"width:40px;height:25px;\""); "style=\"width:40px;height:25px;\"");
free (URL); free (URL);
@ -5789,7 +5790,7 @@ static void Fig_GetAndShowNumUsrsPerSideColumns (void)
/* Get the number of users who have chosen this layout of columns from database */ /* Get the number of users who have chosen this layout of columns from database */
if (asprintf (&SubQuery,"usr_data.SideCols=%u", if (asprintf (&SubQuery,"usr_data.SideCols=%u",
SideCols) < 0) SideCols) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NumUsrs[SideCols] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery); NumUsrs[SideCols] = Fig_GetNumUsrsWhoChoseAnOption (SubQuery);
free (SubQuery); free (SubQuery);
@ -5807,7 +5808,7 @@ static void Fig_GetAndShowNumUsrsPerSideColumns (void)
HTM_TD_Begin ("class=\"CM\""); HTM_TD_Begin ("class=\"CM\"");
if (asprintf (&Icon,"layout%u%u_32x20.gif", if (asprintf (&Icon,"layout%u%u_32x20.gif",
SideCols >> 1,SideCols & 1) < 0) SideCols >> 1,SideCols & 1) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,Txt_LAYOUT_SIDE_COLUMNS[SideCols], HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,Txt_LAYOUT_SIDE_COLUMNS[SideCols],
"style=\"width:40px;height:25px;\""); "style=\"width:40px;height:25px;\"");
free (Icon); free (Icon);
@ -5925,7 +5926,7 @@ unsigned Fig_GetNumUsrsWhoChoseAnOption (const char *SubQuery)
Gbl.Hierarchy.Crs.CrsCod,SubQuery); Gbl.Hierarchy.Crs.CrsCod,SubQuery);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NumUsrs = 0; // Not reached. Initialized to avoid warning. NumUsrs = 0; // Not reached. Initialized to avoid warning.
break; break;
} }

View File

@ -39,6 +39,7 @@
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_file.h" #include "swad_file.h"
#include "swad_string.h" #include "swad_string.h"
@ -84,7 +85,7 @@ void Fil_CreateFileForHTMLOutput (void)
if ((Gbl.F.Out = fopen (Gbl.HTMLOutput.FileName,"w+t")) == NULL) if ((Gbl.F.Out = fopen (Gbl.HTMLOutput.FileName,"w+t")) == NULL)
{ {
Gbl.F.Out = stdout; Gbl.F.Out = stdout;
Lay_ShowErrorAndExit ("Can not create output file."); Err_ShowErrorAndExit ("Can not create output file.");
} }
} }
@ -118,7 +119,7 @@ bool Fil_ReadStdinIntoTmpFile (void)
if ((Gbl.F.Tmp = tmpfile ()) == NULL) if ((Gbl.F.Tmp = tmpfile ()) == NULL)
{ {
Fil_EndOfReadingStdin (); Fil_EndOfReadingStdin ();
Lay_ShowErrorAndExit ("Can not create temporary file."); Err_ShowErrorAndExit ("Can not create temporary file.");
} }
for (TmpFileSize = 0; for (TmpFileSize = 0;
!feof (stdin) && !FileIsTooBig && !TimeExceeded; !feof (stdin) && !FileIsTooBig && !TimeExceeded;
@ -233,13 +234,13 @@ struct Param *Fil_StartReceptionOfFile (const char *ParamFile,
return Param; return Param;
} }
if (Param->FileName.Length > PATH_MAX) if (Param->FileName.Length > PATH_MAX)
Lay_ShowErrorAndExit ("Error while getting filename."); Err_ShowErrorAndExit ("Error while getting filename.");
/* Copy filename */ /* Copy filename */
fseek (Gbl.F.Tmp,Param->FileName.Start,SEEK_SET); fseek (Gbl.F.Tmp,Param->FileName.Start,SEEK_SET);
if (fread (FileName,sizeof (char),Param->FileName.Length,Gbl.F.Tmp) != if (fread (FileName,sizeof (char),Param->FileName.Length,Gbl.F.Tmp) !=
Param->FileName.Length) Param->FileName.Length)
Lay_ShowErrorAndExit ("Error while getting filename."); Err_ShowErrorAndExit ("Error while getting filename.");
FileName[Param->FileName.Length] = '\0'; FileName[Param->FileName.Length] = '\0';
/***** Get MIME type *****/ /***** Get MIME type *****/
@ -247,13 +248,13 @@ struct Param *Fil_StartReceptionOfFile (const char *ParamFile,
if (Param->ContentType.Start == 0 || if (Param->ContentType.Start == 0 ||
Param->ContentType.Length == 0 || Param->ContentType.Length == 0 ||
Param->ContentType.Length > Brw_MAX_BYTES_MIME_TYPE) Param->ContentType.Length > Brw_MAX_BYTES_MIME_TYPE)
Lay_ShowErrorAndExit ("Error while getting content type."); Err_ShowErrorAndExit ("Error while getting content type.");
/* Copy MIME type */ /* Copy MIME type */
fseek (Gbl.F.Tmp,Param->ContentType.Start,SEEK_SET); fseek (Gbl.F.Tmp,Param->ContentType.Start,SEEK_SET);
if (fread (MIMEType,sizeof (char),Param->ContentType.Length,Gbl.F.Tmp) != if (fread (MIMEType,sizeof (char),Param->ContentType.Length,Gbl.F.Tmp) !=
Param->ContentType.Length) Param->ContentType.Length)
Lay_ShowErrorAndExit ("Error while getting content type."); Err_ShowErrorAndExit ("Error while getting content type.");
MIMEType[Param->ContentType.Length] = '\0'; MIMEType[Param->ContentType.Length] = '\0';
return Param; return Param;
@ -272,12 +273,12 @@ bool Fil_EndReceptionOfFile (char *FileNameDataTmp,struct Param *Param)
/***** Open destination file *****/ /***** Open destination file *****/
if ((FileDataTmp = fopen (FileNameDataTmp,"wb")) == NULL) if ((FileDataTmp = fopen (FileNameDataTmp,"wb")) == NULL)
Lay_ShowErrorAndExit ("Can not open temporary file."); Err_ShowErrorAndExit ("Can not open temporary file.");
/***** Copy file *****/ /***** Copy file *****/
/* Go to start of source */ /* Go to start of source */
if (Param->Value.Start == 0) if (Param->Value.Start == 0)
Lay_ShowErrorAndExit ("Error while copying file."); Err_ShowErrorAndExit ("Error while copying file.");
fseek (Gbl.F.Tmp,Param->Value.Start,SEEK_SET); fseek (Gbl.F.Tmp,Param->Value.Start,SEEK_SET);
/* Copy part of Gbl.F.Tmp to FileDataTmp */ /* Copy part of Gbl.F.Tmp to FileDataTmp */
@ -336,7 +337,7 @@ void Fil_CreateUpdateFile (const char CurrentName[PATH_MAX + 1],
{ {
snprintf (ErrorMsg,sizeof (ErrorMsg), snprintf (ErrorMsg,sizeof (ErrorMsg),
"Can not create file <strong>%s</strong>.",NewName); "Can not create file <strong>%s</strong>.",NewName);
Lay_ShowErrorAndExit (ErrorMsg); Err_ShowErrorAndExit (ErrorMsg);
} }
} }
@ -360,14 +361,14 @@ void Fil_CloseUpdateFile (const char CurrentName[PATH_MAX + 1],
snprintf (ErrorMsg,sizeof (ErrorMsg), snprintf (ErrorMsg,sizeof (ErrorMsg),
"Can not rename the file <strong>%s</strong> as <strong>%s</strong>.", "Can not rename the file <strong>%s</strong> as <strong>%s</strong>.",
CurrentName,OldName); CurrentName,OldName);
Lay_ShowErrorAndExit (ErrorMsg); Err_ShowErrorAndExit (ErrorMsg);
} }
if (rename (NewName,CurrentName)) // mv NewName CurrentName Ej: mv file.new file.html if (rename (NewName,CurrentName)) // mv NewName CurrentName Ej: mv file.new file.html
{ {
snprintf (ErrorMsg,sizeof (ErrorMsg), snprintf (ErrorMsg,sizeof (ErrorMsg),
"Can not rename the file <strong>%s</strong> as <strong>%s</strong>.", "Can not rename the file <strong>%s</strong> as <strong>%s</strong>.",
NewName,CurrentName); NewName,CurrentName);
Lay_ShowErrorAndExit (ErrorMsg); Err_ShowErrorAndExit (ErrorMsg);
} }
} }
@ -397,7 +398,7 @@ void Fil_CreateDirIfNotExists (const char Path[PATH_MAX + 1])
{ {
snprintf (ErrorMsg,sizeof (ErrorMsg), snprintf (ErrorMsg,sizeof (ErrorMsg),
"Can not create folder <strong>%s</strong>.",Path); "Can not create folder <strong>%s</strong>.",Path);
Lay_ShowErrorAndExit (ErrorMsg); Err_ShowErrorAndExit (ErrorMsg);
} }
} }
@ -418,7 +419,7 @@ void Fil_RemoveTree (const char Path[PATH_MAX + 1])
if (Fil_CheckIfPathExists (Path)) if (Fil_CheckIfPathExists (Path))
{ {
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
Lay_ShowErrorAndExit ("Can not get information about a file or folder."); Err_ShowErrorAndExit ("Can not get information about a file or folder.");
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
{ {
if (rmdir (Path)) if (rmdir (Path))
@ -447,7 +448,7 @@ void Fil_RemoveTree (const char Path[PATH_MAX + 1])
free (FileList); free (FileList);
} }
else else
Lay_ShowErrorAndExit ("Error while scanning directory."); Err_ShowErrorAndExit ("Error while scanning directory.");
/***** Remove of new the directory, now empty *****/ /***** Remove of new the directory, now empty *****/
if (rmdir (Path)) if (rmdir (Path))
@ -459,13 +460,13 @@ void Fil_RemoveTree (const char Path[PATH_MAX + 1])
{ {
snprintf (ErrorMsg,sizeof (ErrorMsg), snprintf (ErrorMsg,sizeof (ErrorMsg),
"Can not remove folder %s.",Path); "Can not remove folder %s.",Path);
Lay_ShowErrorAndExit (ErrorMsg); Err_ShowErrorAndExit (ErrorMsg);
} }
} }
} }
else // It's a file else // It's a file
if (unlink (Path)) if (unlink (Path))
Lay_ShowErrorAndExit ("Can not remove file."); Err_ShowErrorAndExit ("Can not remove file.");
} }
} }
@ -516,7 +517,7 @@ void Fil_RemoveOldTmpFiles (const char *Path,time_t TimeToRemove,
rmdir (Path); rmdir (Path);
} }
else else
Lay_ShowErrorAndExit ("Error while scanning directory."); Err_ShowErrorAndExit ("Error while scanning directory.");
} }
else // Not a directory else // Not a directory
if (FileStatus.st_mtime < Gbl.StartExecutionTimeUTC - TimeToRemove) if (FileStatus.st_mtime < Gbl.StartExecutionTimeUTC - TimeToRemove)
@ -535,11 +536,11 @@ void Fil_FastCopyOfFiles (const char *PathSrc,const char *PathTgt)
/***** Open source file *****/ /***** Open source file *****/
if ((FileSrc = fopen (PathSrc,"rb")) == NULL) if ((FileSrc = fopen (PathSrc,"rb")) == NULL)
Lay_ShowErrorAndExit ("Can not open source file."); Err_ShowErrorAndExit ("Can not open source file.");
/***** Open destination file *****/ /***** Open destination file *****/
if ((FileTgt = fopen (PathTgt,"wb")) == NULL) if ((FileTgt = fopen (PathTgt,"wb")) == NULL)
Lay_ShowErrorAndExit ("Can not open target file."); Err_ShowErrorAndExit ("Can not open target file.");
/***** Copy source file into destination file *****/ /***** Copy source file into destination file *****/
Fil_FastCopyOfOpenFiles (FileSrc,FileTgt); Fil_FastCopyOfOpenFiles (FileSrc,FileTgt);

View File

@ -41,6 +41,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_file_browser.h" #include "swad_file_browser.h"
#include "swad_file_extension.h" #include "swad_file_extension.h"
@ -1977,7 +1978,7 @@ void Brw_GetParAndInitFileBrowser (void)
Brw_ADMI_MRK_CRS; Brw_ADMI_MRK_CRS;
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
break; break;
@ -2079,7 +2080,7 @@ void Brw_GetParAndInitFileBrowser (void)
Gbl.FileBrowser.Type = Brw_ADMI_BRF_USR; Gbl.FileBrowser.Type = Brw_ADMI_BRF_USR;
break; break;
default: default:
Lay_ShowErrorAndExit ("The type of file browser can not be determined."); Err_ShowErrorAndExit ("The type of file browser can not be determined.");
break; break;
} }
@ -2278,9 +2279,9 @@ static void Brw_GetDataCurrentGrp (void)
/***** For security, check if group file zones are enabled, /***** For security, check if group file zones are enabled,
and check if I belongs to the selected group *****/ and check if I belongs to the selected group *****/
if (!GrpDat.FileZones) if (!GrpDat.FileZones)
Lay_ShowErrorAndExit ("The group has no file zones."); Err_ShowErrorAndExit ("The group has no file zones.");
else if (!Grp_GetIfIBelongToGrp (Gbl.Crs.Grps.GrpCod)) else if (!Grp_GetIfIBelongToGrp (Gbl.Crs.Grps.GrpCod))
Lay_ShowErrorAndExit ("You don't have access to the group."); Err_ShowErrorAndExit ("You don't have access to the group.");
break; break;
} }
@ -2378,7 +2379,7 @@ static void Brw_GetParamsPathInTreeAndFileName (void)
/* Check if path contains ".." */ /* Check if path contains ".." */
if (strstr (Gbl.FileBrowser.FilFolLnk.Path,"..")) // ".." is not allowed in path if (strstr (Gbl.FileBrowser.FilFolLnk.Path,"..")) // ".." is not allowed in path
Lay_ShowErrorAndExit ("Wrong path."); Err_ShowErrorAndExit ("Wrong path.");
/***** Get the name of the file, folder or link *****/ /***** Get the name of the file, folder or link *****/
Gbl.FileBrowser.FilFolLnk.Type = Brw_IS_UNKNOWN; Gbl.FileBrowser.FilFolLnk.Type = Brw_IS_UNKNOWN;
@ -2397,7 +2398,7 @@ static void Brw_GetParamsPathInTreeAndFileName (void)
Gbl.FileBrowser.FilFolLnk.Name, Gbl.FileBrowser.FilFolLnk.Name,
FileNameToShow); FileNameToShow);
if (strstr (FileNameToShow,"..")) // ".." is not allowed in filename if (strstr (FileNameToShow,"..")) // ".." is not allowed in filename
Lay_ShowErrorAndExit ("Wrong file name."); Err_ShowErrorAndExit ("Wrong file name.");
break; break;
} }
@ -3361,13 +3362,13 @@ static void Brw_GetSelectedGroupData (struct GroupData *GrpDat,bool AbortOnError
if (!GrpDat->FileZones) if (!GrpDat->FileZones)
{ {
if (AbortOnError) if (AbortOnError)
Lay_ShowErrorAndExit ("The file browser is disabled."); Err_ShowErrorAndExit ("The file browser is disabled.");
GrpDat->GrpCod = -1L; GrpDat->GrpCod = -1L;
} }
else if (!Grp_GetIfIBelongToGrp (GrpDat->GrpCod)) else if (!Grp_GetIfIBelongToGrp (GrpDat->GrpCod))
{ {
if (AbortOnError) if (AbortOnError)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
GrpDat->GrpCod = -1L; GrpDat->GrpCod = -1L;
} }
} }
@ -3403,7 +3404,7 @@ static void Brw_ShowDataOwnerAsgWrk (struct UsrData *UsrDat)
break; break;
default: default:
NextAction = ActUnk; NextAction = ActUnk;
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
Frm_BeginForm (NextAction); Frm_BeginForm (NextAction);
@ -4035,7 +4036,7 @@ static void Brw_WriteSubtitleOfFileBrowser (void)
break; break;
default: default:
Subtitle[0] = '\0'; Subtitle[0] = '\0';
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
break; break;
@ -5148,7 +5149,7 @@ void Brw_CreateDirDownloadTmp (void)
snprintf (PathUniqueDirR,sizeof (PathUniqueDirR),"%s/%s", snprintf (PathUniqueDirR,sizeof (PathUniqueDirR),"%s/%s",
PathUniqueDirL,Gbl.FileBrowser.TmpPubDir.R); PathUniqueDirL,Gbl.FileBrowser.TmpPubDir.R);
if (mkdir (PathUniqueDirR,(mode_t) 0xFFF)) if (mkdir (PathUniqueDirR,(mode_t) 0xFFF))
Lay_ShowErrorAndExit ("Can not create a temporary folder for download."); Err_ShowErrorAndExit ("Can not create a temporary folder for download.");
/* 4. Increase number of directory for next call */ /* 4. Increase number of directory for next call */
NumDir++; NumDir++;
@ -5234,10 +5235,10 @@ static void Brw_GetAndUpdateDateLastAccFileBrowser (void)
if (row[0] == NULL) if (row[0] == NULL)
Gbl.Usrs.Me.TimeLastAccToThisFileBrowser = 0; Gbl.Usrs.Me.TimeLastAccToThisFileBrowser = 0;
else if (sscanf (row[0],"%ld",&Gbl.Usrs.Me.TimeLastAccToThisFileBrowser) != 1) else if (sscanf (row[0],"%ld",&Gbl.Usrs.Me.TimeLastAccToThisFileBrowser) != 1)
Lay_ShowErrorAndExit ("Error when reading date-time of last access to a file browser."); Err_ShowErrorAndExit ("Error when reading date-time of last access to a file browser.");
} }
else else
Lay_ShowErrorAndExit ("Error when getting date-time of last access to a file browser."); Err_ShowErrorAndExit ("Error when getting date-time of last access to a file browser.");
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -5285,13 +5286,13 @@ static long Brw_GetGrpLastAccZone (const char *FieldNameDB)
if (row[0]) if (row[0])
{ {
if (sscanf (row[0],"%ld",&GrpCod) != 1) if (sscanf (row[0],"%ld",&GrpCod) != 1)
Lay_ShowErrorAndExit ("Error when reading the group of your last access to a file browser."); Err_ShowErrorAndExit ("Error when reading the group of your last access to a file browser.");
} }
else else
GrpCod = -1L; GrpCod = -1L;
} }
else else
Lay_ShowErrorAndExit ("Error when getting the group of your last access to a file browser."); Err_ShowErrorAndExit ("Error when getting the group of your last access to a file browser.");
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -5359,7 +5360,7 @@ static void Brw_CalcSizeOfDirRecursive (unsigned Level,char *Path)
snprintf (PathFileRel,sizeof (PathFileRel),"%s/%s", snprintf (PathFileRel,sizeof (PathFileRel),"%s/%s",
Path,FileList[NumFile]->d_name); Path,FileList[NumFile]->d_name);
if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned
Lay_ShowErrorAndExit ("Can not get information about a file or folder."); Err_ShowErrorAndExit ("Can not get information about a file or folder.");
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
{ {
Gbl.FileBrowser.Size.NumFolds++; Gbl.FileBrowser.Size.NumFolds++;
@ -5377,7 +5378,7 @@ static void Brw_CalcSizeOfDirRecursive (unsigned Level,char *Path)
free (FileList); free (FileList);
} }
else else
Lay_ShowErrorAndExit ("Error while scanning directory."); Err_ShowErrorAndExit ("Error while scanning directory.");
} }
/*****************************************************************************/ /*****************************************************************************/
@ -5431,7 +5432,7 @@ static void Brw_ListDir (unsigned Level,const char *ParentRowId,
/***** Get file or folder status *****/ /***** Get file or folder status *****/
if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned
Lay_ShowErrorAndExit ("Can not get information about a file or folder."); Err_ShowErrorAndExit ("Can not get information about a file or folder.");
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
{ {
Gbl.FileBrowser.FilFolLnk.Type = Brw_IS_FOLDER; Gbl.FileBrowser.FilFolLnk.Type = Brw_IS_FOLDER;
@ -5456,7 +5457,7 @@ static void Brw_ListDir (unsigned Level,const char *ParentRowId,
free (SubdirFileList); free (SubdirFileList);
} }
else else
Lay_ShowErrorAndExit ("Error while scanning directory."); Err_ShowErrorAndExit ("Error while scanning directory.");
} }
/***** Write a row for the subdirectory *****/ /***** Write a row for the subdirectory *****/
@ -5483,7 +5484,7 @@ static void Brw_ListDir (unsigned Level,const char *ParentRowId,
free (FileList); free (FileList);
} }
else else
Lay_ShowErrorAndExit ("Error while scanning directory."); Err_ShowErrorAndExit ("Error while scanning directory.");
} }
/*****************************************************************************/ /*****************************************************************************/
@ -5601,7 +5602,7 @@ static bool Brw_WriteRowFileBrowser (unsigned Level,const char *RowId,
/***** Start this row *****/ /***** Start this row *****/
if (asprintf (&Anchor,"fil_brw_%u_%s", if (asprintf (&Anchor,"fil_brw_%u_%s",
Gbl.FileBrowser.Id,RowId) < 0) Gbl.FileBrowser.Id,RowId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
switch (IconThisRow) switch (IconThisRow)
{ {
case Brw_ICON_TREE_NOTHING: case Brw_ICON_TREE_NOTHING:
@ -6236,7 +6237,7 @@ static void Brw_PutIconFile (Brw_FileType_t FileType,const char *FileName,
{ {
if (asprintf (&URL,"%s32x32", if (asprintf (&URL,"%s32x32",
CfG_URL_ICON_FILEXT_PUBLIC) < 0) CfG_URL_ICON_FILEXT_PUBLIC) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
for (DocType = 0, NotFound = true; for (DocType = 0, NotFound = true;
DocType < Ext_NUM_FILE_EXT_ALLOWED && NotFound; DocType < Ext_NUM_FILE_EXT_ALLOWED && NotFound;
DocType++) DocType++)
@ -6244,18 +6245,18 @@ static void Brw_PutIconFile (Brw_FileType_t FileType,const char *FileName,
{ {
if (asprintf (&Icon,"%s32x32.gif", if (asprintf (&Icon,"%s32x32.gif",
Ext_FileExtensionsAllowed[DocType]) < 0) Ext_FileExtensionsAllowed[DocType]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&Title,Txt_X_file, if (asprintf (&Title,Txt_X_file,
Ext_FileExtensionsAllowed[DocType]) < 0) Ext_FileExtensionsAllowed[DocType]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
NotFound = false; NotFound = false;
} }
if (NotFound) if (NotFound)
{ {
if (asprintf (&Icon,"xxx32x32.gif") < 0) if (asprintf (&Icon,"xxx32x32.gif") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&Title,"%s","") < 0) if (asprintf (&Title,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
if (Input) if (Input)
@ -6371,7 +6372,7 @@ static void Brw_WriteFileName (unsigned Level,bool IsPublic)
/* Link to the form and to the file */ /* Link to the form and to the file */
if (asprintf (&Class,"BT_LINK FILENAME %s",Gbl.FileBrowser.TxtStyle) < 0) if (asprintf (&Class,"BT_LINK FILENAME %s",Gbl.FileBrowser.TxtStyle) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BUTTON_SUBMIT_Begin ((Gbl.FileBrowser.Type == Brw_SHOW_MRK_CRS || HTM_BUTTON_SUBMIT_Begin ((Gbl.FileBrowser.Type == Brw_SHOW_MRK_CRS ||
Gbl.FileBrowser.Type == Brw_SHOW_MRK_GRP) ? Txt_Check_marks_in_the_file : Gbl.FileBrowser.Type == Brw_SHOW_MRK_GRP) ? Txt_Check_marks_in_the_file :
Txt_Download, Txt_Download,
@ -6436,7 +6437,7 @@ void Brw_CreateTmpPublicLinkToPrivateFile (const char *FullPathIncludingFile,
Gbl.FileBrowser.TmpPubDir.R, Gbl.FileBrowser.TmpPubDir.R,
FileName); FileName);
if (symlink (FullPathIncludingFile,Link) != 0) if (symlink (FullPathIncludingFile,Link) != 0)
Lay_ShowErrorAndExit ("Can not create temporary link."); Err_ShowErrorAndExit ("Can not create temporary link.");
} }
/*****************************************************************************/ /*****************************************************************************/
@ -6461,7 +6462,7 @@ static void Brw_WriteDatesAssignment (void)
/***** Write start date *****/ /***** Write start date *****/
if (asprintf (&Id,"asg_start_date_%u",UniqueId) < 0) if (asprintf (&Id,"asg_start_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_SPAN_Begin ("id=\"%s\"",Id); HTM_SPAN_Begin ("id=\"%s\"",Id);
Dat_WriteLocalDateHMSFromUTC (Id,Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME], Dat_WriteLocalDateHMSFromUTC (Id,Gbl.FileBrowser.Asg.TimeUTC[Dat_START_TIME],
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA, Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
@ -6474,7 +6475,7 @@ static void Brw_WriteDatesAssignment (void)
/***** Write end date *****/ /***** Write end date *****/
if (asprintf (&Id,"asg_end_date_%u",UniqueId) < 0) if (asprintf (&Id,"asg_end_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_SPAN_Begin ("id=\"%s\"",Id); HTM_SPAN_Begin ("id=\"%s\"",Id);
Dat_WriteLocalDateHMSFromUTC (Id,Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME], Dat_WriteLocalDateHMSFromUTC (Id,Gbl.FileBrowser.Asg.TimeUTC[Dat_END_TIME],
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA, Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
@ -6518,7 +6519,7 @@ static void Brw_WriteFileSizeAndDate (struct FileMetadata *FileMetadata)
{ {
UniqueId++; UniqueId++;
if (asprintf (&Id,"filedate%u",UniqueId) < 0) if (asprintf (&Id,"filedate%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_SPAN_Begin ("id=\"%s\"",Id); HTM_SPAN_Begin ("id=\"%s\"",Id);
HTM_SPAN_End (); HTM_SPAN_End ();
Dat_WriteLocalDateHMSFromUTC (Id,FileMetadata->Time, Dat_WriteLocalDateHMSFromUTC (Id,FileMetadata->Time,
@ -6598,7 +6599,7 @@ void Brw_AskRemFileFromTree (void)
FileNameToShow); FileNameToShow);
} }
else else
Lay_ShowErrorAndExit (Txt_You_can_not_remove_this_file_or_link); Err_ShowErrorAndExit (Txt_You_can_not_remove_this_file_or_link);
/***** Show again file browser *****/ /***** Show again file browser *****/
Brw_ShowAgainFileBrowserOrWorks (); Brw_ShowAgainFileBrowserOrWorks ();
@ -6627,7 +6628,7 @@ void Brw_RemFileFromTree (void)
/***** Check if is a file/link or a folder *****/ /***** Check if is a file/link or a folder *****/
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
Lay_ShowErrorAndExit ("Can not get information about a file or folder."); Err_ShowErrorAndExit ("Can not get information about a file or folder.");
else if (S_ISREG (FileStatus.st_mode)) // It's a file or a link else if (S_ISREG (FileStatus.st_mode)) // It's a file or a link
{ {
/* Name of the file/link to be shown */ /* Name of the file/link to be shown */
@ -6649,10 +6650,10 @@ void Brw_RemFileFromTree (void)
FileNameToShow); FileNameToShow);
} }
else // File / link not found else // File / link not found
Lay_ShowErrorAndExit ("File / link not found."); Err_ShowErrorAndExit ("File / link not found.");
} }
else else
Lay_ShowErrorAndExit (Txt_You_can_not_remove_this_file_or_link); Err_ShowErrorAndExit (Txt_You_can_not_remove_this_file_or_link);
/***** Show again file browser *****/ /***** Show again file browser *****/
Brw_ShowAgainFileBrowserOrWorks (); Brw_ShowAgainFileBrowserOrWorks ();
@ -6680,7 +6681,7 @@ void Brw_RemFolderFromTree (void)
/***** Check if it's a file or a folder *****/ /***** Check if it's a file or a folder *****/
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
Lay_ShowErrorAndExit ("Can not get information about a file or folder."); Err_ShowErrorAndExit ("Can not get information about a file or folder.");
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
if (Brw_RemoveFolderFromDiskAndDB (Path, if (Brw_RemoveFolderFromDiskAndDB (Path,
Gbl.FileBrowser.FilFolLnk.Full)) Gbl.FileBrowser.FilFolLnk.Full))
@ -6688,7 +6689,7 @@ void Brw_RemFolderFromTree (void)
if (errno == ENOTEMPTY) // The directory is not empty if (errno == ENOTEMPTY) // The directory is not empty
Brw_AskConfirmRemoveFolderNotEmpty (); Brw_AskConfirmRemoveFolderNotEmpty ();
else // The directory is empty else // The directory is empty
Lay_ShowErrorAndExit ("Can not remove folder."); Err_ShowErrorAndExit ("Can not remove folder.");
} }
else else
{ {
@ -6702,10 +6703,10 @@ void Brw_RemFolderFromTree (void)
Gbl.FileBrowser.FilFolLnk.Name); Gbl.FileBrowser.FilFolLnk.Name);
} }
else // Folder not found else // Folder not found
Lay_ShowErrorAndExit ("Folder not found."); Err_ShowErrorAndExit ("Folder not found.");
} }
else else
Lay_ShowErrorAndExit (Txt_You_can_not_remove_this_folder); Err_ShowErrorAndExit (Txt_You_can_not_remove_this_folder);
/***** Show again file browser *****/ /***** Show again file browser *****/
Brw_ShowAgainFileBrowserOrWorks (); Brw_ShowAgainFileBrowserOrWorks ();
@ -7160,7 +7161,7 @@ static bool Brw_GetMyClipboard (void)
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
if (NumRows > 1) if (NumRows > 1)
Lay_WrongCopySrcExit (); Err_WrongCopySrcExit ();
return (bool) (NumRows == 1); return (bool) (NumRows == 1);
} }
@ -7953,7 +7954,7 @@ static void Brw_PasteClipboard (void)
(unsigned) Hie.Ins.InsCod, (unsigned) Hie.Ins.InsCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_WrongCopySrcExit (); Err_WrongCopySrcExit ();
break; break;
case Brw_ADMI_DOC_CTR: case Brw_ADMI_DOC_CTR:
case Brw_ADMI_SHR_CTR: case Brw_ADMI_SHR_CTR:
@ -7965,7 +7966,7 @@ static void Brw_PasteClipboard (void)
(unsigned) Hie.Ctr.CtrCod, (unsigned) Hie.Ctr.CtrCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_WrongCopySrcExit (); Err_WrongCopySrcExit ();
break; break;
case Brw_ADMI_DOC_DEG: case Brw_ADMI_DOC_DEG:
case Brw_ADMI_SHR_DEG: case Brw_ADMI_SHR_DEG:
@ -7977,7 +7978,7 @@ static void Brw_PasteClipboard (void)
(unsigned) Hie.Deg.DegCod, (unsigned) Hie.Deg.DegCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_WrongCopySrcExit (); Err_WrongCopySrcExit ();
break; break;
case Brw_ADMI_DOC_CRS: case Brw_ADMI_DOC_CRS:
case Brw_ADMI_TCH_CRS: case Brw_ADMI_TCH_CRS:
@ -7989,7 +7990,7 @@ static void Brw_PasteClipboard (void)
Cfg_PATH_CRS_PRIVATE,Hie.Crs.CrsCod, Cfg_PATH_CRS_PRIVATE,Hie.Crs.CrsCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_WrongCopySrcExit (); Err_WrongCopySrcExit ();
break; break;
case Brw_ADMI_DOC_GRP: case Brw_ADMI_DOC_GRP:
case Brw_ADMI_TCH_GRP: case Brw_ADMI_TCH_GRP:
@ -8004,7 +8005,7 @@ static void Brw_PasteClipboard (void)
GrpDat.GrpCod, GrpDat.GrpCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_WrongCopySrcExit (); Err_WrongCopySrcExit ();
break; break;
case Brw_ADMI_ASG_CRS: case Brw_ADMI_ASG_CRS:
case Brw_ADMI_WRK_CRS: case Brw_ADMI_WRK_CRS:
@ -8026,7 +8027,7 @@ static void Brw_PasteClipboard (void)
Usr_UsrDataDestructor (&UsrDat); Usr_UsrDataDestructor (&UsrDat);
} }
else else
Lay_WrongCopySrcExit (); Err_WrongCopySrcExit ();
break; break;
case Brw_ADMI_ASG_USR: case Brw_ADMI_ASG_USR:
case Brw_ADMI_WRK_USR: case Brw_ADMI_WRK_USR:
@ -8038,7 +8039,7 @@ static void Brw_PasteClipboard (void)
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_WrongCopySrcExit (); Err_WrongCopySrcExit ();
break; break;
case Brw_ADMI_DOC_PRJ: case Brw_ADMI_DOC_PRJ:
case Brw_ADMI_ASS_PRJ: case Brw_ADMI_ASS_PRJ:
@ -8051,7 +8052,7 @@ static void Brw_PasteClipboard (void)
PrjCod, PrjCod,
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
else else
Lay_WrongCopySrcExit (); Err_WrongCopySrcExit ();
break; break;
case Brw_ADMI_BRF_USR: case Brw_ADMI_BRF_USR:
snprintf (PathOrg,sizeof (PathOrg),"%s/%s", snprintf (PathOrg,sizeof (PathOrg),"%s/%s",
@ -8059,7 +8060,7 @@ static void Brw_PasteClipboard (void)
Gbl.FileBrowser.Clipboard.FilFolLnk.Full); Gbl.FileBrowser.Clipboard.FilFolLnk.Full);
break; break;
default: default:
Lay_WrongFileBrowserExit (); Err_WrongFileBrowserExit ();
break; break;
} }
@ -8119,7 +8120,7 @@ static void Brw_PasteClipboard (void)
Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Full); Brw_InsFoldersInPathAndUpdOtherFoldersInExpandedFolders (Gbl.FileBrowser.FilFolLnk.Full);
} }
else else
Lay_ShowErrorAndExit (Txt_You_can_not_paste_file_or_folder_here); // It's difficult, but not impossible that a user sees this message Err_ShowErrorAndExit (Txt_You_can_not_paste_file_or_folder_here); // It's difficult, but not impossible that a user sees this message
} }
/*****************************************************************************/ /*****************************************************************************/
@ -8185,7 +8186,7 @@ static bool Brw_PasteTreeIntoFolder (unsigned LevelOrg,
/***** Is it a file or a folder? *****/ /***** Is it a file or a folder? *****/
FileType = Brw_IS_UNKNOWN; FileType = Brw_IS_UNKNOWN;
if (lstat (PathOrg,&FileStatus)) // On success ==> 0 is returned if (lstat (PathOrg,&FileStatus)) // On success ==> 0 is returned
Lay_ShowErrorAndExit ("Can not get information about a file or folder."); Err_ShowErrorAndExit ("Can not get information about a file or folder.");
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
FileType = Brw_IS_FOLDER; FileType = Brw_IS_FOLDER;
else if (S_ISREG (FileStatus.st_mode)) // It's a regular file else if (S_ISREG (FileStatus.st_mode)) // It's a regular file
@ -8233,7 +8234,7 @@ static bool Brw_PasteTreeIntoFolder (unsigned LevelOrg,
FileNameToShow); FileNameToShow);
break; break;
default: default:
Lay_ShowErrorAndExit ("Can not paste unknown file type."); Err_ShowErrorAndExit ("Can not paste unknown file type.");
} }
CopyIsGoingSuccessful = false; CopyIsGoingSuccessful = false;
} }
@ -8326,7 +8327,7 @@ static bool Brw_PasteTreeIntoFolder (unsigned LevelOrg,
{ {
/* Create directory */ /* Create directory */
if (mkdir (PathDstWithFile,(mode_t) 0xFFF) != 0) if (mkdir (PathDstWithFile,(mode_t) 0xFFF) != 0)
Lay_ShowErrorAndExit ("Can not create folder."); Err_ShowErrorAndExit ("Can not create folder.");
/* Add entry to the table of files/folders */ /* Add entry to the table of files/folders */
Brw_AddPathToDB (Gbl.Usrs.Me.UsrDat.UsrCod,FileType, Brw_AddPathToDB (Gbl.Usrs.Me.UsrDat.UsrCod,FileType,
@ -8358,7 +8359,7 @@ static bool Brw_PasteTreeIntoFolder (unsigned LevelOrg,
free (FileList); free (FileList);
} }
else else
Lay_ShowErrorAndExit ("Error while scanning directory."); Err_ShowErrorAndExit ("Error while scanning directory.");
if (CopyIsGoingSuccessful && if (CopyIsGoingSuccessful &&
LevelOrg != 0) // When copying all files inside root folder, LevelOrg != 0) // When copying all files inside root folder,
@ -8417,7 +8418,7 @@ void Brw_ShowFormFileBrowser (void)
} }
else else
{ {
Lay_ShowErrorAndExit (Txt_You_can_not_create_folders_files_or_links_here); // It's difficult, but not impossible that a user sees this message Err_ShowErrorAndExit (Txt_You_can_not_create_folders_files_or_links_here); // It's difficult, but not impossible that a user sees this message
/***** Show again file browser *****/ /***** Show again file browser *****/
Brw_ShowAgainFileBrowserOrWorks (); Brw_ShowAgainFileBrowserOrWorks ();
@ -8636,7 +8637,7 @@ static void Brw_PutFormToCreateALink (const char *FileNameToShow)
/* Label */ /* Label */
if (asprintf (&Label,"%s&nbsp;(%s):&nbsp;",Txt_Save_as,Txt_optional) < 0) if (asprintf (&Label,"%s&nbsp;(%s):&nbsp;",Txt_Save_as,Txt_optional) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Frm_LabelColumn ("RT","NewLinkName",Label); Frm_LabelColumn ("RT","NewLinkName",Label);
free (Label); free (Label);
@ -8685,7 +8686,7 @@ void Brw_RecFolderFileBrowser (void)
Gbl.FileBrowser.FilFolLnk.Full); Gbl.FileBrowser.FilFolLnk.Full);
if (strlen (Path) + 1 + strlen (Gbl.FileBrowser.NewFilFolLnkName) > PATH_MAX) if (strlen (Path) + 1 + strlen (Gbl.FileBrowser.NewFilFolLnkName) > PATH_MAX)
Lay_ShowErrorAndExit ("Path is too long."); Err_ShowErrorAndExit ("Path is too long.");
Str_Concat (Path,"/",sizeof (Path) - 1); Str_Concat (Path,"/",sizeof (Path) - 1);
Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,sizeof (Path) - 1); Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,sizeof (Path) - 1);
@ -8739,10 +8740,10 @@ void Brw_RecFolderFileBrowser (void)
Gbl.FileBrowser.NewFilFolLnkName); Gbl.FileBrowser.NewFilFolLnkName);
break; break;
case EACCES: case EACCES:
Lay_ShowErrorAndExit ("Write forbidden."); Err_ShowErrorAndExit ("Write forbidden.");
break; break;
default: default:
Lay_ShowErrorAndExit ("Can not create folder."); Err_ShowErrorAndExit ("Can not create folder.");
break; break;
} }
} }
@ -8751,7 +8752,7 @@ void Brw_RecFolderFileBrowser (void)
Ale_ShowAlerts (NULL); Ale_ShowAlerts (NULL);
} }
else else
Lay_ShowErrorAndExit (Txt_You_can_not_create_folders_here); // It's difficult, but not impossible that a user sees this message Err_ShowErrorAndExit (Txt_You_can_not_create_folders_here); // It's difficult, but not impossible that a user sees this message
/***** Show again the file browser *****/ /***** Show again the file browser *****/
Brw_ShowAgainFileBrowserOrWorks (); Brw_ShowAgainFileBrowserOrWorks ();
@ -8792,7 +8793,7 @@ void Brw_RenFolderFileBrowser (void)
if (strlen (Gbl.FileBrowser.Priv.PathAboveRootFolder) + 1 + if (strlen (Gbl.FileBrowser.Priv.PathAboveRootFolder) + 1 +
strlen (Gbl.FileBrowser.FilFolLnk.Path) + 1 + strlen (Gbl.FileBrowser.FilFolLnk.Path) + 1 +
strlen (Gbl.FileBrowser.NewFilFolLnkName) > PATH_MAX) strlen (Gbl.FileBrowser.NewFilFolLnkName) > PATH_MAX)
Lay_ShowErrorAndExit ("Path is too long."); Err_ShowErrorAndExit ("Path is too long.");
snprintf (NewPathInTree,sizeof (NewPathInTree),"%s/%s", snprintf (NewPathInTree,sizeof (NewPathInTree),"%s/%s",
Gbl.FileBrowser.FilFolLnk.Path, Gbl.FileBrowser.FilFolLnk.Path,
Gbl.FileBrowser.NewFilFolLnkName); Gbl.FileBrowser.NewFilFolLnkName);
@ -8814,10 +8815,10 @@ void Brw_RenFolderFileBrowser (void)
Gbl.FileBrowser.FilFolLnk.Name,Gbl.FileBrowser.NewFilFolLnkName); Gbl.FileBrowser.FilFolLnk.Name,Gbl.FileBrowser.NewFilFolLnkName);
break; break;
case EACCES: case EACCES:
Lay_ShowErrorAndExit ("Write forbidden."); Err_ShowErrorAndExit ("Write forbidden.");
break; break;
default: default:
Lay_ShowErrorAndExit ("Can not rename folder."); Err_ShowErrorAndExit ("Can not rename folder.");
break; break;
} }
} }
@ -8858,7 +8859,7 @@ void Brw_RenFolderFileBrowser (void)
Ale_ShowAlerts (NULL); Ale_ShowAlerts (NULL);
} }
else else
Lay_ShowErrorAndExit (Txt_You_can_not_rename_this_folder); Err_ShowErrorAndExit (Txt_You_can_not_rename_this_folder);
/***** Show again file browser *****/ /***** Show again file browser *****/
Brw_ShowAgainFileBrowserOrWorks (); Brw_ShowAgainFileBrowserOrWorks ();
@ -8968,7 +8969,7 @@ static bool Brw_RcvFileInFileBrw (Brw_UploadType_t UploadType)
if (strlen (Path) + 1 + if (strlen (Path) + 1 +
strlen (Gbl.FileBrowser.NewFilFolLnkName) + strlen (Gbl.FileBrowser.NewFilFolLnkName) +
strlen (".tmp") > PATH_MAX) strlen (".tmp") > PATH_MAX)
Lay_ShowErrorAndExit ("Path is too long."); Err_ShowErrorAndExit ("Path is too long.");
Str_Concat (Path,"/",sizeof (Path) - 1); Str_Concat (Path,"/",sizeof (Path) - 1);
Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,sizeof (Path) - 1); Str_Concat (Path,Gbl.FileBrowser.NewFilFolLnkName,sizeof (Path) - 1);
@ -9165,7 +9166,7 @@ void Brw_RecLinkFileBrowser (void)
Gbl.FileBrowser.Priv.PathAboveRootFolder, Gbl.FileBrowser.Priv.PathAboveRootFolder,
Gbl.FileBrowser.FilFolLnk.Full); Gbl.FileBrowser.FilFolLnk.Full);
if (strlen (Path) + 1 + strlen (FileName) + strlen (".url") > PATH_MAX) if (strlen (Path) + 1 + strlen (FileName) + strlen (".url") > PATH_MAX)
Lay_ShowErrorAndExit ("Path is too long."); Err_ShowErrorAndExit ("Path is too long.");
Str_Concat (Path,"/",sizeof (Path) - 1); Str_Concat (Path,"/",sizeof (Path) - 1);
Str_Concat (Path,FileName,sizeof (Path) - 1); Str_Concat (Path,FileName,sizeof (Path) - 1);
Str_Concat (Path,".url",sizeof (Path) - 1); Str_Concat (Path,".url",sizeof (Path) - 1);
@ -9258,7 +9259,7 @@ void Brw_RecLinkFileBrowser (void)
Ale_ShowAlert (Ale_WARNING,Txt_UPLOAD_FILE_Invalid_link); Ale_ShowAlert (Ale_WARNING,Txt_UPLOAD_FILE_Invalid_link);
} }
else else
Lay_ShowErrorAndExit (Txt_You_can_not_create_links_here); // It's difficult, but not impossible that a user sees this message Err_ShowErrorAndExit (Txt_You_can_not_create_links_here); // It's difficult, but not impossible that a user sees this message
/***** Show again the file browser *****/ /***** Show again the file browser *****/
Brw_ShowAgainFileBrowserOrWorks (); Brw_ShowAgainFileBrowserOrWorks ();
@ -10345,7 +10346,7 @@ void Brw_ChgFileMetadata (void)
} }
else else
/***** Write error message and exit *****/ /***** Write error message and exit *****/
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
/***** Show again the file browser *****/ /***** Show again the file browser *****/
@ -11876,7 +11877,7 @@ void Brw_GetSummaryAndContentOfFile (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
Txt_Uploaded_by, Txt_Uploaded_by,
FileHasPublisher ? PublisherUsrDat.FullName : FileHasPublisher ? PublisherUsrDat.FullName :
Txt_ROLES_SINGUL_Abc[Rol_UNK][Usr_SEX_UNKNOWN]) < 0) Txt_ROLES_SINGUL_Abc[Rol_UNK][Usr_SEX_UNKNOWN]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/* Free memory used for publisher's data */ /* Free memory used for publisher's data */
if (FileMetadata.PublisherUsrCod > 0) if (FileMetadata.PublisherUsrCod > 0)
@ -12380,7 +12381,7 @@ static void Brw_ScanDirRemovingOldFiles (unsigned Level,
// Folder st_mtime must be saved before remove files inside it // Folder st_mtime must be saved before remove files inside it
// because st_mtime is updated by the deletion // because st_mtime is updated by the deletion
if (lstat (Path,&FolderStatus)) // On success ==> 0 is returned if (lstat (Path,&FolderStatus)) // On success ==> 0 is returned
Lay_ShowErrorAndExit ("Can not get information about a file or folder."); Err_ShowErrorAndExit ("Can not get information about a file or folder.");
/***** Scan directory *****/ /***** Scan directory *****/
else if ((NumFiles = scandir (Path,&FileList,NULL,alphasort)) >= 0) // No error else if ((NumFiles = scandir (Path,&FileList,NULL,alphasort)) >= 0) // No error
{ {
@ -12400,7 +12401,7 @@ static void Brw_ScanDirRemovingOldFiles (unsigned Level,
/***** Get file or folder status *****/ /***** Get file or folder status *****/
if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned
Lay_ShowErrorAndExit ("Can not get information about a file or folder."); Err_ShowErrorAndExit ("Can not get information about a file or folder.");
else if (S_ISDIR (FileStatus.st_mode)) // It's a folder else if (S_ISDIR (FileStatus.st_mode)) // It's a folder
/* Scan subtree starting at this this directory recursively */ /* Scan subtree starting at this this directory recursively */
Brw_ScanDirRemovingOldFiles (Level + 1,PathFileRel, Brw_ScanDirRemovingOldFiles (Level + 1,PathFileRel,
@ -12440,7 +12441,7 @@ static void Brw_ScanDirRemovingOldFiles (unsigned Level,
free (FileList); free (FileList);
} }
else else
Lay_ShowErrorAndExit ("Error while scanning directory."); Err_ShowErrorAndExit ("Error while scanning directory.");
} }
if (NumFiles <= 2 && // It's an empty folder if (NumFiles <= 2 && // It's an empty folder
@ -12448,7 +12449,7 @@ static void Brw_ScanDirRemovingOldFiles (unsigned Level,
{ {
/* Remove folder from disk and database */ /* Remove folder from disk and database */
if (Brw_RemoveFolderFromDiskAndDB (Path,PathInTree)) if (Brw_RemoveFolderFromDiskAndDB (Path,PathInTree))
Lay_ShowErrorAndExit ("Can not remove folder."); Err_ShowErrorAndExit ("Can not remove folder.");
/* Update number of files/links removed */ /* Update number of files/links removed */
(Removed->NumFolds)++; (Removed->NumFolds)++;
@ -12456,7 +12457,7 @@ static void Brw_ScanDirRemovingOldFiles (unsigned Level,
} }
} }
else else
Lay_ShowErrorAndExit ("Error while scanning directory."); Err_ShowErrorAndExit ("Error while scanning directory.");
} }
/*****************************************************************************/ /*****************************************************************************/
@ -12468,7 +12469,7 @@ static void Brw_RemoveFileFromDiskAndDB (const char Path[PATH_MAX + 1],
{ {
/***** Remove file from disk *****/ /***** Remove file from disk *****/
if (unlink (Path)) if (unlink (Path))
Lay_ShowErrorAndExit ("Can not remove file / link."); Err_ShowErrorAndExit ("Can not remove file / link.");
/***** If a file is removed, /***** If a file is removed,
it is necessary to remove it from the database *****/ it is necessary to remove it from the database *****/

View File

@ -30,6 +30,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_follow.h" #include "swad_follow.h"
#include "swad_form.h" #include "swad_form.h"
@ -1496,7 +1497,7 @@ void Fol_GetAndShowRankingFollowers (void)
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }

View File

@ -29,6 +29,7 @@
#include <stdio.h> // For asprintf #include <stdio.h> // For asprintf
#include <stdlib.h> // For free #include <stdlib.h> // For free
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -271,7 +272,7 @@ void Frm_SetAnchorStr (long Cod,char **Anchor)
{ {
if (asprintf (Anchor,"cod_%ld", if (asprintf (Anchor,"cod_%ld",
Cod) < 0) Cod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
*Anchor = NULL; *Anchor = NULL;

View File

@ -37,6 +37,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_forum.h" #include "swad_forum.h"
@ -490,7 +491,7 @@ void For_DisablePost (void)
For_ShowPostsOfAThread (&Forums,Ale_SUCCESS,Txt_FORUM_Post_banned); For_ShowPostsOfAThread (&Forums,Ale_SUCCESS,Txt_FORUM_Post_banned);
} }
else else
Lay_WrongPostExit (); Err_WrongPostExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -651,9 +652,9 @@ static unsigned For_NumPstsInThrWithPstCod (long PstCod,long *ThrCod)
{ {
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumPsts) != 1) if (sscanf (row[0],"%u",&NumPsts) != 1)
Lay_ShowErrorAndExit ("Error when getting number of posts in a thread."); Err_ShowErrorAndExit ("Error when getting number of posts in a thread.");
if (sscanf (row[1],"%ld",ThrCod) != 1) if (sscanf (row[1],"%ld",ThrCod) != 1)
Lay_ShowErrorAndExit ("Error when getting number of posts in a thread."); Err_ShowErrorAndExit ("Error when getting number of posts in a thread.");
} }
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -842,7 +843,7 @@ static long For_GetLastPstCod (long ThrCod)
" LIMIT 1", " LIMIT 1",
ThrCod); ThrCod);
if (LastPstCod <= 0) if (LastPstCod <= 0)
Lay_ShowErrorAndExit ("Error when getting the most recent post of a thread of a forum."); Err_ShowErrorAndExit ("Error when getting the most recent post of a thread of a forum.");
return LastPstCod; return LastPstCod;
} }
@ -1123,7 +1124,7 @@ static void For_ShowPostsOfAThread (struct For_Forums *Forums,
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%ld",&Forums->PstCod) != 1) if (sscanf (row[0],"%ld",&Forums->PstCod) != 1)
Lay_WrongPostExit (); Err_WrongPostExit ();
CreatTimeUTC = Dat_GetUNIXTimeFromStr (row[1]); CreatTimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
@ -1385,7 +1386,7 @@ static void For_GetPstData (long PstCod,long *UsrCod,time_t *CreatTimeUTC,
" FROM for_posts" " FROM for_posts"
" WHERE PstCod=%ld", " WHERE PstCod=%ld",
PstCod) != 1) PstCod) != 1)
Lay_WrongPostExit (); Err_WrongPostExit ();
/***** Get number of rows *****/ /***** Get number of rows *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -1442,7 +1443,7 @@ void For_GetSummaryAndContentForumPst (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1
Length = strlen (row[1]); Length = strlen (row[1]);
if ((*ContentStr = malloc (Length + 1)) == NULL) if ((*ContentStr = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (Length) if (Length)
Str_Copy (*ContentStr,row[1],Length); Str_Copy (*ContentStr,row[1],Length);
@ -2215,13 +2216,13 @@ void For_SetForumName (const struct For_Forum *Forum,
case For_FORUM_INSTIT_USRS: case For_FORUM_INSTIT_USRS:
Hie.Ins.InsCod = Forum->Location; Hie.Ins.InsCod = Forum->Location;
if (!Ins_GetDataOfInstitutionByCod (&Hie.Ins)) if (!Ins_GetDataOfInstitutionByCod (&Hie.Ins))
Lay_WrongInstitExit (); Err_WrongInstitExit ();
Str_Copy (ForumName,Hie.Ins.ShrtName,For_MAX_BYTES_FORUM_NAME); Str_Copy (ForumName,Hie.Ins.ShrtName,For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_INSTIT_TCHS: case For_FORUM_INSTIT_TCHS:
Hie.Ins.InsCod = Forum->Location; Hie.Ins.InsCod = Forum->Location;
if (!Ins_GetDataOfInstitutionByCod (&Hie.Ins)) if (!Ins_GetDataOfInstitutionByCod (&Hie.Ins))
Lay_WrongInstitExit (); Err_WrongInstitExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s", snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
Hie.Ins.ShrtName, Hie.Ins.ShrtName,
UseHTMLEntities ? Txt_only_teachers : UseHTMLEntities ? Txt_only_teachers :
@ -2230,13 +2231,13 @@ void For_SetForumName (const struct For_Forum *Forum,
case For_FORUM_CENTER_USRS: case For_FORUM_CENTER_USRS:
Hie.Ctr.CtrCod = Forum->Location; Hie.Ctr.CtrCod = Forum->Location;
if (!Ctr_GetDataOfCenterByCod (&Hie.Ctr)) if (!Ctr_GetDataOfCenterByCod (&Hie.Ctr))
Lay_WrongCenterExit (); Err_WrongCenterExit ();
Str_Copy (ForumName,Hie.Ctr.ShrtName,For_MAX_BYTES_FORUM_NAME); Str_Copy (ForumName,Hie.Ctr.ShrtName,For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_CENTER_TCHS: case For_FORUM_CENTER_TCHS:
Hie.Ctr.CtrCod = Forum->Location; Hie.Ctr.CtrCod = Forum->Location;
if (!Ctr_GetDataOfCenterByCod (&Hie.Ctr)) if (!Ctr_GetDataOfCenterByCod (&Hie.Ctr))
Lay_WrongCenterExit (); Err_WrongCenterExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s", snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
Hie.Ctr.ShrtName, Hie.Ctr.ShrtName,
UseHTMLEntities ? Txt_only_teachers : UseHTMLEntities ? Txt_only_teachers :
@ -2245,13 +2246,13 @@ void For_SetForumName (const struct For_Forum *Forum,
case For_FORUM_DEGREE_USRS: case For_FORUM_DEGREE_USRS:
Hie.Deg.DegCod = Forum->Location; Hie.Deg.DegCod = Forum->Location;
if (!Deg_GetDataOfDegreeByCod (&Hie.Deg)) if (!Deg_GetDataOfDegreeByCod (&Hie.Deg))
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
Str_Copy (ForumName,Hie.Deg.ShrtName,For_MAX_BYTES_FORUM_NAME); Str_Copy (ForumName,Hie.Deg.ShrtName,For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_DEGREE_TCHS: case For_FORUM_DEGREE_TCHS:
Hie.Deg.DegCod = Forum->Location; Hie.Deg.DegCod = Forum->Location;
if (!Deg_GetDataOfDegreeByCod (&Hie.Deg)) if (!Deg_GetDataOfDegreeByCod (&Hie.Deg))
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s", snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
Hie.Deg.ShrtName, Hie.Deg.ShrtName,
UseHTMLEntities ? Txt_only_teachers : UseHTMLEntities ? Txt_only_teachers :
@ -2260,13 +2261,13 @@ void For_SetForumName (const struct For_Forum *Forum,
case For_FORUM_COURSE_USRS: case For_FORUM_COURSE_USRS:
Hie.Crs.CrsCod = Forum->Location; Hie.Crs.CrsCod = Forum->Location;
if (!Crs_GetDataOfCourseByCod (&Hie.Crs)) if (!Crs_GetDataOfCourseByCod (&Hie.Crs))
Lay_WrongCourseExit (); Err_WrongCourseExit ();
Str_Copy (ForumName,Hie.Crs.ShrtName,For_MAX_BYTES_FORUM_NAME); Str_Copy (ForumName,Hie.Crs.ShrtName,For_MAX_BYTES_FORUM_NAME);
break; break;
case For_FORUM_COURSE_TCHS: case For_FORUM_COURSE_TCHS:
Hie.Crs.CrsCod = Forum->Location; Hie.Crs.CrsCod = Forum->Location;
if (!Crs_GetDataOfCourseByCod (&Hie.Crs)) if (!Crs_GetDataOfCourseByCod (&Hie.Crs))
Lay_WrongCourseExit (); Err_WrongCourseExit ();
snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s", snprintf (ForumName,For_MAX_BYTES_FORUM_NAME + 1,"%s%s",
Hie.Crs.ShrtName, Hie.Crs.ShrtName,
UseHTMLEntities ? Txt_only_teachers : UseHTMLEntities ? Txt_only_teachers :
@ -2512,7 +2513,7 @@ static void For_ShowForumThreadsHighlightingOneThread (struct For_Forums *Forums
NumThr++, NumThrInScreen++) NumThr++, NumThrInScreen++)
/* Get thread code(row[0]) */ /* Get thread code(row[0]) */
if ((ThrCods[NumThrInScreen] = DB_GetNextCode (mysql_res)) < 0) if ((ThrCods[NumThrInScreen] = DB_GetNextCode (mysql_res)) < 0)
Lay_ShowErrorAndExit ("Error when getting thread of a forum."); Err_ShowErrorAndExit ("Error when getting thread of a forum.");
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -3452,13 +3453,13 @@ unsigned For_GetNumTotalPstsInForumsOfType (For_ForumType_t ForumType,
/* Get number of posts (row[0]) */ /* Get number of posts (row[0]) */
if (sscanf (row[0],"%u",&NumPosts) != 1) if (sscanf (row[0],"%u",&NumPosts) != 1)
Lay_ShowErrorAndExit ("Error when getting the total number of forums of a type."); Err_ShowErrorAndExit ("Error when getting the total number of forums of a type.");
/* Get number of users notified (row[1]) */ /* Get number of users notified (row[1]) */
if (row[1]) if (row[1])
{ {
if (sscanf (row[1],"%u",NumUsrsToBeNotifiedByEMail) != 1) if (sscanf (row[1],"%u",NumUsrsToBeNotifiedByEMail) != 1)
Lay_ShowErrorAndExit ("Error when getting the total number of forums of a type."); Err_ShowErrorAndExit ("Error when getting the total number of forums of a type.");
} }
else else
*NumUsrsToBeNotifiedByEMail = 0; *NumUsrsToBeNotifiedByEMail = 0;
@ -3605,7 +3606,7 @@ static void For_ListForumThrs (struct For_Forums *Forums,
TimeUTC = Thr.WriteTime[Order]; TimeUTC = Thr.WriteTime[Order];
UniqueId++; UniqueId++;
if (asprintf (&Id,"thr_date_%u",UniqueId) < 0) if (asprintf (&Id,"thr_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"%s LT %s\"",Id,Style,BgColor); HTM_TD_Begin ("id=\"%s\" class=\"%s LT %s\"",Id,Style,BgColor);
Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC, Dat_WriteLocalDateHMSFromUTC (Id,TimeUTC,
Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK, Gbl.Prefs.DateFormat,Dat_SEPARATOR_BREAK,
@ -3677,7 +3678,7 @@ static void For_GetThreadData (struct For_Thread *Thr)
" AND for_threads.FirstPstCod=m0.PstCod" " AND for_threads.FirstPstCod=m0.PstCod"
" AND for_threads.LastPstCod=m1.PstCod", " AND for_threads.LastPstCod=m1.PstCod",
Thr->ThrCod) != 1) Thr->ThrCod) != 1)
Lay_ShowErrorAndExit ("Error when getting data of a thread of a forum."); Err_ShowErrorAndExit ("Error when getting data of a thread of a forum.");
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
/***** Get the code of the first post in this thread (row[0]) *****/ /***** Get the code of the first post in this thread (row[0]) *****/
@ -3689,9 +3690,9 @@ static void For_GetThreadData (struct For_Thread *Thr)
/***** Get the code of the first message (row[0]) /***** Get the code of the first message (row[0])
and the last message (row[1]) in this thread *****/ and the last message (row[1]) in this thread *****/
if (sscanf (row[0],"%ld",&(Thr->PstCod[Dat_START_TIME])) != 1) if (sscanf (row[0],"%ld",&(Thr->PstCod[Dat_START_TIME])) != 1)
Lay_WrongPostExit (); Err_WrongPostExit ();
if (sscanf (row[1],"%ld",&(Thr->PstCod[Dat_END_TIME])) != 1) if (sscanf (row[1],"%ld",&(Thr->PstCod[Dat_END_TIME])) != 1)
Lay_WrongPostExit (); Err_WrongPostExit ();
/***** Get the author of the first post in this thread (row[2]) *****/ /***** Get the author of the first post in this thread (row[2]) *****/
Thr->UsrCod[Dat_START_TIME] = Str_ConvertStrCodToLongCod (row[2]); Thr->UsrCod[Dat_START_TIME] = Str_ConvertStrCodToLongCod (row[2]);
@ -4005,7 +4006,7 @@ static void For_RestrictAccess (const struct For_Forums *Forums)
break; break;
} }
if (!ICanSeeForum) if (!ICanSeeForum)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -4266,16 +4267,16 @@ void For_RemovePost (void)
/***** Check if I can remove the post *****/ /***** Check if I can remove the post *****/
/* Check if the message really exists, if it has not been removed */ /* Check if the message really exists, if it has not been removed */
if (!For_GetIfForumPstExists (Forums.PstCod)) if (!For_GetIfForumPstExists (Forums.PstCod))
Lay_WrongPostExit (); Err_WrongPostExit ();
/* Check if I am the author of the message */ /* Check if I am the author of the message */
ItsMe = Usr_ItsMe (UsrDat.UsrCod); ItsMe = Usr_ItsMe (UsrDat.UsrCod);
if (!ItsMe) if (!ItsMe)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/* Check if the message is the last message in the thread */ /* Check if the message is the last message in the thread */
if (Forums.PstCod != For_GetLastPstCod (Forums.Thread.Current)) if (Forums.PstCod != For_GetLastPstCod (Forums.Thread.Current))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Remove the post *****/ /***** Remove the post *****/
ThreadDeleted = For_RemoveForumPst (Forums.PstCod,Media.MedCod); ThreadDeleted = For_RemoveForumPst (Forums.PstCod,Media.MedCod);
@ -4411,7 +4412,7 @@ void For_RemoveThread (void)
For_ShowForumThreadsHighlightingOneThread (&Forums,Ale_SUCCESS,Txt_Thread_removed); For_ShowForumThreadsHighlightingOneThread (&Forums,Ale_SUCCESS,Txt_Thread_removed);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -4626,7 +4627,7 @@ static void For_MoveThrToCurrentForum (const struct For_Forums *Forums)
Forums->Thread.Current); Forums->Thread.Current);
break; break;
default: default:
Lay_WrongForumExit (); Err_WrongForumExit ();
break; break;
} }
} }

View File

@ -34,6 +34,7 @@
#include <string.h> // For string functions #include <string.h> // For string functions
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_game.h" #include "swad_game.h"
@ -469,7 +470,7 @@ void Gam_SeeOneGame (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Show game *****/ /***** Show game *****/
@ -580,7 +581,7 @@ static void Gam_ShowOneGame (struct Gam_Games *Games,
StartEndTime++) StartEndTime++)
{ {
if (asprintf (&Id,"gam_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"gam_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Color = Game->NumUnfinishedMchs ? (Game->Hidden ? "DATE_GREEN_LIGHT": Color = Game->NumUnfinishedMchs ? (Game->Hidden ? "DATE_GREEN_LIGHT":
"DATE_GREEN") : "DATE_GREEN") :
(Game->Hidden ? "DATE_RED_LIGHT": (Game->Hidden ? "DATE_RED_LIGHT":
@ -878,7 +879,7 @@ void Gam_GetListGames (struct Gam_Games *Games,Gam_Order_t SelectedOrder)
{ {
case Rol_STD: case Rol_STD:
if (asprintf (&HiddenSubQuery," AND gam_games.Hidden='N'") < 0) if (asprintf (&HiddenSubQuery," AND gam_games.Hidden='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
case Rol_NET: case Rol_NET:
case Rol_TCH: case Rol_TCH:
@ -887,10 +888,10 @@ void Gam_GetListGames (struct Gam_Games *Games,Gam_Order_t SelectedOrder)
case Rol_INS_ADM: case Rol_INS_ADM:
case Rol_SYS_ADM: case Rol_SYS_ADM:
if (asprintf (&HiddenSubQuery,"%s","") < 0) if (asprintf (&HiddenSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
@ -919,7 +920,7 @@ void Gam_GetListGames (struct Gam_Games *Games,Gam_Order_t SelectedOrder)
/***** Create list of games *****/ /***** Create list of games *****/
if ((Games->Lst = malloc ((size_t) Games->Num * if ((Games->Lst = malloc ((size_t) Games->Num *
sizeof (*Games->Lst))) == NULL) sizeof (*Games->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the games codes *****/ /***** Get the games codes *****/
for (NumGame = 0; for (NumGame = 0;
@ -929,7 +930,7 @@ void Gam_GetListGames (struct Gam_Games *Games,Gam_Order_t SelectedOrder)
/* Get next game code (row[0]) */ /* Get next game code (row[0]) */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if ((Games->Lst[NumGame].GamCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Games->Lst[NumGame].GamCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
} }
} }
@ -961,7 +962,7 @@ void Gam_GetListSelectedGamCods (struct Gam_Games *Games)
/***** Allocate memory for list of games selected *****/ /***** Allocate memory for list of games selected *****/
MaxSizeListGamCodsSelected = Games->Num * (Cns_MAX_DECIMAL_DIGITS_LONG + 1); MaxSizeListGamCodsSelected = Games->Num * (Cns_MAX_DECIMAL_DIGITS_LONG + 1);
if ((Games->GamCodsSelected = malloc (MaxSizeListGamCodsSelected + 1)) == NULL) if ((Games->GamCodsSelected = malloc (MaxSizeListGamCodsSelected + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get parameter multiple with list of games selected *****/ /***** Get parameter multiple with list of games selected *****/
Par_GetParMultiToText ("GamCod",Games->GamCodsSelected,MaxSizeListGamCodsSelected); Par_GetParMultiToText ("GamCod",Games->GamCodsSelected,MaxSizeListGamCodsSelected);
@ -1154,12 +1155,12 @@ void Gam_AskRemGame (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
/***** Get data of the game from database *****/ /***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
if (!Gam_CheckIfICanEditGames ()) if (!Gam_CheckIfICanEditGames ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show question and button to remove game *****/ /***** Show question and button to remove game *****/
Games.GamCod = Game.GamCod; Games.GamCod = Game.GamCod;
@ -1191,12 +1192,12 @@ void Gam_RemoveGame (void)
/***** Get game code *****/ /***** Get game code *****/
if ((Game.GamCod = Gam_GetParamGameCod ()) <= 0) if ((Game.GamCod = Gam_GetParamGameCod ()) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
/***** Get data of the game from database *****/ /***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
if (!Gam_CheckIfICanEditGames ()) if (!Gam_CheckIfICanEditGames ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Remove game from all tables *****/ /***** Remove game from all tables *****/
Gam_RemoveGameFromAllTables (Game.GamCod); Gam_RemoveGameFromAllTables (Game.GamCod);
@ -1273,12 +1274,12 @@ void Gam_HideGame (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
/***** Get data of the game from database *****/ /***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
if (!Gam_CheckIfICanEditGames ()) if (!Gam_CheckIfICanEditGames ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Hide game *****/ /***** Hide game *****/
DB_QueryUPDATE ("can not hide game", DB_QueryUPDATE ("can not hide game",
@ -1308,12 +1309,12 @@ void Gam_UnhideGame (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
/***** Get data of the game from database *****/ /***** Get data of the game from database *****/
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
if (!Gam_CheckIfICanEditGames ()) if (!Gam_CheckIfICanEditGames ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show game *****/ /***** Show game *****/
DB_QueryUPDATE ("can not show game", DB_QueryUPDATE ("can not show game",
@ -1362,11 +1363,11 @@ void Gam_ListGame (void)
/***** Check if I can list game questions *****/ /***** Check if I can list game questions *****/
if (!Gam_CheckIfICanListGameQuestions ()) if (!Gam_CheckIfICanListGameQuestions ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
/***** Get game data *****/ /***** Get game data *****/
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
@ -1397,7 +1398,7 @@ void Gam_RequestCreatOrEditGame (void)
/***** Check if I can edit games *****/ /***** Check if I can edit games *****/
if (!Gam_CheckIfICanEditGames ()) if (!Gam_CheckIfICanEditGames ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get parameters *****/ /***** Get parameters *****/
ItsANewGame = ((Game.GamCod = Gam_GetParams (&Games)) <= 0); ItsANewGame = ((Game.GamCod = Gam_GetParams (&Games)) <= 0);
@ -1555,7 +1556,7 @@ void Gam_ReceiveFormGame (void)
/***** Check if I can edit games *****/ /***** Check if I can edit games *****/
if (!Gam_CheckIfICanEditGames ()) if (!Gam_CheckIfICanEditGames ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get parameters *****/ /***** Get parameters *****/
ItsANewGame = ((Game.GamCod = Gam_GetParams (&Games)) <= 0); ItsANewGame = ((Game.GamCod = Gam_GetParams (&Games)) <= 0);
@ -1594,7 +1595,7 @@ void Gam_ReceiveFormGame (void)
} }
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
static void Gam_ReceiveGameFieldsFromForm (struct Gam_Game *Game, static void Gam_ReceiveGameFieldsFromForm (struct Gam_Game *Game,
@ -1738,12 +1739,12 @@ void Gam_ReqSelectQstsToAddToGame (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Check if game has matches *****/ /***** Check if game has matches *****/
if (!Gam_CheckIfEditable (&Game)) if (!Gam_CheckIfEditable (&Game))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show form to create a new question in this game *****/ /***** Show form to create a new question in this game *****/
Games.GamCod = Game.GamCod; Games.GamCod = Game.GamCod;
@ -1772,12 +1773,12 @@ void Gam_ListQstsToAddToGame (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Check if game has matches *****/ /***** Check if game has matches *****/
if (!Gam_CheckIfEditable (&Game)) if (!Gam_CheckIfEditable (&Game))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** List several test questions for selection *****/ /***** List several test questions for selection *****/
Games.GamCod = Game.GamCod; Games.GamCod = Game.GamCod;
@ -1802,7 +1803,7 @@ unsigned Gam_GetParamQstInd (void)
long QstInd; long QstInd;
if ((QstInd = Par_GetParToLong ("QstInd")) <= 0) if ((QstInd = Par_GetParToLong ("QstInd")) <= 0)
Lay_WrongQuestionIndexExit (); Err_WrongQuestionIndexExit ();
return (unsigned) QstInd; return (unsigned) QstInd;
} }
@ -1858,7 +1859,7 @@ long Gam_GetQstCodFromQstInd (long GamCod,unsigned QstInd)
GamCod, GamCod,
QstInd); QstInd);
if (QstCod <= 0) if (QstCod <= 0)
Lay_WrongQuestionIndexExit (); Err_WrongQuestionIndexExit ();
return QstCod; return QstCod;
} }
@ -2169,12 +2170,12 @@ void Gam_AddQstsToGame (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Check if game has matches *****/ /***** Check if game has matches *****/
if (!Gam_CheckIfEditable (&Game)) if (!Gam_CheckIfEditable (&Game))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get selected questions *****/ /***** Get selected questions *****/
/* Allocate space for selected question codes */ /* Allocate space for selected question codes */
@ -2195,7 +2196,7 @@ void Gam_AddQstsToGame (void)
/* Get next code */ /* Get next code */
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (sscanf (LongStr,"%ld",&QstCod) != 1) if (sscanf (LongStr,"%ld",&QstCod) != 1)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Check if question is already present in game */ /* Check if question is already present in game */
if (Gam_GetQstIndFromQstCod (Game.GamCod,QstCod) == 0) // This question is not yet in this game if (Gam_GetQstIndFromQstCod (Game.GamCod,QstCod) == 0) // This question is not yet in this game
@ -2244,7 +2245,7 @@ static void Gam_AllocateListSelectedQuestions (struct Gam_Games *Games)
if (!Games->ListQuestions) if (!Games->ListQuestions)
{ {
if ((Games->ListQuestions = malloc (Gam_MAX_BYTES_LIST_SELECTED_QUESTIONS + 1)) == NULL) if ((Games->ListQuestions = malloc (Gam_MAX_BYTES_LIST_SELECTED_QUESTIONS + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Games->ListQuestions[0] = '\0'; Games->ListQuestions[0] = '\0';
} }
} }
@ -2282,12 +2283,12 @@ void Gam_RequestRemoveQstFromGame (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Check if game has matches *****/ /***** Check if game has matches *****/
if (!Gam_CheckIfEditable (&Game)) if (!Gam_CheckIfEditable (&Game))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get question index *****/ /***** Get question index *****/
QstInd = Gam_GetParamQstInd (); QstInd = Gam_GetParamQstInd ();
@ -2326,12 +2327,12 @@ void Gam_RemoveQstFromGame (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Check if game has matches *****/ /***** Check if game has matches *****/
if (!Gam_CheckIfEditable (&Game)) if (!Gam_CheckIfEditable (&Game))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get question index *****/ /***** Get question index *****/
QstInd = Gam_GetParamQstInd (); QstInd = Gam_GetParamQstInd ();
@ -2348,7 +2349,7 @@ void Gam_RemoveQstFromGame (void)
Game.GamCod, Game.GamCod,
QstInd); QstInd);
if (!mysql_affected_rows (&Gbl.mysql)) if (!mysql_affected_rows (&Gbl.mysql))
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Change index of questions greater than this */ /* Change index of questions greater than this */
DB_QueryUPDATE ("can not update indexes of questions in table of answers", DB_QueryUPDATE ("can not update indexes of questions in table of answers",
@ -2397,12 +2398,12 @@ void Gam_MoveUpQst (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Check if game has matches *****/ /***** Check if game has matches *****/
if (!Gam_CheckIfEditable (&Game)) if (!Gam_CheckIfEditable (&Game))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get question index *****/ /***** Get question index *****/
QstIndBottom = Gam_GetParamQstInd (); QstIndBottom = Gam_GetParamQstInd ();
@ -2413,7 +2414,7 @@ void Gam_MoveUpQst (void)
/* Indexes of questions to be exchanged */ /* Indexes of questions to be exchanged */
QstIndTop = Gam_GetPrevQuestionIndexInGame (Game.GamCod,QstIndBottom); QstIndTop = Gam_GetPrevQuestionIndexInGame (Game.GamCod,QstIndBottom);
if (!QstIndTop) if (!QstIndTop)
Lay_WrongQuestionIndexExit (); Err_WrongQuestionIndexExit ();
/* Exchange questions */ /* Exchange questions */
Gam_ExchangeQuestions (Game.GamCod,QstIndTop,QstIndBottom); Gam_ExchangeQuestions (Game.GamCod,QstIndTop,QstIndBottom);
@ -2448,12 +2449,12 @@ void Gam_MoveDownQst (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Check if game has matches *****/ /***** Check if game has matches *****/
if (!Gam_CheckIfEditable (&Game)) if (!Gam_CheckIfEditable (&Game))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get question index *****/ /***** Get question index *****/
QstIndTop = Gam_GetParamQstInd (); QstIndTop = Gam_GetParamQstInd ();
@ -2467,7 +2468,7 @@ void Gam_MoveDownQst (void)
/* Indexes of questions to be exchanged */ /* Indexes of questions to be exchanged */
QstIndBottom = Gam_GetNextQuestionIndexInGame (Game.GamCod,QstIndTop); QstIndBottom = Gam_GetNextQuestionIndexInGame (Game.GamCod,QstIndTop);
if (!QstIndBottom) if (!QstIndBottom)
Lay_WrongQuestionIndexExit (); Err_WrongQuestionIndexExit ();
/* Exchange questions */ /* Exchange questions */
Gam_ExchangeQuestions (Game.GamCod,QstIndTop,QstIndBottom); Gam_ExchangeQuestions (Game.GamCod,QstIndTop,QstIndBottom);
@ -2598,7 +2599,7 @@ void Gam_RequestNewMatch (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Show game *****/ /***** Show game *****/
@ -2845,7 +2846,7 @@ double Gam_GetNumQstsPerCrsGame (Hie_Lvl_Level_t Scope)
" GROUP BY gam_questions.GamCod) AS NumQstsTable", " GROUP BY gam_questions.GamCod) AS NumQstsTable",
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
return 0.0; // Not reached return 0.0; // Not reached
} }
} }
@ -2896,7 +2897,7 @@ void Gam_GetScoreRange (long GamCod,double *MinScore,double *MaxScore)
" GROUP BY tst_answers.QstCod", " GROUP BY tst_answers.QstCod",
GamCod); GamCod);
if (NumAnswers < 2) if (NumAnswers < 2)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/***** Set minimum and maximum scores *****/ /***** Set minimum and maximum scores *****/
*MinScore = *MaxScore = 0.0; *MinScore = *MaxScore = 0.0;

View File

@ -35,6 +35,7 @@
#include "swad_attendance.h" #include "swad_attendance.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_exam_session.h" #include "swad_exam_session.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_game.h" #include "swad_game.h"
@ -503,7 +504,7 @@ void Grp_PutParamsCodGrps (void)
{ {
MaxLengthGrpCods = Gbl.Crs.Grps.LstGrpsSel.NumGrps * (Cns_MAX_DECIMAL_DIGITS_LONG + 1) - 1; MaxLengthGrpCods = Gbl.Crs.Grps.LstGrpsSel.NumGrps * (Cns_MAX_DECIMAL_DIGITS_LONG + 1) - 1;
if ((GrpCods = malloc (MaxLengthGrpCods + 1)) == NULL) if ((GrpCods = malloc (MaxLengthGrpCods + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
GrpCods[0] = '\0'; GrpCods[0] = '\0';
for (NumGrpSel = 0; for (NumGrpSel = 0;
@ -554,7 +555,7 @@ void Grp_GetParCodsSeveralGrpsToShowUsrs (void)
/* Allocate space for list of selected groups */ /* Allocate space for list of selected groups */
if ((Gbl.Crs.Grps.LstGrpsSel.GrpCods = calloc (LstGrpsIBelong.NumGrps, if ((Gbl.Crs.Grps.LstGrpsSel.GrpCods = calloc (LstGrpsIBelong.NumGrps,
sizeof (*Gbl.Crs.Grps.LstGrpsSel.GrpCods))) == NULL) sizeof (*Gbl.Crs.Grps.LstGrpsSel.GrpCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/* Fill list of selected groups with list of groups I belong to */ /* Fill list of selected groups with list of groups I belong to */
for (NumGrp = 0; for (NumGrp = 0;
@ -592,7 +593,7 @@ void Grp_GetParCodsSeveralGrps (void)
{ {
/***** Allocate memory for the list of group codes selected *****/ /***** Allocate memory for the list of group codes selected *****/
if ((ParamLstCodGrps = malloc (MaxSizeLstGrpCods + 1)) == NULL) if ((ParamLstCodGrps = malloc (MaxSizeLstGrpCods + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get parameter with list of groups to list *****/ /***** Get parameter with list of groups to list *****/
Par_GetParMultiToText ("GrpCods",ParamLstCodGrps,MaxSizeLstGrpCods); Par_GetParMultiToText ("GrpCods",ParamLstCodGrps,MaxSizeLstGrpCods);
@ -611,7 +612,7 @@ void Grp_GetParCodsSeveralGrps (void)
/***** Create a list of groups selected from LstCodGrps *****/ /***** Create a list of groups selected from LstCodGrps *****/
if ((Gbl.Crs.Grps.LstGrpsSel.GrpCods = calloc (Gbl.Crs.Grps.LstGrpsSel.NumGrps, if ((Gbl.Crs.Grps.LstGrpsSel.GrpCods = calloc (Gbl.Crs.Grps.LstGrpsSel.NumGrps,
sizeof (*Gbl.Crs.Grps.LstGrpsSel.GrpCods))) == NULL) sizeof (*Gbl.Crs.Grps.LstGrpsSel.GrpCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
for (Ptr = ParamLstCodGrps, NumGrp = 0; for (Ptr = ParamLstCodGrps, NumGrp = 0;
*Ptr; *Ptr;
NumGrp++) NumGrp++)
@ -1068,7 +1069,7 @@ static void Grp_ConstructorListGrpAlreadySelec (struct ListGrpsAlreadySelec **Al
/***** Allocate memory to a list of booleanos that indica if already se ha selected a group of cada type *****/ /***** Allocate memory to a list of booleanos that indica if already se ha selected a group of cada type *****/
if ((*AlreadyExistsGroupOfType = calloc (Gbl.Crs.Grps.GrpTypes.Num, if ((*AlreadyExistsGroupOfType = calloc (Gbl.Crs.Grps.GrpTypes.Num,
sizeof (**AlreadyExistsGroupOfType))) == NULL) sizeof (**AlreadyExistsGroupOfType))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Initialize the list *****/ /***** Initialize the list *****/
for (NumGrpTyp = 0; for (NumGrpTyp = 0;
@ -2406,7 +2407,7 @@ static void Grp_WriteGrpHead (struct GroupType *GrpTyp)
{ {
UniqueId++; UniqueId++;
if (asprintf (&Id,"open_time_%u",UniqueId) < 0) if (asprintf (&Id,"open_time_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BR (); HTM_BR ();
HTM_TxtColonNBSP (Txt_Opening_of_groups); HTM_TxtColonNBSP (Txt_Opening_of_groups);
HTM_SPAN_Begin ("id=\"%s\"",Id); HTM_SPAN_Begin ("id=\"%s\"",Id);
@ -2829,7 +2830,7 @@ void Grp_GetListGrpTypesInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
/***** Create a list of group types *****/ /***** Create a list of group types *****/
if ((Gbl.Crs.Grps.GrpTypes.LstGrpTypes = calloc (Gbl.Crs.Grps.GrpTypes.Num, if ((Gbl.Crs.Grps.GrpTypes.LstGrpTypes = calloc (Gbl.Crs.Grps.GrpTypes.Num,
sizeof (*Gbl.Crs.Grps.GrpTypes.LstGrpTypes))) == NULL) sizeof (*Gbl.Crs.Grps.GrpTypes.LstGrpTypes))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get group types *****/ /***** Get group types *****/
for (NumGrpTyp = 0; for (NumGrpTyp = 0;
@ -2841,7 +2842,7 @@ void Grp_GetListGrpTypesInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
/* Get group type code (row[0]) */ /* Get group type code (row[0]) */
if ((Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongGrpTypExit (); Err_WrongGrpTypExit ();
/* Get group type name (row[1]) */ /* Get group type name (row[1]) */
Str_Copy (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypName,row[1], Str_Copy (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypName,row[1],
@ -2862,7 +2863,7 @@ void Grp_GetListGrpTypesInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
/* Number of groups of this type (row[6]) */ /* Number of groups of this type (row[6]) */
if (sscanf (row[6],"%u",&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) != 1) if (sscanf (row[6],"%u",&Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) != 1)
Lay_ShowErrorAndExit ("Wrong number of groups of a type."); Err_ShowErrorAndExit ("Wrong number of groups of a type.");
/* Add number of groups to total number of groups */ /* Add number of groups to total number of groups */
Gbl.Crs.Grps.GrpTypes.NumGrpsTotal += Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps; Gbl.Crs.Grps.GrpTypes.NumGrpsTotal += Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps;
@ -2959,7 +2960,7 @@ void Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
/***** Create list with groups of this type *****/ /***** Create list with groups of this type *****/
if ((GrpTyp->LstGrps = calloc ((size_t) GrpTyp->NumGrps, if ((GrpTyp->LstGrps = calloc ((size_t) GrpTyp->NumGrps,
sizeof (*GrpTyp->LstGrps))) == NULL) sizeof (*GrpTyp->LstGrps))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the groups of this type *****/ /***** Get the groups of this type *****/
for (NumGrp = 0; for (NumGrp = 0;
@ -2973,7 +2974,7 @@ void Grp_GetListGrpTypesAndGrpsInThisCrs (Grp_WhichGroupTypes_t WhichGroupTypes)
/* Get group code (row[0]) */ /* Get group code (row[0]) */
if ((Grp->GrpCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Grp->GrpCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/* Get group name (row[1]) */ /* Get group name (row[1]) */
Str_Copy (Grp->GrpName,row[1],sizeof (Grp->GrpName) - 1); Str_Copy (Grp->GrpName,row[1],sizeof (Grp->GrpName) - 1);
@ -3123,7 +3124,7 @@ static void Grp_GetDataOfGroupTypeByCod (struct GroupType *GrpTyp)
" WHERE CrsCod=%ld" " WHERE CrsCod=%ld"
" AND GrpTypCod=%ld", " AND GrpTypCod=%ld",
Gbl.Hierarchy.Crs.CrsCod,GrpTyp->GrpTypCod) != 1) Gbl.Hierarchy.Crs.CrsCod,GrpTyp->GrpTypCod) != 1)
Lay_WrongGrpTypExit (); Err_WrongGrpTypExit ();
/***** Get some data of group type *****/ /***** Get some data of group type *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -3154,7 +3155,7 @@ static bool Grp_GetMultipleEnrolmentOfAGroupType (long GrpTypCod)
" FROM grp_types" " FROM grp_types"
" WHERE GrpTypCod=%ld", " WHERE GrpTypCod=%ld",
GrpTypCod) != 1) GrpTypCod) != 1)
Lay_ShowErrorAndExit ("Error when getting type of enrolment."); Err_ShowErrorAndExit ("Error when getting type of enrolment.");
/***** Get multiple enrolment *****/ /***** Get multiple enrolment *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -3215,11 +3216,11 @@ void Grp_GetDataOfGroupByCod (struct GroupData *GrpDat)
/* Get the code of the group type (row[0]) */ /* Get the code of the group type (row[0]) */
if ((GrpDat->GrpTypCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((GrpDat->GrpTypCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongGrpTypExit (); Err_WrongGrpTypExit ();
/* Get the code of the course (row[1]) */ /* Get the code of the course (row[1]) */
if ((GrpDat->CrsCod = Str_ConvertStrCodToLongCod (row[1])) <= 0) if ((GrpDat->CrsCod = Str_ConvertStrCodToLongCod (row[1])) <= 0)
Lay_WrongCourseExit (); Err_WrongCourseExit ();
/* Get the name of the group type (row[2]) */ /* Get the name of the group type (row[2]) */
Str_Copy (GrpDat->GrpTypName,row[2],sizeof (GrpDat->GrpTypName) - 1); Str_Copy (GrpDat->GrpTypName,row[2],sizeof (GrpDat->GrpTypName) - 1);
@ -3270,7 +3271,7 @@ static long Grp_GetTypeOfGroupOfAGroup (long GrpCod)
" WHERE GrpCod=%ld", " WHERE GrpCod=%ld",
GrpCod); GrpCod);
if (GrpTypCod <= 0) if (GrpTypCod <= 0)
Lay_WrongGrpTypExit (); Err_WrongGrpTypExit ();
return GrpTypCod; return GrpTypCod;
} }
@ -3504,14 +3505,14 @@ bool Grp_GetIfAvailableGrpTyp (long GrpTypCod)
{ {
if (asprintf (&SubQueryGrpTypes,"grp_types.GrpTypCod=%ld", if (asprintf (&SubQueryGrpTypes,"grp_types.GrpTypCod=%ld",
GrpTypCod) < 0) GrpTypCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else // all mandatory group types in the current course else // all mandatory group types in the current course
{ {
if (asprintf (&SubQueryGrpTypes,"grp_types.CrsCod=%ld" if (asprintf (&SubQueryGrpTypes,"grp_types.CrsCod=%ld"
" AND grp_types.Mandatory='Y'", " AND grp_types.Mandatory='Y'",
Gbl.Hierarchy.Crs.CrsCod) < 0) Gbl.Hierarchy.Crs.CrsCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/***** Get the number of types of group in this course /***** Get the number of types of group in this course
@ -3644,13 +3645,13 @@ static void Grp_GetLstCodGrpsUsrBelongs (long CrsCod,long GrpTypCod,
/***** Create a list of groups the user belongs to *****/ /***** Create a list of groups the user belongs to *****/
if ((LstGrps->GrpCods = calloc (LstGrps->NumGrps, if ((LstGrps->GrpCods = calloc (LstGrps->NumGrps,
sizeof (*LstGrps->GrpCods))) == NULL) sizeof (*LstGrps->GrpCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
for (NumGrp = 0; for (NumGrp = 0;
NumGrp < LstGrps->NumGrps; NumGrp < LstGrps->NumGrps;
NumGrp++) NumGrp++)
/* Get the code of group (row[0]) */ /* Get the code of group (row[0]) */
if ((LstGrps->GrpCods[NumGrp] = DB_GetNextCode (mysql_res)) <= 0) if ((LstGrps->GrpCods[NumGrp] = DB_GetNextCode (mysql_res)) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
@ -3689,13 +3690,13 @@ void Grp_GetLstCodGrpsWithFileZonesIBelong (struct ListCodGrps *LstGrps)
/***** Create a list of groups I belong to *****/ /***** Create a list of groups I belong to *****/
if ((LstGrps->GrpCods = calloc (LstGrps->NumGrps, if ((LstGrps->GrpCods = calloc (LstGrps->NumGrps,
sizeof (*LstGrps->GrpCods))) == NULL) sizeof (*LstGrps->GrpCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
for (NumGrp = 0; for (NumGrp = 0;
NumGrp < LstGrps->NumGrps; NumGrp < LstGrps->NumGrps;
NumGrp++) NumGrp++)
/* Get the code of group */ /* Get the code of group */
if ((LstGrps->GrpCods[NumGrp] = DB_GetNextCode (mysql_res)) <= 0) if ((LstGrps->GrpCods[NumGrp] = DB_GetNextCode (mysql_res)) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
@ -3992,7 +3993,7 @@ void Grp_ReqRemGroupType (void)
/***** Get the code of the group type *****/ /***** Get the code of the group type *****/
if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0) if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0)
Lay_WrongGrpTypExit (); Err_WrongGrpTypExit ();
/***** Check if this group type has groups *****/ /***** Check if this group type has groups *****/
if ((NumGrps = Grp_CountNumGrpsInThisCrsOfType (Gbl.Crs.Grps.GrpTyp.GrpTypCod))) // Group type has groups ==> Ask for confirmation if ((NumGrps = Grp_CountNumGrpsInThisCrsOfType (Gbl.Crs.Grps.GrpTyp.GrpTypCod))) // Group type has groups ==> Ask for confirmation
@ -4009,7 +4010,7 @@ void Grp_ReqRemGroup (void)
{ {
/***** Get group code *****/ /***** Get group code *****/
if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0) if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/***** Confirm removing *****/ /***** Confirm removing *****/
Grp_AskConfirmRemGrp (); Grp_AskConfirmRemGrp ();
@ -4106,7 +4107,7 @@ void Grp_RemoveGroupType (void)
{ {
/***** Get param with code of group type *****/ /***** Get param with code of group type *****/
if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0) if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0)
Lay_WrongGrpTypExit (); Err_WrongGrpTypExit ();
/***** Remove group type and its groups *****/ /***** Remove group type and its groups *****/
Grp_RemoveGroupTypeCompletely (); Grp_RemoveGroupTypeCompletely ();
@ -4120,7 +4121,7 @@ void Grp_RemoveGroup (void)
{ {
/***** Get param with group code *****/ /***** Get param with group code *****/
if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0) if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/***** Remove group *****/ /***** Remove group *****/
Grp_RemoveGroupCompletely (); Grp_RemoveGroupCompletely ();
@ -4262,7 +4263,7 @@ void Grp_OpenGroup (void)
/***** Get group code *****/ /***** Get group code *****/
if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0) if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/***** Get group data from database *****/ /***** Get group data from database *****/
GrpDat.GrpCod = Gbl.Crs.Grps.GrpCod; GrpDat.GrpCod = Gbl.Crs.Grps.GrpCod;
@ -4297,7 +4298,7 @@ void Grp_CloseGroup (void)
/***** Get group code *****/ /***** Get group code *****/
if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0) if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/***** Get group data from database *****/ /***** Get group data from database *****/
GrpDat.GrpCod = Gbl.Crs.Grps.GrpCod; GrpDat.GrpCod = Gbl.Crs.Grps.GrpCod;
@ -4332,7 +4333,7 @@ void Grp_EnableFileZonesGrp (void)
/***** Get group code *****/ /***** Get group code *****/
if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0) if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/***** Get group data from database *****/ /***** Get group data from database *****/
GrpDat.GrpCod = Gbl.Crs.Grps.GrpCod; GrpDat.GrpCod = Gbl.Crs.Grps.GrpCod;
@ -4368,7 +4369,7 @@ void Grp_DisableFileZonesGrp (void)
/***** Get group code *****/ /***** Get group code *****/
if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0) if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/***** Get group data from database *****/ /***** Get group data from database *****/
GrpDat.GrpCod = Gbl.Crs.Grps.GrpCod; GrpDat.GrpCod = Gbl.Crs.Grps.GrpCod;
@ -4408,7 +4409,7 @@ void Grp_ChangeGroupType (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get group code */ /* Get group code */
if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0) if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/* Get the new group type */ /* Get the new group type */
NewGrpTypCod = Grp_GetParamGrpTypCod (); NewGrpTypCod = Grp_GetParamGrpTypCod ();
@ -4462,7 +4463,7 @@ void Grp_ChangeGroupRoom (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get group code */ /* Get group code */
if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0) if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/* Get the new room */ /* Get the new room */
NewRooCod = Roo_GetParamRooCod (); NewRooCod = Roo_GetParamRooCod ();
@ -4507,7 +4508,7 @@ void Grp_ChangeMandatGrpTyp (void)
/***** Get parameters of the form *****/ /***** Get parameters of the form *****/
/* Get the código of type of group */ /* Get the código of type of group */
if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0) if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0)
Lay_WrongGrpTypExit (); Err_WrongGrpTypExit ();
/* Get the new type of enrolment (mandatory or voluntaria) of this type of group */ /* Get the new type of enrolment (mandatory or voluntaria) of this type of group */
NewMandatoryEnrolment = Par_GetParToBool ("MandatoryEnrolment"); NewMandatoryEnrolment = Par_GetParToBool ("MandatoryEnrolment");
@ -4565,7 +4566,7 @@ void Grp_ChangeMultiGrpTyp (void)
/***** Get parameters from the form *****/ /***** Get parameters from the form *****/
/* Get the code of type of group */ /* Get the code of type of group */
if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0) if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0)
Lay_WrongGrpTypExit (); Err_WrongGrpTypExit ();
/* Get the new type of enrolment (single or multiple) of this type of group */ /* Get the new type of enrolment (single or multiple) of this type of group */
NewMultipleEnrolment = Par_GetParToBool ("MultipleEnrolment"); NewMultipleEnrolment = Par_GetParToBool ("MultipleEnrolment");
@ -4617,7 +4618,7 @@ void Grp_ChangeOpenTimeGrpTyp (void)
/***** Get the code of type of group *****/ /***** Get the code of type of group *****/
if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0) if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0)
Lay_WrongGrpTypExit (); Err_WrongGrpTypExit ();
/***** Get from the database the data of this type of group *****/ /***** Get from the database the data of this type of group *****/
Grp_GetDataOfGroupTypeByCod (&Gbl.Crs.Grps.GrpTyp); Grp_GetDataOfGroupTypeByCod (&Gbl.Crs.Grps.GrpTyp);
@ -4663,7 +4664,7 @@ void Grp_ChangeMaxStdsGrp (void)
/***** Get parameters of the form *****/ /***** Get parameters of the form *****/
/* Get group code */ /* Get group code */
if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0) if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/* Get the new maximum number of students of the group */ /* Get the new maximum number of students of the group */
NewMaxStds = (unsigned) NewMaxStds = (unsigned)
@ -4758,7 +4759,7 @@ void Grp_RenameGroupType (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the group type */ /* Get the code of the group type */
if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0) if ((Gbl.Crs.Grps.GrpTyp.GrpTypCod = Grp_GetParamGrpTypCod ()) <= 0)
Lay_WrongGrpTypExit (); Err_WrongGrpTypExit ();
/* Get the new name for the group type */ /* Get the new name for the group type */
Par_GetParToText ("GrpTypName",NewNameGrpTyp,Grp_MAX_BYTES_GROUP_TYPE_NAME); Par_GetParToText ("GrpTypName",NewNameGrpTyp,Grp_MAX_BYTES_GROUP_TYPE_NAME);
@ -4837,7 +4838,7 @@ void Grp_RenameGroup (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the group */ /* Get the code of the group */
if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0) if ((Gbl.Crs.Grps.GrpCod = Grp_GetParamGrpCod ()) <= 0)
Lay_WrongGroupExit (); Err_WrongGroupExit ();
/* Get the new name for the group */ /* Get the new name for the group */
Par_GetParToText ("GrpName",NewNameGrp,Grp_MAX_BYTES_GROUP_NAME); Par_GetParToText ("GrpName",NewNameGrp,Grp_MAX_BYTES_GROUP_NAME);
@ -4953,7 +4954,7 @@ void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
/***** Allocate memory for the strings with group codes in each type *****/ /***** Allocate memory for the strings with group codes in each type *****/
if ((LstStrCodGrps = calloc (Gbl.Crs.Grps.GrpTypes.Num, if ((LstStrCodGrps = calloc (Gbl.Crs.Grps.GrpTypes.Num,
sizeof (*LstStrCodGrps))) == NULL) sizeof (*LstStrCodGrps))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get lists with the groups that I want in each type /***** Get lists with the groups that I want in each type
in order to count the total number of groups selected *****/ in order to count the total number of groups selected *****/
@ -4964,7 +4965,7 @@ void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
/***** Allocate memory for the list of group codes of this type *****/ /***** Allocate memory for the list of group codes of this type *****/
if ((LstStrCodGrps[NumGrpTyp] = malloc (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps * if ((LstStrCodGrps[NumGrpTyp] = malloc (Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps *
(Cns_MAX_DECIMAL_DIGITS_LONG + 1))) == NULL) (Cns_MAX_DECIMAL_DIGITS_LONG + 1))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the multiple parameter code of group of this type *****/ /***** Get the multiple parameter code of group of this type *****/
snprintf (Param,sizeof (Param),"GrpCod%ld", snprintf (Param,sizeof (Param),"GrpCod%ld",
@ -4990,7 +4991,7 @@ void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
{ {
if ((LstGrpsWanted->GrpCods = calloc (LstGrpsWanted->NumGrps, if ((LstGrpsWanted->GrpCods = calloc (LstGrpsWanted->NumGrps,
sizeof (*LstGrpsWanted->GrpCods))) == NULL) sizeof (*LstGrpsWanted->GrpCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the groups *****/ /***** Get the groups *****/
for (NumGrpTyp = 0, NumGrpWanted = 0; for (NumGrpTyp = 0, NumGrpWanted = 0;

View File

@ -30,6 +30,7 @@
#include <stdlib.h> // For free #include <stdlib.h> // For free
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_hierarchy.h" #include "swad_hierarchy.h"
@ -195,7 +196,7 @@ void Hie_WriteHierarchyInBreadcrumb (void)
/***** Create CSS class of links *****/ /***** Create CSS class of links *****/
if (asprintf (&ClassLink,"BT_LINK %s",ClassTxt) < 0) if (asprintf (&ClassLink,"BT_LINK %s",ClassTxt) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Form to go to the system *****/ /***** Form to go to the system *****/
HTM_DIV_Begin ("class=\"BC %s\"",ClassTxt); HTM_DIV_Begin ("class=\"BC %s\"",ClassTxt);
@ -768,7 +769,7 @@ void Hie_GetAndWriteInsCtrDegAdminBy (long UsrCod,unsigned ColSpan)
} }
break; break;
default: // There are no administrators in other scopes default: // There are no administrators in other scopes
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
HTM_TD_End (); HTM_TD_End ();

View File

@ -32,6 +32,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_calendar.h" #include "swad_calendar.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_holiday.h" #include "swad_holiday.h"
@ -370,7 +371,7 @@ void Hld_GetListHolidays (struct Hld_Holidays *Holidays)
/***** Create list of holidays *****/ /***** Create list of holidays *****/
if ((Holidays->Lst = calloc (Holidays->Num, if ((Holidays->Lst = calloc (Holidays->Num,
sizeof (*Holidays->Lst))) == NULL) sizeof (*Holidays->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the holidays *****/ /***** Get the holidays *****/
for (NumHld = 0; for (NumHld = 0;
@ -384,7 +385,7 @@ void Hld_GetListHolidays (struct Hld_Holidays *Holidays)
/* Get holiday code (row[0]) */ /* Get holiday code (row[0]) */
if ((Hld->HldCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Hld->HldCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongHolidayExit (); Err_WrongHolidayExit ();
/* Get place code (row[1]) */ /* Get place code (row[1]) */
Hld->PlcCod = Str_ConvertStrCodToLongCod (row[1]); Hld->PlcCod = Str_ConvertStrCodToLongCod (row[1]);
@ -398,7 +399,7 @@ void Hld_GetListHolidays (struct Hld_Holidays *Holidays)
/* Get start date (row[4] holds the start date in YYYYMMDD format) */ /* Get start date (row[4] holds the start date in YYYYMMDD format) */
if (!(Dat_GetDateFromYYYYMMDD (&(Hld->StartDate),row[4]))) if (!(Dat_GetDateFromYYYYMMDD (&(Hld->StartDate),row[4])))
Lay_WrongDateExit (); Err_WrongDateExit ();
/* Set / get end date */ /* Set / get end date */
switch (Hld->HldTyp) switch (Hld->HldTyp)
@ -410,7 +411,7 @@ void Hld_GetListHolidays (struct Hld_Holidays *Holidays)
case Hld_NON_SCHOOL_PERIOD: // One or more days case Hld_NON_SCHOOL_PERIOD: // One or more days
/* Get end date (row[5] holds the end date in YYYYMMDD format) */ /* Get end date (row[5] holds the end date in YYYYMMDD format) */
if (!(Dat_GetDateFromYYYYMMDD (&(Hld->EndDate),row[5]))) if (!(Dat_GetDateFromYYYYMMDD (&(Hld->EndDate),row[5])))
Lay_WrongDateExit (); Err_WrongDateExit ();
break; break;
} }
@ -445,7 +446,7 @@ static void Hld_GetDataOfHolidayByCod (struct Hld_Holiday *Hld)
/***** Check if holiday code is correct *****/ /***** Check if holiday code is correct *****/
if (Hld->HldCod <= 0) if (Hld->HldCod <= 0)
Lay_WrongHolidayExit (); Err_WrongHolidayExit ();
/***** Get data of holiday from database *****/ /***** Get data of holiday from database *****/
if (DB_QuerySELECT (&mysql_res,"can not get data of a holiday", if (DB_QuerySELECT (&mysql_res,"can not get data of a holiday",
@ -496,7 +497,7 @@ static void Hld_GetDataOfHolidayByCod (struct Hld_Holiday *Hld)
/* Get start date (row[3] holds the start date in YYYYMMDD format) */ /* Get start date (row[3] holds the start date in YYYYMMDD format) */
if (!(Dat_GetDateFromYYYYMMDD (&(Hld->StartDate),row[3]))) if (!(Dat_GetDateFromYYYYMMDD (&(Hld->StartDate),row[3])))
Lay_WrongDateExit (); Err_WrongDateExit ();
/* Set / get end date */ /* Set / get end date */
switch (Hld->HldTyp) switch (Hld->HldTyp)
@ -508,7 +509,7 @@ static void Hld_GetDataOfHolidayByCod (struct Hld_Holiday *Hld)
case Hld_NON_SCHOOL_PERIOD: // One or more days case Hld_NON_SCHOOL_PERIOD: // One or more days
/* Get end date (row[4] holds the end date in YYYYMMDD format) */ /* Get end date (row[4] holds the end date in YYYYMMDD format) */
if (!(Dat_GetDateFromYYYYMMDD (&(Hld->EndDate),row[4]))) if (!(Dat_GetDateFromYYYYMMDD (&(Hld->EndDate),row[4])))
Lay_WrongDateExit (); Err_WrongDateExit ();
break; break;
} }
@ -542,10 +543,10 @@ static Hld_HolidayType_t Hld_GetTypeOfHoliday (const char *UnsignedStr)
unsigned UnsignedNum; unsigned UnsignedNum;
if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1) if (sscanf (UnsignedStr,"%u",&UnsignedNum) != 1)
Lay_WrongHolidayExit (); Err_WrongHolidayExit ();
if (UnsignedNum >= Hld_NUM_TYPES_HOLIDAY) if (UnsignedNum >= Hld_NUM_TYPES_HOLIDAY)
Lay_WrongHolidayExit (); Err_WrongHolidayExit ();
return (Hld_HolidayType_t) UnsignedNum; return (Hld_HolidayType_t) UnsignedNum;
} }
@ -721,7 +722,7 @@ void Hld_RemoveHoliday (void)
/***** Get holiday code *****/ /***** Get holiday code *****/
if ((Hld_EditingHld->HldCod = Hld_GetParamHldCod ()) <= 0) if ((Hld_EditingHld->HldCod = Hld_GetParamHldCod ()) <= 0)
Lay_WrongHolidayExit (); Err_WrongHolidayExit ();
/***** Get data of the holiday from database *****/ /***** Get data of the holiday from database *****/
Hld_GetDataOfHolidayByCod (Hld_EditingHld); Hld_GetDataOfHolidayByCod (Hld_EditingHld);
@ -753,7 +754,7 @@ void Hld_ChangeHolidayPlace (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the holiday */ /* Get the code of the holiday */
if ((Hld_EditingHld->HldCod = Hld_GetParamHldCod ()) <= 0) if ((Hld_EditingHld->HldCod = Hld_GetParamHldCod ()) <= 0)
Lay_WrongHolidayExit (); Err_WrongHolidayExit ();
/* Get the new place for the holiday */ /* Get the new place for the holiday */
NewPlace.PlcCod = Plc_GetParamPlcCod (); NewPlace.PlcCod = Plc_GetParamPlcCod ();
@ -794,7 +795,7 @@ void Hld_ChangeHolidayType (void)
/***** Get the code of the holiday *****/ /***** Get the code of the holiday *****/
if ((Hld_EditingHld->HldCod = Hld_GetParamHldCod ()) <= 0) if ((Hld_EditingHld->HldCod = Hld_GetParamHldCod ()) <= 0)
Lay_WrongHolidayExit (); Err_WrongHolidayExit ();
/***** Get from the database the data of the holiday *****/ /***** Get from the database the data of the holiday *****/
Hld_GetDataOfHolidayByCod (Hld_EditingHld); Hld_GetDataOfHolidayByCod (Hld_EditingHld);
@ -853,7 +854,7 @@ static void Hld_ChangeDate (Hld_StartOrEndDate_t StartOrEndDate)
/***** Get the code of the holiday *****/ /***** Get the code of the holiday *****/
if ((Hld_EditingHld->HldCod = Hld_GetParamHldCod ()) <= 0) if ((Hld_EditingHld->HldCod = Hld_GetParamHldCod ()) <= 0)
Lay_WrongHolidayExit (); Err_WrongHolidayExit ();
/***** Get from the database the data of the holiday *****/ /***** Get from the database the data of the holiday *****/
Hld_GetDataOfHolidayByCod (Hld_EditingHld); Hld_GetDataOfHolidayByCod (Hld_EditingHld);
@ -926,7 +927,7 @@ void Hld_RenameHoliday (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the holiday */ /* Get the code of the holiday */
if ((Hld_EditingHld->HldCod = Hld_GetParamHldCod ()) <= 0) if ((Hld_EditingHld->HldCod = Hld_GetParamHldCod ()) <= 0)
Lay_WrongHolidayExit (); Err_WrongHolidayExit ();
/* Get the new name for the holiday */ /* Get the new name for the holiday */
Par_GetParToText ("Name",NewHldName,Hld_MAX_BYTES_HOLIDAY_NAME); Par_GetParToText ("Name",NewHldName,Hld_MAX_BYTES_HOLIDAY_NAME);
@ -1214,11 +1215,11 @@ static void Hld_EditingHolidayConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Hld_EditingHld != NULL) if (Hld_EditingHld != NULL)
Lay_WrongHolidayExit (); Err_WrongHolidayExit ();
/***** Allocate memory for holiday *****/ /***** Allocate memory for holiday *****/
if ((Hld_EditingHld = malloc (sizeof (*Hld_EditingHld))) == NULL) if ((Hld_EditingHld = malloc (sizeof (*Hld_EditingHld))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset place *****/ /***** Reset place *****/
Hld_EditingHld->HldCod = -1L; Hld_EditingHld->HldCod = -1L;

View File

@ -32,6 +32,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_department.h" #include "swad_department.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_forum.h" #include "swad_forum.h"
#include "swad_global.h" #include "swad_global.h"
@ -636,7 +637,7 @@ static unsigned Ind_GetTableOfCourses (const struct Ind_Indicators *Indicators,
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -723,7 +724,7 @@ static void Ind_GetNumCoursesWithIndicators (unsigned NumCrssWithIndicatorYes[1
/* Get course code (row[2]) */ /* Get course code (row[2]) */
if ((CrsCod = Str_ConvertStrCodToLongCod (row[2])) < 0) if ((CrsCod = Str_ConvertStrCodToLongCod (row[2])) < 0)
Lay_WrongCourseExit (); Err_WrongCourseExit ();
/* Get stored number of indicators of this course */ /* Get stored number of indicators of this course */
NumIndicators = Ind_GetAndUpdateNumIndicatorsCrs (CrsCod); NumIndicators = Ind_GetAndUpdateNumIndicatorsCrs (CrsCod);
@ -991,7 +992,7 @@ static void Ind_ShowTableOfCoursesWithIndicators (const struct Ind_Indicators *I
/* Get course code (row[2]) */ /* Get course code (row[2]) */
if ((CrsCod = Str_ConvertStrCodToLongCod (row[2])) < 0) if ((CrsCod = Str_ConvertStrCodToLongCod (row[2])) < 0)
Lay_WrongCourseExit (); Err_WrongCourseExit ();
/* Get stored number of indicators of this course */ /* Get stored number of indicators of this course */
NumIndicators = Ind_GetAndUpdateNumIndicatorsCrs (CrsCod); NumIndicators = Ind_GetAndUpdateNumIndicatorsCrs (CrsCod);
@ -1385,7 +1386,7 @@ int Ind_GetNumIndicatorsCrsFromDB (long CrsCod)
/***** Get number of indicators (row[0]) *****/ /***** Get number of indicators (row[0]) *****/
if (sscanf (row[0],"%d",&NumIndicatorsFromDB) != 1) if (sscanf (row[0],"%d",&NumIndicatorsFromDB) != 1)
Lay_ShowErrorAndExit ("Error when getting number of indicators."); Err_ShowErrorAndExit ("Error when getting number of indicators.");
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/

View File

@ -36,6 +36,7 @@
#include "swad_action.h" #include "swad_action.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -1834,7 +1835,7 @@ static bool Inf_CheckAndShowRichTxt (void)
/* Open Markdown file for writing */ /* Open Markdown file for writing */
if ((FileMD = fopen (PathFileMD,"wb")) == NULL) if ((FileMD = fopen (PathFileMD,"wb")) == NULL)
Lay_ShowErrorAndExit ("Can not create temporary Markdown file."); Err_ShowErrorAndExit ("Can not create temporary Markdown file.");
/* Write text into Markdown file */ /* Write text into Markdown file */
fprintf (FileMD,"%s",TxtMD); fprintf (FileMD,"%s",TxtMD);
@ -1877,7 +1878,7 @@ static bool Inf_CheckAndShowRichTxt (void)
PathFileHTML); PathFileHTML);
ReturnCode = system (Command); ReturnCode = system (Command);
if (ReturnCode == -1) if (ReturnCode == -1)
Lay_ShowErrorAndExit ("Error when running command to convert from Markdown to HTML."); Err_ShowErrorAndExit ("Error when running command to convert from Markdown to HTML.");
/***** Remove Markdown file *****/ /***** Remove Markdown file *****/
unlink (PathFileMD); unlink (PathFileMD);
@ -1885,7 +1886,7 @@ static bool Inf_CheckAndShowRichTxt (void)
/***** Copy HTML file just created to HTML output *****/ /***** Copy HTML file just created to HTML output *****/
/* Open temporary HTML file for reading */ /* Open temporary HTML file for reading */
if ((FileHTML = fopen (PathFileHTML,"rb")) == NULL) if ((FileHTML = fopen (PathFileHTML,"rb")) == NULL)
Lay_ShowErrorAndExit ("Can not open temporary HTML file."); Err_ShowErrorAndExit ("Can not open temporary HTML file.");
/* Copy from temporary HTML file to output file */ /* Copy from temporary HTML file to output file */
Fil_FastCopyOfOpenFiles (FileHTML,Gbl.F.Out); Fil_FastCopyOfOpenFiles (FileHTML,Gbl.F.Out);
@ -2261,7 +2262,7 @@ void Inf_ReceivePagInfo (void)
} }
} }
else else
Lay_ShowErrorAndExit ("Can not unzip file."); Err_ShowErrorAndExit ("Can not unzip file.");
} }
else else
Ale_ShowAlert (Ale_ERROR,"Error uploading file."); Ale_ShowAlert (Ale_ERROR,"Error uploading file.");

View File

@ -32,6 +32,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_department.h" #include "swad_department.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_figure_cache.h" #include "swad_figure_cache.h"
#include "swad_form.h" #include "swad_form.h"
@ -651,7 +652,7 @@ void Ins_GetBasicListOfInstitutions (long CtyCod)
/***** Create list with institutions *****/ /***** Create list with institutions *****/
if ((Gbl.Hierarchy.Inss.Lst = calloc ((size_t) Gbl.Hierarchy.Inss.Num, if ((Gbl.Hierarchy.Inss.Lst = calloc ((size_t) Gbl.Hierarchy.Inss.Num,
sizeof (*Gbl.Hierarchy.Inss.Lst))) == NULL) sizeof (*Gbl.Hierarchy.Inss.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the institutions *****/ /***** Get the institutions *****/
for (NumIns = 0; for (NumIns = 0;
@ -733,7 +734,7 @@ void Ins_GetFullListOfInstitutions (long CtyCod)
/***** Create list with institutions *****/ /***** Create list with institutions *****/
if ((Gbl.Hierarchy.Inss.Lst = calloc ((size_t) Gbl.Hierarchy.Inss.Num, if ((Gbl.Hierarchy.Inss.Lst = calloc ((size_t) Gbl.Hierarchy.Inss.Num,
sizeof (*Gbl.Hierarchy.Inss.Lst))) == NULL) sizeof (*Gbl.Hierarchy.Inss.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the institutions *****/ /***** Get the institutions *****/
for (NumIns = 0; for (NumIns = 0;
@ -835,14 +836,14 @@ static void Ins_GetDataOfInstitFromRow (struct Ins_Instit *Ins,MYSQL_ROW row)
{ {
/***** Get institution code (row[0]) *****/ /***** Get institution code (row[0]) *****/
if ((Ins->InsCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Ins->InsCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongInstitExit (); Err_WrongInstitExit ();
/***** Get country code (row[1]) *****/ /***** Get country code (row[1]) *****/
Ins->CtyCod = Str_ConvertStrCodToLongCod (row[1]); Ins->CtyCod = Str_ConvertStrCodToLongCod (row[1]);
/***** Get institution status (row[2]) *****/ /***** Get institution status (row[2]) *****/
if (sscanf (row[2],"%u",&(Ins->Status)) != 1) if (sscanf (row[2],"%u",&(Ins->Status)) != 1)
Lay_WrongStatusExit (); Err_WrongStatusExit ();
/***** Get requester user's code (row[3]) *****/ /***** Get requester user's code (row[3]) *****/
Ins->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[3]); Ins->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[3]);
@ -1030,7 +1031,7 @@ void Ins_WriteSelectorOfInstitution (void)
/* Get institution code (row[0]) */ /* Get institution code (row[0]) */
if ((InsCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((InsCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongInstitExit (); Err_WrongInstitExit ();
/* Write option */ /* Write option */
HTM_OPTION (HTM_Type_LONG,&InsCod, HTM_OPTION (HTM_Type_LONG,&InsCod,
@ -1314,7 +1315,7 @@ long Ins_GetAndCheckParamOtherInsCod (long MinCodAllowed)
/***** Get and check parameter with code of institution *****/ /***** Get and check parameter with code of institution *****/
if ((InsCod = Ins_GetParamOtherInsCod ()) < MinCodAllowed) if ((InsCod = Ins_GetParamOtherInsCod ()) < MinCodAllowed)
Lay_WrongInstitExit (); Err_WrongInstitExit ();
return InsCod; return InsCod;
} }
@ -1346,7 +1347,7 @@ void Ins_RemoveInstitution (void)
/***** Check if this institution has users *****/ /***** Check if this institution has users *****/
if (!Ins_CheckIfICanEdit (Ins_EditingIns)) if (!Ins_CheckIfICanEdit (Ins_EditingIns))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
else if (Ctr_GetNumCtrsInIns (Ins_EditingIns->InsCod)) else if (Ctr_GetNumCtrsInIns (Ins_EditingIns->InsCod))
// Institution has centers ==> don't remove // Institution has centers ==> don't remove
Ale_CreateAlert (Ale_WARNING,NULL, Ale_CreateAlert (Ale_WARNING,NULL,
@ -1618,7 +1619,7 @@ void Ins_ChangeInsStatus (void)
(unsigned long) Ins_MAX_STATUS, (unsigned long) Ins_MAX_STATUS,
(unsigned long) Ins_WRONG_STATUS); (unsigned long) Ins_WRONG_STATUS);
if (Status == Ins_WRONG_STATUS) if (Status == Ins_WRONG_STATUS)
Lay_WrongStatusExit (); Err_WrongStatusExit ();
StatusTxt = Ins_GetStatusTxtFromStatusBits (Status); StatusTxt = Ins_GetStatusTxtFromStatusBits (Status);
Status = Ins_GetStatusBitsFromStatusTxt (StatusTxt); // New status Status = Ins_GetStatusBitsFromStatusTxt (StatusTxt); // New status
@ -1702,7 +1703,7 @@ static void Ins_PutFormToCreateInstitution (void)
else if (Gbl.Usrs.Me.Role.Max >= Rol_GST) else if (Gbl.Usrs.Me.Role.Max >= Rol_GST)
Frm_BeginForm (ActReqIns); Frm_BeginForm (ActReqIns);
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Begin box and table *****/ /***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_New_institution, Box_BoxTableBegin (NULL,Txt_New_institution,
@ -2174,11 +2175,11 @@ static void Ins_EditingInstitutionConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Ins_EditingIns != NULL) if (Ins_EditingIns != NULL)
Lay_WrongInstitExit (); Err_WrongInstitExit ();
/***** Allocate memory for institution *****/ /***** Allocate memory for institution *****/
if ((Ins_EditingIns = malloc (sizeof (*Ins_EditingIns))) == NULL) if ((Ins_EditingIns = malloc (sizeof (*Ins_EditingIns))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset institution *****/ /***** Reset institution *****/
Ins_EditingIns->InsCod = -1L; Ins_EditingIns->InsCod = -1L;

View File

@ -33,6 +33,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_department.h" #include "swad_department.h"
#include "swad_error.h"
#include "swad_figure_cache.h" #include "swad_figure_cache.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -264,7 +265,7 @@ static void InsCfg_GetCoordAndZoom (struct Coordinates *Coord,unsigned *Zoom)
" AND Latitude<>0" " AND Latitude<>0"
" AND Longitude<>0", " AND Longitude<>0",
Gbl.Hierarchy.Ins.InsCod) < 0) Gbl.Hierarchy.Ins.InsCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Map_GetCoordAndZoom (Coord,Zoom,Query); Map_GetCoordAndZoom (Coord,Zoom,Query);
free (Query); free (Query);
} }

View File

@ -39,6 +39,7 @@
#include "swad_config.h" #include "swad_config.h"
#include "swad_connected.h" #include "swad_connected.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_exam_session.h" #include "swad_exam_session.h"
#include "swad_firewall.h" #include "swad_firewall.h"
#include "swad_follow.h" #include "swad_follow.h"
@ -86,8 +87,6 @@ extern struct Globals Gbl;
/***************************** Private prototypes ****************************/ /***************************** Private prototypes ****************************/
/*****************************************************************************/ /*****************************************************************************/
static void Lay_WriteEndOfPage (void);
static void Lay_WritePageTitle (void); static void Lay_WritePageTitle (void);
static void Lay_WriteRedirToMyLangOnLogIn (void); static void Lay_WriteRedirToMyLangOnLogIn (void);
@ -107,7 +106,6 @@ static void Lay_WriteTitleAction (void);
static void Lay_ShowLeftColumn (void); static void Lay_ShowLeftColumn (void);
static void Lay_ShowRightColumn (void); static void Lay_ShowRightColumn (void);
static void Lay_WriteAboutZone (void);
static void Lay_WriteFootFromHTMLFile (void); static void Lay_WriteFootFromHTMLFile (void);
static void Lay_HelpTextEditor (const char *Text,const char *InlineMath,const char *Equation); static void Lay_HelpTextEditor (const char *Text,const char *InlineMath,const char *Equation);
@ -412,7 +410,7 @@ void Lay_WriteHTTPStatus204NoContent (void)
/************************ Write the end of the page **************************/ /************************ Write the end of the page **************************/
/*****************************************************************************/ /*****************************************************************************/
static void Lay_WriteEndOfPage (void) void Lay_WriteEndOfPage (void)
{ {
if (!Gbl.Layout.DivsEndWritten) if (!Gbl.Layout.DivsEndWritten)
{ {
@ -1369,556 +1367,11 @@ void Lay_PutContextualCheckbox (Act_Action_t NextAction,
// jumping to the next line on narrow screens // jumping to the next line on narrow screens
} }
/*****************************************************************************/
/********** Write error message and exit when not enough memory **************/
/*****************************************************************************/
void Lay_NotEnoughMemoryExit (void)
{
Lay_ShowErrorAndExit ("Not enough memory.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong action ****************/
/*****************************************************************************/
void Lay_WrongActionExit (void)
{
Lay_ShowErrorAndExit ("Wrong action.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong scope *****************/
/*****************************************************************************/
void Lay_WrongScopeExit (void)
{
Lay_ShowErrorAndExit ("Wrong scope.");
}
/*****************************************************************************/
/********* Write error message and exit *********/
/********* when wrong country, institution, center, degree or course *********/
/*****************************************************************************/
void Lay_WrongCountrExit (void)
{
Lay_ShowErrorAndExit ("Wrong country.");
}
void Lay_WrongInstitExit (void)
{
Lay_ShowErrorAndExit ("Wrong institution.");
}
void Lay_WrongCenterExit (void)
{
Lay_ShowErrorAndExit ("Wrong center.");
}
void Lay_WrongDegTypExit (void)
{
Lay_ShowErrorAndExit ("Wrong degree type.");
}
void Lay_WrongDegreeExit (void)
{
Lay_ShowErrorAndExit ("Wrong degree.");
}
void Lay_WrongCourseExit (void)
{
Lay_ShowErrorAndExit ("Wrong course.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong department **************/
/*****************************************************************************/
void Lay_WrongDepartmentExit (void)
{
Lay_ShowErrorAndExit ("Wrong department.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong place ****************/
/*****************************************************************************/
void Lay_WrongPlaceExit (void)
{
Lay_ShowErrorAndExit ("Wrong department.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong order *****************/
/*****************************************************************************/
void Lay_WrongOrderExit (void)
{
Lay_ShowErrorAndExit ("Wrong order.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong status ****************/
/*****************************************************************************/
void Lay_WrongStatusExit (void)
{
Lay_ShowErrorAndExit ("Wrong status.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong date ****************/
/*****************************************************************************/
void Lay_WrongDateExit (void)
{
Lay_ShowErrorAndExit ("Wrong date.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong plugin ***************/
/*****************************************************************************/
void Lay_WrongPluginExit (void)
{
Lay_ShowErrorAndExit ("Wrong plugin.");
}
/*****************************************************************************/
/********** Write error message and exit when wrong items list/item **********/
/*****************************************************************************/
void Lay_WrongItemsListExit (void)
{
Lay_ShowErrorAndExit ("Wrong items list.");
}
void Lay_WrongItemExit (void)
{
Lay_ShowErrorAndExit ("Wrong item.");
}
/*****************************************************************************/
/********** Write error message and exit when wrong syllabus format **********/
/*****************************************************************************/
void Lay_WrongSyllabusFormatExit (void)
{
Lay_ShowErrorAndExit ("Wrong syllabus format.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong file browser ************/
/*****************************************************************************/
void Lay_WrongFileBrowserExit (void)
{
Lay_ShowErrorAndExit ("Wrong file browser.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong copy source *************/
/*****************************************************************************/
void Lay_WrongCopySrcExit (void)
{
Lay_ShowErrorAndExit ("The copy source does not exist.");
}
/*****************************************************************************/
/********** Write error message and exit when wrong number of rows ***********/
/*****************************************************************************/
void Lay_WrongNumberOfRowsExit (void)
{
Lay_ShowErrorAndExit ("Wrong number of rows.");
}
/*****************************************************************************/
/********* Write error message and exit when wrong group type/group **********/
/*****************************************************************************/
void Lay_WrongGrpTypExit (void)
{
Lay_ShowErrorAndExit ("Wrong group type.");
}
void Lay_WrongGroupExit (void)
{
Lay_ShowErrorAndExit ("Wrong group.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong order *****************/
/*****************************************************************************/
void Lay_WrongTypeOfViewExit (void)
{
Lay_ShowErrorAndExit ("Wrong type of view.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong banner/link *************/
/*****************************************************************************/
void Lay_WrongBannerExit (void)
{
Lay_ShowErrorAndExit ("Wrong banner.");
}
void Lay_WrongLinkExit (void)
{
Lay_ShowErrorAndExit ("Wrong link.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong holiday ***************/
/*****************************************************************************/
void Lay_WrongHolidayExit (void)
{
Lay_ShowErrorAndExit ("Wrong holiday.");
}
/*****************************************************************************/
/********** Write error message and exit when wrong building/room ************/
/*****************************************************************************/
void Lay_WrongBuildingExit (void)
{
Lay_ShowErrorAndExit ("Wrong building.");
}
void Lay_WrongRoomExit (void)
{
Lay_ShowErrorAndExit ("Wrong room.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong record field ************/
/*****************************************************************************/
void Lay_WrongRecordFieldExit (void)
{
Lay_ShowErrorAndExit ("Wrong record field.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong assignment **************/
/*****************************************************************************/
void Lay_WrongAssignmentExit (void)
{
Lay_ShowErrorAndExit ("Wrong assignment.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong project ***************/
/*****************************************************************************/
void Lay_WrongProjectExit (void)
{
Lay_ShowErrorAndExit ("Wrong project.");
}
/*****************************************************************************/
/********** Write error message and exit when wrong call for exam ************/
/*****************************************************************************/
void Lay_WrongCallForExamExit (void)
{
Lay_ShowErrorAndExit ("Wrong call for exam.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong tag *****************/
/*****************************************************************************/
void Lay_WrongTagExit (void)
{
Lay_ShowErrorAndExit ("Wrong tag.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong test *****************/
/*****************************************************************************/
void Lay_WrongTestExit (void)
{
Lay_ShowErrorAndExit ("Wrong test.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong exam *****************/
/*****************************************************************************/
void Lay_WrongExamExit (void)
{
Lay_ShowErrorAndExit ("Wrong exam.");
}
/*****************************************************************************/
/********* Write error message and exit when wrong set of questions **********/
/*****************************************************************************/
void Lay_WrongSetExit (void)
{
Lay_ShowErrorAndExit ("Wrong set of questions.");
}
/*****************************************************************************/
/************* Write error message and exit when wrong question **************/
/*****************************************************************************/
void Lay_WrongQuestionExit (void)
{
Lay_ShowErrorAndExit ("Wrong question.");
}
void Lay_WrongQuestionIndexExit (void)
{
Lay_ShowErrorAndExit ("Wrong question index.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong answer ***************/
/*****************************************************************************/
void Lay_WrongAnswerExit (void)
{
Lay_ShowErrorAndExit ("Wrong answer.");
}
void Lay_WrongAnswerIndexExit (void)
{
Lay_ShowErrorAndExit ("Wrong answer index.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong exam session ************/
/*****************************************************************************/
void Lay_WrongExamSessionExit (void)
{
Lay_ShowErrorAndExit ("Wrong exam session.");
}
/*****************************************************************************/
/************ Write error message and exit when wrong game/match *************/
/*****************************************************************************/
void Lay_WrongGameExit (void)
{
Lay_ShowErrorAndExit ("Wrong game.");
}
void Lay_WrongMatchExit (void)
{
Lay_ShowErrorAndExit ("Wrong match.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong survey ***************/
/*****************************************************************************/
void Lay_WrongSurveyExit (void)
{
Lay_ShowErrorAndExit ("Wrong survey.");
}
/*****************************************************************************/
/*** Write error message and exit when wrong parameter "who" (which users) ***/
/*****************************************************************************/
void Lay_WrongWhoExit (void)
{
Lay_ShowErrorAndExit ("Wrong parameter who.");
}
/*****************************************************************************/
/**************** Write error message and exit when wrong event **************/
/*****************************************************************************/
void Lay_WrongEventExit (void)
{
Lay_ShowErrorAndExit ("Wrong event.");
}
/*****************************************************************************/
/*********** Write error message and exit when wrong announcement ************/
/*****************************************************************************/
void Lay_WrongAnnouncementExit (void)
{
Lay_ShowErrorAndExit ("Wrong announcement.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong notice ***************/
/*****************************************************************************/
void Lay_WrongNoticeExit (void)
{
Lay_ShowErrorAndExit ("Wrong notice.");
}
/*****************************************************************************/
/************ Write error message and exit when wrong forum/post *************/
/*****************************************************************************/
void Lay_WrongForumExit (void)
{
Lay_ShowErrorAndExit ("Wrong forum.");
}
void Lay_WrongPostExit (void)
{
Lay_ShowErrorAndExit ("Wrong post.");
}
/*****************************************************************************/
/************** Write error message and exit when wrong message **************/
/*****************************************************************************/
void Lay_WrongMessageExit (void)
{
Lay_ShowErrorAndExit ("Wrong message.");
}
/*****************************************************************************/
/************ Write error message and exit when wrong mail domain ************/
/*****************************************************************************/
void Lay_WrongMailDomainExit (void)
{
Lay_ShowErrorAndExit ("Wrong mail domain.");
}
/*****************************************************************************/
/************* Show error message about wrong role and exit ******************/
/*****************************************************************************/
void Lay_WrongRoleExit (void)
{
Lay_ShowErrorAndExit ("Wrong role.");
}
/*****************************************************************************/
/************ Write error message and exit when user does not exists *********/
/*****************************************************************************/
void Lay_WrongUserExit (void)
{
extern const char *Txt_The_user_does_not_exist;
Lay_ShowErrorAndExit (Txt_The_user_does_not_exist);
}
/*****************************************************************************/
/*** Write error message and exit when no permission to perform an action ****/
/*****************************************************************************/
void Lay_NoPermissionExit (void)
{
extern const char *Txt_You_dont_have_permission_to_perform_this_action;
Lay_ShowErrorAndExit (Txt_You_dont_have_permission_to_perform_this_action);
}
/*****************************************************************************/
/******* Write error message, close files, remove lock file, and exit ********/
/*****************************************************************************/
void Lay_ShowErrorAndExit (const char *Txt)
{
/***** Unlock tables if locked *****/
if (Gbl.DB.LockedTables)
{
Gbl.DB.LockedTables = false;
mysql_query (&Gbl.mysql,"UNLOCK TABLES");
}
if (!Gbl.WebService.IsWebService)
{
/****** If start of page is not written yet, do it now ******/
if (!Gbl.Layout.HTMLStartWritten)
Lay_WriteStartOfPage ();
/***** Write possible error message *****/
if (Txt)
Ale_ShowAlert (Ale_ERROR,Txt);
/***** Finish the page, except </body> and </html> *****/
Lay_WriteEndOfPage ();
}
/***** Free memory and close all the open files *****/
Gbl_Cleanup ();
/***** Page is generated (except </body> and </html>).
Compute time to generate page *****/
if (!Gbl.Action.IsAJAXAutoRefresh)
Gbl.TimeGenerationInMicroseconds = (long) Sta_ComputeTimeToGeneratePage ();
if (Gbl.WebService.IsWebService) // Serving a plugin request
{
/***** Log access *****/
Gbl.TimeSendInMicroseconds = 0L;
Log_LogAccess (Txt);
}
else
{
/***** Send page.
The HTML output is now in Gbl.F.Out file ==>
==> copy it to standard output *****/
rewind (Gbl.F.Out);
Fil_FastCopyOfOpenFiles (Gbl.F.Out,stdout);
Fil_CloseAndRemoveFileForHTMLOutput ();
if (!Gbl.Action.IsAJAXAutoRefresh)
{
/***** Compute time to send page *****/
Sta_ComputeTimeToSendPage ();
/***** Log access *****/
Log_LogAccess (Txt);
/***** Update last data for next time *****/
if (Gbl.Usrs.Me.Logged)
{
Usr_UpdateMyLastData ();
Crs_UpdateCrsLast ();
}
/***** End the output *****/
if (!Gbl.Layout.HTMLEndWritten)
{
// Here Gbl.F.Out is stdout
if (Act_GetBrowserTab (Gbl.Action.Act) == Act_BRW_1ST_TAB)
Lay_WriteAboutZone ();
HTM_Txt ("</body>\n"
"</html>\n");
Gbl.Layout.HTMLEndWritten = true;
}
}
}
/***** Close database connection *****/
DB_CloseDBConnection ();
/***** Exit *****/
if (Gbl.WebService.IsWebService)
API_Exit (Txt);
exit (0);
}
/*****************************************************************************/ /*****************************************************************************/
/***************** Write about zone at the end of the page *******************/ /***************** Write about zone at the end of the page *******************/
/*****************************************************************************/ /*****************************************************************************/
static void Lay_WriteAboutZone (void) void Lay_WriteAboutZone (void)
{ {
extern const char *Txt_About_X; extern const char *Txt_About_X;
extern const char *Txt_Questions_and_problems; extern const char *Txt_Questions_and_problems;

View File

@ -50,6 +50,8 @@ void Lay_WriteStartOfPage (void);
void Lay_WriteHTTPStatus204NoContent (void); void Lay_WriteHTTPStatus204NoContent (void);
void Lay_WriteEndOfPage (void);
void Lay_PutContextualLinkOnlyIcon (Act_Action_t NextAction,const char *Anchor, void Lay_PutContextualLinkOnlyIcon (Act_Action_t NextAction,const char *Anchor,
void (*FuncParams) (void *Args),void *Args, void (*FuncParams) (void *Args),void *Args,
const char *Icon, const char *Icon,
@ -69,63 +71,7 @@ void Lay_PutContextualCheckbox (Act_Action_t NextAction,
bool Checked,bool Disabled, bool Checked,bool Disabled,
const char *Title,const char *Text); const char *Title,const char *Text);
void Lay_NotEnoughMemoryExit (void); void Lay_WriteAboutZone (void);
void Lay_WrongActionExit (void);
void Lay_WrongScopeExit (void);
void Lay_WrongCountrExit (void);
void Lay_WrongInstitExit (void);
void Lay_WrongCenterExit (void);
void Lay_WrongDegTypExit (void);
void Lay_WrongDegreeExit (void);
void Lay_WrongCourseExit (void);
void Lay_WrongDepartmentExit (void);
void Lay_WrongPlaceExit (void);
void Lay_WrongOrderExit (void);
void Lay_WrongStatusExit (void);
void Lay_WrongDateExit (void);
void Lay_WrongPluginExit (void);
void Lay_WrongItemsListExit (void);
void Lay_WrongItemExit (void);
void Lay_WrongSyllabusFormatExit (void);
void Lay_WrongFileBrowserExit (void);
void Lay_WrongCopySrcExit (void);
void Lay_WrongNumberOfRowsExit (void);
void Lay_WrongGrpTypExit (void);
void Lay_WrongGroupExit (void);
void Lay_WrongTypeOfViewExit (void);
void Lay_WrongBannerExit (void);
void Lay_WrongLinkExit (void);
void Lay_WrongHolidayExit (void);
void Lay_WrongBuildingExit (void);
void Lay_WrongRoomExit (void);
void Lay_WrongRecordFieldExit (void);
void Lay_WrongAssignmentExit (void);
void Lay_WrongProjectExit (void);
void Lay_WrongCallForExamExit (void);
void Lay_WrongTagExit (void);
void Lay_WrongTestExit (void);
void Lay_WrongExamExit (void);
void Lay_WrongSetExit (void);
void Lay_WrongQuestionExit (void);
void Lay_WrongQuestionIndexExit (void);
void Lay_WrongAnswerExit (void);
void Lay_WrongAnswerIndexExit (void);
void Lay_WrongExamSessionExit (void);
void Lay_WrongGameExit (void);
void Lay_WrongMatchExit (void);
void Lay_WrongSurveyExit (void);
void Lay_WrongWhoExit (void);
void Lay_WrongEventExit (void);
void Lay_WrongAnnouncementExit (void);
void Lay_WrongNoticeExit (void);
void Lay_WrongForumExit (void);
void Lay_WrongPostExit (void);
void Lay_WrongMessageExit (void);
void Lay_WrongMailDomainExit (void);
void Lay_WrongRoleExit (void);
void Lay_WrongUserExit (void);
void Lay_NoPermissionExit (void);
void Lay_ShowErrorAndExit (const char *Txt);
void Lay_RefreshNotifsAndConnected (void); void Lay_RefreshNotifsAndConnected (void);
void Lay_RefreshLastClicks (void); void Lay_RefreshLastClicks (void);

View File

@ -33,6 +33,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_constant.h" #include "swad_constant.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -307,7 +308,7 @@ void Lnk_GetListLinks (void)
/***** Create list with places *****/ /***** Create list with places *****/
if ((Gbl.Links.Lst = calloc ((size_t) Gbl.Links.Num, if ((Gbl.Links.Lst = calloc ((size_t) Gbl.Links.Num,
sizeof (*Gbl.Links.Lst))) == NULL) sizeof (*Gbl.Links.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the links *****/ /***** Get the links *****/
for (NumLnk = 0; for (NumLnk = 0;
@ -321,7 +322,7 @@ void Lnk_GetListLinks (void)
/* Get link code (row[0]) */ /* Get link code (row[0]) */
if ((Lnk->LnkCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Lnk->LnkCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongLinkExit (); Err_WrongLinkExit ();
/* Get the short name (row[0]), the full name (row[1]) /* Get the short name (row[0]), the full name (row[1])
and de URL (row[2]) of the link */ and de URL (row[2]) of the link */
@ -494,7 +495,7 @@ void Lnk_RemoveLink (void)
/***** Get link code *****/ /***** Get link code *****/
if ((Lnk_EditingLnk->LnkCod = Lnk_GetParamLnkCod ()) <= 0) if ((Lnk_EditingLnk->LnkCod = Lnk_GetParamLnkCod ()) <= 0)
Lay_WrongLinkExit (); Err_WrongLinkExit ();
/***** Get data of the link from database *****/ /***** Get data of the link from database *****/
Lnk_GetDataOfLinkByCod (Lnk_EditingLnk); Lnk_GetDataOfLinkByCod (Lnk_EditingLnk);
@ -571,7 +572,7 @@ static void Lnk_RenameLink (Cns_ShrtOrFullName_t ShrtOrFullName)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the link */ /* Get the code of the link */
if ((Lnk_EditingLnk->LnkCod = Lnk_GetParamLnkCod ()) <= 0) if ((Lnk_EditingLnk->LnkCod = Lnk_GetParamLnkCod ()) <= 0)
Lay_WrongLinkExit (); Err_WrongLinkExit ();
/* Get the new name for the link */ /* Get the new name for the link */
Par_GetParToText (ParamName,NewLnkName,MaxBytes); Par_GetParToText (ParamName,NewLnkName,MaxBytes);
@ -660,7 +661,7 @@ void Lnk_ChangeLinkWWW (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the link */ /* Get the code of the link */
if ((Lnk_EditingLnk->LnkCod = Lnk_GetParamLnkCod ()) <= 0) if ((Lnk_EditingLnk->LnkCod = Lnk_GetParamLnkCod ()) <= 0)
Lay_WrongLinkExit (); Err_WrongLinkExit ();
/* Get the new WWW for the link */ /* Get the new WWW for the link */
Par_GetParToText ("WWW",NewWWW,Cns_MAX_BYTES_WWW); Par_GetParToText ("WWW",NewWWW,Cns_MAX_BYTES_WWW);
@ -864,11 +865,11 @@ static void Lnk_EditingLinkConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Lnk_EditingLnk != NULL) if (Lnk_EditingLnk != NULL)
Lay_WrongLinkExit (); Err_WrongLinkExit ();
/***** Allocate memory for link *****/ /***** Allocate memory for link *****/
if ((Lnk_EditingLnk = malloc (sizeof (*Lnk_EditingLnk))) == NULL) if ((Lnk_EditingLnk = malloc (sizeof (*Lnk_EditingLnk))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset link *****/ /***** Reset link *****/
Lnk_EditingLnk->LnkCod = -1L; Lnk_EditingLnk->LnkCod = -1L;

View File

@ -32,6 +32,7 @@
#include "swad_action.h" #include "swad_action.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -163,16 +164,16 @@ void Lgo_DrawLogo (Hie_Lvl_Level_t Scope,long Cod,const char *AltText,
Cfg_URL_SWAD_PUBLIC,Folder, Cfg_URL_SWAD_PUBLIC,Folder,
(unsigned) (Cod % 100), (unsigned) (Cod % 100),
(unsigned) Cod) < 0) (unsigned) Cod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&Icon,"%u.png",(unsigned) Cod) < 0) if (asprintf (&Icon,"%u.png",(unsigned) Cod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (&URL,"%s",Cfg_URL_ICON_PUBLIC) < 0) if (asprintf (&URL,"%s",Cfg_URL_ICON_PUBLIC) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&Icon,"%s",HieIcon[Scope]) < 0) if (asprintf (&Icon,"%s",HieIcon[Scope]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
ClassNotEmpty = false; ClassNotEmpty = false;
if (Class) if (Class)

View File

@ -34,6 +34,7 @@
#include "swad_account.h" #include "swad_account.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -312,7 +313,7 @@ static void Mai_GetListMailDomainsAllowedForNotif (void)
/***** Create list with places *****/ /***** Create list with places *****/
if ((Gbl.Mails.Lst = calloc ((size_t) Gbl.Mails.Num, if ((Gbl.Mails.Lst = calloc ((size_t) Gbl.Mails.Num,
sizeof (*Gbl.Mails.Lst))) == NULL) sizeof (*Gbl.Mails.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the mail domains *****/ /***** Get the mail domains *****/
for (NumMai = 0; for (NumMai = 0;
@ -326,7 +327,7 @@ static void Mai_GetListMailDomainsAllowedForNotif (void)
/* Get mail code (row[0]) */ /* Get mail code (row[0]) */
if ((Mai->MaiCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Mai->MaiCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongMailDomainExit (); Err_WrongMailDomainExit ();
/* Get the mail domain (row[1]) and the mail domain info (row[2]) */ /* Get the mail domain (row[1]) and the mail domain info (row[2]) */
Str_Copy (Mai->Domain,row[1],sizeof (Mai->Domain) - 1); Str_Copy (Mai->Domain,row[1],sizeof (Mai->Domain) - 1);
@ -575,7 +576,7 @@ void Mai_RemoveMailDomain (void)
/***** Get mail code *****/ /***** Get mail code *****/
if ((Mai_EditingMai->MaiCod = Mai_GetParamMaiCod ()) <= 0) if ((Mai_EditingMai->MaiCod = Mai_GetParamMaiCod ()) <= 0)
Lay_WrongMailDomainExit (); Err_WrongMailDomainExit ();
/***** Get data of the mail from database *****/ /***** Get data of the mail from database *****/
Mai_GetDataOfMailDomainByCod (Mai_EditingMai); Mai_GetDataOfMailDomainByCod (Mai_EditingMai);
@ -652,7 +653,7 @@ static void Mai_RenameMailDomain (Cns_ShrtOrFullName_t ShrtOrFullName)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the mail */ /* Get the code of the mail */
if ((Mai_EditingMai->MaiCod = Mai_GetParamMaiCod ()) <= 0) if ((Mai_EditingMai->MaiCod = Mai_GetParamMaiCod ()) <= 0)
Lay_WrongMailDomainExit (); Err_WrongMailDomainExit ();
/* Get the new name for the mail */ /* Get the new name for the mail */
Par_GetParToText (ParamName,NewMaiName,MaxBytes); Par_GetParToText (ParamName,NewMaiName,MaxBytes);
@ -971,12 +972,12 @@ static void Mai_ListEmails (__attribute__((unused)) void *Args)
HTM_Txt (", "); HTM_Txt (", ");
LengthStrAddr ++; LengthStrAddr ++;
if (LengthStrAddr > Mai_MAX_BYTES_STR_ADDR) if (LengthStrAddr > Mai_MAX_BYTES_STR_ADDR)
Lay_ShowErrorAndExit ("The space allocated to store email addresses is full."); Err_ShowErrorAndExit ("The space allocated to store email addresses is full.");
Str_Concat (StrAddresses,",",sizeof (StrAddresses) - 1); Str_Concat (StrAddresses,",",sizeof (StrAddresses) - 1);
} }
LengthStrAddr += strlen (UsrDat.Email); LengthStrAddr += strlen (UsrDat.Email);
if (LengthStrAddr > Mai_MAX_BYTES_STR_ADDR) if (LengthStrAddr > Mai_MAX_BYTES_STR_ADDR)
Lay_ShowErrorAndExit ("The space allocated to store email addresses is full."); Err_ShowErrorAndExit ("The space allocated to store email addresses is full.");
Str_Concat (StrAddresses,UsrDat.Email,sizeof (StrAddresses) - 1); Str_Concat (StrAddresses,UsrDat.Email,sizeof (StrAddresses) - 1);
HTM_A_Begin ("href=\"mailto:%s?subject=%s\"", HTM_A_Begin ("href=\"mailto:%s?subject=%s\"",
UsrDat.Email,Gbl.Hierarchy.Crs.FullName); UsrDat.Email,Gbl.Hierarchy.Crs.FullName);
@ -1697,7 +1698,7 @@ bool Mai_SendMailMsgToConfirmEmail (void)
FileNameMail); FileNameMail);
ReturnCode = system (Command); ReturnCode = system (Command);
if (ReturnCode == -1) if (ReturnCode == -1)
Lay_ShowErrorAndExit ("Error when running script to send email."); Err_ShowErrorAndExit ("Error when running script to send email.");
/***** Remove temporary file *****/ /***** Remove temporary file *****/
unlink (FileNameMail); unlink (FileNameMail);
@ -1851,7 +1852,7 @@ void Mai_CreateFileNameMail (char FileNameMail[PATH_MAX + 1],FILE **FileMail)
snprintf (FileNameMail,PATH_MAX + 1,"%s/%s_mail.txt", snprintf (FileNameMail,PATH_MAX + 1,"%s/%s_mail.txt",
Cfg_PATH_OUT_PRIVATE,Gbl.UniqueNameEncrypted); Cfg_PATH_OUT_PRIVATE,Gbl.UniqueNameEncrypted);
if ((*FileMail = fopen (FileNameMail,"wb")) == NULL) if ((*FileMail = fopen (FileNameMail,"wb")) == NULL)
Lay_ShowErrorAndExit ("Can not open file to send email."); Err_ShowErrorAndExit ("Can not open file to send email.");
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1941,11 +1942,11 @@ static void Mai_EditingMailDomainConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Mai_EditingMai != NULL) if (Mai_EditingMai != NULL)
Lay_WrongMailDomainExit (); Err_WrongMailDomainExit ();
/***** Allocate memory for mail domain *****/ /***** Allocate memory for mail domain *****/
if ((Mai_EditingMai = malloc (sizeof (*Mai_EditingMai))) == NULL) if ((Mai_EditingMai = malloc (sizeof (*Mai_EditingMai))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset place *****/ /***** Reset place *****/
Mai_EditingMai->MaiCod = -1L; Mai_EditingMai->MaiCod = -1L;

View File

@ -35,6 +35,7 @@
#include "swad_config.h" #include "swad_config.h"
#include "swad_connected.h" #include "swad_connected.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_firewall.h" #include "swad_firewall.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_hierarchy.h" #include "swad_hierarchy.h"
@ -149,7 +150,7 @@ int main (void)
/***** Check if the user have permission to execute the action *****/ /***** Check if the user have permission to execute the action *****/
if (!Act_CheckIfIHavePermissionToExecuteAction (Gbl.Action.Act)) if (!Act_CheckIfIHavePermissionToExecuteAction (Gbl.Action.Act))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Update most frequently used actions *****/ /***** Update most frequently used actions *****/
MFU_UpdateMFUActions (); MFU_UpdateMFUActions ();
@ -202,7 +203,7 @@ int main (void)
} }
/***** Cleanup and exit *****/ /***** Cleanup and exit *****/
Lay_ShowErrorAndExit (NULL); Err_ShowErrorAndExit (NULL);
return 0; // Control don't reach this point. Used to avoid warning. return 0; // Control don't reach this point. Used to avoid warning.
} }

View File

@ -34,6 +34,7 @@
#include <unistd.h> // For unlink #include <unistd.h> // For unlink
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -197,11 +198,11 @@ static void Mrk_GetNumRowsHeaderAndFooter (struct MarksProperties *Marks)
/* Header (row[0]) */ /* Header (row[0]) */
if (sscanf (row[0],"%u",&(Marks->Header)) != 1) if (sscanf (row[0],"%u",&(Marks->Header)) != 1)
Lay_WrongNumberOfRowsExit (); Err_WrongNumberOfRowsExit ();
/* Footer (row[1]) */ /* Footer (row[1]) */
if (sscanf (row[1],"%u",&(Marks->Footer)) != 1) if (sscanf (row[1],"%u",&(Marks->Footer)) != 1)
Lay_WrongNumberOfRowsExit (); Err_WrongNumberOfRowsExit ();
} }
else // Unknown numbers of header and footer rows else // Unknown numbers of header and footer rows
Marks->Header = Marks->Header =
@ -268,7 +269,7 @@ static void Mrk_ChangeNumRowsHeaderOrFooter (Brw_HeadOrFoot_t HeaderOrFooter)
NumRows); NumRows);
} }
else else
Lay_WrongNumberOfRowsExit (); Err_WrongNumberOfRowsExit ();
/***** Show again the file browser *****/ /***** Show again the file browser *****/
Brw_ShowAgainFileBrowserOrWorks (); Brw_ShowAgainFileBrowserOrWorks ();
@ -648,14 +649,14 @@ void Mrk_ShowMyMarks (void)
snprintf (FileNameUsrMarks,sizeof (FileNameUsrMarks),"%s/%s.html", snprintf (FileNameUsrMarks,sizeof (FileNameUsrMarks),"%s/%s.html",
Cfg_PATH_MARK_PRIVATE,Gbl.UniqueNameEncrypted); Cfg_PATH_MARK_PRIVATE,Gbl.UniqueNameEncrypted);
if ((FileUsrMarks = fopen (FileNameUsrMarks,"wb")) == NULL) if ((FileUsrMarks = fopen (FileNameUsrMarks,"wb")) == NULL)
Lay_ShowErrorAndExit ("Can not open file for my marks."); Err_ShowErrorAndExit ("Can not open file for my marks.");
/***** Show my marks *****/ /***** Show my marks *****/
if (Mrk_GetUsrMarks (FileUsrMarks,UsrDat,PathPrivate,&Marks)) if (Mrk_GetUsrMarks (FileUsrMarks,UsrDat,PathPrivate,&Marks))
{ {
fclose (FileUsrMarks); fclose (FileUsrMarks);
if ((FileUsrMarks = fopen (FileNameUsrMarks,"rb")) == NULL) if ((FileUsrMarks = fopen (FileNameUsrMarks,"rb")) == NULL)
Lay_ShowErrorAndExit ("Can not open file with my marks."); Err_ShowErrorAndExit ("Can not open file with my marks.");
/* Start HTML output */ /* Start HTML output */
/* Do not write charset here. /* Do not write charset here.
@ -764,11 +765,11 @@ void Mrk_GetNotifMyMarks (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
{ {
/* Header (row[3]) */ /* Header (row[3]) */
if (sscanf (row[3],"%u",&(Marks.Header)) != 1) if (sscanf (row[3],"%u",&(Marks.Header)) != 1)
Lay_WrongNumberOfRowsExit (); Err_WrongNumberOfRowsExit ();
/* Footer (row[4]) */ /* Footer (row[4]) */
if (sscanf (row[4],"%u",&(Marks.Footer)) != 1) if (sscanf (row[4],"%u",&(Marks.Footer)) != 1)
Lay_WrongNumberOfRowsExit (); Err_WrongNumberOfRowsExit ();
if (UsrDat.IDs.Num) if (UsrDat.IDs.Num)
{ {
@ -822,7 +823,7 @@ void Mrk_GetNotifMyMarks (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
fclose (FileUsrMarks); fclose (FileUsrMarks);
if (asprintf (ContentStr,"<![CDATA[%s]]>", if (asprintf (ContentStr,"<![CDATA[%s]]>",
Ale_GetTextOfLastAlert ()) < 0) Ale_GetTextOfLastAlert ()) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Ale_ResetAllAlerts (); Ale_ResetAllAlerts ();
} }
} }
@ -830,7 +831,7 @@ void Mrk_GetNotifMyMarks (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
{ {
if (asprintf (ContentStr,"<![CDATA[%s]]>", if (asprintf (ContentStr,"<![CDATA[%s]]>",
"Can not open file of marks.") < 0) "Can not open file of marks.") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
unlink (FileNameUsrMarks); // File with marks is no longer necessary unlink (FileNameUsrMarks); // File with marks is no longer necessary
} }
@ -838,7 +839,7 @@ void Mrk_GetNotifMyMarks (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
{ {
if (asprintf (ContentStr,"<![CDATA[%s]]>", if (asprintf (ContentStr,"<![CDATA[%s]]>",
"User's IDs not found!") < 0) "User's IDs not found!") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
} }
} }

View File

@ -34,6 +34,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_date.h" #include "swad_date.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_game.h" #include "swad_game.h"
#include "swad_global.h" #include "swad_global.h"
@ -317,11 +318,11 @@ void Mch_ListMatches (struct Gam_Games *Games,
" WHERE grp_users.UsrCod=%ld" " WHERE grp_users.UsrCod=%ld"
" AND grp_users.GrpCod=mch_groups.GrpCod))", " AND grp_users.GrpCod=mch_groups.GrpCod))",
Gbl.Usrs.Me.UsrDat.UsrCod) < 0) Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else // Gbl.Crs.Grps.WhichGrps == Grp_ALL_GROUPS else // Gbl.Crs.Grps.WhichGrps == Grp_ALL_GROUPS
if (asprintf (&SubQuery,"%s","") < 0) if (asprintf (&SubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/* Make query */ /* Make query */
NumMatches = (unsigned) NumMatches = (unsigned)
@ -513,7 +514,7 @@ static void Mch_ListOneOrMoreMatches (struct Gam_Games *Games,
{ {
/***** Build anchor string *****/ /***** Build anchor string *****/
if (asprintf (&Anchor,"mch_%ld",Match.MchCod) < 0) if (asprintf (&Anchor,"mch_%ld",Match.MchCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** First row for this match with match data ****/ /***** First row for this match with match data ****/
/* Begin first row */ /* Begin first row */
@ -708,7 +709,7 @@ static void Mch_ListOneOrMoreMatchesTimes (const struct Mch_Match *Match,unsigne
StartEndTime++) StartEndTime++)
{ {
if (asprintf (&Id,"mch_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"mch_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"", HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
Id, Id,
Match->Status.Showing == Mch_END ? "DATE_RED" : Match->Status.Showing == Mch_END ? "DATE_RED" :
@ -886,7 +887,7 @@ static void Mch_ListOneOrMoreMatchesResult (struct Gam_Games *Games,
Mch_ListOneOrMoreMatchesResultTch (Games,Match); Mch_ListOneOrMoreMatchesResultTch (Games,Match);
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
@ -972,7 +973,7 @@ void Mch_ToggleVisResultsMchUsr (void)
/***** Check if visibility of match results can be changed *****/ /***** Check if visibility of match results can be changed *****/
if (!Mch_CheckIfVisibilityOfResultsCanBeChanged (&Match)) if (!Mch_CheckIfVisibilityOfResultsCanBeChanged (&Match))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Toggle visibility of match results *****/ /***** Toggle visibility of match results *****/
Match.Status.ShowUsrResults = !Match.Status.ShowUsrResults; Match.Status.ShowUsrResults = !Match.Status.ShowUsrResults;
@ -1014,11 +1015,11 @@ static void Mch_GetMatchDataFromRow (MYSQL_RES *mysql_res,
/***** Get match data *****/ /***** Get match data *****/
/* Code of the match (row[0]) */ /* Code of the match (row[0]) */
if ((Match->MchCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Match->MchCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongMatchExit (); Err_WrongMatchExit ();
/* Code of the game (row[1]) */ /* Code of the game (row[1]) */
if ((Match->GamCod = Str_ConvertStrCodToLongCod (row[1])) <= 0) if ((Match->GamCod = Str_ConvertStrCodToLongCod (row[1])) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
/* Get match teacher (row[2]) */ /* Get match teacher (row[2]) */
Match->UsrCod = Str_ConvertStrCodToLongCod (row[2]); Match->UsrCod = Str_ConvertStrCodToLongCod (row[2]);
@ -1151,7 +1152,7 @@ void Mch_RemoveMatch (void)
/***** Check if I can remove this match *****/ /***** Check if I can remove this match *****/
if (!Mch_CheckIfICanEditThisMatch (&Match)) if (!Mch_CheckIfICanEditThisMatch (&Match))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Remove the match from all database tables *****/ /***** Remove the match from all database tables *****/
Mch_RemoveMatchFromAllTables (Match.MchCod); Mch_RemoveMatchFromAllTables (Match.MchCod);
@ -1355,7 +1356,7 @@ void Mch_EditMatch (void)
/***** Check if I can edit this match *****/ /***** Check if I can edit this match *****/
if (!Mch_CheckIfICanEditThisMatch (&Match)) if (!Mch_CheckIfICanEditThisMatch (&Match))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show current game *****/ /***** Show current game *****/
Gam_ShowOnlyOneGame (&Games,&Game, Gam_ShowOnlyOneGame (&Games,&Game,
@ -1409,20 +1410,20 @@ void Mch_GetAndCheckParameters (struct Gam_Games *Games,
/***** Get parameters *****/ /***** Get parameters *****/
/* Get parameters of game */ /* Get parameters of game */
if ((Game->GamCod = Gam_GetParams (Games)) <= 0) if ((Game->GamCod = Gam_GetParams (Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Grp_GetParamWhichGroups (); Grp_GetParamWhichGroups ();
Gam_GetDataOfGameByCod (Game); Gam_GetDataOfGameByCod (Game);
/* Get match code */ /* Get match code */
if ((Match->MchCod = Mch_GetParamMchCod ()) <= 0) if ((Match->MchCod = Mch_GetParamMchCod ()) <= 0)
Lay_WrongMatchExit (); Err_WrongMatchExit ();
Mch_GetDataOfMatchByCod (Match); Mch_GetDataOfMatchByCod (Match);
/***** Ensure parameters are correct *****/ /***** Ensure parameters are correct *****/
if (Game->GamCod != Match->GamCod) if (Game->GamCod != Match->GamCod)
Lay_WrongGameExit (); Err_WrongGameExit ();
if (Game->CrsCod != Gbl.Hierarchy.Crs.CrsCod) if (Game->CrsCod != Gbl.Hierarchy.Crs.CrsCod)
Lay_WrongGameExit (); Err_WrongGameExit ();
/***** Initialize context *****/ /***** Initialize context *****/
Games->GamCod = Game->GamCod; Games->GamCod = Game->GamCod;
@ -1625,7 +1626,7 @@ void Mch_CreateNewMatch (void)
/***** Get form parameters *****/ /***** Get form parameters *****/
/* Get match code */ /* Get match code */
if ((GamCod = Gam_GetParamGameCod ()) < 0) if ((GamCod = Gam_GetParamGameCod ()) < 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
/* Get match title */ /* Get match title */
Par_GetParToText ("Title",Title,Mch_MAX_BYTES_TITLE); Par_GetParToText ("Title",Title,Mch_MAX_BYTES_TITLE);
@ -1662,7 +1663,7 @@ void Mch_ChangeMatch (void)
/***** Check if I can update this match *****/ /***** Check if I can update this match *****/
if (!Mch_CheckIfICanEditThisMatch (&Match)) if (!Mch_CheckIfICanEditThisMatch (&Match))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get match title and groups *****/ /***** Get match title and groups *****/
/* Get match title */ /* Get match title */
@ -1725,7 +1726,7 @@ void Mch_ResumeMatch (void)
/***** Check if I have permission to resume match *****/ /***** Check if I have permission to resume match *****/
if (!Mch_CheckIfICanEditThisMatch (&Match)) if (!Mch_CheckIfICanEditThisMatch (&Match))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Update match status in database *****/ /***** Update match status in database *****/
Mch_UpdateMatchStatusInDB (&Match); Mch_UpdateMatchStatusInDB (&Match);
@ -1830,17 +1831,17 @@ static void Mch_CreateIndexes (long GamCod,long MchCod)
/* Get question code (row[0]) */ /* Get question code (row[0]) */
if ((Question.QstCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Question.QstCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Get question index (row[1]) */ /* Get question index (row[1]) */
if ((LongNum = Str_ConvertStrCodToLongCod (row[1])) <= 0) if ((LongNum = Str_ConvertStrCodToLongCod (row[1])) <= 0)
Lay_WrongQuestionIndexExit (); Err_WrongQuestionIndexExit ();
QstInd = (unsigned) LongNum; QstInd = (unsigned) LongNum;
/* Get answer type (row[2]) */ /* Get answer type (row[2]) */
Question.Answer.Type = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]); Question.Answer.Type = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[2]);
if (Question.Answer.Type != Tst_ANS_UNIQUE_CHOICE) if (Question.Answer.Type != Tst_ANS_UNIQUE_CHOICE)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/* Get shuffle (row[3]) */ /* Get shuffle (row[3]) */
Question.Answer.Shuffle = (row[3][0] == 'Y'); Question.Answer.Shuffle = (row[3][0] == 'Y');
@ -1895,7 +1896,7 @@ static void Mch_ReorderAnswer (long MchCod,unsigned QstInd,
/* Get answer index (row[0]) */ /* Get answer index (row[0]) */
if ((LongNum = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((LongNum = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongAnswerIndexExit (); Err_WrongAnswerIndexExit ();
AnsInd = (unsigned) LongNum; AnsInd = (unsigned) LongNum;
snprintf (StrOneAnswer,sizeof (StrOneAnswer),"%u",AnsInd); snprintf (StrOneAnswer,sizeof (StrOneAnswer),"%u",AnsInd);
@ -1938,7 +1939,7 @@ void Mch_GetIndexes (long MchCod,unsigned QstInd,
MchCod, MchCod,
QstInd); QstInd);
if (!StrIndexesOneQst[0]) if (!StrIndexesOneQst[0])
Lay_ShowErrorAndExit ("No indexes found for a question."); Err_ShowErrorAndExit ("No indexes found for a question.");
/***** Get indexes from string *****/ /***** Get indexes from string *****/
TstPrn_GetIndexesFromStr (StrIndexesOneQst,Indexes); TstPrn_GetIndexesFromStr (StrIndexesOneQst,Indexes);
@ -2009,12 +2010,12 @@ static void Mch_UpdateMatchStatusInDB (const struct Mch_Match *Match)
if (Match->Status.Playing) // Match is being played if (Match->Status.Playing) // Match is being played
{ {
if (asprintf (&MchSubQuery,"mch_matches.EndTime=NOW(),") < 0) if (asprintf (&MchSubQuery,"mch_matches.EndTime=NOW(),") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else // Match is paused, not being played else // Match is paused, not being played
{ {
if (asprintf (&MchSubQuery,"%s","") < 0) if (asprintf (&MchSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/***** Update match status in database *****/ /***** Update match status in database *****/
@ -2482,7 +2483,7 @@ static void Mch_ShowMatchStatusForStd (struct Mch_Match *Match,Mch_Update_t Upda
/***** Can I play this match? *****/ /***** Can I play this match? *****/
ICanPlayThisMatchBasedOnGrps = Mch_CheckIfICanPlayThisMatchBasedOnGrps (Match); ICanPlayThisMatchBasedOnGrps = Mch_CheckIfICanPlayThisMatchBasedOnGrps (Match);
if (!ICanPlayThisMatchBasedOnGrps) if (!ICanPlayThisMatchBasedOnGrps)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Get student's answer to this question /***** Get student's answer to this question
(<0 ==> no answer) *****/ (<0 ==> no answer) *****/
@ -2811,7 +2812,7 @@ static void Mch_PutFormCountdown (struct Mch_Match *Match,long Seconds,const cha
" return false;", // return false is necessary to not submit form " return false;", // return false is necessary to not submit form
Act_GetActCod (ActMchCntDwn),Gbl.Session.Id, Act_GetActCod (ActMchCntDwn),Gbl.Session.Id,
Match->MchCod,Seconds) < 0) Match->MchCod,Seconds) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Frm_BeginFormOnSubmit (ActUnk,OnSubmit); Frm_BeginFormOnSubmit (ActUnk,OnSubmit);
} }
@ -3274,7 +3275,7 @@ static void Mch_ShowQuestionAndAnswersTch (const struct Mch_Match *Match)
/***** Show question *****/ /***** Show question *****/
/* Check answer type */ /* Check answer type */
if (Question.Answer.Type != Tst_ANS_UNIQUE_CHOICE) if (Question.Answer.Type != Tst_ANS_UNIQUE_CHOICE)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/* Begin container */ /* Begin container */
HTM_DIV_Begin ("class=\"MCH_BOTTOM\""); // Bottom HTM_DIV_Begin ("class=\"MCH_BOTTOM\""); // Bottom
@ -3472,7 +3473,7 @@ static bool Mch_ShowQuestionAndAnswersStd (const struct Mch_Match *Match,
Update == Mch_CHANGE_STATUS_BY_STUDENT ? " MCH_STD_ANSWER_SELECTED" : Update == Mch_CHANGE_STATUS_BY_STUDENT ? " MCH_STD_ANSWER_SELECTED" :
"", "",
'A' + (char) NumOpt) < 0) 'A' + (char) NumOpt) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BUTTON_OnMouseDown_Begin (NULL,Class); HTM_BUTTON_OnMouseDown_Begin (NULL,Class);
HTM_TxtF ("%c",'a' + (char) NumOpt); HTM_TxtF ("%c",'a' + (char) NumOpt);
HTM_BUTTON_End (); HTM_BUTTON_End ();
@ -3684,7 +3685,7 @@ static void Mch_DrawScoreRow (double Score,double MinScore,double MaxScore,
/* Draw bar and write number of users for this score */ /* Draw bar and write number of users for this score */
HTM_TD_Begin ("class=\"MCH_SCO_NUM%s\"",Mch_GetClassBorder (NumRow)); HTM_TD_Begin ("class=\"MCH_SCO_NUM%s\"",Mch_GetClassBorder (NumRow));
if (asprintf (&Icon,"score%u_1x1.png",Color) < 0) // Background if (asprintf (&Icon,"score%u_1x1.png",Color) < 0) // Background
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon, HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,
Str_BuildStringLongStr ((long) NumUsrs, Str_BuildStringLongStr ((long) NumUsrs,
NumUsrs == 1 ? Txt_ROLES_SINGUL_abc[Rol_STD][Usr_SEX_UNKNOWN] : NumUsrs == 1 ? Txt_ROLES_SINGUL_abc[Rol_STD][Usr_SEX_UNKNOWN] :
@ -3728,7 +3729,7 @@ static unsigned Mch_GetParamNumOpt (void)
NumOpt = Par_GetParToLong ("NumOpt"); NumOpt = Par_GetParToLong ("NumOpt");
if (NumOpt < 0) if (NumOpt < 0)
Lay_ShowErrorAndExit ("Wrong number of option."); Err_ShowErrorAndExit ("Wrong number of option.");
return (unsigned) NumOpt; return (unsigned) NumOpt;
} }
@ -3921,7 +3922,7 @@ void Mch_GetMatchBeingPlayed (void)
/***** Get match code ****/ /***** Get match code ****/
if ((MchCodBeingPlayed = Mch_GetParamMchCod ()) <= 0) if ((MchCodBeingPlayed = Mch_GetParamMchCod ()) <= 0)
Lay_WrongMatchExit (); Err_WrongMatchExit ();
Mch_SetMchCodBeingPlayed (MchCodBeingPlayed); Mch_SetMchCodBeingPlayed (MchCodBeingPlayed);
} }
@ -4145,11 +4146,11 @@ void Mch_GetQstAnsFromDB (long MchCod,long UsrCod,unsigned QstInd,
/***** Get number of option index (row[0]) *****/ /***** Get number of option index (row[0]) *****/
if (sscanf (row[0],"%d",&(UsrAnswer->NumOpt)) != 1) if (sscanf (row[0],"%d",&(UsrAnswer->NumOpt)) != 1)
Lay_ShowErrorAndExit ("Error when getting student's answer to a match question."); Err_ShowErrorAndExit ("Error when getting student's answer to a match question.");
/***** Get answer index (row[1]) *****/ /***** Get answer index (row[1]) *****/
if (sscanf (row[1],"%d",&(UsrAnswer->AnsInd)) != 1) if (sscanf (row[1],"%d",&(UsrAnswer->AnsInd)) != 1)
Lay_ShowErrorAndExit ("Error when getting student's answer to a match question."); Err_ShowErrorAndExit ("Error when getting student's answer to a match question.");
} }
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
@ -4314,11 +4315,11 @@ void Mch_GetMatchQuestionsFromDB (struct MchPrn_Print *Print)
/* Get question code (row[0]) */ /* Get question code (row[0]) */
if ((Print->PrintedQuestions[NumQst].QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Print->PrintedQuestions[NumQst].QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Get question index (row[1]) */ /* Get question index (row[1]) */
if ((LongNum = Str_ConvertStrCodToLongCod (row[1])) < 0) if ((LongNum = Str_ConvertStrCodToLongCod (row[1])) < 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
QstInd = (unsigned) LongNum; QstInd = (unsigned) LongNum;
/* Get indexes for this question (row[2]) */ /* Get indexes for this question (row[2]) */

View File

@ -35,6 +35,7 @@
#include "swad_action.h" #include "swad_action.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_date.h" #include "swad_date.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -169,7 +170,7 @@ void MchRes_ShowMyMchResultsInGam (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Game begin *****/ /***** Game begin *****/
@ -219,9 +220,9 @@ void MchRes_ShowMyMchResultsInMch (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
if ((Match.MchCod = Mch_GetParamMchCod ()) <= 0) if ((Match.MchCod = Mch_GetParamMchCod ()) <= 0)
Lay_WrongMatchExit (); Err_WrongMatchExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
Mch_GetDataOfMatchByCod (&Match); Mch_GetDataOfMatchByCod (&Match);
@ -373,7 +374,7 @@ void MchRes_ShowAllMchResultsInGam (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
/***** Game begin *****/ /***** Game begin *****/
@ -462,9 +463,9 @@ void MchRes_ShowAllMchResultsInMch (void)
/***** Get parameters *****/ /***** Get parameters *****/
if ((Game.GamCod = Gam_GetParams (&Games)) <= 0) if ((Game.GamCod = Gam_GetParams (&Games)) <= 0)
Lay_WrongGameExit (); Err_WrongGameExit ();
if ((Match.MchCod = Mch_GetParamMchCod ()) <= 0) if ((Match.MchCod = Mch_GetParamMchCod ()) <= 0)
Lay_WrongMatchExit (); Err_WrongMatchExit ();
Gam_GetDataOfGameByCod (&Game); Gam_GetDataOfGameByCod (&Game);
Mch_GetDataOfMatchByCod (&Match); Mch_GetDataOfMatchByCod (&Match);
@ -734,7 +735,7 @@ static void MchRes_BuildGamesSelectedCommas (struct Gam_Games *Games,
/***** Allocate memory for subquery of games selected *****/ /***** Allocate memory for subquery of games selected *****/
MaxLength = (size_t) Games->NumSelected * (Cns_MAX_DECIMAL_DIGITS_LONG + 1); MaxLength = (size_t) Games->NumSelected * (Cns_MAX_DECIMAL_DIGITS_LONG + 1);
if ((*GamesSelectedCommas = malloc (MaxLength + 1)) == NULL) if ((*GamesSelectedCommas = malloc (MaxLength + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Build subquery with list of selected games *****/ /***** Build subquery with list of selected games *****/
(*GamesSelectedCommas)[0] = '\0'; (*GamesSelectedCommas)[0] = '\0';
@ -795,19 +796,19 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
if (MchCod > 0) if (MchCod > 0)
{ {
if (asprintf (&MchSubQuery," AND mch_results.MchCod=%ld",MchCod) < 0) if (asprintf (&MchSubQuery," AND mch_results.MchCod=%ld",MchCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (&MchSubQuery,"%s","") < 0) if (asprintf (&MchSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/***** Build games subquery *****/ /***** Build games subquery *****/
if (GamCod > 0) if (GamCod > 0)
{ {
if (asprintf (&GamSubQuery," AND mch_matches.GamCod=%ld",GamCod) < 0) if (asprintf (&GamSubQuery," AND mch_matches.GamCod=%ld",GamCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else if (GamesSelectedCommas) else if (GamesSelectedCommas)
{ {
@ -815,18 +816,18 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
{ {
if (asprintf (&GamSubQuery," AND mch_matches.GamCod IN (%s)", if (asprintf (&GamSubQuery," AND mch_matches.GamCod IN (%s)",
GamesSelectedCommas) < 0) GamesSelectedCommas) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (&GamSubQuery,"%s","") < 0) if (asprintf (&GamSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
} }
else else
{ {
if (asprintf (&GamSubQuery,"%s","") < 0) if (asprintf (&GamSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/***** Subquery: get hidden games? /***** Subquery: get hidden games?
@ -837,11 +838,11 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
{ {
case Usr_ME: // A student watching her/his results case Usr_ME: // A student watching her/his results
if (asprintf (&HidGamSubQuery," AND gam_games.Hidden='N'") < 0) if (asprintf (&HidGamSubQuery," AND gam_games.Hidden='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
default: // A teacher/admin watching the results of other users default: // A teacher/admin watching the results of other users
if (asprintf (&HidGamSubQuery,"%s","") < 0) if (asprintf (&HidGamSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
} }
@ -883,7 +884,7 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
/* Get match code */ /* Get match code */
MchPrn_ResetPrint (&Print); MchPrn_ResetPrint (&Print);
if ((Print.MchCod = DB_GetNextCode (mysql_res)) < 0) if ((Print.MchCod = DB_GetNextCode (mysql_res)) < 0)
Lay_WrongMatchExit (); Err_WrongMatchExit ();
/* Get match result data */ /* Get match result data */
Print.UsrCod = UsrDat->UsrCod; Print.UsrCod = UsrDat->UsrCod;
@ -908,7 +909,7 @@ static void MchRes_ShowMchResults (struct Gam_Games *Games,
{ {
UniqueId++; UniqueId++;
if (asprintf (&Id,"mch_res_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"mch_res_time_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id =\"%s\" class=\"DAT LT COLOR%u\"", HTM_TD_Begin ("id =\"%s\" class=\"DAT LT COLOR%u\"",
Id,Gbl.RowEvenOdd); Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime], Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime],
@ -1213,9 +1214,9 @@ void MchRes_ShowOneMchResult (void)
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (UsrDat, if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (UsrDat,
Usr_DONT_GET_PREFS, Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS)) Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Lay_WrongUserExit (); Err_WrongUserExit ();
if (!Usr_CheckIfICanViewTstExaMchResult (UsrDat)) if (!Usr_CheckIfICanViewTstExaMchResult (UsrDat))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/* User */ /* User */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -1249,7 +1250,7 @@ void MchRes_ShowOneMchResult (void)
HTM_TD_End (); HTM_TD_End ();
if (asprintf (&Id,"match_%u",(unsigned) StartEndTime) < 0) if (asprintf (&Id,"match_%u",(unsigned) StartEndTime) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"DAT LB\"",Id); HTM_TD_Begin ("id=\"%s\" class=\"DAT LB\"",Id);
Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime], Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime],
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA, Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
@ -1355,7 +1356,7 @@ void MchRes_ShowOneMchResult (void)
Box_BoxEnd (); Box_BoxEnd ();
} }
else // I am not allowed to view this match result else // I am not allowed to view this match result
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -40,6 +40,7 @@
#include "swad_config.h" #include "swad_config.h"
#include "swad_cookie.h" #include "swad_cookie.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_file.h" #include "swad_file.h"
#include "swad_file_browser.h" #include "swad_file_browser.h"
#include "swad_form.h" #include "swad_form.h"
@ -308,7 +309,7 @@ void Med_GetMediaDataByCod (struct Med_Media *Media)
Length = Cns_MAX_BYTES_WWW; Length = Cns_MAX_BYTES_WWW;
if ((Media->URL = malloc (Length + 1)) == NULL) if ((Media->URL = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (Media->URL,row[2],Length); Str_Copy (Media->URL,row[2],Length);
} }
@ -324,12 +325,12 @@ void Med_GetMediaDataByCod (struct Med_Media *Media)
Length = Med_MAX_BYTES_TITLE; Length = Med_MAX_BYTES_TITLE;
if ((Media->Title = malloc (Length + 1)) == NULL) if ((Media->Title = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (Media->Title,row[3],Length); Str_Copy (Media->Title,row[3],Length);
} }
} }
else else
Lay_ShowErrorAndExit ("Internal error in database when getting media data."); Err_ShowErrorAndExit ("Internal error in database when getting media data.");
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -496,7 +497,7 @@ static void Med_PutHiddenFormTypeMediaUploader (const char UniqueId[Frm_MAX_BYTE
/***** Hidden field with form type *****/ /***** Hidden field with form type *****/
if (asprintf (&Id,"%s_%s",UniqueId,MediaUploader->ParamSuffix) < 0) // <id>_ParamSuffix if (asprintf (&Id,"%s_%s",UniqueId,MediaUploader->ParamSuffix) < 0) // <id>_ParamSuffix
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Par_PutHiddenParamUnsignedDisabled (Id,ParamUploadMedia->FormType, Par_PutHiddenParamUnsignedDisabled (Id,ParamUploadMedia->FormType,
(unsigned) MediaUploader->FormType); (unsigned) MediaUploader->FormType);
free (Id); free (Id);
@ -662,7 +663,7 @@ static void Usr_GetURLFromForm (const char *ParamName,struct Med_Media *Media)
with the URL coming from the form */ with the URL coming from the form */
Med_FreeMediaURL (Media); Med_FreeMediaURL (Media);
if ((Media->URL = malloc (Length + 1)) == NULL) if ((Media->URL = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (Media->URL,URL,Length); Str_Copy (Media->URL,URL,Length);
} }
} }
@ -686,7 +687,7 @@ static void Usr_GetTitleFromForm (const char *ParamName,struct Med_Media *Media)
with the title coming from the form */ with the title coming from the form */
Med_FreeMediaTitle (Media); Med_FreeMediaTitle (Media);
if ((Media->Title = malloc (Length + 1)) == NULL) if ((Media->Title = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (Media->Title,Title,Length); Str_Copy (Media->Title,Title,Length);
} }
} }
@ -983,7 +984,7 @@ static int Med_ResizeImage (struct Med_Media *Media,
PathFileProcessed); PathFileProcessed);
ReturnCode = system (Command); ReturnCode = system (Command);
if (ReturnCode == -1) if (ReturnCode == -1)
Lay_ShowErrorAndExit ("Error when running command to process media."); Err_ShowErrorAndExit ("Error when running command to process media.");
ReturnCode = WEXITSTATUS(ReturnCode); ReturnCode = WEXITSTATUS(ReturnCode);
return ReturnCode; return ReturnCode;
@ -1006,7 +1007,7 @@ static int Med_GetFirstFrame (const char PathFileOriginal[PATH_MAX + 1],
PathFileProcessed); PathFileProcessed);
ReturnCode = system (Command); ReturnCode = system (Command);
if (ReturnCode == -1) if (ReturnCode == -1)
Lay_ShowErrorAndExit ("Error when running command to process media."); Err_ShowErrorAndExit ("Error when running command to process media.");
ReturnCode = WEXITSTATUS(ReturnCode); ReturnCode = WEXITSTATUS(ReturnCode);
@ -1501,7 +1502,7 @@ static void Med_ShowJPG (const struct Med_Media *Media,
Media->Name,Med_Extensions[Med_JPG]); Media->Name,Med_Extensions[Med_JPG]);
if (asprintf (&FullPathJPGPriv,"%s/%s", if (asprintf (&FullPathJPGPriv,"%s/%s",
PathMedPriv,FileNameJPG) < 0) PathMedPriv,FileNameJPG) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Check if private media file exists *****/ /***** Check if private media file exists *****/
if (Fil_CheckIfPathExists (FullPathJPGPriv)) if (Fil_CheckIfPathExists (FullPathJPGPriv))
@ -1524,7 +1525,7 @@ static void Med_ShowJPG (const struct Med_Media *Media,
/***** Show media *****/ /***** Show media *****/
if (asprintf (&URL,"%s/%s", if (asprintf (&URL,"%s/%s",
Cfg_URL_FILE_BROWSER_TMP_PUBLIC,TmpPubDir) < 0) Cfg_URL_FILE_BROWSER_TMP_PUBLIC,TmpPubDir) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (URL,FileNameJPG,Media->Title, HTM_IMG (URL,FileNameJPG,Media->Title,
"class=\"%s\" lazyload=\"on\"",ClassMedia); // Lazy load of the media "class=\"%s\" lazyload=\"on\"",ClassMedia); // Lazy load of the media
free (URL); free (URL);
@ -1559,13 +1560,13 @@ static void Med_ShowGIF (const struct Med_Media *Media,
Media->Name,Med_Extensions[Med_GIF]); Media->Name,Med_Extensions[Med_GIF]);
if (asprintf (&FullPathGIFPriv,"%s/%s", // The animated GIF image if (asprintf (&FullPathGIFPriv,"%s/%s", // The animated GIF image
PathMedPriv,FileNameGIF) < 0) PathMedPriv,FileNameGIF) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Build private path to static PNG image *****/ /***** Build private path to static PNG image *****/
snprintf (FileNamePNG,sizeof (FileNamePNG),"%s.png",Media->Name); snprintf (FileNamePNG,sizeof (FileNamePNG),"%s.png",Media->Name);
if (asprintf (&FullPathPNGPriv,"%s/%s", if (asprintf (&FullPathPNGPriv,"%s/%s",
PathMedPriv,FileNamePNG) < 0) PathMedPriv,FileNamePNG) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Check if private media file exists *****/ /***** Check if private media file exists *****/
if (Fil_CheckIfPathExists (FullPathGIFPriv)) // The animated GIF image if (Fil_CheckIfPathExists (FullPathGIFPriv)) // The animated GIF image
@ -1589,11 +1590,11 @@ static void Med_ShowGIF (const struct Med_Media *Media,
/***** Create URLs pointing to symbolic links *****/ /***** Create URLs pointing to symbolic links *****/
if (asprintf (&URL,"%s/%s", if (asprintf (&URL,"%s/%s",
Cfg_URL_FILE_BROWSER_TMP_PUBLIC,TmpPubDir) < 0) Cfg_URL_FILE_BROWSER_TMP_PUBLIC,TmpPubDir) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&URL_GIF,"%s/%s",URL,FileNameGIF) < 0) if (asprintf (&URL_GIF,"%s/%s",URL,FileNameGIF) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&URL_PNG,"%s/%s",URL,FileNamePNG) < 0) // The static PNG image if (asprintf (&URL_PNG,"%s/%s",URL,FileNamePNG) < 0) // The static PNG image
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Check if private media file exists *****/ /***** Check if private media file exists *****/
if (Fil_CheckIfPathExists (FullPathPNGPriv)) // The static PNG image if (Fil_CheckIfPathExists (FullPathPNGPriv)) // The static PNG image
@ -1651,7 +1652,7 @@ static void Med_ShowVideo (const struct Med_Media *Media,
Media->Name,Med_Extensions[Media->Type]); Media->Name,Med_Extensions[Media->Type]);
if (asprintf (&FullPathVideoPriv,"%s/%s", if (asprintf (&FullPathVideoPriv,"%s/%s",
PathMedPriv,FileNameVideo) < 0) PathMedPriv,FileNameVideo) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Check if private media file exists *****/ /***** Check if private media file exists *****/
if (Fil_CheckIfPathExists (FullPathVideoPriv)) if (Fil_CheckIfPathExists (FullPathVideoPriv))
@ -1674,7 +1675,7 @@ static void Med_ShowVideo (const struct Med_Media *Media,
/***** Create URL pointing to symbolic link *****/ /***** Create URL pointing to symbolic link *****/
if (asprintf (&URL,"%s/%s", if (asprintf (&URL,"%s/%s",
Cfg_URL_FILE_BROWSER_TMP_PUBLIC,TmpPubDir) < 0) Cfg_URL_FILE_BROWSER_TMP_PUBLIC,TmpPubDir) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Show media *****/ /***** Show media *****/
HTM_TxtF ("<video src=\"%s/%s\"" HTM_TxtF ("<video src=\"%s/%s\""
@ -1847,7 +1848,7 @@ long Med_CloneMedia (const struct Med_Media *MediaSrc)
if (Length > Cns_MAX_BYTES_WWW) if (Length > Cns_MAX_BYTES_WWW)
Length = Cns_MAX_BYTES_WWW; Length = Cns_MAX_BYTES_WWW;
if ((MediaDst.URL = malloc (Length + 1)) == NULL) if ((MediaDst.URL = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (MediaDst.URL,MediaSrc->URL,Length); Str_Copy (MediaDst.URL,MediaSrc->URL,Length);
} }
@ -1860,7 +1861,7 @@ long Med_CloneMedia (const struct Med_Media *MediaSrc)
if (Length > Cns_MAX_BYTES_WWW) if (Length > Cns_MAX_BYTES_WWW)
Length = Cns_MAX_BYTES_WWW; Length = Cns_MAX_BYTES_WWW;
if ((MediaDst.Title = malloc (Length + 1)) == NULL) if ((MediaDst.Title = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (MediaDst.Title,MediaSrc->Title,Length); Str_Copy (MediaDst.Title,MediaSrc->Title,Length);
} }
@ -1994,7 +1995,7 @@ void Med_RemoveMedia (long MedCod)
/***** Remove private JPG file *****/ /***** Remove private JPG file *****/
if (asprintf (&FullPathMediaPriv,"%s/%s.%s", if (asprintf (&FullPathMediaPriv,"%s/%s.%s",
PathMedPriv,Media.Name,Med_Extensions[Med_JPG]) < 0) PathMedPriv,Media.Name,Med_Extensions[Med_JPG]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
unlink (FullPathMediaPriv); unlink (FullPathMediaPriv);
free (FullPathMediaPriv); free (FullPathMediaPriv);
break; break;
@ -2002,14 +2003,14 @@ void Med_RemoveMedia (long MedCod)
/***** Remove private GIF file *****/ /***** Remove private GIF file *****/
if (asprintf (&FullPathMediaPriv,"%s/%s.%s", if (asprintf (&FullPathMediaPriv,"%s/%s.%s",
PathMedPriv,Media.Name,Med_Extensions[Med_GIF]) < 0) PathMedPriv,Media.Name,Med_Extensions[Med_GIF]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
unlink (FullPathMediaPriv); unlink (FullPathMediaPriv);
free (FullPathMediaPriv); free (FullPathMediaPriv);
/***** Remove private PNG file *****/ /***** Remove private PNG file *****/
if (asprintf (&FullPathMediaPriv,"%s/%s.png", if (asprintf (&FullPathMediaPriv,"%s/%s.png",
PathMedPriv,Media.Name) < 0) PathMedPriv,Media.Name) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
unlink (FullPathMediaPriv); unlink (FullPathMediaPriv);
free (FullPathMediaPriv); free (FullPathMediaPriv);
@ -2020,7 +2021,7 @@ void Med_RemoveMedia (long MedCod)
/***** Remove private video file *****/ /***** Remove private video file *****/
if (asprintf (&FullPathMediaPriv,"%s/%s.%s", if (asprintf (&FullPathMediaPriv,"%s/%s.%s",
PathMedPriv,Media.Name,Med_Extensions[Media.Type]) < 0) PathMedPriv,Media.Name,Med_Extensions[Media.Type]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
unlink (FullPathMediaPriv); unlink (FullPathMediaPriv);
free (FullPathMediaPriv); free (FullPathMediaPriv);

View File

@ -38,6 +38,7 @@
#include "swad_config.h" #include "swad_config.h"
#include "swad_course.h" #include "swad_course.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_forum.h" #include "swad_forum.h"
@ -257,7 +258,7 @@ static void Msg_PutFormMsgUsrs (struct Msg_Messages *Messages,
if ((Messages->Reply.IsReply = Par_GetParToBool ("IsReply"))) if ((Messages->Reply.IsReply = Par_GetParToBool ("IsReply")))
/* Get original message code */ /* Get original message code */
if ((Messages->Reply.OriginalMsgCod = Msg_GetParamMsgCod ()) <= 0) if ((Messages->Reply.OriginalMsgCod = Msg_GetParamMsgCod ()) <= 0)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
/***** Get user's code of possible preselected recipient *****/ /***** Get user's code of possible preselected recipient *****/
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ()) // There is a preselected recipient if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ()) // There is a preselected recipient
@ -620,7 +621,7 @@ static void Msg_WriteFormSubjectAndContentMsgToUsrs (struct Msg_Messages *Messag
" FROM msg_content" " FROM msg_content"
" WHERE MsgCod=%ld", " WHERE MsgCod=%ld",
MsgCod) != 1) MsgCod) != 1)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -770,7 +771,7 @@ void Msg_RecMsgFromUsr (void)
if ((IsReply = Par_GetParToBool ("IsReply"))) if ((IsReply = Par_GetParToBool ("IsReply")))
/* Get original message code */ /* Get original message code */
if ((OriginalMsgCod = Msg_GetParamMsgCod ()) <= 0) if ((OriginalMsgCod = Msg_GetParamMsgCod ()) <= 0)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
/* Get user's code of possible preselected recipient */ /* Get user's code of possible preselected recipient */
Usr_GetParamOtherUsrCodEncryptedAndGetListIDs (); Usr_GetParamOtherUsrCodEncryptedAndGetListIDs ();
@ -1197,7 +1198,7 @@ void Msg_DelSntMsg (void)
/***** Get the code of the message to delete *****/ /***** Get the code of the message to delete *****/
if ((MsgCod = Msg_GetParamMsgCod ()) <= 0) if ((MsgCod = Msg_GetParamMsgCod ()) <= 0)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
/***** Delete the message *****/ /***** Delete the message *****/
/* Delete the sent message */ /* Delete the sent message */
@ -1219,7 +1220,7 @@ void Msg_DelRecMsg (void)
/***** Get the code of the message to delete *****/ /***** Get the code of the message to delete *****/
if ((MsgCod = Msg_GetParamMsgCod ()) <= 0) if ((MsgCod = Msg_GetParamMsgCod ()) <= 0)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
/***** Delete the message *****/ /***** Delete the message *****/
/* Delete the received message */ /* Delete the received message */
@ -1243,7 +1244,7 @@ void Msg_ExpSntMsg (void)
/***** Get the code of the message to expand *****/ /***** Get the code of the message to expand *****/
if ((Messages.ExpandedMsgCod = Msg_GetParamMsgCod ()) <= 0) if ((Messages.ExpandedMsgCod = Msg_GetParamMsgCod ()) <= 0)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
/***** Expand the message *****/ /***** Expand the message *****/
Msg_ExpandSentMsg (Messages.ExpandedMsgCod); Msg_ExpandSentMsg (Messages.ExpandedMsgCod);
@ -1265,7 +1266,7 @@ void Msg_ExpRecMsg (void)
/***** Get the code of the message to expand *****/ /***** Get the code of the message to expand *****/
if ((Messages.ExpandedMsgCod = Msg_GetParamMsgCod ()) <= 0) if ((Messages.ExpandedMsgCod = Msg_GetParamMsgCod ()) <= 0)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
/***** Expand the message *****/ /***** Expand the message *****/
Msg_ExpandReceivedMsg (Messages.ExpandedMsgCod); Msg_ExpandReceivedMsg (Messages.ExpandedMsgCod);
@ -1289,7 +1290,7 @@ void Msg_ConSntMsg (void)
/***** Get the code of the message to contract *****/ /***** Get the code of the message to contract *****/
if ((MsgCod = Msg_GetParamMsgCod ()) <= 0) if ((MsgCod = Msg_GetParamMsgCod ()) <= 0)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
/***** Contract the message *****/ /***** Contract the message *****/
Msg_ContractSentMsg (MsgCod); Msg_ContractSentMsg (MsgCod);
@ -1308,7 +1309,7 @@ void Msg_ConRecMsg (void)
/***** Get the code of the message to contract *****/ /***** Get the code of the message to contract *****/
if ((MsgCod = Msg_GetParamMsgCod ()) <= 0) if ((MsgCod = Msg_GetParamMsgCod ()) <= 0)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
/***** Contract the message *****/ /***** Contract the message *****/
Msg_ContractReceivedMsg (MsgCod); Msg_ContractReceivedMsg (MsgCod);
@ -1481,7 +1482,7 @@ static unsigned long Msg_DelSomeRecOrSntMsgsUsr (const struct Msg_Messages *Mess
NumMsg++) NumMsg++)
{ {
if ((MsgCod = DB_GetNextCode (mysql_res)) <= 0) if ((MsgCod = DB_GetNextCode (mysql_res)) <= 0)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
switch (Messages->TypeOfMessages) switch (Messages->TypeOfMessages)
{ {
@ -1777,7 +1778,7 @@ static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Messages->FilterCrsCod, Messages->FilterCrsCod,
FilterFromToSubquery) < 0) FilterFromToSubquery) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
@ -1790,7 +1791,7 @@ static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
" AND msg_snt.CrsCod=%ld", " AND msg_snt.CrsCod=%ld",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
Messages->FilterCrsCod) < 0) Messages->FilterCrsCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
} }
else // If no origin course selected else // If no origin course selected
@ -1805,7 +1806,7 @@ static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
" AND msg_snt.UsrCod=usr_data.UsrCod%s", " AND msg_snt.UsrCod=usr_data.UsrCod%s",
Gbl.Usrs.Me.UsrDat.UsrCod, Gbl.Usrs.Me.UsrDat.UsrCod,
FilterFromToSubquery) < 0) FilterFromToSubquery) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
@ -1814,7 +1815,7 @@ static unsigned Msg_GetNumUnreadMsgs (const struct Msg_Messages *Messages,
" WHERE UsrCod=%ld" " WHERE UsrCod=%ld"
" AND Open='N'", " AND Open='N'",
Gbl.Usrs.Me.UsrDat.UsrCod) < 0) Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
} }
@ -2010,7 +2011,7 @@ static void Msg_ShowSentOrReceivedMessages (struct Msg_Messages *Messages)
{ {
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%ld",&MsgCod) != 1) if (sscanf (row[0],"%ld",&MsgCod) != 1)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
if (MsgCod == Messages->ExpandedMsgCod) // Expanded message found if (MsgCod == Messages->ExpandedMsgCod) // Expanded message found
{ {
@ -2045,7 +2046,7 @@ static void Msg_ShowSentOrReceivedMessages (struct Msg_Messages *Messages)
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%ld",&MsgCod) != 1) if (sscanf (row[0],"%ld",&MsgCod) != 1)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
NumMsg = NumRows - NumRow + 1; NumMsg = NumRows - NumRow + 1;
Msg_ShowASentOrReceivedMessage (Messages,NumMsg,MsgCod); Msg_ShowASentOrReceivedMessage (Messages,NumMsg,MsgCod);
} }
@ -2133,7 +2134,7 @@ static unsigned Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messages,
" AND msg_snt_deleted.UsrCod=usr_data.UsrCod%s)", " AND msg_snt_deleted.UsrCod=usr_data.UsrCod%s)",
UsrCod,StrUnreadMsg,Messages->FilterCrsCod,FilterFromToSubquery, UsrCod,StrUnreadMsg,Messages->FilterCrsCod,FilterFromToSubquery,
UsrCod,StrUnreadMsg,Messages->FilterCrsCod,FilterFromToSubquery) < 0) UsrCod,StrUnreadMsg,Messages->FilterCrsCod,FilterFromToSubquery) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
@ -2154,7 +2155,7 @@ static unsigned Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messages,
" AND msg_snt_deleted.CrsCod=%ld)", " AND msg_snt_deleted.CrsCod=%ld)",
UsrCod,StrUnreadMsg,Messages->FilterCrsCod, UsrCod,StrUnreadMsg,Messages->FilterCrsCod,
UsrCod,StrUnreadMsg,Messages->FilterCrsCod) < 0) UsrCod,StrUnreadMsg,Messages->FilterCrsCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
break; break;
case Msg_SENT: case Msg_SENT:
@ -2181,7 +2182,7 @@ static unsigned Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messages,
"%s)", "%s)",
UsrCod,Messages->FilterCrsCod,FilterFromToSubquery, UsrCod,Messages->FilterCrsCod,FilterFromToSubquery,
UsrCod,Messages->FilterCrsCod,FilterFromToSubquery) < 0) UsrCod,Messages->FilterCrsCod,FilterFromToSubquery) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
@ -2190,7 +2191,7 @@ static unsigned Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messages,
" WHERE UsrCod=%ld" " WHERE UsrCod=%ld"
" AND CrsCod=%ld", " AND CrsCod=%ld",
UsrCod,Messages->FilterCrsCod) < 0) UsrCod,Messages->FilterCrsCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
break; break;
default: // Not aplicable here default: // Not aplicable here
@ -2225,7 +2226,7 @@ static unsigned Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messages,
"%s)", "%s)",
UsrCod,StrUnreadMsg,FilterFromToSubquery, UsrCod,StrUnreadMsg,FilterFromToSubquery,
UsrCod,StrUnreadMsg,FilterFromToSubquery) < 0) UsrCod,StrUnreadMsg,FilterFromToSubquery) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
@ -2236,7 +2237,7 @@ static unsigned Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messages,
" WHERE UsrCod=%ld" " WHERE UsrCod=%ld"
"%s", "%s",
UsrCod,StrUnreadMsg) < 0) UsrCod,StrUnreadMsg) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
break; break;
case Msg_SENT: case Msg_SENT:
@ -2259,7 +2260,7 @@ static unsigned Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messages,
" AND msg_rcv_deleted.UsrCod=usr_data.UsrCod%s)", " AND msg_rcv_deleted.UsrCod=usr_data.UsrCod%s)",
UsrCod,FilterFromToSubquery, UsrCod,FilterFromToSubquery,
UsrCod,FilterFromToSubquery) < 0) UsrCod,FilterFromToSubquery) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
@ -2267,7 +2268,7 @@ static unsigned Msg_GetSentOrReceivedMsgs (const struct Msg_Messages *Messages,
" FROM msg_snt" " FROM msg_snt"
" WHERE UsrCod=%ld", " WHERE UsrCod=%ld",
UsrCod) < 0) UsrCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
break; break;
default: // Not aplicable here default: // Not aplicable here
@ -2720,12 +2721,12 @@ static void Msg_SetNumMsgsStr (const struct Msg_Messages *Messages,
{ {
if (asprintf (NumMsgsStr,"1 %s, 1 %s", if (asprintf (NumMsgsStr,"1 %s, 1 %s",
Txt_message_received,Txt_unread_MESSAGE) < 0) Txt_message_received,Txt_unread_MESSAGE) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (NumMsgsStr,"1 %s",Txt_message_received) < 0) if (asprintf (NumMsgsStr,"1 %s",Txt_message_received) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
} }
else else
@ -2734,21 +2735,21 @@ static void Msg_SetNumMsgsStr (const struct Msg_Messages *Messages,
{ {
if (asprintf (NumMsgsStr,"%u %s", if (asprintf (NumMsgsStr,"%u %s",
Messages->NumMsgs,Txt_messages_received) < 0) Messages->NumMsgs,Txt_messages_received) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else if (NumUnreadMsgs == 1) else if (NumUnreadMsgs == 1)
{ {
if (asprintf (NumMsgsStr,"%u %s, 1 %s", if (asprintf (NumMsgsStr,"%u %s, 1 %s",
Messages->NumMsgs,Txt_messages_received, Messages->NumMsgs,Txt_messages_received,
Txt_unread_MESSAGE) < 0) Txt_unread_MESSAGE) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (NumMsgsStr,"%u %s, %u %s", if (asprintf (NumMsgsStr,"%u %s, %u %s",
Messages->NumMsgs,Txt_messages_received, Messages->NumMsgs,Txt_messages_received,
NumUnreadMsgs,Txt_unread_MESSAGES) < 0) NumUnreadMsgs,Txt_unread_MESSAGES) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
} }
break; break;
@ -2756,13 +2757,13 @@ static void Msg_SetNumMsgsStr (const struct Msg_Messages *Messages,
if (Messages->NumMsgs == 1) if (Messages->NumMsgs == 1)
{ {
if (asprintf (NumMsgsStr,"1 %s",Txt_message_sent) < 0) if (asprintf (NumMsgsStr,"1 %s",Txt_message_sent) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (NumMsgsStr,"%u %s", if (asprintf (NumMsgsStr,"%u %s",
Messages->NumMsgs,Txt_messages_sent) < 0) Messages->NumMsgs,Txt_messages_sent) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
break; break;
default: default:
@ -3105,7 +3106,7 @@ static void Msg_GetMsgSntData (long MsgCod,long *CrsCod,long *UsrCod,
/* Result should have a unique row */ /* Result should have a unique row */
if (NumRows != 1) if (NumRows != 1)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
/* Get number of rows */ /* Get number of rows */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -3158,7 +3159,7 @@ static void Msg_GetMsgContent (long MsgCod,char Content[Cns_MAX_BYTES_LONG_TEXT
" FROM msg_content" " FROM msg_content"
" WHERE MsgCod=%ld", " WHERE MsgCod=%ld",
MsgCod) != 1) MsgCod) != 1)
Lay_WrongMessageExit (); Err_WrongMessageExit ();
/***** Get number of rows *****/ /***** Get number of rows *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -3216,7 +3217,7 @@ static void Msg_GetStatusOfReceivedMsg (long MsgCod,bool *Open,bool *Replied,boo
" AND UsrCod=%ld", " AND UsrCod=%ld",
MsgCod, MsgCod,
Gbl.Usrs.Me.UsrDat.UsrCod) != 1) Gbl.Usrs.Me.UsrDat.UsrCod) != 1)
Lay_ShowErrorAndExit ("Error when getting if a received message has been replied/expanded."); Err_ShowErrorAndExit ("Error when getting if a received message has been replied/expanded.");
/***** Get number of rows *****/ /***** Get number of rows *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -3461,7 +3462,7 @@ void Msg_GetNotifMessage (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
{ {
Length = strlen (row[1]); Length = strlen (row[1]);
if ((*ContentStr = malloc (Length + 1)) == NULL) if ((*ContentStr = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (*ContentStr,row[1],Length); Str_Copy (*ContentStr,row[1],Length);
} }
} }
@ -3949,7 +3950,7 @@ void Msg_WriteMsgDate (time_t TimeUTC,const char *ClassBackground)
UniqueId++; UniqueId++;
if (asprintf (&Id,"msg_date_%u",UniqueId) < 0) if (asprintf (&Id,"msg_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Start cell *****/ /***** Start cell *****/
HTM_TD_Begin ("id=\"%s\" class=\"%s RT\" style=\"width:106px;\"", HTM_TD_Begin ("id=\"%s\" class=\"%s RT\" style=\"width:106px;\"",
@ -4053,7 +4054,7 @@ void Msg_BanSenderWhenShowingMsgs (void)
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat, if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,
Usr_DONT_GET_PREFS, Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS)) Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Lay_WrongUserExit (); Err_WrongUserExit ();
/***** Insert pair (sender's code - my code) in table of banned senders if not inserted *****/ /***** Insert pair (sender's code - my code) in table of banned senders if not inserted *****/
DB_QueryREPLACE ("can not ban sender", DB_QueryREPLACE ("can not ban sender",
@ -4113,7 +4114,7 @@ static void Msg_UnbanSender (void)
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat, if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,
Usr_DONT_GET_PREFS, Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS)) Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Lay_WrongUserExit (); Err_WrongUserExit ();
/***** Remove pair (sender's code - my code) from table of banned senders *****/ /***** Remove pair (sender's code - my code) from table of banned senders *****/
DB_QueryDELETE ("can not ban sender", DB_QueryDELETE ("can not ban sender",

View File

@ -29,6 +29,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -534,7 +535,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -571,7 +572,7 @@ void Net_ShowWebAndSocialNetworksStats (void)
{ {
/* Get number of users (row[1]) */ /* Get number of users (row[1]) */
if (sscanf (row[1],"%u",&NumUsrs) != 1) if (sscanf (row[1],"%u",&NumUsrs) != 1)
Lay_ShowErrorAndExit ("Error when getting number of files."); Err_ShowErrorAndExit ("Error when getting number of files.");
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);

View File

@ -34,6 +34,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -447,7 +448,7 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing,long HighlightNotCod)
/* Get notice code (row[0]) */ /* Get notice code (row[0]) */
if (sscanf (row[0],"%ld",&NotCod) != 1) if (sscanf (row[0],"%ld",&NotCod) != 1)
Lay_WrongNoticeExit (); Err_WrongNoticeExit ();
/* Get creation time (row[1] holds the UTC date-time) */ /* Get creation time (row[1] holds the UTC date-time) */
TimeUTC = Dat_GetUNIXTimeFromStr (row[1]); TimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
@ -720,7 +721,7 @@ static void Not_DrawANotice (Not_Listing_t TypeNoticesListing,
HTM_BUTTON_SUBMIT_Begin (Txt_See_full_notice,"BT_LINK RT",NULL); HTM_BUTTON_SUBMIT_Begin (Txt_See_full_notice,"BT_LINK RT",NULL);
} }
if (asprintf (&Id,"not_date_%u",UniqueId) < 0) if (asprintf (&Id,"not_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_SPAN_Begin ("id=\"%s\"",Id); HTM_SPAN_Begin ("id=\"%s\"",Id);
HTM_SPAN_End (); HTM_SPAN_End ();
if (TypeNoticesListing == Not_LIST_BRIEF_NOTICES) if (TypeNoticesListing == Not_LIST_BRIEF_NOTICES)
@ -825,7 +826,7 @@ void Not_GetSummaryAndContentNotice (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
{ {
Length = strlen (row[0]); Length = strlen (row[0]);
if ((*ContentStr = malloc (Length + 1)) == NULL) if ((*ContentStr = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (*ContentStr,row[0],Length); Str_Copy (*ContentStr,row[0],Length);
} }
} }
@ -928,20 +929,20 @@ unsigned Not_GetNumNotices (Hie_Lvl_Level_t Scope,Not_Status_t Status,unsigned *
Status); Status);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
/***** Get number of notices *****/ /***** Get number of notices *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumNotices) != 1) if (sscanf (row[0],"%u",&NumNotices) != 1)
Lay_ShowErrorAndExit ("Error when getting number of notices."); Err_ShowErrorAndExit ("Error when getting number of notices.");
/***** Get number of notifications by email *****/ /***** Get number of notifications by email *****/
if (row[1]) if (row[1])
{ {
if (sscanf (row[1],"%u",NumNotif) != 1) if (sscanf (row[1],"%u",NumNotif) != 1)
Lay_ShowErrorAndExit ("Error when getting number of notifications of notices."); Err_ShowErrorAndExit ("Error when getting number of notifications of notices.");
} }
else else
*NumNotif = 0; *NumNotif = 0;
@ -1034,20 +1035,20 @@ unsigned Not_GetNumNoticesDeleted (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
/***** Get number of notices *****/ /***** Get number of notices *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumNotices) != 1) if (sscanf (row[0],"%u",&NumNotices) != 1)
Lay_ShowErrorAndExit ("Error when getting number of deleted notices."); Err_ShowErrorAndExit ("Error when getting number of deleted notices.");
/***** Get number of notifications by email *****/ /***** Get number of notifications by email *****/
if (row[1]) if (row[1])
{ {
if (sscanf (row[1],"%u",NumNotif) != 1) if (sscanf (row[1],"%u",NumNotif) != 1)
Lay_ShowErrorAndExit ("Error when getting number of notifications of deleted notices."); Err_ShowErrorAndExit ("Error when getting number of notifications of deleted notices.");
} }
else else
*NumNotif = 0; *NumNotif = 0;

View File

@ -38,6 +38,7 @@
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_enrolment.h" #include "swad_enrolment.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_follow.h" #include "swad_follow.h"
#include "swad_form.h" #include "swad_form.h"
@ -455,7 +456,7 @@ void Ntf_ShowMyNotifications (void)
/* Get status (row[8]) */ /* Get status (row[8]) */
if (sscanf (row[8],"%u",&Status) != 1) if (sscanf (row[8],"%u",&Status) != 1)
Lay_WrongStatusExit (); Err_WrongStatusExit ();
StatusTxt = Ntf_GetStatusTxtFromStatusBits (Status); StatusTxt = Ntf_GetStatusTxtFromStatusBits (Status);
if (Status & Ntf_STATUS_BIT_REMOVED) // The source of the notification was removed if (Status & Ntf_STATUS_BIT_REMOVED) // The source of the notification was removed
@ -1851,7 +1852,7 @@ static void Ntf_SendPendingNotifByEMailToOneUsr (struct UsrData *ToUsrDat,unsign
FileNameMail); FileNameMail);
ReturnCode = system (Command); ReturnCode = system (Command);
if (ReturnCode == -1) if (ReturnCode == -1)
Lay_ShowErrorAndExit ("Error when running script to send email."); Err_ShowErrorAndExit ("Error when running script to send email.");
/***** Remove temporary file *****/ /***** Remove temporary file *****/
unlink (FileNameMail); unlink (FileNameMail);
@ -1928,9 +1929,9 @@ static void Ntf_GetNumNotifSent (long DegCod,long CrsCod,
{ {
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",NumEvents) != 1) if (sscanf (row[0],"%u",NumEvents) != 1)
Lay_ShowErrorAndExit ("Error when getting number of notifications sent by email."); Err_ShowErrorAndExit ("Error when getting number of notifications sent by email.");
if (sscanf (row[1],"%u",NumMails) != 1) if (sscanf (row[1],"%u",NumMails) != 1)
Lay_ShowErrorAndExit ("Error when getting number of notifications sent by email."); Err_ShowErrorAndExit ("Error when getting number of notifications sent by email.");
} }
else else
*NumEvents = *NumMails = 0; *NumEvents = *NumMails = 0;

View File

@ -34,6 +34,7 @@
#include "swad_agenda.h" #include "swad_agenda.h"
#include "swad_attendance.h" #include "swad_attendance.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_exam.h" #include "swad_exam.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_forum.h" #include "swad_forum.h"
@ -269,9 +270,9 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
break; break;
} }
if (asprintf (&ClassLink,"BT_LINK LT %s",ClassTxt) < 0) if (asprintf (&ClassLink,"BT_LINK LT %s",ClassTxt) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (asprintf (&Title,Txt_Page_X_of_Y,1,Pagination->NumPags) < 0) if (asprintf (&Title,Txt_Page_X_of_Y,1,Pagination->NumPags) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL); HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL);
free (Title); free (Title);
free (ClassLink); free (ClassLink);
@ -296,7 +297,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
if (Pagination->MoreThanOnePage) if (Pagination->MoreThanOnePage)
{ {
if (asprintf (&ClassLink,"BT_LINK PAG %s",ClassTxt) < 0) if (asprintf (&ClassLink,"BT_LINK PAG %s",ClassTxt) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Possible link to page 1 *****/ /***** Possible link to page 1 *****/
if (Pagination->StartPage > 1) if (Pagination->StartPage > 1)
@ -396,7 +397,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
break; break;
} }
if (asprintf (&Title,Txt_Page_X_of_Y,1,Pagination->NumPags) < 0) if (asprintf (&Title,Txt_Page_X_of_Y,1,Pagination->NumPags) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL); HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL);
HTM_Unsigned (1); HTM_Unsigned (1);
HTM_BUTTON_End (); HTM_BUTTON_End ();
@ -510,7 +511,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
} }
if (asprintf (&Title,Txt_Page_X_of_Y, if (asprintf (&Title,Txt_Page_X_of_Y,
Pagination->LeftPage,Pagination->NumPags) < 0) Pagination->LeftPage,Pagination->NumPags) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL); HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL);
HTM_Unsigned (Pagination->LeftPage); HTM_Unsigned (Pagination->LeftPage);
HTM_BUTTON_End (); HTM_BUTTON_End ();
@ -530,7 +531,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
NumPage++) NumPage++)
{ {
if (asprintf (&Title,Txt_Page_X_of_Y,NumPage,Pagination->NumPags) < 0) if (asprintf (&Title,Txt_Page_X_of_Y,NumPage,Pagination->NumPags) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (!LinkToPagCurrent && NumPage == Pagination->CurrentPage) if (!LinkToPagCurrent && NumPage == Pagination->CurrentPage)
{ {
HTM_SPAN_Begin ("title=\"%s\" class=\"PAG_CUR %s\"",Title,ClassTxt); HTM_SPAN_Begin ("title=\"%s\" class=\"PAG_CUR %s\"",Title,ClassTxt);
@ -747,7 +748,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
} }
if (asprintf (&Title,Txt_Page_X_of_Y, if (asprintf (&Title,Txt_Page_X_of_Y,
Pagination->RightPage,Pagination->NumPags) < 0) Pagination->RightPage,Pagination->NumPags) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL); HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL);
HTM_Unsigned (Pagination->RightPage); HTM_Unsigned (Pagination->RightPage);
HTM_BUTTON_End (); HTM_BUTTON_End ();
@ -860,7 +861,7 @@ void Pag_WriteLinksToPages (Pag_WhatPaginate_t WhatPaginate,
} }
if (asprintf (&Title,Txt_Page_X_of_Y, if (asprintf (&Title,Txt_Page_X_of_Y,
Pagination->NumPags,Pagination->NumPags) < 0) Pagination->NumPags,Pagination->NumPags) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL); HTM_BUTTON_SUBMIT_Begin (Title,ClassLink,NULL);
HTM_Unsigned (Pagination->NumPags); HTM_Unsigned (Pagination->NumPags);
HTM_BUTTON_End (); HTM_BUTTON_End ();

View File

@ -32,6 +32,7 @@
#include "swad_action.h" #include "swad_action.h"
#include "swad_config.h" #include "swad_config.h"
#include "swad_error.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
#include "swad_parameter.h" #include "swad_parameter.h"
@ -179,7 +180,7 @@ static void Par_GetBoundary (void)
/***** Check that boundary string is not too long *****/ /***** Check that boundary string is not too long *****/
if (2 + 2 + strlen (PtrToBoundary) > Par_MAX_BYTES_BOUNDARY_WITH_CR_LF) if (2 + 2 + strlen (PtrToBoundary) > Par_MAX_BYTES_BOUNDARY_WITH_CR_LF)
Lay_ShowErrorAndExit ("Delimiter string too long."); Err_ShowErrorAndExit ("Delimiter string too long.");
/***** Create boundary strings *****/ /***** Create boundary strings *****/
snprintf (Gbl.Boundary.StrWithoutCRLF,sizeof (Gbl.Boundary.StrWithoutCRLF), snprintf (Gbl.Boundary.StrWithoutCRLF,sizeof (Gbl.Boundary.StrWithoutCRLF),
@ -258,7 +259,7 @@ static void Par_CreateListOfParamsFromQueryString (void)
{ {
/* Allocate space for a new parameter initialized to 0 */ /* Allocate space for a new parameter initialized to 0 */
if ((NewParam = calloc (1,sizeof (*NewParam))) == NULL) if ((NewParam = calloc (1,sizeof (*NewParam))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/* Link the previous element in list with the current element */ /* Link the previous element in list with the current element */
if (CurPos == 0) if (CurPos == 0)
@ -334,7 +335,7 @@ static void Par_CreateListOfParamsFromTmpFile (void)
{ {
/* Allocate space for a new parameter initialized to 0 */ /* Allocate space for a new parameter initialized to 0 */
if ((NewParam = calloc (1,sizeof (*NewParam))) == NULL) if ((NewParam = calloc (1,sizeof (*NewParam))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/* Link the previous element in list with the current element */ /* Link the previous element in list with the current element */
if (CurPos == 0) if (CurPos == 0)
@ -565,7 +566,7 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
"Multiple parameter <strong>%s</strong> too large," "Multiple parameter <strong>%s</strong> too large,"
" it exceed the maximum allowed size (%lu bytes).", " it exceed the maximum allowed size (%lu bytes).",
ParamName,(unsigned long) MaxBytes); ParamName,(unsigned long) MaxBytes);
Lay_ShowErrorAndExit (ErrorTxt); Err_ShowErrorAndExit (ErrorTxt);
} }
/* Copy separator */ /* Copy separator */
@ -584,7 +585,7 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
"Parameter <strong>%s</strong> too large," "Parameter <strong>%s</strong> too large,"
" it exceed the maximum allowed size (%lu bytes).", " it exceed the maximum allowed size (%lu bytes).",
ParamName,(unsigned long) MaxBytes); ParamName,(unsigned long) MaxBytes);
Lay_ShowErrorAndExit (ErrorTxt); Err_ShowErrorAndExit (ErrorTxt);
} }
/* Copy parameter value */ /* Copy parameter value */
@ -602,7 +603,7 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
fseek (Gbl.F.Tmp,Param->Value.Start,SEEK_SET); fseek (Gbl.F.Tmp,Param->Value.Start,SEEK_SET);
if (fread (PtrDst,sizeof (char),Param->Value.Length,Gbl.F.Tmp) != if (fread (PtrDst,sizeof (char),Param->Value.Length,Gbl.F.Tmp) !=
Param->Value.Length) Param->Value.Length)
Lay_ShowErrorAndExit ("Error while getting value of parameter."); Err_ShowErrorAndExit ("Error while getting value of parameter.");
} }
break; break;
} }

View File

@ -35,6 +35,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_enrolment.h" #include "swad_enrolment.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -382,14 +383,14 @@ void Pwd_ChkIdLoginAndSendNewPwd (void)
Pwd_SetMyPendingPassword (NewRandomPlainPassword); Pwd_SetMyPendingPassword (NewRandomPlainPassword);
break; break;
case 1: case 1:
Lay_ShowErrorAndExit (Txt_There_was_a_problem_sending_an_email_automatically); Err_ShowErrorAndExit (Txt_There_was_a_problem_sending_an_email_automatically);
break; break;
default: default:
snprintf (ErrorTxt,sizeof (ErrorTxt), snprintf (ErrorTxt,sizeof (ErrorTxt),
"Internal error: an email message has not been sent successfully." "Internal error: an email message has not been sent successfully."
" Error code returned by the script: %d", " Error code returned by the script: %d",
ReturnCode); ReturnCode);
Lay_ShowErrorAndExit (ErrorTxt); Err_ShowErrorAndExit (ErrorTxt);
break; break;
} }
} }
@ -457,7 +458,7 @@ int Pwd_SendNewPasswordByEmail (char NewRandomPlainPassword[Pwd_MAX_BYTES_PLAIN_
FileNameMail); FileNameMail);
ReturnCode = system (Command); ReturnCode = system (Command);
if (ReturnCode == -1) if (ReturnCode == -1)
Lay_ShowErrorAndExit ("Error when running script to send email."); Err_ShowErrorAndExit ("Error when running script to send email.");
/***** Remove temporary file *****/ /***** Remove temporary file *****/
unlink (FileNameMail); unlink (FileNameMail);
@ -578,7 +579,7 @@ static unsigned Pwd_GetNumOtherUsrsWhoUseThisPassword (const char *EncryptedPass
if (UsrCod > 0) if (UsrCod > 0)
{ {
if (asprintf (&SubQuery," AND UsrCod<>%ld",UsrCod) < 0) if (asprintf (&SubQuery," AND UsrCod<>%ld",UsrCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
SubQuery = ""; SubQuery = "";

View File

@ -40,6 +40,7 @@
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_enrolment.h" #include "swad_enrolment.h"
#include "swad_error.h"
#include "swad_file.h" #include "swad_file.h"
#include "swad_file_browser.h" #include "swad_file_browser.h"
#include "swad_follow.h" #include "swad_follow.h"
@ -671,7 +672,7 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
FileNamePhotoTmp); FileNamePhotoTmp);
ReturnCode = system (Command); ReturnCode = system (Command);
if (ReturnCode == -1) if (ReturnCode == -1)
Lay_ShowErrorAndExit ("Error when running command to process photo and detect faces."); Err_ShowErrorAndExit ("Error when running command to process photo and detect faces.");
/***** Write message depending on return code *****/ /***** Write message depending on return code *****/
ReturnCode = WEXITSTATUS(ReturnCode); ReturnCode = WEXITSTATUS(ReturnCode);
@ -682,7 +683,7 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
snprintf (FileNameTxtMap,sizeof (FileNameTxtMap),"%s/%s_map.txt", snprintf (FileNameTxtMap,sizeof (FileNameTxtMap),"%s/%s_map.txt",
Cfg_PATH_PHOTO_TMP_PUBLIC,Gbl.UniqueNameEncrypted); Cfg_PATH_PHOTO_TMP_PUBLIC,Gbl.UniqueNameEncrypted);
if ((FileTxtMap = fopen (FileNameTxtMap,"rb")) == NULL) if ((FileTxtMap = fopen (FileNameTxtMap,"rb")) == NULL)
Lay_ShowErrorAndExit ("Can not read text file with coordinates of detected faces."); Err_ShowErrorAndExit ("Can not read text file with coordinates of detected faces.");
/***** Read file with coordinates for image map and compute the number of faces *****/ /***** Read file with coordinates for image map and compute the number of faces *****/
NumLastForm = Gbl.Form.Num; NumLastForm = Gbl.Form.Num;
@ -730,7 +731,7 @@ static bool Pho_ReceivePhotoAndDetectFaces (bool ItsMe,const struct UsrData *Usr
"Photo could not be processed successfully.<br />" "Photo could not be processed successfully.<br />"
"Error code returned by the program of processing: %d", "Error code returned by the program of processing: %d",
ReturnCode); ReturnCode);
Lay_ShowErrorAndExit (ErrorTxt); Err_ShowErrorAndExit (ErrorTxt);
break; break;
} }
@ -906,7 +907,7 @@ static void Pho_UpdatePhoto2 (void)
{ {
HTM_TD_Begin ("class=\"DAT CT\" style=\"width:33%%;\""); HTM_TD_Begin ("class=\"DAT CT\" style=\"width:33%%;\"");
if (asprintf (&Img,"%s_paso%u.jpg",Gbl.Usrs.FileNamePhoto,NumPhoto + 1) < 0) if (asprintf (&Img,"%s_paso%u.jpg",Gbl.Usrs.FileNamePhoto,NumPhoto + 1) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (Cfg_URL_PHOTO_TMP_PUBLIC,Img,Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto], HTM_IMG (Cfg_URL_PHOTO_TMP_PUBLIC,Img,Txt_PHOTO_PROCESSING_CAPTIONS[NumPhoto],
"style=\"width:%upx;height:%upx;\"", "style=\"width:%upx;height:%upx;\"",
Pho_PHOTO_REAL_WIDTH,Pho_PHOTO_REAL_HEIGHT); Pho_PHOTO_REAL_WIDTH,Pho_PHOTO_REAL_HEIGHT);
@ -1048,7 +1049,7 @@ bool Pho_BuildLinkToPhoto (const struct UsrData *UsrDat,char PhotoURL[PATH_MAX +
/***** Create a symbolic link to the private photo, if not exists *****/ /***** Create a symbolic link to the private photo, if not exists *****/
if (!Fil_CheckIfPathExists (PathPublPhoto)) if (!Fil_CheckIfPathExists (PathPublPhoto))
if (symlink (PathPrivPhoto,PathPublPhoto) != 0) if (symlink (PathPrivPhoto,PathPublPhoto) != 0)
Lay_ShowErrorAndExit ("Can not create public link" Err_ShowErrorAndExit ("Can not create public link"
" to access to user's private photo"); " to access to user's private photo");
/***** Create the public URL of the photo *****/ /***** Create the public URL of the photo *****/
@ -1387,7 +1388,7 @@ void Pho_CalcPhotoDegree (void)
/***** Prevent the computing of an average photo too recently updated *****/ /***** Prevent the computing of an average photo too recently updated *****/
if (Pho_GetTimeAvgPhotoWasComputed (DegCod) >= if (Pho_GetTimeAvgPhotoWasComputed (DegCod) >=
Gbl.StartExecutionTimeUTC - Cfg_MIN_TIME_TO_RECOMPUTE_AVG_PHOTO) Gbl.StartExecutionTimeUTC - Cfg_MIN_TIME_TO_RECOMPUTE_AVG_PHOTO)
Lay_ShowErrorAndExit ("Average photo has been computed recently."); Err_ShowErrorAndExit ("Average photo has been computed recently.");
/***** Get list of students in this degree *****/ /***** Get list of students in this degree *****/
Usr_GetUnorderedStdsCodesInDeg (DegCod); Usr_GetUnorderedStdsCodesInDeg (DegCod);
@ -1590,7 +1591,7 @@ static void Pho_ComputeAveragePhoto (long DegCod,Usr_Sex_t Sex,Rol_Role_t Role,
/***** Build name for file with average photo *****/ /***** Build name for file with average photo *****/
if (asprintf (&PathRelAvgPhoto,"%s/%ld_%s.jpg", if (asprintf (&PathRelAvgPhoto,"%s/%ld_%s.jpg",
DirAvgPhotosRelPath,DegCod,Usr_StringsSexDB[Sex]) < 0) DirAvgPhotosRelPath,DegCod,Usr_StringsSexDB[Sex]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Remove old file if exists *****/ /***** Remove old file if exists *****/
if (Fil_CheckIfPathExists (PathRelAvgPhoto)) // If file exists if (Fil_CheckIfPathExists (PathRelAvgPhoto)) // If file exists
@ -1599,9 +1600,9 @@ static void Pho_ComputeAveragePhoto (long DegCod,Usr_Sex_t Sex,Rol_Role_t Role,
/***** Build names for text file with photo paths *****/ /***** Build names for text file with photo paths *****/
if (asprintf (&FileNamePhotoNames,"%s/%ld.txt", if (asprintf (&FileNamePhotoNames,"%s/%ld.txt",
Cfg_PATH_PHOTO_TMP_PRIVATE,DegCod) < 0) Cfg_PATH_PHOTO_TMP_PRIVATE,DegCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if ((FilePhotoNames = fopen (FileNamePhotoNames,"wb")) == NULL) if ((FilePhotoNames = fopen (FileNamePhotoNames,"wb")) == NULL)
Lay_ShowErrorAndExit ("Can not open file to compute average photo."); Err_ShowErrorAndExit ("Can not open file to compute average photo.");
/***** Loop writing file names in text file *****/ /***** Loop writing file names in text file *****/
for (NumUsr = 0; for (NumUsr = 0;
@ -1632,11 +1633,11 @@ static void Pho_ComputeAveragePhoto (long DegCod,Usr_Sex_t Sex,Rol_Role_t Role,
FileNamePhotoNames,PathRelAvgPhoto); FileNamePhotoNames,PathRelAvgPhoto);
ReturnCode = system (StrCallToProgram); ReturnCode = system (StrCallToProgram);
if (ReturnCode == -1) if (ReturnCode == -1)
Lay_ShowErrorAndExit ("Error when running program that computes the average photo."); Err_ShowErrorAndExit ("Error when running program that computes the average photo.");
/* Write message depending on the return code */ /* Write message depending on the return code */
if (WEXITSTATUS(ReturnCode)) if (WEXITSTATUS(ReturnCode))
Lay_ShowErrorAndExit ("The average photo has not been computed successfully."); Err_ShowErrorAndExit ("The average photo has not been computed successfully.");
} }
free (PathRelAvgPhoto); free (PathRelAvgPhoto);
@ -2135,7 +2136,7 @@ static void Pho_ShowOrPrintClassPhotoDegrees (struct Pho_DegPhotos *DegPhotos,
{ {
/***** Get next degree *****/ /***** Get next degree *****/
if ((Deg.DegCod = DB_GetNextCode (mysql_res)) < 0) if ((Deg.DegCod = DB_GetNextCode (mysql_res)) < 0)
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
/* Get data of degree */ /* Get data of degree */
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg);
@ -2232,7 +2233,7 @@ static void Pho_ShowOrPrintListDegrees (struct Pho_DegPhotos *DegPhotos,
/* Get degree code (row[0]) */ /* Get degree code (row[0]) */
if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Deg.DegCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongDegreeExit (); Err_WrongDegreeExit ();
/* Get data of degree */ /* Get data of degree */
Deg_GetDataOfDegreeByCod (&Deg); Deg_GetDataOfDegreeByCod (&Deg);

View File

@ -32,6 +32,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_constant.h" #include "swad_constant.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -399,7 +400,7 @@ void Plc_GetListPlaces (struct Plc_Places *Places)
/***** Create list with courses in center *****/ /***** Create list with courses in center *****/
if ((Places->Lst = calloc ((size_t) Places->Num, if ((Places->Lst = calloc ((size_t) Places->Num,
sizeof (*Places->Lst))) == NULL) sizeof (*Places->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the places *****/ /***** Get the places *****/
for (NumPlc = 0; for (NumPlc = 0;
@ -413,7 +414,7 @@ void Plc_GetListPlaces (struct Plc_Places *Places)
/* Get place code (row[0]) */ /* Get place code (row[0]) */
if ((Plc->PlcCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Plc->PlcCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongPlaceExit (); Err_WrongPlaceExit ();
/* Get the short (row[1]) and full (row[2]) names of the place */ /* Get the short (row[1]) and full (row[2]) names of the place */
Str_Copy (Plc->ShrtName,row[1],sizeof (Plc->ShrtName) - 1); Str_Copy (Plc->ShrtName,row[1],sizeof (Plc->ShrtName) - 1);
@ -616,7 +617,7 @@ void Plc_RemovePlace (void)
/***** Get place code *****/ /***** Get place code *****/
if ((Plc_EditingPlc->PlcCod = Plc_GetParamPlcCod ()) <= 0) if ((Plc_EditingPlc->PlcCod = Plc_GetParamPlcCod ()) <= 0)
Lay_WrongPlaceExit (); Err_WrongPlaceExit ();
/***** Get data of the place from database *****/ /***** Get data of the place from database *****/
Plc_GetDataOfPlaceByCod (Plc_EditingPlc); Plc_GetDataOfPlaceByCod (Plc_EditingPlc);
@ -700,7 +701,7 @@ static void Plc_RenamePlace (Cns_ShrtOrFullName_t ShrtOrFullName)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the place */ /* Get the code of the place */
if ((Plc_EditingPlc->PlcCod = Plc_GetParamPlcCod ()) <= 0) if ((Plc_EditingPlc->PlcCod = Plc_GetParamPlcCod ()) <= 0)
Lay_WrongPlaceExit (); Err_WrongPlaceExit ();
/* Get the new name for the place */ /* Get the new name for the place */
Par_GetParToText (ParamName,NewPlcName,MaxBytes); Par_GetParToText (ParamName,NewPlcName,MaxBytes);
@ -941,11 +942,11 @@ static void Plc_EditingPlaceConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Plc_EditingPlc != NULL) if (Plc_EditingPlc != NULL)
Lay_WrongPlaceExit (); Err_WrongPlaceExit ();
/***** Allocate memory for place *****/ /***** Allocate memory for place *****/
if ((Plc_EditingPlc = malloc (sizeof (*Plc_EditingPlc))) == NULL) if ((Plc_EditingPlc = malloc (sizeof (*Plc_EditingPlc))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset place *****/ /***** Reset place *****/
Plc_EditingPlc->PlcCod = -1L; Plc_EditingPlc->PlcCod = -1L;

View File

@ -39,6 +39,7 @@ TODO: Check if web service is called from an authorized IP.
#include "swad_constant.h" #include "swad_constant.h"
#include "swad_cryptography.h" #include "swad_cryptography.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -247,7 +248,7 @@ static void Plg_GetListPlugins (void)
/***** Create list with plugins *****/ /***** Create list with plugins *****/
if ((Gbl.Plugins.Lst = calloc ((size_t) Gbl.Plugins.Num, if ((Gbl.Plugins.Lst = calloc ((size_t) Gbl.Plugins.Num,
sizeof (*Gbl.Plugins.Lst))) == NULL) sizeof (*Gbl.Plugins.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the plugins *****/ /***** Get the plugins *****/
for (NumPlg = 0; for (NumPlg = 0;
@ -261,7 +262,7 @@ static void Plg_GetListPlugins (void)
/* Get plugin code (row[0]) */ /* Get plugin code (row[0]) */
if ((Plg->PlgCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Plg->PlgCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongPluginExit (); Err_WrongPluginExit ();
/* Get name (row[1]), description (row[2), logo (row[3]), /* Get name (row[1]), description (row[2), logo (row[3]),
* application key (row[4]), URL (row[5]) and IP (row[6]) of the plugin */ * application key (row[4]), URL (row[5]) and IP (row[6]) of the plugin */
@ -493,7 +494,7 @@ void Plg_RemovePlugin (void)
/***** Get plugin code *****/ /***** Get plugin code *****/
if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0) if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0)
Lay_WrongPluginExit (); Err_WrongPluginExit ();
/***** Get data of the plugin from database *****/ /***** Get data of the plugin from database *****/
Plg_GetDataOfPluginByCod (Plg_EditingPlg); Plg_GetDataOfPluginByCod (Plg_EditingPlg);
@ -527,7 +528,7 @@ void Plg_RenamePlugin (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the plugin */ /* Get the code of the plugin */
if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0) if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0)
Lay_WrongPluginExit (); Err_WrongPluginExit ();
/* Get the new name for the plugin */ /* Get the new name for the plugin */
Par_GetParToText ("Name",NewPlgName,Plg_MAX_BYTES_PLUGIN_NAME); Par_GetParToText ("Name",NewPlgName,Plg_MAX_BYTES_PLUGIN_NAME);
@ -606,7 +607,7 @@ void Plg_ChangePlgDescription (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the plugin */ /* Get the code of the plugin */
if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0) if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0)
Lay_WrongPluginExit (); Err_WrongPluginExit ();
/* Get the new description for the plugin */ /* Get the new description for the plugin */
Par_GetParToText ("Description",NewDescription,Plg_MAX_BYTES_PLUGIN_DESCRIPTION); Par_GetParToText ("Description",NewDescription,Plg_MAX_BYTES_PLUGIN_DESCRIPTION);
@ -653,7 +654,7 @@ void Plg_ChangePlgLogo (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the plugin */ /* Get the code of the plugin */
if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0) if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0)
Lay_WrongPluginExit (); Err_WrongPluginExit ();
/* Get the new logo for the plugin */ /* Get the new logo for the plugin */
Par_GetParToText ("Logo",NewLogo,Plg_MAX_BYTES_PLUGIN_LOGO); Par_GetParToText ("Logo",NewLogo,Plg_MAX_BYTES_PLUGIN_LOGO);
@ -699,7 +700,7 @@ void Plg_ChangePlgAppKey (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the plugin */ /* Get the code of the plugin */
if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0) if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0)
Lay_WrongPluginExit (); Err_WrongPluginExit ();
/* Get the new logo for the plugin */ /* Get the new logo for the plugin */
Par_GetParToText ("AppKey",NewAppKey,Plg_MAX_BYTES_PLUGIN_APP_KEY); Par_GetParToText ("AppKey",NewAppKey,Plg_MAX_BYTES_PLUGIN_APP_KEY);
@ -745,7 +746,7 @@ void Plg_ChangePlgURL (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the plugin */ /* Get the code of the plugin */
if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0) if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0)
Lay_WrongPluginExit (); Err_WrongPluginExit ();
/* Get the new URL for the plugin */ /* Get the new URL for the plugin */
Par_GetParToText ("URL",NewURL,Cns_MAX_BYTES_WWW); Par_GetParToText ("URL",NewURL,Cns_MAX_BYTES_WWW);
@ -791,7 +792,7 @@ void Plg_ChangePlgIP (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get the code of the plugin */ /* Get the code of the plugin */
if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0) if ((Plg_EditingPlg->PlgCod = Plg_GetParamPlgCod ()) <= 0)
Lay_WrongPluginExit (); Err_WrongPluginExit ();
/* Get the new IP for the plugin */ /* Get the new IP for the plugin */
Par_GetParToText ("IP",NewIP,Cns_MAX_BYTES_IP); Par_GetParToText ("IP",NewIP,Cns_MAX_BYTES_IP);
@ -1047,11 +1048,11 @@ static void Plg_EditingPluginConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Plg_EditingPlg != NULL) if (Plg_EditingPlg != NULL)
Lay_WrongPluginExit (); Err_WrongPluginExit ();
/***** Allocate memory for plugin *****/ /***** Allocate memory for plugin *****/
if ((Plg_EditingPlg = malloc (sizeof (*Plg_EditingPlg))) == NULL) if ((Plg_EditingPlg = malloc (sizeof (*Plg_EditingPlg))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset plugin *****/ /***** Reset plugin *****/
Plg_EditingPlg->PlgCod = -1L; Plg_EditingPlg->PlgCod = -1L;

View File

@ -33,6 +33,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_follow.h" #include "swad_follow.h"
#include "swad_form.h" #include "swad_form.h"
@ -976,7 +977,7 @@ static void Prf_ShowRanking (unsigned Rank,unsigned NumUsrs)
Par_PutHiddenParamUnsigned (NULL,"FigureType",(unsigned) Fig_USERS_RANKING); Par_PutHiddenParamUnsigned (NULL,"FigureType",(unsigned) Fig_USERS_RANKING);
if (asprintf (&Title,"#%u %s %u", if (asprintf (&Title,"#%u %s %u",
Rank,Txt_of_PART_OF_A_TOTAL,NumUsrs) < 0) Rank,Txt_of_PART_OF_A_TOTAL,NumUsrs) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_BUTTON_SUBMIT_Begin (Title,The_ClassFormLinkOutBox[Gbl.Prefs.Theme],NULL); HTM_BUTTON_SUBMIT_Begin (Title,The_ClassFormLinkOutBox[Gbl.Prefs.Theme],NULL);
free (Title); free (Title);
HTM_TxtF ("#%u",Rank); HTM_TxtF ("#%u",Rank);
@ -1605,7 +1606,7 @@ static void Prf_GetAndShowRankingFigure (const char *FieldName)
FieldName,FieldName); FieldName,FieldName);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -1645,7 +1646,7 @@ void Prf_ShowRankingFigure (MYSQL_RES **mysql_res,unsigned NumUsrs)
/* Get figure (row[1]) */ /* Get figure (row[1]) */
if (sscanf (row[1],"%ld",&Figure) != 1) if (sscanf (row[1],"%ld",&Figure) != 1)
Lay_ShowErrorAndExit ("Error reading user's figure."); Err_ShowErrorAndExit ("Error reading user's figure.");
if (Figure < FigureHigh) if (Figure < FigureHigh)
{ {
@ -1834,7 +1835,7 @@ void Prf_GetAndShowRankingClicksPerDay (void)
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }

View File

@ -34,6 +34,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -495,7 +496,7 @@ static void Prg_WriteRowItem (unsigned NumItem,struct ProgramItem *Item,
StartEndTime++) StartEndTime++)
{ {
if (asprintf (&Id,"scd_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"scd_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (PrintView) if (PrintView)
HTM_TD_Begin ("id=\"%s\" class=\"PRG_DATE %s LT\"", HTM_TD_Begin ("id=\"%s\" class=\"PRG_DATE %s LT\"",
Id, Id,
@ -602,7 +603,7 @@ static void Prg_SetTitleClass (char **TitleClass,unsigned Level,bool LightStyle)
5, 5,
LightStyle ? "PRG_HIDDEN" : LightStyle ? "PRG_HIDDEN" :
"") < 0) "") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
static void Prg_FreeTitleClass (char *TitleClass) static void Prg_FreeTitleClass (char *TitleClass)
@ -668,7 +669,7 @@ static void Prg_CreateLevels (void)
*/ */
if ((Prg_Gbl.Levels = calloc (1 + MaxLevel + 1, if ((Prg_Gbl.Levels = calloc (1 + MaxLevel + 1,
sizeof (*Prg_Gbl.Levels))) == NULL) sizeof (*Prg_Gbl.Levels))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
Prg_Gbl.Levels = NULL; Prg_Gbl.Levels = NULL;
@ -993,7 +994,7 @@ static void Prg_GetListItems (void)
/***** Create list of program items *****/ /***** Create list of program items *****/
if ((Prg_Gbl.List.Items = calloc (Prg_Gbl.List.NumItems, if ((Prg_Gbl.List.Items = calloc (Prg_Gbl.List.NumItems,
sizeof (*Prg_Gbl.List.Items))) == NULL) sizeof (*Prg_Gbl.List.Items))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the program items codes *****/ /***** Get the program items codes *****/
for (NumItem = 0; for (NumItem = 0;
@ -1005,7 +1006,7 @@ static void Prg_GetListItems (void)
/* Get code of the program item (row[0]) */ /* Get code of the program item (row[0]) */
if ((Prg_Gbl.List.Items[NumItem].ItmCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Prg_Gbl.List.Items[NumItem].ItmCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongItemExit (); Err_WrongItemExit ();
/* Get index of the program item (row[1]) */ /* Get index of the program item (row[1]) */
Prg_Gbl.List.Items[NumItem].Index = Str_ConvertStrToUnsigned (row[1]); Prg_Gbl.List.Items[NumItem].Index = Str_ConvertStrToUnsigned (row[1]);
@ -1201,7 +1202,7 @@ static unsigned Prg_GetNumItemFromItmCod (long ItmCod)
/***** List of items must be filled *****/ /***** List of items must be filled *****/
if (!Prg_Gbl.List.IsRead || Prg_Gbl.List.Items == NULL) if (!Prg_Gbl.List.IsRead || Prg_Gbl.List.Items == NULL)
Lay_WrongItemsListExit (); Err_WrongItemsListExit ();
/***** Find item code in list *****/ /***** Find item code in list *****/
for (NumItem = 0; for (NumItem = 0;
@ -1211,7 +1212,7 @@ static unsigned Prg_GetNumItemFromItmCod (long ItmCod)
return NumItem; return NumItem;
/***** Not found *****/ /***** Not found *****/
Lay_WrongItemExit (); Err_WrongItemExit ();
return 0; // Not reached return 0; // Not reached
} }
@ -1233,7 +1234,7 @@ void Prg_ReqRemItem (void)
Item.Hierarchy.ItmCod = Prg_GetParamItmCod (); Item.Hierarchy.ItmCod = Prg_GetParamItmCod ();
Prg_GetDataOfItemByCod (&Item); Prg_GetDataOfItemByCod (&Item);
if (Item.Hierarchy.ItmCod <= 0) if (Item.Hierarchy.ItmCod <= 0)
Lay_WrongItemExit (); Err_WrongItemExit ();
/***** Show question and button to remove the program item *****/ /***** Show question and button to remove the program item *****/
Ale_ShowAlertAndButton (ActRemPrgItm,NULL,NULL, Ale_ShowAlertAndButton (ActRemPrgItm,NULL,NULL,
@ -1269,7 +1270,7 @@ void Prg_RemoveItem (void)
Item.Hierarchy.ItmCod = Prg_GetParamItmCod (); Item.Hierarchy.ItmCod = Prg_GetParamItmCod ();
Prg_GetDataOfItemByCod (&Item); Prg_GetDataOfItemByCod (&Item);
if (Item.Hierarchy.ItmCod <= 0) if (Item.Hierarchy.ItmCod <= 0)
Lay_WrongItemExit (); Err_WrongItemExit ();
/***** Indexes of items *****/ /***** Indexes of items *****/
Prg_SetItemRangeWithAllChildren (Prg_GetNumItemFromItmCod (Item.Hierarchy.ItmCod), Prg_SetItemRangeWithAllChildren (Prg_GetNumItemFromItmCod (Item.Hierarchy.ItmCod),
@ -1326,7 +1327,7 @@ static void Prg_HideUnhideItem (char YN)
Item.Hierarchy.ItmCod = Prg_GetParamItmCod (); Item.Hierarchy.ItmCod = Prg_GetParamItmCod ();
Prg_GetDataOfItemByCod (&Item); Prg_GetDataOfItemByCod (&Item);
if (Item.Hierarchy.ItmCod <= 0) if (Item.Hierarchy.ItmCod <= 0)
Lay_WrongItemExit (); Err_WrongItemExit ();
/***** Hide/unhide program item *****/ /***** Hide/unhide program item *****/
DB_QueryUPDATE ("can not change program item", DB_QueryUPDATE ("can not change program item",
@ -1381,7 +1382,7 @@ static void Prg_MoveUpDownItem (Prg_MoveUpDown_t UpDown)
Item.Hierarchy.ItmCod = Prg_GetParamItmCod (); Item.Hierarchy.ItmCod = Prg_GetParamItmCod ();
Prg_GetDataOfItemByCod (&Item); Prg_GetDataOfItemByCod (&Item);
if (Item.Hierarchy.ItmCod <= 0) if (Item.Hierarchy.ItmCod <= 0)
Lay_WrongItemExit (); Err_WrongItemExit ();
/***** Move up/down item *****/ /***** Move up/down item *****/
NumItem = Prg_GetNumItemFromItmCod (Item.Hierarchy.ItmCod); NumItem = Prg_GetNumItemFromItmCod (Item.Hierarchy.ItmCod);
@ -1615,7 +1616,7 @@ static void Prg_MoveLeftRightItem (Prg_MoveLeftRight_t LeftRight)
Item.Hierarchy.ItmCod = Prg_GetParamItmCod (); Item.Hierarchy.ItmCod = Prg_GetParamItmCod ();
Prg_GetDataOfItemByCod (&Item); Prg_GetDataOfItemByCod (&Item);
if (Item.Hierarchy.ItmCod <= 0) if (Item.Hierarchy.ItmCod <= 0)
Lay_WrongItemExit (); Err_WrongItemExit ();
/***** Move up/down item *****/ /***** Move up/down item *****/
NumItem = Prg_GetNumItemFromItmCod (Item.Hierarchy.ItmCod); NumItem = Prg_GetNumItemFromItmCod (Item.Hierarchy.ItmCod);
@ -1663,7 +1664,7 @@ static void Prg_SetItemRangeEmpty (struct ItemRange *ItemRange)
{ {
/***** List of items must be filled *****/ /***** List of items must be filled *****/
if (!Prg_Gbl.List.IsRead) if (!Prg_Gbl.List.IsRead)
Lay_WrongItemsListExit (); Err_WrongItemsListExit ();
/***** Range is empty *****/ /***** Range is empty *****/
if (Prg_Gbl.List.NumItems) if (Prg_Gbl.List.NumItems)
@ -1678,7 +1679,7 @@ static void Prg_SetItemRangeOnlyItem (unsigned Index,struct ItemRange *ItemRange
{ {
/***** List of items must be filled *****/ /***** List of items must be filled *****/
if (!Prg_Gbl.List.IsRead) if (!Prg_Gbl.List.IsRead)
Lay_WrongItemsListExit (); Err_WrongItemsListExit ();
/***** Range includes only this item *****/ /***** Range includes only this item *****/
ItemRange->Begin = ItemRange->Begin =
@ -1689,11 +1690,11 @@ static void Prg_SetItemRangeWithAllChildren (unsigned NumItem,struct ItemRange *
{ {
/***** List of items must be filled *****/ /***** List of items must be filled *****/
if (!Prg_Gbl.List.IsRead) if (!Prg_Gbl.List.IsRead)
Lay_WrongItemsListExit (); Err_WrongItemsListExit ();
/***** Number of item must be in the correct range *****/ /***** Number of item must be in the correct range *****/
if (NumItem >= Prg_Gbl.List.NumItems) if (NumItem >= Prg_Gbl.List.NumItems)
Lay_WrongItemExit (); Err_WrongItemExit ();
/***** Range includes this item and all its children *****/ /***** Range includes this item and all its children *****/
ItemRange->Begin = Prg_Gbl.List.Items[NumItem ].Index; ItemRange->Begin = Prg_Gbl.List.Items[NumItem ].Index;
@ -1712,7 +1713,7 @@ static unsigned Prg_GetLastChild (int NumItem)
/***** Trivial check: if item is wrong, there are no children *****/ /***** Trivial check: if item is wrong, there are no children *****/
if (NumItem < 0 || if (NumItem < 0 ||
NumItem >= (int) Prg_Gbl.List.NumItems) NumItem >= (int) Prg_Gbl.List.NumItems)
Lay_WrongItemExit (); Err_WrongItemExit ();
/***** Get next brother after item *****/ /***** Get next brother after item *****/
// 0 <= NumItem < Prg_Gbl.List.NumItems // 0 <= NumItem < Prg_Gbl.List.NumItems
@ -2013,7 +2014,7 @@ void Prg_ReceiveFormChgItem (void)
NewItem.Hierarchy.ItmCod = Prg_GetParamItmCod (); NewItem.Hierarchy.ItmCod = Prg_GetParamItmCod ();
Prg_GetDataOfItemByCod (&NewItem); Prg_GetDataOfItemByCod (&NewItem);
if (NewItem.Hierarchy.ItmCod <= 0) if (NewItem.Hierarchy.ItmCod <= 0)
Lay_WrongItemExit (); Err_WrongItemExit ();
/***** Get data of the old (current) program item from database *****/ /***** Get data of the old (current) program item from database *****/
OldItem.Hierarchy.ItmCod = NewItem.Hierarchy.ItmCod; OldItem.Hierarchy.ItmCod = NewItem.Hierarchy.ItmCod;

View File

@ -35,6 +35,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_department.h" #include "swad_department.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -383,7 +384,7 @@ static void Prj_ShowProjects (struct Prj_Projects *Projects)
Prj_GetSelectedUsrsAndShowTheirPrjs (Projects); Prj_GetSelectedUsrsAndShowTheirPrjs (Projects);
break; break;
default: default:
Lay_WrongWhoExit (); Err_WrongWhoExit ();
break; break;
} }
} }
@ -876,7 +877,7 @@ static Prj_HiddenVisibl_t Prj_GetHiddenParamHidVis (void)
(unsigned) Prj_FILTER_HIDDEN_DEFAULT | (unsigned) Prj_FILTER_HIDDEN_DEFAULT |
(unsigned) Prj_FILTER_VISIBL_DEFAULT); (unsigned) Prj_FILTER_VISIBL_DEFAULT);
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
return Prj_NEW_PRJ_HIDDEN_VISIBL_DEFAULT; // Not reached return Prj_NEW_PRJ_HIDDEN_VISIBL_DEFAULT; // Not reached
} }
} }
@ -1303,7 +1304,7 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
/* Creation date/time */ /* Creation date/time */
UniqueId++; UniqueId++;
if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0) if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
switch (ProjectView) switch (ProjectView)
{ {
case Prj_LIST_PROJECTS: case Prj_LIST_PROJECTS:
@ -1324,7 +1325,7 @@ static void Prj_ShowOneProject (struct Prj_Projects *Projects,
/* Modification date/time */ /* Modification date/time */
UniqueId++; UniqueId++;
if (asprintf (&Id,"prj_modif_%u",UniqueId) < 0) if (asprintf (&Id,"prj_modif_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
switch (ProjectView) switch (ProjectView)
{ {
case Prj_LIST_PROJECTS: case Prj_LIST_PROJECTS:
@ -1691,7 +1692,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Prj_Project *Prj)
/***** Start date/time *****/ /***** Start date/time *****/
UniqueId++; UniqueId++;
if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0) if (asprintf (&Id,"prj_creat_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LT %s COLOR%u\"", HTM_TD_Begin ("id=\"%s\" class=\"LT %s COLOR%u\"",
Id,ClassDate,Gbl.RowEvenOdd); Id,ClassDate,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Prj->CreatTime, Dat_WriteLocalDateHMSFromUTC (Id,Prj->CreatTime,
@ -1703,7 +1704,7 @@ static void Prj_ShowTableAllProjectsOneRow (struct Prj_Project *Prj)
/***** End date/time *****/ /***** End date/time *****/
UniqueId++; UniqueId++;
if (asprintf (&Id,"prj_modif_%u",UniqueId) < 0) if (asprintf (&Id,"prj_modif_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LT %s COLOR%u\"", HTM_TD_Begin ("id=\"%s\" class=\"LT %s COLOR%u\"",
Id,ClassDate,Gbl.RowEvenOdd); Id,ClassDate,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Prj->ModifTime, Dat_WriteLocalDateHMSFromUTC (Id,Prj->ModifTime,
@ -2431,12 +2432,12 @@ static void Prj_FormToSelectUsrs (struct Prj_Projects *Projects,
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (Projects); Prj_GetParams (Projects);
if ((Projects->PrjCod = Prj.PrjCod = Prj_GetParamPrjCod ()) <= 0) if ((Projects->PrjCod = Prj.PrjCod = Prj_GetParamPrjCod ()) <= 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Put form to select users *****/ /***** Put form to select users *****/
if (asprintf (&TxtButton,Txt_Add_USERS, if (asprintf (&TxtButton,Txt_Add_USERS,
Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]) < 0) Txt_PROJECT_ROLES_PLURAL_abc[RoleInProject]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Usr_PutFormToSelectUsrsToGoToAct (&Prj_MembersToAdd, Usr_PutFormToSelectUsrsToGoToAct (&Prj_MembersToAdd,
ActionAddUsr[RoleInProject], ActionAddUsr[RoleInProject],
Prj_PutCurrentParams,Projects, Prj_PutCurrentParams,Projects,
@ -2509,7 +2510,7 @@ static void Prj_AddUsrsToProject (Prj_RoleInProject_t RoleInProject)
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (&Projects); Prj_GetParams (&Projects);
if ((Projects.PrjCod = Prj.PrjCod = Prj_GetParamPrjCod ()) <= 0) if ((Projects.PrjCod = Prj.PrjCod = Prj_GetParamPrjCod ()) <= 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Add the selected users to project *****/ /***** Add the selected users to project *****/
Ptr = Prj_MembersToAdd.List[Rol_UNK]; Ptr = Prj_MembersToAdd.List[Rol_UNK];
@ -2611,7 +2612,7 @@ static void Prj_ReqRemUsrFromPrj (struct Prj_Projects *Projects,
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (Projects); Prj_GetParams (Projects);
if ((Projects->PrjCod = Prj.PrjCod = Prj_GetParamPrjCod ()) < 0) if ((Projects->PrjCod = Prj.PrjCod = Prj_GetParamPrjCod ()) < 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Get data of the project from database *****/ /***** Get data of the project from database *****/
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
@ -2696,7 +2697,7 @@ static void Prj_RemUsrFromPrj (Prj_RoleInProject_t RoleInProject)
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (&Projects); Prj_GetParams (&Projects);
if ((Projects.PrjCod = Prj.PrjCod = Prj_GetParamPrjCod ()) < 0) if ((Projects.PrjCod = Prj.PrjCod = Prj_GetParamPrjCod ()) < 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Get data of the project from database *****/ /***** Get data of the project from database *****/
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
@ -2879,15 +2880,15 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
{ {
case (1 << Prj_ASSIGNED): // Assigned projects case (1 << Prj_ASSIGNED): // Assigned projects
if (asprintf (&PreNonSubQuery," AND prj_projects.Assigned='Y'") < 0) if (asprintf (&PreNonSubQuery," AND prj_projects.Assigned='Y'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
case (1 << Prj_NONASSIG): // Non-assigned projects case (1 << Prj_NONASSIG): // Non-assigned projects
if (asprintf (&PreNonSubQuery," AND prj_projects.Assigned='N'") < 0) if (asprintf (&PreNonSubQuery," AND prj_projects.Assigned='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
default: // All projects default: // All projects
if (asprintf (&PreNonSubQuery,"%s","") < 0) if (asprintf (&PreNonSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
} }
@ -2896,7 +2897,7 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
{ {
case Rol_STD: // Students can view only visible projects case Rol_STD: // Students can view only visible projects
if (asprintf (&HidVisSubQuery," AND prj_projects.Hidden='N'") < 0) if (asprintf (&HidVisSubQuery," AND prj_projects.Hidden='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
case Rol_NET: case Rol_NET:
case Rol_TCH: case Rol_TCH:
@ -2905,20 +2906,20 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
{ {
case (1 << Prj_HIDDEN): // Hidden projects case (1 << Prj_HIDDEN): // Hidden projects
if (asprintf (&HidVisSubQuery," AND prj_projects.Hidden='Y'") < 0) if (asprintf (&HidVisSubQuery," AND prj_projects.Hidden='Y'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
case (1 << Prj_VISIBL): // Visible projects case (1 << Prj_VISIBL): // Visible projects
if (asprintf (&HidVisSubQuery," AND prj_projects.Hidden='N'") < 0) if (asprintf (&HidVisSubQuery," AND prj_projects.Hidden='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
default: // All projects default: // All projects
if (asprintf (&HidVisSubQuery,"%s","") < 0) if (asprintf (&HidVisSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
break; break;
} }
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
break; break;
} }
@ -2927,12 +2928,12 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
{ {
if (asprintf (&DptCodSubQuery," AND prj_projects.DptCod=%ld", if (asprintf (&DptCodSubQuery," AND prj_projects.DptCod=%ld",
Projects->Filter.DptCod) < 0) Projects->Filter.DptCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else // Any department else // Any department
{ {
if (asprintf (&DptCodSubQuery,"%s","") < 0) if (asprintf (&DptCodSubQuery,"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/* Query */ /* Query */
@ -3101,7 +3102,7 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
} }
break; break;
default: default:
Lay_WrongWhoExit (); Err_WrongWhoExit ();
break; break;
} }
@ -3115,7 +3116,7 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
/***** Create list of projects *****/ /***** Create list of projects *****/
if ((Projects->LstPrjCods = calloc ((size_t) NumPrjsFromDB, if ((Projects->LstPrjCods = calloc ((size_t) NumPrjsFromDB,
sizeof (*Projects->LstPrjCods))) == NULL) sizeof (*Projects->LstPrjCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the projects codes *****/ /***** Get the projects codes *****/
for (NumPrj = 0; for (NumPrj = 0;
@ -3124,7 +3125,7 @@ static void Prj_GetListProjects (struct Prj_Projects *Projects)
{ {
/* Get next project code */ /* Get next project code */
if ((PrjCod = DB_GetNextCode (mysql_res)) < 0) if ((PrjCod = DB_GetNextCode (mysql_res)) < 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/* Filter projects depending on faultiness */ /* Filter projects depending on faultiness */
switch (Projects->Filter.Faulti) switch (Projects->Filter.Faulti)
@ -3354,7 +3355,7 @@ void Prj_ReqRemProject (void)
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (&Projects); Prj_GetParams (&Projects);
if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0) if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Get data of the project from database *****/ /***** Get data of the project from database *****/
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
@ -3370,7 +3371,7 @@ void Prj_ReqRemProject (void)
Prj.Title); Prj.Title);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Free memory of the project *****/ /***** Free memory of the project *****/
Prj_FreeMemProject (&Prj); Prj_FreeMemProject (&Prj);
@ -3399,7 +3400,7 @@ void Prj_RemoveProject (void)
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (&Projects); Prj_GetParams (&Projects);
if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0) if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Get data of the project from database *****/ /***** Get data of the project from database *****/
Prj_GetDataOfProjectByCod (&Prj); // Inside this function, the course is checked to be the current one Prj_GetDataOfProjectByCod (&Prj); // Inside this function, the course is checked to be the current one
@ -3442,7 +3443,7 @@ void Prj_RemoveProject (void)
Prj.Title); Prj.Title);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Free memory of the project *****/ /***** Free memory of the project *****/
Prj_FreeMemProject (&Prj); Prj_FreeMemProject (&Prj);
@ -3469,7 +3470,7 @@ void Prj_HideProject (void)
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (&Projects); Prj_GetParams (&Projects);
if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0) if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Get data of the project from database *****/ /***** Get data of the project from database *****/
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
@ -3484,7 +3485,7 @@ void Prj_HideProject (void)
Prj.PrjCod, Prj.PrjCod,
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Free memory of the project *****/ /***** Free memory of the project *****/
Prj_FreeMemProject (&Prj); Prj_FreeMemProject (&Prj);
@ -3511,7 +3512,7 @@ void Prj_UnhideProject (void)
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (&Projects); Prj_GetParams (&Projects);
if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0) if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Get data of the project from database *****/ /***** Get data of the project from database *****/
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
@ -3526,7 +3527,7 @@ void Prj_UnhideProject (void)
Prj.PrjCod, Prj.PrjCod,
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Free memory of the project *****/ /***** Free memory of the project *****/
Prj_FreeMemProject (&Prj); Prj_FreeMemProject (&Prj);
@ -3566,7 +3567,7 @@ void Prj_RequestEditPrj (void)
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (&Projects); Prj_GetParams (&Projects);
if ((Projects.PrjCod = Prj.PrjCod = Prj_GetParamPrjCod ()) <= 0) if ((Projects.PrjCod = Prj.PrjCod = Prj_GetParamPrjCod ()) <= 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Form to edit project *****/ /***** Form to edit project *****/
Prj_RequestCreatOrEditPrj (&Projects,&Prj); Prj_RequestCreatOrEditPrj (&Projects,&Prj);
@ -3844,13 +3845,13 @@ static void Prj_EditOneProjectTxtArea (const char *Id,
void Prj_AllocMemProject (struct Prj_Project *Prj) void Prj_AllocMemProject (struct Prj_Project *Prj)
{ {
if ((Prj->Description = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Prj->Description = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if ((Prj->Knowledge = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Prj->Knowledge = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if ((Prj->Materials = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Prj->Materials = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -3985,7 +3986,7 @@ void Prj_ReceiveFormProject (void)
Prj_RequestCreatOrEditPrj (&Projects,&Prj); Prj_RequestCreatOrEditPrj (&Projects,&Prj);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Free memory of the project *****/ /***** Free memory of the project *****/
Prj_FreeMemProject (&Prj); Prj_FreeMemProject (&Prj);
@ -4295,7 +4296,7 @@ void Prj_ReqLockSelectedPrjsEdition (void)
Prj_FreeListProjects (&Projects); Prj_FreeListProjects (&Projects);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show projects again *****/ /***** Show projects again *****/
Prj_ShowProjects (&Projects); Prj_ShowProjects (&Projects);
@ -4334,7 +4335,7 @@ void Prj_ReqUnloSelectedPrjsEdition (void)
Prj_FreeListProjects (&Projects); Prj_FreeListProjects (&Projects);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show projects again *****/ /***** Show projects again *****/
Prj_ShowProjects (&Projects); Prj_ShowProjects (&Projects);
@ -4375,7 +4376,7 @@ void Prj_LockSelectedPrjsEdition (void)
Prj_FreeListProjects (&Projects); Prj_FreeListProjects (&Projects);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show projects again *****/ /***** Show projects again *****/
Prj_ShowProjects (&Projects); Prj_ShowProjects (&Projects);
@ -4412,7 +4413,7 @@ void Prj_UnloSelectedPrjsEdition (void)
Prj_FreeListProjects (&Projects); Prj_FreeListProjects (&Projects);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show projects again *****/ /***** Show projects again *****/
Prj_ShowProjects (&Projects); Prj_ShowProjects (&Projects);
@ -4446,7 +4447,7 @@ static void Prj_FormLockUnlock (const struct Prj_Project *Prj)
Act_GetActCod (Prj_LockActions[Prj->Locked]), Act_GetActCod (Prj_LockActions[Prj->Locked]),
Gbl.Session.Id, Gbl.Session.Id,
Prj->PrjCod) < 0) Prj->PrjCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Frm_BeginFormOnSubmit (ActUnk,OnSubmit); Frm_BeginFormOnSubmit (ActUnk,OnSubmit);
Ico_PutIconLink (Prj_LockIcons[Prj->Locked],Txt_LOCKED_UNLOCKED[Prj->Locked]); Ico_PutIconLink (Prj_LockIcons[Prj->Locked],Txt_LOCKED_UNLOCKED[Prj->Locked]);
Frm_EndForm (); Frm_EndForm ();
@ -4485,7 +4486,7 @@ void Prj_LockProjectEdition (void)
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (&Projects); Prj_GetParams (&Projects);
if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0) if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Get data of the project from database *****/ /***** Get data of the project from database *****/
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
@ -4500,7 +4501,7 @@ void Prj_LockProjectEdition (void)
Prj_FormLockUnlock (&Prj); Prj_FormLockUnlock (&Prj);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Free memory of the project *****/ /***** Free memory of the project *****/
Prj_FreeMemProject (&Prj); Prj_FreeMemProject (&Prj);
@ -4535,7 +4536,7 @@ void Prj_UnloProjectEdition (void)
/***** Get parameters *****/ /***** Get parameters *****/
Prj_GetParams (&Projects); Prj_GetParams (&Projects);
if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0) if ((Prj.PrjCod = Prj_GetParamPrjCod ()) < 0)
Lay_WrongProjectExit (); Err_WrongProjectExit ();
/***** Get data of the project from database *****/ /***** Get data of the project from database *****/
Prj_GetDataOfProjectByCod (&Prj); Prj_GetDataOfProjectByCod (&Prj);
@ -4550,7 +4551,7 @@ void Prj_UnloProjectEdition (void)
Prj_FormLockUnlock (&Prj); Prj_FormLockUnlock (&Prj);
} }
else else
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Free memory of the project *****/ /***** Free memory of the project *****/
Prj_FreeMemProject (&Prj); Prj_FreeMemProject (&Prj);

View File

@ -39,6 +39,7 @@
#include "swad_database.h" #include "swad_database.h"
#include "swad_department.h" #include "swad_department.h"
#include "swad_enrolment.h" #include "swad_enrolment.h"
#include "swad_error.h"
#include "swad_follow.h" #include "swad_follow.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -219,7 +220,7 @@ void Rec_GetListRecordFieldsInCurrentCrs (void)
/***** Create a list of fields *****/ /***** Create a list of fields *****/
if ((Gbl.Crs.Records.LstFields.Lst = calloc (Gbl.Crs.Records.LstFields.Num, if ((Gbl.Crs.Records.LstFields.Lst = calloc (Gbl.Crs.Records.LstFields.Num,
sizeof (*Gbl.Crs.Records.LstFields.Lst))) == NULL) sizeof (*Gbl.Crs.Records.LstFields.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the fields *****/ /***** Get the fields *****/
for (NumRow = 0; for (NumRow = 0;
@ -231,7 +232,7 @@ void Rec_GetListRecordFieldsInCurrentCrs (void)
/* Get the code of field (row[0]) */ /* Get the code of field (row[0]) */
if ((Gbl.Crs.Records.LstFields.Lst[NumRow].FieldCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Gbl.Crs.Records.LstFields.Lst[NumRow].FieldCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongRecordFieldExit (); Err_WrongRecordFieldExit ();
/* Name of the field (row[1]) */ /* Name of the field (row[1]) */
Str_Copy (Gbl.Crs.Records.LstFields.Lst[NumRow].Name,row[1], Str_Copy (Gbl.Crs.Records.LstFields.Lst[NumRow].Name,row[1],
@ -242,7 +243,7 @@ void Rec_GetListRecordFieldsInCurrentCrs (void)
/* Visible or editable by students? (row[3]) */ /* Visible or editable by students? (row[3]) */
if (sscanf (row[3],"%u",&Vis) != 1) if (sscanf (row[3],"%u",&Vis) != 1)
Lay_WrongRecordFieldExit (); Err_WrongRecordFieldExit ();
if (Vis < Rec_NUM_TYPES_VISIBILITY) if (Vis < Rec_NUM_TYPES_VISIBILITY)
Gbl.Crs.Records.LstFields.Lst[NumRow].Visibility = (Rec_VisibilityRecordFields_t) Vis; Gbl.Crs.Records.LstFields.Lst[NumRow].Visibility = (Rec_VisibilityRecordFields_t) Vis;
else else
@ -568,7 +569,7 @@ void Rec_ReqRemField (void)
/***** Get the code of field *****/ /***** Get the code of field *****/
if ((Gbl.Crs.Records.Field.FieldCod = Rec_GetFieldCod ()) <= 0) if ((Gbl.Crs.Records.Field.FieldCod = Rec_GetFieldCod ()) <= 0)
Lay_WrongRecordFieldExit (); Err_WrongRecordFieldExit ();
/***** Check if exists any record with that field filled *****/ /***** Check if exists any record with that field filled *****/
if ((NumRecords = Rec_CountNumRecordsInCurrCrsWithField (Gbl.Crs.Records.Field.FieldCod))) // There are records with that field filled if ((NumRecords = Rec_CountNumRecordsInCurrCrsWithField (Gbl.Crs.Records.Field.FieldCod))) // There are records with that field filled
@ -694,7 +695,7 @@ static void Rec_GetFieldByCod (long FieldCod,char Name[Rec_MAX_BYTES_NAME_FIELD
" WHERE CrsCod=%ld" " WHERE CrsCod=%ld"
" AND FieldCod=%ld", " AND FieldCod=%ld",
Gbl.Hierarchy.Crs.CrsCod,FieldCod) != 1) Gbl.Hierarchy.Crs.CrsCod,FieldCod) != 1)
Lay_WrongRecordFieldExit (); Err_WrongRecordFieldExit ();
/***** Get the field *****/ /***** Get the field *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
@ -707,7 +708,7 @@ static void Rec_GetFieldByCod (long FieldCod,char Name[Rec_MAX_BYTES_NAME_FIELD
/* Visible or editable by students? (row[2]) */ /* Visible or editable by students? (row[2]) */
if (sscanf (row[2],"%u",&Vis) != 1) if (sscanf (row[2],"%u",&Vis) != 1)
Lay_WrongRecordFieldExit (); Err_WrongRecordFieldExit ();
if (Vis < Rec_NUM_TYPES_VISIBILITY) if (Vis < Rec_NUM_TYPES_VISIBILITY)
*Visibility = (Rec_VisibilityRecordFields_t) Vis; *Visibility = (Rec_VisibilityRecordFields_t) Vis;
else else
@ -725,7 +726,7 @@ void Rec_RemoveField (void)
{ {
/***** Get the code of the field *****/ /***** Get the code of the field *****/
if ((Gbl.Crs.Records.Field.FieldCod = Rec_GetFieldCod ()) <= 0) if ((Gbl.Crs.Records.Field.FieldCod = Rec_GetFieldCod ()) <= 0)
Lay_WrongRecordFieldExit (); Err_WrongRecordFieldExit ();
/***** Borrarlo from the database *****/ /***** Borrarlo from the database *****/
Rec_RemoveFieldFromDB (); Rec_RemoveFieldFromDB ();
@ -745,7 +746,7 @@ void Rec_RenameField (void)
/***** Get parameters of the form *****/ /***** Get parameters of the form *****/
/* Get the code of the field */ /* Get the code of the field */
if ((Gbl.Crs.Records.Field.FieldCod = Rec_GetFieldCod ()) <= 0) if ((Gbl.Crs.Records.Field.FieldCod = Rec_GetFieldCod ()) <= 0)
Lay_WrongRecordFieldExit (); Err_WrongRecordFieldExit ();
/* Get the new group name */ /* Get the new group name */
Par_GetParToText ("FieldName",NewFieldName,Rec_MAX_BYTES_NAME_FIELD); Par_GetParToText ("FieldName",NewFieldName,Rec_MAX_BYTES_NAME_FIELD);
@ -808,7 +809,7 @@ void Rec_ChangeLinesField (void)
/***** Get parameters of the form *****/ /***** Get parameters of the form *****/
/* Get the code of field */ /* Get the code of field */
if ((Gbl.Crs.Records.Field.FieldCod = Rec_GetFieldCod ()) <= 0) if ((Gbl.Crs.Records.Field.FieldCod = Rec_GetFieldCod ()) <= 0)
Lay_WrongRecordFieldExit (); Err_WrongRecordFieldExit ();
/* Get the new number of lines */ /* Get the new number of lines */
NewNumLines = (unsigned) NewNumLines = (unsigned)
@ -858,7 +859,7 @@ void Rec_ChangeVisibilityField (void)
/***** Get parameters of the form *****/ /***** Get parameters of the form *****/
/* Get the code of field */ /* Get the code of field */
if ((Gbl.Crs.Records.Field.FieldCod = Rec_GetFieldCod ()) <= 0) if ((Gbl.Crs.Records.Field.FieldCod = Rec_GetFieldCod ()) <= 0)
Lay_WrongRecordFieldExit (); Err_WrongRecordFieldExit ();
/* Get the new visibility of the field */ /* Get the new visibility of the field */
NewVisibility = (Rec_VisibilityRecordFields_t) NewVisibility = (Rec_VisibilityRecordFields_t)
@ -1691,7 +1692,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
case Rec_CRS_PRINT_SEVERAL_RECORDS: case Rec_CRS_PRINT_SEVERAL_RECORDS:
break; break;
default: default:
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
} }
@ -1708,7 +1709,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
} }
} }
else // Not me ==> I am a student trying to do something forbidden else // Not me ==> I am a student trying to do something forbidden
Lay_NoPermissionExit (); Err_NoPermissionExit ();
break; break;
case Rol_NET: case Rol_NET:
break; break;
@ -1727,7 +1728,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
} }
break; break;
default: default:
Lay_WrongRoleExit (); Err_WrongRoleExit ();
} }
/***** Begin box and table *****/ /***** Begin box and table *****/
@ -2015,7 +2016,7 @@ void Rec_AllocMemFieldsRecordsCrs (void)
if (Rec_CheckIfICanEditField (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility)) if (Rec_CheckIfICanEditField (Gbl.Crs.Records.LstFields.Lst[NumField].Visibility))
/* Allocate memory for the texts of the fields */ /* Allocate memory for the texts of the fields */
if ((Gbl.Crs.Records.LstFields.Lst[NumField].Text = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Gbl.Crs.Records.LstFields.Lst[NumField].Text = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -3363,11 +3364,11 @@ static void Rec_ShowPhone (struct UsrData *UsrDat,bool ShowData,bool PutForm,
/***** Internal name / id *****/ /***** Internal name / id *****/
if (asprintf (&Name,"Phone%u",NumPhone) < 0) if (asprintf (&Name,"Phone%u",NumPhone) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Label to show *****/ /***** Label to show *****/
if (asprintf (&Label,"%s %u",Txt_Phone,NumPhone + 1) < 0) if (asprintf (&Label,"%s %u",Txt_Phone,NumPhone + 1) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Phone *****/ /***** Phone *****/
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -3697,7 +3698,7 @@ Rol_Role_t Rec_GetRoleFromRecordForm (void)
break; break;
} }
if (!RoleOK) if (!RoleOK)
Lay_WrongRoleExit (); Err_WrongRoleExit ();
return Role; return Role;
} }
@ -3764,7 +3765,7 @@ static void Rec_GetUsrCommentsFromForm (struct UsrData *UsrDat)
{ {
/***** Check if memory is allocated for comments *****/ /***** Check if memory is allocated for comments *****/
if (!UsrDat->Comments) if (!UsrDat->Comments)
Lay_ShowErrorAndExit ("Can not read comments of a user."); Err_ShowErrorAndExit ("Can not read comments of a user.");
/***** Get the parameter with the comments *****/ /***** Get the parameter with the comments *****/
Par_GetParToHTML ("Comments",UsrDat->Comments,Cns_MAX_BYTES_TEXT); Par_GetParToHTML ("Comments",UsrDat->Comments,Cns_MAX_BYTES_TEXT);

View File

@ -31,6 +31,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -392,7 +393,7 @@ static void Rep_CreateNewReportFile (struct Rep_Report *Report)
PathUniqueDirL, PathUniqueDirL,
&Gbl.UniqueNameEncrypted[2]); &Gbl.UniqueNameEncrypted[2]);
if (mkdir (PathUniqueDirR,(mode_t) 0xFFF)) if (mkdir (PathUniqueDirR,(mode_t) 0xFFF))
Lay_ShowErrorAndExit ("Can not create directory for report."); Err_ShowErrorAndExit ("Can not create directory for report.");
/***** Path of the public file with the report */ /***** Path of the public file with the report */
snprintf (Report->FilenameReport,sizeof (Report->FilenameReport), snprintf (Report->FilenameReport,sizeof (Report->FilenameReport),
@ -401,7 +402,7 @@ static void Rep_CreateNewReportFile (struct Rep_Report *Report)
snprintf (PathFileReport,sizeof (PathFileReport),"%s/%s", snprintf (PathFileReport,sizeof (PathFileReport),"%s/%s",
PathUniqueDirR,Report->FilenameReport); PathUniqueDirR,Report->FilenameReport);
if ((Gbl.F.Rep = fopen (PathFileReport,"wb")) == NULL) if ((Gbl.F.Rep = fopen (PathFileReport,"wb")) == NULL)
Lay_ShowErrorAndExit ("Can not create report file."); Err_ShowErrorAndExit ("Can not create report file.");
/***** Permalink *****/ /***** Permalink *****/
snprintf (Permalink,sizeof (Permalink),"%s/%c%c/%s/%s", snprintf (Permalink,sizeof (Permalink),"%s/%c%c/%s/%s",
@ -964,7 +965,7 @@ static void Rep_GetMaxHitsPerYear (struct Rep_Report *Report)
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (row[0]) // There are questions if (row[0]) // There are questions
if (sscanf (row[0],"%lu",&Report->MaxHitsPerYear) != 1) if (sscanf (row[0],"%lu",&Report->MaxHitsPerYear) != 1)
Lay_ShowErrorAndExit ("Error when getting maximum hits."); Err_ShowErrorAndExit ("Error when getting maximum hits.");
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -1285,7 +1286,7 @@ static void Rep_ShowMyHitsPerYear (bool AnyCourse,long CrsCod,Rol_Role_t Role,
/* Get the year (in row[0] is the date in YYYY format) */ /* Get the year (in row[0] is the date in YYYY format) */
if (sscanf (row[0],"%04u",&ReadYear) != 1) if (sscanf (row[0],"%04u",&ReadYear) != 1)
Lay_WrongDateExit (); Err_WrongDateExit ();
/* Get number hits (in row[1]) */ /* Get number hits (in row[1]) */
if (sscanf (row[1],"%lu",&Report->Hits.Num) != 1) if (sscanf (row[1],"%lu",&Report->Hits.Num) != 1)

View File

@ -32,6 +32,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_building.h" #include "swad_building.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -381,7 +382,7 @@ void Roo_ChangeMAC (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get room code */ /* Get room code */
if ((Roo_EditingRoom->RooCod = Par_GetParToLong ("Cod")) <= 0) if ((Roo_EditingRoom->RooCod = Par_GetParToLong ("Cod")) <= 0)
Lay_WrongRoomExit (); Err_WrongRoomExit ();
/* Get the old MAC address of the room */ /* Get the old MAC address of the room */
OldMACnum = MAC_GetMACnumFromForm ("MAC"); OldMACnum = MAC_GetMACnumFromForm ("MAC");
@ -606,7 +607,7 @@ void Roo_GetListRooms (struct Roo_Rooms *Rooms,
/***** Create list with courses in center *****/ /***** Create list with courses in center *****/
if ((Rooms->Lst = calloc ((size_t) Rooms->Num, if ((Rooms->Lst = calloc ((size_t) Rooms->Num,
sizeof (*Rooms->Lst))) == NULL) sizeof (*Rooms->Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the rooms *****/ /***** Get the rooms *****/
for (NumRoom = 0; for (NumRoom = 0;
@ -620,7 +621,7 @@ void Roo_GetListRooms (struct Roo_Rooms *Rooms,
/* Get room code (row[0]) */ /* Get room code (row[0]) */
if ((Room->RooCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Room->RooCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongRoomExit (); Err_WrongRoomExit ();
switch (WhichData) switch (WhichData)
{ {
@ -1006,7 +1007,7 @@ void Roo_RemoveRoom (void)
/***** Get room code *****/ /***** Get room code *****/
if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0) if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0)
Lay_WrongRoomExit (); Err_WrongRoomExit ();
/***** Get data of the room from database *****/ /***** Get data of the room from database *****/
Roo_GetDataOfRoomByCod (Roo_EditingRoom); Roo_GetDataOfRoomByCod (Roo_EditingRoom);
@ -1059,7 +1060,7 @@ void Roo_ChangeBuilding (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get room code */ /* Get room code */
if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0) if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0)
Lay_WrongRoomExit (); Err_WrongRoomExit ();
/* Get room building */ /* Get room building */
NewBldCod = Bld_GetParamBldCod (); NewBldCod = Bld_GetParamBldCod ();
@ -1112,7 +1113,7 @@ void Roo_ChangeFloor (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get room code */ /* Get room code */
if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0) if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0)
Lay_WrongRoomExit (); Err_WrongRoomExit ();
/* Get room floor */ /* Get room floor */
NewFloor = Roo_GetParamFloor (); NewFloor = Roo_GetParamFloor ();
@ -1164,7 +1165,7 @@ void Roo_ChangeType (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get room code */ /* Get room code */
if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0) if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0)
Lay_WrongRoomExit (); Err_WrongRoomExit ();
/* Get room type */ /* Get room type */
NewType = Roo_GetParamType (); NewType = Roo_GetParamType ();
@ -1261,7 +1262,7 @@ static void Roo_RenameRoom (Cns_ShrtOrFullName_t ShrtOrFullName)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get room code */ /* Get room code */
if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0) if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0)
Lay_WrongRoomExit (); Err_WrongRoomExit ();
/* Get the new name for the room */ /* Get the new name for the room */
Par_GetParToText (ParamName,NewClaName,MaxBytes); Par_GetParToText (ParamName,NewClaName,MaxBytes);
@ -1355,7 +1356,7 @@ void Roo_ChangeCapacity (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get room code */ /* Get room code */
if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0) if ((Roo_EditingRoom->RooCod = Roo_GetParamRooCod ()) <= 0)
Lay_WrongRoomExit (); Err_WrongRoomExit ();
/* Get the seating capacity of the room */ /* Get the seating capacity of the room */
NewCapacity = (unsigned) NewCapacity = (unsigned)
@ -1656,11 +1657,11 @@ static void Roo_EditingRoomConstructor (void)
{ {
/***** Pointer must be NULL *****/ /***** Pointer must be NULL *****/
if (Roo_EditingRoom != NULL) if (Roo_EditingRoom != NULL)
Lay_WrongRoomExit (); Err_WrongRoomExit ();
/***** Allocate memory for room *****/ /***** Allocate memory for room *****/
if ((Roo_EditingRoom = malloc (sizeof (*Roo_EditingRoom))) == NULL) if ((Roo_EditingRoom = malloc (sizeof (*Roo_EditingRoom))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Reset room *****/ /***** Reset room *****/
Roo_EditingRoom->RooCod = -1L; Roo_EditingRoom->RooCod = -1L;

View File

@ -28,6 +28,7 @@
#include <string.h> // For string functions #include <string.h> // For string functions
#include "swad_config.h" #include "swad_config.h"
#include "swad_error.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
#include "swad_parameter.h" #include "swad_parameter.h"
@ -111,7 +112,7 @@ void Sco_PutSelectorScope (const char *ParamName,HTM_SubmitOnChange_t SubmitOnCh
WriteScope = true; WriteScope = true;
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -164,7 +165,7 @@ void Sco_PutSelectorScope (const char *ParamName,HTM_SubmitOnChange_t SubmitOnCh
Gbl.Hierarchy.Crs.ShrtName); Gbl.Hierarchy.Crs.ShrtName);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
} }

View File

@ -32,6 +32,7 @@
#include "swad_connected.h" #include "swad_connected.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_parameter.h" #include "swad_parameter.h"
#include "swad_timeline_database.h" #include "swad_timeline_database.h"
@ -84,7 +85,7 @@ void Ses_CreateSession (void)
/***** Check that session is not open *****/ /***** Check that session is not open *****/
if (Ses_CheckIfSessionExists (Gbl.Session.Id)) if (Ses_CheckIfSessionExists (Gbl.Session.Id))
Lay_ShowErrorAndExit ("Can not create session."); Err_ShowErrorAndExit ("Can not create session.");
/***** Add session to database *****/ /***** Add session to database *****/
Ses_InsertSessionInDB (); Ses_InsertSessionInDB ();

View File

@ -35,6 +35,7 @@
#include "swad_cookie.h" #include "swad_cookie.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_date.h" #include "swad_date.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -158,7 +159,7 @@ void Set_GetSettingsFromIP (void)
if (NumRows) if (NumRows)
{ {
if (NumRows != 1) if (NumRows != 1)
Lay_ShowErrorAndExit ("Internal error while getting settings."); Err_ShowErrorAndExit ("Internal error while getting settings.");
/***** Get settings from database *****/ /***** Get settings from database *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);

View File

@ -34,6 +34,7 @@
#include "swad_banner.h" #include "swad_banner.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_hierarchy.h" #include "swad_hierarchy.h"
@ -941,7 +942,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
/***** Select clicks from the table of log *****/ /***** Select clicks from the table of log *****/
/* Allocate memory for the query */ /* Allocate memory for the query */
if ((Query = malloc (Sta_MAX_BYTES_QUERY_ACCESS + 1)) == NULL) if ((Query = malloc (Sta_MAX_BYTES_QUERY_ACCESS + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/* Start the query */ /* Start the query */
switch (Stats.ClicksGroupedBy) switch (Stats.ClicksGroupedBy)
@ -1280,7 +1281,7 @@ static void Sta_ShowHits (Sta_GlobalOrCourseAccesses_t GlobalOrCourse)
{ {
LengthQuery = LengthQuery + 25 + 10 + 1; LengthQuery = LengthQuery + 25 + 10 + 1;
if (LengthQuery > Sta_MAX_BYTES_QUERY_ACCESS - 128) if (LengthQuery > Sta_MAX_BYTES_QUERY_ACCESS - 128)
Lay_ShowErrorAndExit ("Query is too large."); Err_ShowErrorAndExit ("Query is too large.");
sprintf (QueryAux, sprintf (QueryAux,
NumUsr ? " OR %s.UsrCod=%ld" : NumUsr ? " OR %s.UsrCod=%ld" :
" AND (%s.UsrCod=%ld", " AND (%s.UsrCod=%ld",
@ -1726,7 +1727,7 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
/* Get logged role */ /* Get logged role */
if (sscanf (row[2],"%u",&RoleFromLog) != 1) if (sscanf (row[2],"%u",&RoleFromLog) != 1)
Lay_WrongRoleExit (); Err_WrongRoleExit ();
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -1754,7 +1755,7 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
/* Write the date-time (row[3]) */ /* Write the date-time (row[3]) */
if (asprintf (&Id,"log_date_%u",UniqueId) < 0) if (asprintf (&Id,"log_date_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"LOG RT COLOR%u\"",Id,Gbl.RowEvenOdd); HTM_TD_Begin ("id=\"%s\" class=\"LOG RT COLOR%u\"",Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Dat_GetUNIXTimeFromStr (row[3]), Dat_WriteLocalDateHMSFromUTC (Id,Dat_GetUNIXTimeFromStr (row[3]),
Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA, Gbl.Prefs.DateFormat,Dat_SEPARATOR_COMMA,
@ -1764,7 +1765,7 @@ static void Sta_ShowDetailedAccessesList (const struct Sta_Stats *Stats,
/* Write the action */ /* Write the action */
if (sscanf (row[4],"%ld",&ActCod) != 1) if (sscanf (row[4],"%ld",&ActCod) != 1)
Lay_WrongActionExit (); Err_WrongActionExit ();
HTM_TD_Begin ("class=\"LOG LT COLOR%u\"",Gbl.RowEvenOdd); HTM_TD_Begin ("class=\"LOG LT COLOR%u\"",Gbl.RowEvenOdd);
if (ActCod >= 0) if (ActCod >= 0)
HTM_TxtF ("%s&nbsp;",Act_GetActionText (Act_FromActCodToAction[ActCod])); HTM_TxtF ("%s&nbsp;",Act_GetActionText (Act_FromActCodToAction[ActCod]));
@ -1964,7 +1965,7 @@ static void Sta_ShowNumHitsPerDay (Sta_CountType_t CountType,
/* Get year, month and day (row[0] holds the date in YYYYMMDD format) */ /* Get year, month and day (row[0] holds the date in YYYYMMDD format) */
if (!(Dat_GetDateFromYYYYMMDD (&ReadDate,row[0]))) if (!(Dat_GetDateFromYYYYMMDD (&ReadDate,row[0])))
Lay_WrongDateExit (); Err_WrongDateExit ();
/* Get number of pages generated (in row[1]) */ /* Get number of pages generated (in row[1]) */
Hits.Num = Str_GetDoubleFromStr (row[1]); Hits.Num = Str_GetDoubleFromStr (row[1]);
@ -2172,11 +2173,11 @@ static void Sta_ShowDistrAccessesPerDayAndHour (const struct Sta_Stats *Stats,
/* Get year, month and day (row[0] holds the date in YYYYMMDD format) */ /* Get year, month and day (row[0] holds the date in YYYYMMDD format) */
if (!(Dat_GetDateFromYYYYMMDD (&CurrentReadDate,row[0]))) if (!(Dat_GetDateFromYYYYMMDD (&CurrentReadDate,row[0])))
Lay_WrongDateExit (); Err_WrongDateExit ();
/* Get the hour (in row[1] is the hour in formato HH) */ /* Get the hour (in row[1] is the hour in formato HH) */
if (sscanf (row[1],"%02u",&ReadHour) != 1) if (sscanf (row[1],"%02u",&ReadHour) != 1)
Lay_WrongDateExit (); Err_WrongDateExit ();
/* Get number of pages generated (in row[2]) */ /* Get number of pages generated (in row[2]) */
Hits.Num = Str_GetDoubleFromStr (row[2]); Hits.Num = Str_GetDoubleFromStr (row[2]);
@ -2542,7 +2543,7 @@ static void Sta_ShowNumHitsPerWeek (Sta_CountType_t CountType,
/* Get year and week (row[0] holds date in YYYYWW format) */ /* Get year and week (row[0] holds date in YYYYWW format) */
if (sscanf (row[0],"%04u%02u",&ReadDate.Year,&ReadDate.Week) != 2) if (sscanf (row[0],"%04u%02u",&ReadDate.Year,&ReadDate.Week) != 2)
Lay_WrongDateExit (); Err_WrongDateExit ();
/* Get number of pages generated (in row[1]) */ /* Get number of pages generated (in row[1]) */
Hits.Num = Str_GetDoubleFromStr (row[1]); Hits.Num = Str_GetDoubleFromStr (row[1]);
@ -2643,7 +2644,7 @@ static void Sta_ShowNumHitsPerMonth (Sta_CountType_t CountType,
/* Get the year and the month (in row[0] is the date in YYYYMM format) */ /* Get the year and the month (in row[0] is the date in YYYYMM format) */
if (sscanf (row[0],"%04u%02u",&ReadDate.Year,&ReadDate.Month) != 2) if (sscanf (row[0],"%04u%02u",&ReadDate.Year,&ReadDate.Month) != 2)
Lay_WrongDateExit (); Err_WrongDateExit ();
/* Get number of pages generated (in row[1]) */ /* Get number of pages generated (in row[1]) */
Hits.Num = Str_GetDoubleFromStr (row[1]); Hits.Num = Str_GetDoubleFromStr (row[1]);
@ -2744,7 +2745,7 @@ static void Sta_ShowNumHitsPerYear (Sta_CountType_t CountType,
/* Get the year (in row[0] is the date in YYYY format) */ /* Get the year (in row[0] is the date in YYYY format) */
if (sscanf (row[0],"%04u",&ReadDate.Year) != 1) if (sscanf (row[0],"%04u",&ReadDate.Year) != 1)
Lay_WrongDateExit (); Err_WrongDateExit ();
/* Get number of pages generated (in row[1]) */ /* Get number of pages generated (in row[1]) */
Hits.Num = Str_GetDoubleFromStr (row[1]); Hits.Num = Str_GetDoubleFromStr (row[1]);
@ -2844,7 +2845,7 @@ static void Sta_ShowNumHitsPerHour (unsigned NumHits,
row = mysql_fetch_row (mysql_res); // Get next result row = mysql_fetch_row (mysql_res); // Get next result
NumHit++; NumHit++;
if (sscanf (row[0],"%02u",&ReadHour) != 1) // In row[0] is the date in HH format if (sscanf (row[0],"%02u",&ReadHour) != 1) // In row[0] is the date in HH format
Lay_WrongDateExit (); Err_WrongDateExit ();
for (H = Hour; for (H = Hour;
H < ReadHour; H < ReadHour;
@ -2939,7 +2940,7 @@ static void Sta_ShowAverageAccessesPerMinute (unsigned NumHits,MYSQL_RES *mysql_
row = mysql_fetch_row (mysql_res); // Get next result row = mysql_fetch_row (mysql_res); // Get next result
NumHit++; NumHit++;
if (sscanf (row[0],"%02u%02u",&ReadHour,&MinuteRead) != 2) // In row[0] is the date in formato HHMM if (sscanf (row[0],"%02u%02u",&ReadHour,&MinuteRead) != 2) // In row[0] is the date in formato HHMM
Lay_WrongDateExit (); Err_WrongDateExit ();
/* Get number of pages generated */ /* Get number of pages generated */
Hits.Num = Str_GetDoubleFromStr (row[1]); Hits.Num = Str_GetDoubleFromStr (row[1]);
MinuteDayRead = ReadHour * 60 + MinuteRead; MinuteDayRead = ReadHour * 60 + MinuteRead;
@ -3221,7 +3222,7 @@ static void Sta_ShowNumHitsPerPlugin (Sta_CountType_t CountType,
/* Write the plugin */ /* Write the plugin */
if (sscanf (row[0],"%ld",&Plg.PlgCod) != 1) if (sscanf (row[0],"%ld",&Plg.PlgCod) != 1)
Lay_WrongPluginExit (); Err_WrongPluginExit ();
HTM_TD_Begin ("class=\"LOG RT\""); HTM_TD_Begin ("class=\"LOG RT\"");
if (Plg_GetDataOfPluginByCod (&Plg)) if (Plg_GetDataOfPluginByCod (&Plg))
HTM_Txt (Plg.Name); HTM_Txt (Plg.Name);
@ -3277,7 +3278,7 @@ static void Sta_ShowNumHitsPerWSFunction (Sta_CountType_t CountType,
/* Write the plugin */ /* Write the plugin */
if (sscanf (row[0],"%ld",&FunCod) != 1) if (sscanf (row[0],"%ld",&FunCod) != 1)
Lay_ShowErrorAndExit ("Wrong function code."); Err_ShowErrorAndExit ("Wrong function code.");
HTM_TD_Begin ("class=\"LOG LT\""); HTM_TD_Begin ("class=\"LOG LT\"");
HTM_TxtF ("%s&nbsp;",API_GetFunctionNameFromFunCod (FunCod)); HTM_TxtF ("%s&nbsp;",API_GetFunctionNameFromFunCod (FunCod));
@ -3343,7 +3344,7 @@ static void Sta_ShowNumHitsPerBanner (Sta_CountType_t CountType,
/* Write the banner */ /* Write the banner */
if (sscanf (row[0],"%ld",&(Ban.BanCod)) != 1) if (sscanf (row[0],"%ld",&(Ban.BanCod)) != 1)
Lay_WrongBannerExit (); Err_WrongBannerExit ();
Ban_GetDataOfBannerByCod (&Ban); Ban_GetDataOfBannerByCod (&Ban);
HTM_TD_Begin ("class=\"LOG LT\""); HTM_TD_Begin ("class=\"LOG LT\"");
HTM_A_Begin ("href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\"", HTM_A_Begin ("href=\"%s\" title=\"%s\" class=\"DAT\" target=\"_blank\"",
@ -3884,7 +3885,7 @@ static void Sta_DrawBarNumHits (char Color,
if (BarWidth == 0) if (BarWidth == 0)
BarWidth = 1; BarWidth = 1;
if (asprintf (&Icon,"%c1x1.png",Color) < 0) // Background if (asprintf (&Icon,"%c1x1.png",Color) < 0) // Background
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,NULL, HTM_IMG (Cfg_URL_ICON_PUBLIC,Icon,NULL,
"style=\"width:%upx;height:10px;\"",BarWidth); "style=\"width:%upx;height:10px;\"",BarWidth);
free (Icon); free (Icon);

View File

@ -34,6 +34,7 @@
#include <stdlib.h> // For malloc and free #include <stdlib.h> // For malloc and free
#include <string.h> // For string functions #include <string.h> // For string functions
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_ID.h" #include "swad_ID.h"
@ -323,7 +324,7 @@ void Str_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScre
ParamsStr); ParamsStr);
Anchor1NickLength = strlen (Anchor1Nick); Anchor1NickLength = strlen (Anchor1Nick);
if ((Links[NumLinks].Anchor1Nick = malloc (Anchor1NickLength + 1)) == NULL) if ((Links[NumLinks].Anchor1Nick = malloc (Anchor1NickLength + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
strcpy (Links[NumLinks].Anchor1Nick,Anchor1Nick); strcpy (Links[NumLinks].Anchor1Nick,Anchor1Nick);
Links[NumLinks].Anchor1NickLength = Anchor1NickLength; Links[NumLinks].Anchor1NickLength = Anchor1NickLength;
@ -336,7 +337,7 @@ void Str_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScre
Gbl.Form.Id); Gbl.Form.Id);
Anchor2NickLength = strlen (Anchor2Nick); Anchor2NickLength = strlen (Anchor2Nick);
if ((Links[NumLinks].Anchor2Nick = malloc (Anchor2NickLength + 1)) == NULL) if ((Links[NumLinks].Anchor2Nick = malloc (Anchor2NickLength + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
strcpy (Links[NumLinks].Anchor2Nick,Anchor2Nick); strcpy (Links[NumLinks].Anchor2Nick,Anchor2Nick);
Links[NumLinks].Anchor2NickLength = Anchor2NickLength; Links[NumLinks].Anchor2NickLength = Anchor2NickLength;
@ -961,7 +962,7 @@ void Str_DoubleNumToStr (char **Str,double Number)
{ {
if (asprintf (Str,"%.15lg", if (asprintf (Str,"%.15lg",
Number) < 0) Number) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -980,7 +981,7 @@ void Str_DoubleNumToStrFewDigits (char **Str,double Number)
if (FractionaryPart == 0.0) if (FractionaryPart == 0.0)
{ {
if (asprintf (Str,"%.0f",IntegerPart) < 0) if (asprintf (Str,"%.0f",IntegerPart) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
@ -999,7 +1000,7 @@ void Str_DoubleNumToStrFewDigits (char **Str,double Number)
else else
Format = "%le"; Format = "%le";
if (asprintf (Str,Format,Number) < 0) if (asprintf (Str,Format,Number) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
} }
@ -1033,7 +1034,7 @@ double Str_GetDoubleFromStr (const char *Str)
/***** Copy source string to temporary string to convert to point *****/ /***** Copy source string to temporary string to convert to point *****/
if (asprintf (&StrPoint,"%s",Str) < 0) if (asprintf (&StrPoint,"%s",Str) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** The string is "scanned" in floating point /***** The string is "scanned" in floating point
(it must have a point, not a comma as decimal separator) *****/ (it must have a point, not a comma as decimal separator) *****/
@ -1149,7 +1150,7 @@ void Str_ChangeFormat (Str_ChangeFrom_t ChangeFrom,Str_ChangeTo_t ChangeTo,
{ {
/***** Allocate memory for a destination string where to do the changes *****/ /***** Allocate memory for a destination string where to do the changes *****/
if ((StrDst = malloc (MaxLengthStr + 1)) == NULL) if ((StrDst = malloc (MaxLengthStr + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Make the change *****/ /***** Make the change *****/
for (PtrSrc = Str, PtrDst = StrDst; for (PtrSrc = Str, PtrDst = StrDst;
@ -1548,7 +1549,7 @@ void Str_ChangeFormat (Str_ChangeFrom_t ChangeFrom,Str_ChangeTo_t ChangeTo,
/* Check new length of destination string after the copy */ /* Check new length of destination string after the copy */
if (LengthStrDst + LengthSpecStrDst > MaxLengthStr) if (LengthStrDst + LengthSpecStrDst > MaxLengthStr)
Lay_ShowErrorAndExit ("Space allocated to string is full."); Err_ShowErrorAndExit ("Space allocated to string is full.");
/* Copy to appropiate place the special character string */ /* Copy to appropiate place the special character string */
// strncpy (PtrDst,StrSpecialChar,LengthSpecStrDst); // strncpy (PtrDst,StrSpecialChar,LengthSpecStrDst);
@ -1565,7 +1566,7 @@ void Str_ChangeFormat (Str_ChangeFrom_t ChangeFrom,Str_ChangeTo_t ChangeTo,
{ {
/* Check new length of destination string after the copy */ /* Check new length of destination string after the copy */
if (LengthStrDst >= MaxLengthStr) if (LengthStrDst >= MaxLengthStr)
Lay_ShowErrorAndExit ("Space allocated to string is full."); Err_ShowErrorAndExit ("Space allocated to string is full.");
/* Copy char from source to destination and increment pointers */ /* Copy char from source to destination and increment pointers */
*PtrDst++ = *PtrSrc++; *PtrDst++ = *PtrSrc++;
@ -2503,7 +2504,7 @@ void Str_CopyStrChangingSpaces (const char *StringWithSpaces,char *StringWithout
*PtrDst = '\0'; *PtrDst = '\0';
if (Length > MaxLength) if (Length > MaxLength)
Lay_ShowErrorAndExit ("Path is too long."); Err_ShowErrorAndExit ("Path is too long.");
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2758,7 +2759,7 @@ int Str_ReadFileUntilBoundaryStr (FILE *FileSrc,char *StrDst,
return 1; return 1;
} }
if (LengthBoundaryStr > Str_MAX_BYTES_BOUNDARY_STR) if (LengthBoundaryStr > Str_MAX_BYTES_BOUNDARY_STR)
Lay_ShowErrorAndExit ("Delimiter string too large."); Err_ShowErrorAndExit ("Delimiter string too large.");
Ptr = StrDst; Ptr = StrDst;
StartIndex = 0; StartIndex = 0;
@ -3018,7 +3019,7 @@ void Str_Copy (char *Dst,const char *Src,size_t DstSize)
snprintf (ErrorTxt,sizeof (ErrorTxt), snprintf (ErrorTxt,sizeof (ErrorTxt),
"Trying to copy %zu chars into a %zu-chars buffer.", "Trying to copy %zu chars into a %zu-chars buffer.",
SrcLength,DstSize); SrcLength,DstSize);
Lay_ShowErrorAndExit (ErrorTxt); Err_ShowErrorAndExit (ErrorTxt);
} }
/***** Copy source into destination *****/ /***** Copy source into destination *****/
@ -3043,7 +3044,7 @@ void Str_Concat (char *Dst,const char *Src,size_t DstSize)
{ {
snprintf (ErrorTxt,sizeof (ErrorTxt),"%lu-chars buffer has %lu chars!", snprintf (ErrorTxt,sizeof (ErrorTxt),"%lu-chars buffer has %lu chars!",
DstSize,DstLength); DstSize,DstLength);
Lay_ShowErrorAndExit (ErrorTxt); Err_ShowErrorAndExit (ErrorTxt);
} }
/***** Check if buffer has enough space for source *****/ /***** Check if buffer has enough space for source *****/
@ -3056,7 +3057,7 @@ void Str_Concat (char *Dst,const char *Src,size_t DstSize)
"Trying to concatenate %zu chars to a %zu-chars buffer" "Trying to concatenate %zu chars to a %zu-chars buffer"
" with free space for only %zu chars!", " with free space for only %zu chars!",
SrcLength,DstSize,FreeSpace); SrcLength,DstSize,FreeSpace);
Lay_ShowErrorAndExit (ErrorTxt); Err_ShowErrorAndExit (ErrorTxt);
} }
/***** Concatenate ******/ /***** Concatenate ******/
@ -3076,7 +3077,7 @@ char *Str_BuildStringStr (const char *fmt,const char *Str)
{ {
Str_FreeString (); Str_FreeString ();
if (asprintf (&Str_String,fmt,Str) < 0) if (asprintf (&Str_String,fmt,Str) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
return Str_String; return Str_String;
} }
@ -3088,7 +3089,7 @@ char *Str_BuildStringLong (const char *fmt,long Num)
{ {
Str_FreeString (); Str_FreeString ();
if (asprintf (&Str_String,fmt,Num) < 0) if (asprintf (&Str_String,fmt,Num) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
return Str_String; return Str_String;
} }
@ -3099,7 +3100,7 @@ char *Str_BuildStringLongStr (long Num,const char *Str)
{ {
Str_FreeString (); Str_FreeString ();
if (asprintf (&Str_String,"%ld %s",Num,Str) < 0) if (asprintf (&Str_String,"%ld %s",Num,Str) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
return Str_String; return Str_String;
} }

View File

@ -35,6 +35,7 @@
#include "swad_attendance.h" #include "swad_attendance.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
@ -434,7 +435,7 @@ void Svy_SeeOneSurvey (void)
/***** Get survey code *****/ /***** Get survey code *****/
if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/***** Show survey *****/ /***** Show survey *****/
Svy_ShowOneSurvey (&Surveys,Svy.SvyCod,true); Svy_ShowOneSurvey (&Surveys,Svy.SvyCod,true);
@ -500,7 +501,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
/* Start date/time */ /* Start date/time */
UniqueId++; UniqueId++;
if (asprintf (&Id,"svy_date_start_%u",UniqueId) < 0) if (asprintf (&Id,"svy_date_start_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (ShowOnlyThisSvyComplete) if (ShowOnlyThisSvyComplete)
HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"", HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
Id, Id,
@ -524,7 +525,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
/* End date/time */ /* End date/time */
if (asprintf (&Id,"svy_date_end_%u",UniqueId) < 0) if (asprintf (&Id,"svy_date_end_%u",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (ShowOnlyThisSvyComplete) if (ShowOnlyThisSvyComplete)
HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"", HTM_TD_Begin ("id=\"%s\" class=\"%s LT\"",
Id, Id,
@ -650,7 +651,7 @@ static void Svy_ShowOneSurvey (struct Svy_Surveys *Surveys,
switch (Svy.Scope) switch (Svy.Scope)
{ {
case Hie_Lvl_UNK: // Unknown case Hie_Lvl_UNK: // Unknown
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
case Hie_Lvl_SYS: // System case Hie_Lvl_SYS: // System
HTM_Txt (Cfg_PLATFORM_SHORT_NAME); HTM_Txt (Cfg_PLATFORM_SHORT_NAME);
@ -972,13 +973,13 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
Sco_GetDBStrFromScope (Scope),Cods[Scope], Sco_GetDBStrFromScope (Scope),Cods[Scope],
(HiddenAllowed & 1 << Scope) ? "" : (HiddenAllowed & 1 << Scope) ? "" :
" AND Hidden='N'") < 0) " AND Hidden='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
SubQueryFilled = true; SubQueryFilled = true;
} }
else else
{ {
if (asprintf (&SubQuery[Scope],"%s","") < 0) if (asprintf (&SubQuery[Scope],"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/* Fill subquery for course */ /* Fill subquery for course */
@ -1007,7 +1008,7 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
(HiddenAllowed & 1 << Hie_Lvl_CRS) ? "" : (HiddenAllowed & 1 << Hie_Lvl_CRS) ? "" :
" AND Hidden='N'", " AND Hidden='N'",
Gbl.Usrs.Me.UsrDat.UsrCod) < 0) Gbl.Usrs.Me.UsrDat.UsrCod) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else // Gbl.Crs.Grps.WhichGrps == Grp_ALL_GROUPS else // Gbl.Crs.Grps.WhichGrps == Grp_ALL_GROUPS
{ {
@ -1017,14 +1018,14 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
Sco_GetDBStrFromScope (Hie_Lvl_CRS),Cods[Hie_Lvl_CRS], Sco_GetDBStrFromScope (Hie_Lvl_CRS),Cods[Hie_Lvl_CRS],
(HiddenAllowed & 1 << Hie_Lvl_CRS) ? "" : (HiddenAllowed & 1 << Hie_Lvl_CRS) ? "" :
" AND Hidden='N'") < 0) " AND Hidden='N'") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
SubQueryFilled = true; SubQueryFilled = true;
} }
else else
{ {
if (asprintf (&SubQuery[Hie_Lvl_CRS],"%s","") < 0) if (asprintf (&SubQuery[Hie_Lvl_CRS],"%s","") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
/* Make query */ /* Make query */
@ -1043,7 +1044,7 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
OrderBySubQuery[Surveys->SelectedOrder]); OrderBySubQuery[Surveys->SelectedOrder]);
else else
{ {
Lay_ShowErrorAndExit ("Can not get list of surveys."); Err_ShowErrorAndExit ("Can not get list of surveys.");
NumRows = 0; // Not reached. Initialized to avoid warning NumRows = 0; // Not reached. Initialized to avoid warning
} }
@ -1060,7 +1061,7 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
/***** Create list of surveys *****/ /***** Create list of surveys *****/
if ((Surveys->LstSvyCods = calloc (NumRows, if ((Surveys->LstSvyCods = calloc (NumRows,
sizeof (*Surveys->LstSvyCods))) == NULL) sizeof (*Surveys->LstSvyCods))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get the surveys codes *****/ /***** Get the surveys codes *****/
for (NumSvy = 0; for (NumSvy = 0;
@ -1068,7 +1069,7 @@ static void Svy_GetListSurveys (struct Svy_Surveys *Surveys)
NumSvy++) NumSvy++)
/* Get next survey code */ /* Get next survey code */
if ((Surveys->LstSvyCods[NumSvy] = DB_GetNextCode (mysql_res)) < 0) if ((Surveys->LstSvyCods[NumSvy] = DB_GetNextCode (mysql_res)) < 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
} }
else else
Surveys->Num = 0; Surveys->Num = 0;
@ -1282,7 +1283,7 @@ void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy)
/* Get survey scope (row[1]) */ /* Get survey scope (row[1]) */
if ((Svy->Scope = Sco_GetScopeFromDBStr (row[1])) == Hie_Lvl_UNK) if ((Svy->Scope = Sco_GetScopeFromDBStr (row[1])) == Hie_Lvl_UNK)
Lay_WrongScopeExit (); Err_WrongScopeExit ();
/* Get code of the country, institution, center, degree or course (row[2]) */ /* Get code of the country, institution, center, degree or course (row[2]) */
Svy->Cod = Str_ConvertStrCodToLongCod (row[2]); Svy->Cod = Str_ConvertStrCodToLongCod (row[2]);
@ -1292,7 +1293,7 @@ void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy)
/* Get roles (row[4]) */ /* Get roles (row[4]) */
if (sscanf (row[4],"%u",&Svy->Roles) != 1) if (sscanf (row[4],"%u",&Svy->Roles) != 1)
Lay_ShowErrorAndExit ("Error when reading roles of survey."); Err_ShowErrorAndExit ("Error when reading roles of survey.");
/* Get author of the survey (row[5]) */ /* Get author of the survey (row[5]) */
Svy->UsrCod = Str_ConvertStrCodToLongCod (row[5]); Svy->UsrCod = Str_ConvertStrCodToLongCod (row[5]);
@ -1320,7 +1321,7 @@ void Svy_GetDataOfSurveyByCod (struct Svy_Survey *Svy)
switch (Svy->Scope) switch (Svy->Scope)
{ {
case Hie_Lvl_UNK: // Unknown case Hie_Lvl_UNK: // Unknown
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
case Hie_Lvl_SYS: // System case Hie_Lvl_SYS: // System
Svy->Status.IBelongToScope = Gbl.Usrs.Me.Logged; Svy->Status.IBelongToScope = Gbl.Usrs.Me.Logged;
@ -1525,7 +1526,7 @@ void Svy_GetNotifSurvey (char SummaryStr[Ntf_MAX_BYTES_SUMMARY + 1],
{ {
Length = strlen (row[1]); Length = strlen (row[1]);
if ((*ContentStr = malloc (Length + 1)) == NULL) if ((*ContentStr = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (*ContentStr,row[1],Length); Str_Copy (*ContentStr,row[1],Length);
} }
} }
@ -1574,12 +1575,12 @@ void Svy_AskRemSurvey (void)
/***** Get survey code *****/ /***** Get survey code *****/
if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/***** Get data of the survey from database *****/ /***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy); Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit) if (!Svy.Status.ICanEdit)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show question and button to remove survey *****/ /***** Show question and button to remove survey *****/
Surveys.SvyCod = Svy.SvyCod; Surveys.SvyCod = Svy.SvyCod;
@ -1613,12 +1614,12 @@ void Svy_RemoveSurvey (void)
/***** Get survey code *****/ /***** Get survey code *****/
if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/***** Get data of the survey from database *****/ /***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy); Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit) if (!Svy.Status.ICanEdit)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Remove all the users in this survey *****/ /***** Remove all the users in this survey *****/
DB_QueryDELETE ("can not remove users who are answered a survey", DB_QueryDELETE ("can not remove users who are answered a survey",
@ -1681,12 +1682,12 @@ void Svy_AskResetSurvey (void)
/***** Get survey code *****/ /***** Get survey code *****/
if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/***** Get data of the survey from database *****/ /***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy); Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit) if (!Svy.Status.ICanEdit)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Ask for confirmation of reset *****/ /***** Ask for confirmation of reset *****/
Ale_ShowAlert (Ale_WARNING,Txt_Do_you_really_want_to_reset_the_survey_X, Ale_ShowAlert (Ale_WARNING,Txt_Do_you_really_want_to_reset_the_survey_X,
@ -1734,12 +1735,12 @@ void Svy_ResetSurvey (void)
/***** Get survey code *****/ /***** Get survey code *****/
if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/***** Get data of the survey from database *****/ /***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy); Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit) if (!Svy.Status.ICanEdit)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Remove all the users in this survey *****/ /***** Remove all the users in this survey *****/
DB_QueryDELETE ("can not remove users who are answered a survey", DB_QueryDELETE ("can not remove users who are answered a survey",
@ -1783,12 +1784,12 @@ void Svy_HideSurvey (void)
/***** Get survey code *****/ /***** Get survey code *****/
if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/***** Get data of the survey from database *****/ /***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy); Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit) if (!Svy.Status.ICanEdit)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Hide survey *****/ /***** Hide survey *****/
DB_QueryUPDATE ("can not hide survey", DB_QueryUPDATE ("can not hide survey",
@ -1820,12 +1821,12 @@ void Svy_UnhideSurvey (void)
/***** Get survey code *****/ /***** Get survey code *****/
if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/***** Get data of the survey from database *****/ /***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy); Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit) if (!Svy.Status.ICanEdit)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/***** Show survey *****/ /***** Show survey *****/
DB_QueryUPDATE ("can not show survey", DB_QueryUPDATE ("can not show survey",
@ -1901,7 +1902,7 @@ void Svy_RequestCreatOrEditSvy (void)
{ {
/***** Put link (form) to create new survey *****/ /***** Put link (form) to create new survey *****/
if (!Svy_CheckIfICanCreateSvy ()) if (!Svy_CheckIfICanCreateSvy ())
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/* Initialize to empty survey */ /* Initialize to empty survey */
Svy.SvyCod = -1L; Svy.SvyCod = -1L;
@ -1926,7 +1927,7 @@ void Svy_RequestCreatOrEditSvy (void)
/* Get data of the survey from database */ /* Get data of the survey from database */
Svy_GetDataOfSurveyByCod (&Svy); Svy_GetDataOfSurveyByCod (&Svy);
if (!Svy.Status.ICanEdit) if (!Svy.Status.ICanEdit)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/* Get text of the survey from database */ /* Get text of the survey from database */
Svy_GetSurveyTxtFromDB (Svy.SvyCod,Txt); Svy_GetSurveyTxtFromDB (Svy.SvyCod,Txt);
@ -2116,7 +2117,7 @@ static void Svy_SetDefaultAndAllowedScope (struct Svy_Survey *Svy)
} }
if (!ICanEdit) if (!ICanEdit)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2215,7 +2216,7 @@ void Svy_ReceiveFormSurvey (void)
OldSvy.SvyCod = NewSvy.SvyCod; OldSvy.SvyCod = NewSvy.SvyCod;
Svy_GetDataOfSurveyByCod (&OldSvy); Svy_GetDataOfSurveyByCod (&OldSvy);
if (!OldSvy.Status.ICanEdit) if (!OldSvy.Status.ICanEdit)
Lay_NoPermissionExit (); Err_NoPermissionExit ();
NewSvy.Scope = OldSvy.Scope; NewSvy.Scope = OldSvy.Scope;
} }
@ -2226,46 +2227,46 @@ void Svy_ReceiveFormSurvey (void)
{ {
case Hie_Lvl_SYS: case Hie_Lvl_SYS:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM) if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM)
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_SYS; NewSvy.Scope = Hie_Lvl_SYS;
NewSvy.Cod = -1L; NewSvy.Cod = -1L;
break; break;
case Hie_Lvl_CTY: case Hie_Lvl_CTY:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM) if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM)
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_CTY; NewSvy.Scope = Hie_Lvl_CTY;
NewSvy.Cod = Gbl.Hierarchy.Cty.CtyCod; NewSvy.Cod = Gbl.Hierarchy.Cty.CtyCod;
break; break;
case Hie_Lvl_INS: case Hie_Lvl_INS:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM && if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM &&
Gbl.Usrs.Me.Role.Logged != Rol_INS_ADM) Gbl.Usrs.Me.Role.Logged != Rol_INS_ADM)
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_INS; NewSvy.Scope = Hie_Lvl_INS;
NewSvy.Cod = Gbl.Hierarchy.Ins.InsCod; NewSvy.Cod = Gbl.Hierarchy.Ins.InsCod;
break; break;
case Hie_Lvl_CTR: case Hie_Lvl_CTR:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM && if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM &&
Gbl.Usrs.Me.Role.Logged != Rol_CTR_ADM) Gbl.Usrs.Me.Role.Logged != Rol_CTR_ADM)
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_CTR; NewSvy.Scope = Hie_Lvl_CTR;
NewSvy.Cod = Gbl.Hierarchy.Ctr.CtrCod; NewSvy.Cod = Gbl.Hierarchy.Ctr.CtrCod;
break; break;
case Hie_Lvl_DEG: case Hie_Lvl_DEG:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM && if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM &&
Gbl.Usrs.Me.Role.Logged != Rol_DEG_ADM) Gbl.Usrs.Me.Role.Logged != Rol_DEG_ADM)
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_DEG; NewSvy.Scope = Hie_Lvl_DEG;
NewSvy.Cod = Gbl.Hierarchy.Deg.DegCod; NewSvy.Cod = Gbl.Hierarchy.Deg.DegCod;
break; break;
case Hie_Lvl_CRS: case Hie_Lvl_CRS:
if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM && if (Gbl.Usrs.Me.Role.Logged != Rol_SYS_ADM &&
Gbl.Usrs.Me.Role.Logged != Rol_TCH) Gbl.Usrs.Me.Role.Logged != Rol_TCH)
Lay_WrongScopeExit (); Err_WrongScopeExit ();
NewSvy.Scope = Hie_Lvl_CRS; NewSvy.Scope = Hie_Lvl_CRS;
NewSvy.Cod = Gbl.Hierarchy.Crs.CrsCod; NewSvy.Cod = Gbl.Hierarchy.Crs.CrsCod;
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
@ -2686,7 +2687,7 @@ void Svy_RequestEditQuestion (void)
/***** Get survey code *****/ /***** Get survey code *****/
if ((SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/* Get the question code */ /* Get the question code */
SvyQst.QstCod = Svy_GetParamQstCod (); SvyQst.QstCod = Svy_GetParamQstCod ();
@ -2747,7 +2748,7 @@ static void Svy_ShowFormEditOneQst (struct Svy_Surveys *Surveys,
/* Get question index inside survey (row[0]) */ /* Get question index inside survey (row[0]) */
if (sscanf (row[0],"%u",&(SvyQst->QstInd)) != 1) if (sscanf (row[0],"%u",&(SvyQst->QstInd)) != 1)
Lay_WrongQuestionIndexExit (); Err_WrongQuestionIndexExit ();
/* Get the type of answer (row[1]) */ /* Get the type of answer (row[1]) */
SvyQst->AnswerType = Svy_ConvertFromStrAnsTypDBToAnsTyp (row[1]); SvyQst->AnswerType = Svy_ConvertFromStrAnsTypDBToAnsTyp (row[1]);
@ -2767,7 +2768,7 @@ static void Svy_ShowFormEditOneQst (struct Svy_Surveys *Surveys,
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (NumAnswers > Svy_MAX_ANSWERS_PER_QUESTION) if (NumAnswers > Svy_MAX_ANSWERS_PER_QUESTION)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
if (!Svy_AllocateTextChoiceAnswer (SvyQst,NumAns)) if (!Svy_AllocateTextChoiceAnswer (SvyQst,NumAns))
/* Abort on error */ /* Abort on error */
Ale_ShowAlertsAndExit (); Ale_ShowAlertsAndExit ();
@ -2787,7 +2788,7 @@ static void Svy_ShowFormEditOneQst (struct Svy_Surveys *Surveys,
Surveys->QstCod = SvyQst->QstCod; Surveys->QstCod = SvyQst->QstCod;
if (asprintf (&Title,"%s %u",Txt_Question,SvyQst->QstInd + 1) < 0) // Question index may be 0, 1, 2, 3,... if (asprintf (&Title,"%s %u",Txt_Question,SvyQst->QstInd + 1) < 0) // Question index may be 0, 1, 2, 3,...
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Box_BoxBegin (NULL,Title, Box_BoxBegin (NULL,Title,
Svy_PutIconToRemoveOneQst,Surveys, Svy_PutIconToRemoveOneQst,Surveys,
NULL,Box_NOT_CLOSABLE); NULL,Box_NOT_CLOSABLE);
@ -3084,7 +3085,7 @@ void Svy_ReceiveQst (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get survey code */ /* Get survey code */
if ((SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/* Get question code */ /* Get question code */
SvyQst.QstCod = Svy_GetParamQstCod (); SvyQst.QstCod = Svy_GetParamQstCod ();
@ -3270,7 +3271,7 @@ static unsigned Svy_GetNextQuestionIndexInSvy (long SvyCod)
if (row[0]) // There are questions if (row[0]) // There are questions
{ {
if (sscanf (row[0],"%u",&QstInd) != 1) if (sscanf (row[0],"%u",&QstInd) != 1)
Lay_ShowErrorAndExit ("Error when getting last question index."); Err_ShowErrorAndExit ("Error when getting last question index.");
QstInd++; QstInd++;
} }
@ -3363,7 +3364,7 @@ static void Svy_ListSvyQuestions (struct Svy_Surveys *Surveys,
/* row[0] holds the code of the question */ /* row[0] holds the code of the question */
if (sscanf (row[0],"%ld",&(SvyQst.QstCod)) != 1) if (sscanf (row[0],"%ld",&(SvyQst.QstCod)) != 1)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -3389,7 +3390,7 @@ static void Svy_ListSvyQuestions (struct Svy_Surveys *Surveys,
/* Write index of question inside survey (row[1]) */ /* Write index of question inside survey (row[1]) */
HTM_TD_Begin ("class=\"DAT_SMALL CT COLOR%u\"",Gbl.RowEvenOdd); HTM_TD_Begin ("class=\"DAT_SMALL CT COLOR%u\"",Gbl.RowEvenOdd);
if (sscanf (row[1],"%u",&(SvyQst.QstInd)) != 1) if (sscanf (row[1],"%u",&(SvyQst.QstInd)) != 1)
Lay_WrongQuestionIndexExit (); Err_WrongQuestionIndexExit ();
HTM_Unsigned (SvyQst.QstInd + 1); HTM_Unsigned (SvyQst.QstInd + 1);
HTM_TD_End (); HTM_TD_End ();
@ -3488,7 +3489,7 @@ static void Svy_WriteQstStem (const char *Stem)
/* Convert the stem, that is in HTML, to rigorous HTML */ /* Convert the stem, that is in HTML, to rigorous HTML */
Length = strlen (Stem) * Str_MAX_BYTES_PER_CHAR; Length = strlen (Stem) * Str_MAX_BYTES_PER_CHAR;
if ((HeadingRigorousHTML = malloc (Length + 1)) == NULL) if ((HeadingRigorousHTML = malloc (Length + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (HeadingRigorousHTML,Stem,Length); Str_Copy (HeadingRigorousHTML,Stem,Length);
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML, Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
HeadingRigorousHTML,Length,false); HeadingRigorousHTML,Length,false);
@ -3523,7 +3524,7 @@ static void Svy_WriteAnswersOfAQst (struct Svy_Survey *Svy,
{ {
/* Check number of answers */ /* Check number of answers */
if (NumAnswers > Svy_MAX_ANSWERS_PER_QUESTION) if (NumAnswers > Svy_MAX_ANSWERS_PER_QUESTION)
Lay_ShowErrorAndExit ("Wrong number of answers."); Err_ShowErrorAndExit ("Wrong number of answers.");
/* Write one row for each answer */ /* Write one row for each answer */
HTM_TABLE_BeginPadding (5); HTM_TABLE_BeginPadding (5);
@ -3536,7 +3537,7 @@ static void Svy_WriteAnswersOfAQst (struct Svy_Survey *Svy,
/* Get number of users who have marked this answer (row[1]) */ /* Get number of users who have marked this answer (row[1]) */
if (sscanf (row[1],"%u",&NumUsrsThisAnswer) != 1) if (sscanf (row[1],"%u",&NumUsrsThisAnswer) != 1)
Lay_ShowErrorAndExit ("Error when getting number of users who have marked an answer."); Err_ShowErrorAndExit ("Error when getting number of users who have marked an answer.");
/* Convert the answer (row[2]), that is in HTML, to rigorous HTML */ /* Convert the answer (row[2]), that is in HTML, to rigorous HTML */
if (!Svy_AllocateTextChoiceAnswer (SvyQst,NumAns)) if (!Svy_AllocateTextChoiceAnswer (SvyQst,NumAns))
@ -3623,13 +3624,13 @@ static void Svy_DrawBarNumUsrs (unsigned NumUsrs,unsigned MaxUsrs)
NumUsrs, NumUsrs,
(unsigned) ((((double) NumUsrs * 100.0) / (double) MaxUsrs) + 0.5), (unsigned) ((((double) NumUsrs * 100.0) / (double) MaxUsrs) + 0.5),
Txt_of_PART_OF_A_TOTAL,MaxUsrs) < 0) Txt_of_PART_OF_A_TOTAL,MaxUsrs) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
else else
{ {
if (asprintf (&Title,"0&nbsp;(0%%&nbsp;%s&nbsp;%u)", if (asprintf (&Title,"0&nbsp;(0%%&nbsp;%s&nbsp;%u)",
Txt_of_PART_OF_A_TOTAL,MaxUsrs) < 0) Txt_of_PART_OF_A_TOTAL,MaxUsrs) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
} }
HTM_TD_Begin ("class=\"DAT LT\" style=\"width:%upx;\"",Svy_MAX_BAR_WIDTH + 125); HTM_TD_Begin ("class=\"DAT LT\" style=\"width:%upx;\"",Svy_MAX_BAR_WIDTH + 125);
@ -3696,11 +3697,11 @@ void Svy_RequestRemoveQst (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get survey code */ /* Get survey code */
if ((SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/* Get question code */ /* Get question code */
if ((SvyQst.QstCod = Svy_GetParamQstCod ()) < 0) if ((SvyQst.QstCod = Svy_GetParamQstCod ()) < 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Get question index */ /* Get question index */
SvyQst.QstInd = Svy_GetQstIndFromQstCod (SvyQst.QstCod); SvyQst.QstInd = Svy_GetQstIndFromQstCod (SvyQst.QstCod);
@ -3738,11 +3739,11 @@ void Svy_RemoveQst (void)
/***** Get parameters from form *****/ /***** Get parameters from form *****/
/* Get survey code */ /* Get survey code */
if ((SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/* Get question code */ /* Get question code */
if ((SvyQst.QstCod = Svy_GetParamQstCod ()) <= 0) if ((SvyQst.QstCod = Svy_GetParamQstCod ()) <= 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Get question index */ /* Get question index */
SvyQst.QstInd = Svy_GetQstIndFromQstCod (SvyQst.QstCod); SvyQst.QstInd = Svy_GetQstIndFromQstCod (SvyQst.QstCod);
@ -3757,7 +3758,7 @@ void Svy_RemoveQst (void)
" WHERE QstCod=%ld", " WHERE QstCod=%ld",
SvyQst.QstCod); SvyQst.QstCod);
if (!mysql_affected_rows (&Gbl.mysql)) if (!mysql_affected_rows (&Gbl.mysql))
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Change index of questions greater than this */ /* Change index of questions greater than this */
DB_QueryUPDATE ("can not update indexes of questions", DB_QueryUPDATE ("can not update indexes of questions",
@ -3791,7 +3792,7 @@ void Svy_ReceiveSurveyAnswers (void)
/***** Get survey code *****/ /***** Get survey code *****/
if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0) if ((Svy.SvyCod = Svy_GetParamSvyCod ()) <= 0)
Lay_WrongSurveyExit (); Err_WrongSurveyExit ();
/***** Get data of the survey from database *****/ /***** Get data of the survey from database *****/
Svy_GetDataOfSurveyByCod (&Svy); Svy_GetDataOfSurveyByCod (&Svy);
@ -3844,7 +3845,7 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod)
{ {
/* Get next question */ /* Get next question */
if ((QstCod = DB_GetNextCode (mysql_res)) <= 0) if ((QstCod = DB_GetNextCode (mysql_res)) <= 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Get possible parameter with the user's answer */ /* Get possible parameter with the user's answer */
snprintf (ParamName,sizeof (ParamName),"Ans%010u",(unsigned) QstCod); snprintf (ParamName,sizeof (ParamName),"Ans%010u",(unsigned) QstCod);
@ -3863,7 +3864,7 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod)
} }
} }
else // This survey has no questions else // This survey has no questions
Lay_ShowErrorAndExit ("Error: this survey has no questions."); Err_ShowErrorAndExit ("Error: this survey has no questions.");
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -4116,20 +4117,20 @@ unsigned Svy_GetNumCrsSurveys (Hie_Lvl_Level_t Scope,unsigned *NumNotif)
Gbl.Hierarchy.Crs.CrsCod); Gbl.Hierarchy.Crs.CrsCod);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
/***** Get number of surveys *****/ /***** Get number of surveys *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&NumSurveys) != 1) if (sscanf (row[0],"%u",&NumSurveys) != 1)
Lay_ShowErrorAndExit ("Error when getting number of surveys."); Err_ShowErrorAndExit ("Error when getting number of surveys.");
/***** Get number of notifications by email *****/ /***** Get number of notifications by email *****/
if (row[1]) if (row[1])
{ {
if (sscanf (row[1],"%u",NumNotif) != 1) if (sscanf (row[1],"%u",NumNotif) != 1)
Lay_ShowErrorAndExit ("Error when getting number of notifications of surveys."); Err_ShowErrorAndExit ("Error when getting number of notifications of surveys.");
} }
else else
*NumNotif = 0; *NumNotif = 0;
@ -4239,7 +4240,7 @@ double Svy_GetNumQstsPerCrsSurvey (Hie_Lvl_Level_t Scope)
" GROUP BY svy_questions.SvyCod) AS NumQstsTable", " GROUP BY svy_questions.SvyCod) AS NumQstsTable",
Sco_GetDBStrFromScope (Hie_Lvl_CRS),Gbl.Hierarchy.Crs.CrsCod); Sco_GetDBStrFromScope (Hie_Lvl_CRS),Gbl.Hierarchy.Crs.CrsCod);
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
return 0.0; // Not reached return 0.0; // Not reached
} }
} }

View File

@ -37,6 +37,7 @@
#include "swad_changelog.h" #include "swad_changelog.h"
#include "swad_config.h" #include "swad_config.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_forum.h" #include "swad_forum.h"
#include "swad_global.h" #include "swad_global.h"
@ -350,7 +351,7 @@ static void Syl_SetSyllabusTypeFromAction (struct Syl_Syllabus *Syllabus)
Gbl.Crs.Info.Type = Inf_PRACTICALS; Gbl.Crs.Info.Type = Inf_PRACTICALS;
break; break;
default: default:
Lay_WrongActionExit (); Err_WrongActionExit ();
break; break;
} }
} }
@ -381,7 +382,7 @@ void Syl_LoadListItemsSyllabusIntoMemory (struct Syl_Syllabus *Syllabus,
/***** Go to the start of the list of items *****/ /***** Go to the start of the list of items *****/
if (!Str_FindStrInFile (Gbl.F.XML,"<lista>",Str_NO_SKIP_HTML_COMMENTS)) if (!Str_FindStrInFile (Gbl.F.XML,"<lista>",Str_NO_SKIP_HTML_COMMENTS))
Lay_WrongSyllabusFormatExit (); Err_WrongSyllabusFormatExit ();
/***** Save the position of the start of the list *****/ /***** Save the position of the start of the list *****/
PostBeginList = ftell (Gbl.F.XML); PostBeginList = ftell (Gbl.F.XML);
@ -394,7 +395,7 @@ void Syl_LoadListItemsSyllabusIntoMemory (struct Syl_Syllabus *Syllabus,
/***** Allocate memory for the list of items *****/ /***** Allocate memory for the list of items *****/
if ((Syl_LstItemsSyllabus.Lst = calloc (Syl_LstItemsSyllabus.NumItems + 1, if ((Syl_LstItemsSyllabus.Lst = calloc (Syl_LstItemsSyllabus.NumItems + 1,
sizeof (*Syl_LstItemsSyllabus.Lst))) == NULL) sizeof (*Syl_LstItemsSyllabus.Lst))) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Return to the start of the list *****/ /***** Return to the start of the list *****/
fseek (Gbl.F.XML,PostBeginList,SEEK_SET); fseek (Gbl.F.XML,PostBeginList,SEEK_SET);
@ -429,7 +430,7 @@ void Syl_LoadListItemsSyllabusIntoMemory (struct Syl_Syllabus *Syllabus,
{ {
/* Go to the start of the item */ /* Go to the start of the item */
if (!Str_FindStrInFile (Gbl.F.XML,"<item",Str_NO_SKIP_HTML_COMMENTS)) if (!Str_FindStrInFile (Gbl.F.XML,"<item",Str_NO_SKIP_HTML_COMMENTS))
Lay_WrongSyllabusFormatExit (); Err_WrongSyllabusFormatExit ();
/* Get the level */ /* Get the level */
Syl_LstItemsSyllabus.Lst[NumItem].Level = Syl_ReadLevelItemSyllabus (); Syl_LstItemsSyllabus.Lst[NumItem].Level = Syl_ReadLevelItemSyllabus ();
@ -454,10 +455,10 @@ void Syl_LoadListItemsSyllabusIntoMemory (struct Syl_Syllabus *Syllabus,
if (Result == 0) // Str too long if (Result == 0) // Str too long
{ {
if (!Str_FindStrInFile (Gbl.F.XML,"</item>",Str_NO_SKIP_HTML_COMMENTS)) // End the search if (!Str_FindStrInFile (Gbl.F.XML,"</item>",Str_NO_SKIP_HTML_COMMENTS)) // End the search
Lay_WrongSyllabusFormatExit (); Err_WrongSyllabusFormatExit ();
} }
else if (Result == -1) else if (Result == -1)
Lay_WrongSyllabusFormatExit (); Err_WrongSyllabusFormatExit ();
} }
/***** Close the file with the syllabus *****/ /***** Close the file with the syllabus *****/
@ -507,12 +508,12 @@ int Syl_ReadLevelItemSyllabus (void)
char StrlLevel[11 + 1]; char StrlLevel[11 + 1];
if (!Str_FindStrInFile (Gbl.F.XML,"nivel=\"",Str_NO_SKIP_HTML_COMMENTS)) if (!Str_FindStrInFile (Gbl.F.XML,"nivel=\"",Str_NO_SKIP_HTML_COMMENTS))
Lay_WrongSyllabusFormatExit (); Err_WrongSyllabusFormatExit ();
if (Str_ReadFileUntilBoundaryStr (Gbl.F.XML,StrlLevel,"\"",1, if (Str_ReadFileUntilBoundaryStr (Gbl.F.XML,StrlLevel,"\"",1,
(unsigned long long) (11 + 1)) != 1) (unsigned long long) (11 + 1)) != 1)
Lay_WrongSyllabusFormatExit (); Err_WrongSyllabusFormatExit ();
if (sscanf (StrlLevel,"%d",&Level) != 1) if (sscanf (StrlLevel,"%d",&Level) != 1)
Lay_WrongSyllabusFormatExit (); Err_WrongSyllabusFormatExit ();
Str_FindStrInFile (Gbl.F.XML,">",Str_NO_SKIP_HTML_COMMENTS); Str_FindStrInFile (Gbl.F.XML,">",Str_NO_SKIP_HTML_COMMENTS);
if (Level < 1) if (Level < 1)
Level = 1; Level = 1;
@ -1400,18 +1401,18 @@ static void Syl_OpenSyllabusFile (const struct Syl_Syllabus *Syllabus,
{ {
/* Can't open the file */ /* Can't open the file */
if (!Fil_CheckIfPathExists (Syllabus->PathDir)) // Strange error, since it is just created if (!Fil_CheckIfPathExists (Syllabus->PathDir)) // Strange error, since it is just created
Lay_ShowErrorAndExit ("Can not open syllabus file."); Err_ShowErrorAndExit ("Can not open syllabus file.");
else else
{ {
/* Create a new empty syllabus */ /* Create a new empty syllabus */
if ((Gbl.F.XML = fopen (PathFile,"wb")) == NULL) if ((Gbl.F.XML = fopen (PathFile,"wb")) == NULL)
Lay_ShowErrorAndExit ("Can not create syllabus file."); Err_ShowErrorAndExit ("Can not create syllabus file.");
Syl_WriteStartFileSyllabus (Gbl.F.XML); Syl_WriteStartFileSyllabus (Gbl.F.XML);
Syl_WriteEndFileSyllabus (Gbl.F.XML); Syl_WriteEndFileSyllabus (Gbl.F.XML);
Fil_CloseXMLFile (); Fil_CloseXMLFile ();
/* Open of new the file for reading */ /* Open of new the file for reading */
if ((Gbl.F.XML = fopen (PathFile,"rb")) == NULL) if ((Gbl.F.XML = fopen (PathFile,"rb")) == NULL)
Lay_ShowErrorAndExit ("Can not open syllabus file."); Err_ShowErrorAndExit ("Can not open syllabus file.");
} }
} }
} }

View File

@ -36,6 +36,7 @@
#include "swad_config.h" #include "swad_config.h"
#include "swad_course.h" #include "swad_course.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_figure_cache.h" #include "swad_figure_cache.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_help.h" #include "swad_help.h"
@ -210,7 +211,7 @@ static void SysCfg_GetCoordAndZoom (struct Coordinates *Coord,unsigned *Zoom)
" FROM ctr_centers" " FROM ctr_centers"
" WHERE Latitude<>0" " WHERE Latitude<>0"
" AND Longitude<>0") < 0) " AND Longitude<>0") < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Map_GetCoordAndZoom (Coord,Zoom,Query); Map_GetCoordAndZoom (Coord,Zoom,Query);
free (Query); free (Query);
} }

View File

@ -32,6 +32,7 @@
#include "swad_action.h" #include "swad_action.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_tag.h" #include "swad_tag.h"
@ -230,7 +231,7 @@ static long Tag_GetParamTagCode (void)
/***** Get tag code *****/ /***** Get tag code *****/
if ((TagCod = Par_GetParToLong ("TagCod")) <= 0) if ((TagCod = Par_GetParToLong ("TagCod")) <= 0)
Lay_WrongTagExit (); Err_WrongTagExit ();
return TagCod; return TagCod;
} }
@ -286,7 +287,7 @@ void Tag_RenameTag (void)
change old tag to new tag in tst_question_tags *****/ change old tag to new tag in tst_question_tags *****/
/* Get tag code of the old tag */ /* Get tag code of the old tag */
if ((OldTagCod = Tag_GetTagCodFromTagTxt (OldTagTxt)) <= 0) if ((OldTagCod = Tag_GetTagCodFromTagTxt (OldTagTxt)) <= 0)
Lay_WrongTagExit (); Err_WrongTagExit ();
/* Create a temporary table with all the question codes /* Create a temporary table with all the question codes
that had the new tag as one of their tags */ that had the new tag as one of their tags */
@ -578,7 +579,7 @@ void Tag_ShowFormEditTags (void)
row[2] TagHidden row[2] TagHidden
*/ */
if ((TagCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((TagCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongTagExit (); Err_WrongTagExit ();
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);

View File

@ -40,6 +40,7 @@
#include "swad_action.h" #include "swad_action.h"
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_exam_set.h" #include "swad_exam_set.h"
#include "swad_figure.h" #include "swad_figure.h"
#include "swad_form.h" #include "swad_form.h"
@ -435,7 +436,7 @@ void Tst_ReceiveTestDraft (void)
/* Get test exam code from form */ /* Get test exam code from form */
TstPrn_ResetPrint (&Print); TstPrn_ResetPrint (&Print);
if ((Print.PrnCod = TstPrn_GetParamPrnCod ()) <= 0) if ((Print.PrnCod = TstPrn_GetParamPrnCod ()) <= 0)
Lay_WrongTestExit (); Err_WrongTestExit ();
/* Get number of this test from form */ /* Get number of this test from form */
NumTst = Tst_GetParamNumTst (); NumTst = Tst_GetParamNumTst ();
@ -491,7 +492,7 @@ void Tst_AssessTest (void)
/* Get test exam code from form */ /* Get test exam code from form */
TstPrn_ResetPrint (&Print); TstPrn_ResetPrint (&Print);
if ((Print.PrnCod = TstPrn_GetParamPrnCod ()) <= 0) if ((Print.PrnCod = TstPrn_GetParamPrnCod ()) <= 0)
Lay_WrongTestExit (); Err_WrongTestExit ();
/* Get number of this test from form */ /* Get number of this test from form */
NumTst = Tst_GetParamNumTst (); NumTst = Tst_GetParamNumTst ();
@ -619,7 +620,7 @@ static bool Tst_CheckIfNextTstAllowed (void)
TimeNextTestUTC = Dat_GetUNIXTimeFromStr (row[1]); TimeNextTestUTC = Dat_GetUNIXTimeFromStr (row[1]);
} }
else else
Lay_ShowErrorAndExit ("Error when reading date of next allowed access to test."); Err_ShowErrorAndExit ("Error when reading date of next allowed access to test.");
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -677,7 +678,7 @@ static unsigned Tst_GetNumExamsGeneratedByMe (void)
NumExamsGeneratedByMe = 0; NumExamsGeneratedByMe = 0;
} }
else else
Lay_ShowErrorAndExit ("Error when getting number of hits to test."); Err_ShowErrorAndExit ("Error when getting number of hits to test.");
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -818,7 +819,7 @@ void Tst_WriteQstStem (const char *Stem,const char *ClassStem,bool Visible)
/* Convert the stem, that is in HTML, to rigorous HTML */ /* Convert the stem, that is in HTML, to rigorous HTML */
StemLength = strlen (Stem) * Str_MAX_BYTES_PER_CHAR; StemLength = strlen (Stem) * Str_MAX_BYTES_PER_CHAR;
if ((StemRigorousHTML = malloc (StemLength + 1)) == NULL) if ((StemRigorousHTML = malloc (StemLength + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (StemRigorousHTML,Stem,StemLength); Str_Copy (StemRigorousHTML,Stem,StemLength);
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML, Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
@ -917,7 +918,7 @@ void Tst_WriteQstFeedback (const char *Feedback,const char *ClassFeedback)
/***** Convert the feedback, that is in HTML, to rigorous HTML *****/ /***** Convert the feedback, that is in HTML, to rigorous HTML *****/
FeedbackLength = strlen (Feedback) * Str_MAX_BYTES_PER_CHAR; FeedbackLength = strlen (Feedback) * Str_MAX_BYTES_PER_CHAR;
if ((FeedbackRigorousHTML = malloc (FeedbackLength + 1)) == NULL) if ((FeedbackRigorousHTML = malloc (FeedbackLength + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (FeedbackRigorousHTML,Feedback,FeedbackLength); Str_Copy (FeedbackRigorousHTML,Feedback,FeedbackLength);
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML, Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
FeedbackRigorousHTML,FeedbackLength,false); FeedbackRigorousHTML,FeedbackLength,false);
@ -1753,7 +1754,7 @@ static void Tst_GetQuestions (struct Tst_Test *Test,MYSQL_RES **mysql_res)
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = malloc (Tst_MAX_BYTES_QUERY_TEST + 1)) == NULL) if ((Query = malloc (Tst_MAX_BYTES_QUERY_TEST + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Select questions *****/ /***** Select questions *****/
/* Start query */ /* Start query */
@ -1794,7 +1795,7 @@ static void Tst_GetQuestions (struct Tst_Test *Test,MYSQL_RES **mysql_res)
Par_GetNextStrUntilSeparParamMult (&Ptr,TagText,Tag_MAX_BYTES_TAG); Par_GetNextStrUntilSeparParamMult (&Ptr,TagText,Tag_MAX_BYTES_TAG);
LengthQuery = LengthQuery + 35 + strlen (TagText) + 1; LengthQuery = LengthQuery + 35 + strlen (TagText) + 1;
if (LengthQuery > Tst_MAX_BYTES_QUERY_TEST - 256) if (LengthQuery > Tst_MAX_BYTES_QUERY_TEST - 256)
Lay_ShowErrorAndExit ("Query size exceed."); Err_ShowErrorAndExit ("Query size exceed.");
Str_Concat (Query, Str_Concat (Query,
NumItemInList ? " OR tst_tags.TagTxt='" : NumItemInList ? " OR tst_tags.TagTxt='" :
" AND (tst_tags.TagTxt='", " AND (tst_tags.TagTxt='",
@ -1818,7 +1819,7 @@ static void Tst_GetQuestions (struct Tst_Test *Test,MYSQL_RES **mysql_res)
AnsType = Tst_ConvertFromUnsignedStrToAnsTyp (UnsignedStr); AnsType = Tst_ConvertFromUnsignedStrToAnsTyp (UnsignedStr);
LengthQuery = LengthQuery + 35 + strlen (Tst_StrAnswerTypesDB[AnsType]) + 1; LengthQuery = LengthQuery + 35 + strlen (Tst_StrAnswerTypesDB[AnsType]) + 1;
if (LengthQuery > Tst_MAX_BYTES_QUERY_TEST - 256) if (LengthQuery > Tst_MAX_BYTES_QUERY_TEST - 256)
Lay_ShowErrorAndExit ("Query size exceed."); Err_ShowErrorAndExit ("Query size exceed.");
Str_Concat (Query, Str_Concat (Query,
NumItemInList ? " OR tst_questions.AnsType='" : NumItemInList ? " OR tst_questions.AnsType='" :
" AND (tst_questions.AnsType='", " AND (tst_questions.AnsType='",
@ -1894,11 +1895,11 @@ static void Tst_GetQuestionsForNewTestFromDB (struct Tst_Test *Test,
/***** Trivial check: number of questions *****/ /***** Trivial check: number of questions *****/
if (Test->NumQsts == 0 || if (Test->NumQsts == 0 ||
Test->NumQsts > TstCfg_MAX_QUESTIONS_PER_TEST) Test->NumQsts > TstCfg_MAX_QUESTIONS_PER_TEST)
Lay_ShowErrorAndExit ("Wrong number of questions."); Err_ShowErrorAndExit ("Wrong number of questions.");
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = malloc (Tst_MAX_BYTES_QUERY_TEST + 1)) == NULL) if ((Query = malloc (Tst_MAX_BYTES_QUERY_TEST + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Select questions without hidden tags *****/ /***** Select questions without hidden tags *****/
/* Start query */ /* Start query */
@ -1935,7 +1936,7 @@ static void Tst_GetQuestionsForNewTestFromDB (struct Tst_Test *Test,
Par_GetNextStrUntilSeparParamMult (&Ptr,TagText,Tag_MAX_BYTES_TAG); Par_GetNextStrUntilSeparParamMult (&Ptr,TagText,Tag_MAX_BYTES_TAG);
LengthQuery = LengthQuery + 35 + strlen (TagText) + 1; LengthQuery = LengthQuery + 35 + strlen (TagText) + 1;
if (LengthQuery > Tst_MAX_BYTES_QUERY_TEST - 128) if (LengthQuery > Tst_MAX_BYTES_QUERY_TEST - 128)
Lay_ShowErrorAndExit ("Query size exceed."); Err_ShowErrorAndExit ("Query size exceed.");
Str_Concat (Query, Str_Concat (Query,
NumItemInList ? " OR tst_tags.TagTxt='" : NumItemInList ? " OR tst_tags.TagTxt='" :
" AND (tst_tags.TagTxt='", " AND (tst_tags.TagTxt='",
@ -1959,7 +1960,7 @@ static void Tst_GetQuestionsForNewTestFromDB (struct Tst_Test *Test,
AnswerType = Tst_ConvertFromUnsignedStrToAnsTyp (UnsignedStr); AnswerType = Tst_ConvertFromUnsignedStrToAnsTyp (UnsignedStr);
LengthQuery = LengthQuery + 35 + strlen (Tst_StrAnswerTypesDB[AnswerType]) + 1; LengthQuery = LengthQuery + 35 + strlen (Tst_StrAnswerTypesDB[AnswerType]) + 1;
if (LengthQuery > Tst_MAX_BYTES_QUERY_TEST - 128) if (LengthQuery > Tst_MAX_BYTES_QUERY_TEST - 128)
Lay_ShowErrorAndExit ("Query size exceed."); Err_ShowErrorAndExit ("Query size exceed.");
Str_Concat (Query, Str_Concat (Query,
NumItemInList ? " OR tst_questions.AnsType='" : NumItemInList ? " OR tst_questions.AnsType='" :
" AND (tst_questions.AnsType='", " AND (tst_questions.AnsType='",
@ -2000,7 +2001,7 @@ static void Tst_GetQuestionsForNewTestFromDB (struct Tst_Test *Test,
/* Get question code (row[0]) */ /* Get question code (row[0]) */
if ((Print->PrintedQuestions[NumQst].QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Print->PrintedQuestions[NumQst].QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_ShowErrorAndExit ("Wrong code of question."); Err_ShowErrorAndExit ("Wrong code of question.");
/* Get answer type (row[1]) */ /* Get answer type (row[1]) */
AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[1]); AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[1]);
@ -2086,7 +2087,7 @@ void Tst_GenerateChoiceIndexes (struct TstPrn_PrintedQuestion *PrintedQuestion,
else else
ErrorInIndex = true; ErrorInIndex = true;
if (ErrorInIndex) if (ErrorInIndex)
Lay_ShowErrorAndExit ("Wrong index of answer."); Err_ShowErrorAndExit ("Wrong index of answer.");
snprintf (StrInd,sizeof (StrInd),NumOpt ? ",%u" : snprintf (StrInd,sizeof (StrInd),NumOpt ? ",%u" :
"%u",Index); "%u",Index);
@ -2169,7 +2170,7 @@ static void Tst_ListOneOrMoreQuestionsForEdition (struct Tst_Test *Test,
/***** Get question code (row[0]) *****/ /***** Get question code (row[0]) *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if ((Test->Question.QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Test->Question.QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/***** Write question row *****/ /***** Write question row *****/
Tst_WriteQuestionListing (Test,NumQst); Tst_WriteQuestionListing (Test,NumQst);
@ -2290,7 +2291,7 @@ static void Tst_WriteQuestionListing (struct Tst_Test *Test,unsigned NumQst)
/* Date (row[0] has the UTC date-time) */ /* Date (row[0] has the UTC date-time) */
if (asprintf (&Id,"tst_date_%u",++UniqueId) < 0) if (asprintf (&Id,"tst_date_%u",++UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT COLOR%u\"", HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT COLOR%u\"",
Id,Gbl.RowEvenOdd); Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Test->Question.EditTime, Dat_WriteLocalDateHMSFromUTC (Id,Test->Question.EditTime,
@ -2432,7 +2433,7 @@ static void Tst_ListOneOrMoreQuestionsForSelectionForSet (struct Exa_Exams *Exam
/* Get question code (row[0]) */ /* Get question code (row[0]) */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if ((Question.QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Question.QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Write question row */ /* Write question row */
Tst_WriteQuestionRowForSelection (NumQst,&Question); Tst_WriteQuestionRowForSelection (NumQst,&Question);
@ -2517,7 +2518,7 @@ static void Tst_ListOneOrMoreQuestionsForSelectionForGame (struct Gam_Games *Gam
/* Get question code (row[0]) */ /* Get question code (row[0]) */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if ((Question.QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Question.QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Write question row */ /* Write question row */
Tst_WriteQuestionRowForSelection (NumQst,&Question); Tst_WriteQuestionRowForSelection (NumQst,&Question);
@ -2593,7 +2594,7 @@ static void Tst_WriteQuestionRowForSelection (unsigned NumQst,
/* Write the date (row[0] has the UTC date-time) */ /* Write the date (row[0] has the UTC date-time) */
if (asprintf (&Id,"tst_date_%u",++UniqueId) < 0) if (asprintf (&Id,"tst_date_%u",++UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT COLOR%u\">", HTM_TD_Begin ("id=\"%s\" class=\"DAT_SMALL CT COLOR%u\">",
Id,Gbl.RowEvenOdd); Id,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Question->EditTime, Dat_WriteLocalDateHMSFromUTC (Id,Question->EditTime,
@ -2903,7 +2904,7 @@ void Tst_WriteParamQstCod (unsigned NumQst,long QstCod)
void Tst_CheckIfNumberOfAnswersIsOne (const struct Tst_Question *Question) void Tst_CheckIfNumberOfAnswersIsOne (const struct Tst_Question *Question)
{ {
if (Question->Answer.NumOptions != 1) if (Question->Answer.NumOptions != 1)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2985,7 +2986,7 @@ static bool Tst_GetParamsTst (struct Tst_Test *Test,
/* Get the tags */ /* Get the tags */
if ((Test->Tags.List = malloc (Tag_MAX_BYTES_TAGS_LIST + 1)) == NULL) if ((Test->Tags.List = malloc (Tag_MAX_BYTES_TAGS_LIST + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Par_GetParMultiToText ("ChkTag",Test->Tags.List,Tag_MAX_BYTES_TAGS_LIST); Par_GetParMultiToText ("ChkTag",Test->Tags.List,Tag_MAX_BYTES_TAGS_LIST);
/* Check number of tags selected */ /* Check number of tags selected */
@ -3148,7 +3149,7 @@ unsigned Tst_CountNumQuestionsInList (const char *ListQuestions)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (sscanf (LongStr,"%ld",&QstCod) != 1) if (sscanf (LongStr,"%ld",&QstCod) != 1)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
NumQuestions++; NumQuestions++;
} }
return NumQuestions; return NumQuestions;
@ -3519,7 +3520,7 @@ static void Tst_PutFormEditOneQst (struct Tst_Question *Question)
"", "",
NumOpt); NumOpt);
if (asprintf (&Title,"%s %c)",Txt_Expand,'a' + (char) NumOpt) < 0) if (asprintf (&Title,"%s %c)",Txt_Expand,'a' + (char) NumOpt) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Ico_PutIcon ("caret-right.svg",Title,"ICO16x16"); Ico_PutIcon ("caret-right.svg",Title,"ICO16x16");
free (Title); free (Title);
HTM_A_End (); HTM_A_End ();
@ -3532,7 +3533,7 @@ static void Tst_PutFormEditOneQst (struct Tst_Question *Question)
" style=\"display:none;\"", // Answer does not have content ==> Hide icon " style=\"display:none;\"", // Answer does not have content ==> Hide icon
NumOpt); NumOpt);
if (asprintf (&Title,"%s %c)",Txt_Contract,'a' + (char) NumOpt) < 0) if (asprintf (&Title,"%s %c)",Txt_Contract,'a' + (char) NumOpt) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Ico_PutIcon ("caret-down.svg",Title,"ICO16x16"); Ico_PutIcon ("caret-down.svg",Title,"ICO16x16");
free (Title); free (Title);
HTM_A_End (); HTM_A_End ();
@ -3658,11 +3659,11 @@ void Tst_QstConstructor (struct Tst_Question *Question)
/***** Allocate memory for stem and feedback *****/ /***** Allocate memory for stem and feedback *****/
if ((Question->Stem = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Question->Stem = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Question->Stem[0] = '\0'; Question->Stem[0] = '\0';
if ((Question->Feedback = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL) if ((Question->Feedback = malloc (Cns_MAX_BYTES_TEXT + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Question->Feedback[0] = '\0'; Question->Feedback[0] = '\0';
/***** Initialize answers *****/ /***** Initialize answers *****/
@ -3944,7 +3945,7 @@ bool Tst_GetQstDataFromDB (struct Tst_Question *Question)
break; break;
case Tst_ANS_FLOAT: case Tst_ANS_FLOAT:
if (Question->Answer.NumOptions != 2) if (Question->Answer.NumOptions != 2)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
Question->Answer.FloatingPoint[NumOpt] = Str_GetDoubleFromStr (row[1]); Question->Answer.FloatingPoint[NumOpt] = Str_GetDoubleFromStr (row[1]);
break; break;
case Tst_ANS_TRUE_FALSE: case Tst_ANS_TRUE_FALSE:
@ -3956,7 +3957,7 @@ bool Tst_GetQstDataFromDB (struct Tst_Question *Question)
case Tst_ANS_TEXT: case Tst_ANS_TEXT:
/* Check number of options */ /* Check number of options */
if (Question->Answer.NumOptions > Tst_MAX_OPTIONS_PER_QUESTION) if (Question->Answer.NumOptions > Tst_MAX_OPTIONS_PER_QUESTION)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/* Allocate space for text and feedback */ /* Allocate space for text and feedback */
if (!Tst_AllocateTextChoiceAnswer (Question,NumOpt)) if (!Tst_AllocateTextChoiceAnswer (Question,NumOpt))
@ -4067,9 +4068,9 @@ static Tst_AnswerType_t Tst_ConvertFromUnsignedStrToAnsTyp (const char *Unsigned
unsigned AnsType; unsigned AnsType;
if (sscanf (UnsignedStr,"%u",&AnsType) != 1) if (sscanf (UnsignedStr,"%u",&AnsType) != 1)
Lay_ShowErrorAndExit ("Wrong type of answer. 2"); Err_ShowErrorAndExit ("Wrong type of answer. 2");
if (AnsType >= Tst_NUM_ANS_TYPES) if (AnsType >= Tst_NUM_ANS_TYPES)
Lay_ShowErrorAndExit ("Wrong type of answer. 3"); Err_ShowErrorAndExit ("Wrong type of answer. 3");
return (Tst_AnswerType_t) AnsType; return (Tst_AnswerType_t) AnsType;
} }
@ -4142,7 +4143,7 @@ static void Tst_GetQstFromForm (struct Tst_Question *Question)
Tst_NUM_ANS_TYPES - 1, Tst_NUM_ANS_TYPES - 1,
(unsigned long) Tst_ANS_UNKNOWN); (unsigned long) Tst_ANS_UNKNOWN);
if (Question->Answer.Type == Tst_ANS_UNKNOWN) if (Question->Answer.Type == Tst_ANS_UNKNOWN)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/***** Get question tags *****/ /***** Get question tags *****/
for (NumTag = 0; for (NumTag = 0;
@ -4279,9 +4280,9 @@ static void Tst_GetQstFromForm (struct Tst_Question *Question)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT); Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT);
if (sscanf (UnsignedStr,"%u",&NumCorrectAns) != 1) if (sscanf (UnsignedStr,"%u",&NumCorrectAns) != 1)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
if (NumCorrectAns >= Tst_MAX_OPTIONS_PER_QUESTION) if (NumCorrectAns >= Tst_MAX_OPTIONS_PER_QUESTION)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
Question->Answer.Options[NumCorrectAns].Correct = true; Question->Answer.Options[NumCorrectAns].Correct = true;
} }
} }
@ -4530,7 +4531,7 @@ bool Tst_CheckIfQuestionExistsInDB (struct Tst_Question *Question)
{ {
/* Get question code */ /* Get question code */
if ((Question->QstCod = DB_GetNextCode (mysql_res_qst)) < 0) if ((Question->QstCod = DB_GetNextCode (mysql_res_qst)) < 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Get answers from this question */ /* Get answers from this question */
NumOptsExistingQstInDB = NumOptsExistingQstInDB =
@ -4714,7 +4715,7 @@ void Tst_RemoveSelectedQsts (void)
/* Get question code (row[0]) */ /* Get question code (row[0]) */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if ((QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Remove test question from database */ /* Remove test question from database */
Tst_RemoveOneQstFromDB (Gbl.Hierarchy.Crs.CrsCod,QstCod); Tst_RemoveOneQstFromDB (Gbl.Hierarchy.Crs.CrsCod,QstCod);
@ -4759,7 +4760,7 @@ void Tst_RequestRemoveOneQst (void)
/* Get the question code */ /* Get the question code */
Test.Question.QstCod = Tst_GetParamQstCod (); Test.Question.QstCod = Tst_GetParamQstCod ();
if (Test.Question.QstCod <= 0) if (Test.Question.QstCod <= 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Get a parameter that indicates whether it's necessary /* Get a parameter that indicates whether it's necessary
to continue listing the rest of questions */ to continue listing the rest of questions */
@ -4768,7 +4769,7 @@ void Tst_RequestRemoveOneQst (void)
/* Get other parameters */ /* Get other parameters */
if (!EditingOnlyThisQst) if (!EditingOnlyThisQst)
if (!Tst_GetParamsTst (&Test,Tst_EDIT_TEST)) if (!Tst_GetParamsTst (&Test,Tst_EDIT_TEST))
Lay_ShowErrorAndExit ("Wrong test parameters."); Err_ShowErrorAndExit ("Wrong test parameters.");
/***** Show question and button to remove question *****/ /***** Show question and button to remove question *****/
if (EditingOnlyThisQst) if (EditingOnlyThisQst)
@ -4820,7 +4821,7 @@ void Tst_RemoveOneQst (void)
/***** Get the question code *****/ /***** Get the question code *****/
QstCod = Tst_GetParamQstCod (); QstCod = Tst_GetParamQstCod ();
if (QstCod <= 0) if (QstCod <= 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/***** Get a parameter that indicates whether it's necessary /***** Get a parameter that indicates whether it's necessary
to continue listing the rest of questions ******/ to continue listing the rest of questions ******/
@ -4862,7 +4863,7 @@ static void Tst_RemoveOneQstFromDB (long CrsCod,long QstCod)
CrsCod); CrsCod);
if (!mysql_affected_rows (&Gbl.mysql)) if (!mysql_affected_rows (&Gbl.mysql))
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -4883,7 +4884,7 @@ void Tst_ChangeShuffleQst (void)
/***** Get the question code *****/ /***** Get the question code *****/
Test.Question.QstCod = Tst_GetParamQstCod (); Test.Question.QstCod = Tst_GetParamQstCod ();
if (Test.Question.QstCod <= 0) if (Test.Question.QstCod <= 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/***** Get a parameter that indicates whether it's necessary to continue listing the rest of questions ******/ /***** Get a parameter that indicates whether it's necessary to continue listing the rest of questions ******/
EditingOnlyThisQst = Par_GetParToBool ("OnlyThisQst"); EditingOnlyThisQst = Par_GetParToBool ("OnlyThisQst");
@ -5503,23 +5504,23 @@ static unsigned Tst_GetNumTstQuestions (Hie_Lvl_Level_t Scope,Tst_AnswerType_t A
Tst_StrAnswerTypesDB[AnsType]); Tst_StrAnswerTypesDB[AnsType]);
break; break;
default: default:
Lay_WrongScopeExit (); Err_WrongScopeExit ();
break; break;
} }
/***** Get number of questions *****/ /***** Get number of questions *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%u",&(Stats->NumQsts)) != 1) if (sscanf (row[0],"%u",&(Stats->NumQsts)) != 1)
Lay_ShowErrorAndExit ("Error when getting number of test questions."); Err_ShowErrorAndExit ("Error when getting number of test questions.");
if (Stats->NumQsts) if (Stats->NumQsts)
{ {
if (sscanf (row[1],"%lu",&(Stats->NumHits)) != 1) if (sscanf (row[1],"%lu",&(Stats->NumHits)) != 1)
Lay_ShowErrorAndExit ("Error when getting total number of hits in test questions."); Err_ShowErrorAndExit ("Error when getting total number of hits in test questions.");
Str_SetDecimalPointToUS (); // To get the decimal point as a dot Str_SetDecimalPointToUS (); // To get the decimal point as a dot
if (sscanf (row[2],"%lf",&(Stats->TotalScore)) != 1) if (sscanf (row[2],"%lf",&(Stats->TotalScore)) != 1)
Lay_ShowErrorAndExit ("Error when getting total score in test questions."); Err_ShowErrorAndExit ("Error when getting total score in test questions.");
Str_SetDecimalPointToLocal (); // Return to local system Str_SetDecimalPointToLocal (); // Return to local system
} }
else else

View File

@ -32,6 +32,7 @@
#include "swad_box.h" #include "swad_box.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -202,7 +203,7 @@ void TsI_CreateXML (unsigned NumQsts,MYSQL_RES *mysql_res)
Gbl.FileBrowser.TmpPubDir.L, Gbl.FileBrowser.TmpPubDir.L,
Gbl.FileBrowser.TmpPubDir.R); Gbl.FileBrowser.TmpPubDir.R);
if ((FileXML = fopen (PathPubFile,"wb")) == NULL) if ((FileXML = fopen (PathPubFile,"wb")) == NULL)
Lay_ShowErrorAndExit ("Can not open target file."); Err_ShowErrorAndExit ("Can not open target file.");
/***** Start XML file *****/ /***** Start XML file *****/
XML_WriteStartFile (FileXML,"test",false); XML_WriteStartFile (FileXML,"test",false);
@ -219,7 +220,7 @@ void TsI_CreateXML (unsigned NumQsts,MYSQL_RES *mysql_res)
/* Get question code (row[0]) */ /* Get question code (row[0]) */
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if ((Question.QstCod = Str_ConvertStrCodToLongCod (row[0])) <= 0) if ((Question.QstCod = Str_ConvertStrCodToLongCod (row[0])) <= 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
TsI_ExportQuestion (&Question,FileXML); TsI_ExportQuestion (&Question,FileXML);
@ -445,7 +446,7 @@ static void TsI_ReadQuestionsFromXMLFileAndStoreInDB (const char *FileNameXML)
/***** Open file *****/ /***** Open file *****/
if ((FileXML = fopen (FileNameXML,"rb")) == NULL) if ((FileXML = fopen (FileNameXML,"rb")) == NULL)
Lay_ShowErrorAndExit ("Can not open XML file."); Err_ShowErrorAndExit ("Can not open XML file.");
/***** Compute file size *****/ /***** Compute file size *****/
fseek (FileXML,0L,SEEK_END); fseek (FileXML,0L,SEEK_END);
@ -454,7 +455,7 @@ static void TsI_ReadQuestionsFromXMLFileAndStoreInDB (const char *FileNameXML)
/***** Allocate memory for XML buffer *****/ /***** Allocate memory for XML buffer *****/
if ((XMLBuffer = malloc (FileSize + 1)) == NULL) if ((XMLBuffer = malloc (FileSize + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
else else
{ {
/***** Read file contents into XML buffer *****/ /***** Read file contents into XML buffer *****/
@ -646,12 +647,12 @@ static void TsI_ImportQuestionsFromXMLBuffer (const char *XMLBuffer)
Question.QstCod = -1L; Question.QstCod = -1L;
Tst_InsertOrUpdateQstTagsAnsIntoDB (&Question); Tst_InsertOrUpdateQstTagsAnsIntoDB (&Question);
if (Question.QstCod <= 0) if (Question.QstCod <= 0)
Lay_ShowErrorAndExit ("Can not create question."); Err_ShowErrorAndExit ("Can not create question.");
} }
} }
} }
else // Answer type not found else // Answer type not found
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/***** Destroy test question *****/ /***** Destroy test question *****/
Tst_QstDestructor (&Question); Tst_QstDestructor (&Question);
@ -687,7 +688,7 @@ static Tst_AnswerType_t TsI_ConvertFromStrAnsTypXMLToAnsTyp (const char *StrAnsT
if (!strcasecmp (StrAnsTypeXML,Tst_StrAnswerTypesXML[AnsType])) if (!strcasecmp (StrAnsTypeXML,Tst_StrAnswerTypesXML[AnsType]))
return AnsType; return AnsType;
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
return (Tst_AnswerType_t) 0; // Not reached return (Tst_AnswerType_t) 0; // Not reached
} }
@ -1001,7 +1002,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
AnswerTextLength = strlen (Question->Answer.Options[NumOpt].Text) * AnswerTextLength = strlen (Question->Answer.Options[NumOpt].Text) *
Str_MAX_BYTES_PER_CHAR; Str_MAX_BYTES_PER_CHAR;
if ((AnswerText = malloc (AnswerTextLength + 1)) == NULL) if ((AnswerText = malloc (AnswerTextLength + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (AnswerText,Question->Answer.Options[NumOpt].Text, Str_Copy (AnswerText,Question->Answer.Options[NumOpt].Text,
AnswerTextLength); AnswerTextLength);
Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML, Str_ChangeFormat (Str_FROM_HTML,Str_TO_RIGOROUS_HTML,
@ -1016,7 +1017,7 @@ static void TsI_WriteRowImportedQst (struct XMLElement *StemElem,
AnswerFeedbackLength = strlen (Question->Answer.Options[NumOpt].Feedback) * AnswerFeedbackLength = strlen (Question->Answer.Options[NumOpt].Feedback) *
Str_MAX_BYTES_PER_CHAR; Str_MAX_BYTES_PER_CHAR;
if ((AnswerFeedback = malloc (AnswerFeedbackLength + 1)) == NULL) if ((AnswerFeedback = malloc (AnswerFeedbackLength + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
Str_Copy (AnswerFeedback, Str_Copy (AnswerFeedback,
Question->Answer.Options[NumOpt].Feedback, Question->Answer.Options[NumOpt].Feedback,
AnswerFeedbackLength); AnswerFeedbackLength);

View File

@ -34,6 +34,7 @@
#include "swad_action.h" #include "swad_action.h"
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_form.h" #include "swad_form.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_HTML.h" #include "swad_HTML.h"
@ -309,7 +310,7 @@ void TstPrn_ShowTestPrintToFillIt (struct TstPrn_Print *Print,
/* Show question */ /* Show question */
if (!Tst_GetQstDataFromDB (&Question)) // Question exists if (!Tst_GetQstDataFromDB (&Question)) // Question exists
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Write question and answers */ /* Write question and answers */
TstPrn_WriteQstAndAnsToFill (&Print->PrintedQuestions[NumQst],NumQst,&Question); TstPrn_WriteQstAndAnsToFill (&Print->PrintedQuestions[NumQst],NumQst,&Question);
@ -890,7 +891,7 @@ static void TstPrn_GetCorrectIntAnswerFromDB (struct Tst_Question *Question)
/***** Get correct answer *****/ /***** Get correct answer *****/
row = mysql_fetch_row (mysql_res); row = mysql_fetch_row (mysql_res);
if (sscanf (row[0],"%ld",&Question->Answer.Integer) != 1) if (sscanf (row[0],"%ld",&Question->Answer.Integer) != 1)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/***** Free structure that stores the query result *****/ /***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
@ -913,7 +914,7 @@ static void TstPrn_GetCorrectFltAnswerFromDB (struct Tst_Question *Question)
/***** Check if number of rows is correct *****/ /***** Check if number of rows is correct *****/
if (Question->Answer.NumOptions != 2) if (Question->Answer.NumOptions != 2)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/***** Get float range *****/ /***** Get float range *****/
for (NumOpt = 0; for (NumOpt = 0;
@ -1257,10 +1258,10 @@ void TstPrn_GetIndexesFromStr (const char StrIndexesOneQst[Tst_MAX_BYTES_INDEXES
Par_GetNextStrUntilComma (&Ptr,StrOneIndex,Cns_MAX_DECIMAL_DIGITS_UINT); Par_GetNextStrUntilComma (&Ptr,StrOneIndex,Cns_MAX_DECIMAL_DIGITS_UINT);
if (sscanf (StrOneIndex,"%u",&(Indexes[NumOpt])) != 1) if (sscanf (StrOneIndex,"%u",&(Indexes[NumOpt])) != 1)
Lay_WrongAnswerIndexExit (); Err_WrongAnswerIndexExit ();
if (Indexes[NumOpt] >= Tst_MAX_OPTIONS_PER_QUESTION) if (Indexes[NumOpt] >= Tst_MAX_OPTIONS_PER_QUESTION)
Lay_WrongAnswerIndexExit (); Err_WrongAnswerIndexExit ();
} }
/***** Initialize remaining to 0 *****/ /***** Initialize remaining to 0 *****/
@ -1296,10 +1297,10 @@ void TstPrn_GetAnswersFromStr (const char StrAnswersOneQst[Tst_MAX_BYTES_ANSWERS
Par_GetNextStrUntilComma (&Ptr,StrOneAnswer,Cns_MAX_DECIMAL_DIGITS_UINT); Par_GetNextStrUntilComma (&Ptr,StrOneAnswer,Cns_MAX_DECIMAL_DIGITS_UINT);
if (sscanf (StrOneAnswer,"%u",&AnsUsr) != 1) if (sscanf (StrOneAnswer,"%u",&AnsUsr) != 1)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
if (AnsUsr >= Tst_MAX_OPTIONS_PER_QUESTION) if (AnsUsr >= Tst_MAX_OPTIONS_PER_QUESTION)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
UsrAnswers[AnsUsr] = true; UsrAnswers[AnsUsr] = true;
} }
@ -1454,7 +1455,7 @@ static void TstPrn_WriteFltAnsPrint (struct UsrData *UsrDat,
/***** Check if number of rows is correct *****/ /***** Check if number of rows is correct *****/
if (Question->Answer.NumOptions != 2) if (Question->Answer.NumOptions != 2)
Lay_WrongAnswerExit (); Err_WrongAnswerExit ();
/***** Header with the title of each column *****/ /***** Header with the title of each column *****/
HTM_TABLE_BeginPadding (2); HTM_TABLE_BeginPadding (2);
@ -2104,7 +2105,7 @@ static void TstPrn_ShowUsrPrints (struct UsrData *UsrDat)
/* Get print code (row[0]) */ /* Get print code (row[0]) */
if ((Print.PrnCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Print.PrnCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongTestExit (); Err_WrongTestExit ();
/* Get print data */ /* Get print data */
TstPrn_GetPrintDataByPrnCod (&Print); TstPrn_GetPrintDataByPrnCod (&Print);
@ -2124,7 +2125,7 @@ static void TstPrn_ShowUsrPrints (struct UsrData *UsrDat)
StartEndTime++) StartEndTime++)
{ {
if (asprintf (&Id,"tst_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0) if (asprintf (&Id,"tst_date_%u_%u",(unsigned) StartEndTime,UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"", HTM_TD_Begin ("id=\"%s\" class=\"%s LT COLOR%u\"",
Id,ClassDat,Gbl.RowEvenOdd); Id,ClassDat,Gbl.RowEvenOdd);
Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime], Dat_WriteLocalDateHMSFromUTC (Id,Print.TimeUTC[StartEndTime],
@ -2399,7 +2400,7 @@ void TstPrn_ShowOnePrint (void)
/***** Get the code of the test *****/ /***** Get the code of the test *****/
TstPrn_ResetPrint (&Print); TstPrn_ResetPrint (&Print);
if ((Print.PrnCod = TstPrn_GetParamPrnCod ()) <= 0) if ((Print.PrnCod = TstPrn_GetParamPrnCod ()) <= 0)
Lay_WrongTestExit (); Err_WrongTestExit ();
/***** Get test exam data *****/ /***** Get test exam data *****/
TstPrn_GetPrintDataByPrnCod (&Print); TstPrn_GetPrintDataByPrnCod (&Print);
@ -2431,9 +2432,9 @@ void TstPrn_ShowOnePrint (void)
if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat, if (!Usr_ChkUsrCodAndGetAllUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,
Usr_DONT_GET_PREFS, Usr_DONT_GET_PREFS,
Usr_DONT_GET_ROLE_IN_CURRENT_CRS)) Usr_DONT_GET_ROLE_IN_CURRENT_CRS))
Lay_WrongUserExit (); Err_WrongUserExit ();
if (!Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat)) if (!Usr_CheckIfICanViewTstExaMchResult (&Gbl.Usrs.Other.UsrDat))
Lay_NoPermissionExit (); Err_NoPermissionExit ();
/* User */ /* User */
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -2461,7 +2462,7 @@ void TstPrn_ShowOnePrint (void)
StartEndTime++) StartEndTime++)
{ {
if (asprintf (&Id,"tst_date_%u",(unsigned) StartEndTime) < 0) if (asprintf (&Id,"tst_date_%u",(unsigned) StartEndTime) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -2573,7 +2574,7 @@ void TstPrn_ShowOnePrint (void)
Box_BoxEnd (); Box_BoxEnd ();
} }
else // I am not allowed to view this test exam else // I am not allowed to view this test exam
Lay_NoPermissionExit (); Err_NoPermissionExit ();
} }
/*****************************************************************************/ /*****************************************************************************/
@ -2782,12 +2783,12 @@ void TstPrn_GetPrintQuestionsFromDB (struct TstPrn_Print *Print)
/* Get question code (row[0]) */ /* Get question code (row[0]) */
if ((Print->PrintedQuestions[NumQst].QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0) if ((Print->PrintedQuestions[NumQst].QstCod = Str_ConvertStrCodToLongCod (row[0])) < 0)
Lay_WrongQuestionExit (); Err_WrongQuestionExit ();
/* Get score (row[1]) */ /* Get score (row[1]) */
Str_SetDecimalPointToUS (); // To get the decimal point as a dot Str_SetDecimalPointToUS (); // To get the decimal point as a dot
if (sscanf (row[1],"%lf",&Print->PrintedQuestions[NumQst].Score) != 1) if (sscanf (row[1],"%lf",&Print->PrintedQuestions[NumQst].Score) != 1)
Lay_ShowErrorAndExit ("Wrong question score."); Err_ShowErrorAndExit ("Wrong question score.");
Str_SetDecimalPointToLocal (); // Return to local system Str_SetDecimalPointToLocal (); // Return to local system
/* Get indexes for this question (row[2]) */ /* Get indexes for this question (row[2]) */
@ -2803,7 +2804,7 @@ void TstPrn_GetPrintQuestionsFromDB (struct TstPrn_Print *Print)
DB_FreeMySQLResult (&mysql_res); DB_FreeMySQLResult (&mysql_res);
if (NumQsts != Print->NumQsts.All) if (NumQsts != Print->NumQsts.All)
Lay_WrongExamExit (); Err_WrongExamExit ();
} }
/*****************************************************************************/ /*****************************************************************************/

View File

@ -29,6 +29,7 @@
#include <stdio.h> // For asprintf #include <stdio.h> // For asprintf
#include <stdlib.h> // For malloc, free #include <stdlib.h> // For malloc, free
#include "swad_error.h"
#include "swad_HTML.h" #include "swad_HTML.h"
#include "swad_parameter.h" #include "swad_parameter.h"
#include "swad_test_visibility.h" #include "swad_test_visibility.h"
@ -94,7 +95,7 @@ void TstVis_ShowVisibilityIcons (unsigned SelectedVisibility,bool Hidden)
if (asprintf (&Title,"%s: %s", if (asprintf (&Title,"%s: %s",
Txt_TST_STR_VISIBILITY[Visibility], Txt_TST_STR_VISIBILITY[Visibility],
Txt_TST_HIDDEN_VISIBLE[ItemVisible]) < 0) Txt_TST_HIDDEN_VISIBLE[ItemVisible]) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
if (ItemVisible && !Hidden) if (ItemVisible && !Hidden)
Ico_PutIconOn (Icons[Visibility][ItemVisible],Title); Ico_PutIconOn (Icons[Visibility][ItemVisible],Title);
else else
@ -162,7 +163,7 @@ unsigned TstVis_GetVisibilityFromForm (void)
/***** Allocate memory for list of attendance events selected *****/ /***** Allocate memory for list of attendance events selected *****/
MaxSizeListVisibilitySelected = TstVis_NUM_ITEMS_VISIBILITY * (Cns_MAX_DECIMAL_DIGITS_UINT + 1); MaxSizeListVisibilitySelected = TstVis_NUM_ITEMS_VISIBILITY * (Cns_MAX_DECIMAL_DIGITS_UINT + 1);
if ((StrVisibilitySelected = malloc (MaxSizeListVisibilitySelected + 1)) == NULL) if ((StrVisibilitySelected = malloc (MaxSizeListVisibilitySelected + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Get parameter multiple with list of visibility items selected *****/ /***** Get parameter multiple with list of visibility items selected *****/
Par_GetParMultiToText ("Visibility",StrVisibilitySelected,MaxSizeListVisibilitySelected); Par_GetParMultiToText ("Visibility",StrVisibilitySelected,MaxSizeListVisibilitySelected);

View File

@ -30,6 +30,7 @@
#include <stdio.h> // For asprintf #include <stdio.h> // For asprintf
#include <stdlib.h> // For free #include <stdlib.h> // For free
#include "swad_error.h"
#include "swad_forum.h" #include "swad_forum.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_message.h" #include "swad_message.h"
@ -496,7 +497,7 @@ static void Tml_Com_PutIconToToggleComms (const char *UniqueId,
/***** Build onclick text *****/ /***** Build onclick text *****/
if (asprintf (&OnClick,"toggleComments('%s')",UniqueId) < 0) if (asprintf (&OnClick,"toggleComments('%s')",UniqueId) < 0)
Lay_NotEnoughMemoryExit (); Err_NotEnoughMemoryExit ();
/***** Link to toggle on/off some divs *****/ /***** Link to toggle on/off some divs *****/
HTM_BUTTON_BUTTON_Begin (Text,The_ClassFormLinkInBox[Gbl.Prefs.Theme],OnClick); HTM_BUTTON_BUTTON_Begin (Text,The_ClassFormLinkInBox[Gbl.Prefs.Theme],OnClick);

View File

@ -26,6 +26,7 @@
/*****************************************************************************/ /*****************************************************************************/
#include "swad_database.h" #include "swad_database.h"
#include "swad_error.h"
#include "swad_follow.h" #include "swad_follow.h"
#include "swad_global.h" #include "swad_global.h"
#include "swad_timeline.h" #include "swad_timeline.h"
@ -743,7 +744,7 @@ void Tml_DB_CreateSubQueryPublishers (const struct Tml_Timeline *Timeline,
SubQueries->Publishers[0] = '\0'; SubQueries->Publishers[0] = '\0';
break; break;
default: default:
Lay_WrongWhoExit (); Err_WrongWhoExit ();
break; break;
} }
break; break;

Some files were not shown because too many files have changed in this diff Show More