void UmlOperation::set_cpp(const char * return_form_or_inherit, const char * params, QCString body, bool inlinep, const char * if_def, const char * end_if) { if (*return_form_or_inherit == ':') { // inherit if (inlinep) { QCString s = remove_throw(CppSettings::operationDecl()); int index = s.find("${)}"); s.resize(index + 5); s.insert(index, params); s.append(" "); s.append(return_form_or_inherit); if (!body.isEmpty()) { s.append(" {\n "); s.append(body); s.append("}\n"); } else s.append(" {\n}\n"); conditional(s, if_def, end_if); set_CppDecl(s); set_CppDef(""); } else { QCString s = remove_throw(CppSettings::operationDecl()); int index = s.find("${)}"); s.resize(index + 5); s.insert(index, params); s.append(";"); conditional(s, if_def, end_if); set_CppDecl(s); s = remove_throw(CppSettings::operationDef()); index = s.find("${)}"); s.resize(index + 5); s.insert(index, params); s.append(" "); s.append(return_form_or_inherit); if (!body.isEmpty()) { s.append(" {\n "); s.append(body); s.append("}\n"); } else s.append(" {\n}\n"); conditional(s, if_def, end_if); set_CppDef(s); } } else { // return if (inlinep) { QCString s = remove_throw(CppSettings::operationDecl()); int index = s.find("${type}"); s.replace(index, 7, return_form_or_inherit); s.insert(s.find("${)}", index), params); s.resize(s.findRev(";") + 1); if (!body.isEmpty()) { s.append(" {\n "); s.append(body); s.append("}\n"); } else s.append(" {\n}\n"); conditional(s, if_def, end_if); set_CppDecl(s); set_CppDef(""); } else { QCString s = remove_throw(CppSettings::operationDecl()); int index = s.find("${type}"); s.replace(index, 7, return_form_or_inherit); s.insert(s.find("${)}", index), params); conditional(s, if_def, end_if); set_CppDecl(s); s = remove_throw(CppSettings::operationDef()); index = s.find("${type}"); s.replace(index, 7, return_form_or_inherit); s.insert(s.find("${)}", index), params); conditional(s, if_def, end_if); set_CppDef(s); set_CppBody(body); } } }
/*! Reads a fragment of code from file \a fileName starting at * line \a startLine and ending at line \a endLine (inclusive). The fragment is * stored in \a result. If FALSE is returned the code fragment could not be * found. * * The file is scanned for a opening bracket ('{') from \a startLine onward * The line actually containing the bracket is returned via startLine. * The file is scanned for a closing bracket ('}') from \a endLine backward. * The line actually containing the bracket is returned via endLine. * Note that for VHDL code the bracket search is not done. */ bool readCodeFragment(const char *fileName, int &startLine,int &endLine,QCString &result) { static bool filterSourceFiles = Config_getBool("FILTER_SOURCE_FILES"); static int tabSize = Config_getInt("TAB_SIZE"); //printf("readCodeFragment(%s,%d,%d)\n",fileName,startLine,endLine); if (fileName==0 || fileName[0]==0) return FALSE; // not a valid file name QCString filter = getFileFilter(fileName,TRUE); FILE *f=0; bool usePipe = !filter.isEmpty() && filterSourceFiles; SrcLangExt lang = getLanguageFromFileName(fileName); if (!usePipe) // no filter given or wanted { f = portable_fopen(fileName,"r"); } else // use filter { QCString cmd=filter+" \""+fileName+"\""; Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",cmd.data()); f = portable_popen(cmd,"r"); } bool found = lang==SrcLangExt_VHDL || lang==SrcLangExt_Tcl || lang==SrcLangExt_Python || lang==SrcLangExt_Fortran; // for VHDL, TCL, Python, and Fortran no bracket search is possible if (f) { int c=0; int col=0; int lineNr=1; // skip until the startLine has reached while (lineNr<startLine && !feof(f)) { while ((c=fgetc(f))!='\n' && c!=EOF) /* skip */; lineNr++; if (found && c == '\n') c = '\0'; } if (!feof(f)) { // skip until the opening bracket or lonely : is found char cn=0; while (lineNr<=endLine && !feof(f) && !found) { int pc=0; while ((c=fgetc(f))!='{' && c!=':' && c!=EOF) // } so vi matching brackets has no problem { //printf("parsing char `%c'\n",c); if (c=='\n') { lineNr++,col=0; } else if (c=='\t') { col+=tabSize - (col%tabSize); } else if (pc=='/' && c=='/') // skip single line comment { while ((c=fgetc(f))!='\n' && c!=EOF) pc=c; if (c=='\n') lineNr++,col=0; } else if (pc=='/' && c=='*') // skip C style comment { while (((c=fgetc(f))!='/' || pc!='*') && c!=EOF) { if (c=='\n') lineNr++,col=0; pc=c; } } else { col++; } pc = c; } if (c==':') { cn=fgetc(f); if (cn!=':') found=TRUE; } else if (c=='{') // } so vi matching brackets has no problem { found=TRUE; } } //printf(" -> readCodeFragment(%s,%d,%d) lineNr=%d\n",fileName,startLine,endLine,lineNr); if (found) { // For code with more than one line, // fill the line with spaces until we are at the right column // so that the opening brace lines up with the closing brace if (endLine!=startLine) { QCString spaces; spaces.fill(' ',col); result+=spaces; } // copy until end of line if (c) result+=c; startLine=lineNr; if (c==':') { result+=cn; if (cn=='\n') lineNr++; } const int maxLineLength=4096; char lineStr[maxLineLength]; do { //printf("reading line %d in range %d-%d\n",lineNr,startLine,endLine); int size_read; do { // read up to maxLineLength-1 bytes, the last byte being zero char *p = fgets(lineStr, maxLineLength,f); //printf(" read %s",p); if (p) { size_read=qstrlen(p); } else // nothing read { size_read=-1; lineStr[0]='\0'; } result+=lineStr; } while (size_read == (maxLineLength-1)); lineNr++; } while (lineNr<=endLine && !feof(f)); // strip stuff after closing bracket int newLineIndex = result.findRev('\n'); int braceIndex = result.findRev('}'); if (braceIndex > newLineIndex) { result.truncate(braceIndex+1); } endLine=lineNr-1; } } if (usePipe) { portable_pclose(f); Debug::print(Debug::FilterOutput, 0, "Filter output\n"); Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",result.data()); } else { fclose(f); } } result = transcodeCharacterStringToUTF8(result); //fprintf(stderr,"readCodeFragement(%d-%d)=%s\n",startLine,endLine,result.data()); return found; }
void ICQClient::chn_close() { unsigned errorCode = 0; TlvList tlv(socket()->readBuffer()); Tlv *tlv_error = tlv(8); if (tlv_error){ unsigned short err = *tlv_error; QString errString; switch (err){ case ICQ_LOGIN_ERRxOLDCLIENT1: case ICQ_LOGIN_ERRxOLDCLIENT2: errString = I18N_NOOP("This client is outdated"); m_reconnect = NO_RECONNECT; break; case ICQ_LOGIN_ERRxIP_RATE_LIMIT1: case ICQ_LOGIN_ERRxIP_RATE_LIMIT2: errString = I18N_NOOP("Too many clients from same IP"); m_reconnect = NO_RECONNECT; break; case ICQ_LOGIN_ERRxRATE_LIMIT1: case ICQ_LOGIN_ERRxRATE_LIMIT2: errString = I18N_NOOP("Rate limit"); m_reconnect = NO_RECONNECT; break; case ICQ_LOGIN_ERRxBAD_PASSWD1: case ICQ_LOGIN_ERRxBAD_PASSWD2: case ICQ_LOGIN_ERRxBAD_PASSWD3: errString = I18N_NOOP("Invalid UIN and password combination"); m_reconnect = NO_RECONNECT; errorCode = AuthError; break; case ICQ_LOGIN_ERRxNOT_EXISTS1: case ICQ_LOGIN_ERRxNOT_EXISTS2: errString = I18N_NOOP("Non-existant UIN"); m_reconnect = NO_RECONNECT; errorCode = AuthError; break; case ICQ_LOGIN_ERRxBAD_LOGIN: errString = I18N_NOOP("Bad login procedure"); m_reconnect = NO_RECONNECT; break; case ICQ_LOGIN_ERRxUNAVAILABLE1: case ICQ_LOGIN_ERRxUNAVAILABLE2: case ICQ_LOGIN_ERRxUNAVAILABLE3: case ICQ_LOGIN_ERRxUNAVAILABLE4: case ICQ_LOGIN_ERRxUNAVAILABLE5: case ICQ_LOGIN_ERRxUNAVAILABLE6: case ICQ_LOGIN_ERRxUNAVAILABLE7: case ICQ_LOGIN_ERRxUNAVAILABLE8: errString = I18N_NOOP("Service temporarly unavailable"); m_reconnect = NO_RECONNECT; break; case ICQ_LOGIN_ERRxINVALID_ID: errString = I18N_NOOP("Invalid SecureID"); m_reconnect = NO_RECONNECT; break; case ICQ_LOGIN_ERRxTOO_YOUNG: errString = I18N_NOOP("Too young!"); m_reconnect = NO_RECONNECT; break; case ICQ_LOGIN_ERRxSUSPENDED1: errString = I18N_NOOP("UIN was suspended"); m_reconnect = NO_RECONNECT; break; case ICQ_LOGIN_ERRxCANT_REGISTER: errString = I18N_NOOP("Can't login to ICQ network - Please try again later"); m_reconnect = NO_RECONNECT; break; case 0: break; default: errString = "Unknown error "; errString += QString::number(err); } if (err){ log(L_ERROR, "%s", static_cast<const char *>(errString.local8Bit())); socket()->error_state(errString, errorCode); flap(ICQ_CHNxCLOSE); sendPacket(true); return; } } tlv_error = tlv(9); if (tlv_error){ QString errString; unsigned short err = *tlv_error; switch (err){ case 0x1:{ errString = I18N_NOOP("Your UIN is being used from another location"); m_reconnect = NO_RECONNECT; break; } case 0: break; default: errString = "Unknown run-time error "; errString += QString::number(err); } if (err){ log(L_ERROR, "%s", static_cast<const char *>(errString.local8Bit())); socket()->error_state(errString); return; } } flap(ICQ_CHNxCLOSE); sendPacket(true); Tlv *tlv_host = tlv(5); Tlv *tlv_cookie = tlv(6); if ((tlv_host == NULL) || (tlv_cookie == NULL)){ socket()->error_state(I18N_NOOP("Close packet from server")); return; } QCString host = tlv_host->byteArray().data(); int idx = host.find(':'); if (idx == -1){ log(L_ERROR, "Bad host address %s", host.data()); socket()->error_state(I18N_NOOP("Bad host address")); return; } unsigned short port = host.mid(idx + 1).toUShort(); host = host.left(idx); socket()->close(); socket()->connect(host, port, this); m_cookie = tlv_cookie->byteArray(); m_cookie.resize(m_cookie.size() - 1); // tlv has \0 terminator... time for Qt4 }
void MigrateDialog::process() { unsigned size = 0; for (list<QCheckBox*>::iterator it = m_boxes.begin(); it != m_boxes.end(); ++it){ if (!(*it)->isChecked()) continue; QString path = user_file((*it)->text()); path += '/'; icqConf.close(); clientsConf.close(); contactsConf.close(); icqConf.setName(path + "icq.conf"); clientsConf.setName(path + "clients.conf"); contactsConf.setName(path + "contacts.conf"); lblStatus->setText(path + "icq.conf"); if (!icqConf.open(IO_ReadOnly)){ error(i18n("Can't open %1") .arg(path + "icq.conf")); return; } if (!clientsConf.open(IO_WriteOnly | IO_Truncate)){ error(i18n("Can't open %1") .arg(path + "clients.conf")); return; } if (!contactsConf.open(IO_WriteOnly | IO_Truncate)){ error(i18n("Can't open %1") .arg(path + "contacts.conf")); return; } m_uin = 0; m_passwd = ""; m_state = 0; m_grpId = 0; m_contactId = 0; Buffer cfg; cfg.init(icqConf.size()); icqConf.readBlock(cfg.data(), icqConf.size()); for (;;){ QCString section = cfg.getSection(); if (section.isEmpty()) break; m_state = 3; if (section == "Group") m_state = 1; if (section == "User") m_state = 2; if (!m_bProcess) return; for (;;){ QCString l = cfg.getLine(); if (l.isEmpty()) break; QCString line = l; QCString name = getToken(line, '='); if (name == "UIN") m_uin = line.toUInt(); if (name == "EncryptPassword") m_passwd = line; if (name == "Name") m_name = line; if (name == "Alias") m_name = line; } flush(); barCnv->setProgress(cfg.readPos()); qApp->processEvents(); } icqConf.close(); clientsConf.close(); contactsConf.close(); m_state = 3; size += icqConf.size(); if (!m_bProcess) return; barCnv->setProgress(size); qApp->processEvents(); QString h_path = path; #ifdef WIN32 h_path += "history\\"; #else h_path += "history/"; #endif QDir history(h_path); QStringList l = history.entryList("*.history", QDir::Files); for (QStringList::Iterator it = l.begin(); it != l.end(); ++it){ hFrom.close(); hTo.close(); hFrom.setName(h_path + (*it)); lblStatus->setText(h_path + (*it)); hTo.setName(h_path + QString(m_owner) + '.' + (*it).left((*it).find('.'))); if (!hFrom.open(IO_ReadOnly)){ error(i18n("Can't open %1") .arg(hFrom.name())); return; } if (!hTo.open(IO_WriteOnly | IO_Truncate)){ error(i18n("Can't open %1") .arg(hTo.name())); return; } cfg.init(hFrom.size()); hFrom.readBlock(cfg.data(), hFrom.size()); for (;;){ QCString section = cfg.getSection(); if (section.isEmpty()) break; m_state = 3; if (section == "Message") m_state = 4; if (!m_bProcess) return; for (;;){ QCString l = cfg.getLine(); if (l.isEmpty()) break; QCString line = l; QCString name = getToken(line, '='); if (name == "Message") m_message = line; if (name == "Time") m_time = line; if (name == "Direction") m_direction = line; if (name == "Charset") m_charset = line; } flush(); barCnv->setProgress(cfg.readPos()); qApp->processEvents(); } hFrom.close(); hTo.close(); m_state = 3; size += hFrom.size(); if (!m_bProcess) return; barCnv->setProgress(size); qApp->processEvents(); } if (chkRemove->isChecked()){ icqConf.remove(); icqConf.setName(path + "sim.conf"); icqConf.remove(); for (QStringList::Iterator it = l.begin(); it != l.end(); ++it){ hFrom.setName(h_path + (*it)); hFrom.remove(); } } } m_bProcess = false; accept(); }
static CWResult mocify(CWPluginContext context, const QCString &source) { CWDisplayLines(context, line_count++); source.stripWhiteSpace(); CWResult err; bool dotmoc=false; QCString stem = source, ext; int dotpos = stem.findRev('.'); if(dotpos != -1) { ext = stem.right(stem.length() - (dotpos+1)); stem = stem.left(dotpos); if(ext == "cpp") dotmoc = true; } else { //whoa! } QCString dest; if(dotmoc) dest = stem + ".moc"; else dest = "moc_" + stem + ".cpp"; //moc it CWFileSpec destSpec; moc_status mocd = do_moc(context, source, dest, &destSpec, dotmoc); #if 0 QCString derr = "Weird"; switch(mocd) { case moc_success: derr = "Success"; break; case moc_parse_error: derr = "Parser Error"; break; case moc_no_qobject:derr = "No QOBJECT"; break; case moc_not_time: derr = "Not Time"; break; case moc_no_source: derr = "No Source"; break; case moc_general_error: derr = "General Error"; break; } char dmsg[200]; sprintf(dmsg, "\"%s\" %s", source.data(), derr.data()); CWReportMessage(context, NULL, dmsg, NULL, messagetypeError, 0); #endif //handle project if(mocd == moc_no_qobject) { char msg[400]; sprintf(msg, "\"%s\" No relevant classes found. No output generated.", source.data()); CWReportMessage(context, NULL, msg, NULL, messagetypeWarning, 0); } else if ((mocd == moc_success || mocd == moc_not_time) && !dotmoc) { long whichFile; CWNewProjectEntryInfo ei; memset(&ei, '\0', sizeof(ei)); ei.groupPath = "QtGenerated"; err = CWAddProjectEntry(context, &destSpec, true, &ei, &whichFile); if (!CWSUCCESS(err)) { char msg[200]; sprintf(msg, "\"%s\" not added", dest.data()); CWReportMessage(context, NULL, msg, NULL, messagetypeWarning, 0); } if(mocd == moc_success) CWSetModDate(context, &destSpec, NULL, true); } return cwNoErr; }
bool ClassContainer::read_type(UmlTypeSpec & typespec, Class ** cl, const QValueList<FormalParameterList> & tmplts, QValueList<UmlTypeSpec> * actuals, QCString & str_actuals, QCString s, UmlClass ** first_actual_class, QCString & def, QCString & genericname) { str_actuals = 0; if (actuals != 0) actuals->clear(); if (s.isEmpty() && (s = Lex::read_word()).isEmpty()) { Lex::premature_eof(); return FALSE; } QCString path; // type without <..> QCString type; // real type form bool internal_template = FALSE; // true if type is ...<...>... int pfixdef_length = 0; // generic form including first class int first_actual_class_length = 0; // first class's name length genericname = s; for (;;) { internal_template = (path != type); path += s; type += s; s = Lex::read_word(); if (s != "<") break; type += s; str_actuals = s; // read <...> do { Lex::mark(); int level = 0; QCString firstword; // first element in current actual int pfixlen = 0; // type length including firstword for (;;) { s = Lex::read_word(TRUE); if (s == ",") { if (level == 0) break; } else if (s == ">") { if (level-- == 0) break; } else if (s == "]") level -= 1; else if ((s == "<") || (s == "[")) level += 1; else if (s.isEmpty()) { Lex::premature_eof(); return FALSE; } else if (firstword.isEmpty()) { firstword = s; pfixlen = type.length() + Lex::region().length(); } } QCString e = Lex::region(); type += e; str_actuals += e; if (actuals != 0) { UmlTypeSpec t; e.resize(e.length()); // remove , or > e = e.stripWhiteSpace(); if (! e.isEmpty()) compute_type(e, t, tmplts); if (actuals != 0) actuals->append(t); } else if ((first_actual_class != 0) && (*first_actual_class == 0) && !firstword.isEmpty()) { UmlTypeSpec t; compute_type(firstword, t, tmplts); if (t.type != 0) { *first_actual_class = t.type; first_actual_class_length = firstword.length(); pfixdef_length = pfixlen - first_actual_class_length; } } } while (s == ","); s = Lex::read_word(); if (s.isEmpty() || (*s != '.')) break; str_actuals = 0; if (actuals != 0) actuals->clear(); } if (! s.isEmpty()) Lex::unread_word(s); compute_type(path, typespec, tmplts, cl); if (typespec.type != 0) { if (internal_template) // typespec.type stay unchanged typespec.explicit_type = type; } else if ((first_actual_class != 0) && (*first_actual_class != 0)) { def = type.left(pfixdef_length) + "${type}" + type.mid(pfixdef_length+first_actual_class_length); } else // path may be not good typespec.explicit_type = type; return TRUE; }
extern "C" KDE_EXPORT int kdemain(int argc, char *argv[]) { bool restored = false; for(int arg = 1; arg < argc; arg++) { if(!qstrcmp(argv[arg], "-session")) { restored = true; break; } } if(!restored) { // we only do the multihead fork if we are not restored by the session // manager, since the session manager will register multiple kwins, // one for each screen... QCString multiHead = getenv("KDE_MULTIHEAD"); if(multiHead.lower() == "true") { Display *dpy = XOpenDisplay(NULL); if(!dpy) { fprintf(stderr, "%s: FATAL ERROR while trying to open display %s\n", argv[0], XDisplayName(NULL)); exit(1); } int number_of_screens = ScreenCount(dpy); KWinInternal::screen_number = DefaultScreen(dpy); int pos; // temporarily needed to reconstruct DISPLAY var if multi-head QCString display_name = XDisplayString(dpy); XCloseDisplay(dpy); dpy = 0; if((pos = display_name.findRev('.')) != -1) display_name.remove(pos, 10); // 10 is enough to be sure we removed ".s" QCString envir; if(number_of_screens != 1) { for(int i = 0; i < number_of_screens; i++) { // if execution doesn't pass by here, then kwin // acts exactly as previously if(i != KWinInternal::screen_number && fork() == 0) { KWinInternal::screen_number = i; // break here because we are the child process, we don't // want to fork() anymore break; } } // in the next statement, display_name shouldn't contain a screen // number. If it had it, it was removed at the "pos" check envir.sprintf("DISPLAY=%s.%d", display_name.data(), KWinInternal::screen_number); if(putenv(strdup(envir.data()))) { fprintf(stderr, "%s: WARNING: unable to set DISPLAY environment variable\n", argv[0]); perror("putenv()"); } } } } KGlobal::locale()->setMainCatalogue("kwin"); KAboutData aboutData("kwin", I18N_NOOP("KWin"), version, description, KAboutData::License_GPL, I18N_NOOP("(c) 1999-2005, The KDE Developers")); aboutData.addAuthor("Matthias Ettrich", 0, "*****@*****.**"); aboutData.addAuthor("Cristian Tibirna", 0, "*****@*****.**"); aboutData.addAuthor("Daniel M. Duley", 0, "*****@*****.**"); aboutData.addAuthor("Luboš Luňák", I18N_NOOP("Maintainer"), "*****@*****.**"); KCmdLineArgs::init(argc, argv, &aboutData); KCmdLineArgs::addCmdLineOptions(args); if(signal(SIGTERM, KWinInternal::sighandler) == SIG_IGN) signal(SIGTERM, SIG_IGN); if(signal(SIGINT, KWinInternal::sighandler) == SIG_IGN) signal(SIGINT, SIG_IGN); if(signal(SIGHUP, KWinInternal::sighandler) == SIG_IGN) signal(SIGHUP, SIG_IGN); KApplication::disableAutoDcopRegistration(); KWinInternal::Application a; KWinInternal::SessionManaged weAreIndeed; KWinInternal::SessionSaveDoneHelper helper; fcntl(ConnectionNumber(qt_xdisplay()), F_SETFD, 1); QCString appname; if(KWinInternal::screen_number == 0) appname = "kwin"; else appname.sprintf("kwin-screen-%d", KWinInternal::screen_number); DCOPClient *client = a.dcopClient(); client->registerAs(appname.data(), false); client->setDefaultObject("KWinInterface"); return a.exec(); }
void CollectionScanner::readDir( const QString& dir, QStringList& entries ) { static DCOPRef dcopRef( "amarok", "collection" ); // linux specific, but this fits the 90% rule if( dir.startsWith( "/dev" ) || dir.startsWith( "/sys" ) || dir.startsWith( "/proc" ) ) return; const QCString dir8Bit = QFile::encodeName( dir ); struct stat statBuf; stat( dir8Bit, &statBuf ); struct direntry de; memset(&de, 0, sizeof(struct direntry)); de.dev = statBuf.st_dev; de.ino = statBuf.st_ino; int f = -1; #if __GNUC__ < 4 for( unsigned int i = 0; i < m_processedDirs.size(); ++i ) if( memcmp( &m_processedDirs[i], &de, sizeof( direntry ) ) == 0 ) { f = i; break; } #else f = m_processedDirs.find( de ); #endif if ( ! S_ISDIR( statBuf.st_mode ) || f != -1 ) { debug() << "Skipping, already scanned: " << dir << endl; return; } AttributeMap attributes; attributes["path"] = dir; writeElement( "folder", attributes ); m_processedDirs.resize( m_processedDirs.size() + 1 ); m_processedDirs[m_processedDirs.size() - 1] = de; DIR *d = opendir( dir8Bit ); if( d == NULL ) { if( errno == EACCES ) warning() << "Skipping, no access permissions: " << dir << endl; return; } for( dirent *ent; ( ent = readdir( d ) ); ) { QCString entry (ent->d_name); QCString entryname (ent->d_name); if ( entry == "." || entry == ".." ) continue; entry.prepend( dir8Bit ); if ( stat( entry, &statBuf ) != 0 ) continue; // loop protection if ( ! ( S_ISDIR( statBuf.st_mode ) || S_ISREG( statBuf.st_mode ) ) ) continue; if ( S_ISDIR( statBuf.st_mode ) && m_recursively && entry.length() && entryname[0] != '.' ) { const QString file = QFile::decodeName( entry ); bool isInCollection = false; if( m_incremental ) dcopRef.call( "isDirInCollection", file ).get( isInCollection ); if( !m_incremental || !isInCollection ) // we MUST add a '/' after the dirname readDir( file + '/', entries ); } else if( S_ISREG( statBuf.st_mode ) ) entries.append( QFile::decodeName( entry ) ); } closedir( d ); }
QCString File::context() { QCString s; return QCString(name()) + " line " + s.setNum(line_number); }
void KFileItem::init( bool _determineMimeTypeOnDemand ) { m_access = QString::null; m_size = (KIO::filesize_t) -1; // metaInfo = KFileMetaInfo(); for ( int i = 0; i < NumFlags; i++ ) m_time[i] = (time_t) -1; // determine mode and/or permissions if unknown if ( m_fileMode == KFileItem::Unknown || m_permissions == KFileItem::Unknown ) { mode_t mode = 0; if ( m_url.isLocalFile() ) { /* directories may not have a slash at the end if * we want to stat() them; it requires that we * change into it .. which may not be allowed * stat("/is/unaccessible") -> rwx------ * stat("/is/unaccessible/") -> EPERM H.Z. * This is the reason for the -1 */ KDE_struct_stat buf; QCString path = QFile::encodeName(m_url.path( -1 )); if ( KDE_lstat( path.data(), &buf ) == 0 ) { mode = buf.st_mode; if ( S_ISLNK( mode ) ) { m_bLink = true; if ( KDE_stat( path.data(), &buf ) == 0 ) mode = buf.st_mode; else // link pointing to nowhere (see kio/file/file.cc) mode = (S_IFMT-1) | S_IRWXU | S_IRWXG | S_IRWXO; } // While we're at it, store the times m_time[ Modification ] = buf.st_mtime; m_time[ Access ] = buf.st_atime; if ( m_fileMode == KFileItem::Unknown ) m_fileMode = mode & S_IFMT; // extract file type if ( m_permissions == KFileItem::Unknown ) m_permissions = mode & 07777; // extract permissions } } } // determine the mimetype if (!m_pMimeType && !m_url.isEmpty()) { bool accurate = false; bool isLocalURL; KURL url = mostLocalURL(isLocalURL); m_pMimeType = KMimeType::findByURL( url, m_fileMode, isLocalURL, // use fast mode if not mimetype on demand _determineMimeTypeOnDemand, &accurate ); //kdDebug() << "finding mimetype for " << url.url() << " : " << m_pMimeType->name() << endl; // if we didn't use fast mode, or if we got a result, then this is the mimetype // otherwise, determineMimeType will be able to do better. m_bMimeTypeKnown = (!_determineMimeTypeOnDemand) || accurate; } }
unsigned PythonSettings::mult_column(const QCString & mult) { return (mult.isEmpty() || (mult == "1")) ? 0 : 1; }
void VhdlParser::handleCommentBlock(const char* doc1,bool brief) { int position=0; static bool isIn; QCString doc; doc.append(doc1); // fprintf(stderr,"\n %s",doc.data()); if (doc.isEmpty()) return; if (checkMultiComment(doc,yyLineNr)) { strComment.resize(0); return; } isIn=checkInlineCode(doc); bool isEndCode=doc.contains("\\endcode"); // empty comment --! if (isEndCode) { int end=inputString.find(doc.data(),iCodeLen); makeInlineDoc(end); strComment.resize(0); isIn=false; } if (isIn) { isIn=false; return; } VhdlDocGen::prepareComment(doc); bool needsEntry=FALSE; Protection protection=Public; int lineNr; if (iDocLine==-1) lineNr=yyLineNr; if (oldEntry==current) { //printf("\n find pending message < %s > at line: %d \n ",doc.data(),iDocLine); str_doc.doc=doc; str_doc.iDocLine=iDocLine; str_doc.brief=brief; str_doc.pending=TRUE; return; } oldEntry=current; if (brief) { current->briefLine = yyLineNr; } else { current->docLine = yyLineNr; } // printf("parseCommentBlock file<%s>\n [%s]\n at line [%d] \n ",yyFileName.data(),doc.data(),iDocLine); int j=doc.find("[plant]"); if (j>=0) { doc=doc.remove(j,7); current->stat=true; } while (parseCommentBlock( g_thisParser, current, doc, // text yyFileName, // file iDocLine, // line of block start brief, 0, FALSE, protection, position, needsEntry ) ) { //printf("parseCommentBlock position=%d [%s]\n",position,doc.data()+position); if (needsEntry) newEntry(); } if (needsEntry) { if (varr) { varr=FALSE; current->name=varName; current->section=Entry::VARIABLEDOC_SEC; varName=""; } newEntry(); } iDocLine=-1; strComment.resize(0); }
bool isConstraintFile(const QCString &fileName,const QCString &ext) { return fileName.right(ext.length())==ext; }
/*! This will create a contents file (index.hhc) and a index file (index.hhk) * and write the header of those files. * It also creates a project file (index.hhp) * \sa finalize() */ void HtmlHelp::initialize() { const char *str = Config_getString("CHM_INDEX_ENCODING"); if (!str) str = "CP1250"; // use safe and likely default m_fromUtf8 = portable_iconv_open(str,"UTF-8"); if (m_fromUtf8==(void *)(-1)) { err("unsupported character conversion for CHM_INDEX_ENCODING: '%s'->'UTF-8'\n", str); exit(1); } /* open the contents file */ QCString fName = Config_getString("HTML_OUTPUT") + "/index.hhc"; cf = new QFile(fName); if (!cf->open(IO_WriteOnly)) { err("Could not open file %s for writing\n",fName.data()); exit(1); } /* Write the header of the contents file */ cts.setDevice(cf); cts << "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n" "<HTML><HEAD></HEAD><BODY>\n" "<OBJECT type=\"text/site properties\">\n" "<param name=\"FrameName\" value=\"right\">\n" "</OBJECT>\n" "<UL>\n"; /* open the contents file */ fName = Config_getString("HTML_OUTPUT") + "/index.hhk"; kf = new QFile(fName); if (!kf->open(IO_WriteOnly)) { err("Could not open file %s for writing\n",fName.data()); exit(1); } /* Write the header of the contents file */ kts.setDevice(kf); kts << "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n" "<HTML><HEAD></HEAD><BODY>\n" "<OBJECT type=\"text/site properties\">\n" "<param name=\"FrameName\" value=\"right\">\n" "</OBJECT>\n" "<UL>\n"; /* language codes for Html help 0x405 Czech 0x406 Danish 0x413 Dutch 0xC09 English (Australia) 0x809 English (Britain) 0x1009 English (Canada) 0x1809 English (Ireland) 0x1409 English (New Zealand) 0x1C09 English (South Africa) 0x409 English (United States) 0x40B Finnish 0x40C French 0x407 German 0x408 Greece 0x40E Hungarian 0x410 Italian 0x814 Norwegian 0x415 Polish 0x816 Portuguese(Portugal) 0x416 Portuguese(Brazil) 0x419 Russian 0x80A Spanish(Mexico) 0xC0A Spanish(Modern Sort) 0x40A Spanish(Traditional Sort) 0x41D Swedish 0x41F Turkey 0x411 Japanese 0x412 Korean 0x804 Chinese (PRC) 0x404 Chinese (Taiwan) New LCIDs: 0x421 Indonesian 0x41A Croatian 0x418 Romanian 0x424 Slovenian 0x41B Slovak 0x422 Ukrainian 0x81A Serbian (Serbia, Latin) 0x403 Catalan 0x426 Latvian 0x427 Lithuanian 0x436 Afrikaans 0x42A Vietnamese 0x429 Persian (Iran) 0xC01 Arabic (Egypt) - I don't know which version of arabic is used inside translator_ar.h , so I have chosen Egypt at random */ s_languageDict.setAutoDelete(TRUE); s_languageDict.clear(); s_languageDict.insert("czech", new QCString("0x405 Czech")); s_languageDict.insert("danish", new QCString("0x406 Danish")); s_languageDict.insert("dutch", new QCString("0x413 Dutch")); s_languageDict.insert("finnish", new QCString("0x40B Finnish")); s_languageDict.insert("french", new QCString("0x40C French")); s_languageDict.insert("german", new QCString("0x407 German")); s_languageDict.insert("greek", new QCString("0x408 Greece")); s_languageDict.insert("hungarian", new QCString("0x40E Hungarian")); s_languageDict.insert("italian", new QCString("0x410 Italian")); s_languageDict.insert("norwegian", new QCString("0x814 Norwegian")); s_languageDict.insert("polish", new QCString("0x415 Polish")); s_languageDict.insert("portuguese", new QCString("0x816 Portuguese(Portugal)")); s_languageDict.insert("brazil", new QCString("0x416 Portuguese(Brazil)")); s_languageDict.insert("russian", new QCString("0x419 Russian")); s_languageDict.insert("spanish", new QCString("0x40A Spanish(Traditional Sort)")); s_languageDict.insert("swedish", new QCString("0x41D Swedish")); s_languageDict.insert("turkish", new QCString("0x41F Turkey")); s_languageDict.insert("japanese", new QCString("0x411 Japanese")); s_languageDict.insert("japanese-en", new QCString("0x411 Japanese")); s_languageDict.insert("korean", new QCString("0x412 Korean")); s_languageDict.insert("korean-en", new QCString("0x412 Korean")); s_languageDict.insert("chinese", new QCString("0x804 Chinese (PRC)")); s_languageDict.insert("chinese-traditional", new QCString("0x404 Chinese (Taiwan)")); // new LCIDs s_languageDict.insert("indonesian", new QCString("0x412 Indonesian")); s_languageDict.insert("croatian", new QCString("0x41A Croatian")); s_languageDict.insert("romanian", new QCString("0x418 Romanian")); s_languageDict.insert("slovene", new QCString("0x424 Slovenian")); s_languageDict.insert("slovak", new QCString("0x41B Slovak")); s_languageDict.insert("ukrainian", new QCString("0x422 Ukrainian")); s_languageDict.insert("serbian", new QCString("0x81A Serbian (Serbia, Latin)")); s_languageDict.insert("catalan", new QCString("0x403 Catalan")); s_languageDict.insert("lithuanian", new QCString("0x427 Lithuanian")); s_languageDict.insert("afrikaans", new QCString("0x436 Afrikaans")); s_languageDict.insert("vietnamese", new QCString("0x42A Vietnamese")); s_languageDict.insert("persian", new QCString("0x429 Persian (Iran)")); s_languageDict.insert("arabic", new QCString("0xC01 Arabic (Egypt)")); s_languageDict.insert("latvian", new QCString("0x426 Latvian")); }
bool KoApplication::start() { ResetStarting resetStarting; // reset m_starting to false when we're done Q_UNUSED( resetStarting ); // Find the *.desktop file corresponding to the kapp instance name KoDocumentEntry entry = KoDocumentEntry( KoDocument::readNativeService() ); if ( entry.isEmpty() ) { kdError( 30003 ) << instanceName() << "part.desktop not found." << endl; kdError( 30003 ) << "Run 'kde-config --path services' to see which directories were searched, assuming kde startup had the same environment as your current shell." << endl; kdError( 30003 ) << "Check your installation (did you install KOffice in a different prefix than KDE, without adding the prefix to /etc/kderc ?)" << endl; return false; } // Get the command line arguments which we have to parse KCmdLineArgs *args= KCmdLineArgs::parsedArgs(); int argsCount = args->count(); KCmdLineArgs *koargs = KCmdLineArgs::parsedArgs("koffice"); QCString dpiValues = koargs->getOption( "dpi" ); if ( !dpiValues.isEmpty() ) { int sep = dpiValues.find( QRegExp( "[x, ]" ) ); int dpiX; int dpiY = 0; bool ok = true; if ( sep != -1 ) { dpiY = dpiValues.mid( sep+1 ).toInt( &ok ); dpiValues.truncate( sep ); } if ( ok ) { dpiX = dpiValues.toInt( &ok ); if ( ok ) { if ( !dpiY ) dpiY = dpiX; KoGlobal::setDPI( dpiX, dpiY ); } } } // No argument -> create an empty document if ( !argsCount ) { KoDocument* doc = entry.createDoc( 0, "Document" ); if ( !doc ) return false; KoMainWindow *shell = new KoMainWindow( doc->instance() ); shell->show(); QObject::connect(doc, SIGNAL(sigProgress(int)), shell, SLOT(slotProgress(int))); // for initDoc to fill in the recent docs list // and for KoDocument::slotStarted doc->addShell( shell ); if ( doc->checkAutoSaveFile() ) { shell->setRootDocument( doc ); } else { doc->showStartUpWidget( shell ); } // FIXME This needs to be moved someplace else QObject::disconnect(doc, SIGNAL(sigProgress(int)), shell, SLOT(slotProgress(int))); } else { bool print = koargs->isSet("print"); bool doTemplate = koargs->isSet("template"); koargs->clear(); // Loop through arguments short int n=0; // number of documents open short int nPrinted = 0; for(int i=0; i < argsCount; i++ ) { // For now create an empty document KoDocument* doc = entry.createDoc( 0 ); if ( doc ) { // show a shell asap KoMainWindow *shell = new KoMainWindow( doc->instance() ); if (!print) shell->show(); // are we just trying to open a template? if ( doTemplate ) { QStringList paths; if ( args->url(i).isLocalFile() && QFile::exists(args->url(i).path()) ) { paths << QString(args->url(i).path()); kdDebug(30003) << "using full path..." << endl; } else { QString desktopName(args->arg(i)); QString appName = KGlobal::instance()->instanceName(); paths = KGlobal::dirs()->findAllResources("data", appName +"/templates/*/" + desktopName ); if ( paths.isEmpty()) { paths = KGlobal::dirs()->findAllResources("data", appName +"/templates/" + desktopName ); } if ( paths.isEmpty()) { KMessageBox::error(0L, i18n("No template found for: %1 ").arg(desktopName) ); delete shell; } else if ( paths.count() > 1 ) { KMessageBox::error(0L, i18n("Too many templates found for: %1").arg(desktopName) ); delete shell; } } if ( !paths.isEmpty() ) { KURL templateBase; templateBase.setPath(paths[0]); KDesktopFile templateInfo(paths[0]); QString templateName = templateInfo.readURL(); KURL templateURL; templateURL.setPath( templateBase.directory() + "/" + templateName ); if ( shell->openDocument(doc, templateURL )) { doc->resetURL(); doc->setEmpty(); doc->setTitleModified(); kdDebug(30003) << "Template loaded..." << endl; n++; } else { KMessageBox::error(0L, i18n("Template %1 failed to load.").arg(templateURL.prettyURL()) ); delete shell; } } // now try to load } else if ( shell->openDocument( doc, args->url(i) ) ) { if ( print ) { shell->print(false /*we want to get the dialog*/); // delete shell; done by ~KoDocument nPrinted++; } else { // Normal case, success n++; } } else { // .... if failed // delete doc; done by openDocument // delete shell; done by ~KoDocument } } } if ( print ) return nPrinted > 0; if (n == 0) // no doc, e.g. all URLs were malformed return false; } args->clear(); // not calling this before since the program will quit there. return true; }
bool FileDef::isIncluded(const QCString &name) const { if (name.isEmpty()) return FALSE; return includeDict!=0 && includeDict->find(name)!=0; }
/** * Connects "signal" of the client named "sender" with the "slot" of * "receiverObj" in the "conn" client. * * If "Volatile" is true the connection will be removed when either * "sender" or "conn" unregisters. * * If "Volatile" is false the connection will only be removed when * "conn" unregisters. */ bool DCOPSignals::connectSignal(const QCString &sender, const QCString &senderObj, const QCString &signal, DCOPConnection *conn, const QCString &receiverObj, const QCString &slot, bool Volatile) { // TODO: Check if signal and slot match QCString signalArgs, slotArgs; int i, j; i = signal.find('('); if(i < 0) return false; signalArgs = signal.mid(i + 1); j = signalArgs.find(')'); if(j < 0) return false; signalArgs.truncate(j); i = slot.find('('); if(i < 0) return false; slotArgs = slot.mid(i + 1); j = slotArgs.find(')'); if(j < 0) return false; slotArgs.truncate(j); if(signalArgs != slotArgs) { // Maybe the signal has more arguments than the slot... if(signalArgs.length() <= slotArgs.length()) return false; if((slotArgs.length() > 0) && (signalArgs[slotArgs.length()] != ',')) return false; if(signalArgs.left(slotArgs.length()) != slotArgs) return false; } DCOPConnection *senderConn = 0; if(Volatile) { senderConn = the_server->findApp(sender); if(!senderConn) return false; // Sender does not exist. } DCOPSignalConnection *current = new DCOPSignalConnection; current->sender = sender; current->senderObj = senderObj; current->senderConn = senderConn; current->signal = signal; current->recvConn = conn; current->recvObj = receiverObj; current->slot = slot; DCOPSignalConnectionList *list = connections.find(signal); if(!list) { list = new DCOPSignalConnectionList; connections.insert(signal, list); } list->append(current); conn->signalConnectionList()->append(current); if(senderConn && senderConn != conn) senderConn->signalConnectionList()->append(current); return true; }
bool KProcess::start(RunMode runmode, Communication comm) { if (runs) { kdDebug(175) << "Attempted to start an already running process" << endl; return false; } uint n = arguments.count(); if (n == 0) { kdDebug(175) << "Attempted to start a process without arguments" << endl; return false; } #ifdef Q_OS_UNIX char **arglist; QCString shellCmd; if (d->useShell) { if (d->shell.isEmpty()) { kdDebug(175) << "Invalid shell specified" << endl; return false; } for (uint i = 0; i < n; i++) { shellCmd += arguments[i]; shellCmd += " "; // CC: to separate the arguments } arglist = static_cast<char **>(malloc( 4 * sizeof(char *))); arglist[0] = d->shell.data(); arglist[1] = (char *) "-c"; arglist[2] = shellCmd.data(); arglist[3] = 0; } else { arglist = static_cast<char **>(malloc( (n + 1) * sizeof(char *))); for (uint i = 0; i < n; i++) arglist[i] = arguments[i].data(); arglist[n] = 0; } run_mode = runmode; if (!setupCommunication(comm)) { kdDebug(175) << "Could not setup Communication!" << endl; free(arglist); return false; } // We do this in the parent because if we do it in the child process // gdb gets confused when the application runs from gdb. #ifdef HAVE_INITGROUPS struct passwd *pw = geteuid() ? 0 : getpwuid(getuid()); #endif int fd[2]; if (pipe(fd)) fd[0] = fd[1] = -1; // Pipe failed.. continue // we don't use vfork() because // - it has unclear semantics and is not standardized // - we do way too much magic in the child pid_ = fork(); if (pid_ == 0) { // The child process close(fd[0]); // Closing of fd[1] indicates that the execvp() succeeded! fcntl(fd[1], F_SETFD, FD_CLOEXEC); if (!commSetupDoneC()) kdDebug(175) << "Could not finish comm setup in child!" << endl; // reset all signal handlers struct sigaction act; sigemptyset(&act.sa_mask); act.sa_handler = SIG_DFL; act.sa_flags = 0; for (int sig = 1; sig < NSIG; sig++) sigaction(sig, &act, 0L); if (d->priority) setpriority(PRIO_PROCESS, 0, d->priority); if (!runPrivileged()) { setgid(getgid()); #ifdef HAVE_INITGROUPS if (pw) initgroups(pw->pw_name, pw->pw_gid); #endif if (geteuid() != getuid()) setuid(getuid()); if (geteuid() != getuid()) _exit(1); } setupEnvironment(); if (runmode == DontCare || runmode == OwnGroup) setsid(); const char *executable = arglist[0]; if (!d->executable.isEmpty()) executable = d->executable.data(); execvp(executable, arglist); char resultByte = 1; write(fd[1], &resultByte, 1); _exit(-1); } else if (pid_ == -1) { // forking failed // commAbort(); pid_ = 0; free(arglist); return false; } // the parent continues here free(arglist); if (!commSetupDoneP()) kdDebug(175) << "Could not finish comm setup in parent!" << endl; // Check whether client could be started. close(fd[1]); for(;;) { char resultByte; int n = ::read(fd[0], &resultByte, 1); if (n == 1) { // exec() failed close(fd[0]); waitpid(pid_, 0, 0); pid_ = 0; commClose(); return false; } if (n == -1) { if (errno == EINTR) continue; // Ignore } break; // success } close(fd[0]); runs = true; switch (runmode) { case Block: for (;;) { commClose(); // drain only, unless obsolete reimplementation if (!runs) { // commClose detected data on the process exit notifification pipe KProcessController::theKProcessController->unscheduleCheck(); if (waitpid(pid_, &status, WNOHANG) != 0) // error finishes, too { commClose(); // this time for real (runs is false) KProcessController::theKProcessController->rescheduleCheck(); break; } runs = true; // for next commClose() iteration } else { // commClose is an obsolete reimplementation and waited until // all output channels were closed (or it was interrupted). // there is a chance that it never gets here ... waitpid(pid_, &status, 0); runs = false; break; } } // why do we do this? i think this signal should be emitted _only_ // after the process has successfully run _asynchronously_ --ossi emit processExited(this); break; default: // NotifyOnExit & OwnGroup input_data = 0; // Discard any data for stdin that might still be there break; } return true; #else //TODO return false; #endif }
void FTVHelp::generateTreeView() { QCString fileName; QFile f; static bool searchEngine = Config_getBool("SEARCHENGINE"); static bool serverBasedSearch = Config_getBool("SERVER_BASED_SEARCH"); generateTreeViewImages(); fileName=Config_getString("HTML_OUTPUT")+"/index"+Doxygen::htmlFileExtension; f.setName(fileName); if (!f.open(IO_WriteOnly)) { err("Cannot open file %s for writing!\n",fileName.data()); return; } else { FTextStream t(&f); //t << "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Frameset//EN\">\n"; t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">\n"; t << "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n"; t << "<meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n"; t << "<title>"; if (Config_getString("PROJECT_NAME").isEmpty()) { t << "Doxygen Documentation"; } else { t << Config_getString("PROJECT_NAME"); } t << "</title>\n</head>" << endl; t << "<frameset cols=\"" << Config_getInt("TREEVIEW_WIDTH") << ",*\">" << endl; t << " <frame src=\"tree" << Doxygen::htmlFileExtension << "\" name=\"treefrm\"/>" << endl; t << " <frame src=\"main" << Doxygen::htmlFileExtension << "\" name=\"basefrm\"/>" << endl; t << " <noframes>" << endl; t << " <body>" << endl; t << " <a href=\"main" << Doxygen::htmlFileExtension << "\">Frames are disabled. Click here to go to the main page.</a>" << endl; t << " </body>" << endl; t << " </noframes>" << endl; t << "</frameset>" << endl; t << "</html>" << endl; f.close(); } // Generate tree view fileName=Config_getString("HTML_OUTPUT")+"/tree"+Doxygen::htmlFileExtension; f.setName(fileName); if (!f.open(IO_WriteOnly)) { err("Cannot open file %s for writing!\n",fileName.data()); return; } else { FTextStream t(&f); //if (searchEngine) //{ // t << "<!-- This comment will put IE 6, 7 and 8 in quirks mode -->" << endl; //} t << "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"; t << "<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n"; t << " <head>\n"; t << " <meta http-equiv=\"Content-Type\" content=\"text/xhtml;charset=UTF-8\"/>\n"; t << " <meta http-equiv=\"Content-Style-Type\" content=\"text/css\" />\n"; t << " <meta http-equiv=\"Content-Language\" content=\"en\" />\n"; if (searchEngine) { t << " <link href=\"search/search.css\" rel=\"stylesheet\" type=\"text/css\"/>" << endl; t << " <script type=\"text/javaScript\" src=\"search/search.js\"></script>" << endl; } t << " <link rel=\"stylesheet\" href=\""; QCString cssname=Config_getString("HTML_STYLESHEET"); if (cssname.isEmpty()) { t << "doxygen.css"; } else { QFileInfo cssfi(cssname); if (!cssfi.exists()) { err("Error: user specified HTML style sheet file does not exist!\n"); } t << cssfi.fileName(); } t << "\"/>" << endl; t << " <title>TreeView</title>\n"; generateScript(t); t << " </head>\n"; t << "\n"; t << " <body class=\"ftvtree\""; if (searchEngine && !serverBasedSearch) { t << " onload='searchBox.OnSelectItem(0);'"; } t << ">\n"; if (searchEngine) { t << " <script type=\"text/javascript\"><!--\n"; t << " var searchBox = new SearchBox(\"searchBox\", \"search\", true, '" << theTranslator->trSearch() << "');\n"; t << " --></script>\n"; if (!serverBasedSearch) { t << " <div class=\"tabsearch\">\n"; t << " <div id=\"MSearchBox\" class=\"MSearchBoxInactive\">\n"; t << " <span class=\"left\">\n"; t << " <a id=\"MSearchClose\" href=\"javascript:searchBox.CloseResultsWindow()\">" << "<img id=\"MSearchCloseImg\" border=\"0\" src=\"search/close.png\" alt=\"\"/></a>\n"; t << " <input type=\"text\" id=\"MSearchField\" value=\"" << theTranslator->trSearch() << "\" accesskey=\"S\"\n"; t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n"; t << " onblur=\"searchBox.OnSearchFieldFocus(false)\" \n"; t << " onkeyup=\"searchBox.OnSearchFieldChange(event)\"/>\n"; t << " </span><span class=\"right\">\n"; t << " <img id=\"MSearchSelect\" src=\"search/mag_sel.png\"\n"; t << " onmouseover=\"return searchBox.OnSearchSelectShow()\"\n"; t << " onmouseout=\"return searchBox.OnSearchSelectHide()\"\n"; t << " alt=\"\"/>\n"; t << " </span>\n"; t << " </div>\n"; t << " </div>\n"; HtmlGenerator::writeSearchFooter(t,QCString()); } else { t << " <div class=\"tabsearch\">\n"; t << " <div id=\"MSearchBox\" class=\"MSearchBoxInactive\">\n"; t << " <span class=\"left\">\n"; t << " <form id=\"FSearchBox\" action=\"search.php\" method=\"get\" target=\"basefrm\">\n"; t << " <img id=\"MSearchSelect\" src=\"search/mag.png\" alt=\"\"/>\n"; t << " <input type=\"text\" id=\"MSearchField\" name=\"query\" value=\"" << theTranslator->trSearch() << "\" size=\"20\" accesskey=\"S\" \n"; t << " onfocus=\"searchBox.OnSearchFieldFocus(true)\" \n"; t << " onblur=\"searchBox.OnSearchFieldFocus(false)\"/>\n"; t << " </form>\n"; t << " </span><span class=\"right\"></span>\n"; t << " </div>\n"; t << " </div>\n"; } } t << " <div class=\"directory\">\n"; t << " <h3 class=\"swap\"><span>"; QCString &projName = Config_getString("PROJECT_NAME"); if (projName.isEmpty()) { t << "Root"; } else { t << projName; } t << "</span></h3>\n"; t << " <div style=\"display: block;\">\n"; generateTree(t,m_indentNodes[0],0); t << " </div>\n"; t << " </div>\n"; t << " </body>\n"; t << "</html>\n"; f.close(); } }
/*! Internal function that initializes the font system. \internal The font cache and font dict do not alloc the keys. The key is a QString which is shared between QFontPrivate and QXFontName. */ void QFont::initialize() { // create global font cache if ( ! QFontCache::instance ) (void) new QFontCache; #ifndef QT_NO_CODECS #ifndef QT_NO_BIG_CODECS static bool codecs_once = FALSE; if ( ! codecs_once ) { (void) new QFontJis0201Codec; (void) new QFontJis0208Codec; (void) new QFontKsc5601Codec; (void) new QFontGb2312Codec; (void) new QFontGbkCodec; (void) new QFontGb18030_0Codec; (void) new QFontBig5Codec; (void) new QFontBig5hkscsCodec; (void) new QFontLaoCodec; codecs_once = TRUE; } #endif // QT_NO_BIG_CODECS #endif // QT_NO_CODECS extern int qt_encoding_id_for_mib( int mib ); // from qfontdatabase_x11.cpp QTextCodec *codec = QTextCodec::codecForLocale(); // determine the default encoding id using the locale, otherwise // fallback to latin1 ( mib == 4 ) int mib = codec ? codec->mibEnum() : 4; // for asian locales, use the mib for the font codec instead of the locale codec switch (mib) { case 38: // eucKR mib = 36; break; case 2025: // GB2312 mib = 57; break; case 113: // GBK mib = -113; break; case 114: // GB18030 mib = -114; break; case 2026: // Big5 mib = -2026; break; case 2101: // Big5-HKSCS mib = -2101; break; case 16: // JIS7 mib = 15; break; case 17: // SJIS case 18: // eucJP mib = 63; break; } // get the default encoding id for the locale encoding... QFontPrivate::defaultEncodingID = qt_encoding_id_for_mib( mib ); // get some sample text based on the users locale. we use this to determine the // default script for the font system QCString oldlctime = setlocale(LC_TIME, 0); QCString lctime = setlocale(LC_TIME, ""); time_t ttmp = time(0); struct tm *tt = 0; char samp[64]; QString sample; if ( ttmp != -1 ) { #if defined(QT_THREAD_SUPPORT) && defined(_POSIX_THREAD_SAFE_FUNCTIONS) // use the reentrant versions of localtime() where available tm res; tt = localtime_r( &ttmp, &res ); #else tt = localtime( &ttmp ); #endif // QT_THREAD_SUPPORT && _POSIX_THREAD_SAFE_FUNCTIONS if ( tt != 0 && strftime( samp, 64, "%A%B", tt ) > 0 ) if ( codec ) sample = codec->toUnicode( samp ); } if ( ! sample.isNull() && ! sample.isEmpty() ) { QFont::Script cs = QFont::NoScript, tmp; const QChar *uc = sample.unicode(); QFontPrivate *priv = new QFontPrivate; for ( uint i = 0; i < sample.length(); i++ ) { SCRIPT_FOR_CHAR( tmp, *uc ); uc++; if ( tmp != cs && tmp != QFont::UnknownScript ) { cs = tmp; break; } } delete priv; if ( cs != QFont::UnknownScript ) QFontPrivate::defaultScript = cs; } setlocale( LC_TIME, oldlctime.data() ); }
void NamespaceDef::writeDocumentation(OutputList &ol) { static bool generateTreeView = Config_getBool("GENERATE_TREEVIEW"); //static bool outputJava = Config_getBool("OPTIMIZE_OUTPUT_JAVA"); //static bool fortranOpt = Config_getBool("OPTIMIZE_FOR_FORTRAN"); QCString pageTitle = title(); startFile(ol,getOutputFileBase(),name(),pageTitle,HLI_NamespaceVisible,!generateTreeView); if (!generateTreeView) { if (getOuterScope()!=Doxygen::globalScope) { writeNavigationPath(ol); } ol.endQuickIndices(); } startTitle(ol,getOutputFileBase(),this); ol.parseText(pageTitle); addGroupListToTitle(ol,this); addNamespaceAttributes(ol); endTitle(ol,getOutputFileBase(),displayName()); ol.startContents(); if (Doxygen::searchIndex) { Doxygen::searchIndex->setCurrentDoc(this,anchor(),FALSE); Doxygen::searchIndex->addWord(localName(),TRUE); } bool generateTagFile = !Config_getString("GENERATE_TAGFILE").isEmpty(); if (generateTagFile) { Doxygen::tagFile << " <compound kind=\"namespace\">" << endl; Doxygen::tagFile << " <name>" << convertToXML(name()) << "</name>" << endl; Doxygen::tagFile << " <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl; QCString idStr = id(); if (!idStr.isEmpty()) { Doxygen::tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>" << endl; } } Doxygen::indexList->addIndexItem(this,0); //---------------------------------------- start flexible part ------------------------------- SrcLangExt lang = getLanguage(); QListIterator<LayoutDocEntry> eli( LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace)); LayoutDocEntry *lde; for (eli.toFirst();(lde=eli.current());++eli) { switch (lde->kind()) { case LayoutDocEntry::BriefDesc: writeBriefDescription(ol); break; case LayoutDocEntry::MemberDeclStart: startMemberDeclarations(ol); break; case LayoutDocEntry::NamespaceClasses: { LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde; writeClassDeclarations(ol,ls->title(lang)); } break; case LayoutDocEntry::NamespaceNestedNamespaces: { LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde; writeNamespaceDeclarations(ol,ls->title(lang),false); } break; case LayoutDocEntry::NamespaceNestedConstantGroups: { LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde; writeNamespaceDeclarations(ol,ls->title(lang),true); } break; case LayoutDocEntry::MemberGroups: writeMemberGroups(ol); break; case LayoutDocEntry::MemberDecl: { LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde; writeMemberDeclarations(ol,lmd->type,lmd->title(lang)); } break; case LayoutDocEntry::MemberDeclEnd: endMemberDeclarations(ol); break; case LayoutDocEntry::DetailedDesc: { LayoutDocEntrySection *ls = (LayoutDocEntrySection*)lde; writeDetailedDescription(ol,ls->title(lang)); } break; case LayoutDocEntry::MemberDefStart: startMemberDocumentation(ol); break; case LayoutDocEntry::NamespaceInlineClasses: writeInlineClasses(ol); break; case LayoutDocEntry::MemberDef: { LayoutDocEntryMemberDef *lmd = (LayoutDocEntryMemberDef*)lde; writeMemberDocumentation(ol,lmd->type,lmd->title(lang)); } break; case LayoutDocEntry::MemberDefEnd: endMemberDocumentation(ol); break; case LayoutDocEntry::AuthorSection: writeAuthorSection(ol); break; case LayoutDocEntry::ClassIncludes: case LayoutDocEntry::ClassInheritanceGraph: case LayoutDocEntry::ClassNestedClasses: case LayoutDocEntry::ClassCollaborationGraph: case LayoutDocEntry::ClassAllMembersLink: case LayoutDocEntry::ClassUsedFiles: case LayoutDocEntry::ClassInlineClasses: case LayoutDocEntry::FileClasses: case LayoutDocEntry::FileNamespaces: case LayoutDocEntry::FileConstantGroups: case LayoutDocEntry::FileIncludes: case LayoutDocEntry::FileIncludeGraph: case LayoutDocEntry::FileIncludedByGraph: case LayoutDocEntry::FileSourceLink: case LayoutDocEntry::FileInlineClasses: case LayoutDocEntry::GroupClasses: case LayoutDocEntry::GroupInlineClasses: case LayoutDocEntry::GroupNamespaces: case LayoutDocEntry::GroupDirs: case LayoutDocEntry::GroupNestedGroups: case LayoutDocEntry::GroupFiles: case LayoutDocEntry::GroupGraph: case LayoutDocEntry::GroupPageDocs: case LayoutDocEntry::DirSubDirs: case LayoutDocEntry::DirFiles: case LayoutDocEntry::DirGraph: err("Internal inconsistency: member %d should not be part of " "LayoutDocManager::Namespace entry list\n",lde->kind()); break; } } //---------------------------------------- end flexible part ------------------------------- ol.endContents(); endFileWithNavPath(this,ol); if (generateTagFile) { writeDocAnchorsToTagFile(); Doxygen::tagFile << " </compound>" << endl; } if (Config_getBool("SEPARATE_MEMBER_PAGES")) { MemberList *allMemberList = getMemberList(MemberListType_allMembersList); if (allMemberList) allMemberList->sort(); writeMemberPages(ol); } }
void LatexDocVisitor::visit(DocVerbatim *s) { if (m_hide) return; QCString lang = m_langExt; if (!s->language().isEmpty()) // explicit language setting { lang = s->language(); } SrcLangExt langExt = getLanguageFromFileName(lang); switch(s->type()) { case DocVerbatim::Code: { m_t << "\n\\begin{DoxyCode}\n"; Doxygen::parserManager->getParser(lang) ->parseCode(m_ci,s->context(),s->text(),langExt, s->isExample(),s->exampleFile()); m_t << "\\end{DoxyCode}\n"; } break; case DocVerbatim::Verbatim: m_t << "\\begin{DoxyVerb}"; m_t << s->text(); m_t << "\\end{DoxyVerb}\n"; break; case DocVerbatim::HtmlOnly: case DocVerbatim::XmlOnly: case DocVerbatim::ManOnly: case DocVerbatim::RtfOnly: case DocVerbatim::DocbookOnly: /* nothing */ break; case DocVerbatim::LatexOnly: m_t << s->text(); break; case DocVerbatim::Dot: { static int dotindex = 1; QCString fileName(4096); fileName.sprintf("%s%d%s", (Config_getString("LATEX_OUTPUT")+"/inline_dotgraph_").data(), dotindex++, ".dot" ); QFile file(fileName); if (!file.open(IO_WriteOnly)) { err("Could not open file %s for writing\n",fileName.data()); } else { file.writeBlock( s->text(), s->text().length() ); file.close(); startDotFile(fileName,s->width(),s->height(),s->hasCaption()); visitCaption(this, s->children()); endDotFile(s->hasCaption()); if (Config_getBool("DOT_CLEANUP")) file.remove(); } } break; case DocVerbatim::Msc: { static int mscindex = 1; QCString baseName(4096); baseName.sprintf("%s%d", (Config_getString("LATEX_OUTPUT")+"/inline_mscgraph_").data(), mscindex++ ); QFile file(baseName+".msc"); if (!file.open(IO_WriteOnly)) { err("Could not open file %s.msc for writing\n",baseName.data()); } else { QCString text = "msc {"; text+=s->text(); text+="}"; file.writeBlock( text, text.length() ); file.close(); writeMscFile(baseName, s); if (Config_getBool("DOT_CLEANUP")) file.remove(); } } break; case DocVerbatim::PlantUML: { QCString latexOutput = Config_getString("LATEX_OUTPUT"); QCString baseName = writePlantUMLSource(latexOutput,s->exampleFile(),s->text()); writePlantUMLFile(baseName, s); } break; } }
void MigrateDialog::flush() { QCString output; switch (m_state){ case 0: output = "[icq/ICQ]\n"; clientsConf.writeBlock(output, output.length()); output = "Uin="; output += QString::number(m_uin); output += "\n"; if (!m_passwd.isEmpty()){ m_passwd = unquoteString(m_passwd); unsigned char xor_table[] = { 0xf3, 0x26, 0x81, 0xc4, 0x39, 0x86, 0xdb, 0x92, 0x71, 0xa3, 0xb9, 0xe6, 0x53, 0x7a, 0x95, 0x7c }; for (int i = 0; i < (int)m_passwd.length(); i++) m_passwd[i] = (char)(m_passwd[i] ^ xor_table[i]); QCString new_passwd; unsigned short temp = 0x4345; for (int i = 0; i < (int)m_passwd.length(); i++) { temp ^= m_passwd[i]; new_passwd += '$'; char buff[8]; sprintf(buff, "%x", temp); new_passwd += buff; } output += "Password=\""; output += new_passwd; output += "\"\n"; } clientsConf.writeBlock(output, output.length()); m_owner = "ICQ."; m_owner += QString::number(m_uin); break; case 1: if (!m_name.isEmpty()){ output = "[Group="; output += QString::number(++m_grpId); output += "]\n"; output += "Name=\""; output += m_name; output += "\"\n"; contactsConf.writeBlock(output, output.length()); } break; case 2: output = "[Contact="; output += QString::number(++m_contactId); output += "]\n"; if (m_uin >= 0x80000000) m_uin = 0; if (m_name.isEmpty()) m_name = QString::number(m_uin); if (!m_name.isEmpty()){ output += "Name=\""; output += m_name; output += "\"\n"; } if (m_uin){ output += "["; output += m_owner; output += "]\n"; output += "Uin="; output += QString::number(m_uin); output += "\n"; } contactsConf.writeBlock(output, output.length()); break; case 4: if (!m_message.isEmpty()){ QString msg = QString::fromLocal8Bit(m_message); if (!m_charset.isEmpty()){ QTextCodec *codec = QTextCodec::codecForName(m_charset); if (codec) msg = codec->toUnicode(m_message); } output = "[Message]\n"; output += "Text=\""; output += quoteChars(msg, "\"", false).local8Bit(); output += "\"\n"; if (m_direction.isEmpty()){ output += "Flags=2\n"; }else{ output += "Flags=3\n"; } output += "Time="; output += m_time; output += "\n"; hTo.writeBlock(output, output.length()); } break; } m_uin = 0; m_passwd = ""; m_name = ""; m_message = ""; m_time = ""; m_direction = ""; m_charset = ""; }
void UmlFlow::importIt(FileIn & in, Token & token, UmlItem *) { Flow & flow = *(All.append(Flow())); QCString s; flow.id = token.xmiId(); flow.name = token.valueOf("name"); flow.interrupt = (token.what() == "interruptingedge"); flow.source = token.valueOf("source"); flow.target = token.valueOf("target"); flow.selection = token.valueOf("selection"); flow.transformation = token.valueOf("transformation"); if (! token.closed()) { QCString k = token.what(); const char * kstr = k; while (in.read(), !token.close(kstr)) { s = token.what(); if (s == "selection") { flow.selection = token.valueOf("idref"); if (! token.closed()) in.finish(s); } else if (s == "transformation") { flow.transformation = token.valueOf("idref"); if (! token.closed()) in.finish(s); } else if (s == "weight") { flow.weight = token.valueOf("value"); if (! token.closed()) in.finish(s); } else if (s == "guard") { QCString b = token.valueOf("body"); if (! b.isNull()) { flow.guard = b; if (! token.closed()) in.finish(s); } else if (! token.closed()) { while (in.read(), !token.close("guard")) { b = token.what(); if (b == "body") { flow.guard = in.body("body"); in.finish("guard"); break; } else if (! token.closed()) in.finish(b); } } } else if (! token.closed()) in.finish(s); } } }
static bool matchExcludedSymbols(const char *name) { static QStrList exclSyms; if (exclSyms.count()==0) return FALSE; // nothing specified const char *pat = exclSyms.first(); QCString symName = name; while (pat) { QCString pattern = pat; bool forceStart=FALSE; bool forceEnd=FALSE; if (pattern.at(0)=='^') pattern=pattern.mid(1),forceStart=TRUE; if (pattern.at(pattern.length()-1)=='$') pattern=pattern.left(pattern.length()-1),forceEnd=TRUE; if (pattern.find('*')!=-1) // wildcard mode { QRegExp re(substitute(pattern,"*",".*"),TRUE); int i,pl; i = re.match(symName,0,&pl); //printf(" %d = re.match(%s) pattern=%s\n",i,symName.data(),pattern.data()); if (i!=-1) // wildcard match { int sl=symName.length(); // check if it is a whole word match if ((i==0 || pattern.at(0)=='*' || (!isId(symName.at(i-1)) && !forceStart)) && (i+pl==sl || pattern.at(i+pl)=='*' || (!isId(symName.at(i+pl)) && !forceEnd)) ) { //printf("--> name=%s pattern=%s match at %d\n",symName.data(),pattern.data(),i); return TRUE; } } } else if (!pattern.isEmpty()) // match words { int i = symName.find(pattern); if (i!=-1) // we have a match! { int pl=pattern.length(); int sl=symName.length(); // check if it is a whole word match if ((i==0 || (!isId(symName.at(i-1)) && !forceStart)) && (i+pl==sl || (!isId(symName.at(i+pl)) && !forceEnd)) ) { //printf("--> name=%s pattern=%s match at %d\n",symName.data(),pattern.data(),i); return TRUE; } } } pat = exclSyms.next(); } //printf("--> name=%s: no match\n",name); return FALSE; }
void RTFDocVisitor::visit(DocVerbatim *s) { if (m_hide) return; DBG_RTF("{\\comment RTFDocVisitor::visit(DocVerbatim)}\n"); QCString lang = m_langExt; if (!s->language().isEmpty()) // explicit language setting { lang = s->language(); } SrcLangExt langExt = getLanguageFromFileName(lang); switch(s->type()) { case DocVerbatim::Code: // fall though m_t << "{" << endl; m_t << "\\par" << endl; m_t << rtf_Style_Reset << getStyle("CodeExample"); Doxygen::parserManager->getParser(lang) ->parseCode(m_ci,s->context(),s->text(),langExt, s->isExample(),s->exampleFile()); //m_t << "\\par" << endl; m_t << "}" << endl; break; case DocVerbatim::Verbatim: m_t << "{" << endl; m_t << "\\par" << endl; m_t << rtf_Style_Reset << getStyle("CodeExample"); filter(s->text(),TRUE); //m_t << "\\par" << endl; m_t << "}" << endl; break; case DocVerbatim::RtfOnly: m_t << s->text(); break; case DocVerbatim::HtmlOnly: case DocVerbatim::LatexOnly: case DocVerbatim::XmlOnly: case DocVerbatim::ManOnly: case DocVerbatim::DocbookOnly: /* nothing */ break; case DocVerbatim::Dot: { static int dotindex = 1; QCString fileName(4096); fileName.sprintf("%s%d%s", (Config_getString(RTF_OUTPUT)+"/inline_dotgraph_").data(), dotindex++, ".dot" ); QFile file(fileName); if (!file.open(IO_WriteOnly)) { err("Could not open file %s for writing\n",fileName.data()); } file.writeBlock( s->text(), s->text().length() ); file.close(); writeDotFile(fileName, s->hasCaption()); visitCaption(this, s->children()); includePicturePostRTF(true, s->hasCaption()); if (Config_getBool(DOT_CLEANUP)) file.remove(); } break; case DocVerbatim::Msc: { static int mscindex = 1; QCString baseName(4096); baseName.sprintf("%s%d%s", (Config_getString(RTF_OUTPUT)+"/inline_mscgraph_").data(), mscindex++, ".msc" ); QFile file(baseName); if (!file.open(IO_WriteOnly)) { err("Could not open file %s for writing\n",baseName.data()); } QCString text = "msc {"; text+=s->text(); text+="}"; file.writeBlock( text, text.length() ); file.close(); writeMscFile(baseName, s->hasCaption()); visitCaption(this, s->children()); includePicturePostRTF(true, s->hasCaption()); if (Config_getBool(DOT_CLEANUP)) file.remove(); } break; case DocVerbatim::PlantUML: { static QCString rtfOutput = Config_getString(RTF_OUTPUT); QCString baseName = writePlantUMLSource(rtfOutput,s->exampleFile(),s->text()); writePlantUMLFile(baseName, s->hasCaption()); visitCaption(this, s->children()); includePicturePostRTF(true, s->hasCaption()); } break; } m_lastIsPara=FALSE; }
void ICQClient::chn_login() { m_connectionLost = false; if (m_cookie.size()){ flap(ICQ_CHNxNEW); socket()->writeBuffer() << 0x00000001L; socket()->writeBuffer().tlv(6, m_cookie.data(), (unsigned short)(m_cookie.size())); m_cookie.resize(0); sendPacket(true); return; } if (data.owner.Uin.toULong() && ! getUseMD5()){ QByteArray pswd = cryptPassword(); log(L_DEBUG, "Login %lu [%s]", data.owner.Uin.toULong(), /*pswd.c_str()*/""); char uin[20]; sprintf(uin, "%lu", data.owner.Uin.toULong()); flap(ICQ_CHNxNEW); socket()->writeBuffer() << 0x00000001L; socket()->writeBuffer().tlv(0x0001, uin); socket()->writeBuffer().tlv(0x0002, pswd.data(), pswd.size()); // Thanks to pidgin guys for those values socket()->writeBuffer().tlv(0x0003, "ICQBasic"); // ID String, currently ICQ 5.1 (21.08.2006) socket()->writeBuffer().tlv(0x0016, 0x010A); // ID Number socket()->writeBuffer().tlv(0x0017, 0x0014); // major socket()->writeBuffer().tlv(0x0018, 0x0034); // minor socket()->writeBuffer().tlv(0x0019, 0x0000); // lesser socket()->writeBuffer().tlv(0x001A, 0x0c18); // build number socket()->writeBuffer().tlv(0x0014, 0x0000043dL); // distribution number socket()->writeBuffer().tlv(0x000f, "en"); //Todo Send right language shortcut socket()->writeBuffer().tlv(0x000e, "us"); sendPacket(true); return; } if (!data.owner.Screen.str().isEmpty() || getUseMD5()){ log(L_DEBUG, "Requesting MD5 salt"); flap(ICQ_CHNxNEW); socket()->writeBuffer() << 0x00000001L; sendPacket(true); snac(ICQ_SNACxFOOD_LOGIN, ICQ_SNACxLOGIN_AUTHxREQUEST, false, false); if (data.owner.Uin.toULong()){ QString uin = QString::number(data.owner.Uin.toULong()); socket()->writeBuffer().tlv(0x0001, uin); }else{ socket()->writeBuffer().tlv(0x0001, data.owner.Screen.str()); } socket()->writeBuffer().tlv(0x004B); socket()->writeBuffer().tlv(0x005A); sendPacket(true); return; } if (m_bVerifying){ log(L_DEBUG, "Requesting verification picture"); flap(ICQ_CHNxNEW); socket()->writeBuffer() << 0x00000001L; sendPacket(true); snac(ICQ_SNACxFOOD_LOGIN, ICQ_SNACxLOGIN_REGISTERxREQ_IMG); sendPacket(true); return; } flap(ICQ_CHNxNEW); socket()->writeBuffer() << 0x00000001L; sendPacket(true); // first try the old registration scheme snac(ICQ_SNACxFOOD_LOGIN, ICQ_SNACxLOGIN_REGISTERxREQ); ICQBuffer msg; msg << 0x00000000L << 0x28000300L << 0x00000000L << 0x00000000L << 0x94680000L << 0x94680000L << 0x00000000L << 0x00000000L << 0x00000000L << 0x00000000L; QCString pswd = getContacts()->fromUnicode(NULL, getPassword()); unsigned short len = (unsigned short)(pswd.length() + 1); msg.pack(len); msg.pack(pswd.data(), len); msg << 0x94680000L << 0x00000602L; socket()->writeBuffer().tlv(0x0001, msg); sendPacket(true); }
void NamespaceDef::writeTagFile(FTextStream &tagFile) { tagFile << " <compound kind=\"namespace\">" << endl; tagFile << " <name>" << convertToXML(name()) << "</name>" << endl; tagFile << " <filename>" << convertToXML(getOutputFileBase()) << Doxygen::htmlFileExtension << "</filename>" << endl; QCString idStr = id(); if (!idStr.isEmpty()) { tagFile << " <clangid>" << convertToXML(idStr) << "</clangid>" << endl; } QListIterator<LayoutDocEntry> eli( LayoutDocManager::instance().docEntries(LayoutDocManager::Namespace)); LayoutDocEntry *lde; for (eli.toFirst();(lde=eli.current());++eli) { switch (lde->kind()) { case LayoutDocEntry::NamespaceNestedNamespaces: { if (namespaceSDict) { SDict<NamespaceDef>::Iterator ni(*namespaceSDict); NamespaceDef *nd; for (ni.toFirst();(nd=ni.current());++ni) { if (nd->isLinkableInProject()) { tagFile << " <namespace>" << convertToXML(nd->name()) << "</namespace>" << endl; } } } } break; case LayoutDocEntry::NamespaceClasses: { if (classSDict) { SDict<ClassDef>::Iterator ci(*classSDict); ClassDef *cd; for (ci.toFirst();(cd=ci.current());++ci) { if (cd->isLinkableInProject()) { tagFile << " <class kind=\"" << cd->compoundTypeString() << "\">" << convertToXML(cd->name()) << "</class>" << endl; } } } } break; case LayoutDocEntry::MemberDecl: { LayoutDocEntryMemberDecl *lmd = (LayoutDocEntryMemberDecl*)lde; MemberList * ml = getMemberList(lmd->type); if (ml) { ml->writeTagFile(tagFile); } } break; case LayoutDocEntry::MemberGroups: { if (memberGroupSDict) { MemberGroupSDict::Iterator mgli(*memberGroupSDict); MemberGroup *mg; for (;(mg=mgli.current());++mgli) { mg->writeTagFile(tagFile); } } } break; default: break; } } writeDocAnchorsToTagFile(tagFile); tagFile << " </compound>" << endl; }
void ICQClient::snac_login(unsigned short type, unsigned short) { unsigned long newUin; switch (type){ case ICQ_SNACxLOGIN_ERROR: if (data.owner.Uin.toULong()){ m_reconnect = NO_RECONNECT; socket()->error_state(I18N_NOOP("Login error"), AuthError); break; } // in the process of registering; // it seems that we need to request bot protection picture; // reconnecting to send the request. log(L_DEBUG, "Verification required, reconnecting"); m_bVerifying = true; socket()->close(); socket()->connect(getServer(), getPort(), this); break; case ICQ_SNACxLOGIN_REGISTER: if (data.owner.Uin.toULong()){ socket()->error_state(I18N_NOOP("Registered in no register state")); break; } socket()->readBuffer().incReadPos(0x2E); socket()->readBuffer().unpack(newUin); log(L_DEBUG, "Register %lu %08lX", newUin, newUin); setUin(newUin); setState(Connecting); socket()->connect(getServer(), getPort(), this); break; case ICQ_SNACxLOGIN_AUTHxKEYxRESPONSE: log(L_DEBUG, "Sending MD5 key"); if (!data.owner.Screen.str().isEmpty() || data.owner.Uin.toULong()){ QCString md5_key; socket()->readBuffer().unpackStr(md5_key); snac(ICQ_SNACxFOOD_LOGIN, ICQ_SNACxLOGIN_MD5xLOGIN, false, false); if (data.owner.Uin.toULong()){ char uin[20]; sprintf(uin, "%lu", data.owner.Uin.toULong()); socket()->writeBuffer().tlv(0x0001, uin); }else{ socket()->writeBuffer().tlv(0x0001, data.owner.Screen.str()); } QCString md = md5_key; md += getContacts()->fromUnicode(NULL, getPassword()); md += "AOL Instant Messenger (SM)"; md = md5(md); socket()->writeBuffer().tlv(0x0025, md.data(), md.size()); if (data.owner.Uin.toULong()){ socket()->writeBuffer().tlv(0x0003, "ICQBasic"); //ToDo: Should be updated anytime socket()->writeBuffer().tlv(0x0016, 0x010A); // ID Number socket()->writeBuffer().tlv(0x0017, 0x0014); // major socket()->writeBuffer().tlv(0x0018, 0x0034); // minor socket()->writeBuffer().tlv(0x0019, 0x0009); socket()->writeBuffer().tlv(0x001A, 0x0c18); socket()->writeBuffer().tlv(0x0014, 0x0000043dL); socket()->writeBuffer().tlv(0x000f, "en"); socket()->writeBuffer().tlv(0x000e, "us"); }else{ socket()->writeBuffer().tlv(0x0003, "AOL Instant Messenger, version 5.1.3036/WIN32"); //ToDo: Should be updated anytime socket()->writeBuffer().tlv(0x0016, (unsigned short)0x0109); socket()->writeBuffer().tlv(0x0017, (unsigned short)0x0005); socket()->writeBuffer().tlv(0x0018, (unsigned short)0x0001); socket()->writeBuffer().tlv(0x0019, (unsigned short)0x0000); socket()->writeBuffer().tlv(0x001A, (unsigned short)0x0BDC); socket()->writeBuffer().tlv(0x0014, 0x000000D2L); socket()->writeBuffer().tlv(0x000F, "en"); //Todo Send right language shortcut ;) same below socket()->writeBuffer().tlv(0x000E, "us"); socket()->writeBuffer().tlv(0x004A, "\x01"); } sendPacket(true); } break; case ICQ_SNACxLOGIN_LOGINxREPLY: chn_close(); break; case ICQ_SNACxLOGIN_REGISTERxSEND_IMG: { m_bVerifying = false; TlvList tlv(socket()->readBuffer()); // currently there are 2 TLVs in SNAC(17,0D): // type = 1: the value contains the mime type of the image (image/jpeg); ignored // type = 2: the value contains the image itself in the binary form Tlv* tlvImage = tlv(2); if (!tlvImage) break; log(L_DEBUG, "Image length: %d bytes", tlvImage->Size()); QByteArray buf = tlvImage->byteArray(); QPixmap pict; if (!pict.loadFromData(buf)) break; log(L_DEBUG, "Received verification image"); VerifyDlg verdlg(qApp->activeWindow(), pict); if (verdlg.exec() == QDialog::Accepted) // what to do if the user has cancelled the dialog? { QString verifyStr = verdlg.getVerifyString(); log(L_DEBUG, "User input: %s", verifyStr.latin1()); snac(ICQ_SNACxFOOD_LOGIN, ICQ_SNACxLOGIN_REGISTERxREQ); ICQBuffer msg; msg << 0x00000000L << 0x28000300L << 0x00000000L << 0x00000000L << 0x94680000L << 0x94680000L << 0x00000000L << 0x00000000L << 0x00000000L << 0x00000000L; QCString pswd = getContacts()->fromUnicode(NULL, getPassword()); unsigned short len = (unsigned short)(pswd.length() + 1); msg.pack(len); msg.pack(pswd.data(), len); msg << 0x94680000L << 0x00000602L; socket()->writeBuffer().tlv(0x0001, msg); socket()->writeBuffer().tlv(0x0009, verifyStr.latin1(), verifyStr.length()); sendPacket(true); } break; } default: log(L_WARN, "Unknown login foodgroup type %04X", type); } }
bool VCardFormatImpl::loadAddressee( Addressee& addressee, VCARD::VCard &v ) { QPtrList<ContentLine> contentLines = v.contentLineList(); ContentLine *cl; for( cl = contentLines.first(); cl; cl = contentLines.next() ) { QCString n = cl->name(); if ( n.left( 2 ) == "X-" ) { n = n.mid( 2 ); int posDash = n.find( "-" ); addressee.insertCustom( QString::fromUtf8( n.left( posDash ) ), QString::fromUtf8( n.mid( posDash + 1 ) ), QString::fromUtf8( cl->value()->asString() ) ); continue; } EntityType type = cl->entityType(); switch( type ) { case EntityUID: addressee.setUid( readTextValue( cl ) ); break; case EntityEmail: addressee.insertEmail( readTextValue( cl ) ); break; case EntityName: addressee.setName( readTextValue( cl ) ); break; case EntityFullName: addressee.setFormattedName( readTextValue( cl ) ); break; case EntityURL: addressee.setUrl( KURL( readTextValue( cl ) ) ); break; case EntityNickname: addressee.setNickName( readTextValue( cl ) ); break; case EntityLabel: // not yet supported by kabc break; case EntityMailer: addressee.setMailer( readTextValue( cl ) ); break; case EntityTitle: addressee.setTitle( readTextValue( cl ) ); break; case EntityRole: addressee.setRole( readTextValue( cl ) ); break; case EntityOrganisation: addressee.setOrganization( readTextValue( cl ) ); break; case EntityNote: addressee.setNote( readTextValue( cl ) ); break; case EntityProductID: addressee.setProductId( readTextValue( cl ) ); break; case EntitySortString: addressee.setSortString( readTextValue( cl ) ); break; case EntityN: readNValue( cl, addressee ); break; case EntityAddress: addressee.insertAddress( readAddressValue( cl ) ); break; case EntityTelephone: addressee.insertPhoneNumber( readTelephoneValue( cl ) ); break; case EntityCategories: addressee.setCategories( QStringList::split( ",", readTextValue( cl ) ) ); break; case EntityBirthday: addressee.setBirthday( readDateValue( cl ) ); break; case EntityRevision: addressee.setRevision( readDateTimeValue( cl ) ); break; case EntityGeo: addressee.setGeo( readGeoValue( cl ) ); break; case EntityTimeZone: addressee.setTimeZone( readUTCValue( cl ) ); break; case EntityVersion: break; case EntityClass: addressee.setSecrecy( readClassValue( cl ) ); break; case EntityKey: addressee.insertKey( readKeyValue( cl ) ); break; case EntityPhoto: addressee.setPhoto( readPictureValue( cl, EntityPhoto, addressee ) ); break; case EntityLogo: addressee.setLogo( readPictureValue( cl, EntityLogo, addressee ) ); break; case EntityAgent: addressee.setAgent( readAgentValue( cl ) ); break; case EntitySound: addressee.setSound( readSoundValue( cl, addressee ) ); break; default: kdDebug(5700) << "VCardFormat::load(): Unsupported entity: " << int( type ) << ": " << cl->asString() << endl; break; } } for( cl = contentLines.first(); cl; cl = contentLines.next() ) { EntityType type = cl->entityType(); if ( type == EntityLabel ) { int type = readAddressParam( cl ); Address address = addressee.address( type ); if ( address.isEmpty() ) address.setType( type ); address.setLabel( QString::fromUtf8( cl->value()->asString() ) ); addressee.insertAddress( address ); } } return true; }