Version19.56

This commit is contained in:
Antonio Cañas Vargas 2019-11-08 01:10:32 +01:00
parent 6708c63500
commit e7b1f94c02
29 changed files with 214 additions and 173 deletions

View File

@ -1900,7 +1900,7 @@ int swad__sendMyGroups (struct soap *soap,
int ReturnCode; int ReturnCode;
struct ListCodGrps LstGrpsIWant; struct ListCodGrps LstGrpsIWant;
const char *Ptr; const char *Ptr;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
unsigned NumGrp; unsigned NumGrp;
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
@ -1954,7 +1954,7 @@ int swad__sendMyGroups (struct soap *soap,
for (NumGrp = 0, Ptr = myGroups; for (NumGrp = 0, Ptr = myGroups;
*Ptr; *Ptr;
NumGrp++) NumGrp++)
Str_GetNextStringUntilComma (&Ptr,LongStr,1 + 10); Str_GetNextStringUntilComma (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
LstGrpsIWant.NumGrps = NumGrp; LstGrpsIWant.NumGrps = NumGrp;
if (LstGrpsIWant.NumGrps) // If I have selected groups... if (LstGrpsIWant.NumGrps) // If I have selected groups...
@ -1967,7 +1967,7 @@ int swad__sendMyGroups (struct soap *soap,
NumGrp++) NumGrp++)
{ {
/* Find next string in text until comma (leading and trailing spaces are removed) */ /* Find next string in text until comma (leading and trailing spaces are removed) */
Str_GetNextStringUntilComma (&Ptr,LongStr,1 + 10); Str_GetNextStringUntilComma (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
LstGrpsIWant.GrpCods[NumGrp] = Str_ConvertStrCodToLongCod (LongStr); LstGrpsIWant.GrpCods[NumGrp] = Str_ConvertStrCodToLongCod (LongStr);
} }
} }
@ -2286,7 +2286,7 @@ static void API_GetListGrpsInAttendanceEventFromDB (long AttCod,char **ListGroup
long NumGrps; long NumGrps;
long NumGrp; long NumGrp;
long GrpCod; long GrpCod;
char GrpCodStr[10 + 1]; char GrpCodStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
size_t Length; size_t Length;
/***** Get list of groups *****/ /***** Get list of groups *****/
@ -2508,14 +2508,14 @@ int swad__removeAttendanceEvent (struct soap *soap,
static void API_GetLstGrpsSel (const char *Groups) static void API_GetLstGrpsSel (const char *Groups)
{ {
const char *Ptr; const char *Ptr;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
unsigned NumGrp; unsigned NumGrp;
/***** Count number of groups *****/ /***** Count number of groups *****/
for (Ptr = Groups, NumGrp = 0; for (Ptr = Groups, NumGrp = 0;
*Ptr; *Ptr;
NumGrp++) NumGrp++)
Str_GetNextStringUntilComma (&Ptr,LongStr,1 + 10); Str_GetNextStringUntilComma (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
Gbl.Crs.Grps.LstGrpsSel.NumGrps = NumGrp; Gbl.Crs.Grps.LstGrpsSel.NumGrps = NumGrp;
/***** Create a list of groups selected *****/ /***** Create a list of groups selected *****/
@ -2531,7 +2531,7 @@ static void API_GetLstGrpsSel (const char *Groups)
*Ptr; *Ptr;
) )
{ {
Str_GetNextStringUntilComma (&Ptr,LongStr,1 + 10); Str_GetNextStringUntilComma (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrp] = Str_ConvertStrCodToLongCod (LongStr); Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrp] = Str_ConvertStrCodToLongCod (LongStr);
if (Grp_CheckIfGroupBelongsToCourse (Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrp],Gbl.Hierarchy.Crs.CrsCod)) if (Grp_CheckIfGroupBelongsToCourse (Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrp],Gbl.Hierarchy.Crs.CrsCod))
NumGrp++; NumGrp++;
@ -2737,11 +2737,11 @@ int swad__sendAttendanceUsers (struct soap *soap,
int ReturnCode; int ReturnCode;
struct AttendanceEvent Att; struct AttendanceEvent Att;
const char *Ptr; const char *Ptr;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
struct UsrData UsrDat; struct UsrData UsrDat;
unsigned NumCodsInList; unsigned NumCodsInList;
char *SubQueryAllUsrs = NULL; char *SubQueryAllUsrs = NULL;
char SubQueryOneUsr[1 + 1 + 10 + 1]; char SubQueryOneUsr[1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
size_t Length = 0; // Initialized to avoid warning size_t Length = 0; // Initialized to avoid warning
/***** Initializations *****/ /***** Initializations *****/
@ -2790,10 +2790,10 @@ int swad__sendAttendanceUsers (struct soap *soap,
*Ptr; *Ptr;
NumCodsInList++) NumCodsInList++)
/* Find next string in text until comma (leading and trailing spaces are removed) */ /* Find next string in text until comma (leading and trailing spaces are removed) */
Str_GetNextStringUntilComma (&Ptr,LongStr,1 + 10); Str_GetNextStringUntilComma (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
/* Allocate subquery used to mark not present users as absent */ /* Allocate subquery used to mark not present users as absent */
Length = 256 + NumCodsInList * (1 + 1 + 10 + 1) - 1; Length = 256 + NumCodsInList * (1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1) - 1;
if ((SubQueryAllUsrs = (char *) malloc (Length + 1)) == NULL) if ((SubQueryAllUsrs = (char *) malloc (Length + 1)) == NULL)
return soap_receiver_fault (Gbl.soap, return soap_receiver_fault (Gbl.soap,
"Not enough memory", "Not enough memory",
@ -2806,7 +2806,7 @@ int swad__sendAttendanceUsers (struct soap *soap,
) )
{ {
/* Find next string in text until comma (leading and trailing spaces are removed) */ /* Find next string in text until comma (leading and trailing spaces are removed) */
Str_GetNextStringUntilComma (&Ptr,LongStr,1 + 10); Str_GetNextStringUntilComma (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if ((UsrDat.UsrCod = Str_ConvertStrCodToLongCod (LongStr)) > 0) if ((UsrDat.UsrCod = Str_ConvertStrCodToLongCod (LongStr)) > 0)
if (Usr_ChkIfUsrCodExists (UsrDat.UsrCod)) if (Usr_ChkIfUsrCodExists (UsrDat.UsrCod))
// The user must belong to course, // The user must belong to course,
@ -3159,7 +3159,7 @@ int swad__markNotificationsAsRead (struct soap *soap,
{ {
int ReturnCode; int ReturnCode;
const char *Ptr; const char *Ptr;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
unsigned NumNtf; unsigned NumNtf;
unsigned NumNtfsMarkedAsRead = 0; unsigned NumNtfsMarkedAsRead = 0;
long NtfCod; long NtfCod;
@ -3192,7 +3192,7 @@ int swad__markNotificationsAsRead (struct soap *soap,
NumNtf++) NumNtf++)
{ {
/* Find next string in text until comma (leading and trailing spaces are removed) */ /* Find next string in text until comma (leading and trailing spaces are removed) */
Str_GetNextStringUntilComma (&Ptr,LongStr,1 + 10); Str_GetNextStringUntilComma (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if ((NtfCod = Str_ConvertStrCodToLongCod (LongStr)) > 0) if ((NtfCod = Str_ConvertStrCodToLongCod (LongStr)) > 0)
{ {
/***** Mark notification as read in the database *****/ /***** Mark notification as read in the database *****/
@ -4097,9 +4097,9 @@ int swad__getTrivialQuestion (struct soap *soap,
extern const char *Tst_StrAnswerTypesXML[Tst_NUM_ANS_TYPES]; extern const char *Tst_StrAnswerTypesXML[Tst_NUM_ANS_TYPES];
int ReturnCode; int ReturnCode;
const char *Ptr; const char *Ptr;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
char DegreesStr[API_MAX_BYTES_DEGREES_STR + 1]; char DegreesStr[API_MAX_BYTES_DEGREES_STR + 1];
char DegStr[ 1 + 1 + 1 + 10 + 1 + 1]; char DegStr[ 1 + 1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1 + 1];
// DegStr=", ' - number ' \0" // DegStr=", ' - number ' \0"
long DegCod; long DegCod;
bool FirstDegree = true; bool FirstDegree = true;
@ -4137,7 +4137,7 @@ int swad__getTrivialQuestion (struct soap *soap,
while (*Ptr) while (*Ptr)
{ {
/* Find next string in text until comma (leading and trailing spaces are removed) */ /* Find next string in text until comma (leading and trailing spaces are removed) */
Str_GetNextStringUntilComma (&Ptr,LongStr,1 + 10); Str_GetNextStringUntilComma (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
/* Check if degree code from string is a valid code */ /* Check if degree code from string is a valid code */
if (sscanf (LongStr,"%ld",&DegCod) == 1) // Degree code if (sscanf (LongStr,"%ld",&DegCod) == 1) // Degree code
@ -4496,7 +4496,7 @@ static void API_GetListGrpsInGameFromDB (long GamCod,char **ListGroups)
long NumGrps; long NumGrps;
long NumGrp; long NumGrp;
long GrpCod; long GrpCod;
char GrpCodStr[10 + 1]; char GrpCodStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
size_t Length; size_t Length;
/***** Get list of groups *****/ /***** Get list of groups *****/

View File

@ -510,7 +510,7 @@ void ID_ShowFormChangeMyID (bool IShouldFillInID)
{ {
extern const char *Hlp_PROFILE_Account; extern const char *Hlp_PROFILE_Account;
extern const char *Txt_ID; extern const char *Txt_ID;
char StrRecordWidth[10 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
/***** Start section *****/ /***** Start section *****/
HTM_SECTION_Begin (ID_ID_SECTION_ID); HTM_SECTION_Begin (ID_ID_SECTION_ID);
@ -542,7 +542,7 @@ void ID_ShowFormChangeOtherUsrID (void)
{ {
extern const char *Hlp_PROFILE_Account; extern const char *Hlp_PROFILE_Account;
extern const char *Txt_ID; extern const char *Txt_ID;
char StrRecordWidth[10 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
/***** Start section *****/ /***** Start section *****/
HTM_SECTION_Begin (ID_ID_SECTION_ID); HTM_SECTION_Begin (ID_ID_SECTION_ID);

View File

@ -2209,6 +2209,7 @@ static void Att_PutParamsCodGrps (long AttCod)
MaxLengthGrpCods = NumGrps * (1 + 20) - 1; MaxLengthGrpCods = NumGrps * (1 + 20) - 1;
if ((GrpCods = (char *) malloc (MaxLengthGrpCods + 1)) == NULL) if ((GrpCods = (char *) malloc (MaxLengthGrpCods + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
GrpCods[0] = '\0';
/* Get groups */ /* Get groups */
for (NumGrp = 0; for (NumGrp = 0;
@ -2245,7 +2246,7 @@ void Att_RegisterMeAsStdInAttEvent (void)
extern const char *Txt_Your_comment_has_been_updated; extern const char *Txt_Your_comment_has_been_updated;
struct AttendanceEvent Att; struct AttendanceEvent Att;
bool Present; bool Present;
char CommentParamName[10 + 10 + 1]; char CommentParamName[10 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
char CommentStd[Cns_MAX_BYTES_TEXT + 1]; char CommentStd[Cns_MAX_BYTES_TEXT + 1];
char CommentTch[Cns_MAX_BYTES_TEXT + 1]; char CommentTch[Cns_MAX_BYTES_TEXT + 1];
@ -2307,7 +2308,7 @@ void Att_RegisterStudentsInAttEvent (void)
unsigned NumStdsPresent; unsigned NumStdsPresent;
unsigned NumStdsAbsent; unsigned NumStdsAbsent;
struct UsrData UsrData; struct UsrData UsrData;
char CommentParamName[10 + 10 + 1]; char CommentParamName[10 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
char CommentStd[Cns_MAX_BYTES_TEXT + 1]; char CommentStd[Cns_MAX_BYTES_TEXT + 1];
char CommentTch[Cns_MAX_BYTES_TEXT + 1]; char CommentTch[Cns_MAX_BYTES_TEXT + 1];
@ -2439,7 +2440,7 @@ static void Att_GetNumStdsTotalWhoAreInAttEvent (struct AttendanceEvent *Att)
static unsigned Att_GetNumStdsFromAListWhoAreInAttEvent (long AttCod,long LstSelectedUsrCods[],unsigned NumUsrsInList) static unsigned Att_GetNumStdsFromAListWhoAreInAttEvent (long AttCod,long LstSelectedUsrCods[],unsigned NumUsrsInList)
{ {
char *SubQueryAllUsrs = NULL; char *SubQueryAllUsrs = NULL;
char SubQueryOneUsr[1 + 1 + 10 + 1]; char SubQueryOneUsr[1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
unsigned NumUsr; unsigned NumUsr;
unsigned NumStdsInAttEvent = 0; unsigned NumStdsInAttEvent = 0;
size_t MaxLength; size_t MaxLength;
@ -2447,7 +2448,7 @@ static unsigned Att_GetNumStdsFromAListWhoAreInAttEvent (long AttCod,long LstSel
if (NumUsrsInList) if (NumUsrsInList)
{ {
/***** Allocate space for subquery *****/ /***** Allocate space for subquery *****/
MaxLength = 256 + NumUsrsInList * (1 + 1 + 10); MaxLength = 256 + NumUsrsInList * (1 + Cns_MAX_DECIMAL_DIGITS_LONG);
if ((SubQueryAllUsrs = (char *) malloc (MaxLength + 1)) == NULL) if ((SubQueryAllUsrs = (char *) malloc (MaxLength + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
SubQueryAllUsrs[0] = '\0'; SubQueryAllUsrs[0] = '\0';
@ -2893,7 +2894,7 @@ static void Att_GetListSelectedAttCods (char **StrAttCodsSelected)
unsigned NumAttEvent; unsigned NumAttEvent;
const char *Ptr; const char *Ptr;
long AttCod; long AttCod;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
unsigned NumGrpsInThisEvent; unsigned NumGrpsInThisEvent;
@ -2902,7 +2903,7 @@ static void Att_GetListSelectedAttCods (char **StrAttCodsSelected)
unsigned NumGrpSel; unsigned NumGrpSel;
/***** Allocate memory for list of attendance events selected *****/ /***** Allocate memory for list of attendance events selected *****/
MaxSizeListAttCodsSelected = Gbl.AttEvents.Num * (1 + 10 + 1); MaxSizeListAttCodsSelected = Gbl.AttEvents.Num * (Cns_MAX_DECIMAL_DIGITS_LONG + 1);
if ((*StrAttCodsSelected = (char *) malloc (MaxSizeListAttCodsSelected + 1)) == NULL) if ((*StrAttCodsSelected = (char *) malloc (MaxSizeListAttCodsSelected + 1)) == NULL)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
@ -2924,7 +2925,7 @@ static void Att_GetListSelectedAttCods (char **StrAttCodsSelected)
) )
{ {
/* Get next attendance event selected */ /* Get next attendance event selected */
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
AttCod = Str_ConvertStrCodToLongCod (LongStr); AttCod = Str_ConvertStrCodToLongCod (LongStr);
/* Set each event in *StrAttCodsSelected as selected */ /* Set each event in *StrAttCodsSelected as selected */
@ -3293,7 +3294,7 @@ static void Att_WriteTableHeadSeveralAttEvents (void)
extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS]; extern const char *Txt_ROLES_SINGUL_Abc[Rol_NUM_ROLES][Usr_NUM_SEXS];
extern const char *Txt_Attendance; extern const char *Txt_Attendance;
unsigned NumAttEvent; unsigned NumAttEvent;
char StrNumAttEvent[10 + 1]; char StrNumAttEvent[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);

View File

@ -490,7 +490,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD: En OpenSWAD:
ps2pdf source.ps destination.pdf ps2pdf source.ps destination.pdf
*/ */
#define Log_PLATFORM_VERSION "SWAD 19.55.4 (2019-11-07)" #define Log_PLATFORM_VERSION "SWAD 19.56 (2019-11-08)"
#define CSS_FILE "swad19.47.css" #define CSS_FILE "swad19.47.css"
#define JS_FILE "swad19.39.js" #define JS_FILE "swad19.39.js"
/* /*
@ -498,6 +498,8 @@ ps2pdf source.ps destination.pdf
// TODO: Impedir la creación y edición de proyectos si no son editables. // TODO: Impedir la creación y edición de proyectos si no son editables.
// TODO: Importante: filtrar proyectos por usuarios (igual que en trabajos o en asistencia) // TODO: Importante: filtrar proyectos por usuarios (igual que en trabajos o en asistencia)
Version 19.56: Nov 08, 2019 Fixed bug in groups.
New constants for sizes of numerical strings. (246104 lines)
Version 19.55.4: Nov 07, 2019 Fixed bugs in dates. (246072 lines) Version 19.55.4: Nov 07, 2019 Fixed bugs in dates. (246072 lines)
Version 19.55.3: Nov 07, 2019 Fixed bug in form to edit user's web/social networks. (246071 lines) Version 19.55.3: Nov 07, 2019 Fixed bug in form to edit user's web/social networks. (246071 lines)
Version 19.55.2: Nov 07, 2019 Fixed bug creating user's record. Version 19.55.2: Nov 07, 2019 Fixed bug creating user's record.

View File

@ -75,7 +75,7 @@ static void Cla_RenameClassroom (Cns_ShrtOrFullName_t ShrtOrFullName);
static bool Cla_CheckIfClassroomNameExists (const char *FieldName,const char *Name,long ClaCod); static bool Cla_CheckIfClassroomNameExists (const char *FieldName,const char *Name,long ClaCod);
static void Cla_UpdateClaNameDB (long ClaCod,const char *FieldName,const char *NewClaName); static void Cla_UpdateClaNameDB (long ClaCod,const char *FieldName,const char *NewClaName);
static void Cla_WriteCapacity (char Str[10 + 1],unsigned Capacity); static void Cla_WriteCapacity (char Str[Cns_MAX_DECIMAL_DIGITS_UINT + 1],unsigned Capacity);
static void Cla_PutFormToCreateClassroom (void); static void Cla_PutFormToCreateClassroom (void);
static void Cla_PutHeadClassrooms (void); static void Cla_PutHeadClassrooms (void);
@ -100,7 +100,7 @@ void Cla_SeeClassrooms (void)
Cla_Order_t Order; Cla_Order_t Order;
unsigned NumCla; unsigned NumCla;
unsigned RowEvenOdd; unsigned RowEvenOdd;
char StrCapacity[10 + 1]; char StrCapacity[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Trivial check *****/ /***** Trivial check *****/
if (Gbl.Hierarchy.Ctr.CtrCod <= 0) // No centre selected if (Gbl.Hierarchy.Ctr.CtrCod <= 0) // No centre selected
@ -469,7 +469,7 @@ static void Cla_ListClassroomsForEdition (void)
{ {
unsigned NumCla; unsigned NumCla;
struct Classroom *Cla; struct Classroom *Cla;
char StrCapacity[10 + 1]; char StrCapacity[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Write heading *****/ /***** Write heading *****/
HTM_TABLE_BeginWidePadding (2); HTM_TABLE_BeginWidePadding (2);
@ -520,7 +520,7 @@ static void Cla_ListClassroomsForEdition (void)
Frm_StartForm (ActChgClaMaxStd); Frm_StartForm (ActChgClaMaxStd);
Cla_PutParamClaCod (Cla->ClaCod); Cla_PutParamClaCod (Cla->ClaCod);
Cla_WriteCapacity (StrCapacity,Cla->Capacity); Cla_WriteCapacity (StrCapacity,Cla->Capacity);
HTM_INPUT_TEXT ("Capacity",10,StrCapacity,true, HTM_INPUT_TEXT ("Capacity",Cns_MAX_DECIMAL_DIGITS_UINT,StrCapacity,true,
"size=\"3\""); "size=\"3\"");
Frm_EndForm (); Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();
@ -803,10 +803,10 @@ void Cla_ChangeCapacity (void)
/****************** Write seating capacity of a classroom ********************/ /****************** Write seating capacity of a classroom ********************/
/*****************************************************************************/ /*****************************************************************************/
static void Cla_WriteCapacity (char Str[10 + 1],unsigned Capacity) static void Cla_WriteCapacity (char Str[Cns_MAX_DECIMAL_DIGITS_UINT + 1],unsigned Capacity)
{ {
if (Capacity <= Cla_MAX_CAPACITY) if (Capacity <= Cla_MAX_CAPACITY)
snprintf (Str,10 + 1, snprintf (Str,Cns_MAX_DECIMAL_DIGITS_UINT + 1,
"%u", "%u",
Capacity); Capacity);
else else
@ -881,7 +881,7 @@ static void Cla_PutFormToCreateClassroom (void)
{ {
extern const char *Txt_New_classroom; extern const char *Txt_New_classroom;
extern const char *Txt_Create_classroom; extern const char *Txt_Create_classroom;
char StrCapacity[10 + 1]; char StrCapacity[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Begin form *****/ /***** Begin form *****/
Frm_StartForm (ActNewCla); Frm_StartForm (ActNewCla);
@ -918,7 +918,7 @@ static void Cla_PutFormToCreateClassroom (void)
/***** Seating capacity *****/ /***** Seating capacity *****/
HTM_TD_Begin ("class=\"LM\""); HTM_TD_Begin ("class=\"LM\"");
Cla_WriteCapacity (StrCapacity,Cla_EditingCla->Capacity); Cla_WriteCapacity (StrCapacity,Cla_EditingCla->Capacity);
HTM_INPUT_TEXT ("Capacity",10,StrCapacity,false, HTM_INPUT_TEXT ("Capacity",Cns_MAX_DECIMAL_DIGITS_UINT,StrCapacity,false,
"size=\"3\""); "size=\"3\"");
HTM_TD_End (); HTM_TD_End ();

View File

@ -56,6 +56,43 @@
#define Cns_BYTES_SESSION_ID Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 #define Cns_BYTES_SESSION_ID Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64
/*
The maximum number of decimal digits d of an integer of b bits
(signed or unsigned) matches the number of digits of the number 2^b.
In the case of signed numbers, an extra character must be added for the sign.
The number of decimal digits of a number X can be calculated as log_10(X), rounded up.
Therefore, log_10(2^b) = b * log_10(2) = b * 0.301029995663981
If s is the size in bytes of a certain type of integer,
given by the sizeof operator, its size b in bits will be b = (s * 8).
The maximum number of decimal digits will be (s * 8) * 0.301029995663981, rounded up.
Rounding up will consist of truncating (converting to an integer), and adding 1.
Unfortunately, the use of floating point may cause problems
when evaluating the expressions as constants. It's necessary to modify them,
for example by multiplying by 2 ^ 11 and dividing by 2 ^ 8,
so that all calculations should be performed by the preprocessor with integers.
*/
#define LOG2_x_2_11 616 // log10(2) * 2^11
#define Cns_MAX_DECIMAL_DIGITS_UCHAR (((sizeof (unsigned char ) * LOG2_x_2_11) >> 8) + 1)
#define Cns_MAX_DECIMAL_DIGITS_USHORT (((sizeof (unsigned short ) * LOG2_x_2_11) >> 8) + 1)
#define Cns_MAX_DECIMAL_DIGITS_UINT (((sizeof (unsigned int ) * LOG2_x_2_11) >> 8) + 1)
#define Cns_MAX_DECIMAL_DIGITS_ULONG (((sizeof (unsigned long ) * LOG2_x_2_11) >> 8) + 1)
#define Cns_MAX_DECIMAL_DIGITS_ULONGLONG (((sizeof (unsigned long long) * LOG2_x_2_11) >> 8) + 1)
#define Cns_MAX_DECIMAL_DIGITS_UINT128 (((sizeof (unsigned __int128 ) * LOG2_x_2_11) >> 8) + 1)
#define Cns_MAX_DECIMAL_DIGITS_CHAR (1 + Cns_MAX_DECIMAL_DIGITS_UCHAR )
#define Cns_MAX_DECIMAL_DIGITS_SHORT (1 + Cns_MAX_DECIMAL_DIGITS_USHORT )
#define Cns_MAX_DECIMAL_DIGITS_INT (1 + Cns_MAX_DECIMAL_DIGITS_UINT )
#define Cns_MAX_DECIMAL_DIGITS_LONG (1 + Cns_MAX_DECIMAL_DIGITS_ULONG )
#define Cns_MAX_DECIMAL_DIGITS_LONGLONG (1 + Cns_MAX_DECIMAL_DIGITS_ULONGLONG)
#define Cns_MAX_DECIMAL_DIGITS_INT128 (1 + Cns_MAX_DECIMAL_DIGITS_UINT128 )
/*****************************************************************************/ /*****************************************************************************/
/******************************* Public types ********************************/ /******************************* Public types ********************************/
/*****************************************************************************/ /*****************************************************************************/

View File

@ -2026,7 +2026,7 @@ static void Cty_PutFormToCreateCountry (void)
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES]; extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
extern const char *Txt_Create_country; extern const char *Txt_Create_country;
Lan_Language_t Lan; Lan_Language_t Lan;
char StrCtyCod[20 + 1]; char StrCtyCod[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
char StrName[32]; char StrName[32];
/***** Begin form *****/ /***** Begin form *****/
@ -2053,7 +2053,7 @@ static void Cty_PutFormToCreateCountry (void)
Cty_EditingCty->CtyCod); Cty_EditingCty->CtyCod);
else else
StrCtyCod[0] = '\0'; StrCtyCod[0] = '\0';
HTM_INPUT_TEXT ("OthCtyCod",10,StrCtyCod,false, HTM_INPUT_TEXT ("OthCtyCod",3,StrCtyCod,false,
"size=\"3\" required=\"required\""); "size=\"3\" required=\"required\"");
HTM_TD_End (); HTM_TD_End ();

View File

@ -146,7 +146,7 @@ void Cry_EncryptSHA512Base64 (const char *PlainText,
void Cry_CreateUniqueNameEncrypted (char UniqueNameEncrypted[Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1]) void Cry_CreateUniqueNameEncrypted (char UniqueNameEncrypted[Cry_BYTES_ENCRYPTED_STR_SHA256_BASE64 + 1])
{ {
static unsigned NumCall = 0; // When this function is called several times in the same execution of the program, each time a new name is created static unsigned NumCall = 0; // When this function is called several times in the same execution of the program, each time a new name is created
char UniqueNamePlain[Cns_MAX_BYTES_IP + 1 + 10 + 1 + 10 + 1 + 10 + 1]; char UniqueNamePlain[Cns_MAX_BYTES_IP + Cns_MAX_DECIMAL_DIGITS_LONG + Cns_MAX_DECIMAL_DIGITS_LONG + Cns_MAX_DECIMAL_DIGITS_UINT + 1];
NumCall++; NumCall++;
snprintf (UniqueNamePlain,sizeof (UniqueNamePlain), snprintf (UniqueNamePlain,sizeof (UniqueNamePlain),

View File

@ -778,7 +778,7 @@ void Dat_GetBrowserTimeZone (char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1])
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
bool TZNameIsUsable = false; bool TZNameIsUsable = false;
char IntStr[1 + 10 + 1]; char IntStr[Cns_MAX_DECIMAL_DIGITS_INT + 1];
int ClientUTCMinusLocal; // Time difference between UTC time and client local time, in minutes int ClientUTCMinusLocal; // Time difference between UTC time and client local time, in minutes
/***** 1. Get client time zone name *****/ /***** 1. Get client time zone name *****/
@ -814,7 +814,7 @@ void Dat_GetBrowserTimeZone (char BrowserTimeZone[Dat_MAX_BYTES_TIME_ZONE + 1])
// We get client TZ difference using JavaScript getTimezoneOffset() method // We get client TZ difference using JavaScript getTimezoneOffset() method
// getTimezoneOffset() returns UTC-time - browser-local-time, in minutes. // getTimezoneOffset() returns UTC-time - browser-local-time, in minutes.
// For example, if browser time zone is GMT+2, -120 will be returned. // For example, if browser time zone is GMT+2, -120 will be returned.
Par_GetParToText ("BrowserTZDiff",IntStr,1 + 10); Par_GetParToText ("BrowserTZDiff",IntStr,Cns_MAX_DECIMAL_DIGITS_INT);
if (sscanf (IntStr,"%d",&ClientUTCMinusLocal) != 1) if (sscanf (IntStr,"%d",&ClientUTCMinusLocal) != 1)
ClientUTCMinusLocal = 0; ClientUTCMinusLocal = 0;

View File

@ -2535,9 +2535,9 @@ static void Fig_WriteRowStatsFileBrowsers1 (const char *NameOfFileZones,
Brw_FileBrowser_t FileZone, Brw_FileBrowser_t FileZone,
struct Fig_SizeOfFileZones *SizeOfFileZones) struct Fig_SizeOfFileZones *SizeOfFileZones)
{ {
char StrNumCrss[10 + 1]; char StrNumCrss[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrNumGrps[10 + 1]; char StrNumGrps[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrNumUsrs[10 + 1]; char StrNumUsrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char FileSizeStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1]; char FileSizeStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N_LINE_TOP" : char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N_LINE_TOP" :
"DAT"; "DAT";
@ -2546,7 +2546,7 @@ static void Fig_WriteRowStatsFileBrowsers1 (const char *NameOfFileZones,
if (SizeOfFileZones->NumCrss == -1) // Not applicable if (SizeOfFileZones->NumCrss == -1) // Not applicable
Str_Copy (StrNumCrss,"-", Str_Copy (StrNumCrss,"-",
10); Cns_MAX_DECIMAL_DIGITS_UINT);
else else
snprintf (StrNumCrss,sizeof (StrNumCrss), snprintf (StrNumCrss,sizeof (StrNumCrss),
"%d", "%d",
@ -2554,7 +2554,7 @@ static void Fig_WriteRowStatsFileBrowsers1 (const char *NameOfFileZones,
if (SizeOfFileZones->NumGrps == -1) // Not applicable if (SizeOfFileZones->NumGrps == -1) // Not applicable
Str_Copy (StrNumGrps,"-", Str_Copy (StrNumGrps,"-",
10); Cns_MAX_DECIMAL_DIGITS_UINT);
else else
snprintf (StrNumGrps,sizeof (StrNumGrps), snprintf (StrNumGrps,sizeof (StrNumGrps),
"%d", "%d",
@ -2562,7 +2562,7 @@ static void Fig_WriteRowStatsFileBrowsers1 (const char *NameOfFileZones,
if (SizeOfFileZones->NumUsrs == -1) // Not applicable if (SizeOfFileZones->NumUsrs == -1) // Not applicable
Str_Copy (StrNumUsrs,"-", Str_Copy (StrNumUsrs,"-",
10); Cns_MAX_DECIMAL_DIGITS_UINT);
else else
snprintf (StrNumUsrs,sizeof (StrNumUsrs), snprintf (StrNumUsrs,sizeof (StrNumUsrs),
"%d", "%d",
@ -2609,8 +2609,8 @@ static void Fig_WriteRowStatsFileBrowsers2 (const char *NameOfFileZones,
Brw_FileBrowser_t FileZone, Brw_FileBrowser_t FileZone,
struct Fig_SizeOfFileZones *SizeOfFileZones) struct Fig_SizeOfFileZones *SizeOfFileZones)
{ {
char StrNumFoldersPerCrs[10 + 1]; char StrNumFoldersPerCrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrNumFilesPerCrs[10 + 1]; char StrNumFilesPerCrs[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char FileSizePerCrsStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1]; char FileSizePerCrsStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N_LINE_TOP" : char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N_LINE_TOP" :
"DAT"; "DAT";
@ -2618,9 +2618,9 @@ static void Fig_WriteRowStatsFileBrowsers2 (const char *NameOfFileZones,
if (SizeOfFileZones->NumCrss == -1) // Not applicable if (SizeOfFileZones->NumCrss == -1) // Not applicable
{ {
Str_Copy (StrNumFoldersPerCrs,"-", Str_Copy (StrNumFoldersPerCrs,"-",
10); Cns_MAX_DECIMAL_DIGITS_UINT);
Str_Copy (StrNumFilesPerCrs,"-", Str_Copy (StrNumFilesPerCrs,"-",
10); Cns_MAX_DECIMAL_DIGITS_UINT);
Str_Copy (FileSizePerCrsStr,"-", Str_Copy (FileSizePerCrsStr,"-",
Fil_MAX_BYTES_FILE_SIZE_STRING); Fil_MAX_BYTES_FILE_SIZE_STRING);
} }
@ -2667,8 +2667,8 @@ static void Fig_WriteRowStatsFileBrowsers3 (const char *NameOfFileZones,
Brw_FileBrowser_t FileZone, Brw_FileBrowser_t FileZone,
struct Fig_SizeOfFileZones *SizeOfFileZones) struct Fig_SizeOfFileZones *SizeOfFileZones)
{ {
char StrNumFoldersPerUsr[10 + 1]; char StrNumFoldersPerUsr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrNumFilesPerUsr[10 + 1]; char StrNumFilesPerUsr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char FileSizePerUsrStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1]; char FileSizePerUsrStr[Fil_MAX_BYTES_FILE_SIZE_STRING + 1];
char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N_LINE_TOP" : char *Class = (FileZone == Brw_UNKNOWN) ? "DAT_N_LINE_TOP" :
"DAT"; "DAT";
@ -2676,9 +2676,9 @@ static void Fig_WriteRowStatsFileBrowsers3 (const char *NameOfFileZones,
if (SizeOfFileZones->NumUsrs == -1) // Not applicable if (SizeOfFileZones->NumUsrs == -1) // Not applicable
{ {
Str_Copy (StrNumFoldersPerUsr,"-", Str_Copy (StrNumFoldersPerUsr,"-",
10); Cns_MAX_DECIMAL_DIGITS_UINT);
Str_Copy (StrNumFilesPerUsr,"-", Str_Copy (StrNumFilesPerUsr,"-",
10); Cns_MAX_DECIMAL_DIGITS_UINT);
Str_Copy (FileSizePerUsrStr,"-", Str_Copy (FileSizePerUsrStr,"-",
Fil_MAX_BYTES_FILE_SIZE_STRING); Fil_MAX_BYTES_FILE_SIZE_STRING);
} }

View File

@ -56,7 +56,7 @@ extern struct Globals Gbl;
#define Gam_MAX_CHARS_ANSWER (1024 - 1) // 1023 #define Gam_MAX_CHARS_ANSWER (1024 - 1) // 1023
#define Gam_MAX_BYTES_ANSWER ((Gam_MAX_CHARS_ANSWER + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 16383 #define Gam_MAX_BYTES_ANSWER ((Gam_MAX_CHARS_ANSWER + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 16383
#define Gam_MAX_BYTES_LIST_ANSWER_TYPES (10 + (Gam_NUM_ANS_TYPES - 1) * (1 + 10)) // #define Gam_MAX_BYTES_LIST_ANSWER_TYPES (Gam_NUM_ANS_TYPES * (Cns_MAX_DECIMAL_DIGITS_UINT + 1))
const char *Gam_StrAnswerTypesDB[Gam_NUM_ANS_TYPES] = const char *Gam_StrAnswerTypesDB[Gam_NUM_ANS_TYPES] =
{ {
@ -67,7 +67,7 @@ const char *Gam_StrAnswerTypesDB[Gam_NUM_ANS_TYPES] =
#define Gam_MAX_ANSWERS_PER_QUESTION 10 #define Gam_MAX_ANSWERS_PER_QUESTION 10
#define Gam_MAX_SELECTED_QUESTIONS 1000 #define Gam_MAX_SELECTED_QUESTIONS 1000
#define Gam_MAX_BYTES_LIST_SELECTED_QUESTIONS (Gam_MAX_SELECTED_QUESTIONS * (1 + 10 + 1)) #define Gam_MAX_BYTES_LIST_SELECTED_QUESTIONS (Gam_MAX_SELECTED_QUESTIONS * (Cns_MAX_DECIMAL_DIGITS_LONG + 1))
/*****************************************************************************/ /*****************************************************************************/
/******************************* Private types *******************************/ /******************************* Private types *******************************/
@ -1631,7 +1631,7 @@ static void Gam_ListOneOrMoreQuestionsForEdition (long GamCod,unsigned NumQsts,
MYSQL_ROW row; MYSQL_ROW row;
unsigned QstInd; unsigned QstInd;
unsigned MaxQstInd; unsigned MaxQstInd;
char StrQstInd[10 + 1]; char StrQstInd[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Get maximum question index *****/ /***** Get maximum question index *****/
MaxQstInd = Gam_GetMaxQuestionIndexInGame (GamCod); MaxQstInd = Gam_GetMaxQuestionIndexInGame (GamCod);
@ -1819,7 +1819,7 @@ void Gam_AddTstQuestionsToGame (void)
extern const char *Txt_No_questions_have_been_added; extern const char *Txt_No_questions_have_been_added;
struct Game Game; struct Game Game;
const char *Ptr; const char *Ptr;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
long QstCod; long QstCod;
unsigned MaxQstInd; unsigned MaxQstInd;
@ -1846,7 +1846,7 @@ void Gam_AddTstQuestionsToGame (void)
while (*Ptr) while (*Ptr)
{ {
/* Get next code */ /* Get next code */
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (sscanf (LongStr,"%ld",&QstCod) != 1) if (sscanf (LongStr,"%ld",&QstCod) != 1)
Lay_ShowErrorAndExit ("Wrong question code."); Lay_ShowErrorAndExit ("Wrong question code.");
@ -1913,14 +1913,14 @@ static unsigned Gam_CountNumQuestionsInList (void)
{ {
const char *Ptr; const char *Ptr;
unsigned NumQuestions = 0; unsigned NumQuestions = 0;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
long QstCod; long QstCod;
/***** Go over the list Gbl.Test.ListAnsTypes counting the number of types of answer *****/ /***** Go over the list Gbl.Test.ListAnsTypes counting the number of types of answer *****/
Ptr = Gbl.Games.ListQuestions; Ptr = Gbl.Games.ListQuestions;
while (*Ptr) while (*Ptr)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (sscanf (LongStr,"%ld",&QstCod) != 1) if (sscanf (LongStr,"%ld",&QstCod) != 1)
Lay_ShowErrorAndExit ("Wrong question code."); Lay_ShowErrorAndExit ("Wrong question code.");
NumQuestions++; NumQuestions++;

View File

@ -151,7 +151,7 @@ static void Grp_PutParamRemGrp (void);
static void Grp_RemoveGroupTypeCompletely (void); static void Grp_RemoveGroupTypeCompletely (void);
static void Grp_RemoveGroupCompletely (void); static void Grp_RemoveGroupCompletely (void);
static void Grp_WriteMaxStds (char Str[10 + 1],unsigned MaxStudents); static void Grp_WriteMaxStds (char Str[Cns_MAX_DECIMAL_DIGITS_UINT + 1],unsigned MaxStudents);
static long Grp_GetParamGrpTypCod (void); static long Grp_GetParamGrpTypCod (void);
static long Grp_GetParamGrpCod (void); static long Grp_GetParamGrpCod (void);
static void Grp_PutParamGrpTypCod (long GrpTypCod); static void Grp_PutParamGrpTypCod (long GrpTypCod);
@ -476,7 +476,7 @@ void Grp_PutParamsCodGrps (void)
unsigned NumGrpSel; unsigned NumGrpSel;
size_t MaxLengthGrpCods; size_t MaxLengthGrpCods;
char *GrpCods; char *GrpCods;
char GrpCod[20 + 1]; char GrpCod[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Write the boolean parameter that indicates if all the groups must be listed *****/ /***** Write the boolean parameter that indicates if all the groups must be listed *****/
Par_PutHiddenParamChar ("AllGroups", Par_PutHiddenParamChar ("AllGroups",
@ -527,7 +527,7 @@ void Grp_GetParCodsSeveralGrpsToShowUsrs (void)
/***** Get parameter with list of groups selected *****/ /***** Get parameter with list of groups selected *****/
Grp_GetParCodsSeveralGrps (); Grp_GetParCodsSeveralGrps ();
if (Gbl.Crs.Grps.NumGrps && // This course has groups and... if (Gbl.Crs.Grps.NumGrps && // This course has groups and...
!Gbl.Crs.Grps.LstGrpsSel.NumGrps) // ...I haven't selected any group !Gbl.Crs.Grps.LstGrpsSel.NumGrps) // ...I haven't selected any group
{ {
/***** I I haven't selected any group, show by default the groups I belong to *****/ /***** I I haven't selected any group, show by default the groups I belong to *****/
@ -566,9 +566,9 @@ void Grp_GetParCodsSeveralGrps (void)
{ {
char *ParamLstCodGrps; char *ParamLstCodGrps;
const char *Ptr; const char *Ptr;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
unsigned NumGrp; unsigned NumGrp;
unsigned long MaxSizeLstGrpCods = ((1 + 10 + 1) * Gbl.Crs.Grps.NumGrps) - 1; unsigned long MaxSizeLstGrpCods = ((Cns_MAX_DECIMAL_DIGITS_LONG + 1) * Gbl.Crs.Grps.NumGrps) - 1;
/***** Reset number of groups selected *****/ /***** Reset number of groups selected *****/
Gbl.Crs.Grps.LstGrpsSel.NumGrps = 0; Gbl.Crs.Grps.LstGrpsSel.NumGrps = 0;
@ -588,7 +588,7 @@ void Grp_GetParCodsSeveralGrps (void)
for (Ptr = ParamLstCodGrps, NumGrp = 0; for (Ptr = ParamLstCodGrps, NumGrp = 0;
*Ptr; *Ptr;
NumGrp++) NumGrp++)
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
Gbl.Crs.Grps.LstGrpsSel.NumGrps = NumGrp; Gbl.Crs.Grps.LstGrpsSel.NumGrps = NumGrp;
if (Gbl.Crs.Grps.LstGrpsSel.NumGrps) // If I have selected groups... if (Gbl.Crs.Grps.LstGrpsSel.NumGrps) // If I have selected groups...
@ -600,7 +600,7 @@ void Grp_GetParCodsSeveralGrps (void)
*Ptr; *Ptr;
NumGrp++) NumGrp++)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrp] = Str_ConvertStrCodToLongCod (LongStr); Gbl.Crs.Grps.LstGrpsSel.GrpCods[NumGrp] = Str_ConvertStrCodToLongCod (LongStr);
} }
} }
@ -1473,7 +1473,7 @@ static void Grp_ListGroupsForEdition (void)
struct GroupType *GrpTypAux; struct GroupType *GrpTypAux;
struct Group *Grp; struct Group *Grp;
Rol_Role_t Role; Rol_Role_t Role;
char StrMaxStudents[10 + 1]; char StrMaxStudents[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Write heading *****/ /***** Write heading *****/
HTM_TABLE_BeginWidePadding (2); HTM_TABLE_BeginWidePadding (2);
@ -1612,7 +1612,7 @@ static void Grp_ListGroupsForEdition (void)
Frm_StartFormAnchor (ActChgMaxStdGrp,Grp_GROUPS_SECTION_ID); Frm_StartFormAnchor (ActChgMaxStdGrp,Grp_GROUPS_SECTION_ID);
Grp_PutParamGrpCod (Grp->GrpCod); Grp_PutParamGrpCod (Grp->GrpCod);
Grp_WriteMaxStds (StrMaxStudents,Grp->MaxStudents); Grp_WriteMaxStds (StrMaxStudents,Grp->MaxStudents);
HTM_INPUT_TEXT ("MaxStudents",10,StrMaxStudents,true, HTM_INPUT_TEXT ("MaxStudents",Cns_MAX_DECIMAL_DIGITS_UINT,StrMaxStudents,true,
"size=\"3\""); "size=\"3\"");
Frm_EndForm (); Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();
@ -2370,7 +2370,7 @@ static void Grp_WriteRowGrp (struct Group *Grp,bool Highlight)
extern const char *Txt_Group_X_closed; extern const char *Txt_Group_X_closed;
int Vacant; int Vacant;
Rol_Role_t Role; Rol_Role_t Role;
char StrMaxStudents[10 + 1]; char StrMaxStudents[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Write icon to show if group is open or closed *****/ /***** Write icon to show if group is open or closed *****/
snprintf (Gbl.Title,sizeof (Gbl.Title), snprintf (Gbl.Title,sizeof (Gbl.Title),
@ -2564,7 +2564,7 @@ static void Grp_PutFormToCreateGroup (void)
unsigned NumGrpTyp; unsigned NumGrpTyp;
unsigned NumCla; unsigned NumCla;
Rol_Role_t Role; Rol_Role_t Role;
char StrMaxStudents[10 + 1]; char StrMaxStudents[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Begin form *****/ /***** Begin form *****/
HTM_SECTION_Begin (Grp_NEW_GROUP_SECTION_ID); HTM_SECTION_Begin (Grp_NEW_GROUP_SECTION_ID);
@ -2657,7 +2657,7 @@ static void Grp_PutFormToCreateGroup (void)
/***** Maximum number of students *****/ /***** Maximum number of students *****/
HTM_TD_Begin ("class=\"CM\""); HTM_TD_Begin ("class=\"CM\"");
Grp_WriteMaxStds (StrMaxStudents,Gbl.Crs.Grps.MaxStudents); Grp_WriteMaxStds (StrMaxStudents,Gbl.Crs.Grps.MaxStudents);
HTM_INPUT_TEXT ("MaxStudents",10,StrMaxStudents,false, HTM_INPUT_TEXT ("MaxStudents",Cns_MAX_DECIMAL_DIGITS_UINT,StrMaxStudents,false,
"size=\"3\""); "size=\"3\"");
HTM_TD_End (); HTM_TD_End ();
@ -4614,10 +4614,10 @@ void Grp_ChangeMaxStdsGrp (void)
/************* Write the maximum number of students in a group ***************/ /************* Write the maximum number of students in a group ***************/
/*****************************************************************************/ /*****************************************************************************/
static void Grp_WriteMaxStds (char Str[10 + 1],unsigned MaxStudents) static void Grp_WriteMaxStds (char Str[Cns_MAX_DECIMAL_DIGITS_UINT + 1],unsigned MaxStudents)
{ {
if (MaxStudents <= Grp_MAX_STUDENTS_IN_A_GROUP) if (MaxStudents <= Grp_MAX_STUDENTS_IN_A_GROUP)
snprintf (Str,10 + 1, snprintf (Str,Cns_MAX_DECIMAL_DIGITS_UINT + 1,
"%u", "%u",
MaxStudents); MaxStudents);
else else
@ -4842,8 +4842,8 @@ void Grp_PutParamGrpCod (long GrpCod)
void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted) void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
{ {
unsigned NumGrpTyp; unsigned NumGrpTyp;
char Param[8 + 10 + 1]; char Param[6 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
char LongStr[1 + 10 + 1]; char LongStr[1 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
char **LstStrCodGrps; char **LstStrCodGrps;
const char *Ptr; const char *Ptr;
unsigned NumGrpWanted; unsigned NumGrpWanted;
@ -4859,7 +4859,7 @@ void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
NumGrpTyp++) NumGrpTyp++)
{ {
/***** 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] = (char *) malloc ((size_t) ((1 + 10 + 1) * if ((LstStrCodGrps[NumGrpTyp] = (char *) malloc ((size_t) ((Cns_MAX_DECIMAL_DIGITS_LONG + 1) *
Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps))) == NULL) Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps))) == NULL)
Lay_NotEnoughMemoryExit (); Lay_NotEnoughMemoryExit ();
@ -4868,14 +4868,14 @@ void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
"GrpCod%ld", "GrpCod%ld",
Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod); Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].GrpTypCod);
Par_GetParMultiToText (Param,LstStrCodGrps[NumGrpTyp], Par_GetParMultiToText (Param,LstStrCodGrps[NumGrpTyp],
((1 + 10 + 1) * Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) - 1); ((Cns_MAX_DECIMAL_DIGITS_LONG + 1) * Gbl.Crs.Grps.GrpTypes.LstGrpTypes[NumGrpTyp].NumGrps) - 1);
if (LstStrCodGrps[NumGrpTyp][0]) if (LstStrCodGrps[NumGrpTyp][0])
{ {
/***** Count the number of groups selected of this type of LstCodGrps[NumGrpTyp] *****/ /***** Count the number of groups selected of this type of LstCodGrps[NumGrpTyp] *****/
for (Ptr = LstStrCodGrps[NumGrpTyp], NumGrpWanted = 0; for (Ptr = LstStrCodGrps[NumGrpTyp], NumGrpWanted = 0;
*Ptr; *Ptr;
NumGrpWanted++) NumGrpWanted++)
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
/***** Add the number of groups selected of this type to the number of groups selected total *****/ /***** Add the number of groups selected of this type to the number of groups selected total *****/
LstGrpsWanted->NumGrps += NumGrpWanted; LstGrpsWanted->NumGrps += NumGrpWanted;
@ -4899,7 +4899,7 @@ void Grp_GetLstCodsGrpWanted (struct ListCodGrps *LstGrpsWanted)
*Ptr; *Ptr;
NumGrpWanted++) NumGrpWanted++)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
LstGrpsWanted->GrpCods[NumGrpWanted] = Str_ConvertStrCodToLongCod (LongStr); LstGrpsWanted->GrpCods[NumGrpWanted] = Str_ConvertStrCodToLongCod (LongStr);
} }
/* Free memory used by the list of group codes of this type */ /* Free memory used by the list of group codes of this type */

View File

@ -297,7 +297,7 @@ static void Ind_GetParamNumIndicators (void)
{ {
unsigned Ind; unsigned Ind;
const char *Ptr; const char *Ptr;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
long Indicator; long Indicator;
/***** Get parameter multiple with list of indicators selected *****/ /***** Get parameter multiple with list of indicators selected *****/
@ -318,7 +318,7 @@ static void Ind_GetParamNumIndicators (void)
) )
{ {
/* Get next indicator selected */ /* Get next indicator selected */
Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,1 + 10); Par_GetNextStrUntilSeparParamMult (&Ptr,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
Indicator = Str_ConvertStrCodToLongCod (LongStr); Indicator = Str_ConvertStrCodToLongCod (LongStr);
/* Set each indicator in list StrIndicatorsSelected as selected */ /* Set each indicator in list StrIndicatorsSelected as selected */

View File

@ -1142,7 +1142,7 @@ void Mai_ShowFormChangeMyEmail (bool IMustFillInEmail,bool IShouldConfirmEmail)
{ {
extern const char *Hlp_PROFILE_Account; extern const char *Hlp_PROFILE_Account;
extern const char *Txt_Email; extern const char *Txt_Email;
char StrRecordWidth[10 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
/***** Start section *****/ /***** Start section *****/
HTM_SECTION_Begin (Mai_EMAIL_SECTION_ID); HTM_SECTION_Begin (Mai_EMAIL_SECTION_ID);
@ -1174,7 +1174,7 @@ void Mai_ShowFormChangeOtherUsrEmail (void)
{ {
extern const char *Hlp_PROFILE_Account; extern const char *Hlp_PROFILE_Account;
extern const char *Txt_Email; extern const char *Txt_Email;
char StrRecordWidth[10 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
/***** Start section *****/ /***** Start section *****/
HTM_SECTION_Begin (Mai_EMAIL_SECTION_ID); HTM_SECTION_Begin (Mai_EMAIL_SECTION_ID);

View File

@ -112,7 +112,7 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void)
extern const char *Txt_TABLE_Header; extern const char *Txt_TABLE_Header;
extern const char *Txt_TABLE_Footer; extern const char *Txt_TABLE_Footer;
struct MarksProperties Marks; struct MarksProperties Marks;
char StrHeadOrFoot[10 + 1]; char StrHeadOrFoot[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
if (Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_FOLDER) if (Gbl.FileBrowser.FilFolLnk.Type == Brw_IS_FOLDER)
HTM_TD_ColouredEmpty (2); HTM_TD_ColouredEmpty (2);
@ -133,7 +133,7 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void)
snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot), snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot),
"%u", "%u",
Marks.Header); Marks.Header);
HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_HEADER],5,StrHeadOrFoot,true, HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_HEADER],Cns_MAX_DECIMAL_DIGITS_UINT,StrHeadOrFoot,true,
"size=\"1\" class=\"LST_EDIT_ROWS COLOR%u\"", "size=\"1\" class=\"LST_EDIT_ROWS COLOR%u\"",
Gbl.RowEvenOdd); Gbl.RowEvenOdd);
HTM_LABEL_End (); HTM_LABEL_End ();
@ -152,7 +152,7 @@ void Mrk_GetAndWriteNumRowsHeaderAndFooter (void)
snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot), snprintf (StrHeadOrFoot,sizeof (StrHeadOrFoot),
"%u", "%u",
Marks.Footer); Marks.Footer);
HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_FOOTER],5,StrHeadOrFoot,true, HTM_INPUT_TEXT (Mrk_HeadOrFootStr[Brw_FOOTER],Cns_MAX_DECIMAL_DIGITS_UINT,StrHeadOrFoot,true,
"size=\"1\" class=\"LST_EDIT_ROWS COLOR%u\"", "size=\"1\" class=\"LST_EDIT_ROWS COLOR%u\"",
Gbl.RowEvenOdd); Gbl.RowEvenOdd);
HTM_LABEL_End (); HTM_LABEL_End ();
@ -240,7 +240,7 @@ static void Mrk_ChangeNumRowsHeaderOrFooter (Brw_HeadOrFoot_t HeaderOrFooter)
{ {
extern const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER]; extern const Brw_FileBrowser_t Brw_FileBrowserForDB_files[Brw_NUM_TYPES_FILE_BROWSER];
extern const char *Txt_The_number_of_rows_is_now_X; extern const char *Txt_The_number_of_rows_is_now_X;
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
long Cod; long Cod;
unsigned NumRows; unsigned NumRows;
@ -248,7 +248,7 @@ static void Mrk_ChangeNumRowsHeaderOrFooter (Brw_HeadOrFoot_t HeaderOrFooter)
Brw_GetParAndInitFileBrowser (); Brw_GetParAndInitFileBrowser ();
/***** Get the number of rows of the header or footer of the table of marks *****/ /***** Get the number of rows of the header or footer of the table of marks *****/
Par_GetParToText (Mrk_HeadOrFootStr[HeaderOrFooter],UnsignedStr,10); Par_GetParToText (Mrk_HeadOrFootStr[HeaderOrFooter],UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT);
if (sscanf (UnsignedStr,"%u",&NumRows) == 1) if (sscanf (UnsignedStr,"%u",&NumRows) == 1)
{ {
/***** Update properties of marks in the database *****/ /***** Update properties of marks in the database *****/

View File

@ -1471,7 +1471,7 @@ static void Mch_ReorderAnswer (long MchCod,unsigned QstInd,
unsigned NumAns; unsigned NumAns;
long LongNum; long LongNum;
unsigned AnsInd; unsigned AnsInd;
char StrOneAnswer[10 + 1]; char StrOneAnswer[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrAnswersOneQst[Tst_MAX_BYTES_ANSWERS_ONE_QST + 1]; char StrAnswersOneQst[Tst_MAX_BYTES_ANSWERS_ONE_QST + 1];
/***** Initialize list of answers to empty string *****/ /***** Initialize list of answers to empty string *****/

View File

@ -272,7 +272,7 @@ void Net_ShowFormMyWebsAndSocialNets (void)
MYSQL_ROW row; MYSQL_ROW row;
Net_WebsAndSocialNetworks_t NumURL; Net_WebsAndSocialNetworks_t NumURL;
char URL[Cns_MAX_BYTES_WWW + 1]; char URL[Cns_MAX_BYTES_WWW + 1];
char StrRecordWidth[10 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
char StrName[32]; char StrName[32];
/***** Start section *****/ /***** Start section *****/

View File

@ -227,7 +227,7 @@ static void Nck_ShowFormChangeUsrNickname (const struct UsrData *UsrDat,bool Its
extern const char *Txt_Save_changes; extern const char *Txt_Save_changes;
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
char StrRecordWidth[10 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
unsigned NumNicks; unsigned NumNicks;
unsigned NumNick; unsigned NumNick;
Act_Action_t NextAction; Act_Action_t NextAction;

View File

@ -359,7 +359,7 @@ void Not_ShowNotices (Not_Listing_t TypeNoticesListing,long HighlightNotCod)
extern const char *Txt_No_notices; extern const char *Txt_No_notices;
MYSQL_RES *mysql_res; MYSQL_RES *mysql_res;
MYSQL_ROW row; MYSQL_ROW row;
char StrWidth[10 + 2 + 1]; char StrWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
char PathRelRSSFile[PATH_MAX + 1]; char PathRelRSSFile[PATH_MAX + 1];
long NotCod; long NotCod;
unsigned long NumNot; unsigned long NumNot;

View File

@ -82,7 +82,7 @@ bool Par_GetQueryString (void)
{ {
char Method[Par_MAX_BYTES_METHOD + 1]; char Method[Par_MAX_BYTES_METHOD + 1];
char ContentType[Par_MAX_BYTES_CONTENT_TYPE + 1]; char ContentType[Par_MAX_BYTES_CONTENT_TYPE + 1];
char UnsignedLongStr[10 + 1]; char UnsignedLongStr[Cns_MAX_DECIMAL_DIGITS_ULONG + 1];
unsigned long UnsignedLong; unsigned long UnsignedLong;
Str_Copy (Method,getenv ("REQUEST_METHOD"), Str_Copy (Method,getenv ("REQUEST_METHOD"),
@ -112,7 +112,7 @@ bool Par_GetQueryString (void)
if (getenv ("CONTENT_LENGTH")) if (getenv ("CONTENT_LENGTH"))
{ {
Str_Copy (UnsignedLongStr,getenv ("CONTENT_LENGTH"), Str_Copy (UnsignedLongStr,getenv ("CONTENT_LENGTH"),
10); Cns_MAX_DECIMAL_DIGITS_ULONG);
if (sscanf (UnsignedLongStr,"%lu",&UnsignedLong) != 1) if (sscanf (UnsignedLongStr,"%lu",&UnsignedLong) != 1)
return false; return false;
Gbl.Params.ContentLength = (size_t) UnsignedLong; Gbl.Params.ContentLength = (size_t) UnsignedLong;
@ -665,7 +665,7 @@ void Par_GetMainParameters (void)
long ActCod; long ActCod;
char Nickname[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1]; char Nickname[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char URL[PATH_MAX + 1]; char URL[PATH_MAX + 1];
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Reset codes of country, institution, centre, degree and course *****/ /***** Reset codes of country, institution, centre, degree and course *****/
Gbl.Hierarchy.Cty.CtyCod = Gbl.Hierarchy.Cty.CtyCod =
@ -815,7 +815,7 @@ void Par_GetMainParameters (void)
} }
/***** Get country if exists (from menu) *****/ /***** Get country if exists (from menu) *****/
Par_GetParToText ("cty",LongStr,1 + 10); Par_GetParToText ("cty",LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (LongStr[0]) // Parameter "cty" available if (LongStr[0]) // Parameter "cty" available
{ {
Gbl.Hierarchy.Cty.CtyCod = Str_ConvertStrCodToLongCod (LongStr); Gbl.Hierarchy.Cty.CtyCod = Str_ConvertStrCodToLongCod (LongStr);
@ -826,7 +826,7 @@ void Par_GetMainParameters (void)
} }
/***** Get institution if exists (from menu) *****/ /***** Get institution if exists (from menu) *****/
Par_GetParToText ("ins",LongStr,1 + 10); Par_GetParToText ("ins",LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (LongStr[0]) // Parameter "ins" available if (LongStr[0]) // Parameter "ins" available
{ {
Gbl.Hierarchy.Ins.InsCod = Str_ConvertStrCodToLongCod (LongStr); Gbl.Hierarchy.Ins.InsCod = Str_ConvertStrCodToLongCod (LongStr);
@ -836,7 +836,7 @@ void Par_GetMainParameters (void)
} }
/***** Get centre if exists (from menu) *****/ /***** Get centre if exists (from menu) *****/
Par_GetParToText ("ctr",LongStr,1 + 10); Par_GetParToText ("ctr",LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (LongStr[0]) // Parameter "ctr" available if (LongStr[0]) // Parameter "ctr" available
{ {
Gbl.Hierarchy.Ctr.CtrCod = Str_ConvertStrCodToLongCod (LongStr); Gbl.Hierarchy.Ctr.CtrCod = Str_ConvertStrCodToLongCod (LongStr);
@ -845,7 +845,7 @@ void Par_GetMainParameters (void)
} }
/***** Get numerical degree code if exists (from menu) *****/ /***** Get numerical degree code if exists (from menu) *****/
Par_GetParToText ("deg",LongStr,1 + 10); Par_GetParToText ("deg",LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (LongStr[0]) // Parameter "deg" available if (LongStr[0]) // Parameter "deg" available
{ {
Gbl.Hierarchy.Deg.DegCod = Str_ConvertStrCodToLongCod (LongStr); Gbl.Hierarchy.Deg.DegCod = Str_ConvertStrCodToLongCod (LongStr);
@ -853,7 +853,7 @@ void Par_GetMainParameters (void)
} }
/***** Get numerical course code if exists (from menu) *****/ /***** Get numerical course code if exists (from menu) *****/
Par_GetParToText ("crs",LongStr,1 + 10); Par_GetParToText ("crs",LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
if (LongStr[0]) // Parameter "crs" available if (LongStr[0]) // Parameter "crs" available
Gbl.Hierarchy.Crs.CrsCod = Str_ConvertStrCodToLongCod (LongStr); // Overwrite CrsCod from session Gbl.Hierarchy.Crs.CrsCod = Str_ConvertStrCodToLongCod (LongStr); // Overwrite CrsCod from session
@ -892,11 +892,11 @@ unsigned long Par_GetParToUnsignedLong (const char *ParamName,
unsigned long Max, unsigned long Max,
unsigned long Default) unsigned long Default)
{ {
char UnsignedLongStr[20 + 1]; char UnsignedLongStr[Cns_MAX_DECIMAL_DIGITS_ULONG + 1];
unsigned long UnsignedLongNum; unsigned long UnsignedLongNum;
/***** Get parameter with unsigned number *****/ /***** Get parameter with unsigned number *****/
Par_GetParToText (ParamName,UnsignedLongStr,10); Par_GetParToText (ParamName,UnsignedLongStr,Cns_MAX_DECIMAL_DIGITS_ULONG);
if (sscanf (UnsignedLongStr,"%lu",&UnsignedLongNum) == 1) if (sscanf (UnsignedLongStr,"%lu",&UnsignedLongNum) == 1)
if (UnsignedLongNum >= Min && UnsignedLongNum <= Max) if (UnsignedLongNum >= Min && UnsignedLongNum <= Max)
return UnsignedLongNum; return UnsignedLongNum;
@ -910,10 +910,10 @@ unsigned long Par_GetParToUnsignedLong (const char *ParamName,
long Par_GetParToLong (const char *ParamName) long Par_GetParToLong (const char *ParamName)
{ {
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Get parameter with long number *****/ /***** Get parameter with long number *****/
Par_GetParToText (ParamName,LongStr,1 + 10); Par_GetParToText (ParamName,LongStr,Cns_MAX_DECIMAL_DIGITS_LONG);
return Str_ConvertStrCodToLongCod (LongStr); return Str_ConvertStrCodToLongCod (LongStr);
} }

View File

@ -648,7 +648,7 @@ void Pwd_ShowFormChgMyPwd (void)
extern const char *Txt_Current_password; extern const char *Txt_Current_password;
extern const char *Txt_Change_password; extern const char *Txt_Change_password;
extern const char *Txt_Set_password; extern const char *Txt_Set_password;
char StrRecordWidth[10 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
bool IHaveAPasswordInDB = (bool) Gbl.Usrs.Me.UsrDat.Password[0]; bool IHaveAPasswordInDB = (bool) Gbl.Usrs.Me.UsrDat.Password[0];
/***** Start section *****/ /***** Start section *****/

View File

@ -287,7 +287,7 @@ void Rec_ListFieldsRecordsForEdition (void)
unsigned NumField; unsigned NumField;
Rec_VisibilityRecordFields_t Vis; Rec_VisibilityRecordFields_t Vis;
unsigned VisUnsigned; unsigned VisUnsigned;
char StrNumLines[10 + 1]; char StrNumLines[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Write heading *****/ /***** Write heading *****/
Rec_WriteHeadingRecordFields (); Rec_WriteHeadingRecordFields ();
@ -324,7 +324,7 @@ void Rec_ListFieldsRecordsForEdition (void)
snprintf (StrNumLines,sizeof (StrNumLines), snprintf (StrNumLines,sizeof (StrNumLines),
"%u", "%u",
Gbl.Crs.Records.LstFields.Lst[NumField].NumLines); Gbl.Crs.Records.LstFields.Lst[NumField].NumLines);
HTM_INPUT_TEXT ("NumLines",2,StrNumLines,true, HTM_INPUT_TEXT ("NumLines",Cns_MAX_DECIMAL_DIGITS_UINT,StrNumLines,true,
"size=\"2\""); "size=\"2\"");
Frm_EndForm (); Frm_EndForm ();
HTM_TD_End (); HTM_TD_End ();
@ -363,7 +363,7 @@ void Rec_ShowFormCreateRecordField (void)
extern const char *Txt_Create_record_field; extern const char *Txt_Create_record_field;
Rec_VisibilityRecordFields_t Vis; Rec_VisibilityRecordFields_t Vis;
unsigned VisUnsigned; unsigned VisUnsigned;
char StrNumLines[10 + 1]; char StrNumLines[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Begin form *****/ /***** Begin form *****/
Frm_StartForm (ActNewFie); Frm_StartForm (ActNewFie);
@ -392,7 +392,7 @@ void Rec_ShowFormCreateRecordField (void)
snprintf (StrNumLines,sizeof (StrNumLines), snprintf (StrNumLines,sizeof (StrNumLines),
"%u", "%u",
Gbl.Crs.Records.Field.NumLines); Gbl.Crs.Records.Field.NumLines);
HTM_INPUT_TEXT ("NumLines",2,StrNumLines,false, HTM_INPUT_TEXT ("NumLines",Cns_MAX_DECIMAL_DIGITS_UINT,StrNumLines,false,
"size=\"2\" required=\"required\""); "size=\"2\" required=\"required\"");
HTM_TD_End (); HTM_TD_End ();
@ -491,15 +491,15 @@ void Rec_ReceiveFormField (void)
unsigned Rec_ConvertToNumLinesField (const char *StrNumLines) unsigned Rec_ConvertToNumLinesField (const char *StrNumLines)
{ {
int NumLines; unsigned NumLines;
if (sscanf (StrNumLines,"%d",&NumLines) != 1) if (sscanf (StrNumLines,"%u",&NumLines) != 1)
return Rec_DEF_LINES_IN_EDITION_FIELD; return Rec_DEF_LINES_IN_EDITION_FIELD;
else if (NumLines < Rec_MIN_LINES_IN_EDITION_FIELD) else if (NumLines < Rec_MIN_LINES_IN_EDITION_FIELD)
return Rec_MIN_LINES_IN_EDITION_FIELD; return Rec_MIN_LINES_IN_EDITION_FIELD;
else if (NumLines > Rec_MAX_LINES_IN_EDITION_FIELD) else if (NumLines > Rec_MAX_LINES_IN_EDITION_FIELD)
return Rec_MAX_LINES_IN_EDITION_FIELD; return Rec_MAX_LINES_IN_EDITION_FIELD;
return (unsigned) NumLines; return NumLines;
} }
/*****************************************************************************/ /*****************************************************************************/
@ -1285,7 +1285,7 @@ static void Rec_ShowRecordOneTchCrs (void)
{ {
extern const char *Hlp_USERS_Teachers_timetable; extern const char *Hlp_USERS_Teachers_timetable;
extern const char *Txt_TIMETABLE_TYPES[TT_NUM_TIMETABLE_TYPES]; extern const char *Txt_TIMETABLE_TYPES[TT_NUM_TIMETABLE_TYPES];
char Width[10 + 2 + 1]; char Width[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
bool ShowOfficeHours; bool ShowOfficeHours;
/***** Width for office hours *****/ /***** Width for office hours *****/
@ -1370,7 +1370,7 @@ static void Rec_ListRecordsTchs (Rec_SharedRecordViewType_t TypeOfView)
struct UsrData UsrDat; struct UsrData UsrDat;
char RecordSectionId[32]; char RecordSectionId[32];
bool ShowOfficeHours; bool ShowOfficeHours;
char Width[10 + 2 + 1]; char Width[Cns_MAX_DECIMAL_DIGITS_UINT + 2 + 1];
/***** Get list of selected users if not already got *****/ /***** Get list of selected users if not already got *****/
Usr_GetListsSelectedUsrsCods (); Usr_GetListsSelectedUsrsCods ();
@ -1667,7 +1667,7 @@ static void Rec_ShowCrsRecord (Rec_CourseRecordViewType_t TypeOfView,
NULL, // Rec_CRS_PRINT_SEVERAL_RECORDS NULL, // Rec_CRS_PRINT_SEVERAL_RECORDS
// Rec_CRS_RECORD_PRINT // Rec_CRS_RECORD_PRINT
}; };
char StrRecordWidth[10 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
bool ItsMe; bool ItsMe;
bool ICanEdit = false; bool ICanEdit = false;
unsigned NumField; unsigned NumField;
@ -1890,7 +1890,7 @@ unsigned long Rec_GetFieldFromCrsRecord (long UsrCod,long FieldCod,MYSQL_RES **m
void Rec_GetFieldsCrsRecordFromForm (void) void Rec_GetFieldsCrsRecordFromForm (void)
{ {
unsigned NumField; unsigned NumField;
char FieldParamName[5 + 10 + 1]; char FieldParamName[5 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
for (NumField = 0; for (NumField = 0;
NumField < Gbl.Crs.Records.LstFields.Num; NumField < Gbl.Crs.Records.LstFields.Num;
@ -2171,7 +2171,7 @@ void Rec_ShowSharedUsrRecord (Rec_SharedRecordViewType_t TypeOfView,
NULL, // Rol_INS_ADM NULL, // Rol_INS_ADM
NULL, // Rol_SYS_ADM NULL, // Rol_SYS_ADM
}; };
char StrRecordWidth[10 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
const char *ClassForm = "REC_DAT"; const char *ClassForm = "REC_DAT";
bool ItsMe; bool ItsMe;
bool IAmLoggedAsTeacherOrSysAdm; bool IAmLoggedAsTeacherOrSysAdm;
@ -3981,7 +3981,7 @@ static void Rec_ShowFormMyInsCtrDpt (bool IAmATeacher)
unsigned NumCty; unsigned NumCty;
unsigned NumIns; unsigned NumIns;
unsigned NumCtr; unsigned NumCtr;
char StrRecordWidth[10 + 1]; char StrRecordWidth[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Start section *****/ /***** Start section *****/
HTM_SECTION_Begin (Rec_MY_INS_CTR_DPT_ID); HTM_SECTION_Begin (Rec_MY_INS_CTR_DPT_ID);

View File

@ -580,7 +580,7 @@ unsigned Rol_GetSelectedRoles (void)
{ {
char StrRoles[Rol_NUM_ROLES * (10 + 1)]; char StrRoles[Rol_NUM_ROLES * (10 + 1)];
const char *Ptr; const char *Ptr;
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
Rol_Role_t Role; Rol_Role_t Role;
unsigned Roles; unsigned Roles;
@ -596,7 +596,7 @@ unsigned Rol_GetSelectedRoles (void)
for (Ptr = StrRoles; for (Ptr = StrRoles;
*Ptr;) *Ptr;)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,10); Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT);
Role = Rol_ConvertUnsignedStrToRole (UnsignedStr); Role = Rol_ConvertUnsignedStrToRole (UnsignedStr);
if (Role != Rol_UNK) if (Role != Rol_UNK)
Roles |= (1 << Role); Roles |= (1 << Role);

View File

@ -58,7 +58,7 @@ extern struct Globals Gbl;
#define Svy_MAX_CHARS_ANSWER (1024 - 1) // 1023 #define Svy_MAX_CHARS_ANSWER (1024 - 1) // 1023
#define Svy_MAX_BYTES_ANSWER ((Svy_MAX_CHARS_ANSWER + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 16383 #define Svy_MAX_BYTES_ANSWER ((Svy_MAX_CHARS_ANSWER + 1) * Str_MAX_BYTES_PER_CHAR - 1) // 16383
#define Svy_MAX_BYTES_LIST_ANSWER_TYPES (10 + (Svy_NUM_ANS_TYPES - 1) * (1 + 10)) #define Svy_MAX_BYTES_LIST_ANSWER_TYPES (Svy_NUM_ANS_TYPES * (Cns_MAX_DECIMAL_DIGITS_UINT + 1))
const char *Svy_StrAnswerTypesDB[Svy_NUM_ANS_TYPES] = const char *Svy_StrAnswerTypesDB[Svy_NUM_ANS_TYPES] =
{ {
@ -3688,9 +3688,9 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod)
unsigned NumQsts; unsigned NumQsts;
long QstCod; long QstCod;
char ParamName[3 + 10 + 6 + 1]; char ParamName[3 + 10 + 6 + 1];
char StrAnswersIndexes[Svy_MAX_ANSWERS_PER_QUESTION * (10 + 1)]; char StrAnswersIndexes[Svy_MAX_ANSWERS_PER_QUESTION * (Cns_MAX_DECIMAL_DIGITS_UINT + 1)];
const char *Ptr; const char *Ptr;
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
unsigned AnsInd; unsigned AnsInd;
/***** Get questions of this survey from database *****/ /***** Get questions of this survey from database *****/
@ -3720,11 +3720,11 @@ static void Svy_ReceiveAndStoreUserAnswersToASurvey (long SvyCod)
(unsigned) QstCod); (unsigned) QstCod);
// Lay_ShowAlert (Lay_INFO,ParamName); // Lay_ShowAlert (Lay_INFO,ParamName);
Par_GetParMultiToText (ParamName,StrAnswersIndexes, Par_GetParMultiToText (ParamName,StrAnswersIndexes,
Svy_MAX_ANSWERS_PER_QUESTION * (10 + 1)); Svy_MAX_ANSWERS_PER_QUESTION * (Cns_MAX_DECIMAL_DIGITS_UINT + 1));
Ptr = StrAnswersIndexes; Ptr = StrAnswersIndexes;
while (*Ptr) while (*Ptr)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,10); Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT);
if (sscanf (UnsignedStr,"%u",&AnsInd) == 1) if (sscanf (UnsignedStr,"%u",&AnsInd) == 1)
// Parameter exists ==> user has checked this answer // Parameter exists ==> user has checked this answer
// ==> store it in database // ==> store it in database

View File

@ -942,7 +942,7 @@ static void Syl_PutParamNumItem (void)
static void Syl_WriteNumItem (char *StrDst,FILE *FileTgt,int Level,int *CodItem) static void Syl_WriteNumItem (char *StrDst,FILE *FileTgt,int Level,int *CodItem)
{ {
int N; int N;
char InStr[1 + 10 + 1]; char InStr[Cns_MAX_DECIMAL_DIGITS_INT + 1];
if (StrDst) if (StrDst)
StrDst[0] = '\0'; StrDst[0] = '\0';

View File

@ -593,7 +593,7 @@ void Tst_AssessTest (void)
static void Tst_GetQuestionsAndAnswersFromForm (void) static void Tst_GetQuestionsAndAnswersFromForm (void)
{ {
unsigned NumQst; unsigned NumQst;
char StrQstIndOrAns[3 + 10 + 1]; // "Qstxx...x", "Indxx...x" or "Ansxx...x" char StrQstIndOrAns[3 + Cns_MAX_DECIMAL_DIGITS_UINT + 1]; // "Qstxx...x", "Indxx...x" or "Ansxx...x"
/***** Get questions and answers *****/ /***** Get questions and answers *****/
for (NumQst = 0; for (NumQst = 0;
@ -1885,7 +1885,7 @@ static void Tst_ShowFormConfigTst (void)
extern const char *Txt_Save_changes; extern const char *Txt_Save_changes;
Tst_Pluggable_t Pluggable; Tst_Pluggable_t Pluggable;
Tst_Feedback_t Feedback; Tst_Feedback_t Feedback;
char StrMinTimeNxtTstPerQst[20 + 1]; char StrMinTimeNxtTstPerQst[Cns_MAX_DECIMAL_DIGITS_ULONG + 1];
/***** Read test configuration from database *****/ /***** Read test configuration from database *****/
Tst_GetConfigTstFromDB (); Tst_GetConfigTstFromDB ();
@ -1957,7 +1957,7 @@ static void Tst_ShowFormConfigTst (void)
snprintf (StrMinTimeNxtTstPerQst,sizeof (StrMinTimeNxtTstPerQst), snprintf (StrMinTimeNxtTstPerQst,sizeof (StrMinTimeNxtTstPerQst),
"%lu", "%lu",
Gbl.Test.Config.MinTimeNxtTstPerQst); Gbl.Test.Config.MinTimeNxtTstPerQst);
HTM_INPUT_TEXT ("MinTimeNxtTstPerQst",7,StrMinTimeNxtTstPerQst,false, HTM_INPUT_TEXT ("MinTimeNxtTstPerQst",Cns_MAX_DECIMAL_DIGITS_ULONG,StrMinTimeNxtTstPerQst,false,
"size=\"7\" required=\"required\""); "size=\"7\" required=\"required\"");
HTM_TD_End (); HTM_TD_End ();
@ -2006,7 +2006,7 @@ static void Tst_ShowFormConfigTst (void)
static void Tst_PutInputFieldNumQst (const char *Field,const char *Label, static void Tst_PutInputFieldNumQst (const char *Field,const char *Label,
unsigned Value) unsigned Value)
{ {
char StrValue[10 + 1]; char StrValue[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -2020,7 +2020,7 @@ static void Tst_PutInputFieldNumQst (const char *Field,const char *Label,
snprintf (StrValue,sizeof (StrValue), snprintf (StrValue,sizeof (StrValue),
"%u", "%u",
Value); Value);
HTM_INPUT_TEXT (Field,3,StrValue,false, HTM_INPUT_TEXT (Field,Cns_MAX_DECIMAL_DIGITS_UINT,StrValue,false,
"size=\"3\" required=\"required\""); "size=\"3\" required=\"required\"");
HTM_TD_End (); HTM_TD_End ();
@ -2307,7 +2307,7 @@ static void Tst_ShowFormAnswerTypes (unsigned NumCols)
extern const char *Txt_TST_STR_ANSWER_TYPES[Tst_NUM_ANS_TYPES]; extern const char *Txt_TST_STR_ANSWER_TYPES[Tst_NUM_ANS_TYPES];
Tst_AnswerType_t AnsType; Tst_AnswerType_t AnsType;
bool Checked; bool Checked;
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
const char *Ptr; const char *Ptr;
HTM_TR_Begin (NULL); HTM_TR_Begin (NULL);
@ -2348,7 +2348,7 @@ static void Tst_ShowFormAnswerTypes (unsigned NumCols)
Ptr = Gbl.Test.ListAnsTypes; Ptr = Gbl.Test.ListAnsTypes;
while (*Ptr) while (*Ptr)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,10); Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT);
if (Tst_ConvertFromUnsignedStrToAnsTyp (UnsignedStr) == AnsType) if (Tst_ConvertFromUnsignedStrToAnsTyp (UnsignedStr) == AnsType)
{ {
Checked = true; Checked = true;
@ -2453,10 +2453,10 @@ static unsigned long Tst_GetQuestions (MYSQL_RES **mysql_res)
unsigned NumItemInList; unsigned NumItemInList;
const char *Ptr; const char *Ptr;
char TagText[Tst_MAX_BYTES_TAG + 1]; char TagText[Tst_MAX_BYTES_TAG + 1];
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
Tst_AnswerType_t AnsType; Tst_AnswerType_t AnsType;
char CrsCodStr[1 + 10 + 1]; char CrsCodStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = (char *) malloc (Tst_MAX_BYTES_QUERY_TEST + 1)) == NULL) if ((Query = (char *) malloc (Tst_MAX_BYTES_QUERY_TEST + 1)) == NULL)
@ -2621,9 +2621,9 @@ static unsigned long Tst_GetQuestionsForTest (MYSQL_RES **mysql_res)
unsigned NumItemInList; unsigned NumItemInList;
const char *Ptr; const char *Ptr;
char TagText[Tst_MAX_BYTES_TAG + 1]; char TagText[Tst_MAX_BYTES_TAG + 1];
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
Tst_AnswerType_t AnsType; Tst_AnswerType_t AnsType;
char StrNumQsts[10 + 1]; char StrNumQsts[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Allocate space for query *****/ /***** Allocate space for query *****/
if ((Query = (char *) malloc (Tst_MAX_BYTES_QUERY_TEST + 1)) == NULL) if ((Query = (char *) malloc (Tst_MAX_BYTES_QUERY_TEST + 1)) == NULL)
@ -3980,14 +3980,14 @@ void Tst_GetIndexesFromStr (const char StrIndexesOneQst[Tst_MAX_BYTES_INDEXES_ON
{ {
unsigned NumOpt; unsigned NumOpt;
const char *Ptr; const char *Ptr;
char StrOneIndex[10 + 1]; char StrOneIndex[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Get indexes from string *****/ /***** Get indexes from string *****/
for (NumOpt = 0, Ptr = StrIndexesOneQst; for (NumOpt = 0, Ptr = StrIndexesOneQst;
NumOpt < Tst_MAX_OPTIONS_PER_QUESTION && *Ptr; NumOpt < Tst_MAX_OPTIONS_PER_QUESTION && *Ptr;
NumOpt++) NumOpt++)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,StrOneIndex,10); Par_GetNextStrUntilSeparParamMult (&Ptr,StrOneIndex,Cns_MAX_DECIMAL_DIGITS_UINT);
if (sscanf (StrOneIndex,"%u",&(Indexes[NumOpt])) != 1) if (sscanf (StrOneIndex,"%u",&(Indexes[NumOpt])) != 1)
Lay_ShowErrorAndExit ("Wrong index of answer."); Lay_ShowErrorAndExit ("Wrong index of answer.");
@ -4012,7 +4012,7 @@ void Tst_GetAnswersFromStr (const char StrAnswersOneQst[Tst_MAX_BYTES_ANSWERS_ON
{ {
unsigned NumOpt; unsigned NumOpt;
const char *Ptr; const char *Ptr;
char StrOneAnswer[10 + 1]; char StrOneAnswer[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
unsigned AnsUsr; unsigned AnsUsr;
/***** Initialize all answers to false *****/ /***** Initialize all answers to false *****/
@ -4026,7 +4026,7 @@ void Tst_GetAnswersFromStr (const char StrAnswersOneQst[Tst_MAX_BYTES_ANSWERS_ON
NumOpt < Tst_MAX_OPTIONS_PER_QUESTION && *Ptr; NumOpt < Tst_MAX_OPTIONS_PER_QUESTION && *Ptr;
NumOpt++) NumOpt++)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,StrOneAnswer,10); Par_GetNextStrUntilSeparParamMult (&Ptr,StrOneAnswer,Cns_MAX_DECIMAL_DIGITS_UINT);
if (sscanf (StrOneAnswer,"%u",&AnsUsr) != 1) if (sscanf (StrOneAnswer,"%u",&AnsUsr) != 1)
Lay_ShowErrorAndExit ("Bad user's answer."); Lay_ShowErrorAndExit ("Bad user's answer.");
@ -4837,7 +4837,7 @@ static bool Tst_GetParamsTst (Tst_ActionToDoWithQuestions_t ActionToDoWithQuesti
extern const char *Txt_You_must_select_one_ore_more_types_of_answer; extern const char *Txt_You_must_select_one_ore_more_types_of_answer;
extern const char *Txt_The_number_of_questions_must_be_in_the_interval_X; extern const char *Txt_The_number_of_questions_must_be_in_the_interval_X;
bool Error = false; bool Error = false;
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
unsigned UnsignedNum; unsigned UnsignedNum;
/***** Tags *****/ /***** Tags *****/
@ -4903,7 +4903,7 @@ static bool Tst_GetParamsTst (Tst_ActionToDoWithQuestions_t ActionToDoWithQuesti
Dat_GetIniEndDatesFromForm (); Dat_GetIniEndDatesFromForm ();
/* Get ordering criteria */ /* Get ordering criteria */
Par_GetParMultiToText ("Order",UnsignedStr,10); Par_GetParMultiToText ("Order",UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT);
if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1) if (sscanf (UnsignedStr,"%u",&UnsignedNum) == 1)
Gbl.Test.SelectedOrder = (Tst_QuestionsOrder_t) ((UnsignedNum < Tst_NUM_TYPES_ORDER_QST) ? UnsignedNum : Gbl.Test.SelectedOrder = (Tst_QuestionsOrder_t) ((UnsignedNum < Tst_NUM_TYPES_ORDER_QST) ? UnsignedNum :
0); 0);
@ -4992,13 +4992,13 @@ static int Tst_CountNumAnswerTypesInList (void)
{ {
const char *Ptr; const char *Ptr;
int NumAnsTypes = 0; int NumAnsTypes = 0;
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Go over the list Gbl.Test.ListAnsTypes counting the number of types of answer *****/ /***** Go over the list Gbl.Test.ListAnsTypes counting the number of types of answer *****/
Ptr = Gbl.Test.ListAnsTypes; Ptr = Gbl.Test.ListAnsTypes;
while (*Ptr) while (*Ptr)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,10); Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT);
Tst_ConvertFromUnsignedStrToAnsTyp (UnsignedStr); Tst_ConvertFromUnsignedStrToAnsTyp (UnsignedStr);
NumAnsTypes++; NumAnsTypes++;
} }
@ -5087,8 +5087,8 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
bool OptionsDisabled; bool OptionsDisabled;
bool AnswerHasContent; bool AnswerHasContent;
bool DisplayRightColumn; bool DisplayRightColumn;
char StrTagTxt[6 + 10 + 1]; char StrTagTxt[6 + Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrInteger[20 + 1]; char StrInteger[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
/***** Begin box *****/ /***** Begin box *****/
if (Gbl.Test.QstCod > 0) // The question already has assigned a code if (Gbl.Test.QstCod > 0) // The question already has assigned a code
@ -5269,7 +5269,7 @@ static void Tst_PutFormEditOneQst (char Stem[Cns_MAX_BYTES_TEXT + 1],
snprintf (StrInteger,sizeof (StrInteger), snprintf (StrInteger,sizeof (StrInteger),
"%ld", "%ld",
Gbl.Test.Answer.Integer); Gbl.Test.Answer.Integer);
HTM_INPUT_TEXT ("AnsInt",11,StrInteger,false, HTM_INPUT_TEXT ("AnsInt",Cns_MAX_DECIMAL_DIGITS_LONG,StrInteger,false,
"size=\"11\" required=\"required\"%s", "size=\"11\" required=\"required\"%s",
Gbl.Test.AnswerType == Tst_ANS_INT ? "" : Gbl.Test.AnswerType == Tst_ANS_INT ? "" :
" disabled=\"disabled\""); " disabled=\"disabled\"");
@ -5907,10 +5907,10 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
unsigned NumTag; unsigned NumTag;
unsigned NumTagRead; unsigned NumTagRead;
unsigned NumOpt; unsigned NumOpt;
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char TagStr[6 + 10 + 1]; char TagStr[6 + Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char AnsStr[6 + 10 + 1]; char AnsStr[6 + Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char FbStr[5 + 10 + 1]; char FbStr[5 + Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char StrMultiAns[Tst_MAX_BYTES_ANSWERS_ONE_QST + 1]; char StrMultiAns[Tst_MAX_BYTES_ANSWERS_ONE_QST + 1];
char TF[1 + 1]; // (T)rue or (F)alse char TF[1 + 1]; // (T)rue or (F)alse
const char *Ptr; const char *Ptr;
@ -5978,7 +5978,8 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
/* Abort on error */ /* Abort on error */
Ale_ShowAlertsAndExit (); Ale_ShowAlertsAndExit ();
Par_GetParToText ("AnsInt",Gbl.Test.Answer.Options[0].Text,1 + 10); Par_GetParToText ("AnsInt",Gbl.Test.Answer.Options[0].Text,
Cns_MAX_DECIMAL_DIGITS_LONG);
break; break;
case Tst_ANS_FLOAT: case Tst_ANS_FLOAT:
if (!Tst_AllocateTextChoiceAnswer (0)) if (!Tst_AllocateTextChoiceAnswer (0))
@ -6063,7 +6064,7 @@ static void Tst_GetQstFromForm (char *Stem,char *Feedback)
Ptr = StrMultiAns; Ptr = StrMultiAns;
while (*Ptr) while (*Ptr)
{ {
Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,10); Par_GetNextStrUntilSeparParamMult (&Ptr,UnsignedStr,Cns_MAX_DECIMAL_DIGITS_UINT);
if (sscanf (UnsignedStr,"%u",&NumCorrectAns) != 1) if (sscanf (UnsignedStr,"%u",&NumCorrectAns) != 1)
Lay_ShowErrorAndExit ("Wrong selected answer."); Lay_ShowErrorAndExit ("Wrong selected answer.");
if (NumCorrectAns >= Tst_MAX_OPTIONS_PER_QUESTION) if (NumCorrectAns >= Tst_MAX_OPTIONS_PER_QUESTION)

View File

@ -98,7 +98,7 @@ struct Tst_Config
}; };
#define Tst_NUM_ANS_TYPES 6 #define Tst_NUM_ANS_TYPES 6
#define Tst_MAX_BYTES_LIST_ANSWER_TYPES (10 + (Tst_NUM_ANS_TYPES - 1) * (1 + 10)) #define Tst_MAX_BYTES_LIST_ANSWER_TYPES (Tst_NUM_ANS_TYPES * (Cns_MAX_DECIMAL_DIGITS_UINT + 1))
typedef enum typedef enum
{ {
Tst_ANS_INT = 0, Tst_ANS_INT = 0,

View File

@ -2918,7 +2918,7 @@ static void TL_PutFormToSeeAllSharersNote (const struct TL_Note *SocNot,
TL_HowMany_t HowMany) TL_HowMany_t HowMany)
{ {
extern const char *Txt_View_all_USERS; extern const char *Txt_View_all_USERS;
char ParamCod[6 + 1 + 10 + 1]; char ParamCod[7 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
switch (HowMany) switch (HowMany)
{ {
@ -2937,7 +2937,7 @@ static void TL_PutFormToSeeAllSharersNote (const struct TL_Note *SocNot,
static void TL_PutFormToShaNote (const struct TL_Note *SocNot) static void TL_PutFormToShaNote (const struct TL_Note *SocNot)
{ {
extern const char *Txt_Share; extern const char *Txt_Share;
char ParamCod[6 + 1 + 10 + 1]; char ParamCod[7 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Form and icon to mark note as favourite *****/ /***** Form and icon to mark note as favourite *****/
sprintf (ParamCod,"NotCod=%ld",SocNot->NotCod); sprintf (ParamCod,"NotCod=%ld",SocNot->NotCod);
@ -2948,7 +2948,7 @@ static void TL_PutFormToShaNote (const struct TL_Note *SocNot)
static void TL_PutFormToUnsNote (const struct TL_Note *SocNot) static void TL_PutFormToUnsNote (const struct TL_Note *SocNot)
{ {
extern const char *Txt_TIMELINE_NOTE_Shared; extern const char *Txt_TIMELINE_NOTE_Shared;
char ParamCod[6 + 1 + 10 + 1]; char ParamCod[7 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Form and icon to mark note as favourite *****/ /***** Form and icon to mark note as favourite *****/
sprintf (ParamCod,"NotCod=%ld",SocNot->NotCod); sprintf (ParamCod,"NotCod=%ld",SocNot->NotCod);
@ -2964,7 +2964,7 @@ static void TL_PutFormToSeeAllFaversNote (const struct TL_Note *SocNot,
TL_HowMany_t HowMany) TL_HowMany_t HowMany)
{ {
extern const char *Txt_View_all_USERS; extern const char *Txt_View_all_USERS;
char ParamCod[6 + 1 + 10 + 1]; char ParamCod[7 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
switch (HowMany) switch (HowMany)
{ {
@ -2983,7 +2983,7 @@ static void TL_PutFormToSeeAllFaversNote (const struct TL_Note *SocNot,
static void TL_PutFormToFavNote (const struct TL_Note *SocNot) static void TL_PutFormToFavNote (const struct TL_Note *SocNot)
{ {
extern const char *Txt_Mark_as_favourite; extern const char *Txt_Mark_as_favourite;
char ParamCod[6 + 1 + 10 + 1]; char ParamCod[7 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Form and icon to mark note as favourite *****/ /***** Form and icon to mark note as favourite *****/
sprintf (ParamCod,"NotCod=%ld",SocNot->NotCod); sprintf (ParamCod,"NotCod=%ld",SocNot->NotCod);
@ -2994,7 +2994,7 @@ static void TL_PutFormToFavNote (const struct TL_Note *SocNot)
static void TL_PutFormToUnfNote (const struct TL_Note *SocNot) static void TL_PutFormToUnfNote (const struct TL_Note *SocNot)
{ {
extern const char *Txt_TIMELINE_NOTE_Favourite; extern const char *Txt_TIMELINE_NOTE_Favourite;
char ParamCod[6 + 1 + 10 + 1]; char ParamCod[7 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Form and icon to unfav (remove mark as favourite) note *****/ /***** Form and icon to unfav (remove mark as favourite) note *****/
sprintf (ParamCod,"NotCod=%ld",SocNot->NotCod); sprintf (ParamCod,"NotCod=%ld",SocNot->NotCod);
@ -3010,7 +3010,7 @@ static void TL_PutFormToSeeAllFaversComment (const struct TL_Comment *SocCom,
TL_HowMany_t HowMany) TL_HowMany_t HowMany)
{ {
extern const char *Txt_View_all_USERS; extern const char *Txt_View_all_USERS;
char ParamCod[6 + 1 + 10 + 1]; char ParamCod[7 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
switch (HowMany) switch (HowMany)
{ {
@ -3029,7 +3029,7 @@ static void TL_PutFormToSeeAllFaversComment (const struct TL_Comment *SocCom,
static void TL_PutFormToFavComment (const struct TL_Comment *SocCom) static void TL_PutFormToFavComment (const struct TL_Comment *SocCom)
{ {
extern const char *Txt_Mark_as_favourite; extern const char *Txt_Mark_as_favourite;
char ParamCod[6 + 1 + 10 + 1]; char ParamCod[7 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Form and icon to mark comment as favourite *****/ /***** Form and icon to mark comment as favourite *****/
sprintf (ParamCod,"PubCod=%ld",SocCom->PubCod); sprintf (ParamCod,"PubCod=%ld",SocCom->PubCod);
@ -3040,7 +3040,7 @@ static void TL_PutFormToFavComment (const struct TL_Comment *SocCom)
static void TL_PutFormToUnfComment (const struct TL_Comment *SocCom) static void TL_PutFormToUnfComment (const struct TL_Comment *SocCom)
{ {
extern const char *Txt_TIMELINE_NOTE_Favourite; extern const char *Txt_TIMELINE_NOTE_Favourite;
char ParamCod[6 + 1 + 10 + 1]; char ParamCod[7 + Cns_MAX_DECIMAL_DIGITS_LONG + 1];
/***** Form and icon to unfav (remove mark as favourite) comment *****/ /***** Form and icon to unfav (remove mark as favourite) comment *****/
sprintf (ParamCod,"PubCod=%ld",SocCom->PubCod); sprintf (ParamCod,"PubCod=%ld",SocCom->PubCod);

View File

@ -1103,12 +1103,12 @@ unsigned Usr_GetNumCrssOfUsrWithARoleNotAccepted (long UsrCod,Rol_Role_t Role)
/****** Get number of users with some given roles in courses of a user *******/ /****** Get number of users with some given roles in courses of a user *******/
/*****************************************************************************/ /*****************************************************************************/
#define Usr_MAX_BYTES_ROLES_STR (Rol_NUM_ROLES * (10 + 1)) #define Usr_MAX_BYTES_ROLES_STR (Rol_NUM_ROLES * (Cns_MAX_DECIMAL_DIGITS_UINT + 1))
unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole, unsigned Usr_GetNumUsrsInCrssOfAUsr (long UsrCod,Rol_Role_t UsrRole,
unsigned OthersRoles) unsigned OthersRoles)
{ {
Rol_Role_t Role; Rol_Role_t Role;
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char OthersRolesStr[Usr_MAX_BYTES_ROLES_STR + 1]; char OthersRolesStr[Usr_MAX_BYTES_ROLES_STR + 1];
char SubQueryRole[64]; char SubQueryRole[64];
unsigned NumUsrs; unsigned NumUsrs;
@ -4427,7 +4427,7 @@ static void Usr_BuildQueryToGetUsrsLstCrs (char **Query,Rol_Role_t Role)
{ {
unsigned NumPositiveCods = 0; unsigned NumPositiveCods = 0;
unsigned NumNegativeCods = 0; unsigned NumNegativeCods = 0;
char LongStr[1 + 10 + 1]; char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
unsigned NumGrpSel; unsigned NumGrpSel;
long GrpCod; long GrpCod;
unsigned NumGrpTyp; unsigned NumGrpTyp;
@ -9052,7 +9052,7 @@ unsigned Usr_GetTotalNumberOfUsersInPlatform (void)
unsigned Usr_GetTotalNumberOfUsersInCourses (Hie_Level_t Scope,unsigned Roles) unsigned Usr_GetTotalNumberOfUsersInCourses (Hie_Level_t Scope,unsigned Roles)
{ {
char UnsignedStr[10 + 1]; char UnsignedStr[Cns_MAX_DECIMAL_DIGITS_UINT + 1];
char SubQueryRoles[Usr_MAX_BYTES_SUBQUERY_ROLES + 1]; char SubQueryRoles[Usr_MAX_BYTES_SUBQUERY_ROLES + 1];
bool AnyUserInCourses; bool AnyUserInCourses;
Rol_Role_t Role; Rol_Role_t Role;