mirror of
https://github.com/HamletDuFromage/sigpatches-updater.git
synced 2024-11-09 13:41:46 +00:00
215 lines
6.9 KiB
C++
215 lines
6.9 KiB
C++
// Copyright (C) 2008 by Pedro Mendes, Virginia Tech Intellectual
|
|
// Properties, Inc., EML Research, gGmbH, University of Heidelberg,
|
|
// and The University of Manchester.
|
|
// All rights reserved.
|
|
|
|
// Copyright (C) 2001 - 2007 by Pedro Mendes, Virginia Tech Intellectual
|
|
// Properties, Inc. and EML Research, gGmbH.
|
|
// All rights reserved.
|
|
|
|
#ifndef ZIPPER_CDirEntry
|
|
#define ZIPPER_CDirEntry
|
|
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
namespace zipper
|
|
{
|
|
/**
|
|
* This class provides an OS independent interface to directory entries
|
|
* such as files and directories.
|
|
*/
|
|
class CDirEntry
|
|
{
|
|
public:
|
|
/**
|
|
* The character used to separate directory entries.
|
|
*/
|
|
static const std::string Separator;
|
|
|
|
/**
|
|
* Check whether the directory entry specified by 'path' is
|
|
* a file.
|
|
* @param const std::string & path
|
|
* @return bool isFile
|
|
*/
|
|
static bool isFile(const std::string & path);
|
|
|
|
/**
|
|
* Check whether the directory entry specified by 'path' is
|
|
* is a directory.
|
|
* @param const std::string & path
|
|
* @return bool isDir
|
|
*/
|
|
static bool isDir(const std::string & path);
|
|
|
|
/**
|
|
* Check whether the directory entry specified by 'path' exists.
|
|
* @param const std::string & path
|
|
* @return bool exist
|
|
*/
|
|
static bool exist(const std::string & path);
|
|
|
|
/**
|
|
* Check whether the directory entry specified by 'path' is
|
|
* is readable.
|
|
* @param const std::string & path
|
|
* @return bool isReadable
|
|
*/
|
|
static bool isReadable(const std::string & path);
|
|
|
|
/**
|
|
* Check whether the directory entry specified by 'path' is
|
|
* writable.
|
|
* @param const std::string & path
|
|
* @return bool isWritable
|
|
*/
|
|
static bool isWritable(const std::string & path);
|
|
|
|
/**
|
|
* Returns the base name, i.e., the directory path and the
|
|
* the suffix are removed from 'path'.
|
|
* @param const std::string & path
|
|
* @return std::string baseName
|
|
*/
|
|
static std::string baseName(const std::string & path);
|
|
|
|
/**
|
|
* Returns the file name, i.e., the directory path is removed from 'path'.
|
|
* @param const std::string & path
|
|
* @return std::string fileName
|
|
*/
|
|
static std::string fileName(const std::string & path);
|
|
|
|
/**
|
|
* Returns the directory path to the parent directoryu, i.e.,
|
|
* the file name or directory name are removed from 'path'.
|
|
* @param const std::string & path
|
|
* @return std::string dirName
|
|
*/
|
|
static std::string dirName(const std::string & path);
|
|
|
|
/**
|
|
* Returns the suffix, i.e., the directory path and the
|
|
* the base name are removed from 'path'.
|
|
* @param const std::string & path
|
|
* @return std::string basename
|
|
*/
|
|
static std::string suffix(const std::string & path);
|
|
|
|
/**
|
|
* Create the directory 'dir' in the parent directory 'parent'.
|
|
* @param const std::string & dir
|
|
* @param const std::string & parent (Default: current working directory)
|
|
* @return bool success
|
|
*/
|
|
static bool createDir(const std::string & dir,
|
|
const std::string & parent = "");
|
|
|
|
/**
|
|
* Create a name for a temporary directory entry. The directory entry
|
|
* will be located in the directory given
|
|
* @param const std::string & dir
|
|
* @param const std::string & suffix
|
|
* @return std::string tmpName
|
|
*/
|
|
static std::string createTmpName(const std::string & dir,
|
|
const std::string & suffix);
|
|
|
|
/**
|
|
* Move a file from. If to is the directory the filename of from is
|
|
* appended.
|
|
* @param const std::string & from
|
|
* @param const std::string & to
|
|
* @return bool success
|
|
*/
|
|
static bool move(const std::string & from,
|
|
const std::string & to);
|
|
|
|
/**
|
|
* Removes a file or directory specified by path.
|
|
* @param const std::string & path
|
|
* @return bool success
|
|
*/
|
|
static bool remove(const std::string & path);
|
|
|
|
/**
|
|
* Remove files or directories matching the pattern in directory dir.
|
|
* @param const std::string & pattern
|
|
* @param const std::string & dir
|
|
* @return bool success
|
|
*/
|
|
static bool removeFiles(const std::string & pattern,
|
|
const std::string & dir);
|
|
|
|
/**
|
|
* Compiles the pattern to a patternList. Valid wildcards in the pattern are:
|
|
* '*' matches any number of characters and '?' matches exactly one character.
|
|
* @param const std::string & pattern
|
|
* @return std::vector< std::string > patternList
|
|
*/
|
|
static std::vector< std::string > compilePattern(const std::string & pattern);
|
|
|
|
/**
|
|
* Compare the name against the pattern list and returns whether the
|
|
* name matches. The patternList can be created from a pattern by the
|
|
* compilePattern method.
|
|
* @param const std::string & name
|
|
* @param const std::vector< std::string > & patternList
|
|
* @return bool match
|
|
*/
|
|
static bool match(const std::string & name,
|
|
const std::vector< std::string > & patternList);
|
|
|
|
/**
|
|
* Checks whether the given path is relative
|
|
* @return bool isRelative
|
|
*/
|
|
static bool isRelativePath(const std::string & path);
|
|
|
|
/**
|
|
* Makes the absolute path relative to the path given in relativeTo
|
|
* @param std::string & absolutePath
|
|
* @param const std::string & relativeTo
|
|
* @return bool success
|
|
*/
|
|
static bool makePathRelative(std::string & absolutePath,
|
|
const std::string & relativeTo);
|
|
|
|
/**
|
|
* Makes the relative path absolute to the path given in absoluteTo
|
|
* @param std::string & relativePath
|
|
* @param const std::string & absoluteTo
|
|
* @return bool success
|
|
*/
|
|
static bool makePathAbsolute(std::string & relativePath,
|
|
const std::string & absoluteTo);
|
|
|
|
/**
|
|
* This method normalizes the path, i.e.,
|
|
* it converts all '\' to '/' (only on WIN32)
|
|
* and collapses '^./' to '^', '/./' to '/', and '[^/]+/../' to '/'
|
|
* @param const std::string & path
|
|
* @return std::string normalizedPath
|
|
*/
|
|
static std::string normalize(const std::string & path);
|
|
|
|
private:
|
|
/**
|
|
* This private methods checks whether the active section matches the
|
|
* specified patter. The section is automatically advanced to allow
|
|
* repeated calls. On the first call 'at' must be 0. The parameters
|
|
* 'at' and 'after' must not be changed outside this method.
|
|
* @param const std::string & name
|
|
* @param const std::string pattern
|
|
* @param std::string::size_type & at
|
|
* @param std::string::size_type & after
|
|
* @return bool match
|
|
*/
|
|
static bool matchInternal(const std::string & name,
|
|
const std::string pattern,
|
|
std::string::size_type & at,
|
|
std::string::size_type & after);
|
|
};
|
|
}
|
|
#endif // ZIPPER_CDirEntry
|