int64_t getBBGCIDForDevice(char *deviceModel){ int64_t bbgcid = 0; #define reterror(a ... ) {error(a); bbgcid = -1; goto error;} char *myjson = getBBCIDJson(); jsmntok_t *tokens = NULL; int cnt = parseTokens(myjson, &tokens); if (cnt < 1) reterror("[TSSC] ERROR: parsing bbgcid.json failed!\n"); jsmntok_t *device = objectForKey(tokens, myjson, deviceModel); if (!device) { reterror("[TSSC] ERROR: device \"%s\" is not in bbgcid.json, which means it's BasebandGoldCertID isn't documented yet.\nIf you own such a device please consider contacting @tihmstar ([email protected]) to get instructions how to contribute to this project.\n",deviceModel); } if (device->type == JSMN_PRIMITIVE) { warning("[TSSC] WARNING: A BasebandGoldCertID is not required for %s\n",deviceModel); bbgcid = 0; }else{ device = device->value; char * buf = malloc(device->end - device->size +1); strncpy(buf, myjson+device->start,device->end - device->size); buf[device->end - device->size] = 0; bbgcid = atoll(buf); free(buf); } error: if (myjson) free(myjson); if (tokens) free(tokens); return bbgcid; #undef reterror }
/* * Details how to parse a RedditLink. Doesn't do much more then allocate a new * RedditLink and map it's members to key strings. */ RedditLink *redditGetLink(TokenParser *parser) { RedditLink *link = redditLinkNew(); TokenIdent ids[] = { ADD_TOKEN_IDENT_STRPARSE("selftext", link->selftext, link->selftextEsc, link->wselftextEsc), ADD_TOKEN_IDENT_STRPARSE("title", link->title, link->titleEsc, link->wtitleEsc), ADD_TOKEN_IDENT_STRING ("id", link->id), ADD_TOKEN_IDENT_STRING ("permalink", link->permalink), ADD_TOKEN_IDENT_STRING ("author", link->author), ADD_TOKEN_IDENT_STRING ("url", link->url), ADD_TOKEN_IDENT_INT ("score", link->score), ADD_TOKEN_IDENT_INT ("downs", link->downs), ADD_TOKEN_IDENT_INT ("ups", link->ups), ADD_TOKEN_IDENT_INT ("num_comments", link->numComments), ADD_TOKEN_IDENT_INT ("num_reports", link->numReports), ADD_TOKEN_IDENT_BOOL ("is_self", link->flags, REDDIT_LINK_IS_SELF), ADD_TOKEN_IDENT_BOOL ("over_18", link->flags, REDDIT_LINK_OVER_18), ADD_TOKEN_IDENT_BOOL ("clicked", link->flags, REDDIT_LINK_CLICKED), ADD_TOKEN_IDENT_BOOL ("stickied", link->flags, REDDIT_LINK_STICKIED), ADD_TOKEN_IDENT_BOOL ("edited", link->flags, REDDIT_LINK_EDITED), ADD_TOKEN_IDENT_BOOL ("hidden", link->flags, REDDIT_LINK_HIDDEN), ADD_TOKEN_IDENT_BOOL ("distinguished", link->flags, REDDIT_LINK_DISTINGUISHED), ADD_TOKEN_IDENT_DATE ("created_utc", link->created_utc), {0} }; parseTokens(parser, ids, link); return link; }
/* * This code parses a JSON object to pull out a RedditComment. The 'getCommentReplies' * callback makes this all work, as it handles the case where 'replies' contains a * number of more RedditComment structures. That callback calls redditGetComment on * those objects in a recursive fashion to parse them. * * Beyond that, the list of TokenIdent's is fairly self-explainatory, it simply maps * the variables of a RedditComment to it's key in the JSON. */ RedditComment *redditGetComment(TokenParser *parser, RedditCommentList *list) { RedditComment *comment = redditCommentNew(); TokenIdent ids[] = { ADD_TOKEN_IDENT_FUNC ("replies", getCommentReplies), ADD_TOKEN_IDENT_STRING ("author", comment->author), ADD_TOKEN_IDENT_STRPARSE("body", comment->body, comment->bodyEsc, comment->wbodyEsc), ADD_TOKEN_IDENT_STRPARSE("contentText", comment->body, comment->bodyEsc, comment->wbodyEsc), ADD_TOKEN_IDENT_STRING ("id", comment->id), ADD_TOKEN_IDENT_STRING ("link_id", comment->linkId), ADD_TOKEN_IDENT_STRING ("parent_id", comment->parentId), ADD_TOKEN_IDENT_INT ("ups", comment->ups), ADD_TOKEN_IDENT_INT ("downs", comment->downs), ADD_TOKEN_IDENT_INT ("num_reports", comment->numReports), ADD_TOKEN_IDENT_BOOL ("edited", comment->flags, REDDIT_COMMENT_EDITED), ADD_TOKEN_IDENT_BOOL ("score_hidden", comment->flags, REDDIT_COMMENT_SCORE_HIDDEN), ADD_TOKEN_IDENT_BOOL ("distinguished", comment->flags, REDDIT_COMMENT_DISTINGUISHED), ADD_TOKEN_IDENT_DATE ("created_utc", comment->created_utc), {0} }; parseTokens(parser, ids, list, comment); return comment; }
void HbWsiniParser::parseLine(const QString &line) { // Split at whitespace QStringList tokens = line.split(QRegExp("\\s+")); // strip off square brackets from first token QString first = tokens[0].remove(QRegExp("[^A-Z0-9_]")); if (!first.isEmpty()) { QString number; // Keywords have screen mode number appended to them. Need to separate // the number part from the end int pos = first.lastIndexOf( QRegExp("[A-Z_]") ); int lastCharacter = first.length()-1; if (pos >= 0 && pos < lastCharacter) { int numDigits = lastCharacter - pos; number = first.right(numDigits); first.chop(numDigits); } if (!number.isEmpty()){ tokens.replace(0, number); // Number becomes first token } else{ tokens.removeAt(0); // remove the keyword from the tokens } parseTokens(first, tokens); } }
void toHypergraph(std::string const& line, IMutableHypergraph<A>* phg, std::size_t lineNum = 0) const { Strings words = parseTokens(line, (ParseTokensOptions const&)*this); SDL_DEBUG(Hypergraph.HgConvertString, lineNum << ": " << printer(words, Util::RangeSep(" ", "", ""))); SDL_INFO(Hypergraph.HgConvertString, lineNum << ": len=" << words.size()); phg->clear(properties()); assert(phg->storesArcs()); assert(phg->getVocabulary()); stringToHypergraph(words, phg); }
ModelLoaderOBJ::LINES ModelLoaderOBJ::getLines(const FileText::LINES &lines) { LINES result; for (FileText::LINES::const_iterator i = lines.begin(); i != lines.end(); ++i) { result.push_back(parseTokens(*i)); } return result; }
void LCDServer::readSocket() { QTcpSocket *socket = dynamic_cast<QTcpSocket*>(sender()); m_lastSocket = socket; while(socket->canReadLine()) { QString incoming_data = socket->readLine(); incoming_data = incoming_data.replace( QRegExp("\n"), "" ); incoming_data = incoming_data.replace( QRegExp("\r"), "" ); incoming_data.simplified(); QStringList tokens = parseCommand(incoming_data); parseTokens(tokens, socket); } }
std::unique_ptr<QueryNode> SearchQueryParser::parseQuery(const QString& query, const QStringList& searchColumns, const QString& extraFilter) const { auto pQuery(std::make_unique<AndNode>()); if (!extraFilter.isEmpty()) { pQuery->addNode(std::make_unique<SqlNode>(extraFilter)); } if (!query.isEmpty()) { QStringList tokens = query.split(" "); parseTokens(tokens, searchColumns, pQuery.get()); } return std::move(pQuery); }
SkeletonParser::SkeletonParser(const std::vector<std::string>& _tokenList) : strList(_tokenList), numOpenCurlies(0){ numBallJoints = 0; for(uint i = 0; i < strList.size(); i++){ auto token = Token(strList[i]); tokenList.push_back(token); } keywordTypeMap["balljoint"] = ballJointToken; keywordTypeMap["offset"] = offsetToken; keywordTypeMap["boxmin"] = boxminToken; keywordTypeMap["boxmax"] = boxMaxToken; keywordTypeMap["rotxlimit"] = rotXLimitToken; keywordTypeMap["rotylimit"] = rotYLimitToken; keywordTypeMap["rotzlimit"] = rotZLimitToken; keywordTypeMap["pose"] = poseToken; parseTokens(tokenList); //printTree(); }
/** * Called when authorization is finished */ void OAuthTwitter::finishedAuthorization() { QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); if (reply) { if (reply->error() == QNetworkReply::NoError) { QByteArray response = reply->readAll(); parseTokens(response); emit authorizeXAuthFinished(); } else { //dump error qDebug() << "Network Error: " << reply->error(); qDebug() << "Response error: " << reply->readAll(); emit authorizeXAuthError(); } reply->deleteLater(); } }
ExprConstSP Parser::parse(const std::string& source) { if (scanners.empty()) buildScanners(scanners, sBuilder); std::vector<token> tokens; stopLocation = source.begin(); bool success = m_tokenizer->tokenize_priority(source, scanners, tokens); if (!success) { stopLocation = m_tokenizer->stop_location(); return ExprConstSP(); } std::vector<Command> commands; if (!parseTokens(tokens, commands)) return ExprConstSP(); for (std::vector<Command>::const_iterator it = commands.begin(); it != commands.end(); ++it) { //cout << endl << (*it).getNodeName() << ", " << (*it).getNodeType() << ", " << (*it).getNumberOfChildren(); } return buildExpression(commands); }
void Controller::loadController(std::string fileName) { std::fstream fs; std::string line; fs.open(fileName, std::fstream::in); if (fs.is_open()) { while(!fs.eof()) { std::getline(fs, line); if (!line.empty()) { this->addData(parseTokens(line)); } } fs.close(); } }
/** * Gets access tokens for user entered pin number * @param pin entered pin number */ void OAuthTwitter::requestAccessToken(const QString& pin) { Q_ASSERT(m_netManager != 0); QUrl url(TWITTER_ACCESS_TOKEN_URL); QUrlQuery query; query.addQueryItem("oauth_verifier", pin.toLatin1().toPercentEncoding()); url.setQuery(query); QByteArray oauthHeader = generateAuthorizationHeader(url, OAuth::POST); QEventLoop q; QTimer t; t.setSingleShot(true); connect(&t, SIGNAL(timeout()), &q, SLOT(quit())); QNetworkRequest req(url); req.setRawHeader(AUTH_HEADER, oauthHeader); req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); QNetworkReply *reply = m_netManager->post(req, QByteArray()); connect(reply, SIGNAL(finished()), &q, SLOT(quit())); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(error())); t.start(5000); q.exec(); if(t.isActive()){ QByteArray response = reply->readAll(); parseTokens(response); reply->deleteLater(); emit authorizePinFinished(); } else { qDebug() << "Timeout"; } }
SkinParser::SkinParser(const std::vector<std::string>& _tokenList, tree<BallJoint>& _tree, int _numJoints) : strList(_tokenList){ numJoints = _numJoints; skelTree = _tree; model = Model(_tree, numJoints); output.open("output.txt", std::ofstream::out); for(uint i = 0; i < strList.size(); i++){ auto token = Token(strList[i]); tokenList.push_back(token); } keywordMap["positions"] = positionsKeyword; keywordMap["normals"] = normalsKeyword; keywordMap["skinweights"] = skinWeightsKeyword; keywordMap["triangles"] = trianglesKeyword; keywordMap["bindings"] = bindingsKeyword; keywordMap["matrix"] = matrixKeyword; parseTokens(tokenList); model.generateTransforms(); model.weightVertices(); }
/** * Starts PIN based OAuth authorization */ void OAuthTwitter::authorizePin() { Q_ASSERT(m_netManager != 0); QUrl url(TWITTER_REQUEST_TOKEN_URL); QByteArray oauthHeader = generateAuthorizationHeader(url, OAuth::POST); QNetworkRequest req(url); req.setRawHeader(AUTH_HEADER, oauthHeader); req.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); //enters event loop, simulate blocking io QEventLoop q; QTimer t; t.setSingleShot(true); connect(&t, SIGNAL(timeout()), &q, SLOT(quit())); QNetworkReply *reply = m_netManager->post(req, QByteArray()); connect(reply, SIGNAL(finished()), &q, SLOT(quit())); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(error())); t.start(5000); q.exec(); if (t.isActive()) { t.stop(); QByteArray response = reply->readAll(); parseTokens(response); reply->deleteLater(); requestAuthorization(); } else { qDebug() << "Timeout"; } }
int main(int argc, const char * argv[]) { dbglog = 1; idevicerestore_debug = 0; save_shshblobs = 0; int optindex = 0; int opt = 0; long flags = 0; char *device = 0; char *ios = 0; char *buildmanifest = 0; char *ecid = 0; if (argc == 1){ cmd_help(); return -1; } while ((opt = getopt_long(argc, (char* const *)argv, "d:i:e:m:hsbo", longopts, &optindex)) > 0) { switch (opt) { case 'h': // long option: "help"; can be called as short option cmd_help(); return 0; case 'd': // long option: "device"; can be called as short option device = optarg; break; case 'i': // long option: "ios"; can be called as short option ios = optarg; break; case 'e': // long option: "ecid"; can be called as short option ecid = optarg; break; case 'b': // long option: "no-baseband"; can be called as short option flags |= FLAG_NO_BASEBAND; break; case 's': // long option: "save"; can be called as short option save_shshblobs = 1; break; case 'o': // long option: "ota"; can be called as short option flags |= FLAG_OTA; break; case '1': // only long option: "list-devices" flags |= FLAG_LIST_DEVICES; break; case '2': // only long option: "list-ios" flags |= FLAG_LIST_IOS; break; case 'm': // long option: "build-manifest"; can be called as short option flags |= FLAG_BUILDMANIFEST; buildmanifest = optarg; break; case '4': // only long option: "print-tss-request" print_tss_request = 1; break; case '5': // only long option: "print-tss-response" print_tss_response = 1; break; case '6': // only long option: "beta" flags |= FLAG_BETA; break; case '7': // only long option: "nocache" nocache = 1; break; default: cmd_help(); return -1; } } int err = 0; int isSigned = 0; char *firmwareJson = NULL; jsmntok_t *firmwareTokens = NULL; int64_t ecidNum = 0; #define reterror(code,a ...) {error(a); err = code; goto error;} if (ecid) { if ((ecidNum = parseECID(ecid)) <0){ reterror(-7, "[TSSC] ERROR: manually specified ecid=%s, but parsing failed\n",ecid); }else{ info("[TSSC] manually specified ecid to use, parsed \"%s\" to dec:%lld hex:%llx\n",ecid,ecidNum,ecidNum); } } firmwareJson = (flags & FLAG_OTA) ? getOtaJson() : getFirmwareJson(); if (!firmwareJson) reterror(-6,"[TSSC] ERROR: could not get firmware.json\n"); int cnt = parseTokens(firmwareJson, &firmwareTokens); if (cnt < 1) reterror(-2,"[TSSC] ERROR: parsing %s.json failed\n",(flags & FLAG_OTA) ? "ota" : "firmware"); if (flags & FLAG_LIST_DEVICES) { printListOfDevices(firmwareJson, firmwareTokens); }else if (flags & FLAG_LIST_IOS){ if (!device) reterror(-3,"[TSSC] ERROR: please specify a device for this option\n\tuse -h for more help\n"); if (!checkDeviceExists(device, firmwareJson, firmwareTokens, (flags & FLAG_OTA))) reterror(-4,"[TSSC] ERROR: device %s could not be found in devicelist\n",device); printListOfiOSForDevice(firmwareJson, firmwareTokens, device, (flags & FLAG_OTA)); }else{ //request ticket if (buildmanifest) { if (device && !checkDeviceExists(device, firmwareJson, firmwareTokens, (flags & FLAG_OTA))) reterror(-4,"[TSSC] ERROR: device %s could not be found in devicelist\n",device); isSigned = isManifestSignedForDevice(buildmanifest, &device, ecidNum, !(flags & FLAG_NO_BASEBAND), &ios); }else{ if (!device) reterror(-3,"[TSSC] ERROR: please specify a device for this option\n\tuse -h for more help\n"); if (!ios) reterror(-5,"[TSSC] ERROR: please specify an iOS version for this option\n\tuse -h for more help\n"); if (!checkFirmwareForDeviceExists(device, ios, firmwareJson, firmwareTokens, (flags & FLAG_OTA))) reterror(-6, "[TSSC] ERROR: either device %s does not exist, or there is no iOS %s for it.\n",device,ios); isSigned = isVersionSignedForDevice(firmwareJson, firmwareTokens, ios, device, ecidNum, (flags & FLAG_OTA), !(flags & FLAG_NO_BASEBAND), (flags & FLAG_BETA)); } printf("\niOS %s for device %s %s being signed!\n",ios,device, (isSigned) ? "IS" : "IS NOT"); } error: if (firmwareJson) free(firmwareJson); if (firmwareTokens) free(firmwareTokens); return err ? err : isSigned; #undef reterror }