cartobase 6.0.6
fileutil.h
Go to the documentation of this file.
1/* This software and supporting documentation are distributed by
2 * Institut Federatif de Recherche 49
3 * CEA/NeuroSpin, Batiment 145,
4 * 91191 Gif-sur-Yvette cedex
5 * France
6 *
7 * This software is governed by the CeCILL-B license under
8 * French law and abiding by the rules of distribution of free software.
9 * You can use, modify and/or redistribute the software under the
10 * terms of the CeCILL-B license as circulated by CEA, CNRS
11 * and INRIA at the following URL "http://www.cecill.info".
12 *
13 * As a counterpart to the access to the source code and rights to copy,
14 * modify and redistribute granted by the license, users are provided only
15 * with a limited warranty and the software's author, the holder of the
16 * economic rights, and the successive licensors have only limited
17 * liability.
18 *
19 * In this respect, the user's attention is drawn to the risks associated
20 * with loading, using, modifying and/or developing or reproducing the
21 * software by the user in light of its specific status of free software,
22 * that may mean that it is complicated to manipulate, and that also
23 * therefore means that it is reserved for developers and experienced
24 * professionals having in-depth computer knowledge. Users are therefore
25 * encouraged to load and test the software's suitability as regards their
26 * requirements in conditions enabling the security of their systems and/or
27 * data to be ensured and, more generally, to use and operate it in the
28 * same conditions as regards security.
29 *
30 * The fact that you are presently reading this means that you have had
31 * knowledge of the CeCILL-B license and that you accept its terms.
32 */
33
34#ifndef CARTOBASE_STREAM_FILEUTIL_H
35#define CARTOBASE_STREAM_FILEUTIL_H
36
38#include <string>
39#include <list>
40
41
42#ifdef _WIN32
43#define CARTOBASE_STREAM_NULLDEVICE "nul"
44#else
45#define CARTOBASE_STREAM_NULLDEVICE "/dev/null"
46#endif
47
48namespace carto
49{
50 class Object;
51
54 {
55 public:
56 //==========================================================================
57 // P A T H S
58 //==========================================================================
60 static char separator();
64 static char pathSeparator();
73 static std::string basename( const std::string & );
79 static std::string dirname( const std::string & );
81 static std::string relpath( const std::string &fname,
82 const std::string & base );
87 static std::string fileStat( const std::string & );
89 static std::string extension( const std::string & );
91 static std::string removeExtension( const std::string & );
93 static bool isAbsPath( const std::string & path );
95 static std::string absPath( const std::string & path );
110 static std::string temporaryFile( const std::string & prefix, int & fd );
112 static std::string temporaryDirectory( const std::string & prefix );
115 static std::list<std::string>
116 filenamesSplit( const std::string & filenames,
117 const std::string & separator );
118
120 static std::string windowsFilename(const std::string & filename);
121
124 static std::string linuxFilename(const std::string & filename);
125
126 //==========================================================================
127 // U R I
128 //==========================================================================
132
135 static std::string uriFilename( const std::string & filein );
139 static Object uriOptions( const std::string & filein );
142 static std::string uriCopyOptions( const std::string & filein );
143
144 };
145
146}
147
148#endif
Files and filenames portable utilities.
Definition fileutil.h:54
static std::string relpath(const std::string &fname, const std::string &base)
relative path of fname, relatively to base
static char pathSeparator()
character separating paths in a list (generally in an environment variable).
static std::string windowsFilename(const std::string &filename)
Replaces slashes with backslashes characters.
static std::string linuxFilename(const std::string &filename)
Replaces backslashes with slashes characters on Windows OS on other OS, leaves filename unchanged.
static std::list< std::string > filenamesSplit(const std::string &filenames, const std::string &separator)
interpret the filenames string as a list of filenames and split it.
static std::string temporaryFile(const std::string &prefix, int &fd)
opens a temporary file.
static char separator()
returns '/' on Unix systems and '\' on Windows systems
static std::string dirname(const std::string &)
this is NOT conform to dirname() from libgen: dirname( "/usr/" ) = "/", carto::FileUtil::dirname( "/u...
static bool isAbsPath(const std::string &path)
true if path is an absolute path, false if it is relative
static std::string fileStat(const std::string &)
Checks file existence, type and read/write permission.
static std::string basename(const std::string &)
this is NOT conform to basename() from libgen: basename( "/" ) = "/", carto::FileUtil::basename( "/" ...
static std::string uriCopyOptions(const std::string &filein)
Extracts the options from the URI and returns them as a string : "?options1=this&option2=that".
static std::string absPath(const std::string &path)
make an absolute path
static std::string extension(const std::string &)
returns the file extension (without the dot)
static std::string uriFilename(const std::string &filein)
It is possible to treat an URI (Uniform Resource Identifier) instead of a simple path.
static std::string removeExtension(const std::string &)
returns the filename without its extension
static Object uriOptions(const std::string &filein)
Extracts the options from the URI and returns them as a dictionary of strings : ( "options1" => "this...
static std::string temporaryDirectory(const std::string &prefix)
Creates a temporary directory.