Bug? CChannelEvent->text manchmal "zu kurz"?

ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Bug? CChannelEvent->text manchmal "zu kurz"?

Beitrag von ingrid »

Mir ist heute etwas aufgefallen, ich hoffe da kann jemand, der vom sectionsd(client) Ahnung hat, etwas zu sagen.

In sectionsdclient.h ist Folgendes definiert:

Code: Alles auswählen

class CChannelEvent
{
 public:
	t_channel_id       get_channel_id(void) const { return GET_CHANNEL_ID_FROM_EVENT_ID(eventID); }
	event_id_t         eventID;
	std::string        description;
	std::string        text;
	time_t             startTime;
	unsigned           duration;
};
Meistens ist "text" ordentlich gefüllt. Und zwar dann, wenn die Sendung eine "Überschrift" hat. Das konnte ich durch Vergleichen der Inhalte in epgview.cpp herausfinden.
Manchmal ist es aber so, dass "text" nur einen kurzen Teil des Textes enthält. Irgendwie finde ich gerade nicht raus, wo die Länge dieses Textausschnittes festgelegt wird.
Das ist bis jetzt eigentlich nicht aufgefallen, da der Text z.B. in der channellist.cpp eh verkürzt dargestellt wird. Da hat bis jetzt niemand gemerkt, dass da manchmal noch ein paar Buchstaben mehr dargestellt werden könnten. Ich sitze gerade genau an dem Teil in der channellist.cpp und bräuchte deswegen "text" in CChannelEvent ein wenig mehr gefüllt.

Kann mir jemand sagen, wo definiert ist, wie lang der Textausschnitt ist, der in CChannelEvent abgelegt wird, falls keine "Überschrift" vorhanden ist?

Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt... :gruebel:
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: Bug? CChannelEvent->text manchmal "zu kurz"?

Beitrag von ingrid »

Wenn das passiert, ist der Text immer genau 40 Zeichen lang...
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: Bug? CChannelEvent->text manchmal "zu kurz"?

Beitrag von ingrid »

Hat sich erledigt, hab's gefunden. War wirklich hard gecoded und zu knapp bemessen. :lol:
MPC823
Erleuchteter
Erleuchteter
Beiträge: 448
Registriert: Samstag 26. November 2005, 00:35

Re: Bug? CChannelEvent->text manchmal "zu kurz"?

Beitrag von MPC823 »

Und was war da zu kurz *neugier*


Martin
ingrid
Erleuchteter
Erleuchteter
Beiträge: 600
Registriert: Samstag 14. Oktober 2006, 10:53

Re: Bug? CChannelEvent->text manchmal "zu kurz"?

Beitrag von ingrid »

Das hier:

Code: Alles auswählen

@@ -2228,7 +2249,7 @@
 							count += sizeof(event_id_t) + 4 + 4 + (*e)->getName().length() + 1;
 							if (((*e)->getText()).empty())
 							{
-								count += (*e)->getExtendedText().substr(0, 40).length();
+								count += (*e)->getExtendedText().substr(0, 50).length();
 							}
 							else
 							{
@@ -2249,7 +2270,7 @@
 	
 								if (((*e)->getText()).empty())
 								{
-									strcpy(liste, (*e)->getExtendedText().substr(0, 40).c_str());
+									strcpy(liste, (*e)->getExtendedText().substr(0, 50).c_str());
 									liste += strlen(liste);
 								}
 								else
@@ -3493,7 +3514,7 @@
 						count += sizeof(event_id_t) + 4 + 4 + eName.length() + 1;
 						if (eText.empty())
 						{
-							count += eExtendedText.substr(0, 40).length();
+							count += eExtendedText.substr(0, 50).length();
 						}
 						else
 						{
@@ -3514,7 +3535,7 @@
 
 							if (eText.empty())
 							{
-								strcpy(liste, eExtendedText.substr(0, 40).c_str());
+								strcpy(liste, eExtendedText.substr(0, 50).c_str());
 								liste += strlen(liste);
 							}
 							else
Sprich: Wenn kein Text zur Sendung da ist (das ist die "Überschrift", die im EPG kursiv dargestellt wird), was bei den Privaten generell zu sein scheint, wurden einfach die ersten 40 Zeichen des Extended Textes benutzt. Das passiert direkt im sectionsd. Und es ist halt wie gesagt nie aufgefallen, da der Text in der Channellist sowieso abgeschnitten wurde, falls er zu lang war. Und da fielen eben die 2-3 Zeichen (wenn der Text aus nur "i" bestanden hätte, wäre es mehr als 2-3 gewesen), die mehr dargestellt hätten werden können, niemandem auf. Mit der Erweiterung auf 50 ist man aber safe. Im Durchschnitt werden meistens bis zu 45 Zeichen dargestellt, kommt wegen der Proportionalschrift aber immer drauf an, wie der Textinhalt ist. Jedenfalls habe ich den Wert gestern abend in empirischen Studien statistisch erhoben. :lol: :lol: :lol:

Interessanterweise haben die Öffentlichen immer den Text, also die "Überschrift". Bei den Privaten fehlt der fast komplett. Erinnert mich an die Diskussion über ProSieben, die ja immer alles richtig machen. :gruebel: Also könnte man sogar (fast?) sagen, die Alternative, den extended Text zu nehmen, ist nichts anderes als einer der vielen Hacks im sectionsd, um Unzulänglichkeiten der Provider zu umgehen.

Das Schöne bei sowas ist aber: Durch die Suche nach solchen "Bugs" lernt man den Code im CVS nach und nach kennen. :lol: