//
// This file is part of the aMule Project.
//
// Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org )
// Copyright (c) 2002-2011 Merkur ( devs@emule-project.net / http://www.emule-project.net )
//
// Any parts of this program derived from the xMule, lMule or eMule project,
// or contributed by third-party developers are copyrighted by their
// respective authors.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
//
#ifndef FILEFUNCTIONS_H
#define FILEFUNCTIONS_H
#include "../../Types.h"
#include "Path.h"
#include <wx/dir.h>
// Dir iterator: needed because wxWidget's wxFindNextFile and
// wxFindFirstFile are bugged like hell.
class CDirIterator : private wxDir
{
public:
enum FileType {
FileNoHidden = wxDIR_FILES,
DirNoHidden = wxDIR_DIRS,
File = wxDIR_FILES | wxDIR_HIDDEN,
Dir = wxDIR_DIRS | wxDIR_HIDDEN,
Any = wxDIR_FILES | wxDIR_DIRS | wxDIR_HIDDEN
};
CDirIterator(const CPath& dir);<--- Class 'CDirIterator' has a constructor with 1 argument that is not explicit. [+]Class 'CDirIterator' has a constructor with 1 argument that is not explicit. Such, so called "Converting constructors", should in general be explicit for type safety reasons as that prevents unintended implicit conversions.
~CDirIterator();
CPath GetFirstFile(FileType type, const wxString& mask = wxEmptyString);
CPath GetNextFile();
bool HasSubDirs(const wxString& spec = wxEmptyString);
};
//! Filetypes understood by UnpackArchive
enum EFileType
{
//! Text files, will be left unchanged.
EFT_Text,
//! Zip archive, will be unpacked
EFT_Zip,
//! GZip archives, will be unpacked
EFT_GZip,
//! Met file, will be left unchanged.
EFT_Met,
//! Unknown filetype, will be left unchanged.
EFT_Unknown,
//! This is returned when trying to unpack a broken archive.
EFT_Error
};
typedef std::pair<bool, EFileType> UnpackResult;
/**
* Unpacks a single file from an archive, replacing the archive.
*
* @param file The archive.
* @param files An array of filenames (terminated by a NULL entry) which should be unpacked.
* @return The first value is true if the archive was unpacked, the second is the resulting filetype.
*
* If the file specified is not an archive, it will be left unchanged and
* the file-type returned. If it is a GZip archive, the archive will be
* unpacked and the new file will replace the archive. If the archive is a
* Zip archive, the first file found matching any in the files array (case-
* insensitive) will be unpacked and overwrite the archive.
*/
UnpackResult UnpackArchive(const CPath& file, const wxChar* files[]);
#endif
// File_checked_for_headers