int main(int argc, char **argv) { if ( argc != 2 ) { qWarning( "usage: %s pofile", argv[0] ); return -1; } MsgList translated; try { ifstream s(argv[1]); GettextLexer lexer(s); GettextParser parser(lexer); translated = parser.file(); } catch(exception& e) { cerr << "exception: " << e.what() << endl; return 1; } for (MsgList::ConstIterator it = translated.constBegin(); it != translated.constEnd(); ++it) { if ( !( *it ).msgstr.isEmpty() ) { outputMsg("msgid", (*it).msgstr); outputMsg("msgstr", (*it).msgid); cout << "\n"; } } }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::DeleteMsgs(tty_save_state& tty, MsgList& lst) const { for (;;) { Message *msg(SelectFromMsg(lst)); if (msg) { for (MsgList::iterator itr(lst.begin()); itr != lst.end(); ++itr) { if (*itr == msg) { if (get_yn("Delete msg? (y/n):", true)) { delete *itr; lst.erase(itr); } break; } } } else break; } return lst.size(); }
void ChatControler::_getMesage(service::ErrorInfo &info, int64 targetId, std::vector<service::MsgPtr>msgPtr) { qDebug() << Q_FUNC_INFO << msgPtr.size(); MsgList msgList; //std::shared_ptr<service::Msg> msg; for(auto msg:msgPtr){ if(msg->msgtype == 2||msg->msgtype == 8){ std::shared_ptr<service::MsgText> msgText = std::dynamic_pointer_cast<service::MsgText>(msg); Msg item; item.activeType = QString::number(msgText->active_type); item.body = QString::fromStdString(utils::MsgUtils::getText(msgText->body)); item.fromid = QString::number(msgText->fromid); item.localid = QString::number(msgText->localid); item.msgid = QString::number(msgText->msgid); item.msgProperties = QString::fromStdString(msgText->msg_properties); item.msgtype = QString::number(msgText->msgtype); item.relatedMsgid = QString::number(msgText->related_msgid); item.targetid = QString::number(msgText->targetid); item.time = QString::number(msgText->time); item.toid = QString::number(msgText->toid); msgList.insert(msgList.size(),item); } } if(!info.code()){ emit getMessagesBack(true,targetId,msgList); }else{ emit getMessagesBack(true,targetId,msgList); } }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::DeleteAllMsgs(tty_save_state& tty, MsgList& lst) const { if (lst.size() && get_yn("Delete all msgs? (y/n):", true)) { for_each(lst.begin(), lst.end(), [](const Message *pp){ delete pp; pp = nullptr; }); lst.clear(); } return 0; }
const char* CCrypto::GetMessage( EMsg eMsg, uint8 serverType ) { for ( MsgList::iterator iter = eMsgList.begin() ; iter != eMsgList.end() ; iter++ ) { if ( iter->first == eMsg ) { return iter->second->pchMsgName; } } return NULL; }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::CreateMsgs(tty_save_state& tty, MsgList& lst) const { for (;;) { const BaseMsgEntry *mc(SelectMsg()); if (!mc) break; unique_ptr<Message> msg(mc->_create._do(true)); const FieldTable::Pair *fld; while((fld = SelectField(msg.get()))) EditMsg(tty, fld, msg.get()); _os << endl << endl << *static_cast<MessageBase *>(msg.get()) << endl; if (get_yn("Add to list? (y/n):", true)) lst.push_back(msg.release()); } return static_cast<int>(lst.size()); }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::CreateMsgs(tty_save_state& tty, MsgList& lst) const { for (;;) { const BaseMsgEntry *mc(SelectMsg()); if (mc) { Message *msg(mc->_create()); const FieldTable::Pair *fld; while((fld = SelectField(msg))) EditMsg(tty, fld, msg); _os << endl << endl << *static_cast<MessageBase *>(msg) << endl; if (get_yn("Add to list? (y/n):", true)) lst.push_back(msg); } else break; } return lst.size(); }
bool UserMessages::InternalUnhook(int msg_id, IBitBufUserMessageListener *pListener, bool intercept, bool isNew) #endif { MsgList *pList; MsgIter iter; ListenerInfo *pInfo; bool deleted = false; if (msg_id < 0 || msg_id >= 255) { return false; } pList = (intercept) ? &m_msgIntercepts[msg_id] : &m_msgHooks[msg_id]; for (iter=pList->begin(); iter!=pList->end(); iter++) { pInfo = (*iter); if (pInfo->Callback == pListener && pInfo->IsNew == isNew) { if (pInfo->IsHooked) { pInfo->KillMe = true; return true; } pList->erase(iter); deleted = true; break; } } if (deleted) { _DecRefCounter(); } return deleted; }
void Log::_flushOutlist() { MsgList *outlist = mOutlist; if (!outlist->empty()) { char timeStr[32] = {0}; const char *pTimeStr = 0; for (MsgList::iterator i = outlist->begin(); i != outlist->end(); ++i) { _MSG &msgnode = *i; if (msgnode.time) { struct tm *timeinfo = localtime(&msgnode.time); snprintf(timeStr, sizeof(timeStr), "[%04d/%02d/%d %02d:%02d:%02d]", timeinfo->tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); pTimeStr = timeStr; } else { pTimeStr = 0; } for (PrinterList::iterator it = mLogPrinter.begin(); it != mLogPrinter.end(); ++it) { ILogPrinter *obj = *it; if (obj->getLevel() & msgnode.level) { obj->onPrint(msgnode.level, msgnode.time, pTimeStr, msgnode.msg.c_str()); } } } outlist->clear(); } }
//------------------------------------------------------------------------------------------------- int ConsoleMenu::EditMsgs(tty_save_state& tty, MsgList& lst) const { for (;;) { Message *msg(SelectFromMsg(lst)); if (!msg) break; const FieldTable::Pair *fld; while((fld = SelectField(msg))) EditMsg(tty, fld, msg); _os << endl << endl << *static_cast<MessageBase *>(msg) << endl; } return static_cast<int>(lst.size()); }
void UserMessages::OnMessageEnd_Post() { if (!m_InHook || m_BlockEndPost) { RETURN_META(MRES_IGNORED); } MsgList *pList; MsgIter iter; ListenerInfo *pInfo; pList = &m_msgIntercepts[m_CurId]; for (iter=pList->begin(); iter!=pList->end(); ) { pInfo = (*iter); pInfo->IsHooked = true; pInfo->Callback->OnUserMessageSent(m_CurId); if (pInfo->KillMe) { iter = pList->erase(iter); m_FreeListeners.push(pInfo); _DecRefCounter(); continue; } pInfo->IsHooked = false; iter++; } m_InHook = false; pList = &m_msgHooks[m_CurId]; for (iter=pList->begin(); iter!=pList->end(); ) { pInfo = (*iter); pInfo->IsHooked = true; pInfo->Callback->OnUserMessageSent(m_CurId); if (pInfo->KillMe) { iter = pList->erase(iter); m_FreeListeners.push(pInfo); _DecRefCounter(); continue; } pInfo->IsHooked = false; iter++; } }
CCrypto::~CCrypto() { eMsgList.clear(); if ( Encrypt_Detour ) { Encrypt_Detour->Detach(); delete Encrypt_Detour; } if ( Decrypt_Detour ) { Decrypt_Detour->Detach(); delete Decrypt_Detour; } }
int Request::addParams(MsgList &ml) { Json::Value param; Json::Value arr; Json::Value msg; param["type"] = "MsgList"; for (int i = 0; i != ml.size(); i++) { msg["srcID"] = ml[i].srcID; msg["targetID"] = ml[i].targetID; msg["msgText"] = ml[i].msgText; msg["postTime"] = (int)ml[i].postTime; msg["msgType"] = ml[i].msgType; arr.append(msg); } param["value"] = arr; root["params"].append(param); return 0; }
void CDoodChatManagerModel::addHistoryMsgToListView(MsgList msgList) { qDebug()<<Q_FUNC_INFO<<"msg size:"<<msgList.size(); int len = msgList.size(); bool isUpdate = false; if(msgList.size() <= 0){ return; } for(int i = 0; i<len;++i){ Msg msg = msgList.at(i); if(/*msg.msgtype.toInt() == MSG_TYPE_IMG || */msg.fromid =="0"||msg.fromid == ""){ continue; } if(msg.localid == "" ||msg.localid == "0"){ msg.localid = createLocalId(); } if(msg.msgtype.toInt() == MEDIA_MSG_REVOKE && msgIsExitById(msg.revokeMsgId)){ QStringList msgs; msgs.push_back(msg.revokeMsgId); emit deleteMessage(id(),msgs); removeItemByMsgId(msg.revokeMsgId); } if(!m_pChatMap.contains(msg.localid)&&!msgIsExitById(msg.msgid)) { QDateTime msgDate = QDateTime::fromString(msg.time, "yyyy-MM-dd hh:mm:ss"); bool bShow = isJudageShowTime(msgDate); isUpdate = true; qDebug()<< Q_FUNC_INFO<<"msgTime:"<<msg.time; CDoodChatItem *pChatItem = new CDoodChatItem(this); pChatItem->setLocalId(msg.localid); pChatItem->setMsgType(msg.msgtype); pChatItem->setActiveType(msg.activeType); pChatItem->setMsgId(msg.msgid); pChatItem->setTargetId(msg.targetid); pChatItem->setFromId(msg.fromid); pChatItem->setToId(msg.toid); pChatItem->setName(msg.name); pChatItem->setTime(msgDate); pChatItem->setShowTime(bShow); pChatItem->setLoading(false); pChatItem->setContactThumbAvatar(msg.thumb_avatar); pChatItem->setIsMyselft(mAccountUserId == msg.fromid); if(msg.msgtype.toInt() == MSG_TYPE_FILE){ pChatItem->setFileSize(msg.f_size.toLongLong()); pChatItem->setProgress(0); pChatItem->setThumbAvatar(msg.f_url); pChatItem->setTar_thumbAvatar(msg.encrypt_user); pChatItem->setTextMsg(msg.filename); pChatItem->setBody(msg.encrypt_key); pChatItem->setFilePath(""); pChatItem->mFileUrl = msg.f_url; } else if(msg.msgtype.toInt() == MSG_TYPE_IMG){ if(msg.body != ""&& fileExistAtLocal(msg.body)){ msg.body = "file://"+msg.body; }else{ msg.body = "qrc:/res/control/defaultimage.png"; } pChatItem->setBody(msg.body); pChatItem->setTar_thumbAvatar(msg.thumb_url); pChatItem->setTextMsg(msg.main_url); pChatItem->setBodyBig(msg.main_url); pChatItem->mImageMainUrl = msg.main_url; pChatItem->mImageThumbUrl = msg.thumb_url; pChatItem->setEncrypt_key(msg.encrypt_key); }else if(msg.msgtype.toInt() == MEDIA_MSG_REVOKE){ pChatItem->setMsgType(QString::number(MSG_TYPE_TIP)); if(msg.fromid == mAccountUserId){ pChatItem->setBody("您撤回了一条消息"); }else{ pChatItem->setBody(msg.body+"撤回了一条消息"); } } else{ pChatItem->setBody(msg.body); } //addItem(pChatItem); qint64 pos = indexOfNewItem(pChatItem->time()); if(pos>=0 &&pos<= m_pChatMap.size()){ insertItem(pos,pChatItem); } m_pChatMap[msg.localid] = pChatItem; updateItemNameAndAvatar(msg.localid,msg.fromid); pChatItem->mEnkey = msg.encrypt_key; pChatItem->mEnkeyUser = msg.encrypt_user; if(msg.msgtype.toInt() == MSG_TYPE_IMG){ if(msg.body == "qrc:/res/control/defaultimage.png"|| !fileExistAtLocal(msg.body)){ pChatItem->setLoading(true); emit downloadImage(id(),msg.localid,msg.thumb_url,msg.encrypt_key); } } } } if(isUpdate){ emit updateDataFinished(); } if(_list->count()>0){ QString msgid; msgid=qobject_cast<CDoodChatItem*>(_list->at(_list->count()-1))->msgId(); emit setMsgRead(msgid); } }
void LinkDoodService::onChatGetMessagesResult(bool code, int64 sessionId, MsgList msgList) { qDebug() << Q_FUNC_INFO << msgList.size(); emit getMessagesResult(code,QString::number(sessionId),msgList); }
CCrypto::CCrypto() : Encrypt_Detour( NULL ), Decrypt_Detour( NULL ) { CSimpleScan steamClientScan( "steamclient.dll" ); SymmetricEncryptWithIVFn pEncrypt = NULL; bool bEncrypt = steamClientScan.FindFunction( "\x53\x8B\xDC\x83\xEC\x08\x83\xE4\xF0\x83\xC4\x04\x55\x8B\x6B\x04\x89\x6C\x24\x04\x8B\xEC\x64\xA1\x00\x00\x00\x00", "xxxxxxxxxxxxxxxxxxxxxxxxxxxx", (void **)&pEncrypt ); Encrypt_Orig = pEncrypt; g_pLogger->LogConsole( "CCrypto::SymmetricEncryptWithIV = 0x%x\n", Encrypt_Orig ); SymmetricDecryptRecoverIVFn pDecrypt = NULL; bool bDecrypt = steamClientScan.FindFunction( "\x55\x8B\xEC\x81\xEC\x04\x01\x00\x00\x83\x7D\x08\x00\x53", "xxxxxxxxxxxxxx", (void **)&pDecrypt ); Decrypt_Orig = pDecrypt; g_pLogger->LogConsole( "CCrypto::SymmetricDecryptRecoverIV = 0x%x\n", Decrypt_Orig ); char *pGetMessageList = NULL; bool bGetMessageList = steamClientScan.FindFunction( "\xA1\x00\x00\x00\x00\xA8\x01\x75\x00\x83\xC8\x01\xB9\x00\x00\x00\x00\x0056", "x????xxx?xxxx????x", (void **)&pGetMessageList ); if (bGetMessageList) { const uint32 uMessageListStartPtrOffset = 38; const uint32 uMessageListEndPtrOffset = uMessageListStartPtrOffset + 26; MsgInfo_t *pInfos = *(MsgInfo_t **)( pGetMessageList + uMessageListStartPtrOffset ); MsgInfo_t *pEndInfos = *(MsgInfo_t **)( pGetMessageList + uMessageListEndPtrOffset ); uint16 numMessages = ( ( int )pEndInfos - ( int )pInfos ) / sizeof( MsgInfo_t ); g_pLogger->LogConsole( "pGetMessageList = 0x%x\npInfos = 0x%x\nnumMessages = %d\n", pGetMessageList, pInfos, numMessages ); for ( uint16 x = 0 ; x < numMessages; x++ ) { eMsgList.insert( MsgPair( pInfos->eMsg, pInfos ) ); pInfos++; } if ( eMsgList.size() != 0 ) { // should only delete our existing files if we have something new to dump g_pLogger->DeleteFile( "emsg_list.txt", false ); g_pLogger->DeleteFile( "emsg_list_detailed.txt", false ); for ( MsgList::iterator iter = eMsgList.begin() ; iter != eMsgList.end() ; iter++ ) { MsgInfo_t *pInfo = iter->second; g_pLogger->LogFile( "emsg_list.txt", false, "\t%s = %d,\r\n", pInfo->pchMsgName, pInfo->eMsg ); g_pLogger->LogFile( "emsg_list_detailed.txt", false, "\t%s = %d, // flags: %d, server type: %d\r\n", pInfo->pchMsgName, pInfo->eMsg, pInfo->nFlags, pInfo->k_EServerTarget ); } g_pLogger->LogConsole( "Dumped emsg list! (%d messages)\n", eMsgList.size() ); } else { g_pLogger->LogConsole( "Unable to dump emsg list: No messages! (Offset changed?)\n" ); } } else { g_pLogger->LogConsole( "Unable to find GetMessageList.\n" ); } SymmetricEncryptWithIVFn encrypt = CCrypto::SymmetricEncryptWithIV; SymmetricDecryptRecoverIVFn decrypt = CCrypto::SymmetricDecryptRecoverIV; if ( bEncrypt ) { Encrypt_Detour = new CSimpleDetour((void **) &Encrypt_Orig, (void*) encrypt); Encrypt_Detour->Attach(); g_pLogger->LogConsole( "Detoured SymmetricEncryptWithIV!\n" ); } else { g_pLogger->LogConsole( "Unable to hook SymmetricEncryptWithIV: Func scan failed.\n" ); } if ( bDecrypt ) { Decrypt_Detour = new CSimpleDetour((void **) &Decrypt_Orig, (void*) decrypt); Decrypt_Detour->Attach(); g_pLogger->LogConsole( "Detoured SymmetricDecryptRecoverIV!\n" ); } else { g_pLogger->LogConsole( "Unable to hook SymmetricDecryptRecoverIV: Func scan failed.\n" ); } }
void UserMessages::OnMessageEnd_Pre() { if (!m_InHook) { UM_RETURN_META(MRES_IGNORED); } MsgList *pList; MsgIter iter; ListenerInfo *pInfo; ResultType res; bool intercepted = false; bool handled = false; pList = &m_msgIntercepts[m_CurId]; for (iter=pList->begin(); iter!=pList->end(); ) { pInfo = (*iter); pInfo->IsHooked = true; #ifdef USE_PROTOBUF_USERMESSAGES res = pInfo->Callback->InterceptUserMessage(m_CurId, m_InterceptBuffer, m_CurRecFilter); #else res = pInfo->Callback->InterceptUserMessage(m_CurId, &m_InterceptBuffer, m_CurRecFilter); #endif intercepted = true; switch (res) { case Pl_Stop: { if (pInfo->KillMe) { pList->erase(iter); m_FreeListeners.push(pInfo); _DecRefCounter(); goto supercede; } pInfo->IsHooked = false; goto supercede; } case Pl_Handled: { handled = true; if (pInfo->KillMe) { iter = pList->erase(iter); m_FreeListeners.push(pInfo); _DecRefCounter(); continue; } break; } default: { if (pInfo->KillMe) { iter = pList->erase(iter); m_FreeListeners.push(pInfo); _DecRefCounter(); continue; } break; } } pInfo->IsHooked = false; iter++; } if (!handled && intercepted) { #if SOURCE_ENGINE == SE_CSGO ENGINE_CALL(SendUserMessage)(static_cast<IRecipientFilter &>(*m_CurRecFilter), m_CurId, *m_InterceptBuffer); #else bf_write *engine_bfw; #if SOURCE_ENGINE >= SE_LEFT4DEAD engine_bfw = ENGINE_CALL(UserMessageBegin)(m_CurRecFilter, m_CurId, g_SMAPI->GetUserMessage(m_CurId)); #else engine_bfw = ENGINE_CALL(UserMessageBegin)(m_CurRecFilter, m_CurId); #endif m_ReadBuffer.StartReading(m_InterceptBuffer.GetBasePointer(), m_InterceptBuffer.GetNumBytesWritten()); engine_bfw->WriteBitsFromBuffer(&m_ReadBuffer, m_InterceptBuffer.GetNumBitsWritten()); ENGINE_CALL(MessageEnd)(); #endif // SE_CSGO } { #if SOURCE_ENGINE == SE_CSGO int size = m_OrigBuffer->ByteSize(); uint8 *data = (uint8 *)stackalloc(size); m_OrigBuffer->SerializePartialToArray(data, size); protobuf::Message *pTempMsg = GetMessagePrototype(m_CurId)->New(); pTempMsg->ParsePartialFromArray(data, size); #else bf_write *pTempMsg = m_OrigBuffer; #endif pList = &m_msgHooks[m_CurId]; for (iter=pList->begin(); iter!=pList->end(); ) { pInfo = (*iter); pInfo->IsHooked = true; pInfo->Callback->OnUserMessage(m_CurId, pTempMsg, m_CurRecFilter); if (pInfo->KillMe) { iter = pList->erase(iter); m_FreeListeners.push(pInfo); _DecRefCounter(); continue; } pInfo->IsHooked = false; iter++; } #if SOURCE_ENGINE == SE_CSGO delete pTempMsg; #endif } UM_RETURN_META((intercepted) ? MRES_SUPERCEDE : MRES_IGNORED); supercede: m_BlockEndPost = true; UM_RETURN_META(MRES_SUPERCEDE); }
int main( int argc, char **argv ) { bool report_mismatches = qstrcmp(getenv("REPORT_MISMATCHES"), "no"); if (argc != 3) { qWarning("usage: %s english-XML translated-XML", argv[0]); exit(1); } MsgList english = parseXML(argv[1]); MsgList translated = parseXML(argv[2]); QMap<QString, int>::ConstIterator eit2 = english.pc.anchors.begin(); QMap<int, QString> errors; while (eit2 != english.pc.anchors.end()) { if (eit2.data() == translated.pc.anchors[eit2.key()]) { QString key = eit2.key(); eit2++; translated.pc.anchors.remove(key); english.pc.anchors.remove(key); } else { errors[eit2.data()] = eit2.key(); eit2++; } } if (report_mismatches && errors.count()) { for (QMap<int, QString>::ConstIterator it = errors.begin(); it != errors.end(); ++it) { if (translated.pc.anchors.contains(it.data())) fprintf(stderr, "id=\"%s\" not in the same paragraphs (%d vs %d)\n", it.data().latin1(), english.pc.anchors[it.data()], translated.pc.anchors[it.data()]); else { fprintf(stderr, "id=\"%s\" not in the translated paragraphs (it's in paragraph %d in english)\n", it.data().latin1(), english.pc.anchors[it.data()]); } } ::exit(1); } MsgList::ConstIterator tit = translated.begin(); for (MsgList::Iterator it = english.begin(); it != english.end() && tit != translated.end(); ++tit, ++it) { (*it).msgstr = (*tit).msgid; } bool have_roles_of_translators = false; bool have_credit_for_translators = false; QMap<QString, int> msgids; int index = 0; for (MsgList::Iterator it = english.begin(); it != english.end(); ) { if ((*it).msgid == "ROLES_OF_TRANSLATORS") { if ((*it).msgstr.length() && !(*it).msgstr.contains("ROLES_OF_TRANSLATORS")) { have_roles_of_translators = true; } else { MsgList::Iterator tmp = it; ++it; english.remove(tmp); } continue; } if ((*it).msgid == "CREDIT_FOR_TRANSLATORS") { if ((*it).msgstr.length() && !(*it).msgstr.contains("CREDIT_FOR_TRANSLATORS")) { have_credit_for_translators = true; } else { MsgList::Iterator tmp = it; ++it; english.remove(tmp); } continue; } if (msgids.contains((*it).msgid)) { english[msgids[(*it).msgid]].lines += (*it).lines; if (english[msgids[(*it).msgid]].msgstr != (*it).msgstr) { fprintf(stderr, "two different translations for \"%s\" (\"%s\" and \"%s\") - choosing first one\n", (*it).msgid.latin1(), english[msgids[(*it).msgid]].msgstr.local8Bit().data(), (*it).msgstr.local8Bit().data()); } MsgList::Iterator tmp = it; it++; english.remove(tmp); } else { msgids.insert((*it).msgid, index); index++; it++; } } int counter = 1; while (tit != translated.end()) { MsgBlock mb; mb.msgid = QString::fromLatin1("appended paragraph %1").arg(counter++); mb.msgstr = (*tit).msgid; mb.lines += (*tit).lines; english.append(mb); tit++; } cout << "#, fuzzy\n"; cout << "msgid \"\"\n"; cout << "msgstr \"\"\n"; cout << "\"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\\n\"\n"; cout << "\"Last-Translator: FULL NAME <EMAIL@ADDRESS>\\n\"\n"; cout << "\"Content-Type: text/plain; charset=utf-8\\n\"\n"; for (MsgList::ConstIterator it = english.begin(); it != english.end(); ++it) { cout << "#: "; for (QValueList<BlockInfo>::ConstIterator it2 = (*it).lines.begin(); it2 != (*it).lines.end(); it2++) { if (it2 != (*it).lines.begin()) cout << ", "; cout << "index.docbook:" << (*it2).start_line; } cout << "\n"; outputMsg("msgid", StructureParser::descapeLiterals( (*it).msgid )); outputMsg("msgstr", StructureParser::descapeLiterals( (*it).msgstr )); cout << "\n"; } if ( !getenv( "NO_CREDITS" ) ) { if ( !have_roles_of_translators ) { outputMsg("msgid", "ROLES_OF_TRANSLATORS"); outputMsg("msgstr", "<!--TRANS:ROLES_OF_TRANSLATORS-->"); cout << "\n"; } if ( !have_credit_for_translators) { outputMsg("msgid", "CREDIT_FOR_TRANSLATORS"); outputMsg("msgstr", "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"); cout << "\n"; } } return 0; }
void UserMessages::OnMessageEnd_Pre() { if (!m_InHook) { RETURN_META(MRES_IGNORED); } MsgList *pList; MsgIter iter; ListenerInfo *pInfo; ResultType res; bool intercepted = false; bool handled = false; pList = &m_msgIntercepts[m_CurId]; for (iter=pList->begin(); iter!=pList->end(); ) { pInfo = (*iter); pInfo->IsHooked = true; res = pInfo->Callback->InterceptUserMessage(m_CurId, &m_InterceptBuffer, m_CurRecFilter); intercepted = true; switch (res) { case Pl_Stop: { if (pInfo->KillMe) { pList->erase(iter); m_FreeListeners.push(pInfo); _DecRefCounter(); goto supercede; } pInfo->IsHooked = false; goto supercede; } case Pl_Handled: { handled = true; if (pInfo->KillMe) { iter = pList->erase(iter); m_FreeListeners.push(pInfo); _DecRefCounter(); continue; } break; } default: { if (pInfo->KillMe) { iter = pList->erase(iter); m_FreeListeners.push(pInfo); _DecRefCounter(); continue; } break; } } pInfo->IsHooked = false; iter++; } if (handled) { goto supercede; } if (intercepted) { bf_write *engine_bfw; engine_bfw = ENGINE_CALL(UserMessageBegin)(m_CurRecFilter, m_CurId); m_ReadBuffer.StartReading(m_InterceptBuffer.GetBasePointer(), m_InterceptBuffer.GetNumBytesWritten()); engine_bfw->WriteBitsFromBuffer(&m_ReadBuffer, m_InterceptBuffer.GetNumBitsWritten()); ENGINE_CALL(MessageEnd)(); } pList = &m_msgHooks[m_CurId]; for (iter=pList->begin(); iter!=pList->end(); ) { pInfo = (*iter); pInfo->IsHooked = true; pInfo->Callback->OnUserMessage(m_CurId, m_OrigBuffer, m_CurRecFilter); if (pInfo->KillMe) { iter = pList->erase(iter); m_FreeListeners.push(pInfo); _DecRefCounter(); continue; } pInfo->IsHooked = false; iter++; } RETURN_META((intercepted) ? MRES_SUPERCEDE : MRES_IGNORED); supercede: m_InHook = false; m_BlockEndPost = true; RETURN_META(MRES_SUPERCEDE); }