Version 15.171.1

This commit is contained in:
Antonio Cañas Vargas 2016-04-01 09:46:09 +02:00
parent 8242ade95f
commit 684dcdb224
3 changed files with 44 additions and 31 deletions

View File

@ -138,13 +138,14 @@
/****************************** Public constants *****************************/ /****************************** Public constants *****************************/
/*****************************************************************************/ /*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 15.171 (2016-04-01)" #define Log_PLATFORM_VERSION "SWAD 15.171.1 (2016-04-01)"
#define CSS_FILE "swad15.165.5.css" #define CSS_FILE "swad15.165.5.css"
#define JS_FILE "swad15.131.3.js" #define JS_FILE "swad15.131.3.js"
// Number of lines (includes comments but not blank lines) has been got with the following command: // Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1 // nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*.h sql/swad*.sql | tail -1
/* /*
Version 15.171.1: Apr 01, 2016 Code refactoring in functions to get a parameter and to receive file. (197271 lines)
Version 15.171: Apr 01, 2016 Code refactoring in function to get a parameter. (197259 lines) Version 15.171: Apr 01, 2016 Code refactoring in function to get a parameter. (197259 lines)
Version 15.170: Apr 01, 2016 Code refactoring in function to receive file. (197310 lines) Version 15.170: Apr 01, 2016 Code refactoring in function to receive file. (197310 lines)
Version 15.169.6: Mar 31, 2016 Code refactoring in function to get a parameter. (197313 lines) Version 15.169.6: Mar 31, 2016 Code refactoring in function to get a parameter. (197313 lines)

View File

@ -224,9 +224,22 @@ struct Param *Fil_StartReceptionOfFile (char *FileName,char *MIMEType)
{ {
struct Param *Param; struct Param *Param;
/***** Get parameter *****/
Par_GetParameter (Par_PARAM_SINGLE,Fil_NAME_OF_PARAM_FILENAME_ORG,NULL,
Fil_MAX_FILE_SIZE,&Param);
/***** Get filename *****/ /***** Get filename *****/
Par_GetParameter (Par_PARAM_SINGLE,Fil_NAME_OF_PARAM_FILENAME_ORG,FileName, /* Check if filename exists */
PATH_MAX,&Param); if (Param->FileName.Start == 0 ||
Param->FileName.Length == 0 ||
Param->FileName.Length > PATH_MAX)
Lay_ShowErrorAndExit ("Error while getting filename.");
/* Copy filename */
fseek (Gbl.F.Tmp,Param->FileName.Start,SEEK_SET);
if (fread (FileName,sizeof (char),Param->FileName.Length,Gbl.F.Tmp) !=
Param->FileName.Length)
Lay_ShowErrorAndExit ("Error while getting filename.");
/***** Get MIME type *****/ /***** Get MIME type *****/
/* Check if MIME type exists */ /* Check if MIME type exists */

View File

