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; }
eString httpUnescape(const eString &string) { eString result; for (unsigned int i = 0; i < string.length(); ++i) { int c = string[i]; switch (c) { case '%': { int value = '%'; if ((i + 1) < string.length()) value = getHex(string[++i]); if ((i + 1) < string.length()) { value <<= 4; value += getHex(string[++i]); } result += value; break; } case '+': result += ' '; break; default: result += c; break; } } return result; }
void FileMap::updateNameIdPair(const eString& chanId, const eString& name) { if (chanId.length() > 0 && name.length() > 0) { channelId2Names[chanId] = name; channelName2Id[name] = chanId; } }
/////////////////////////////////////// eString icompare(const eString&) ///////////////////// int eString::icompare(const eString& s) { // makes a case insensitive string compare std::string::const_iterator p = begin(), p2 = s.begin(); while ( p != end() && p2 != s.end() ) if ( tolower(*p) != tolower(*p2) ) return tolower(*p) < tolower(*p2) ? -1 : 1; else p++, p2++; return length() == s.length() ? 0 : length() < s.length() ? -1 : 1; }
void eAllowedOpInput::parseConfig(const eString &config) { _clear(); const eU32 configLen = config.length(); eString buffer; for (eU32 i=0; i<configLen; i++) { buffer = ""; while (i < configLen && config[i] != '|') { buffer += config[i++]; } eString left, right; if (!buffer.split(',', left, right)) { eSwap(left, right); } WhereWhat *ww = new WhereWhat; eASSERT(ww != eNULL); ww->index = (left == "" ? -1 : eStrToInt(left)); ww->what = right; m_allowed.append(ww); m_allAllowed.append(new eString(right)); } }
bool ChannelManager::matchesCurrentShowFlags( eString name ) { if ( name == eString( "UNKNOWN" ) ) return ( showFlags & CM_SHOW_UNKNOWN ); else if ( name == eString( "IGNORE" ) ) return ( showFlags & CM_SHOW_IGNORE ); else if ( name.length() > 0 ) return ( showFlags & CM_SHOW_MAPPED ); else return false; }
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); }
void eServiceHandlerExternal::addFile(void *node, const eString &filename) { for (unsigned int i = 0; i < extensionFileList.size(); i++) { int matchsize = extensionFileList[i].pattern.length(); if (filename.right(matchsize).upper() == extensionFileList[i].pattern.upper()) { eServiceReference ref(id, 0, filename); eString filenamestripped = filename; uint i = filename.find_last_of('/'); if (i != eString::npos) { filenamestripped = filename.mid(i + 1, filename.length()); } ref.descr = filenamestripped.c_str(); eServiceFileHandler::getInstance()->addReference(node, ref); eDebug("Add file: %s", filename.c_str()); return; } } }
eString httpEscape(const eString &string) { eString result; for (unsigned int i = 0; i < string.length(); ++i) { int c = string[i]; int valid = 0; if ((c >= 'a') && (c <= 'z')) valid = 1; else if ((c >= 'A') && (c <= 'Z')) valid = 1; else if (c == ':') valid = 1; else if ((c >= '0') && (c <= '9')) valid = 1; if (valid) result += c; else result += eString().sprintf("%%%x", c); } return result; }
eString eMoviePlayer::sout(eString mrl) { eString soutURL = "#"; unsigned int pos = mrl.find_last_of('.'); eString extension = mrl.right(mrl.length() - pos - 1); eString name = "File"; if (mrl.find("dvdsimple:") != eString::npos) { name = "DVD"; extension = "NONE"; } else if (mrl.find("vcd:") != eString::npos) { name = "VCD"; extension = "NONE"; } struct serverConfig server = mpconfig.getServerConfig(); struct videoTypeParms video = mpconfig.getVideoParms(name, extension); eDebug("[MOVIEPLAYER] determine ?sout for mrl: %s", mrl.c_str()); eDebug("[MOVIEPLAYER] transcoding audio: %d, video: %d, subtitles: %d" , video.transcodeAudio, video.transcodeVideo, status.PLG ? status.SUBT : video.soutadd); // add sout (URL encoded) // example (with transcode to mpeg1): // ?sout=#transcode{vcodec=mpgv,vb=2000,acodec=mpga,ab=192,channels=2}:duplicate{dst=std{access=http,mux=ts,url=:8080/dboxstream}} // example (without transcode to mpeg1): // ?sout=#duplicate{dst=std{access=http,mux=ts,url=:8080/dboxstream}} pos = video.videoRatio.find("x"); eString res_horiz = video.videoRatio.left(pos); eString res_vert = video.videoRatio.right(video.videoRatio.length() - pos - 1); eDebug("[MOVIEPLAYER] res_horiz = %s, res_vert = %s", res_horiz.c_str(), res_vert.c_str()); if (video.transcodeVideo || video.transcodeAudio) { soutURL += "transcode{"; if (video.transcodeVideo) { soutURL += "vcodec=" + video.videoCodec; soutURL += ",vb=" + video.videoRate; soutURL += ",width=" + res_horiz; soutURL += ",height=" + res_vert; soutURL += ",fps=" + video.fps; if(status.PLG) { if(status.SUBT) soutURL += ",soverlay"; } else { if (video.soutadd) soutURL += ",soverlay"; } } if (video.transcodeAudio) { if (video.transcodeVideo) soutURL += ","; soutURL += "acodec=mpga,ab=" + video.audioRate + ",channels=2"; } if(status.PLG) { if(status.A_SYNC) soutURL += ",audio-sync"; } else soutURL += ",audio-sync"; soutURL += "}:"; } //soutURL += "duplicate{dst=std{access=http,mux=ts,dst=:" + server.streamingPort + "/dboxstream}}"; soutURL += "standard{access=http,mux=ts,dst=:" + server.streamingPort + "/dboxstream}"; status.A_SYNC=true; status.SUBT = true; eDebug("[MOVIEPLAYER] sout = %s", soutURL.c_str()); return soutURL; }