File: setfiledestination.cc

package info (click to toggle)
bobcat 2.08.01-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 5,668 kB
  • ctags: 953
  • sloc: cpp: 10,403; makefile: 9,042; perl: 401; sh: 195
file content (37 lines) | stat: -rw-r--r-- 1,026 bytes parent folder | download | duplicates (2)
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 Errno(1, "FBB::CGI: can't create file destination "
                                                            "directory ") <<
                insertable << destPath.path() << throwable;

    d_filePrefix = prefix;
}