From 07c8a157c31ed5221b4fd325058eb1d3fa579c33 Mon Sep 17 00:00:00 2001 From: Antti Ajanki Date: Sat, 6 Nov 2010 10:16:24 +0200 Subject: update template paths on in timer files, remove old templates on upgrade --- Makefile | 15 ++++++++++- src/vdr-plugin/timer.c | 68 ++++++++++++++++++++++++++++++++++++++++++----- src/vdr-plugin/timer.h | 8 ++++-- src/vdr-plugin/webvideo.c | 4 +-- 4 files changed, 84 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 520d2b4..cab3945 100644 --- a/Makefile +++ b/Makefile @@ -50,7 +50,7 @@ install-vdr-plugin: $(DESTDIR)$(VDRPLUGINDIR)/libvdr-webvideo.so.$(APIVERSION) install-libwebvi: libwebvi $(MAKE) -C src/libwebvi install -install-python: +install-python: uninstall-deprecated-templates python setup.py install --skip-build --prefix $(PREFIX) $${DESTDIR:+--root $(DESTDIR)} install-conf: webvi.conf webvi.plugin.conf @@ -63,6 +63,19 @@ install-webvi: install-libwebvi install-python install: install-vdr-plugin install-webvi install-conf +# Template directories were renamed in 0.3.3. Remove old templates. +uninstall-deprecated-templates: + rm -rf $(DESTDIR)$(PREFIX)/share/webvi/templates/youtube + rm -rf $(DESTDIR)$(PREFIX)/share/webvi/templates/svtplay + rm -rf $(DESTDIR)$(PREFIX)/share/webvi/templates/moontv + rm -rf $(DESTDIR)$(PREFIX)/share/webvi/templates/metacafe + rm -rf $(DESTDIR)$(PREFIX)/share/webvi/templates/vimeo + rm -rf $(DESTDIR)$(PREFIX)/share/webvi/templates/katsomo + rm -rf $(DESTDIR)$(PREFIX)/share/webvi/templates/subtv + rm -rf $(DESTDIR)$(PREFIX)/share/webvi/templates/ruutufi + rm -rf $(DESTDIR)$(PREFIX)/share/webvi/templates/google + rm -rf $(DESTDIR)$(PREFIX)/share/webvi/templates/yleareena + dist: clean @-rm -rf $(TMPDIR)/$(ARCHIVE) @mkdir $(TMPDIR)/$(ARCHIVE) diff --git a/src/vdr-plugin/timer.c b/src/vdr-plugin/timer.c index 15a398b..8158c29 100644 --- a/src/vdr-plugin/timer.c +++ b/src/vdr-plugin/timer.c @@ -200,7 +200,7 @@ void cWebviTimer::RequestFinished(const char *ref, const char *errmsg) { // --- cWebviTimerManager ---------------------------------------- cWebviTimerManager::cWebviTimerManager() - : nextID(1), modified(false), disableSaving(false) +: nextID(1), modified(false), disableSaving(false), convertTemplatePaths(false) { } @@ -222,12 +222,15 @@ void cWebviTimerManager::LoadTimers(FILE *f) { int n, i; ver = rl.Read(f); - if (strcmp(ver, "# WVTIMER1") != 0) { + if (strcmp(ver, "# WVTIMER1") != 0 && + strncmp(ver, "# WVTIMER1/", 11) != 0) { error("Can't load timers. Unknown format: %s", ver); disableSaving = true; return; } + convertTemplatePaths = (strcmp(ver, "# WVTIMER1") == 0); + i = 1; while (true) { n = fscanf(f, "%ld %d %d %ms", &lastRefresh, &interval, &success, &ref); @@ -241,6 +244,14 @@ void cWebviTimerManager::LoadTimers(FILE *f) { break; } + if (convertTemplatePaths) { + char *newref = UpgradedTemplatePath(ref); + if (newref) { + free(ref); + ref = newref; + } + } + title = rl.Read(f); title = title ? skipspace(title) : "???"; errmsg = success ? NULL : ""; @@ -266,11 +277,11 @@ void cWebviTimerManager::LoadHistory(FILE *f) { debug("loaded history: len = %d", refHistory.Size()); } -void cWebviTimerManager::SaveTimers(FILE *f) { +void cWebviTimerManager::SaveTimers(FILE *f, const char *version) { // Format: space separated field in this order: // lastUpdate interval lastSucceeded reference title - fprintf(f, "# WVTIMER1\n"); + fprintf(f, "# WVTIMER1/%s\n", version); cWebviTimer *t = timers.First(); while (t) { @@ -303,6 +314,48 @@ void cWebviTimerManager::SaveHistory(FILE *f) { } } +char *cWebviTimerManager::UpgradedTemplatePath(char *ref) { + // template names changed in 0.3.3 + const char *templateNameMap[10][2] = \ + {{"wvt:///youtube/", "wvt:///www.youtube.com/"}, + {"wvt:///svtplay/", "wvt:///svtplay.se/"}, + {"wvt:///moontv/", "wvt:///moontv.fi/"}, + {"wvt:///metacafe/", "wvt:///www.metacafe.com/"}, + {"wvt:///vimeo/", "wvt:///www.vimeo.com/"}, + {"wvt:///katsomo/", "wvt:///www.katsomo.fi/"}, + {"wvt:///subtv/", "wvt:///www.sub.fi/"}, + {"wvt:///ruutufi/", "wvt:///www.ruutu.fi/"}, + {"wvt:///google/", "wvt:///video.google.com/"}, + {"wvt:///yleareena/", "wvt:///areena.yle.fi/"}}; + + for (int i=0; i<10; i++) { + int oldlen = strlen(templateNameMap[i][0]); + if (strncmp(ref, templateNameMap[i][0], oldlen) == 0) { + int newlen = strlen(templateNameMap[i][1]) + strlen(ref); + char *newref = (char *)malloc((newlen+1)*sizeof(char)); + strcpy(newref, templateNameMap[i][1]); + strcat(newref, ref+oldlen); + return newref; + } + } + + return NULL; +} + +void cWebviTimerManager::ConvertTimerHistoryTemplates() { + for (int i=0; i