diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Makefile | 6 | ||||
-rw-r--r-- | lib/demo.c | 94 | ||||
-rw-r--r-- | lib/epgservice.h | 4 | ||||
-rw-r--r-- | lib/xml.c | 8 | ||||
-rw-r--r-- | lib/xml.h | 2 |
5 files changed, 60 insertions, 54 deletions
diff --git a/lib/Makefile b/lib/Makefile index 5e4f4b3..07c3e36 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -53,10 +53,6 @@ ifdef SYSD_NOTIFY CFLAGS += $(shell pkg-config --cflags libsystemd-daemon) endif -ifdef DEBUG - CFLAGS += -ggdb -O0 -endif - CFLAGS += $(shell mysql_config --include) DEFINES += $(USES) @@ -88,7 +84,7 @@ cppchk: %.o: %.c @echo Compile "$(*F)" ... - $(doCompile) $(*F).c -o $@ + $(doCompile) -O3 $(INCLUDES) -o $@ $< #-------------------------------------------------------- # dependencies @@ -38,13 +38,13 @@ void initConnection() void exitConnection() { cDbConnection::exit(); - + if (connection) delete connection; } //*************************************************************************** -// +// //*************************************************************************** int demoStatement() @@ -57,15 +57,15 @@ int demoStatement() // open table (attach) - if (eventsDb->open() != success) + if (eventsDb->open() != success) return fail; - + tell(0, "---------------- prepare select statement -------------"); // vorbereiten (prepare) eines statement, am besten einmal bei programmstart! // ---------- - // select eventid, compshorttext, episodepart, episodelang - // from events + // select eventid, compshorttext, episodepart, episodelang + // from events // where eventid > ? cDbStatement* selectByCompTitle = new cDbStatement(eventsDb); @@ -77,14 +77,14 @@ int demoStatement() status += selectByCompTitle->build(" from %s where ", eventsDb->TableName()); status += selectByCompTitle->bindCmp(0, eventsDb->getField("EventId"), 0, ">"); - status += selectByCompTitle->prepare(); // prepare statement + status += selectByCompTitle->prepare(); // prepare statement if (status != success) { // prepare sollte MySQL fehler ausgegeben haben! delete eventsDb; - delete selectByCompTitle; + delete selectByCompTitle; return fail; } @@ -93,7 +93,7 @@ int demoStatement() tell(0, "------------------ create some rows ----------------------"); - eventsDb->clear(); // alle values löschen + eventsDb->clear(); // alle values löschen for (int i = 0; i < 10; i++) { @@ -103,7 +103,7 @@ int demoStatement() eventsDb->setValue(eventsDb->getField("EventId"), 800 + i * 100); eventsDb->setValue(eventsDb->getField("ChannelId"), "xxx-yyyy-zzz"); eventsDb->setValue(eventsDb->getField("Title"), title); - + eventsDb->store(); // store -> select mit anschl. update oder insert je nachdem ob dier PKey bereits vorhanden ist // eventsDb->insert(); // sofern man schon weiß das es ein insert ist // eventsDb->update(); // sofern man schon weiß das der Datensatz vorhanden ist @@ -114,7 +114,7 @@ int demoStatement() tell(0, "------------------ done ----------------------"); tell(0, "-------- select all where eventid > 1000 -------------"); - + eventsDb->clear(); // alle values löschen eventsDb->setValue(eventsDb->getField("EventId"), 1000); @@ -148,7 +148,7 @@ int joinDemo() int status = success; // grundsätzlich genügt hier auch eine Tabelle, für die anderen sind cDbValue Instanzen außreichend - // so ist es etwas einfacher die cDbValues zu initialisieren. + // so ist es etwas einfacher die cDbValues zu initialisieren. // Ich habe statische "virtual FieldDef* getFieldDef(int f)" Methode in der Tabellenklassen geplant // um ohne Instanz der cTable ein Feld einfach initialisieren zu können @@ -161,7 +161,7 @@ int joinDemo() delete timerDb; // init dict fields as needed (normaly done once at programm start) - // init and using the pointer improve the speed since the lookup via + // init and using the pointer improve the speed since the lookup via // the name is dine only once // F_INIT(events, EventId); // ergibt: cDbFieldDef* eventsEventId; dbDict.init(eventsEventId, "events", "EventId"); @@ -170,15 +170,15 @@ int joinDemo() // open tables (attach) - if (eventsDb->open() != success) + if (eventsDb->open() != success) return fail; - if (imageDb->open() != success) + if (imageDb->open() != success) return fail; - if (imageRefDb->open() != success) + if (imageRefDb->open() != success) return fail; - + tell(0, "---------------- prepare select statement -------------"); // all images @@ -192,13 +192,13 @@ int joinDemo() cDbValue masterId; cDbFieldDef imageSizeDef("image", "image", cDBS::ffUInt, 999, cDBS::ftData, 0); // eine Art ein Feld zu erzeugen - imageSize.setField(&imageSizeDef); + imageSize.setField(&imageSizeDef); imageUpdSp.setField(imageDb->getField("UpdSp")); masterId.setField(eventsDb->getField("MasterId")); // select e.masterid, r.imagename, r.eventid, r.lfn, length(i.image) - // from imagerefs r, images i, events e - // where i.imagename = r.imagename + // from imagerefs r, images i, events e + // where i.imagename = r.imagename // and e.eventid = r.eventid // and (i.updsp > ? or r.updsp > ?) @@ -214,10 +214,10 @@ int joinDemo() selectAllImages->bind(&imageSize, cDBS::bndOut); selectAllImages->build(")"); selectAllImages->clrBindPrefix(); - selectAllImages->build(" from %s r, %s i, %s e where ", + selectAllImages->build(" from %s r, %s i, %s e where ", imageRefDb->TableName(), imageDb->TableName(), eventsDb->TableName()); selectAllImages->build("e.%s = r.%s and i.%s = r.%s and (", - "EventId", // eventsEventId->getDbName(), + "EventId", // eventsEventId->getDbName(), imageRefDb->getField("EventId")->getDbName(), "imagename", // direkt den DB Feldnamen verwenden -> nicht so schön da nicht dynamisch imageRefDb->getField("ImgName")->getDbName()); // ordentlich via dictionary übersetzt -> schön ;) @@ -235,7 +235,7 @@ int joinDemo() delete eventsDb; delete imageDb; delete imageRefDb; - delete selectAllImages; + delete selectAllImages; return fail; } @@ -280,7 +280,7 @@ int joinDemo() } //*************************************************************************** -// +// //*************************************************************************** int insertDemo() @@ -302,7 +302,7 @@ int insertDemo() } //*************************************************************************** -// +// //*************************************************************************** int findUseEvent() @@ -324,7 +324,7 @@ int findUseEvent() selectEventById->bindAllOut(); selectEventById->build(" from %s where ", useeventsDb->TableName()); selectEventById->bind("USEID", cDBS::bndIn | cDBS::bndSet); - selectEventById->build(" and %s in (%s)", + selectEventById->build(" and %s in (%s)", useeventsDb->getField("UPDFLG")->getDbName(), Us::getNeeded()); @@ -390,8 +390,8 @@ int findUseEvent() continue; } - if (field->getFormat() == cDbService::ffAscii || - field->getFormat() == cDbService::ffText || + if (field->getFormat() == cDbService::ffAscii || + field->getFormat() == cDbService::ffText || field->getFormat() == cDbService::ffMText) { fprintf(f, "%s: %s\n", flds[i], useeventsDb->getStrValue(flds[i])); @@ -411,11 +411,11 @@ int findUseEvent() selectEventById->freeResult(); - return done; + return done; } //*************************************************************************** -// +// //*************************************************************************** int updateRecordingDirectory() @@ -428,31 +428,31 @@ int updateRecordingDirectory() // char* dir = strdup("more~Marvel's Agents of S.H.I.E.L.D.~xxx.ts"); char* dir = strdup("aaaaa~bbbbbb~ccccc.ts"); char* pos = strrchr(dir, '~'); - + if (pos) { *pos = 0; - + for (int level = 0; level < 3; level++) { recordingDirDb->clear(); recordingDirDb->setValue("VDRUUID", "foobar"); recordingDirDb->setValue("DIRECTORY", dir); - + if (!recordingDirDb->find()) { ins++; recordingDirDb->store(); } - + recordingDirDb->reset(); - + char* pos = strrchr(dir, '~'); if (pos) *pos=0; } } - + tell(0, "inserted %d directories", ins); delete recordingDirDb; @@ -475,16 +475,6 @@ int main(int argc, char** argv) if (argc > 1) path = argv[1]; - // read deictionary - - dbDict.setFilterFromNameFct(toFieldFilter); - - if (dbDict.in(path, ffEpgd) != success) - { - tell(0, "Invalid dictionary configuration, aborting!"); - return 1; - } - cUserTimes userTimes; tell(0, "--------------"); @@ -508,6 +498,16 @@ int main(int argc, char** argv) return 0; + // read dictionary + + dbDict.setFilterFromNameFct(toFieldFilter); + + if (dbDict.in(path, ffEpgd) != success) + { + tell(0, "Invalid dictionary configuration, aborting!"); + return 1; + } + // dbDict.show(); initConnection(); @@ -519,7 +519,7 @@ int main(int argc, char** argv) tell(0, "uuid: '%s'", getUniqueId()); tell(0, "- - - - - - - - - - - - - - - - - "); - + //updateRecordingDirectory(); findUseEvent(); diff --git a/lib/epgservice.h b/lib/epgservice.h index ff32e3a..36d513e 100644 --- a/lib/epgservice.h +++ b/lib/epgservice.h @@ -301,7 +301,7 @@ class cUserTimes if (strchr(strTime, ':')) { hhmm = atoi(strTime) * 100 + atoi(strchr(strTime, ':')+1); - sprintf(hhmmStr, "%02d:%02d", hhmm / 100, hhmm % 100); + sprintf(hhmmStr, "%02d%02d", hhmm / 100, hhmm % 100); mode = mTime; } else if (*strTime == '@') @@ -366,7 +366,7 @@ class cUserTimes char* title; char* search; int hhmm; - char hhmmStr[5+TB]; + char hhmmStr[15+TB]; }; cUserTimes() @@ -89,3 +89,11 @@ XMLElement* cXml::getNext(XMLNode* node) { return node->NextSiblingElement(); } + +XMLElement* cXml::getElementByName(const char* name, XMLElement* element) +{ + if (element) + return element->FirstChildElement(name); + + return root->FirstChildElement(name); +} @@ -41,6 +41,8 @@ class cXml XMLElement* getFirst(XMLNode* node = 0); XMLElement* getNext(XMLNode* node); + XMLElement* getElementByName(const char* name, XMLElement* element = 0); + const char* toText(); private: |