mirror of https://github.com/acanas/swad-core.git
Version 18.52.2
This commit is contained in:
parent
cd58031c02
commit
0b94efff3d
|
@ -431,10 +431,12 @@ En OpenSWAD:
|
||||||
ps2pdf source.ps destination.pdf
|
ps2pdf source.ps destination.pdf
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define Log_PLATFORM_VERSION "SWAD 18.52 (2019-02-20)"
|
#define Log_PLATFORM_VERSION "SWAD 18.52.2 (2019-02-21)"
|
||||||
#define CSS_FILE "swad18.52.css"
|
#define CSS_FILE "swad18.52.css"
|
||||||
#define JS_FILE "swad18.51.js"
|
#define JS_FILE "swad18.51.js"
|
||||||
/*
|
/*
|
||||||
|
Version 18.52.2: Feb 20, 2019 Fixed bug in reception of images. (237458 lines)
|
||||||
|
Version 18.52.1: Feb 20, 2019 Messages to debug problem with files. (237425 lines)
|
||||||
Version 18.52: Feb 20, 2019 Two new color themes: purple and pink. (237424 lines)
|
Version 18.52: Feb 20, 2019 Two new color themes: purple and pink. (237424 lines)
|
||||||
Copy the following icons to icon public directory:
|
Copy the following icons to icon public directory:
|
||||||
sudo mkdir /var/www/html/swad/icon/theme/purple
|
sudo mkdir /var/www/html/swad/icon/theme/purple
|
||||||
|
|
|
@ -431,7 +431,7 @@ void Fil_RemoveTree (const char Path[PATH_MAX + 1])
|
||||||
if (Fil_CheckIfPathExists (Path))
|
if (Fil_CheckIfPathExists (Path))
|
||||||
{
|
{
|
||||||
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in Fil_RemoveTree.");
|
||||||
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
||||||
{
|
{
|
||||||
if (rmdir (Path))
|
if (rmdir (Path))
|
||||||
|
@ -497,7 +497,10 @@ void Fil_RemoveOldTmpFiles (const char *Path,time_t TimeToRemove,bool RemoveDire
|
||||||
struct stat FileStatus;
|
struct stat FileStatus;
|
||||||
|
|
||||||
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
{
|
||||||
|
Ale_ShowAlert (Ale_ERROR,"Error while trying to remove old temporary files in directory "%s"",Path);
|
||||||
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in Fil_RemoveOldTmpFiles.");
|
||||||
|
}
|
||||||
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
||||||
{
|
{
|
||||||
/***** Scan the directory *****/
|
/***** Scan the directory *****/
|
||||||
|
|
|
@ -5352,7 +5352,7 @@ static void Brw_CalcSizeOfDirRecursive (unsigned Level,char *Path)
|
||||||
"%s/%s",
|
"%s/%s",
|
||||||
Path,FileList[NumFile]->d_name);
|
Path,FileList[NumFile]->d_name);
|
||||||
if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in Brw_CalcSizeOfDirRecursive.");
|
||||||
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
||||||
{
|
{
|
||||||
Gbl.FileBrowser.Size.NumFolds++;
|
Gbl.FileBrowser.Size.NumFolds++;
|
||||||
|
@ -5423,7 +5423,7 @@ static void Brw_ListDir (unsigned Level,const char *ParentRowId,
|
||||||
|
|
||||||
/***** Get file or folder status *****/
|
/***** Get file or folder status *****/
|
||||||
if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in Brw_ListDir.");
|
||||||
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
||||||
{
|
{
|
||||||
if (Gbl.FileBrowser.FullTree)
|
if (Gbl.FileBrowser.FullTree)
|
||||||
|
@ -6764,7 +6764,7 @@ void Brw_RemFileFromTree (void)
|
||||||
|
|
||||||
/***** Check if is a file/link or a folder *****/
|
/***** Check if is a file/link or a folder *****/
|
||||||
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in Brw_RemFileFromTree.");
|
||||||
else if (S_ISREG (FileStatus.st_mode)) // It's a file or a link
|
else if (S_ISREG (FileStatus.st_mode)) // It's a file or a link
|
||||||
{
|
{
|
||||||
/* Name of the file/link to be shown */
|
/* Name of the file/link to be shown */
|
||||||
|
@ -6818,7 +6818,7 @@ void Brw_RemFolderFromTree (void)
|
||||||
|
|
||||||
/***** Check if it's a file or a folder *****/
|
/***** Check if it's a file or a folder *****/
|
||||||
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (Path,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in Brw_RemFolderFromTree.");
|
||||||
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
||||||
if (Brw_RemoveFolderFromDiskAndDB (Path,
|
if (Brw_RemoveFolderFromDiskAndDB (Path,
|
||||||
Gbl.FileBrowser.Priv.FullPathInTree))
|
Gbl.FileBrowser.Priv.FullPathInTree))
|
||||||
|
@ -8288,7 +8288,7 @@ static bool Brw_PasteTreeIntoFolder (unsigned LevelOrg,
|
||||||
/***** Is it a file or a folder? *****/
|
/***** Is it a file or a folder? *****/
|
||||||
FileType = Brw_IS_UNKNOWN;
|
FileType = Brw_IS_UNKNOWN;
|
||||||
if (lstat (PathOrg,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (PathOrg,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in Brw_PasteTreeIntoFolder.");
|
||||||
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
||||||
FileType = Brw_IS_FOLDER;
|
FileType = Brw_IS_FOLDER;
|
||||||
else if (S_ISREG (FileStatus.st_mode)) // It's a regular file
|
else if (S_ISREG (FileStatus.st_mode)) // It's a regular file
|
||||||
|
@ -12558,7 +12558,7 @@ static void Brw_ScanDirRemovingOldFiles (unsigned Level,
|
||||||
// Folder st_mtime must be saved before remove files inside it
|
// Folder st_mtime must be saved before remove files inside it
|
||||||
// because st_mtime is updated by the deletion
|
// because st_mtime is updated by the deletion
|
||||||
if (lstat (Path,&FolderStatus)) // On success ==> 0 is returned
|
if (lstat (Path,&FolderStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in Brw_ScanDirRemovingOldFiles.");
|
||||||
/***** Scan directory *****/
|
/***** Scan directory *****/
|
||||||
else if ((NumFiles = scandir (Path,&FileList,NULL,alphasort)) >= 0) // No error
|
else if ((NumFiles = scandir (Path,&FileList,NULL,alphasort)) >= 0) // No error
|
||||||
{
|
{
|
||||||
|
@ -12580,7 +12580,7 @@ static void Brw_ScanDirRemovingOldFiles (unsigned Level,
|
||||||
|
|
||||||
/***** Get file or folder status *****/
|
/***** Get file or folder status *****/
|
||||||
if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (PathFileRel,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in Brw_ScanDirRemovingOldFiles.");
|
||||||
else if (S_ISDIR (FileStatus.st_mode)) // It's a folder
|
else if (S_ISDIR (FileStatus.st_mode)) // It's a folder
|
||||||
/* Scan subtree starting at this this directory recursively */
|
/* Scan subtree starting at this this directory recursively */
|
||||||
Brw_ScanDirRemovingOldFiles (Level + 1,PathFileRel,
|
Brw_ScanDirRemovingOldFiles (Level + 1,PathFileRel,
|
||||||
|
|
59
swad_image.c
59
swad_image.c
|
@ -65,9 +65,13 @@ extern struct Globals Gbl;
|
||||||
/***************************** Internal prototypes ***************************/
|
/***************************** Internal prototypes ***************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
static void Img_ProcessImage (struct Image *Image,
|
static Img_Action_t Img_GetImageActionFromForm (const char *ParamAction);
|
||||||
const char *FileNameImgOriginal,
|
static void Img_GetAndProcessImageFileFromForm (struct Image *Image,
|
||||||
const char *FileNameImgProcessed);
|
const char *ParamFile);
|
||||||
|
|
||||||
|
static int Img_ProcessImage (struct Image *Image,
|
||||||
|
const char *FileNameImgOriginal,
|
||||||
|
const char *FileNameImgProcessed);
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/*************************** Reset image fields ******************************/
|
/*************************** Reset image fields ******************************/
|
||||||
|
@ -381,7 +385,7 @@ void Img_SetParamNames (struct ParamUploadImg *ParamUploadImg,int NumImgInForm)
|
||||||
/************************* Get image action from form ************************/
|
/************************* Get image action from form ************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
Img_Action_t Img_GetImageActionFromForm (const char *ParamAction)
|
static Img_Action_t Img_GetImageActionFromForm (const char *ParamAction)
|
||||||
{
|
{
|
||||||
/***** Get parameter with the action to perform on image *****/
|
/***** Get parameter with the action to perform on image *****/
|
||||||
return (Img_Action_t)
|
return (Img_Action_t)
|
||||||
|
@ -395,8 +399,10 @@ Img_Action_t Img_GetImageActionFromForm (const char *ParamAction)
|
||||||
/**************************** Get image from form ****************************/
|
/**************************** Get image from form ****************************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Img_GetAndProcessImageFileFromForm (struct Image *Image,const char *ParamFile)
|
static void Img_GetAndProcessImageFileFromForm (struct Image *Image,
|
||||||
|
const char *ParamFile)
|
||||||
{
|
{
|
||||||
|
extern const char *Txt_The_image_could_not_be_processed_successfully;
|
||||||
struct Param *Param;
|
struct Param *Param;
|
||||||
char FileNameImgSrc[PATH_MAX + 1];
|
char FileNameImgSrc[PATH_MAX + 1];
|
||||||
char *PtrExtension;
|
char *PtrExtension;
|
||||||
|
@ -407,7 +413,7 @@ void Img_GetAndProcessImageFileFromForm (struct Image *Image,const char *ParamFi
|
||||||
char FileNameImgTmp[PATH_MAX + 1]; // Full name of temporary processed file
|
char FileNameImgTmp[PATH_MAX + 1]; // Full name of temporary processed file
|
||||||
bool WrongType = false;
|
bool WrongType = false;
|
||||||
|
|
||||||
/***** Rest image file status *****/
|
/***** Set image file status *****/
|
||||||
Image->Status = Img_FILE_NONE;
|
Image->Status = Img_FILE_NONE;
|
||||||
|
|
||||||
/***** Get filename and MIME type *****/
|
/***** Get filename and MIME type *****/
|
||||||
|
@ -418,6 +424,10 @@ void Img_GetAndProcessImageFileFromForm (struct Image *Image,const char *ParamFi
|
||||||
/* Get filename extension */
|
/* Get filename extension */
|
||||||
if ((PtrExtension = strrchr (FileNameImgSrc,(int) '.')) == NULL)
|
if ((PtrExtension = strrchr (FileNameImgSrc,(int) '.')) == NULL)
|
||||||
return;
|
return;
|
||||||
|
// PtrExtension now points to last '.' in file
|
||||||
|
|
||||||
|
PtrExtension++;
|
||||||
|
// PtrExtension now points to first char in extension
|
||||||
|
|
||||||
LengthExtension = strlen (PtrExtension);
|
LengthExtension = strlen (PtrExtension);
|
||||||
if (LengthExtension < Fil_MIN_BYTES_FILE_EXTENSION ||
|
if (LengthExtension < Fil_MIN_BYTES_FILE_EXTENSION ||
|
||||||
|
@ -453,7 +463,7 @@ void Img_GetAndProcessImageFileFromForm (struct Image *Image,const char *ParamFi
|
||||||
Fil_RemoveOldTmpFiles (PathImgPriv,Cfg_TIME_TO_DELETE_IMAGES_TMP_FILES,false);
|
Fil_RemoveOldTmpFiles (PathImgPriv,Cfg_TIME_TO_DELETE_IMAGES_TMP_FILES,false);
|
||||||
|
|
||||||
/***** End the reception of original not processed image
|
/***** End the reception of original not processed image
|
||||||
(it can be very big) into a temporary file *****/
|
(it may be very big) into a temporary file *****/
|
||||||
Image->Status = Img_FILE_NONE;
|
Image->Status = Img_FILE_NONE;
|
||||||
snprintf (FileNameImgOrig,sizeof (FileNameImgOrig),
|
snprintf (FileNameImgOrig,sizeof (FileNameImgOrig),
|
||||||
"%s/%s/%s/%s_original.%s",
|
"%s/%s/%s/%s_original.%s",
|
||||||
|
@ -469,8 +479,18 @@ void Img_GetAndProcessImageFileFromForm (struct Image *Image,const char *ParamFi
|
||||||
"%s/%s/%s/%s.jpg",
|
"%s/%s/%s/%s.jpg",
|
||||||
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_IMG,Cfg_FOLDER_IMG_TMP,
|
Cfg_PATH_SWAD_PRIVATE,Cfg_FOLDER_IMG,Cfg_FOLDER_IMG_TMP,
|
||||||
Image->Name);
|
Image->Name);
|
||||||
Img_ProcessImage (Image,FileNameImgOrig,FileNameImgTmp);
|
if (Img_ProcessImage (Image,FileNameImgOrig,FileNameImgTmp) == 0) // Return 0 on success
|
||||||
Image->Status = Img_FILE_PROCESSED;
|
/* Success */
|
||||||
|
Image->Status = Img_FILE_PROCESSED;
|
||||||
|
else // Error processing image
|
||||||
|
{
|
||||||
|
/* Error ==> remove temporary destination image file */
|
||||||
|
if (Fil_CheckIfPathExists (FileNameImgTmp))
|
||||||
|
unlink (FileNameImgTmp);
|
||||||
|
|
||||||
|
/* Show error alert */
|
||||||
|
Ale_ShowAlert (Ale_ERROR,Txt_The_image_could_not_be_processed_successfully);
|
||||||
|
}
|
||||||
|
|
||||||
/***** Remove temporary original file *****/
|
/***** Remove temporary original file *****/
|
||||||
unlink (FileNameImgOrig);
|
unlink (FileNameImgOrig);
|
||||||
|
@ -480,14 +500,16 @@ void Img_GetAndProcessImageFileFromForm (struct Image *Image,const char *ParamFi
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
/************ Process original image generating processed image **************/
|
/************ Process original image generating processed image **************/
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
// Return 0 on success
|
||||||
|
// Return != 0 on error
|
||||||
|
|
||||||
static void Img_ProcessImage (struct Image *Image,
|
static int Img_ProcessImage (struct Image *Image,
|
||||||
const char *FileNameImgOriginal,
|
const char *FileNameImgOriginal,
|
||||||
const char *FileNameImgProcessed)
|
const char *FileNameImgProcessed)
|
||||||
{
|
{
|
||||||
char Command[1024 + PATH_MAX * 2];
|
char Command[1024 + PATH_MAX * 2];
|
||||||
int ReturnCode;
|
int ReturnCode;
|
||||||
char ErrorMsg[256];
|
// char ErrorMsg[256];
|
||||||
|
|
||||||
snprintf (Command,sizeof (Command),
|
snprintf (Command,sizeof (Command),
|
||||||
"convert %s -resize '%ux%u>' -quality %u %s",
|
"convert %s -resize '%ux%u>' -quality %u %s",
|
||||||
|
@ -500,16 +522,9 @@ static void Img_ProcessImage (struct Image *Image,
|
||||||
if (ReturnCode == -1)
|
if (ReturnCode == -1)
|
||||||
Lay_ShowErrorAndExit ("Error when running command to process image.");
|
Lay_ShowErrorAndExit ("Error when running command to process image.");
|
||||||
|
|
||||||
/***** Write message depending on return code *****/
|
|
||||||
ReturnCode = WEXITSTATUS(ReturnCode);
|
ReturnCode = WEXITSTATUS(ReturnCode);
|
||||||
if (ReturnCode != 0)
|
|
||||||
{
|
return ReturnCode;
|
||||||
snprintf (ErrorMsg,sizeof (ErrorMsg),
|
|
||||||
"Image could not be processed successfully.<br />"
|
|
||||||
"Error code returned by the program of processing: %d",
|
|
||||||
ReturnCode);
|
|
||||||
Lay_ShowErrorAndExit (ErrorMsg);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
|
@ -133,8 +133,6 @@ void Img_PutImageUploader (int NumImgInForm,const char *ClassImgTitURL);
|
||||||
void Img_GetImageFromForm (int NumImgInForm,struct Image *Image,
|
void Img_GetImageFromForm (int NumImgInForm,struct Image *Image,
|
||||||
void (*GetImageFromDB) (int NumImgInForm,struct Image *Image));
|
void (*GetImageFromDB) (int NumImgInForm,struct Image *Image));
|
||||||
void Img_SetParamNames (struct ParamUploadImg *ParamUploadImg,int NumImgInForm);
|
void Img_SetParamNames (struct ParamUploadImg *ParamUploadImg,int NumImgInForm);
|
||||||
Img_Action_t Img_GetImageActionFromForm (const char *ParamAction);
|
|
||||||
void Img_GetAndProcessImageFileFromForm (struct Image *Image,const char *ParamFile);
|
|
||||||
|
|
||||||
void Img_MoveImageToDefinitiveDirectory (struct Image *Image);
|
void Img_MoveImageToDefinitiveDirectory (struct Image *Image);
|
||||||
void Img_ShowImage (struct Image *Image,
|
void Img_ShowImage (struct Image *Image,
|
||||||
|
|
21
swad_text.c
21
swad_text.c
|
@ -44888,6 +44888,27 @@ const char *Txt_The_ID_X_matches_one_of_the_existing = // Warning: it is very im
|
||||||
" corresponde a um dos existentes.";
|
" corresponde a um dos existentes.";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
const char *Txt_The_image_could_not_be_processed_successfully =
|
||||||
|
#if L==1 // ca
|
||||||
|
"La imatge no s'ha pogut processar correctament.";
|
||||||
|
#elif L==2 // de
|
||||||
|
"Das Bild konnte nicht erfolgreich verarbeitet werden.";
|
||||||
|
#elif L==3 // en
|
||||||
|
"The image could not be processed successfully.";
|
||||||
|
#elif L==4 // es
|
||||||
|
"La imagen no ha podido procesarse correctamente.";
|
||||||
|
#elif L==5 // fr
|
||||||
|
"L'image n'a pas pu être traitée avec succès.";
|
||||||
|
#elif L==6 // gn
|
||||||
|
"La imagen no ha podido procesarse correctamente."; // Okoteve traducción
|
||||||
|
#elif L==7 // it
|
||||||
|
"L'immagine non può essere elaborata con successo.";
|
||||||
|
#elif L==8 // pl
|
||||||
|
"Obraz nie mógł zostać pomyślnie przetworzony.";
|
||||||
|
#elif L==9 // pt
|
||||||
|
"A imagem não pôde ser processada com sucesso.";
|
||||||
|
#endif
|
||||||
|
|
||||||
const char *Txt_The_institution_X_already_exists = // Warning: it is very important to include %s in the following sentences
|
const char *Txt_The_institution_X_already_exists = // Warning: it is very important to include %s in the following sentences
|
||||||
#if L==1 // ca
|
#if L==1 // ca
|
||||||
"La institución <strong>%s</strong> ya existe."; // Necessita traduccio
|
"La institución <strong>%s</strong> ya existe."; // Necessita traduccio
|
||||||
|
|
|
@ -236,7 +236,7 @@ void ZIP_CreateZIPAsgWrk (void)
|
||||||
{
|
{
|
||||||
/***** Get file size *****/
|
/***** Get file size *****/
|
||||||
if (lstat (PathFileZIP,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (PathFileZIP,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in ZIP_CreateZIPAsgWrk.");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Create URL pointing to ZIP file *****/
|
/***** Create URL pointing to ZIP file *****/
|
||||||
|
@ -489,7 +489,7 @@ static void ZIP_CompressFolderIntoZIP (void)
|
||||||
{
|
{
|
||||||
/***** Get file size *****/
|
/***** Get file size *****/
|
||||||
if (lstat (PathFileZIP,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (PathFileZIP,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in ZIP_CompressFolderIntoZIP.");
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/***** Create URL pointing to ZIP file *****/
|
/***** Create URL pointing to ZIP file *****/
|
||||||
|
@ -574,7 +574,7 @@ static unsigned long long ZIP_CloneDir (const char *Path,const char *PathClone,c
|
||||||
|
|
||||||
FileType = Brw_IS_UNKNOWN;
|
FileType = Brw_IS_UNKNOWN;
|
||||||
if (lstat (PathFile,&FileStatus)) // On success ==> 0 is returned
|
if (lstat (PathFile,&FileStatus)) // On success ==> 0 is returned
|
||||||
Lay_ShowErrorAndExit ("Can not get information about a file or folder.");
|
Lay_ShowErrorAndExit ("Can not get information about a file or folder in ZIP_CloneDir.");
|
||||||
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
else if (S_ISDIR (FileStatus.st_mode)) // It's a directory
|
||||||
FileType = Brw_IS_FOLDER;
|
FileType = Brw_IS_FOLDER;
|
||||||
else if (S_ISREG (FileStatus.st_mode)) // It's a regular file
|
else if (S_ISREG (FileStatus.st_mode)) // It's a regular file
|
||||||
|
|
Loading…
Reference in New Issue