summaryrefslogtreecommitdiff
path: root/confdloader.c
diff options
context:
space:
mode:
Diffstat (limited to 'confdloader.c')
-rw-r--r--confdloader.c153
1 files changed, 74 insertions, 79 deletions
diff --git a/confdloader.c b/confdloader.c
index 67d6261..c469540 100644
--- a/confdloader.c
+++ b/confdloader.c
@@ -38,33 +38,33 @@ using std::string;
// ---------------------------
bool cConfDLoader::Load()
{
- const string dirPath(AddDirectory(CONFIGDIR, "conf.d"));
- LogFile.Log(2, "loading entries in %s", dirPath.c_str());
- cReadDir d(dirPath.c_str());
- struct dirent* e;
- string parent("..");
- string current(".");
- int count = 0;
- bool success = true;
- while ((e = d.Next())) {
- string direntry = e->d_name;
- if ((current == direntry) || (parent == direntry) || (direntry[direntry.size()-1] == '~')) {
- continue;
+ const string dirPath(AddDirectory(CONFIGDIR, "conf.d"));
+ LogFile.Log(2, "loading entries in %s", dirPath.c_str());
+ cReadDir d(dirPath.c_str());
+ struct dirent* e;
+ string parent("..");
+ string current(".");
+ int count = 0;
+ bool success = true;
+ while ((e = d.Next())) {
+ string direntry = e->d_name;
+ if ((current == direntry) || (parent == direntry) || (direntry[direntry.size() - 1] == '~')) {
+ continue;
+ }
+ /* Check if entry is a directory: I do not rely on e->d_type
+ here because on some systems it is always DT_UNKNOWN. Also
+ testing for DT_DIR does not take into account symbolic
+ links to directories.
+ */
+ struct stat buf;
+ if ((stat((dirPath + "/" + e->d_name).c_str(), &buf) != 0) || (S_ISDIR(buf.st_mode))) {
+ continue;
+ }
+ success &= LoadFile((dirPath + "/" + e->d_name).c_str());
+ count++;
}
- /* Check if entry is a directory: I do not rely on e->d_type
- here because on some systems it is always DT_UNKNOWN. Also
- testing for DT_DIR does not take into account symbolic
- links to directories.
- */
- struct stat buf;
- if ((stat((dirPath + "/" + e->d_name).c_str(), &buf) != 0) || (S_ISDIR(buf.st_mode))) {
- continue;
- }
- success &= LoadFile((dirPath + "/" + e->d_name).c_str());
- count++;
- }
- LogFile.Log(2, "loaded %d entries in %s", count, dirPath.c_str());
- return success;
+ LogFile.Log(2, "loaded %d entries in %s", count, dirPath.c_str());
+ return success;
}
// ---------------------------
@@ -87,59 +87,54 @@ bool cConfDLoader::Load()
// ---------------------------
bool cConfDLoader::LoadFile(const char *FileName)
{
- if (FileName && access(FileName, F_OK) == 0) {
- LogFile.Log(1, "loading %s", FileName);
- FILE *f = fopen(FileName, "r");
- if (f) {
- char *s;
- int line = 0;
- cReadLine ReadLine;
- std::string section;
- while ((s = ReadLine.Read(f)) != NULL) {
- line++;
- char *p = strchr(s, '#');
- if (p)
- *p = 0;
- stripspace(s);
- if (!isempty(s)) {
- if (*s == '[' && *(s+strlen(s)-1)==']') // Section?
- section = s;
- else {
- if (EqualsNoCase(section, "[epgsearchuservars]"))
- cUserVarLine::Parse(s);
- if (EqualsNoCase(section, "[epgsearchdirs]"))
- {
- cDirExt* D = new cDirExt;
- if (D && D->Parse(s))
- ConfDDirExts.Add(D);
- else
- delete D;
- }
- if (EqualsNoCase(section, "[epgsearchmenu]"))
- {
- cTemplLine T;
- if (T.Parse(s))
- cTemplFile::Parse(T.Name(), T.Value());
- }
- if (EqualsNoCase(section, "[epgsearchcats]"))
- {
- cSearchExtCat* cat = new cSearchExtCat;
- if (cat && cat->Parse(s))
- SearchExtCats.Add(cat);
- else
- delete cat;
- }
- }
- }
- }
- fclose(f);
- }
- return true;
- }
- else
- {
- LOG_ERROR_STR(FileName);
- return false;
+ if (FileName && access(FileName, F_OK) == 0) {
+ LogFile.Log(1, "loading %s", FileName);
+ FILE *f = fopen(FileName, "r");
+ if (f) {
+ char *s;
+ int line = 0;
+ cReadLine ReadLine;
+ std::string section;
+ while ((s = ReadLine.Read(f)) != NULL) {
+ line++;
+ char *p = strchr(s, '#');
+ if (p)
+ *p = 0;
+ stripspace(s);
+ if (!isempty(s)) {
+ if (*s == '[' && *(s + strlen(s) - 1) == ']') // Section?
+ section = s;
+ else {
+ if (EqualsNoCase(section, "[epgsearchuservars]"))
+ cUserVarLine::Parse(s);
+ if (EqualsNoCase(section, "[epgsearchdirs]")) {
+ cDirExt* D = new cDirExt;
+ if (D && D->Parse(s))
+ ConfDDirExts.Add(D);
+ else
+ delete D;
+ }
+ if (EqualsNoCase(section, "[epgsearchmenu]")) {
+ cTemplLine T;
+ if (T.Parse(s))
+ cTemplFile::Parse(T.Name(), T.Value());
+ }
+ if (EqualsNoCase(section, "[epgsearchcats]")) {
+ cSearchExtCat* cat = new cSearchExtCat;
+ if (cat && cat->Parse(s))
+ SearchExtCats.Add(cat);
+ else
+ delete cat;
+ }
+ }
+ }
+ }
+ fclose(f);
+ }
+ return true;
+ } else {
+ LOG_ERROR_STR(FileName);
+ return false;
}
}