return parent_dir + "/" + path;
}
-std::string getDir(std::string path) {
- // dirname may modify path, so we must pass a modifiable char* to it
- char* modifiable_path = new char[path.size() + 1];
- strncpy(modifiable_path, path.c_str(), path.size() + 1);
- std::string ret = dirname(modifiable_path);
- delete[] modifiable_path;
- return ret;
+std::string getDir(const char *path) {
+ std::string p(path);
+ return dirname(&p.front());
}
class XmlParser::IncludeItem {
}
}
-bool XmlParser::isMainConfFile(const std::string& filename) {
+bool XmlParser::isMainConfFile(const char *filename) {
switch (curr_bus) {
case SYSTEM_BUS:
- return (filename == SYSTEM_BUS_CONF_FILE_PRIMARY || filename == SYSTEM_BUS_CONF_FILE_SECONDARY);
+ return strcmp(filename, SYSTEM_BUS_CONF_FILE_PRIMARY) == 0 || strcmp(filename, SYSTEM_BUS_CONF_FILE_SECONDARY) == 0;
case SESSION_BUS:
- return (filename == SESSION_BUS_CONF_FILE_PRIMARY || filename == SESSION_BUS_CONF_FILE_SECONDARY);
+ return strcmp(filename, SESSION_BUS_CONF_FILE_PRIMARY) == 0 || strcmp(filename, SESSION_BUS_CONF_FILE_SECONDARY) == 0;
}
return false;
}
}
}
-int XmlParser::parsePolicyConfigFile(BusType bus, const std::string& fname) {
+int XmlParser::parsePolicyConfigFile(BusType bus, const char *fname) {
tslog::log("XmlParser::parsePolicyConfigFile called with filename: ", fname, "\n");
curr_bus = bus;
parsePolicyConfigFileInternal(fname);
return ret_code;
}
-void XmlParser::parsePolicyConfigFileInternal(const std::string& filename) {
+void XmlParser::parsePolicyConfigFileInternal(const char *filename) {
ret_code = 0;
try {
parseXmlFile(filename);
}
std::vector<std::string> curr_included_files = included_files; // deep copy
for (const auto& included_file : curr_included_files) {
- parsePolicyConfigFileInternal(included_file);
+ parsePolicyConfigFileInternal(included_file.c_str());
}
}
-std::unique_ptr<char[]> file2str(const std::string& filename) {
+std::unique_ptr<char[]> file2str(const char *filename) {
- FILE *fp = fopen(filename.c_str(), "rb");
+ FILE *fp = fopen(filename, "rb");
if (fp == nullptr) {
throw std::runtime_error(std::string("Failed to open file: ").append(filename).c_str());
}
return str;
}
-void XmlParser::parseXmlFile(const std::string& filename) {
+void XmlParser::parseXmlFile(const char *filename) {
included_files.clear();
tslog::log("Processing: ", filename, " ...\n");
{
public:
/** Parses given config file for declared bus type */
- int parsePolicyConfigFile(BusType bus_type, const std::string& fname);
+ int parsePolicyConfigFile(BusType bus_type, const char *fname);
void elementStart(const char *el, const char **attr);
class IncludeItem;
/** Decides whether a filename describes one of main system.conf/session.conf files */
- bool isMainConfFile(const std::string& filename);
+ bool isMainConfFile(const char *filename);
/** Parses config file and all files included in it (recursively) */
- void parsePolicyConfigFileInternal(const std::string& filename);
+ void parsePolicyConfigFileInternal(const char *filename);
/** Parses config file and returns all files included in it */
- void parseXmlFile(const std::string& filename);
+ void parseXmlFile(const char *filename);
/** Parses <include> element */
IncludeItem parseIncludeItem();