Version 20.32: Feb 15, 2021 Fixed bugs in copy of strings.

This commit is contained in:
acanas 2021-02-15 22:49:44 +01:00
parent 8ce0f8c6b5
commit 3ca6d7a706
42 changed files with 397 additions and 498 deletions

View File

@ -225,8 +225,8 @@ static int API_RemoveOldWSKeys (struct soap *soap);
static int API_GetCurrentDegCodFromCurrentCrsCod (void);
static bool API_GetSomeUsrDataFromUsrCod (struct UsrData *UsrDat,long CrsCod);
static int API_CheckParamsNewAccount (char *NewNickWithArroba, // Input
char NewNickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1], // Output
static int API_CheckParamsNewAccount (char *NewNickWithArr, // Input
char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1], // Output
char *NewEmail, // Input-output
char *NewPlainPassword, // Input
char *NewEncryptedPassword); // Output
@ -619,7 +619,11 @@ static bool API_GetSomeUsrDataFromUsrCod (struct UsrData *UsrDat,long CrsCod)
/***** Get some user's data *****/
if (DB_QuerySELECT (&mysql_res,"can not get user's data",
"SELECT Surname1,Surname2,FirstName,Photo,DATE_FORMAT(Birthday,'%%Y%%m%%d')"
"SELECT Surname1," // row[0]
"Surname2," // row[1]
"FirstName," // row[2]
"Photo," // row[3]
"DATE_FORMAT(Birthday,'%%Y%%m%%d')" // row[4]
" FROM usr_data WHERE UsrCod=%ld",
UsrDat->UsrCod) != 1)
return false;
@ -627,15 +631,13 @@ static bool API_GetSomeUsrDataFromUsrCod (struct UsrData *UsrDat,long CrsCod)
/* Read some user's data */
row = mysql_fetch_row (mysql_res);
/* Get user's name */
/* Get user's name (row[0], row[1], row[2]) and photo (row[3]) */
Str_Copy (UsrDat->Surname1,row[0],sizeof (UsrDat->Surname1) - 1);
Str_Copy (UsrDat->Surname2,row[1],sizeof (UsrDat->Surname2) - 1);
Str_Copy (UsrDat->FrstName,row[2],sizeof (UsrDat->FrstName) - 1);
/* Get user's photo */
Str_Copy (UsrDat->Photo ,row[3],sizeof (UsrDat->Photo ) - 1);
/* Get user's brithday */
/* Get user's brithday (row[4]) */
Dat_GetDateFromYYYYMMDD (&(UsrDat->Birthday),row[4]);
/* Free structure that stores the query result */
@ -734,7 +736,7 @@ int swad__createAccount (struct soap *soap,
char *userNickname,char *userEmail,char *userPassword,char *appKey, // input
struct swad__createAccountOutput *createAccountOut) // output
{
char NewNickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
char NewEncryptedPassword[Pwd_BYTES_ENCRYPTED_PASSWORD + 1];
int Result;
int ReturnCode;
@ -744,7 +746,7 @@ int swad__createAccount (struct soap *soap,
Gbl.WebService.Function = API_createAccount;
/***** Allocate space for strings *****/
createAccountOut->wsKey = (char *) soap_malloc (soap,API_BYTES_WS_KEY + 1);
createAccountOut->wsKey = soap_malloc (soap,API_BYTES_WS_KEY + 1);
/***** Default values returned on error *****/
createAccountOut->userCode = 0; // Undefined error
@ -756,7 +758,7 @@ int swad__createAccount (struct soap *soap,
/***** Check parameters used to create the new account *****/
Result = API_CheckParamsNewAccount (userNickname, // Input
NewNickWithoutArroba,// Output
NewNickWithoutArr,// Output
userEmail, // Input-output
userPassword, // Input
NewEncryptedPassword); // Output
@ -779,8 +781,8 @@ int swad__createAccount (struct soap *soap,
true); // I am creating my own account
/***** Save nickname *****/
Nck_UpdateNickInDB (Gbl.Usrs.Me.UsrDat.UsrCod,NewNickWithoutArroba);
Str_Copy (Gbl.Usrs.Me.UsrDat.Nickname,NewNickWithoutArroba,
Nck_UpdateNickInDB (Gbl.Usrs.Me.UsrDat.UsrCod,NewNickWithoutArr);
Str_Copy (Gbl.Usrs.Me.UsrDat.Nickname,NewNickWithoutArr,
sizeof (Gbl.Usrs.Me.UsrDat.Nickname) - 1);
/***** Save email *****/
@ -806,26 +808,25 @@ int swad__createAccount (struct soap *soap,
/*****************************************************************************/
// Return false on error
//char *userNickname,char *userEmail,char *userID,char *userPassword
static int API_CheckParamsNewAccount (char *NewNickWithArroba, // Input
char NewNickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1], // Output
static int API_CheckParamsNewAccount (char *NewNickWithArr, // Input
char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1], // Output
char *NewEmail, // Input-output
char *NewPlainPassword, // Input
char *NewEncryptedPassword) // Output
{
/***** Step 1/3: Check new nickname *****/
/* Make a copy without possible starting arrobas */
Str_Copy (NewNickWithoutArroba,NewNickWithArroba,
Nck_MAX_BYTES_NICKNAME_FROM_FORM);
if (Nck_CheckIfNickWithArrobaIsValid (NewNickWithArroba)) // If new nickname is valid
Str_Copy (NewNickWithoutArr,NewNickWithArr,Nck_MAX_BYTES_NICK_FROM_FORM);
if (Nck_CheckIfNickWithArrIsValid (NewNickWithArr)) // If new nickname is valid
{
/***** Remove arrobas at the beginning *****/
Str_RemoveLeadingArrobas (NewNickWithoutArroba);
Str_RemoveLeadingArrobas (NewNickWithoutArr);
/***** Check if the new nickname matches any of the nicknames of other users *****/
if (DB_QueryCOUNT ("can not check if nickname already existed",
"SELECT COUNT(*) FROM usr_nicknames"
" WHERE Nickname='%s'",
NewNickWithoutArroba)) // A nickname of another user is the same that this nickname
NewNickWithoutArr)) // A nickname of another user is the same that this nickname
return API_CHECK_NEW_ACCOUNT_NICKNAME_REGISTERED_BY_ANOTHER_USER;
}
else // New nickname is not valid
@ -873,14 +874,14 @@ int swad__loginByUserPasswordKey (struct soap *soap,
Gbl.WebService.Function = API_loginByUserPasswordKey;
/***** Allocate space for strings *****/
loginByUserPasswordKeyOut->wsKey = (char *) soap_malloc (soap,API_BYTES_WS_KEY + 1);
loginByUserPasswordKeyOut->userNickname = (char *) soap_malloc (soap,Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1);
loginByUserPasswordKeyOut->userID = (char *) soap_malloc (soap,ID_MAX_BYTES_USR_ID + 1);
loginByUserPasswordKeyOut->userFirstname = (char *) soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginByUserPasswordKeyOut->userSurname1 = (char *) soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginByUserPasswordKeyOut->userSurname2 = (char *) soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginByUserPasswordKeyOut->userPhoto = (char *) soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
loginByUserPasswordKeyOut->userBirthday = (char *) soap_malloc (soap,Dat_LENGTH_YYYYMMDD + 1);
loginByUserPasswordKeyOut->wsKey = soap_malloc (soap,API_BYTES_WS_KEY + 1);
loginByUserPasswordKeyOut->userNickname = soap_malloc (soap,Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1);
loginByUserPasswordKeyOut->userID = soap_malloc (soap,ID_MAX_BYTES_USR_ID + 1);
loginByUserPasswordKeyOut->userFirstname = soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginByUserPasswordKeyOut->userSurname1 = soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginByUserPasswordKeyOut->userSurname2 = soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginByUserPasswordKeyOut->userPhoto = soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
loginByUserPasswordKeyOut->userBirthday = soap_malloc (soap,Dat_LENGTH_YYYYMMDD + 1);
/***** Default values returned on error *****/
loginByUserPasswordKeyOut->userCode = -1;
@ -901,7 +902,7 @@ int swad__loginByUserPasswordKey (struct soap *soap,
/***** Check if user's email, @nickname or ID are valid *****/
Str_Copy (UsrIDNickOrEmail,userID,sizeof (UsrIDNickOrEmail) - 1);
if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname
if (Nck_CheckIfNickWithArrIsValid (UsrIDNickOrEmail)) // 1: It's a nickname
{
Str_RemoveLeadingArrobas (UsrIDNickOrEmail);
@ -977,8 +978,7 @@ int swad__loginByUserPasswordKey (struct soap *soap,
loginByUserPasswordKeyOut->userCode = (int) Gbl.Usrs.Me.UsrDat.UsrCod;
Str_Copy (loginByUserPasswordKeyOut->userNickname,
Gbl.Usrs.Me.UsrDat.Nickname,
Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA);
Gbl.Usrs.Me.UsrDat.Nickname,Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
if (Gbl.Usrs.Me.UsrDat.IDs.Num)
Str_Copy (loginByUserPasswordKeyOut->userID,
@ -986,24 +986,20 @@ int swad__loginByUserPasswordKey (struct soap *soap,
ID_MAX_BYTES_USR_ID);
Str_Copy (loginByUserPasswordKeyOut->userSurname1,
Gbl.Usrs.Me.UsrDat.Surname1,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Gbl.Usrs.Me.UsrDat.Surname1,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Str_Copy (loginByUserPasswordKeyOut->userSurname2,
Gbl.Usrs.Me.UsrDat.Surname2,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Gbl.Usrs.Me.UsrDat.Surname2,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Str_Copy (loginByUserPasswordKeyOut->userFirstname,
Gbl.Usrs.Me.UsrDat.FrstName,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Gbl.Usrs.Me.UsrDat.FrstName,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Pho_BuildLinkToPhoto (&Gbl.Usrs.Me.UsrDat,PhotoURL);
Str_Copy (loginByUserPasswordKeyOut->userPhoto,PhotoURL,
Cns_MAX_BYTES_WWW);
Str_Copy (loginByUserPasswordKeyOut->userPhoto,PhotoURL,Cns_MAX_BYTES_WWW);
Str_Copy (loginByUserPasswordKeyOut->userBirthday,
Gbl.Usrs.Me.UsrDat.Birthday.YYYYMMDD,
Dat_LENGTH_YYYYMMDD);
Gbl.Usrs.Me.UsrDat.Birthday.YYYYMMDD,Dat_LENGTH_YYYYMMDD);
loginByUserPasswordKeyOut->userRole = API_RolRole_to_SvcRole[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role];
loginByUserPasswordKeyOut->userRole =
API_RolRole_to_SvcRole[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role];
/***** Generate a key used in subsequents calls to other web services *****/
return API_GenerateNewWSKey (soap,
@ -1046,16 +1042,16 @@ int swad__loginBySessionKey (struct soap *soap,
Gbl.WebService.Function = API_loginBySessionKey;
/***** Allocate space for strings *****/
loginBySessionKeyOut->wsKey = (char *) soap_malloc (soap,API_BYTES_WS_KEY + 1);
loginBySessionKeyOut->userNickname = (char *) soap_malloc (soap,Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1);
loginBySessionKeyOut->userID = (char *) soap_malloc (soap,ID_MAX_BYTES_USR_ID + 1);
loginBySessionKeyOut->userFirstname = (char *) soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginBySessionKeyOut->userSurname1 = (char *) soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginBySessionKeyOut->userSurname2 = (char *) soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginBySessionKeyOut->userPhoto = (char *) soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
loginBySessionKeyOut->userBirthday = (char *) soap_malloc (soap,Dat_LENGTH_YYYYMMDD + 1);
loginBySessionKeyOut->degreeName = (char *) soap_malloc (soap,Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1);
loginBySessionKeyOut->courseName = (char *) soap_malloc (soap,Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1);
loginBySessionKeyOut->wsKey = soap_malloc (soap,API_BYTES_WS_KEY + 1);
loginBySessionKeyOut->userNickname = soap_malloc (soap,Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1);
loginBySessionKeyOut->userID = soap_malloc (soap,ID_MAX_BYTES_USR_ID + 1);
loginBySessionKeyOut->userFirstname = soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginBySessionKeyOut->userSurname1 = soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginBySessionKeyOut->userSurname2 = soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
loginBySessionKeyOut->userPhoto = soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
loginBySessionKeyOut->userBirthday = soap_malloc (soap,Dat_LENGTH_YYYYMMDD + 1);
loginBySessionKeyOut->degreeName = soap_malloc (soap,Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1);
loginBySessionKeyOut->courseName = soap_malloc (soap,Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1);
/***** Default values returned on error *****/
loginBySessionKeyOut->userCode = -1;
@ -1135,7 +1131,7 @@ int swad__loginBySessionKey (struct soap *soap,
loginBySessionKeyOut->userCode = (int) Gbl.Usrs.Me.UsrDat.UsrCod;
Str_Copy (loginBySessionKeyOut->userNickname,Gbl.Usrs.Me.UsrDat.Nickname,
Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA);
Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
if (Gbl.Usrs.Me.UsrDat.IDs.Num)
Str_Copy (loginBySessionKeyOut->userID,
@ -1143,21 +1139,17 @@ int swad__loginBySessionKey (struct soap *soap,
ID_MAX_BYTES_USR_ID);
Str_Copy (loginBySessionKeyOut->userSurname1,
Gbl.Usrs.Me.UsrDat.Surname1,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Gbl.Usrs.Me.UsrDat.Surname1,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Str_Copy (loginBySessionKeyOut->userSurname2,
Gbl.Usrs.Me.UsrDat.Surname2,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Gbl.Usrs.Me.UsrDat.Surname2,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Str_Copy (loginBySessionKeyOut->userFirstname,
Gbl.Usrs.Me.UsrDat.FrstName,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Gbl.Usrs.Me.UsrDat.FrstName,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Pho_BuildLinkToPhoto (&Gbl.Usrs.Me.UsrDat,PhotoURL);
Str_Copy (loginBySessionKeyOut->userPhoto,PhotoURL,Cns_MAX_BYTES_WWW);
Str_Copy (loginBySessionKeyOut->userBirthday,
Gbl.Usrs.Me.UsrDat.Birthday.YYYYMMDD,
Dat_LENGTH_YYYYMMDD);
Gbl.Usrs.Me.UsrDat.Birthday.YYYYMMDD,Dat_LENGTH_YYYYMMDD);
loginBySessionKeyOut->userRole = API_RolRole_to_SvcRole[Gbl.Usrs.Me.UsrDat.Roles.InCurrentCrs.Role];
@ -1268,7 +1260,7 @@ int swad__getNewPassword (struct soap *soap,
/***** Check if user's email, @nickname or ID are valid *****/
Str_Copy (UsrIDNickOrEmail,userID,sizeof (UsrIDNickOrEmail) - 1);
if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname
if (Nck_CheckIfNickWithArrIsValid (UsrIDNickOrEmail)) // 1: It's a nickname
{
Str_RemoveLeadingArrobas (UsrIDNickOrEmail);
@ -1405,13 +1397,13 @@ int swad__getCourses (struct soap *soap,
/* Get course short name (row[1]) */
getCoursesOut->coursesArray.__ptr[NumRow].courseShortName =
(char *) soap_malloc (soap,Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1);
soap_malloc (soap,Cns_HIERARCHY_MAX_BYTES_SHRT_NAME + 1);
Str_Copy (getCoursesOut->coursesArray.__ptr[NumRow].courseShortName,
row[1],Cns_HIERARCHY_MAX_BYTES_SHRT_NAME);
/* Get course full name (row[2]) */
getCoursesOut->coursesArray.__ptr[NumRow].courseFullName =
(char *) soap_malloc (soap,Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1);
soap_malloc (soap,Cns_HIERARCHY_MAX_BYTES_FULL_NAME + 1);
Str_Copy (getCoursesOut->coursesArray.__ptr[NumRow].courseFullName,
row[2],Cns_HIERARCHY_MAX_BYTES_FULL_NAME);
@ -1522,7 +1514,7 @@ int swad__getCourseInfo (struct soap *soap,
Gbl.Crs.Info.Type,
&InfoSrc,&MustBeRead);
Length = strlen (NamesInWSForInfoSrc[InfoSrc]);
getCourseInfo->infoSrc = (char *) soap_malloc (soap,Length + 1);
getCourseInfo->infoSrc = soap_malloc (soap,Length + 1);
Str_Copy (getCourseInfo->infoSrc,NamesInWSForInfoSrc[InfoSrc],Length);
/***** Get info text *****/
@ -1550,7 +1542,7 @@ int swad__getCourseInfo (struct soap *soap,
Result = API_WritePageIntoHTMLBuffer (soap,&(getCourseInfo->infoTxt));
break;
case Inf_INFO_SRC_URL: // Link to a web page
getCourseInfo->infoTxt = (char *) soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
getCourseInfo->infoTxt = soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
Inf_WriteURLIntoTxtBuffer (getCourseInfo->infoTxt);
break;
}
@ -1558,7 +1550,7 @@ int swad__getCourseInfo (struct soap *soap,
/***** Return empty text if pointer is null *****/
if (getCourseInfo->infoTxt == NULL)
{
getCourseInfo->infoTxt = (char *) soap_malloc (soap,1);
getCourseInfo->infoTxt = soap_malloc (soap,1);
getCourseInfo->infoTxt[0] = '\0';
}
@ -2134,7 +2126,7 @@ int swad__getGroupTypes (struct soap *soap,
/* Get group type name (row[1]) */
getGroupTypesOut->groupTypesArray.__ptr[NumRow].groupTypeName =
(char *) soap_malloc (soap,Grp_MAX_BYTES_GROUP_TYPE_NAME + 1);
soap_malloc (soap,Grp_MAX_BYTES_GROUP_TYPE_NAME + 1);
Str_Copy (getGroupTypesOut->groupTypesArray.__ptr[NumRow].groupTypeName,
row[1],Grp_MAX_BYTES_GROUP_TYPE_NAME);
@ -2257,7 +2249,7 @@ int swad__getGroups (struct soap *soap,
/* Get group type name (row[1]) */
getGroupsOut->groupsArray.__ptr[NumRow].groupTypeName =
(char *) soap_malloc (soap,Grp_MAX_BYTES_GROUP_TYPE_NAME + 1);
soap_malloc (soap,Grp_MAX_BYTES_GROUP_TYPE_NAME + 1);
Str_Copy (getGroupsOut->groupsArray.__ptr[NumRow].groupTypeName,row[1],
Grp_MAX_BYTES_GROUP_TYPE_NAME);
@ -2267,7 +2259,7 @@ int swad__getGroups (struct soap *soap,
/* Get group name (row[3]) */
getGroupsOut->groupsArray.__ptr[NumRow].groupName =
(char *) soap_malloc (soap,Grp_MAX_BYTES_GROUP_NAME + 1);
soap_malloc (soap,Grp_MAX_BYTES_GROUP_NAME + 1);
Str_Copy (getGroupsOut->groupsArray.__ptr[NumRow].groupName,row[3],
Grp_MAX_BYTES_GROUP_NAME);
@ -2429,7 +2421,7 @@ int swad__sendMyGroups (struct soap *soap,
/* Get group type name (row[1]) */
SendMyGroupsOut->groupsArray.__ptr[NumRow].groupTypeName =
(char *) soap_malloc (soap,Grp_MAX_BYTES_GROUP_TYPE_NAME + 1);
soap_malloc (soap,Grp_MAX_BYTES_GROUP_TYPE_NAME + 1);
Str_Copy (SendMyGroupsOut->groupsArray.__ptr[NumRow].groupTypeName,row[1],
Grp_MAX_BYTES_GROUP_TYPE_NAME);
@ -2439,7 +2431,7 @@ int swad__sendMyGroups (struct soap *soap,
/* Get group name (row[3]) */
SendMyGroupsOut->groupsArray.__ptr[NumRow].groupName =
(char *) soap_malloc (soap,Grp_MAX_BYTES_GROUP_NAME + 1);
soap_malloc (soap,Grp_MAX_BYTES_GROUP_NAME + 1);
Str_Copy (SendMyGroupsOut->groupsArray.__ptr[NumRow].groupName,row[3],
Grp_MAX_BYTES_GROUP_NAME);
@ -2488,7 +2480,7 @@ static void API_CopyUsrData (struct soap *soap,
/* Copy user's nickname */
Length = strlen (UsrDat->Nickname);
Usr->userNickname = (char *) soap_malloc (soap,Length + 1);
Usr->userNickname = soap_malloc (soap,Length + 1);
Str_Copy (Usr->userNickname,UsrDat->Nickname,Length);
/* Copy user's first ID */
@ -2497,28 +2489,28 @@ static void API_CopyUsrData (struct soap *soap,
else // Hide user's ID
FirstID = "********";
Length = strlen (FirstID);
Usr->userID = (char *) soap_malloc (soap,Length + 1);
Usr->userID = soap_malloc (soap,Length + 1);
Str_Copy (Usr->userID,FirstID,Length);
/* Copy user's surname1 */
Length = strlen (UsrDat->Surname1);
Usr->userSurname1 = (char *) soap_malloc (soap,Length + 1);
Usr->userSurname1 = soap_malloc (soap,Length + 1);
Str_Copy (Usr->userSurname1,UsrDat->Surname1,Length);
/* Copy user's surname2 */
Length = strlen (UsrDat->Surname2);
Usr->userSurname2 = (char *) soap_malloc (soap,Length + 1);
Usr->userSurname2 = soap_malloc (soap,Length + 1);
Str_Copy (Usr->userSurname2,UsrDat->Surname2,Length);
/* Copy user's first name */
Length = strlen (UsrDat->FrstName);
Usr->userFirstname = (char *) soap_malloc (soap,Length + 1);
Usr->userFirstname = soap_malloc (soap,Length + 1);
Str_Copy (Usr->userFirstname,UsrDat->FrstName,Length);
/* User's photo URL */
Pho_BuildLinkToPhoto (UsrDat,PhotoURL);
Length = strlen (PhotoURL);
Usr->userPhoto = (char *) soap_malloc (soap,Length + 1);
Usr->userPhoto = soap_malloc (soap,Length + 1);
Str_Copy (Usr->userPhoto,PhotoURL,Length);
}
@ -2618,26 +2610,26 @@ int swad__getAttendanceEvents (struct soap *soap,
{
Length = strlen (Gbl.Usrs.Other.UsrDat.Surname1);
getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].userSurname1 =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].userSurname1,
Gbl.Usrs.Other.UsrDat.Surname1,Length);
Length = strlen (Gbl.Usrs.Other.UsrDat.Surname2);
getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].userSurname2 =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].userSurname2,
Gbl.Usrs.Other.UsrDat.Surname2,Length);
Length = strlen (Gbl.Usrs.Other.UsrDat.FrstName);
getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].userFirstname =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].userFirstname,
Gbl.Usrs.Other.UsrDat.FrstName,Length);
Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
Length = strlen (PhotoURL);
getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].userPhoto =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].userPhoto,
PhotoURL,Length);
}
@ -2668,14 +2660,14 @@ int swad__getAttendanceEvents (struct soap *soap,
/* Get title of the event (row[6]) */
Length = strlen (row[6]);
getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].title =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].title,
row[6],Length);
/* Get Txt (row[7]) */
Length = strlen (row[7]);
getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].text =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceEventsOut->eventsArray.__ptr[NumAttEvent].text,
row[7],Length);
@ -3078,7 +3070,7 @@ int swad__getAttendanceUsers (struct soap *soap,
{
Length = strlen (Gbl.Usrs.Other.UsrDat.Nickname);
getAttendanceUsersOut->usersArray.__ptr[NumRow].userNickname =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceUsersOut->usersArray.__ptr[NumRow].userNickname,
Gbl.Usrs.Other.UsrDat.Nickname,Length);
@ -3086,39 +3078,39 @@ int swad__getAttendanceUsers (struct soap *soap,
{
Length = strlen (Gbl.Usrs.Other.UsrDat.IDs.List[0].ID); // TODO: What user's ID?
getAttendanceUsersOut->usersArray.__ptr[NumRow].userID =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceUsersOut->usersArray.__ptr[NumRow].userID,
Gbl.Usrs.Other.UsrDat.IDs.List[0].ID,Length);
}
else
{
getAttendanceUsersOut->usersArray.__ptr[NumRow].userID =
(char *) soap_malloc (soap,1);
soap_malloc (soap,1);
getAttendanceUsersOut->usersArray.__ptr[NumRow].userID[0] = '\0';
}
Length = strlen (Gbl.Usrs.Other.UsrDat.Surname1);
getAttendanceUsersOut->usersArray.__ptr[NumRow].userSurname1 =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceUsersOut->usersArray.__ptr[NumRow].userSurname1,
Gbl.Usrs.Other.UsrDat.Surname1,Length);
Length = strlen (Gbl.Usrs.Other.UsrDat.Surname2);
getAttendanceUsersOut->usersArray.__ptr[NumRow].userSurname2 =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceUsersOut->usersArray.__ptr[NumRow].userSurname2,
Gbl.Usrs.Other.UsrDat.Surname2,Length);
Length = strlen (Gbl.Usrs.Other.UsrDat.FrstName);
getAttendanceUsersOut->usersArray.__ptr[NumRow].userFirstname =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceUsersOut->usersArray.__ptr[NumRow].userFirstname,
Gbl.Usrs.Other.UsrDat.FrstName,Length);
Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
Length = strlen (PhotoURL);
getAttendanceUsersOut->usersArray.__ptr[NumRow].userPhoto =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getAttendanceUsersOut->usersArray.__ptr[NumRow].userPhoto,
PhotoURL,Length);
}
@ -3375,7 +3367,7 @@ int swad__getNotifications (struct soap *soap,
/* Get notification event type (row[1]) */
NotifyEvent = Ntf_GetNotifyEventFromStr ((const char *) row[1]);
getNotificationsOut->notificationsArray.__ptr[NumNotif].eventType =
(char *) soap_malloc (soap,Ntf_MAX_BYTES_NOTIFY_EVENT + 1);
soap_malloc (soap,Ntf_MAX_BYTES_NOTIFY_EVENT + 1);
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].eventType,
Ntf_WSNotifyEvents[NotifyEvent],Ntf_MAX_BYTES_NOTIFY_EVENT);
@ -3395,32 +3387,32 @@ int swad__getNotifications (struct soap *soap,
if (API_GetSomeUsrDataFromUsrCod (&Gbl.Usrs.Other.UsrDat,Hie.Crs.CrsCod)) // Get some user's data from database
{
getNotificationsOut->notificationsArray.__ptr[NumNotif].userNickname =
(char *) soap_malloc (soap,Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1);
soap_malloc (soap,Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1);
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].userNickname,
Gbl.Usrs.Other.UsrDat.Nickname,
Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA);
Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
getNotificationsOut->notificationsArray.__ptr[NumNotif].userSurname1 =
(char *) soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].userSurname1,
Gbl.Usrs.Other.UsrDat.Surname1,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
getNotificationsOut->notificationsArray.__ptr[NumNotif].userSurname2 =
(char *) soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].userSurname2,
Gbl.Usrs.Other.UsrDat.Surname2,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
getNotificationsOut->notificationsArray.__ptr[NumNotif].userFirstname =
(char *) soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
soap_malloc (soap,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1);
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].userFirstname,
Gbl.Usrs.Other.UsrDat.FrstName,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
getNotificationsOut->notificationsArray.__ptr[NumNotif].userPhoto =
(char *) soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].userPhoto,
PhotoURL,Cns_MAX_BYTES_WWW);
}
@ -3451,7 +3443,7 @@ int swad__getNotifications (struct soap *soap,
/* Set location */
getNotificationsOut->notificationsArray.__ptr[NumNotif].location =
(char *) soap_malloc (soap,Ntf_MAX_BYTES_NOTIFY_LOCATION + 1);
soap_malloc (soap,Ntf_MAX_BYTES_NOTIFY_LOCATION + 1);
if (NotifyEvent == Ntf_EVENT_FORUM_POST_COURSE ||
NotifyEvent == Ntf_EVENT_FORUM_REPLY)
@ -3491,21 +3483,21 @@ int swad__getNotifications (struct soap *soap,
Length = strlen (SummaryStr);
getNotificationsOut->notificationsArray.__ptr[NumNotif].summary =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].summary,
SummaryStr,Length);
if (ContentStr == NULL)
{
getNotificationsOut->notificationsArray.__ptr[NumNotif].content =
(char *) soap_malloc (soap,1);
soap_malloc (soap,1);
getNotificationsOut->notificationsArray.__ptr[NumNotif].content[0] = '\0';
}
else
{
Length = strlen (ContentStr);
getNotificationsOut->notificationsArray.__ptr[NumNotif].content =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getNotificationsOut->notificationsArray.__ptr[NumNotif].content,
ContentStr,Length);
@ -3646,7 +3638,7 @@ int swad__sendMessage (struct soap *soap,
{
int ReturnCode;
long ReplyUsrCod = -1L;
char Nickname[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char Nickname[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
char *Query = NULL;
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -3750,15 +3742,15 @@ int swad__sendMessage (struct soap *soap,
while (*Ptr)
{
/* Find next string in text until comma (leading and trailing spaces are removed) */
Str_GetNextStringUntilComma (&Ptr,Nickname,Nck_MAX_BYTES_NICKNAME_FROM_FORM);
Str_GetNextStringUntilComma (&Ptr,Nickname,Nck_MAX_BYTES_NICK_FROM_FORM);
/* Check if string is a valid nickname */
if (Nck_CheckIfNickWithArrobaIsValid (Nickname)) // String is a nickname?
if (Nck_CheckIfNickWithArrIsValid (Nickname)) // String is a nickname?
{
Str_RemoveLeadingArrobas (Nickname);
/* Check for overflow in query */
if (strlen (Query) + Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 32 >
if (strlen (Query) + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 32 >
API_MAX_BYTES_QUERY_RECIPIENTS)
return soap_sender_fault (soap,
"Can not send message",
@ -4047,7 +4039,7 @@ int swad__getTestConfig (struct soap *soap,
getTestConfigOut->visibility = TstVis_MIN_VISIBILITY;
/* TODO: Remove these lines in 2021 */
getTestConfigOut->feedback = (char *) soap_malloc (soap,TstPrn_MAX_BYTES_FEEDBACK_TYPE + 1);
getTestConfigOut->feedback = soap_malloc (soap,TstPrn_MAX_BYTES_FEEDBACK_TYPE + 1);
getTestConfigOut->feedback[0] = '\0';
/***** Get test configuration *****/
@ -4280,7 +4272,7 @@ static int API_GetTstTags (struct soap *soap,
/* Get tag text (row[1]) */
getTestsOut->tagsArray.__ptr[NumRow].tagText =
(char *) soap_malloc (soap,Tag_MAX_BYTES_TAG + 1);
soap_malloc (soap,Tag_MAX_BYTES_TAG + 1);
Str_Copy (getTestsOut->tagsArray.__ptr[NumRow].tagText,row[1],
Tag_MAX_BYTES_TAG);
}
@ -4357,7 +4349,7 @@ static int API_GetTstQuestions (struct soap *soap,
/* Get answer type (row[1]) */
AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[1]);
getTestsOut->questionsArray.__ptr[NumRow].answerType =
(char *) soap_malloc (soap,Tst_MAX_BYTES_ANSWER_TYPE + 1);
soap_malloc (soap,Tst_MAX_BYTES_ANSWER_TYPE + 1);
Str_Copy (getTestsOut->questionsArray.__ptr[NumRow].answerType,
Tst_StrAnswerTypesXML[AnswerType],
Tst_MAX_BYTES_ANSWER_TYPE);
@ -4368,13 +4360,13 @@ static int API_GetTstQuestions (struct soap *soap,
/* Get question stem (row[3]) */
getTestsOut->questionsArray.__ptr[NumRow].stem =
(char *) soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
Str_Copy (getTestsOut->questionsArray.__ptr[NumRow].stem,row[3],
Cns_MAX_BYTES_TEXT);
/* Get question feedback (row[4]) */
getTestsOut->questionsArray.__ptr[NumRow].feedback =
(char *) soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
Str_Copy (getTestsOut->questionsArray.__ptr[NumRow].feedback,row[4],
Cns_MAX_BYTES_TEXT);
}
@ -4459,13 +4451,13 @@ static int API_GetTstAnswers (struct soap *soap,
/* Get answer (row[3]) */
getTestsOut->answersArray.__ptr[NumRow].answerText =
(char *) soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
Str_Copy (getTestsOut->answersArray.__ptr[NumRow].answerText,
row[3],Cns_MAX_BYTES_TEXT);
/* Get feedback (row[4]) */
getTestsOut->answersArray.__ptr[NumRow].answerFeedback =
(char *) soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
Str_Copy (getTestsOut->answersArray.__ptr[NumRow].answerFeedback,
row[4],Cns_MAX_BYTES_TEXT);
}
@ -4679,10 +4671,9 @@ int swad__getTrivialQuestion (struct soap *soap,
/* Get answer type (row[1]) */
AnswerType = Tst_ConvertFromStrAnsTypDBToAnsTyp (row[1]);
getTrivialQuestionOut->question.answerType =
(char *) soap_malloc (soap,Tst_MAX_BYTES_ANSWER_TYPE + 1);
soap_malloc (soap,Tst_MAX_BYTES_ANSWER_TYPE + 1);
Str_Copy (getTrivialQuestionOut->question.answerType,
Tst_StrAnswerTypesXML[AnswerType],
Tst_MAX_BYTES_ANSWER_TYPE);
Tst_StrAnswerTypesXML[AnswerType],Tst_MAX_BYTES_ANSWER_TYPE);
/* Get shuffle (row[2]) */
getTrivialQuestionOut->question.shuffle = (row[2][0] == 'Y') ? 1 :
@ -4690,15 +4681,13 @@ int swad__getTrivialQuestion (struct soap *soap,
/* Get question stem (row[3]) */
getTrivialQuestionOut->question.stem =
(char *) soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
Str_Copy (getTrivialQuestionOut->question.stem,row[3],
Cns_MAX_BYTES_TEXT);
soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
Str_Copy (getTrivialQuestionOut->question.stem,row[3],Cns_MAX_BYTES_TEXT);
/* Get question feedback (row[4]) */
getTrivialQuestionOut->question.feedback =
(char *) soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
Str_Copy (getTrivialQuestionOut->question.feedback,row[4],
Cns_MAX_BYTES_TEXT);
soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
Str_Copy (getTrivialQuestionOut->question.feedback,row[4],Cns_MAX_BYTES_TEXT);
}
else // Empty question
{
@ -4707,18 +4696,18 @@ int swad__getTrivialQuestion (struct soap *soap,
getTrivialQuestionOut->question.questionCode = -1;
/* Answer type (row[1]) */
getTrivialQuestionOut->question.answerType = (char *) soap_malloc (soap,1);
getTrivialQuestionOut->question.answerType = soap_malloc (soap,1);
getTrivialQuestionOut->question.answerType[0] = '\0';
/* Shuffle (row[2]) */
getTrivialQuestionOut->question.shuffle = 0;
/* Question stem (row[3]) */
getTrivialQuestionOut->question.stem = (char *) soap_malloc (soap,1);
getTrivialQuestionOut->question.stem = soap_malloc (soap,1);
getTrivialQuestionOut->question.stem[0] = '\0';
/* Get question feedback (row[4]) */
getTrivialQuestionOut->question.feedback = (char *) soap_malloc (soap,1);
getTrivialQuestionOut->question.feedback = soap_malloc (soap,1);
getTrivialQuestionOut->question.feedback[0] = '\0';
}
@ -4767,13 +4756,13 @@ int swad__getTrivialQuestion (struct soap *soap,
/* Get answer (row[3]) */
getTrivialQuestionOut->answersArray.__ptr[NumRow].answerText =
(char *) soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
Str_Copy (getTrivialQuestionOut->answersArray.__ptr[NumRow].answerText,
row[3],Cns_MAX_BYTES_TEXT);
/* Get feedback (row[4]) */
getTrivialQuestionOut->answersArray.__ptr[NumRow].answerFeedback =
(char *) soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
soap_malloc (soap,Cns_MAX_BYTES_TEXT + 1);
Str_Copy (getTrivialQuestionOut->answersArray.__ptr[NumRow].answerFeedback,
row[4],Cns_MAX_BYTES_TEXT);
}
@ -4886,26 +4875,26 @@ int swad__getGames (struct soap *soap,
{
Length = strlen (Gbl.Usrs.Other.UsrDat.Surname1);
getGamesOut->gamesArray.__ptr[NumGame].userSurname1 =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getGamesOut->gamesArray.__ptr[NumGame].userSurname1,
Gbl.Usrs.Other.UsrDat.Surname1,Length);
Length = strlen (Gbl.Usrs.Other.UsrDat.Surname2);
getGamesOut->gamesArray.__ptr[NumGame].userSurname2 =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getGamesOut->gamesArray.__ptr[NumGame].userSurname2,
Gbl.Usrs.Other.UsrDat.Surname2,Length);
Length = strlen (Gbl.Usrs.Other.UsrDat.FrstName);
getGamesOut->gamesArray.__ptr[NumGame].userFirstname =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getGamesOut->gamesArray.__ptr[NumGame].userFirstname,
Gbl.Usrs.Other.UsrDat.FrstName,Length);
Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
Length = strlen (PhotoURL);
getGamesOut->gamesArray.__ptr[NumGame].userPhoto =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getGamesOut->gamesArray.__ptr[NumGame].userPhoto,
PhotoURL,Length);
}
@ -4940,13 +4929,13 @@ int swad__getGames (struct soap *soap,
/* Get title of the game (row[6]) */
Length = strlen (row[6]);
getGamesOut->gamesArray.__ptr[NumGame].title =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getGamesOut->gamesArray.__ptr[NumGame].title,row[6],Length);
/* Get Txt (row[7]) */
Length = strlen (row[7]);
getGamesOut->gamesArray.__ptr[NumGame].text =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getGamesOut->gamesArray.__ptr[NumGame].text,row[7],Length);
}
}
@ -5071,26 +5060,26 @@ int swad__getMatches (struct soap *soap,
{
Length = strlen (Gbl.Usrs.Other.UsrDat.Surname1);
getMatchesOut->matchesArray.__ptr[NumMatch].userSurname1 =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getMatchesOut->matchesArray.__ptr[NumMatch].userSurname1,
Gbl.Usrs.Other.UsrDat.Surname1,Length);
Length = strlen (Gbl.Usrs.Other.UsrDat.Surname2);
getMatchesOut->matchesArray.__ptr[NumMatch].userSurname2 =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getMatchesOut->matchesArray.__ptr[NumMatch].userSurname2,
Gbl.Usrs.Other.UsrDat.Surname2,Length);
Length = strlen (Gbl.Usrs.Other.UsrDat.FrstName);
getMatchesOut->matchesArray.__ptr[NumMatch].userFirstname =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getMatchesOut->matchesArray.__ptr[NumMatch].userFirstname,
Gbl.Usrs.Other.UsrDat.FrstName,Length);
Pho_BuildLinkToPhoto (&Gbl.Usrs.Other.UsrDat,PhotoURL);
Length = strlen (PhotoURL);
getMatchesOut->matchesArray.__ptr[NumMatch].userPhoto =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getMatchesOut->matchesArray.__ptr[NumMatch].userPhoto,
PhotoURL,Length);
}
@ -5117,7 +5106,7 @@ int swad__getMatches (struct soap *soap,
/* Get title of the match (row[4]) */
Length = strlen (row[4]);
getMatchesOut->matchesArray.__ptr[NumMatch].title =
(char *) soap_malloc (soap,Length + 1);
soap_malloc (soap,Length + 1);
Str_Copy (getMatchesOut->matchesArray.__ptr[NumMatch].title,row[4],
Length);
@ -5539,7 +5528,7 @@ int swad__getDirectoryTree (struct soap *soap,
fseek (Gbl.F.XML,0L,SEEK_SET);
/* Copy XML content from file to memory */
getDirectoryTreeOut->tree = (char *) soap_malloc (soap,FileSize + 1);
getDirectoryTreeOut->tree = soap_malloc (soap,FileSize + 1);
NumBytesRead = fread (getDirectoryTreeOut->tree,1,FileSize,Gbl.F.XML);
getDirectoryTreeOut->tree[NumBytesRead] = '\0';
@ -5713,11 +5702,11 @@ int swad__getFile (struct soap *soap,
Gbl.WebService.Function = API_getFile;
/***** Allocate space for strings *****/
getFileOut->fileName = (char *) soap_malloc (soap,NAME_MAX + 1);
getFileOut->URL = (char *) soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
getFileOut->license = (char *) soap_malloc (soap,Brw_MAX_BYTES_LICENSE + 1);
getFileOut->publisherName = (char *) soap_malloc (soap,Usr_MAX_BYTES_FULL_NAME + 1);
getFileOut->publisherPhoto = (char *) soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
getFileOut->fileName = soap_malloc (soap,NAME_MAX + 1);
getFileOut->URL = soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
getFileOut->license = soap_malloc (soap,Brw_MAX_BYTES_LICENSE + 1);
getFileOut->publisherName = soap_malloc (soap,Usr_MAX_BYTES_FULL_NAME + 1);
getFileOut->publisherPhoto = soap_malloc (soap,Cns_MAX_BYTES_WWW + 1);
/***** Default values returned on error *****/
getFileOut->fileName[0] = '\0';
@ -5940,14 +5929,14 @@ int swad__getMarks (struct soap *soap,
if (ContentStr != NULL)
{
Length = strlen (ContentStr);
getMarksOut->content = (char *) soap_malloc (soap,Length + 1);
getMarksOut->content = soap_malloc (soap,Length + 1);
Str_Copy (getMarksOut->content,ContentStr,Length);
free (ContentStr);
ContentStr = NULL;
}
else
{
getMarksOut->content = (char *) soap_malloc (soap,1);
getMarksOut->content = soap_malloc (soap,1);
getMarksOut->content[0] = '\0';
}
@ -6209,12 +6198,12 @@ static void API_GetDataOfLocation (struct soap *soap,
/* Get institution short name (row[1]) */
Length = strlen (row[1]);
location->institutionShortName = (char *) soap_malloc (soap,Length + 1);
location->institutionShortName = soap_malloc (soap,Length + 1);
Str_Copy (location->institutionShortName,row[1],Length);
/* Get institution full name (row[2]) */
Length = strlen (row[2]);
location->institutionFullName = (char *) soap_malloc (soap,Length + 1);
location->institutionFullName = soap_malloc (soap,Length + 1);
Str_Copy (location->institutionFullName,row[2],Length);
/* Get center code (row[3]) */
@ -6222,12 +6211,12 @@ static void API_GetDataOfLocation (struct soap *soap,
/* Get center short name (row[4]) */
Length = strlen (row[4]);
location->centerShortName = (char *) soap_malloc (soap,Length + 1);
location->centerShortName = soap_malloc (soap,Length + 1);
Str_Copy (location->centerShortName,row[4],Length);
/* Get center full name (row[5]) */
Length = strlen (row[5]);
location->centerFullName = (char *) soap_malloc (soap,Length + 1);
location->centerFullName = soap_malloc (soap,Length + 1);
Str_Copy (location->centerFullName,row[5],Length);
/* Get building code (row[6]) */
@ -6235,12 +6224,12 @@ static void API_GetDataOfLocation (struct soap *soap,
/* Get building short name (row[7]) */
Length = strlen (row[7]);
location->buildingShortName = (char *) soap_malloc (soap,Length + 1);
location->buildingShortName = soap_malloc (soap,Length + 1);
Str_Copy (location->buildingShortName,row[7],Length);
/* Get building full name (row[8]) */
Length = strlen (row[8]);
location->buildingFullName = (char *) soap_malloc (soap,Length + 1);
location->buildingFullName = soap_malloc (soap,Length + 1);
Str_Copy (location->buildingFullName,row[8],Length);
/* Get floor (row[9]) */
@ -6251,12 +6240,12 @@ static void API_GetDataOfLocation (struct soap *soap,
/* Get room short name (row[11]) */
Length = strlen (row[11]);
location->roomShortName = (char *) soap_malloc (soap,Length + 1);
location->roomShortName = soap_malloc (soap,Length + 1);
Str_Copy (location->roomShortName,row[11],Length);
/* Get room full name (row[12]) */
Length = strlen (row[12]);
location->roomFullName = (char *) soap_malloc (soap,Length + 1);
location->roomFullName = soap_malloc (soap,Length + 1);
Str_Copy (location->roomFullName,row[12],Length);
/* Get check in time (row[13]) */
@ -6287,29 +6276,29 @@ static void API_GetDataOfLocation (struct soap *soap,
static void API_ResetLocation (struct soap *soap,
struct swad__location *location)
{
location->institutionCode = -1;
location->institutionShortName = (char *) soap_malloc (soap,1);
location->institutionCode = -1;
location->institutionShortName = soap_malloc (soap,1);
location->institutionShortName[0] = '\0';
location->institutionFullName = (char *) soap_malloc (soap,1);
location->institutionFullName[0] = '\0';
location->institutionFullName = soap_malloc (soap,1);
location->institutionFullName[0] = '\0';
location->centerCode = -1;
location->centerShortName = (char *) soap_malloc (soap,1);
location->centerShortName[0] = '\0';
location->centerFullName = (char *) soap_malloc (soap,1);
location->centerFullName[0] = '\0';
location->centerCode = -1;
location->centerShortName = soap_malloc (soap,1);
location->centerShortName[0] = '\0';
location->centerFullName = soap_malloc (soap,1);
location->centerFullName[0] = '\0';
location->buildingCode = -1;
location->buildingShortName = (char *) soap_malloc (soap,1);
location->buildingShortName[0] = '\0';
location->buildingFullName = (char *) soap_malloc (soap,1);
location->buildingFullName[0] = '\0';
location->buildingCode = -1;
location->buildingShortName = soap_malloc (soap,1);
location->buildingShortName[0] = '\0';
location->buildingFullName = soap_malloc (soap,1);
location->buildingFullName[0] = '\0';
location->floor = 0;
location->roomCode = -1;
location->roomShortName = (char *) soap_malloc (soap,1);
location->roomShortName[0] = '\0';
location->roomFullName = (char *) soap_malloc (soap,1);
location->roomFullName[0] = '\0';
location->roomCode = -1;
location->roomShortName = soap_malloc (soap,1);
location->roomShortName[0] = '\0';
location->roomFullName = soap_malloc (soap,1);
location->roomFullName[0] = '\0';
}

View File

@ -83,9 +83,9 @@ extern struct Globals Gbl;
static void Acc_ShowFormCheckIfIHaveAccount (const char *Title);
static void Acc_WriteRowEmptyAccount (unsigned NumUsr,const char *ID,struct UsrData *UsrDat);
static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1],
static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1],
const char *NewEmail);
static bool Acc_GetParamsNewAccount (char NewNickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1],
static bool Acc_GetParamsNewAccount (char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1],
char *NewEmail,
char *NewEncryptedPassword);
static void Acc_CreateNewEncryptedUsrCod (struct UsrData *UsrDat);
@ -353,7 +353,7 @@ void Acc_ShowFormCreateMyAccount (void)
/************ Show form to create a new account using parameters *************/
/*****************************************************************************/
static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1],
static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1],
const char *NewEmail)
{
extern const char *Hlp_PROFILE_SignUp;
@ -363,7 +363,7 @@ static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutAr
extern const char *Txt_HELP_nickname;
extern const char *Txt_HELP_email;
extern const char *Txt_Email;
char NewNickWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NewNickWithArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
/***** Begin form to enter some data of the new user *****/
Frm_StartForm (ActCreUsrAcc);
@ -374,11 +374,11 @@ static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutAr
Hlp_PROFILE_SignUp,Box_NOT_CLOSABLE,2);
/***** Nickname *****/
if (NewNickWithoutArroba[0])
snprintf (NewNickWithArroba,sizeof (NewNickWithArroba),"@%s",
NewNickWithoutArroba);
if (NewNickWithoutArr[0])
snprintf (NewNickWithArr,sizeof (NewNickWithArr),"@%s",
NewNickWithoutArr);
else
NewNickWithArroba[0] = '\0';
NewNickWithArr[0] = '\0';
HTM_TR_Begin (NULL);
/* Label */
@ -386,8 +386,8 @@ static void Acc_ShowFormRequestNewAccountWithParams (const char NewNickWithoutAr
/* Data */
HTM_TD_Begin ("class=\"LT\"");
HTM_INPUT_TEXT ("NewNick",1 + Nck_MAX_CHARS_NICKNAME_WITHOUT_ARROBA,
NewNickWithArroba,HTM_DONT_SUBMIT_ON_CHANGE,
HTM_INPUT_TEXT ("NewNick",1 + Nck_MAX_CHARS_NICK_WITHOUT_ARROBA,
NewNickWithArr,HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"NewNick\" size=\"18\" placeholder=\"%s\" required=\"required\"",
Txt_HELP_nickname);
HTM_TD_End ();
@ -582,11 +582,11 @@ static void Acc_PutParamsToRemoveMyAccount (void *EncryptedUsrCod)
bool Acc_CreateMyNewAccountAndLogIn (void)
{
char NewNickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
char NewEmail[Cns_MAX_BYTES_EMAIL_ADDRESS + 1];
char NewEncryptedPassword[Pwd_BYTES_ENCRYPTED_PASSWORD + 1];
if (Acc_GetParamsNewAccount (NewNickWithoutArroba,NewEmail,NewEncryptedPassword))
if (Acc_GetParamsNewAccount (NewNickWithoutArr,NewEmail,NewEncryptedPassword))
{
/***** User's has no ID *****/
Gbl.Usrs.Me.UsrDat.IDs.Num = 0;
@ -601,8 +601,8 @@ bool Acc_CreateMyNewAccountAndLogIn (void)
true); // I am creating my own account
/***** Save nickname *****/
Nck_UpdateNickInDB (Gbl.Usrs.Me.UsrDat.UsrCod,NewNickWithoutArroba);
Str_Copy (Gbl.Usrs.Me.UsrDat.Nickname,NewNickWithoutArroba,
Nck_UpdateNickInDB (Gbl.Usrs.Me.UsrDat.UsrCod,NewNickWithoutArr);
Str_Copy (Gbl.Usrs.Me.UsrDat.Nickname,NewNickWithoutArr,
sizeof (Gbl.Usrs.Me.UsrDat.Nickname) - 1);
/***** Save email *****/
@ -620,7 +620,7 @@ bool Acc_CreateMyNewAccountAndLogIn (void)
else
{
/***** Show form again ******/
Acc_ShowFormRequestNewAccountWithParams (NewNickWithoutArroba,NewEmail);
Acc_ShowFormRequestNewAccountWithParams (NewNickWithoutArr,NewEmail);
return false;
}
}
@ -630,7 +630,7 @@ bool Acc_CreateMyNewAccountAndLogIn (void)
/*****************************************************************************/
// Return false on error
static bool Acc_GetParamsNewAccount (char NewNickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1],
static bool Acc_GetParamsNewAccount (char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1],
char *NewEmail,
char *NewEncryptedPassword)
{
@ -638,45 +638,43 @@ static bool Acc_GetParamsNewAccount (char NewNickWithoutArroba[Nck_MAX_BYTES_NIC
extern const char *Txt_The_nickname_entered_X_is_not_valid_;
extern const char *Txt_The_email_address_X_had_been_registered_by_another_user;
extern const char *Txt_The_email_address_entered_X_is_not_valid;
char NewNickWithArroba[1 + Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NewNickWithArr[1 + Nck_MAX_BYTES_NICK_FROM_FORM + 1];
char NewPlainPassword[Pwd_MAX_BYTES_PLAIN_PASSWORD + 1];
bool Error = false;
/***** Step 1/3: Get new nickname from form *****/
Par_GetParToText ("NewNick",NewNickWithArroba,
Nck_MAX_BYTES_NICKNAME_FROM_FORM);
Par_GetParToText ("NewNick",NewNickWithArr,Nck_MAX_BYTES_NICK_FROM_FORM);
/* Remove arrobas at the beginning */
Str_Copy (NewNickWithoutArroba,NewNickWithArroba,
Nck_MAX_BYTES_NICKNAME_FROM_FORM);
Str_RemoveLeadingArrobas (NewNickWithoutArroba);
Str_Copy (NewNickWithoutArr,NewNickWithArr,Nck_MAX_BYTES_NICK_FROM_FORM);
Str_RemoveLeadingArrobas (NewNickWithoutArr);
/* Create a new version of the nickname with arroba */
snprintf (NewNickWithArroba,sizeof (NewNickWithArroba),"@%s",
NewNickWithoutArroba);
snprintf (NewNickWithArr,sizeof (NewNickWithArr),"@%s",
NewNickWithoutArr);
if (Nck_CheckIfNickWithArrobaIsValid (NewNickWithArroba)) // If new nickname is valid
if (Nck_CheckIfNickWithArrIsValid (NewNickWithArr)) // If new nickname is valid
{
/* Check if the new nickname
matches any of the nicknames of other users */
if (DB_QueryCOUNT ("can not check if nickname already existed",
"SELECT COUNT(*) FROM usr_nicknames"
" WHERE Nickname='%s' AND UsrCod<>%ld",
NewNickWithoutArroba,
NewNickWithoutArr,
Gbl.Usrs.Me.UsrDat.UsrCod)) // A nickname of another user is the same that this nickname
{
Error = true;
Ale_ShowAlert (Ale_WARNING,Txt_The_nickname_X_had_been_registered_by_another_user,
NewNickWithoutArroba);
NewNickWithoutArr);
}
}
else // New nickname is not valid
{
Error = true;
Ale_ShowAlert (Ale_WARNING,Txt_The_nickname_entered_X_is_not_valid_,
NewNickWithArroba,
Nck_MIN_CHARS_NICKNAME_WITHOUT_ARROBA,
Nck_MAX_CHARS_NICKNAME_WITHOUT_ARROBA);
NewNickWithArr,
Nck_MIN_CHARS_NICK_WITHOUT_ARROBA,
Nck_MAX_CHARS_NICK_WITHOUT_ARROBA);
}
/***** Step 2/3: Get new email from form *****/

View File

@ -168,7 +168,7 @@ void Agd_PutFormLogInToShowUsrAgenda (void)
void Agd_PutParamAgd (void)
{
char Nickname[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char Nickname[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
snprintf (Nickname,sizeof (Nickname),"@%s",Gbl.Usrs.Other.UsrDat.Nickname);
Par_PutHiddenParamString (NULL,"agd",Nickname);
@ -1230,16 +1230,13 @@ static void Agd_GetDataOfEventByCod (struct Agd_Event *AgdEvent)
/* Get code of the event (row[0]) */
AgdEvent->AgdCod = Str_ConvertStrCodToLongCod (row[0]);
/* Get whether the event is public or not (row[1]) */
/* Get whether the event is public or not (row[1])
and whether it is hidden or not (row[2]) */
AgdEvent->Public = (row[1][0] == 'Y');
/* Get whether the event is hidden or not (row[2]) */
AgdEvent->Hidden = (row[2][0] == 'Y');
/* Get start date (row[3] holds the start UTC time) */
/* Get start date (row[3]) and end date (row[4]) in UTC time */
AgdEvent->TimeUTC[Dat_START_TIME] = Dat_GetUNIXTimeFromStr (row[3]);
/* Get end date (row[4] holds the end UTC time) */
AgdEvent->TimeUTC[Dat_END_TIME ] = Dat_GetUNIXTimeFromStr (row[4]);
/* Get whether the event is past, present or future (row(5), row[6]) */
@ -1247,10 +1244,8 @@ static void Agd_GetDataOfEventByCod (struct Agd_Event *AgdEvent)
((row[6][0] == '1') ? Dat_FUTURE :
Dat_PRESENT));
/* Get the event (row[7]) */
/* Get the event (row[7]) and its location (row[8]) */
Str_Copy (AgdEvent->Event ,row[7],sizeof (AgdEvent->Event ) - 1);
/* Get the event (row[8]) */
Str_Copy (AgdEvent->Location,row[8],sizeof (AgdEvent->Location) - 1);
}
else

View File

@ -155,10 +155,8 @@ void Ann_ShowAllAnnouncements (void)
if (sscanf (row[2],"%u",&Roles) != 1)
Lay_ShowErrorAndExit ("Error when reading roles of announcement.");
/* Get the content (row[3]) */
/* Get the subject (row[3]), the content (row[4]), and insert links */
Str_Copy (Subject,row[3],sizeof (Subject) - 1);
/* Get the content (row[4]) and insert links */
Str_Copy (Content,row[4],sizeof (Content) - 1);
Str_InsertLinks (Content,Cns_MAX_BYTES_TEXT,50);
@ -245,10 +243,8 @@ void Ann_ShowMyAnnouncementsNotMarkedAsSeen (void)
if (sscanf (row[0],"%ld",&AnnCod) != 1)
Lay_ShowErrorAndExit ("Wrong code of announcement.");
/* Get the content (row[1]) */
/* Get the subject (row[1]), the content (row[2]), and insert links */
Str_Copy (Subject,row[1],sizeof (Subject) - 1);
/* Get the content (row[2]) and insert links */
Str_Copy (Content,row[2],sizeof (Content) - 1);
Str_InsertLinks (Content,Cns_MAX_BYTES_TEXT,50);

View File

@ -543,8 +543,7 @@ static void Asg_WriteAssignmentFolder (struct Asg_Assignment *Asg,bool PrintView
case Rol_TCH:
case Rol_SYS_ADM:
Gbl.FileBrowser.Type = Brw_ADMI_ASG_CRS; // Course assignments
Str_Copy (Gbl.Usrs.Other.UsrDat.EnUsrCod,
Gbl.Usrs.Me.UsrDat.EnUsrCod,
Str_Copy (Gbl.Usrs.Other.UsrDat.EnUsrCod,Gbl.Usrs.Me.UsrDat.EnUsrCod,
sizeof (Gbl.Usrs.Other.UsrDat.EnUsrCod) - 1);
Usr_CreateListSelectedUsrsCodsAndFillWithOtherUsr (&Gbl.Usrs.Selected);
Frm_StartForm (ActFrmCreAsgCrs);
@ -553,8 +552,7 @@ static void Asg_WriteAssignmentFolder (struct Asg_Assignment *Asg,bool PrintView
Rol_WrongRoleExit ();
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,
sizeof (Gbl.FileBrowser.FilFolLnk.Path) - 1);
Str_Copy (Gbl.FileBrowser.FilFolLnk.Name,Asg->Folder,
sizeof (Gbl.FileBrowser.FilFolLnk.Name) - 1);
@ -865,10 +863,8 @@ static void Asg_GetDataOfAssignment (struct Asg_Assignment *Asg,
/* Get whether the assignment is open or closed (row(5)) */
Asg->Open = (row[5][0] == '1');
/* Get the title of the assignment (row[6]) */
/* Get the title (row[6]) and the folder (row[7]) of the assignment */
Str_Copy (Asg->Title ,row[6],sizeof (Asg->Title ) - 1);
/* Get the folder for the assignment files (row[7]) */
Str_Copy (Asg->Folder,row[7],sizeof (Asg->Folder) - 1);
Asg->SendWork = (Asg->Folder[0] != '\0');

View File

@ -791,10 +791,8 @@ bool Att_GetDataOfAttEventByCod (struct Att_Event *Event)
/* Get author of the attendance event (row[3]) */
Event->UsrCod = Str_ConvertStrCodToLongCod (row[3]);
/* Get start date (row[4] holds the start UTC time) */
/* Get start date (row[4]) and end date (row[5]) in UTC time */
Event->TimeUTC[Att_START_TIME] = Dat_GetUNIXTimeFromStr (row[4]);
/* Get end date (row[5] holds the end UTC time) */
Event->TimeUTC[Att_END_TIME ] = Dat_GetUNIXTimeFromStr (row[5]);
/* Get whether the attendance event is open or closed (row(6)) */
@ -2600,10 +2598,8 @@ static bool Att_CheckIfUsrIsPresentInAttEventAndGetComments (long AttCod,long Us
/* Get if present (row[0]) */
Present = (row[0][0] == 'Y');
/* Get student's comment (row[1]) */
/* Get student's (row[1]) and teacher's (row[2]) comment */
Str_Copy (CommentStd,row[1],Cns_MAX_BYTES_TEXT);
/* Get teacher's comment (row[2]) */
Str_Copy (CommentTch,row[2],Cns_MAX_BYTES_TEXT);
}
else // User is not present

View File

@ -317,16 +317,11 @@ static void Ban_GetListBanners (struct Ban_Banners *Banners,
/* Get if banner is hidden (row[1]) */
Ban->Hidden = (row[1][0] == 'Y');
/* Get the short name of the banner (row[2]) */
/* Get short name (row[2]), full name (row[3]),
image (row[4]) and URL (row[5]) of the banner */
Str_Copy (Ban->ShrtName,row[2],sizeof (Ban->ShrtName) - 1);
/* Get the full name of the banner (row[3]) */
Str_Copy (Ban->FullName,row[3],sizeof (Ban->FullName) - 1);
/* Get the image of the banner (row[4]) */
Str_Copy (Ban->Img ,row[4],sizeof (Ban->Img ) - 1);
/* Get the URL of the banner (row[5]) */
Str_Copy (Ban->WWW ,row[5],sizeof (Ban->WWW ) - 1);
}
}
@ -367,16 +362,11 @@ void Ban_GetDataOfBannerByCod (struct Ban_Banner *Ban)
/* Get if the banner is hidden (row[0]) */
Ban->Hidden = (row[0][0] == 'Y');
/* Get the short name of the banner (row[1]) */
/* Get short name (row[1]), full name (row[2]),
image (row[3]) and URL (row[4]) of the banner */
Str_Copy (Ban->ShrtName,row[1],sizeof (Ban->ShrtName) - 1);
/* Get the full name of the banner (row[2]) */
Str_Copy (Ban->FullName,row[2],sizeof (Ban->FullName) - 1);
/* Get the image of the banner (row[3]) */
Str_Copy (Ban->Img ,row[3],sizeof (Ban->Img ) - 1);
/* Get the URL of the banner (row[4]) */
Str_Copy (Ban->WWW ,row[4],sizeof (Ban->WWW ) - 1);
}

View File

@ -377,13 +377,9 @@ void Bld_GetListBuildings (struct Bld_Buildings *Buildings,
if (WhichData == Bld_ALL_DATA)
{
/* Get the full name of the building (row[2]) */
Str_Copy (Building->FullName,row[2],
sizeof (Building->FullName) - 1);
/* Get the full name of the building (row[3]) */
Str_Copy (Building->Location,row[3],
sizeof (Building->Location) - 1);
/* Get full name (row[2]) and location (row[3]) of the building */
Str_Copy (Building->FullName,row[2],sizeof (Building->FullName) - 1);
Str_Copy (Building->Location,row[3],sizeof (Building->Location) - 1);
}
}
}
@ -427,13 +423,10 @@ void Bld_GetDataOfBuildingByCod (struct Bld_Building *Building)
/* Get row */
row = mysql_fetch_row (mysql_res);
/* Get the short name of the building (row[0]) */
/* Get short name (row[0]), full name (row[1])
and location (row[2]) of the building */
Str_Copy (Building->ShrtName,row[0],sizeof (Building->ShrtName) - 1);
/* Get the full name of the building (row[1]) */
Str_Copy (Building->FullName,row[1],sizeof (Building->FullName) - 1);
/* Get the location of the building (row[2]) */
Str_Copy (Building->Location,row[2],sizeof (Building->Location) - 1);
}

View File

@ -768,23 +768,16 @@ static void Ctr_GetDataOfCentreFromRow (struct Ctr_Centre *Ctr,MYSQL_ROW row)
/***** Get requester user's code (row[4]) *****/
Ctr->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[4]);
/***** Get latitude (row[5]) *****/
Ctr->Coord.Latitude = Map_GetLatitudeFromStr (row[5]);
/***** Get longitude (row[6]) *****/
/***** Get latitude (row[5], longitude (row[6]) and altitude (row[7])*****/
Ctr->Coord.Latitude = Map_GetLatitudeFromStr (row[5]);
Ctr->Coord.Longitude = Map_GetLongitudeFromStr (row[6]);
Ctr->Coord.Altitude = Map_GetAltitudeFromStr (row[7]);
/***** Get altitude (row[7]) *****/
Ctr->Coord.Altitude = Map_GetAltitudeFromStr (row[7]);
/***** Get the short name of the centre (row[8]) *****/
Str_Copy (Ctr->ShrtName,row[8],sizeof (Ctr->ShrtName) - 1);
/***** Get the full name of the centre (row[9]) *****/
Str_Copy (Ctr->FullName,row[9],sizeof (Ctr->FullName) - 1);
/***** Get the URL of the centre (row[10]) *****/
Str_Copy (Ctr->WWW,row[10],sizeof (Ctr->WWW) - 1);
/***** Get short name (row[8]), full name (row[9])
and URL (row[10]) of the centre *****/
Str_Copy (Ctr->ShrtName,row[ 8],sizeof (Ctr->ShrtName) - 1);
Str_Copy (Ctr->FullName,row[ 9],sizeof (Ctr->FullName) - 1);
Str_Copy (Ctr->WWW ,row[10],sizeof (Ctr->WWW ) - 1);
}
/*****************************************************************************/
@ -836,7 +829,6 @@ void Ctr_GetShortNameOfCentreByCod (struct Ctr_Centre *Ctr)
{
/***** Get the short name of this centre *****/
row = mysql_fetch_row (mysql_res);
Str_Copy (Ctr->ShrtName,row[0],sizeof (Ctr->ShrtName) - 1);
}

View File

@ -1211,8 +1211,7 @@ void CtrCfg_ChangeCtrWWW (void)
{
/***** Update database changing old WWW by new WWW *****/
Ctr_UpdateCtrWWWDB (Gbl.Hierarchy.Ctr.CtrCod,NewWWW);
Str_Copy (Gbl.Hierarchy.Ctr.WWW,NewWWW,
sizeof (Gbl.Hierarchy.Ctr.WWW) - 1);
Str_Copy (Gbl.Hierarchy.Ctr.WWW,NewWWW,sizeof (Gbl.Hierarchy.Ctr.WWW) - 1);
/***** Write message to show the change made *****/
Ale_ShowAlert (Ale_SUCCESS,Txt_The_new_web_address_is_X,

View File

@ -553,7 +553,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 20.31 (2021-02-15)"
#define Log_PLATFORM_VERSION "SWAD 20.32 (2021-02-15)"
#define CSS_FILE "swad20.8.css"
#define JS_FILE "swad20.6.2.js"
/*
@ -601,6 +601,8 @@ TODO: DNI de un estudiante sale err
TODO: BUG: Cuando un tipo de grupo sólo tiene un grupo, inscribirse es voluntario, el estudiante sólo puede pertenecer a un grupo, y se inscribe en él, debería poder desapuntarse. Ahora no puede.
TODO: Salvador Romero Cortés: @acanas opción para editar posts
Version 20.32: Feb 15, 2021 Fixed bug in copy of strings.
Code refactoring in copy. (304755 lines)
Version 20.31: Feb 15, 2021 Code refactoring in copy, concat and sprintf. (304811 lines)
Version 20.30.1: Feb 14, 2021 Code refactoring in timeline related to temporary tables. (305883 lines)
Version 20.30: Feb 11, 2021 Code refactoring in hierarchy. (305853 lines)

View File

@ -532,8 +532,7 @@ void Cty_DrawCountryMapAndNameWithLink (struct Cty_Countr *Cty,Act_Action_t Acti
Cty_DrawCountryMap (Cty,ClassMap);
/***** Write country name *****/
Str_Copy (CountryName,Cty->Name[Gbl.Prefs.Language],
sizeof (CountryName) - 1);
Str_Copy (CountryName,Cty->Name[Gbl.Prefs.Language],sizeof (CountryName) - 1);
HTM_TxtF ("&nbsp;%s&nbsp;",CountryName);
HTM_TxtF ("(%s)",Cty->Alpha2);

View File

@ -1802,8 +1802,7 @@ static void Crs_GetDataOfCourseFromRow (struct Crs_Course *Crs,MYSQL_ROW row)
Crs->Year = Deg_ConvStrToYear (row[2]);
/***** Get institutional course code (row[3]) *****/
Str_Copy (Crs->InstitutionalCrsCod,row[3],
sizeof (Crs->InstitutionalCrsCod) - 1);
Str_Copy (Crs->InstitutionalCrsCod,row[3],sizeof (Crs->InstitutionalCrsCod) - 1);
/***** Get course status (row[4]) *****/
if (sscanf (row[4],"%u",&(Crs->Status)) != 1)
@ -1812,10 +1811,8 @@ static void Crs_GetDataOfCourseFromRow (struct Crs_Course *Crs,MYSQL_ROW row)
/***** Get requester user'code (row[5]) *****/
Crs->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[5]);
/***** Get the short name of the course (row[6]) *****/
/***** Get short name (row[6]) and full name (row[7]) of the course *****/
Str_Copy (Crs->ShrtName,row[6],sizeof (Crs->ShrtName) - 1);
/***** Get the full name of the course (row[7]) *****/
Str_Copy (Crs->FullName,row[7],sizeof (Crs->FullName) - 1);
}
@ -1842,9 +1839,8 @@ static void Crs_GetShortNamesByCod (long CrsCod,
" AND courses.DegCod=degrees.DegCod",
CrsCod) == 1)
{
/***** Get the short name of this course *****/
/***** Get the course short name and degree short name *****/
row = mysql_fetch_row (mysql_res);
Str_Copy (CrsShortName,row[0],Cns_HIERARCHY_MAX_BYTES_SHRT_NAME);
Str_Copy (DegShortName,row[1],Cns_HIERARCHY_MAX_BYTES_SHRT_NAME);
}

View File

@ -3647,7 +3647,7 @@ mysql> DESCRIBE usr_nicknames;
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS usr_nicknames ("
"UsrCod INT NOT NULL,"
"Nickname CHAR(16) COLLATE latin1_spanish_ci NOT NULL," // Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA
"Nickname CHAR(16) COLLATE latin1_spanish_ci NOT NULL," // Nck_MAX_BYTES_NICK_WITHOUT_ARROBA
"CreatTime DATETIME NOT NULL,"
"UNIQUE INDEX(UsrCod,Nickname),"
"UNIQUE INDEX(Nickname))");

View File

@ -1570,8 +1570,7 @@ void Dat_AssignDate (struct Date *DateDst,struct Date *DateSrc)
DateDst->Month = DateSrc->Month;
DateDst->Day = DateSrc->Day;
DateDst->Week = DateSrc->Week;
Str_Copy (DateDst->YYYYMMDD,DateSrc->YYYYMMDD,
sizeof (DateDst->YYYYMMDD) - 1);
Str_Copy (DateDst->YYYYMMDD,DateSrc->YYYYMMDD,sizeof (DateDst->YYYYMMDD) - 1);
}
/*****************************************************************************/

View File

@ -1386,14 +1386,10 @@ static void Deg_GetDataOfDegreeFromRow (struct Deg_Degree *Deg,MYSQL_ROW row)
/* Get requester user's code (row[4]) */
Deg->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[4]);
/***** Get degree short name (row[5]) *****/
/***** Get degree short name (row[5]), full name (row[6]) and WWW (row[7]) *****/
Str_Copy (Deg->ShrtName,row[5],sizeof (Deg->ShrtName) - 1);
/***** Get degree full name (row[6]) *****/
Str_Copy (Deg->FullName,row[6],sizeof (Deg->FullName) - 1);
/***** Get WWW (row[7]) *****/
Str_Copy (Deg->WWW,row[7],sizeof (Deg->WWW) - 1);
Str_Copy (Deg->WWW ,row[7],sizeof (Deg->WWW ) - 1);
}
/*****************************************************************************/
@ -1415,7 +1411,6 @@ void Deg_GetShortNameOfDegreeByCod (struct Deg_Degree *Deg)
{
/***** Get the short name of this degree *****/
row = mysql_fetch_row (mysql_res);
Str_Copy (Deg->ShrtName,row[0],sizeof (Deg->ShrtName) - 1);
}

View File

@ -440,8 +440,7 @@ void DegCfg_ChangeDegWWW (void)
{
/***** Update the table changing old WWW by new WWW *****/
Deg_UpdateDegWWWDB (Gbl.Hierarchy.Deg.DegCod,NewWWW);
Str_Copy (Gbl.Hierarchy.Deg.WWW,NewWWW,
sizeof (Gbl.Hierarchy.Deg.WWW) - 1);
Str_Copy (Gbl.Hierarchy.Deg.WWW,NewWWW,sizeof (Gbl.Hierarchy.Deg.WWW) - 1);
/***** Write message to show the change made *****/
Ale_ShowAlert (Ale_SUCCESS,Txt_The_new_web_address_is_X,

View File

@ -394,14 +394,11 @@ static void Dpt_GetListDepartments (struct Dpt_Departments *Departments,long Ins
if ((Dpt->InsCod = Str_ConvertStrCodToLongCod (row[1])) < 0)
Lay_ShowErrorAndExit ("Wrong code of institution.");
/* Get the short name of the department (row[2]) */
/* Get short name (row[2]), full name (row[3])
and URL (row[4]) of the department */
Str_Copy (Dpt->ShrtName,row[2],sizeof (Dpt->ShrtName) - 1);
/* Get the full name of the department (row[3]) */
Str_Copy (Dpt->FullName,row[3],sizeof (Dpt->FullName) - 1);
/* Get the URL of the department (row[4]) */
Str_Copy (Dpt->WWW,row[4],sizeof (Dpt->WWW) - 1);
Str_Copy (Dpt->WWW ,row[4],sizeof (Dpt->WWW ) - 1);
/* Get number of non-editing teachers and teachers in this department (row[5]) */
if (sscanf (row[5],"%u",&Dpt->NumTchs) != 1)
@ -464,14 +461,11 @@ void Dpt_GetDataOfDepartmentByCod (struct Dpt_Department *Dpt)
/* Get the code of the institution (row[0]) */
Dpt->InsCod = Str_ConvertStrCodToLongCod (row[0]);
/* Get the short name of the department (row[1]) */
/* Get short name (row[1]), full name (row[2])
and URL (row[3]) of the department */
Str_Copy (Dpt->ShrtName,row[1],sizeof (Dpt->ShrtName) - 1);
/* Get the full name of the department (row[2]) */
Str_Copy (Dpt->FullName,row[2],sizeof (Dpt->FullName) - 1);
/* Get the URL of the department (row[3]) */
Str_Copy (Dpt->WWW,row[3],sizeof (Dpt->WWW) - 1);
Str_Copy (Dpt->WWW ,row[3],sizeof (Dpt->WWW ) - 1);
/* Get number of teachers in this department (row[4]) */
if (sscanf (row[4],"%u",&Dpt->NumTchs) != 1)

View File

@ -1221,7 +1221,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
ListUsrCods.Lst = NULL;
/* Check if string is a user's ID, user's nickname or user's email address */
if (Nck_CheckIfNickWithArrobaIsValid (UsrDat.UsrIDNickOrEmail)) // 1: It's a nickname
if (Nck_CheckIfNickWithArrIsValid (UsrDat.UsrIDNickOrEmail)) // 1: It's a nickname
{
if ((UsrDat.UsrCod = Nck_GetUsrCodFromNickname (UsrDat.UsrIDNickOrEmail)) > 0)
{
@ -1346,7 +1346,7 @@ static void Enr_ReceiveFormUsrsCrs (Rol_Role_t Role)
ListUsrCods.Lst = NULL;
/* Check if the string is a user's ID, a user's nickname or a user's email address */
if (Nck_CheckIfNickWithArrobaIsValid (UsrDat.UsrIDNickOrEmail)) // 1: It's a nickname
if (Nck_CheckIfNickWithArrIsValid (UsrDat.UsrIDNickOrEmail)) // 1: It's a nickname
{
if ((UsrDat.UsrCod = Nck_GetUsrCodFromNickname (UsrDat.UsrIDNickOrEmail)) > 0)
{

View File

@ -1020,36 +1020,22 @@ static void ExaAnn_GetDataExamAnnFromDB (struct ExaAnn_ExamAnnouncements *ExamAn
ExamAnns->ExamAnn.ExamDate.Day);
/* Approximate duration (row[7]) */
if (sscanf (row[7],"%02u:%02u:%02u",&ExamAnns->ExamAnn.Duration.Hour,&ExamAnns->ExamAnn.Duration.Minute,&Second) != 3)
if (sscanf (row[7],"%02u:%02u:%02u",
&ExamAnns->ExamAnn.Duration.Hour,
&ExamAnns->ExamAnn.Duration.Minute,
&Second) != 3)
Lay_ShowErrorAndExit ("Wrong duration of exam.");
/* Place (row[8]) */
Str_Copy (ExamAnns->ExamAnn.Place,row[8],
sizeof (ExamAnns->ExamAnn.Place) - 1);
/* Exam mode (row[9]) */
Str_Copy (ExamAnns->ExamAnn.Mode,row[9],
sizeof (ExamAnns->ExamAnn.Mode) - 1);
/* Structure (row[10]) */
Str_Copy (ExamAnns->ExamAnn.Structure,row[10],
sizeof (ExamAnns->ExamAnn.Structure) - 1);
/* Documentation required (row[11]) */
Str_Copy (ExamAnns->ExamAnn.DocRequired,row[11],
sizeof (ExamAnns->ExamAnn.DocRequired) - 1);
/* Material required (row[12]) */
Str_Copy (ExamAnns->ExamAnn.MatRequired,row[12],
sizeof (ExamAnns->ExamAnn.MatRequired) - 1);
/* Material allowed (row[13]) */
Str_Copy (ExamAnns->ExamAnn.MatAllowed,row[13],
sizeof (ExamAnns->ExamAnn.MatAllowed) - 1);
/* Other information for students (row[14]) */
Str_Copy (ExamAnns->ExamAnn.OtherInfo,row[14],
sizeof (ExamAnns->ExamAnn.OtherInfo) - 1);
/* Place (row[8]), exam mode (row[9]), structure (row[10]),
documentation required (row[11]), material required (row[12]),
material allowed (row[13]) and other information for students (row[14]) */
Str_Copy (ExamAnns->ExamAnn.Place ,row[ 8],Cns_MAX_BYTES_TEXT);
Str_Copy (ExamAnns->ExamAnn.Mode ,row[ 9],Cns_MAX_BYTES_TEXT);
Str_Copy (ExamAnns->ExamAnn.Structure ,row[10],Cns_MAX_BYTES_TEXT);
Str_Copy (ExamAnns->ExamAnn.DocRequired,row[11],Cns_MAX_BYTES_TEXT);
Str_Copy (ExamAnns->ExamAnn.MatRequired,row[12],Cns_MAX_BYTES_TEXT);
Str_Copy (ExamAnns->ExamAnn.MatAllowed ,row[13],Cns_MAX_BYTES_TEXT);
Str_Copy (ExamAnns->ExamAnn.OtherInfo ,row[14],Cns_MAX_BYTES_TEXT);
/***** Free structure that stores the query result *****/
DB_FreeMySQLResult (&mysql_res);

View File

@ -646,11 +646,11 @@ void ExaPrn_GetPrintQuestionsFromDB (struct ExaPrn_Print *Print)
/* Get indexes for this question (row[3]) */
Str_Copy (Print->PrintedQuestions[NumQst].StrIndexes,row[3],
strlen (Print->PrintedQuestions[NumQst].StrIndexes) - 1);
sizeof (Print->PrintedQuestions[NumQst].StrIndexes) - 1);
/* Get answers selected by user for this question (row[4]) */
Str_Copy (Print->PrintedQuestions[NumQst].StrAnswers,row[4],
strlen (Print->PrintedQuestions[NumQst].StrAnswers) - 1);
sizeof (Print->PrintedQuestions[NumQst].StrAnswers) - 1);
}
/***** Free structure that stores the query result *****/
@ -1414,7 +1414,7 @@ static void ExaPrn_GetCorrectTxtAnswerFromDB (struct Tst_Question *Question)
/***** Copy answer text (row[0]) ******/
Str_Copy (Question->Answer.Options[NumOpt].Text,row[0],
strlen (Question->Answer.Options[NumOpt].Text) - 1);
Tst_MAX_BYTES_ANSWER_OR_FEEDBACK);
}
/***** Change format of answers text *****/

View File

@ -1425,13 +1425,13 @@ void ExaSet_GetQstDataFromDB (struct Tst_Question *Question)
Question->Stem[0] = '\0';
if (row[3])
if (row[3][0])
Str_Copy (Question->Stem,row[3],sizeof (Question->Stem) - 1);
Str_Copy (Question->Stem ,row[3],Cns_MAX_BYTES_TEXT);
/* Get the feedback (row[4]) */
Question->Feedback[0] = '\0';
if (row[4])
if (row[4][0])
Str_Copy (Question->Feedback,row[4],sizeof (Question->Feedback) - 1);
Str_Copy (Question->Feedback,row[4],Cns_MAX_BYTES_TEXT);
/* Get media (row[5]) */
Question->Media.MedCod = Str_ConvertStrCodToLongCod (row[5]);
@ -1486,15 +1486,15 @@ void ExaSet_GetQstDataFromDB (struct Tst_Question *Question)
Question->Answer.Options[NumOpt].Text[0] = '\0';
if (row[1])
if (row[1][0])
Str_Copy (Question->Answer.Options[NumOpt].Text,row[1],
sizeof (Question->Answer.Options[NumOpt].Text) - 1);
Str_Copy (Question->Answer.Options[NumOpt].Text ,row[1],
Tst_MAX_BYTES_ANSWER_OR_FEEDBACK);
/* Get feedback (row[2]) */
Question->Answer.Options[NumOpt].Feedback[0] = '\0';
if (row[2])
if (row[2][0])
Str_Copy (Question->Answer.Options[NumOpt].Feedback,row[2],
sizeof (Question->Answer.Options[NumOpt].Feedback) - 1);
Tst_MAX_BYTES_ANSWER_OR_FEEDBACK);
/* Get media (row[3]) */
Question->Answer.Options[NumOpt].Media.MedCod = Str_ConvertStrCodToLongCod (row[3]);

View File

@ -337,7 +337,7 @@ static void For_ShowAForumPost (struct For_Forums *Forums,
bool LastPst,char LastSubject[Cns_MAX_BYTES_SUBJECT + 1],
bool NewPst,bool ICanModerateForum);
static void For_GetPstData (long PstCod,long *UsrCod,time_t *CreatTimeUTC,
char Subject[Cns_MAX_BYTES_SUBJECT + 1],
char Subject[Cns_MAX_BYTES_SUBJECT + 1],
char Content[Cns_MAX_BYTES_LONG_TEXT + 1],
struct Med_Media *Media);
static void For_WriteNumberOfPosts (const struct For_Forums *Forums,long UsrCod);
@ -1340,7 +1340,7 @@ static void For_ShowAForumPost (struct For_Forums *Forums,
/*****************************************************************************/
static void For_GetPstData (long PstCod,long *UsrCod,time_t *CreatTimeUTC,
char Subject[Cns_MAX_BYTES_SUBJECT + 1],
char Subject[Cns_MAX_BYTES_SUBJECT + 1],
char Content[Cns_MAX_BYTES_LONG_TEXT + 1],
struct Med_Media *Media)
{
@ -1371,10 +1371,8 @@ static void For_GetPstData (long PstCod,long *UsrCod,time_t *CreatTimeUTC,
/***** Get creation time (row[1]) *****/
*CreatTimeUTC = Dat_GetUNIXTimeFromStr (row[1]);
/***** Get subject (row[2]) *****/
Str_Copy (Subject,row[2],Cns_MAX_BYTES_SUBJECT);
/***** Get location (row[3]) *****/
/***** Get subject (row[2]) and location (row[3]) *****/
Str_Copy (Subject,row[2],Cns_MAX_BYTES_SUBJECT );
Str_Copy (Content,row[3],Cns_MAX_BYTES_LONG_TEXT);
/***** Get media (row[4]) *****/

View File

@ -1638,7 +1638,7 @@ static void Inf_SetInfoTxtIntoDB (const char *InfoTxtHTML,const char *InfoTxtMD)
void Inf_GetInfoTxtFromDB (long CrsCod,Inf_InfoType_t InfoType,
char InfoTxtHTML[Cns_MAX_BYTES_LONG_TEXT + 1],
char InfoTxtMD[Cns_MAX_BYTES_LONG_TEXT + 1])
char InfoTxtMD [Cns_MAX_BYTES_LONG_TEXT + 1])
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -1663,14 +1663,14 @@ void Inf_GetInfoTxtFromDB (long CrsCod,Inf_InfoType_t InfoType,
/* Get text in Markdown format */
if (InfoTxtMD)
Str_Copy (InfoTxtMD,row[1],Cns_MAX_BYTES_LONG_TEXT);
Str_Copy (InfoTxtMD ,row[1],Cns_MAX_BYTES_LONG_TEXT);
}
else
{
if (InfoTxtHTML)
InfoTxtHTML[0] = '\0';
if (InfoTxtMD)
InfoTxtMD[0] = '\0';
InfoTxtMD [0] = '\0';
}
/***** Free structure that stores the query result *****/

View File

@ -104,7 +104,7 @@ Inf_InfoSrc_t Inf_ConvertFromStrDBToInfoSrc (const char *StrInfoSrcDB);
void Inf_GetInfoTxtFromDB (long CrsCod,Inf_InfoType_t InfoType,
char InfoTxtHTML[Cns_MAX_BYTES_LONG_TEXT + 1],
char InfoTxtMD[Cns_MAX_BYTES_LONG_TEXT + 1]);
char InfoTxtMD [Cns_MAX_BYTES_LONG_TEXT + 1]);
void Inf_EditPlainTxtInfo (void);
void Inf_EditRichTxtInfo (void);

View File

@ -848,13 +848,10 @@ static void Ins_GetDataOfInstitFromRow (struct Ins_Instit *Ins,MYSQL_ROW row)
/***** Get requester user's code (row[3]) *****/
Ins->RequesterUsrCod = Str_ConvertStrCodToLongCod (row[3]);
/***** Get the short name of the institution (row[4]) *****/
/***** Get short name (row[4]), full name (row[5])
and URL (row[6]) of the institution *****/
Str_Copy (Ins->ShrtName,row[4],sizeof (Ins->ShrtName) - 1);
/***** Get the full name of the institution (row[5]) *****/
Str_Copy (Ins->FullName,row[5],sizeof (Ins->FullName) - 1);
/***** Get the URL of the institution (row[6]) *****/
Str_Copy (Ins->WWW ,row[6],sizeof (Ins->WWW ) - 1);
}
@ -963,18 +960,16 @@ static void Ins_GetShrtNameAndCtyOfInstitution (struct Ins_Instit *Ins,
/* Get row */
row = mysql_fetch_row (mysql_res);
/* Get the short name of this institution (row[0]) */
/* Get short name (row[0]) and country name (row[1]) of this institution */
Str_Copy (Gbl.Cache.InstitutionShrtNameAndCty.ShrtName,row[0],
sizeof (Gbl.Cache.InstitutionShrtNameAndCty.ShrtName) - 1);
/* Get the name of the country (row[1]) */
Str_Copy (Gbl.Cache.InstitutionShrtNameAndCty.CtyName,row[1],
sizeof (Gbl.Cache.InstitutionShrtNameAndCty.CtyName) - 1);
Str_Copy (Gbl.Cache.InstitutionShrtNameAndCty.CtyName ,row[1],
sizeof (Gbl.Cache.InstitutionShrtNameAndCty.CtyName ) - 1);
}
else
{
Gbl.Cache.InstitutionShrtNameAndCty.ShrtName[0] = '\0';
Gbl.Cache.InstitutionShrtNameAndCty.CtyName[0] = '\0';
Gbl.Cache.InstitutionShrtNameAndCty.CtyName [0] = '\0';
}
/* Free structure that stores the query result */
@ -982,7 +977,7 @@ static void Ins_GetShrtNameAndCtyOfInstitution (struct Ins_Instit *Ins,
Str_Copy (Ins->ShrtName,Gbl.Cache.InstitutionShrtNameAndCty.ShrtName,
sizeof (Ins->ShrtName) - 1);
Str_Copy (CtyName,Gbl.Cache.InstitutionShrtNameAndCty.CtyName,
Str_Copy (CtyName ,Gbl.Cache.InstitutionShrtNameAndCty.CtyName ,
Cns_HIERARCHY_MAX_BYTES_FULL_NAME);
}

View File

@ -74,7 +74,8 @@ static void Mai_GetParamMaiOrder (void);
static void Mai_PutIconToEditMailDomains (__attribute__((unused)) void *Args);
static void Mai_EditMailDomainsInternal (void);
static void Mai_GetListMailDomainsAllowedForNotif (void);
static void Mai_GetMailDomain (const char *Email,char MailDomain[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]);
static void Mai_GetMailDomain (const char *Email,
char MailDomain[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]);
static bool Mai_CheckIfMailDomainIsAllowedForNotif (const char MailDomain[Cns_MAX_BYTES_EMAIL_ADDRESS + 1]);
static void Mai_ListMailDomainsForEdition (void);
@ -359,7 +360,8 @@ bool Mai_CheckIfUsrCanReceiveEmailNotif (const struct UsrData *UsrDat)
/********************** Get mailbox from email address ***********************/
/*****************************************************************************/
static void Mai_GetMailDomain (const char *Email,char MailDomain[Cns_MAX_BYTES_EMAIL_ADDRESS + 1])
static void Mai_GetMailDomain (const char *Email,
char MailDomain[Cns_MAX_BYTES_EMAIL_ADDRESS + 1])
{
const char *Ptr;

View File

@ -536,7 +536,7 @@ static void Msg_WriteFormUsrsIDsOrNicksOtherRecipients (void)
extern const char *Txt_Other_recipients;
extern const char *Txt_Recipients;
extern const char *Txt_nicks_emails_or_IDs_separated_by_commas;
char Nickname[Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1];
char Nickname[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1];
unsigned ColSpan;
bool StdsAndTchsWritten = Gbl.Hierarchy.Level == Hie_Lvl_CRS && // Course selected
(Gbl.Usrs.Me.IBelongToCurrentCrs || // I belong to it
@ -707,10 +707,10 @@ static void Msg_WriteFormSubjectAndContentMsgToUsrs (struct Msg_Messages *Messag
static void Msg_PutHiddenParamAnotherRecipient (const struct UsrData *UsrDat)
{
char NickWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NickWithArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
snprintf (NickWithArroba,sizeof (NickWithArroba),"@%s",UsrDat->Nickname);
Par_PutHiddenParamString (NULL,"OtherRecipients",NickWithArroba);
snprintf (NickWithArr,sizeof (NickWithArr),"@%s",UsrDat->Nickname);
Par_PutHiddenParamString (NULL,"OtherRecipients",NickWithArr);
}
/*****************************************************************************/

View File

@ -74,29 +74,29 @@ static void Nck_UpdateUsrNick (struct UsrData *UsrDat);
/********* Check whether a nickname (with initial arroba) if valid ***********/
/*****************************************************************************/
bool Nck_CheckIfNickWithArrobaIsValid (const char *NickWithArroba)
bool Nck_CheckIfNickWithArrIsValid (const char *NickWithArr)
{
char NickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
unsigned Length;
const char *Ptr;
/***** A nickname must start by '@' *****/
if (NickWithArroba[0] != '@') // It's not a nickname
if (NickWithArr[0] != '@') // It's not a nickname
return false;
/***** Make a copy of nickname *****/
Str_Copy (NickWithoutArroba,NickWithArroba,sizeof (NickWithoutArroba) - 1);
Str_RemoveLeadingArrobas (NickWithoutArroba);
Length = strlen (NickWithoutArroba);
Str_Copy (NickWithoutArr,NickWithArr,sizeof (NickWithoutArr) - 1);
Str_RemoveLeadingArrobas (NickWithoutArr);
Length = strlen (NickWithoutArr);
/***** A nick (without arroba) must have a number of characters
Nck_MIN_BYTES_NICKNAME_WITHOUT_ARROBA <= Length <= Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA *****/
if (Length < Nck_MIN_BYTES_NICKNAME_WITHOUT_ARROBA ||
Length > Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA)
Nck_MIN_BYTES_NICK_WITHOUT_ARROBA <= Length <= Nck_MAX_BYTES_NICK_WITHOUT_ARROBA *****/
if (Length < Nck_MIN_BYTES_NICK_WITHOUT_ARROBA ||
Length > Nck_MAX_BYTES_NICK_WITHOUT_ARROBA)
return false;
/***** A nick can have digits, letters and '_' *****/
for (Ptr = NickWithoutArroba;
for (Ptr = NickWithoutArr;
*Ptr;
Ptr++)
if (!((*Ptr >= 'a' && *Ptr <= 'z') ||
@ -113,7 +113,7 @@ bool Nck_CheckIfNickWithArrobaIsValid (const char *NickWithArroba)
/*****************************************************************************/
bool Nck_GetNicknameFromUsrCod (long UsrCod,
char Nickname[Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1])
char Nickname[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1])
{
MYSQL_RES *mysql_res;
MYSQL_ROW row;
@ -127,7 +127,7 @@ bool Nck_GetNicknameFromUsrCod (long UsrCod,
{
/* Get nickname */
row = mysql_fetch_row (mysql_res);
Str_Copy (Nickname,row[0],Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA);
Str_Copy (Nickname,row[0],Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
Found = true;
}
else
@ -150,7 +150,7 @@ bool Nck_GetNicknameFromUsrCod (long UsrCod,
long Nck_GetUsrCodFromNickname (const char *Nickname)
{
char NickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
MYSQL_RES *mysql_res;
MYSQL_ROW row;
long UsrCod = -1L;
@ -159,8 +159,8 @@ long Nck_GetUsrCodFromNickname (const char *Nickname)
if (Nickname[0])
{
/***** Make a copy without possible starting arrobas *****/
Str_Copy (NickWithoutArroba,Nickname,sizeof (NickWithoutArroba) - 1);
Str_RemoveLeadingArrobas (NickWithoutArroba);
Str_Copy (NickWithoutArr,Nickname,sizeof (NickWithoutArr) - 1);
Str_RemoveLeadingArrobas (NickWithoutArr);
/***** Get user's code from database *****/
/* Check if user code from table usr_nicknames is also in table usr_data */
@ -169,7 +169,7 @@ long Nck_GetUsrCodFromNickname (const char *Nickname)
" FROM usr_nicknames,usr_data"
" WHERE usr_nicknames.Nickname='%s'"
" AND usr_nicknames.UsrCod=usr_data.UsrCod",
NickWithoutArroba))
NickWithoutArr))
{
/* Get row */
row = mysql_fetch_row (mysql_res);
@ -227,7 +227,7 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
unsigned NumNicks;
unsigned NumNick;
Act_Action_t NextAction;
char NickWithArroba[1 + Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1];
char NickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1];
const struct UsrData *UsrDat = (ItsMe ? &Gbl.Usrs.Me.UsrDat :
&Gbl.Usrs.Other.UsrDat);
@ -347,8 +347,8 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
}
snprintf (NickWithArroba,sizeof (NickWithArroba),"@%s",row[0]);
Par_PutHiddenParamString (NULL,"NewNick",NickWithArroba); // Nickname
snprintf (NickWithArr,sizeof (NickWithArr),"@%s",row[0]);
Par_PutHiddenParamString (NULL,"NewNick",NickWithArr); // Nickname
Btn_PutConfirmButtonInline (Txt_Use_this_nickname);
Frm_EndForm ();
}
@ -393,10 +393,10 @@ static void Nck_ShowFormChangeUsrNickname (bool ItsMe,
Frm_StartFormAnchor (NextAction,Nck_NICKNAME_SECTION_ID);
Usr_PutParamUsrCodEncrypted (UsrDat->EnUsrCod);
}
snprintf (NickWithArroba,sizeof (NickWithArroba),"@%s",
snprintf (NickWithArr,sizeof (NickWithArr),"@%s",
Gbl.Usrs.Me.UsrDat.Nickname);
HTM_INPUT_TEXT ("NewNick",1 + Nck_MAX_CHARS_NICKNAME_WITHOUT_ARROBA,
NickWithArroba,HTM_DONT_SUBMIT_ON_CHANGE,
HTM_INPUT_TEXT ("NewNick",1 + Nck_MAX_CHARS_NICK_WITHOUT_ARROBA,
NickWithArr,HTM_DONT_SUBMIT_ON_CHANGE,
"id=\"NewNick\" size=\"18\"");
HTM_BR ();
Btn_PutCreateButtonInline (NumNicks ? Txt_Change_nickname : // I already have a nickname
@ -436,21 +436,21 @@ void Nck_RemoveMyNick (void)
{
extern const char *Txt_Nickname_X_removed;
extern const char *Txt_You_can_not_delete_your_current_nickname;
char NickWithoutArroba[Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1];
char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1];
/***** Get nickname from form *****/
Par_GetParToText ("Nick",NickWithoutArroba,
Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA);
Par_GetParToText ("Nick",NickWithoutArr,
Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
if (strcasecmp (NickWithoutArroba,Gbl.Usrs.Me.UsrDat.Nickname)) // Only if not my current nickname
if (strcasecmp (NickWithoutArr,Gbl.Usrs.Me.UsrDat.Nickname)) // Only if not my current nickname
{
/***** Remove one of my old nicknames *****/
Nck_RemoveNicknameFromDB (Gbl.Usrs.Me.UsrDat.UsrCod,NickWithoutArroba);
Nck_RemoveNicknameFromDB (Gbl.Usrs.Me.UsrDat.UsrCod,NickWithoutArr);
/***** Show message *****/
Ale_CreateAlert (Ale_SUCCESS,Nck_NICKNAME_SECTION_ID,
Txt_Nickname_X_removed,
NickWithoutArroba);
NickWithoutArr);
}
else
Ale_CreateAlert (Ale_WARNING,Nck_NICKNAME_SECTION_ID,
@ -467,7 +467,7 @@ void Nck_RemoveMyNick (void)
void Nck_RemoveOtherUsrNick (void)
{
extern const char *Txt_Nickname_X_removed;
char NickWithoutArroba[Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1];
char NickWithoutArr[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1];
/***** Get user whose nick must be removed *****/
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
@ -475,16 +475,16 @@ void Nck_RemoveOtherUsrNick (void)
if (Usr_ICanEditOtherUsr (&Gbl.Usrs.Other.UsrDat))
{
/***** Get nickname from form *****/
Par_GetParToText ("Nick",NickWithoutArroba,
Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA);
Par_GetParToText ("Nick",NickWithoutArr,
Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
/***** Remove one of the old nicknames *****/
Nck_RemoveNicknameFromDB (Gbl.Usrs.Other.UsrDat.UsrCod,NickWithoutArroba);
Nck_RemoveNicknameFromDB (Gbl.Usrs.Other.UsrDat.UsrCod,NickWithoutArr);
/***** Show message *****/
Ale_CreateAlert (Ale_SUCCESS,Nck_NICKNAME_SECTION_ID,
Txt_Nickname_X_removed,
NickWithoutArroba);
NickWithoutArr);
/***** Show user's account again *****/
Acc_ShowFormChgOtherUsrAccount ();
@ -556,57 +556,57 @@ static void Nck_UpdateUsrNick (struct UsrData *UsrDat)
extern const char *Txt_The_nickname_X_had_been_registered_by_another_user;
extern const char *Txt_The_nickname_X_has_been_registered_successfully;
extern const char *Txt_The_nickname_entered_X_is_not_valid_;
char NewNickWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NewNickWithoutArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NewNickWithArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
char NewNickWithoutArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
/***** Get new nickname from form *****/
Par_GetParToText ("NewNick",NewNickWithArroba,
Nck_MAX_BYTES_NICKNAME_FROM_FORM);
if (Nck_CheckIfNickWithArrobaIsValid (NewNickWithArroba)) // If new nickname is valid
Par_GetParToText ("NewNick",NewNickWithArr,
Nck_MAX_BYTES_NICK_FROM_FORM);
if (Nck_CheckIfNickWithArrIsValid (NewNickWithArr)) // If new nickname is valid
{
/***** Remove arrobas at the beginning *****/
Str_Copy (NewNickWithoutArroba,NewNickWithArroba,sizeof (NewNickWithoutArroba) - 1);
Str_RemoveLeadingArrobas (NewNickWithoutArroba);
Str_Copy (NewNickWithoutArr,NewNickWithArr,sizeof (NewNickWithoutArr) - 1);
Str_RemoveLeadingArrobas (NewNickWithoutArr);
/***** Check if new nickname exists in database *****/
if (!strcmp (UsrDat->Nickname,NewNickWithoutArroba)) // User's nickname match exactly the new nickname
if (!strcmp (UsrDat->Nickname,NewNickWithoutArr)) // User's nickname match exactly the new nickname
Ale_CreateAlert (Ale_WARNING,Nck_NICKNAME_SECTION_ID,
Txt_The_nickname_X_matches_the_one_you_had_previously_registered,
NewNickWithoutArroba);
else if (strcasecmp (UsrDat->Nickname,NewNickWithoutArroba)) // User's nickname does not match, not even case insensitive, the new nickname
NewNickWithoutArr);
else if (strcasecmp (UsrDat->Nickname,NewNickWithoutArr)) // User's nickname does not match, not even case insensitive, the new nickname
{
/***** Check if the new nickname matches any of my old nicknames *****/
if (!DB_QueryCOUNT ("can not check if nickname already existed",
"SELECT COUNT(*) FROM usr_nicknames"
" WHERE UsrCod=%ld AND Nickname='%s'",
UsrDat->UsrCod,NewNickWithoutArroba)) // No matches
UsrDat->UsrCod,NewNickWithoutArr)) // No matches
/***** Check if the new nickname matches any of the nicknames of other users *****/
if (DB_QueryCOUNT ("can not check if nickname already existed",
"SELECT COUNT(*) FROM usr_nicknames"
" WHERE Nickname='%s' AND UsrCod<>%ld",
NewNickWithoutArroba,UsrDat->UsrCod)) // A nickname of another user is the same that user's nickname
NewNickWithoutArr,UsrDat->UsrCod)) // A nickname of another user is the same that user's nickname
Ale_CreateAlert (Ale_WARNING,Nck_NICKNAME_SECTION_ID,
Txt_The_nickname_X_had_been_registered_by_another_user,
NewNickWithoutArroba);
NewNickWithoutArr);
}
if (Ale_GetNumAlerts () == 0) // No problems
{
// Now we know the new nickname is not already in database
// and is diffent to the current one
Nck_UpdateNickInDB (UsrDat->UsrCod,NewNickWithoutArroba);
Str_Copy (UsrDat->Nickname,NewNickWithoutArroba,sizeof (UsrDat->Nickname) - 1);
Nck_UpdateNickInDB (UsrDat->UsrCod,NewNickWithoutArr);
Str_Copy (UsrDat->Nickname,NewNickWithoutArr,sizeof (UsrDat->Nickname) - 1);
Ale_CreateAlert (Ale_SUCCESS,Nck_NICKNAME_SECTION_ID,
Txt_The_nickname_X_has_been_registered_successfully,
NewNickWithoutArroba);
NewNickWithoutArr);
}
}
else // New nickname is not valid
Ale_CreateAlert (Ale_WARNING,Nck_NICKNAME_SECTION_ID,
Txt_The_nickname_entered_X_is_not_valid_,
NewNickWithArroba,
Nck_MIN_CHARS_NICKNAME_WITHOUT_ARROBA,
Nck_MAX_CHARS_NICKNAME_WITHOUT_ARROBA);
NewNickWithArr,
Nck_MIN_CHARS_NICK_WITHOUT_ARROBA,
Nck_MAX_CHARS_NICK_WITHOUT_ARROBA);
}
/*****************************************************************************/

View File

@ -32,24 +32,24 @@
/************************* Public types and constants ************************/
/*****************************************************************************/
#define Nck_MIN_CHARS_NICKNAME_WITHOUT_ARROBA 3
#define Nck_MIN_BYTES_NICKNAME_WITHOUT_ARROBA Nck_MIN_CHARS_NICKNAME_WITHOUT_ARROBA
#define Nck_MIN_CHARS_NICK_WITHOUT_ARROBA 3
#define Nck_MIN_BYTES_NICK_WITHOUT_ARROBA Nck_MIN_CHARS_NICK_WITHOUT_ARROBA
#define Nck_MAX_CHARS_NICKNAME_WITHOUT_ARROBA 16
#define Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA Nck_MAX_CHARS_NICKNAME_WITHOUT_ARROBA
#define Nck_MAX_CHARS_NICK_WITHOUT_ARROBA 16
#define Nck_MAX_BYTES_NICK_WITHOUT_ARROBA Nck_MAX_CHARS_NICK_WITHOUT_ARROBA
#define Nck_MAX_BYTES_NICKNAME_FROM_FORM (128 - 1) // For variables that store characters typed in a form
#define Nck_MAX_BYTES_NICK_FROM_FORM (128 - 1) // For variables that store characters typed in a form
#define Nck_MAX_BYTES_LIST_NICKS ((Nck_MAX_BYTES_NICKNAME_FROM_FORM + 2) * Cfg_MAX_USRS_IN_LIST)
#define Nck_MAX_BYTES_LIST_NICKS ((Nck_MAX_BYTES_NICK_FROM_FORM + 2) * Cfg_MAX_USRS_IN_LIST)
/*****************************************************************************/
/***************************** Public prototypes *****************************/
/*****************************************************************************/
bool Nck_CheckIfNickWithArrobaIsValid (const char *NickWithArroba);
bool Nck_CheckIfNickWithArrIsValid (const char *NickWithArr);
bool Nck_GetNicknameFromUsrCod (long UsrCod,
char Nickname[Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1]);
char Nickname[Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1]);
long Nck_GetUsrCodFromNickname (const char *Nickname);
void Nck_ShowFormChangeMyNickname (bool IMustFillNickname);

View File

@ -660,7 +660,7 @@ void Par_GetMainParameters (void)
extern const char *The_ThemeId[The_NUM_THEMES];
extern const char *Ico_IconSetId[Ico_NUM_ICON_SETS];
long ActCod;
char Nickname[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char Nickname[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
char URL[PATH_MAX + 1];
char LongStr[Cns_MAX_DECIMAL_DIGITS_LONG + 1];
@ -688,7 +688,7 @@ void Par_GetMainParameters (void)
/***** Get another user's nickname, if exists
(this nickname is used to go to another user's profile,
not to get the logged user) *****/
if (Par_GetParToText ("usr",Nickname,Nck_MAX_BYTES_NICKNAME_FROM_FORM))
if (Par_GetParToText ("usr",Nickname,Nck_MAX_BYTES_NICK_FROM_FORM))
{
if (Nickname[0])
{
@ -704,7 +704,7 @@ void Par_GetMainParameters (void)
Gbl.Action.Act = Gbl.Action.Original = ActSeeOthPubPrf; // Set default action if no other is specified
}
}
else if (Par_GetParToText ("agd",Nickname,Nck_MAX_BYTES_NICKNAME_FROM_FORM))
else if (Par_GetParToText ("agd",Nickname,Nck_MAX_BYTES_NICK_FROM_FORM))
{
if (Nickname[0])
{
@ -796,12 +796,10 @@ void Par_GetMainParameters (void)
if (Gbl.Prefs.Theme == The_THEME_UNKNOWN)
Gbl.Prefs.Theme = The_THEME_DEFAULT;
/***** Set path of theme *****/
/***** Set path of theme and path of icon set *****/
snprintf (URL,sizeof (URL),"%s/%s",
Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Gbl.Prefs.Theme]);
Str_Copy (Gbl.Prefs.URLTheme,URL,sizeof (Gbl.Prefs.URLTheme) - 1);
/***** Set path of icon set *****/
Cfg_URL_ICON_THEMES_PUBLIC,The_ThemeId[Gbl.Prefs.Theme ]);
Str_Copy (Gbl.Prefs.URLTheme ,URL,sizeof (Gbl.Prefs.URLTheme ) - 1);
snprintf (URL,sizeof (URL),"%s/%s",
Cfg_URL_ICON_SETS_PUBLIC,Ico_IconSetId[Gbl.Prefs.IconSet]);
Str_Copy (Gbl.Prefs.URLIconSet,URL,sizeof (Gbl.Prefs.URLIconSet) - 1);

View File

@ -333,7 +333,7 @@ void Pwd_ChkIdLoginAndSendNewPwd (void)
/***** Check if user exists *****/
/* Check if user has typed his user's ID or his nickname */
if (Nck_CheckIfNickWithArrobaIsValid (Gbl.Usrs.Me.UsrIdLogin)) // 1: It's a nickname
if (Nck_CheckIfNickWithArrIsValid (Gbl.Usrs.Me.UsrIdLogin)) // 1: It's a nickname
{
if ((Gbl.Usrs.Me.UsrDat.UsrCod = Nck_GetUsrCodFromNickname (Gbl.Usrs.Me.UsrIdLogin)) > 0)
{

View File

@ -455,8 +455,8 @@ void Plc_GetDataOfPlaceByCod (struct Plc_Place *Plc)
}
else if (Plc->PlcCod == 0)
{
Str_Copy (Plc->ShrtName,Txt_Another_place,sizeof (Plc->ShrtName) - 1);
Str_Copy (Plc->FullName,Txt_Another_place,sizeof (Plc->FullName) - 1);
Str_Copy (Plc->ShrtName,Txt_Another_place ,sizeof (Plc->ShrtName) - 1);
Str_Copy (Plc->FullName,Txt_Another_place ,sizeof (Plc->FullName) - 1);
}
else if (Plc->PlcCod > 0)
{

View File

@ -708,8 +708,7 @@ void Plg_ChangePlgAppKey (void)
Ale_CreateAlertYouCanNotLeaveFieldEmpty ();
/***** Update app key *****/
Str_Copy (Plg_EditingPlg->AppKey,NewAppKey,
sizeof (Plg_EditingPlg->AppKey) - 1);
Str_Copy (Plg_EditingPlg->AppKey,NewAppKey,sizeof (Plg_EditingPlg->AppKey) - 1);
}
/*****************************************************************************/

View File

@ -139,14 +139,14 @@ void Prf_SeeSocialProfiles (void)
/*****************************************************************************/
char *Prf_GetURLPublicProfile (char URL[Cns_MAX_BYTES_WWW + 1],
const char *NickWithoutArroba)
const char *NickWithoutArr)
{
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
/***** Build URL using nickname *****/
snprintf (URL,Cns_MAX_BYTES_WWW + 1,"%s/%s?usr=@%s",
Cfg_URL_SWAD_CGI,Lan_STR_LANG_ID[Gbl.Prefs.Language],
NickWithoutArroba);
NickWithoutArr);
return URL;
}
@ -190,7 +190,7 @@ void Prf_RequestUserProfile (void)
extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_Nickname;
extern const char *Txt_Continue;
char NickWithArroba[1 + Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1];
char NickWithArr[1 + Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1];
if (Gbl.Usrs.Me.Logged)
{
@ -215,9 +215,9 @@ void Prf_RequestUserProfile (void)
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);
HTM_TxtColonNBSP (Txt_Nickname);
snprintf (NickWithArroba,sizeof (NickWithArroba),"@%s",
snprintf (NickWithArr,sizeof (NickWithArr),"@%s",
Gbl.Usrs.Me.UsrDat.Nickname);
HTM_INPUT_TEXT ("usr",Nck_MAX_BYTES_NICKNAME_FROM_FORM,NickWithArroba,
HTM_INPUT_TEXT ("usr",Nck_MAX_BYTES_NICK_FROM_FORM,NickWithArr,
HTM_DONT_SUBMIT_ON_CHANGE,
"size=\"18\"");
HTM_LABEL_End ();

View File

@ -53,7 +53,7 @@ struct UsrFigures
void Prf_SeeSocialProfiles (void);
char *Prf_GetURLPublicProfile (char URL[Cns_MAX_BYTES_WWW + 1],
const char *NickWithoutArroba);
const char *NickWithoutArr);
void Prf_PutLinkMyPublicProfile (void);
void Prf_PutLinkRequestAnotherUserProfile (void);
void Prf_RequestUserProfile (void);

View File

@ -3229,11 +3229,11 @@ void Prj_GetDataOfProjectByCod (struct Prj_Project *Prj)
/* Get title (row[10]), description (row[11]), required knowledge (row[12]),
required materials (row[13]) and URL (row[14]) of the project */
Str_Copy (Prj->Title ,row[10],sizeof (Prj->Title ) - 1);
Str_Copy (Prj->Title ,row[10],sizeof (Prj->Title) - 1);
Str_Copy (Prj->Description,row[11],Cns_MAX_BYTES_TEXT);
Str_Copy (Prj->Knowledge ,row[12],Cns_MAX_BYTES_TEXT);
Str_Copy (Prj->Materials ,row[13],Cns_MAX_BYTES_TEXT);
Str_Copy (Prj->URL ,row[14],sizeof (Prj->URL ) - 1);
Str_Copy (Prj->URL ,row[14],sizeof (Prj->URL ) - 1);
}
/***** Free structure that stores the query result *****/

View File

@ -3675,29 +3675,26 @@ Rol_Role_t Rec_GetRoleFromRecordForm (void)
void Rec_GetUsrNameFromRecordForm (struct UsrData *UsrDat)
{
char Surname1 [Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1]; // Temporary surname 1
char FirstName[Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1]; // Temporary first name
char Surname1[Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1]; // Temporary surname 1
char FrstName[Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME + 1]; // Temporary first name
/***** Get surname 1 *****/
Par_GetParToText ("Surname1",Surname1,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Par_GetParToText ("Surname1",Surname1,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Str_ConvertToTitleType (Surname1);
// Surname 1 is mandatory, so avoid overwriting surname 1 with empty string
if (Surname1[0]) // New surname 1 not empty
Str_Copy (UsrDat->Surname1,Surname1,sizeof (UsrDat->Surname1) - 1);
/***** Get surname 2 *****/
Par_GetParToText ("Surname2",UsrDat->Surname2,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Par_GetParToText ("Surname2",UsrDat->Surname2,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Str_ConvertToTitleType (UsrDat->Surname2);
/***** Get first name *****/
Par_GetParToText ("FirstName",FirstName,
Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Str_ConvertToTitleType (FirstName);
Par_GetParToText ("FirstName",FrstName,Usr_MAX_BYTES_FIRSTNAME_OR_SURNAME);
Str_ConvertToTitleType (FrstName);
// First name is mandatory, so avoid overwriting first name with empty string
if (FirstName[0]) // New first name not empty
Str_Copy (UsrDat->FrstName,FirstName,sizeof (UsrDat->FrstName) - 1);
if (FrstName[0]) // New first name not empty
Str_Copy (UsrDat->FrstName,FrstName,sizeof (UsrDat->FrstName) - 1);
/***** Build full name *****/
Usr_BuildFullName (UsrDat);

View File

@ -290,10 +290,10 @@ void Str_InsertLinks (char *Txt,unsigned long MaxLength,size_t MaxCharsURLOnScre
Links[NumLinks].NumActualBytes = (size_t) (PtrSrc - Links[NumLinks].PtrStart);
/* A nick (without arroba) must have a number of characters
Nck_MIN_BYTES_NICKNAME_WITHOUT_ARROBA <= Length <= Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA */
Nck_MIN_BYTES_NICK_WITHOUT_ARROBA <= Length <= Nck_MAX_BYTES_NICK_WITHOUT_ARROBA */
Length = Links[NumLinks].NumActualBytes - 1; // Do not count the initial @
IsNickname = (Length >= Nck_MIN_BYTES_NICKNAME_WITHOUT_ARROBA &&
Length <= Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA);
IsNickname = (Length >= Nck_MIN_BYTES_NICK_WITHOUT_ARROBA &&
Length <= Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
if (IsNickname)
{
@ -730,9 +730,9 @@ void Str_AnalyzeTxtAndStoreNotifyEventToMentionedUsrs (long PubCod,const char *T
Nickname.Length = (size_t) (Ptr - Nickname.PtrStart);
/* A nick (without arroba) must have a number of characters
Nck_MIN_BYTES_NICKNAME_WITHOUT_ARROBA <= Length <= Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA */
IsNickname = (Nickname.Length >= Nck_MIN_BYTES_NICKNAME_WITHOUT_ARROBA &&
Nickname.Length <= Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA);
Nck_MIN_BYTES_NICK_WITHOUT_ARROBA <= Length <= Nck_MAX_BYTES_NICK_WITHOUT_ARROBA */
IsNickname = (Nickname.Length >= Nck_MIN_BYTES_NICK_WITHOUT_ARROBA &&
Nickname.Length <= Nck_MAX_BYTES_NICK_WITHOUT_ARROBA);
if (IsNickname)
{
@ -3068,7 +3068,7 @@ void Str_Concat (char *Dst,const char *Src,size_t DstSize)
static char *Str_String = NULL;
// fmt must be a string including "%s"
// Str_FreeMsg() must be called after calling this function
// Str_FreeString() must be called after calling this function
char *Str_BuildStringStr (const char *fmt,const char *Str)
{
@ -3080,7 +3080,7 @@ char *Str_BuildStringStr (const char *fmt,const char *Str)
}
// fmt must be a string including "%ld"
// Str_FreeMsg() must be called after calling this function
// Str_FreeString() must be called after calling this function
char *Str_BuildStringLong (const char *fmt,long Num)
{
@ -3091,7 +3091,7 @@ char *Str_BuildStringLong (const char *fmt,long Num)
return Str_String;
}
// Str_FreeMsg() must be called after calling this function
// Str_FreeString() must be called after calling this function
char *Str_BuildStringLongStr (long Num,const char *Str)
{

View File

@ -3868,13 +3868,11 @@ bool Tst_GetQstDataFromDB (struct Tst_Question *Question)
/* Get shuffle (row[2]) */
Question->Answer.Shuffle = (row[2][0] == 'Y');
/* Get the stem (row[3]) */
Question->Stem[0] = '\0';
/* Get the stem (row[3]) and the feedback (row[4]) */
Question->Stem [0] = '\0';
if (row[3])
if (row[3][0])
Str_Copy (Question->Stem,row[3],Cns_MAX_BYTES_TEXT);
/* Get the feedback (row[4]) */
Str_Copy (Question->Stem ,row[3],Cns_MAX_BYTES_TEXT);
Question->Feedback[0] = '\0';
if (row[4])
if (row[4][0])
@ -3961,14 +3959,12 @@ bool Tst_GetQstDataFromDB (struct Tst_Question *Question)
/* Abort on error */
Ale_ShowAlertsAndExit ();
/* Get text (row[1]) */
Question->Answer.Options[NumOpt].Text[0] = '\0';
/* Get text (row[1]) and feedback (row[2])*/
Question->Answer.Options[NumOpt].Text [0] = '\0';
if (row[1])
if (row[1][0])
Str_Copy (Question->Answer.Options[NumOpt].Text,row[1],
Str_Copy (Question->Answer.Options[NumOpt].Text ,row[1],
Tst_MAX_BYTES_ANSWER_OR_FEEDBACK);
/* Get feedback (row[2]) */
Question->Answer.Options[NumOpt].Feedback[0] = '\0';
if (row[2])
if (row[2][0])

View File

@ -2840,7 +2840,7 @@ unsigned Usr_GetParamOtherUsrIDNickOrEMailAndGetUsrCods (struct ListUsrCods *Lis
/***** Check if it's an ID, a nickname or an email address *****/
if (Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail[0])
{
if (Nck_CheckIfNickWithArrobaIsValid (Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail)) // 1: It's a nickname
if (Nck_CheckIfNickWithArrIsValid (Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail)) // 1: It's a nickname
{
if ((Gbl.Usrs.Other.UsrDat.UsrCod = Nck_GetUsrCodFromNickname (Gbl.Usrs.Other.UsrDat.UsrIDNickOrEmail)) > 0)
{
@ -3137,7 +3137,7 @@ static bool Usr_ChkUsrAndGetUsrDataFromDirectLogin (void)
}
/***** Check if user has typed his user's ID, his nickname or his email address *****/
if (Nck_CheckIfNickWithArrobaIsValid (Gbl.Usrs.Me.UsrIdLogin)) // 1: It's a nickname
if (Nck_CheckIfNickWithArrIsValid (Gbl.Usrs.Me.UsrIdLogin)) // 1: It's a nickname
{
// User is trying to log using his/her nickname
if ((Gbl.Usrs.Me.UsrDat.UsrCod = Nck_GetUsrCodFromNickname (Gbl.Usrs.Me.UsrIdLogin)) <= 0)
@ -5376,16 +5376,16 @@ static void Usr_GetListUsrsFromQuery (char *Query,Rol_Role_t Role,Hie_Lvl_Level_
/* Get encrypted user's code (row[1]), encrypted password (row[2]),
surname 1 (row[3]), surname 2 (row[4]), first name (row[5]), */
Str_Copy (UsrInList->EnUsrCod,row[1],sizeof (UsrInList->EnUsrCod) - 1);
Str_Copy (UsrInList->Password ,row[2],sizeof (UsrInList->Password ) - 1);
Str_Copy (UsrInList->Surname1 ,row[3],sizeof (UsrInList->Surname1 ) - 1);
Str_Copy (UsrInList->Surname2 ,row[4],sizeof (UsrInList->Surname2 ) - 1);
Str_Copy (UsrInList->FrstName ,row[5],sizeof (UsrInList->FrstName ) - 1);
Str_Copy (UsrInList->Password,row[2],sizeof (UsrInList->Password) - 1);
Str_Copy (UsrInList->Surname1,row[3],sizeof (UsrInList->Surname1) - 1);
Str_Copy (UsrInList->Surname2,row[4],sizeof (UsrInList->Surname2) - 1);
Str_Copy (UsrInList->FrstName,row[5],sizeof (UsrInList->FrstName) - 1);
/* Get user's sex (row[6]) */
UsrInList->Sex = Usr_GetSexFromStr (row[6]);
/* Get user's photo (row[7]) */
Str_Copy (UsrInList->Photo ,row[7],sizeof (UsrInList->Photo ) - 1);
Str_Copy (UsrInList->Photo ,row[7],sizeof (UsrInList->Photo ) - 1);
/* Get user's photo visibility (row[8]) */
UsrInList->PhotoVisibility = Pri_GetVisibilityFromStr (row[8]);
@ -5783,7 +5783,7 @@ bool Usr_GetListMsgRecipientsWrittenExplicitelyBySender (bool WriteErrorMsgs)
ListUsrCods.NumUsrs = 0;
ListUsrCods.Lst = NULL;
if (Nck_CheckIfNickWithArrobaIsValid (UsrIDNickOrEmail)) // 1: It's a nickname
if (Nck_CheckIfNickWithArrIsValid (UsrIDNickOrEmail)) // 1: It's a nickname
{
if ((UsrDat.UsrCod = Nck_GetUsrCodFromNickname (UsrIDNickOrEmail)) > 0)
{
@ -9843,7 +9843,7 @@ void Usr_RemoveUsrFromUsrBanned (long UsrCod)
void Usr_PrintUsrQRCode (void)
{
char NewNickWithArroba[Nck_MAX_BYTES_NICKNAME_FROM_FORM + 1];
char NewNickWithArr[Nck_MAX_BYTES_NICK_FROM_FORM + 1];
if (Usr_GetParamOtherUsrCodEncryptedAndGetUsrData ())
{
@ -9855,9 +9855,9 @@ void Usr_PrintUsrQRCode (void)
/***** Show QR code *****/
if (Gbl.Usrs.Other.UsrDat.Nickname[0])
{
snprintf (NewNickWithArroba,sizeof (NewNickWithArroba),"@%s",
snprintf (NewNickWithArr,sizeof (NewNickWithArr),"@%s",
Gbl.Usrs.Other.UsrDat.Nickname);
QR_ImageQRCode (NewNickWithArroba);
QR_ImageQRCode (NewNickWithArr);
}
/***** End box *****/

View File

@ -165,7 +165,7 @@ struct UsrData
struct ListIDs *List;
unsigned Num;
} IDs;
char Nickname [Nck_MAX_BYTES_NICKNAME_WITHOUT_ARROBA + 1];
char Nickname [Nck_MAX_BYTES_NICK_WITHOUT_ARROBA + 1];
char Password [Pwd_BYTES_ENCRYPTED_PASSWORD + 1];
struct
{