@ -469,7 +469,8 @@ void Par_FreeParams (void)
/************************* Get the value of a parameter **********************/ /************************* Get the value of a parameter **********************/
/*****************************************************************************/ /*****************************************************************************/
// Return the number of parameters found // Return the number of parameters found
// If ParamPtr is not null, on return it will point to the first ocurrence in list of parameters // If ParamPtr is not NULL, on return it will point to the first ocurrence in list of parameters
// ParamValue can be NULL (if so, no value is copied)
unsigned Par_GetParameter (tParamType ParamType,const char *ParamName, unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
char *ParamValue,size_t MaxBytes, char *ParamValue,size_t MaxBytes,
@ -482,11 +483,11 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
unsigned NumTimes; unsigned NumTimes;
bool ParamFound = false; bool ParamFound = false;
unsigned ParamNameLength; unsigned ParamNameLength;
struct StartLength Copy;
bool FindMoreThanOneOcurrence; bool FindMoreThanOneOcurrence;
/***** Default values returned *****/ /***** Default values returned *****/
ParamValue[0] = '\0'; // By default, the value of the parameter will be an empty string if (ParamValue)
ParamValue[0] = '\0'; // By default, the value of the parameter will be an empty string
/***** Only some selected parameters can be passed by GET method *****/ /***** Only some selected parameters can be passed by GET method *****/
if (Gbl.Params.GetMethod) if (Gbl.Params.GetMethod)
@ -535,6 +536,10 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
/***** Get the first ocurrence of this parameter in list *****/ /***** Get the first ocurrence of this parameter in list *****/
if (ParamPtr) if (ParamPtr)
*ParamPtr = Param; *ParamPtr = Param;
/***** If this parameter is a file ==> do not find more ocurrences ******/
if (Param->FileName.Start != 0) // It's a file
FindMoreThanOneOcurrence = false;
} }
else // Not the first ocurrence of this parameter else // Not the first ocurrence of this parameter
{ {
@ -549,28 +554,16 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
} }
/* Copy separator */ /* Copy separator */
*PtrDst++ = Par_SEPARATOR_PARAM_MULTIPLE; // Separator in the destination string if (PtrDst)
*PtrDst++ = Par_SEPARATOR_PARAM_MULTIPLE; // Separator in the destination string
BytesAlreadyCopied++; BytesAlreadyCopied++;
} }
/***** Copy parameter value *****/ /***** Copy parameter value *****/
if (Param->Value.Length) if (Param->Value.Length)
{ {
if (Param->FileName.Start != 0) // It's a file
{
/* Copy filename into ParamValue */
Copy.Start = Param->FileName.Start;
Copy.Length = Param->FileName.Length;
}
else // It's a normal parameter
{
/* Copy value into ParamValue */
Copy.Start = Param->Value.Start;
Copy.Length = Param->Value.Length;
}
/* Check if there is space to copy the parameter value */ /* Check if there is space to copy the parameter value */
if (BytesAlreadyCopied + Copy.Length > MaxBytes) if (BytesAlreadyCopied + Param->Value.Length > MaxBytes)
{ {
sprintf (Gbl.Message,"Parameter <strong>%s</strong> too large," sprintf (Gbl.Message,"Parameter <strong>%s</strong> too large,"
" it exceed the maximum allowed size (%lu bytes).", " it exceed the maximum allowed size (%lu bytes).",
@ -582,25 +575,31 @@ unsigned Par_GetParameter (tParamType ParamType,const char *ParamName,
switch (Gbl.ContentReceivedByCGI) switch (Gbl.ContentReceivedByCGI)
{ {
case Act_CONTENT_NORM: case Act_CONTENT_NORM:
strncpy (PtrDst,&Gbl.Params.QueryString[Copy.Start], if (PtrDst)
Copy.Length); strncpy (PtrDst,&Gbl.Params.QueryString[Param->Value.Start],
Param->Value.Length);
break; break;
case Act_CONTENT_DATA: case Act_CONTENT_DATA:
fseek (Gbl.F.Tmp,Copy.Start,SEEK_SET); if (Param->FileName.Start == 0 && // Copy into destination only if it's not a file
if (fread ((void *) PtrDst,sizeof (char),Copy.Length,Gbl.F.Tmp) != PtrDst)
Copy.Length) {
Lay_ShowErrorAndExit ("Error while getting value of parameter."); fseek (Gbl.F.Tmp,Param->Value.Start,SEEK_SET);
if (fread ((void *) PtrDst,sizeof (char),Param->Value.Length,Gbl.F.Tmp) !=
Param->Value.Length)
Lay_ShowErrorAndExit ("Error while getting value of parameter.");
}
break; break;
} }
BytesAlreadyCopied += Copy.Length; BytesAlreadyCopied += Param->Value.Length;
PtrDst += Copy.Length; if (PtrDst)
PtrDst += Param->Value.Length;
} }
} }
} }
} }
*PtrDst = '\0'; // Add the final NULL if (PtrDst)
*PtrDst = '\0'; // Add the final NULL
return NumTimes; return NumTimes;
} }