File: setfiledestination.cc

package info (click to toggle)
bobcat 6.11.00-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 15,292 kB
  • sloc: cpp: 21,370; fortran: 6,507; makefile: 2,787; sh: 724; perl: 401; ansic: 26
file content (37 lines) | stat: -rw-r--r-- 1,006 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "cgi.ih"

void CGI::setFileDestination(std::string const &path,
                                std::string const &prefix,
                                Create create)
{
    d_filePath = path;
    if (*d_filePath.rbegin() != '/')
        d_filePath += "/";

    Stat destPath(d_filePath);

    if (!destPath.isType(Stat::DIRECTORY) && create == CREATE_PATH)
    {
        string::size_type pos = 0;

        while (true)
        {
            pos = path.find('/', pos);
            if
            (
                pos == string::npos
                ||
                mkdir(path.substr(0, pos).c_str(), 0750)
            )
                break;
            ++pos;                  // skip the directory separator
        }
    }

    if (!destPath.isType(Stat::DIRECTORY))
        throw Exception{1} << "FBB::CGI: can't create file destination "
                                                            "directory " <<
                       destPath.path();

    d_filePrefix = prefix;
}