// we got (http) metadata. void eMP3Decoder::metaDataUpdated(eString meta) { { singleLock s(lock); // must protect access on metadata array eString streamTitle, streamUrl; if (meta.left(6) == "Stream") while (!meta.empty()) { unsigned int eq=meta.find('='); if (eq == eString::npos) break; eString left=meta.left(eq); meta=meta.mid(eq+1); // skip until = eq=meta.find(';'); if (eq == eString::npos) break; eString right=meta.left(eq); meta=meta.mid(eq+1); if (left=="StreamTitle") streamTitle=right; else if (left == "StreamUrl") streamUrl=right; else eDebug("unknown tag: %s = %s", left.c_str(), right.c_str()); } else streamTitle=meta; metadata[0]=streamTitle; metadata[1]=streamUrl; } handler->messages.send(eServiceHandlerMP3::eMP3DecoderMessage(eServiceHandlerMP3::eMP3DecoderMessage::infoUpdated)); }
std::map<eString, eString> getRequestOptions(eString opt, char delimiter) { std::map<eString, eString> result; if (opt[0] == '?') opt = opt.mid(1); while (opt.length()) { unsigned int e = opt.find("="); if (e == eString::npos) e = opt.length(); unsigned int a = opt.find(delimiter, e); if (a == eString::npos) a = opt.length(); eString n = opt.left(e); unsigned int b = opt.find(delimiter, e + 1); if (b == eString::npos) b = (unsigned)-1; eString r = httpUnescape(opt.mid(e + 1, b - e - 1)); result.insert(std::pair<eString, eString>(n, r)); opt = opt.mid(a + 1); } return result; }
static void updatePPPConfig( const eString &secrets, int flags ) { char sourceA[8192]; // source buffer char destA[8192]; // dest buffer char *source = sourceA; char *dest = destA; FILE *f = fopen("/etc/ppp/pppoe.conf", "r" ); if ( !f ) { eDebug("couldn't open '/etc/ppp/pppoe.conf' for read"); return; } size_t readed = fread(source, 1, sizeof(sourceA), f ); if ( !readed ) { eDebug("couldn't read '/etc/ppp/pppoe.conf'"); return; } uint spos = 0; uint dpos = 0; uint ppos = secrets.find('*'); if ( ppos != eString::npos ) { eString strUser = '******'' + secrets.left(ppos) + "\'\n"; helper( source, dest, spos, dpos, "USER="******"/elitedvb/network/webifport", webifport); eString s; s.sprintf("%d\n", webifport); helper( source, dest, spos, dpos, "ENIGMA_WEB_IF_PORT=", s.c_str() ); helper( source, dest, spos, dpos, "REJECT_WWW=", flags&1?"yes\n":"no\n" ); helper( source, dest, spos, dpos, "REJECT_TELNET=", flags&2?"yes\n":"no\n" ); helper( source, dest, spos, dpos, "REJECT_SAMBA=", flags&4?"yes\n":"no\n" ); helper( source, dest, spos, dpos, "REJECT_FTP=", flags&8?"yes\n":"no\n" ); memcpy( dest+dpos, source+spos, readed - spos ); dpos += readed-spos; fclose(f); f = fopen("/etc/ppp/pppoe.conf", "w"); if ( !f ) { eDebug("couldn't open '/etc/ppp/pppoe.conf' for write"); return; } unsigned int written; if ( (written = fwrite( dest, 1, dpos, f )) != dpos ) eDebug("couldn't write correct count of bytes...\n%d bytes written %d should be written", written, dpos ); fclose(f); }
int remoteType( eString spec ) { if ( spec.length() == 0 ) return inputDefRemoteTypeNone; else { eString prot = spec.left(5); if ( prot == "http:" ) return inputDefRemoteTypeHTTP; else if ( prot == "otid:" ) return inputDefRemoteTypeOTV; else return inputDefRemoteTypeNone; } }
static void writeSecretString( const eString &str ) { FILE *f = fopen("/etc/ppp/pap-secrets", "w"); if (!f) eFatal("couldn't create /etc/ppp/pap-secrets"); eString tmp; unsigned int pos = str.find('*'); if ( pos != eString::npos ) { tmp = '\"' + str.left(pos) + "\"\t*\t\"" + str.mid(pos+1, str.length()-pos ) + "\"\n"; } fwrite( tmp.c_str(), 1, tmp.length(), f ); fclose(f); }
eLanguageEntry(eListBox<eLanguageEntry>* lb, eString id, eString name) : eListBoxEntry( (eListBox<eListBoxEntry>*)lb), id(id), name(name) { eString language=id; if (id.find('_') != eString::npos) id=id.left(id.find('_')); eString str("country_"); str+=getCountry(id.c_str()); pixmap=eSkin::getActive()->queryImage(str); if (!pixmap) { eDebug("dont find %s use country_missing", str.c_str() ); pixmap=eSkin::getActive()->queryImage(eString("country_missing")); } if (!font.pointSize) font = eSkin::getActive()->queryFont("eListBox.EntryText.normal"); para=0; }
void eTOnlineDialog::init_eTOnlineDialog(eString Login) { setText("T - Online"); cmove(ePoint(140,140)); cresize(eSize(450,270)); eLabel *l = new eLabel(this); l->move(ePoint(10,10)); l->resize(eSize(220,30)); l->setText("Anschlusskennung:"); Kennung = new eTextInputField(this,l); Kennung->move(ePoint(230,10)); Kennung->resize(eSize(200,35)); Kennung->setMaxChars(12); Kennung->setUseableChars("1234567890"); Kennung->loadDeco(); Kennung->setHelpText("Anschlusskennung eingeben mit OK (12 Stellen)"); Kennung->setEditHelpText("Anschlusskennung eingeben (0..9, ok)"); l = new eLabel(this); l->move(ePoint(10,60)); l->resize(eSize(220,30)); l->setText("T-Online Nummer:"); tOnlineNummer = new eTextInputField(this,l); tOnlineNummer->move(ePoint(230,60)); tOnlineNummer->resize(eSize(200,35)); tOnlineNummer->setMaxChars(12); tOnlineNummer->setUseableChars("1234567890"); tOnlineNummer->loadDeco(); tOnlineNummer->setHelpText("T-Online Nummer eingeben mit OK (12 Stellen)"); tOnlineNummer->setEditHelpText("T-Online Nummer eingeben (0..9, ok)"); l = new eLabel(this); l->move(ePoint(10,110)); l->resize(eSize(220,30)); l->setText("Mitbenutzernummer:"); Mitbenutzer = new eTextInputField(this,l); Mitbenutzer->move(ePoint(230,110)); Mitbenutzer->resize(eSize(70,35)); Mitbenutzer->setMaxChars(4); Mitbenutzer->setUseableChars("1234567890"); Mitbenutzer->loadDeco(); Mitbenutzer->setHelpText("Mitbenutzernummer eingeben mit OK (4 Stellen)"); Mitbenutzer->setEditHelpText("Mitbenutzernummer eingeben (0..9, ok)"); ok = new eButton(this); ok->move(ePoint(10,160)); ok->resize(eSize(170,40)); ok->setShortcut("green"); ok->setShortcutPixmap("green"); ok->setText("speichern"); ok->setHelpText("Daten übernehmen und Fenster schliessen"); ok->loadDeco(); CONNECT(ok->selected, eWidget::accept); sbar = new eStatusBar(this); sbar->move( ePoint(0, clientrect.height()-50) ); sbar->resize( eSize( clientrect.width(), 50) ); sbar->loadDeco(); if (Login) { unsigned int pos1 = Login.find("#"), pos2 = Login.find("@"); if ( pos1 != eString::npos && pos2 != eString::npos ) { Kennung->setText(Login.left(12)); tOnlineNummer->setText(Login.mid(12,12)); Mitbenutzer->setText(Login.mid(pos1+1,4)); } } }
int eMoviePlayer::playStream(eString mrl) { int apid = -1, vpid = -1, ac3 = -1; // receive video stream from VLC on PC eDebug("[MOVIEPLAYER] start playing stream..."); status.BUFFERFILLED = false; pthread_mutex_lock(&mutex); tsBuffer.clear(); pthread_mutex_unlock(&mutex); if (requestStream() < 0) { eDebug("[MOVIEPLAYER] requesting stream failed..."); close(fd); return -1; } int ibuff; if(status.PLG) ibuff = initialBuffer; else ibuff = INITIALBUFFER; if (bufferStream(fd, ibuff) == 0) { eDebug("[MOVIEPLAYER] buffer is empty."); close(fd); if (cancelBuffering > 0) return 0; else return -4; } status.BUFFERFILLED = true; find_avpids(&tsBuffer, &vpid, &apid, &ac3); if (vpid == -1 || apid == -1) { if(status.NSF ) // plugin can playback file without A or V too { eDebug("[MOVIEPLAYER] both AV pids not found: vpid %d apid %d, but play.",vpid,apid); } else { eDebug("[MOVIEPLAYER] no AV pids found."); close(fd); return -5; } } status.NSF=false; status.AVPIDS_FOUND = true; if(!status.DVB) stopDVB(); Decoder::setMpegDevice(-1); // set pids Decoder::parms.vpid = vpid; Decoder::parms.apid = apid; Decoder::parms.audio_type = DECODE_AUDIO_MPEG; int ac3default = 0; eConfig::getInstance()->getKey("/elitedvb/audio/ac3default", ac3default); if (ac3 && ac3default) { if (mrl.right(3) == "vob" || mrl.left(3) == "dvd") Decoder::parms.audio_type = DECODE_AUDIO_AC3_VOB; else Decoder::parms.audio_type = DECODE_AUDIO_AC3; } eZapMain::getInstance()->hideInfobar(); usleep(100000); Decoder::SetStreamType(TYPE_PES); Decoder::Set(); #ifndef DISABLE_LCD unsigned int pos = mrl.find_last_of('/'); eZapLCD::getInstance()->lcdMain->ServiceName->setText(mrl.right(mrl.size() - pos - 1)); #endif createThreads(); status.ACTIVE = true; return 0; }