diff options
author | horchi <vdr@jwendel.de> | 2020-02-12 13:00:02 +0100 |
---|---|---|
committer | horchi <vdr@jwendel.de> | 2020-02-12 13:00:02 +0100 |
commit | 5ed9f308906f88080509e9d8322ef451430ecfbe (patch) | |
tree | af3cc7c2b5aafaa2b2982aa429cb8e7ea69e76ad | |
parent | c476c2e84f1c44373f6ea8274f92bf7f97ff9c9f (diff) | |
download | vdr-plugin-epg2vdr-5ed9f308906f88080509e9d8322ef451430ecfbe.tar.gz vdr-plugin-epg2vdr-5ed9f308906f88080509e9d8322ef451430ecfbe.tar.bz2 |
improved cleanup of pictures
-rw-r--r-- | lib/common.c | 2 | ||||
-rw-r--r-- | update.c | 60 | ||||
-rw-r--r-- | update.h | 1 |
3 files changed, 31 insertions, 32 deletions
diff --git a/lib/common.c b/lib/common.c index a452b23..2793537 100644 --- a/lib/common.c +++ b/lib/common.c @@ -977,7 +977,6 @@ int removeFile(const char* filename) if (unlink(filename) != 0) { tell(0, "Can't remove file '%s', '%s'", filename, strerror(errno)); - return 1; } @@ -1027,6 +1026,7 @@ xsltStylesheetPtr loadXSLT(const char* name, const char* path, int utf8) tell(0, "Info: Stylesheet '%s' loaded", xsltfile); free(xsltfile); + return stylesheet; } #endif @@ -2087,8 +2087,10 @@ int cUpdate::cleanupPictures() if (!dbConnected(yes)) return fail; + tell(1, "Remove %s symlinks", fullreload ? "all" : "old"); + // ----------------------- - // remove wasted symlinks + // remove unused symlinks if (!(dir = opendir(epgimagedir))) { @@ -2096,15 +2098,37 @@ int cUpdate::cleanupPictures() return done; } - tell(1, "Remove %s symlinks", fullreload ? "all" : "old"); - while ((dirent = readdir(dir))) { - // check extension + asprintf(&pdir, "%s/%s", epgimagedir, dirent->d_name); - if (strncmp(dirent->d_name + strlen(dirent->d_name) - strlen(ext), ext, strlen(ext)) != 0) - continue; + if (isLink(pdir)) + { + useeventsDb->setValue("USEID", atoi(dirent->d_name)); + + if (fullreload || !selectEventById->find()) + { + if (!removeFile(pdir)) + lCount++; + } + } + + free(pdir); + } + + closedir(dir); + + // ----------------------- + // remove wasted symlinks + if (!(dir = opendir(epgimagedir))) + { + tell(1, "Can't open directory '%s', '%s'", epgimagedir, strerror(errno)); + return done; + } + + while ((dirent = readdir(dir))) + { asprintf(&pdir, "%s/%s", epgimagedir, dirent->d_name); // fileExists use access() which dereference links! @@ -2123,27 +2147,3 @@ int cUpdate::cleanupPictures() return success; } - -//*************************************************************************** -// Link Needed -//*************************************************************************** - -int cUpdate::pictureLinkNeeded(const char* linkName) -{ - int found; - - if (!dbConnected()) - return yes; - - // we don't need to patch the linkname "123456_0.jpg" - // since atoi() stops at the first non numerical character ... - - imageRefDb->clear(); - imageRefDb->setValue("LFN", 0L); - imageRefDb->setBigintValue("EVENTID", atol(linkName)); - - found = imageRefDb->find(); - imageRefDb->reset(); - - return found; -} @@ -197,7 +197,6 @@ class cUpdate : public cThread, public cStatus, public cParameters int lookupVdrEventOf(int eId, const char* cId); int storePicturesToFs(); int cleanupPictures(); - int pictureLinkNeeded(const char* linkName); int getOsd2WebPort(); tChannelID toChanID(const char* chanIdStr) |