File: DataDirLocater.h

package info (click to toggle)
spring 0.81.2.1%2Bdfsg1-6
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 28,496 kB
  • ctags: 37,096
  • sloc: cpp: 238,659; ansic: 13,784; java: 12,175; awk: 3,428; python: 1,159; xml: 738; perl: 405; sh: 297; makefile: 267; pascal: 228; objc: 192
file content (40 lines) | stat: -rw-r--r-- 815 bytes parent folder | download
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
38
39
40
/**
 * @file DataDirLocater.h
 * @author Tobi Vollebregt
 *
 * Copyright (C) 2006-2008 Tobi Vollebregt
 * Licensed under the terms of the GNU GPL, v2 or later
 */
#ifndef DATADIRLOCATER_H
#define DATADIRLOCATER_H

#include <string>
#include <vector>

struct DataDir
{
	DataDir(const std::string& p);
	std::string path;
	bool writable;
};

class DataDirLocater
{
public:
	DataDirLocater();
	void LocateDataDirs();

	const std::vector<DataDir>& GetDataDirs() const { return datadirs; }
	const DataDir* GetWriteDir() const { return writedir; }

private:
	std::string SubstEnvVars(const std::string& in) const;
	void AddDirs(const std::string& in);
	bool DeterminePermissions(DataDir* d);
	void DeterminePermissions();

	std::vector<DataDir> datadirs;
	const DataDir* writedir;
};

#endif // !defined(DATADIRLOCATER_H)