//spawn go static bool HandleGameObjectAddCommand(ChatHandler* handler, char const* args) { if (!*args) return false; // number or [name] Shift-click form |color|Hgameobject_entry:go_id|h[name]|h|r char* id = handler->extractKeyFromLink((char*)args, "Hgameobject_entry"); if (!id) return false; uint32 objectId = atol(id); if (!objectId) return false; char* spawntimeSecs = strtok(NULL, " "); const GameObjectTemplate* objectInfo = sObjectMgr->GetGameObjectTemplate(objectId); if (!objectInfo) { handler->PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST, objectId); handler->SetSentErrorMessage(true); return false; } if (objectInfo->displayId && !sGameObjectDisplayInfoStore.LookupEntry(objectInfo->displayId)) { // report to DB errors log as in loading case TC_LOG_ERROR("sql.sql", "Gameobject (Entry %u GoType: %u) have invalid displayId (%u), not spawned.", objectId, objectInfo->type, objectInfo->displayId); handler->PSendSysMessage(LANG_GAMEOBJECT_HAVE_INVALID_DATA, objectId); handler->SetSentErrorMessage(true); return false; } Player* player = handler->GetSession()->GetPlayer(); float x = float(player->GetPositionX()); float y = float(player->GetPositionY()); float z = float(player->GetPositionZ()); float o = float(player->GetOrientation()); Map* map = player->GetMap(); GameObject* object = new GameObject; uint32 guidLow = sObjectMgr->GenerateLowGuid(HIGHGUID_GAMEOBJECT); if (!object->Create(guidLow, objectInfo->entry, map, 0, x, y, z, o, 0.0f, 0.0f, 0.0f, 0.0f, 0, GO_STATE_READY)) { delete object; return false; } for (auto phase : player->GetPhases()) object->SetInPhase(phase, false, true); if (spawntimeSecs) { uint32 value = atoi((char*)spawntimeSecs); object->SetRespawnTime(value); } // fill the gameobject data and save to the db object->SaveToDB(map->GetId(), (1 << map->GetSpawnMode()), player->GetPhaseMask()); // delete the old object and do a clean load from DB with a fresh new GameObject instance. // this is required to avoid weird behavior and memory leaks delete object; object = new GameObject(); // this will generate a new guid if the object is in an instance if (!object->LoadGameObjectFromDB(guidLow, map)) { delete object; return false; } /// @todo is it really necessary to add both the real and DB table guid here ? sObjectMgr->AddGameobjectToGrid(guidLow, sObjectMgr->GetGOData(guidLow)); handler->PSendSysMessage(LANG_GAMEOBJECT_ADD, objectId, objectInfo->name.c_str(), guidLow, x, y, z); return true; }
bool sbbs_t::qwktomsg(FILE *qwk_fp, char *hdrblk, char fromhub, uint subnum , uint touser) { char* body; char* tail; char* header; char str[256],col=0,lastch=0,*p,qwkbuf[QWK_BLOCK_LEN+1]; uint i,j,k,lzh=0,skip=0; long bodylen,taillen; bool header_cont=false; bool success=false; ulong block,blocks; smbmsg_t msg; struct tm tm; ushort xlat=XLAT_NONE; int storage=SMB_SELFPACK; long dupechk_hashes=SMB_HASH_SOURCE_ALL; memset(&msg,0,sizeof(smbmsg_t)); /* Initialize message header */ msg.hdr.version=smb_ver(); blocks=atol(hdrblk+116); if(blocks<2) { errormsg(WHERE,ERR_CHK,"QWK packet header blocks",blocks); return(false); } if(subnum!=INVALID_SUB && (hdrblk[0]=='*' || hdrblk[0]=='+' || cfg.sub[subnum]->misc&SUB_PONLY)) msg.hdr.attr|=MSG_PRIVATE; if(subnum!=INVALID_SUB && cfg.sub[subnum]->misc&SUB_AONLY) msg.hdr.attr|=MSG_ANONYMOUS; if(subnum==INVALID_SUB && cfg.sys_misc&SM_DELREADM) msg.hdr.attr|=MSG_KILLREAD; if((fromhub || useron.rest&FLAG('Q')) && (hdrblk[0]=='*' || hdrblk[0]=='-' || hdrblk[0]=='`')) msg.hdr.attr|=MSG_READ; if(subnum!=INVALID_SUB && !fromhub && cfg.sub[subnum]->mod_ar[0] && chk_ar(cfg.sub[subnum]->mod_ar,&useron)) msg.hdr.attr|=MSG_MODERATED; if(subnum!=INVALID_SUB && !fromhub && cfg.sub[subnum]->misc&SUB_SYSPERM && sub_op(subnum)) msg.hdr.attr|=MSG_PERMANENT; memset(&tm,0,sizeof(tm)); tm.tm_mon = ((hdrblk[8]&0xf)*10)+(hdrblk[9]&0xf); if(tm.tm_mon>0) tm.tm_mon--; /* zero based */ tm.tm_mday=((hdrblk[11]&0xf)*10)+(hdrblk[12]&0xf); tm.tm_year=((hdrblk[14]&0xf)*10)+(hdrblk[15]&0xf); if(tm.tm_year<Y2K_2DIGIT_WINDOW) tm.tm_year+=100; tm.tm_hour=((hdrblk[16]&0xf)*10)+(hdrblk[17]&0xf); tm.tm_min=((hdrblk[19]&0xf)*10)+(hdrblk[20]&0xf); tm.tm_sec=0; tm.tm_isdst=-1; /* Do not adjust for DST */ msg.hdr.when_written.time=mktime(&tm); if(!(useron.rest&FLAG('Q')) && !fromhub) msg.hdr.when_written.zone=sys_timezone(&cfg); msg.hdr.when_imported.time=time(NULL); msg.hdr.when_imported.zone=sys_timezone(&cfg); hdrblk[116]=0; // don't include number of blocks in "re: msg number" if(!(useron.rest&FLAG('Q')) && !fromhub) msg.hdr.thread_back=atol((char *)hdrblk+108); if(subnum==INVALID_SUB) { /* E-mail */ if(cfg.sys_misc&SM_FASTMAIL) storage=SMB_FASTALLOC; /* duplicate message-IDs must be allowed in mail database */ dupechk_hashes&=~(1<<SMB_HASH_SOURCE_MSG_ID); username(&cfg,touser,str); smb_hfield_str(&msg,RECIPIENT,str); sprintf(str,"%u",touser); smb_hfield_str(&msg,RECIPIENTEXT,str); } else { if(cfg.sub[subnum]->misc&SUB_HYPER) storage = SMB_HYPERALLOC; else if(cfg.sub[subnum]->misc&SUB_FAST) storage = SMB_FASTALLOC; if(cfg.sub[subnum]->misc&SUB_LZH) xlat=XLAT_LZH; sprintf(str,"%25.25s",(char *)hdrblk+21); /* To user */ truncsp(str); smb_hfield_str(&msg,RECIPIENT,str); if(cfg.sub[subnum]->misc&SUB_LZH) xlat=XLAT_LZH; } sprintf(str,"%25.25s",hdrblk+71); /* Subject */ truncsp(str); smb_hfield_str(&msg,SUBJECT,str); /********************************/ /* Convert the QWK message text */ /********************************/ if((header=(char *)calloc((blocks-1L)*QWK_BLOCK_LEN*2L,sizeof(char)))==NULL) { smb_freemsgmem(&msg); errormsg(WHERE,ERR_ALLOC,"QWK msg header",(blocks-1L)*QWK_BLOCK_LEN*2L); return(false); } bodylen=0; if((body=(char *)malloc((blocks-1L)*QWK_BLOCK_LEN*2L))==NULL) { free(header); smb_freemsgmem(&msg); errormsg(WHERE,ERR_ALLOC,"QWK msg body",(blocks-1L)*QWK_BLOCK_LEN*2L); return(false); } taillen=0; if((tail=(char *)malloc((blocks-1L)*QWK_BLOCK_LEN*2L))==NULL) { free(header); free(body); smb_freemsgmem(&msg); errormsg(WHERE,ERR_ALLOC,"QWK msg tail",(blocks-1L)*QWK_BLOCK_LEN*2L); return(false); } memset(qwkbuf,0,sizeof(qwkbuf)); for(block=1;block<blocks;block++) { if(!fread(qwkbuf,1,QWK_BLOCK_LEN,qwk_fp)) break; for(k=0;k<QWK_BLOCK_LEN;k++) { if(qwkbuf[k]==0) continue; if(bodylen==0 && (qwkbuf[k]=='@' || header_cont)) { if((p=strchr(qwkbuf+k, QWK_NEWLINE))!=NULL) *p=0; strcat(header, qwkbuf+k); strcat(header, "\n"); if(p==NULL) { header_cont=true; break; } k+=strlen(qwkbuf+k); header_cont=false; continue; } if(!taillen && qwkbuf[k]==' ' && col==3 && bodylen>=3 && body[bodylen-3]=='-' && body[bodylen-2]=='-' && body[bodylen-1]=='-') { bodylen-=3; strcpy(tail,"--- "); taillen=4; col++; continue; } if(qwkbuf[k]==QWK_NEWLINE) { /* expand QWK_NEWLINE to crlf */ if(!taillen && col==3 && bodylen>=3 && body[bodylen-3]=='-' && body[bodylen-2]=='-' && body[bodylen-1]=='-') { bodylen-=3; strcpy(tail,"---"); taillen=3; } col=0; if(taillen) { tail[taillen++]=CR; tail[taillen++]=LF; } else { body[bodylen++]=CR; body[bodylen++]=LF; } continue; } /* beep restrict */ if(!fromhub && qwkbuf[k]==BEL && useron.rest&FLAG('B')) continue; /* ANSI restriction */ if(!fromhub && (qwkbuf[k]==1 || qwkbuf[k]==ESC) && useron.rest&FLAG('A')) continue; if(qwkbuf[k]!=1 && lastch!=1) col++; if(lastch==CTRL_A && !validattr(qwkbuf[k])) { if(taillen) taillen--; else bodylen--; lastch=0; continue; } lastch=qwkbuf[k]; if(taillen) tail[taillen++]=qwkbuf[k]; else body[bodylen++]=qwkbuf[k]; } } while(bodylen && body[bodylen-1]==' ') bodylen--; /* remove trailing spaces */ if(bodylen>=2 && body[bodylen-2]==CR && body[bodylen-1]==LF) bodylen-=2; while(taillen && tail[taillen-1]<=' ') taillen--; /* remove trailing garbage */ skip=0; if(useron.rest&FLAG('Q') || fromhub) { /* QWK Net */ if(!strnicmp(header,"@VIA:",5)) { if(!fromhub) set_qwk_flag(QWK_VIA); p=strchr(header, '\n'); if(p) { *p=0; skip=strlen(header)+1; } truncsp(header); p=header+5; /* Skip "@VIA:" */ while(*p && *p<=' ') p++; /* Skip any spaces */ if(route_circ(p,cfg.sys_id)) { free(header); free(body); free(tail); smb_freemsgmem(&msg); bprintf("\r\nCircular message path: %s\r\n",p); sprintf(str,"Circular message path: %s from %s" ,p,fromhub ? cfg.qhub[fromhub-1]->id:useron.alias); errorlog(str); return(false); } sprintf(str,"%s/%s" ,fromhub ? cfg.qhub[fromhub-1]->id : useron.alias,p); strupr(str); update_qwkroute(str); } else { if(fromhub) strcpy(str,cfg.qhub[fromhub-1]->id); else strcpy(str,useron.alias); } strupr(str); j=NET_QWK; smb_hfield(&msg,SENDERNETTYPE,2,&j); smb_hfield_str(&msg,SENDERNETADDR,str); sprintf(str,"%25.25s",hdrblk+46); /* From user */ truncsp(str); } else { sprintf(str,"%u",useron.number); smb_hfield_str(&msg,SENDEREXT,str); if((uint)subnum!=INVALID_SUB && cfg.sub[subnum]->misc&SUB_NAME) strcpy(str,useron.name); else strcpy(str,useron.alias); } smb_hfield_str(&msg,SENDER,str); if(!strnicmp(header+skip,"@MSGID:",7)) { if(!fromhub) set_qwk_flag(QWK_MSGID); p=strchr(header+skip, '\n'); i=skip; if(p) { *p=0; skip+=strlen(header+i)+1; } p=header+i+7; /* Skip "@MSGID:" */ while(*p && *p<=' ') p++; /* Skip any spaces */ truncstr(p," "); /* Truncate at first space char */ smb_hfield_str(&msg,RFC822MSGID,p); } if(!strnicmp(header+skip,"@REPLY:",7)) { if(!fromhub) set_qwk_flag(QWK_MSGID); p=strchr(header+skip, '\n'); i=skip; if(p) { *p=0; skip+=strlen(header+i)+1; } p=header+i+7; /* Skip "@REPLY:" */ while(*p && *p<=' ') p++; /* Skip any spaces */ truncstr(p," "); /* Truncate at first space char */ smb_hfield_str(&msg,RFC822REPLYID,p); } if(!strnicmp(header+skip,"@TZ:",4)) { if(!fromhub) set_qwk_flag(QWK_TZ); p=strchr(header+skip, '\n'); i=skip; if(p) { *p=0; skip+=strlen(header+i)+1; } p=header+i+4; /* Skip "@TZ:" */ while(*p && *p<=' ') p++; /* Skip any spaces */ msg.hdr.when_written.zone=(short)ahtoul(p); } if(!strnicmp(header+skip,"@REPLYTO:",9)) { p=strchr(header+skip, '\n'); i=skip; if(p) { *p=0; skip+=strlen(header+i)+1; } p=header+i+9; /* Skip "@REPLYTO:" */ while(*p && *p<=' ') p++; /* Skip any spaces */ smb_hfield_str(&msg,REPLYTO,p); } free(header); /* smb_addmsg required ASCIIZ strings */ body[bodylen]=0; tail[taillen]=0; if(online==ON_REMOTE) bputs(text[WritingIndx]); if(smb.status.max_crcs==0) /* no CRC checking means no body text dupe checking */ dupechk_hashes&=~(1<<SMB_HASH_SOURCE_BODY); if((i=smb_addmsg(&smb,&msg,storage,dupechk_hashes,xlat,(uchar*)body,(uchar*)tail))==SMB_SUCCESS) success=true; else if(i==SMB_DUPE_MSG) { bprintf("\r\n!%s\r\n",smb.last_error); if(!fromhub) { if(subnum==INVALID_SUB) { sprintf(str,"%s duplicate e-mail attempt (%s)",useron.alias,smb.last_error); logline("E!",str); } else { sprintf(str,"%s duplicate message attempt in %s %s (%s)" ,useron.alias ,cfg.grp[cfg.sub[subnum]->grp]->sname ,cfg.sub[subnum]->lname ,smb.last_error); logline("P!",str); } } } else errormsg(WHERE,ERR_WRITE,smb.file,i,smb.last_error); smb_freemsgmem(&msg); free(body); free(tail); return(success); }
long int CmdMessenger::getAsLong() { char str[255]; this->copyString(str, 255); return atol(str); }
bool SearchInput::set ( TcpSocket *sock , HttpRequest *r , Query *q ) { // get coll rec long collLen; char *coll = r->getString ( "c" , &collLen ); //if (! coll){coll = g_conf.m_defaultColl; collLen = gbstrlen(coll); } if ( ! coll ) coll = g_conf.getDefaultColl(r->getHost(), r->getHostLen()); if ( ! coll ) { g_errno = ENOCOLLREC; return false; } collLen = gbstrlen(coll); CollectionRec *cr = g_collectiondb.getRec ( coll ); if ( ! cr ) { g_errno = ENOCOLLREC; g_msg = " (error: no such collection)"; return false; } // set all to 0 just to avoid any inconsistencies //long size = (char *)&m_END_TEST - (char *)&m_START; //memset ( this , 0x00 , size ); setToDefaults( cr , 0 ); // niceness m_cr = cr; m_coll2 = m_cr->m_coll; m_collLen2 = gbstrlen(m_coll2); // from ::reset() m_languageWeightFactor = 0.33; // Set IP for language detection. // (among other things) if ( sock ) m_queryIP = sock->m_ip; else m_queryIP = 0; m_hr = r; // keep ptr to the query class to use m_q = q; // set this here since its size can be variable m_sq = r->getString("sq",&m_sqLen); // negative docids m_noDocIds = r->getString("nodocids",&m_noDocIdsLen); // negative sites m_noSiteIds = r->getString("nositeids",&m_noSiteIdsLen); // Msg5e calls Msg40 with this set to true in the searchInput // so it can analyze the entire pages of each search result so it // can find the article start/end tag sequence indicators m_getTitleRec = r->getLong("gettrs",0); m_getSitePops = r->getLong("getsitepops",0 ); // does this collection ban this IP? /* long encapIp = 0; m if (! cr->hasSearchPermission ( sock, encapIp ) ) { g_errno = ENOPERM; g_msg = " (error: permission denied)"; return false; } */ // set all search parms in SearchInput to defaults for ( long i = 0 ; i < g_parms.m_numSearchParms ; i++ ) { Parm *m = g_parms.m_searchParms[i]; // sanity if ( m->m_soff < 0 ) { char *xx=NULL;*xx=0; } char *x = (char *)this + m->m_soff; // what is the def val ptr char *def = NULL; if ( m->m_off >= 0 && m->m_obj == OBJ_COLL ) def = ((char *)cr) + m->m_off; else if ( m->m_off >= 0 && m->m_obj == OBJ_CONF ) def = ((char *)&g_conf) + m->m_off; // set it based on type if ( m->m_type == TYPE_LONG ) { long v = 0; if ( def ) v = *(long *)def; else if ( m->m_def ) v = atol(m->m_def); *(long *)x = v; } else if ( m->m_type == TYPE_BOOL ) { long v = 0; if ( def ) v = *(char *)def; else if ( m->m_def ) v = atol(m->m_def); // sanity test! if ( v != 0 && v != 1 ) log("query: got non-bool default " "for bool parm %s",m->m_title); if ( v ) *(char *)x = 1; else *(char *)x = 0; } else if ( m->m_type == TYPE_CHAR ) { if ( def ) *(char *)x = *(char *)def; else if ( m->m_def ) *(char *)x = atol(m->m_def); } else if ( m->m_type == TYPE_FLOAT ) { float v = 0; if ( def ) v = *(float *)def; else if ( m->m_def ) v = atof(m->m_def); *(float *)x = (float)v; } else if ( m->m_type == TYPE_STRING || m->m_type == TYPE_STRINGBOX ) { //if ( m->m_cgi && strcmp ( m->m_cgi, "erpc" ) == 0 ) // log("hey1"); //if ( m->m_cgi && strcmp ( m->m_scgi, "q" ) == 0 ) // log("hey1"); char *v = NULL; if ( def ) v = (char *)def; else if ( m->m_def ) v = m->m_def; *(char **)x = v; // set the length if ( ! v ) *(long *)(x-4) = 0; else *(long *)(x-4) = gbstrlen(v); } } // this is just used to determine in PageResults.cpp if we should // show admin knobs next to each result... // default to off for now m_isAdmin = r->getLong("admin",0); //if ( m_isAdmin ) m_isAdmin = g_users.hasPermission ( r , PAGE_MASTER ); // local ip? if ( ! r->isLocal() ) m_isAdmin = 0; // default set does not take into account g_conf, // so we will take care of that here ourselves... m_adFeedEnabled = g_conf.m_adFeedEnabled; //m_excludeLinkText = g_conf.m_excludeLinkText; //m_excludeMetaText = g_conf.m_excludeMetaText; // we need to get some cgi values in order to correct the defaults // based on if we're doing an xml feed, have a site: query, etc. long xml = r->getLong ( "xml" , 0 ); // was "raw" long siteLen = 0; r->getString ("site",&siteLen); long sitesLen = 0; char *sites = r->getString ("sites",&sitesLen,NULL); // save it if there if ( sites && sitesLen > 0 && ( ! m_whiteListBuf.safeStrcpy(sites)|| ! m_whiteListBuf.nullTerm() ) ) return log("query: unable to strcpy whitelist"); // now override automatic defaults for special cases if ( xml > 0 ) { m_familyFilter = 0; // this is causing me a headache when on when i dont know it m_restrictIndexdbForQuery = false; // this is hackish if ( r->getLong("rt",0) ) m_restrictIndexdbForQuery=false; m_numTopicsToDisplay = 0; m_doQueryHighlighting = 0; m_spellCheck = 0; m_refs_numToGenerate = 0; m_refs_docsToScan = 0; } else if ( m_siteLen > 0 ) { m_restrictIndexdbForQuery = false; m_doSiteClustering = false; m_ipRestrictForTopics = false; } else if ( m_whiteListBuf.length() > 0 ) { m_ipRestrictForTopics = false; } m_doIpClustering = false; //m_sitesQueryLen = 0; // set the user ip, "uip" long uip = m_queryIP; char *uipStr = m_hr->getString ("uip" , NULL ); long tmpIp = 0; if ( uipStr ) tmpIp = atoip(uipStr); if ( tmpIp ) uip = tmpIp; // // // BEGIN MAIN PARM SETTING LOOP // // // loop through all possible cgi parms to set SearchInput for ( long i = 0 ; i < g_parms.m_numSearchParms ; i++ ) { Parm *m = g_parms.m_searchParms[i]; char *x = (char *)this + m->m_soff; // what is the parm's cgi name? char *cgi = m->m_scgi; if ( ! cgi ) cgi = m->m_cgi; // sanity check if ( ! m->m_sparm ) { log("query: Failed search input sanity check."); char *xx = NULL; *xx = 0; } // . break it down by type now // . get it from request and store it in SearchInput if ( m->m_type == TYPE_LONG ) { // default was set above long def = *(long *)x; // assume default long v = def; // but cgi parms override cookie v = r->getLong ( cgi , v ); // but if its a privledged parm and we're not an admin // then do not allow overrides, but m_priv of 3 means // to not display for clients, but to allow overrides if ( ! m_isAdmin && m->m_priv && m->m_priv!=3) v = def; // bounds checks if ( v < m->m_smin ) v = m->m_smin; if ( v > m->m_smax ) v = m->m_smax; if ( m->m_sminc >= 0 ) { long vmin = *(long *)((char *)cr+m->m_sminc); if ( v < vmin ) v = vmin; } if ( m->m_smaxc >= 0 ) { long vmax = *(long *)((char *)cr+m->m_smaxc); if ( v > vmax ) v = vmax; } // set it *(long *)x = v; // do not print start result num (m->m_sprop is 0 for // "s" now) //if ( cgi[0] == 's' && cgi[1] == '\0' ) continue; // should we propagate it? true by default //if ( ! m->m_sprop ) continue; // if it is the same as its default, and the default is // always from m_def and never from the CollectionRec, // then do not both storing it in here! what's the // point? if ( v == def && m->m_off < 0 ) continue; // if not default do not propagate if ( v == def ) continue; // . include for sure if explicitly provided // . vp will be NULL if "cgi" is not explicitly listed // as a cgi parm. otherwise, even if *vp == '\0', vp // is non-NULL. // . crap, it can be in the cookie now //char *vp = r->getValue(cgi, NULL, NULL); // if not given at all, do not propagate //if ( ! vp ) continue; // store in up if different from default, even if // same as default ("def") because default may be // changed by the admin since m->m_off >= 0 //if ( m->m_sprpg && up + gbstrlen(cgi) + 20 < upend ) // up += sprintf ( up , "%s=%li&", cgi , v ); //if ( m->m_sprpp && pp + gbstrlen(cgi) + 80 < ppend ) // pp += sprintf ( pp , "<input type=hidden " // "name=%s value=\"%li\">\n", // cgi , v ); } else if ( m->m_type == TYPE_FLOAT ) { // default was set above float def = *(float *)x; // get overriding from http request, if any float v; // but if its a privledged parm and we're not an admin // then do not allow overrides if ( ! m_isAdmin && m->m_priv && m->m_priv!=3) v = def; else v = r->getFloat( cgi , def ); // bounds checks if ( v < m->m_smin ) v = m->m_smin; if ( v > m->m_smax ) v = m->m_smax; if ( m->m_sminc >= 0 ) { float vmin = *(float *)((char *)cr+m->m_sminc); if ( v < vmin ) v = vmin; } if ( m->m_smaxc >= 0 ) { float vmax = *(float *)((char *)cr+m->m_smaxc); if ( v > vmax ) v = vmax; } // set it *(float *)x = v; // do not print start result num //if ( cgi[0] == 's' && cgi[1] == '\0' ) continue; // include for sure if explicitly provided char *vp = r->getValue(cgi, NULL, NULL); if ( ! vp ) continue; // unchanged from default? if ( v == def ) continue; // store in up different from default //if ((vp||v!= def) && up + gbstrlen(cgi)+20 < upend ) // up += sprintf ( up , "%s=%f&", cgi , v ); //if ((vp||v!= def) && pp + gbstrlen(cgi)+20 < ppend ) // pp += sprintf ( pp , "<input type=hidden " // "name=%s value=\"%f\">\n", // cgi , v ); } else if ( m->m_type == TYPE_BOOL ) { // default was set above long def = *(char *)x; if ( def != 0 ) def = 1; // normalize // assume default long v = def; // cgi parms override cookie v = r->getBool ( cgi , v ); // but if no perm, use default if ( ! m_isAdmin && m->m_priv && m->m_priv!=3) v = def; if ( v != 0 ) v = 1; // normalize *(char *)x = v; // don't propagate rcache //if ( ! strcmp(cgi,"rcache") ) continue; // should we propagate it? true by default //if ( ! m->m_sprop ) continue; // if it is the same as its default, and the default is // always from m_def and never from the CollectionRec, // then do not both storing it in here! what's the // point? if ( v == def && m->m_off < 0 ) continue; // if not default do not propagate if ( v == def ) continue; // . include for sure if explicitly provided // . vp will be NULL if "cgi" is not explicitly listed // as a cgi parm. otherwise, even if *vp == '\0', vp // is non-NULL. // . crap, it can be in the cookie now! //char *vp = r->getValue(cgi, NULL, NULL); // if not given at all, do not propagate //if ( ! vp ) continue; // store in up if different from default, even if // same as default ("def") because default may be // changed by the admin since m->m_off >= 0 //if ( m->m_sprpg && up + gbstrlen(cgi) + 10 < upend ) // up += sprintf ( up , "%s=%li&", cgi , v ); //if ( m->m_sprpp && pp + gbstrlen(cgi) + 80 < ppend ) // pp += sprintf ( pp , "<input type=hidden " // "name=%s value=\"%li\">\n", // cgi , v ); } else if ( m->m_type == TYPE_CHAR ) { // default was set above char def = *(char *)x; *(char *)x = r->getLong ( cgi, def ); // use this long v = *(char *)x; // store in up if different from default, even if // same as default ("def") because default may be // changed by the admin since m->m_off >= 0. nah, // let's try to reduce cgi parm pollution... if ( v == def ) continue; //if ( m->m_sprpg && up + gbstrlen(cgi) + 10 < upend ) // up += sprintf ( up , "%s=%li&", cgi , v ); //if ( m->m_sprpp && pp + gbstrlen(cgi) + 80 < ppend ) // pp += sprintf ( pp , "<input type=hidden " // "name=%s value=\"%li\">\n", // cgi , v ); } else if ( m->m_type == TYPE_STRING || m->m_type == TYPE_STRINGBOX ) { //if ( m->m_cgi && strcmp ( m->m_cgi, "qlang" ) == 0 ) // log("hey2"); char *def = *(char **)x; // get overriding from http request, if any long len = 0; char *v = NULL; // . cgi parms override cookie // . is this url encoded? v = r->getString ( cgi , &len , v ); // if not specified explicitly, default it and continue if ( ! v ) { // sanity if ( ! def ) def = ""; *(char **)x = def; // length preceeds char ptr in SearchInput *(long *)(x - 4) = gbstrlen(def); continue; } // if something was specified, override, it might // be length zero, too *(char **)x = v; // length preceeds char ptr in SearchInput *(long *)(x - 4) = len; // do not store if query, that needs to be last so // related topics can append to it //if ( cgi[0] == 'q' && cgi[1] == '\0' ) continue; // should we propagate it? true by default //if ( ! m->m_sprop ) continue; // if not given at all, do not propagate //if ( ! vp ) continue; // if it is the same as its default, and the default is // always from m_def and never from the CollectionRec, // then do not both storing it in here! what's the // point? //if ( v && v == def && !strcmp(def,v) && m->m_off < 0) // continue; // Need to set qcs based on page encoding... // not propagated if (!strncmp(cgi, "qcs", 3)) continue; // do not propagate defaults if ( v == def ) continue; // store in up if different from default, even if // same as default ("def") because default may be // changed by the admin since m->m_off >= 0 //if( m->m_sprpg && up+gbstrlen(cgi)+len+6 < upend ) { // up += sprintf ( up , "%s=", cgi ); // up += urlEncode ( up , upend-up-2 , v , len ); // *up++ = '&'; //} // propogate hidden inputs //if ( m->m_sprpp && up+gbstrlen(cgi)+len+80 < upend ) // pp += sprintf ( pp , "<input type=hidden " // "name=%s value=\"%s\">\n", // cgi , v ); } } // now add the special "qh" parm whose default value changes // depending on if we are widget related or not long qhDefault = 1; m_doQueryHighlighting = r->getLong("qh",qhDefault); // // TODO: use Parms.cpp defaults // TopicGroup *tg = &m_topicGroups[0]; // // // gigabits // // tg->m_numTopics = 50; tg->m_maxTopics = 50; tg->m_docsToScanForTopics = m_docsToScanForTopics; tg->m_minTopicScore = 0; tg->m_maxWordsPerTopic = 6; tg->m_meta[0] = '\0'; tg->m_delimeter = '\0'; tg->m_useIdfForTopics = false; tg->m_dedup = true; // need to be on at least 2 pages! tg->m_minDocCount = 2; tg->m_ipRestrict = true; tg->m_dedupSamplePercent = 80; tg->m_topicRemoveOverlaps = true; tg->m_topicSampleSize = 4096; // max sequential punct chars allowedin a topic tg->m_topicMaxPunctLen = 1; m_numTopicGroups = 1; // use "&dg=1" to debug gigabits m_debugGigabits = r->getLong("dg",0); // . omit scoring info from the xml feed for now // . we have to roll this out to gk144 net i think if ( xml > 0 ) m_getDocIdScoringInfo = 0; // turn off by default! if ( ! r->getLong("gigabits",0) ) { m_numTopicGroups = 0; } ////////////////////////////////////// // // transform input into classes // ////////////////////////////////////// // USER_ADMIN, ... m_username = g_users.getUsername(r); // if collection is NULL default to one in g_conf if ( ! m_coll2 || ! m_coll2[0] ) { //m_coll = g_conf.m_defaultColl; m_coll2 = g_conf.getDefaultColl(r->getHost(), r->getHostLen()); m_collLen2 = gbstrlen(coll); } // reset this m_gblang = 0; // use gblang then! long gglen; char *gg = r->getString ( "clang" , &gglen , NULL ); if ( gg && gglen > 1 ) m_gblang = getLanguageFromAbbr(gg); // allow for "qlang" if still don't have it //long gglen2; //char *gg2 = r->getString ( "qlang" , &gglen2 , NULL ); //if ( m_gblang == 0 && gg2 && gglen2 > 1 ) // m_gblang = getLanguageFromAbbr(gg2); // fix query by removing lang:xx from ask.com queries //char *end = m_query + m_queryLen -8; //if ( m_queryLen > 8 && m_query && end > m_query && // strncmp(end," lang:",6)==0 ) { // char *asklang = m_query+m_queryLen - 2; // m_gblang = getLanguageFromAbbr(asklang); // m_queryLen -= 8; // m_query[m_queryLen] = 0; // //} // . returns false and sets g_errno on error // . sets m_qbuf1 and m_qbuf2 if ( ! setQueryBuffers (r) ) return false; /* --- Virtual host language detection --- */ if(r->getHost()) { bool langset = getLanguageFromAbbr(m_defaultSortLanguage); char *cp; if(!langset && (cp = strrchr(r->getHost(), '.'))) { uint8_t lang = getLanguageFromUserAgent(++cp); if(lang) { // char langbuf[128]; // sprintf(langbuf, "qlang=%s\0", getLanguageAbbr(lang)); //m_defaultSortLanguage = getLanguageAbbr(lang); char *tmp = getLanguageAbbr(lang); strncpy(m_defaultSortLanguage, tmp, 6); // log(LOG_INFO, // getLanguageString(lang), r->getHost(), this); } } } /* --- End Virtual host language detection --- */ char *qs1 = m_defaultSortLanguage; // this overrides though //long qlen2; //char *qs2 = r->getString ("qlang",&qlen2,NULL); //if ( qs2 ) qs1 = qs2; m_queryLang = getLanguageFromAbbr ( qs1 ); if ( qs1 && qs1[0] && ! m_queryLang ) log("query: qlang of \"%s\" is NOT SUPPORTED",qs1); // . the query to use for highlighting... can be overriden with "hq" // . we need the language id for doing synonyms if ( m_highlightQuery && m_highlightQuery[0] ) m_hqq.set2 ( m_highlightQuery , m_queryLang , true ); else if ( m_query && m_query[0] ) m_hqq.set2 ( m_query , m_queryLang , true ); // log it here log("query: got query %s",m_sbuf1.getBufStart()); // . now set from m_qbuf1, the advanced/composite query buffer // . returns false and sets g_errno on error (ETOOMANYOPERANDS) if ( ! m_q->set2 ( m_sbuf1.getBufStart(), m_queryLang , m_queryExpansion ) ) { g_msg = " (error: query has too many operands)"; return false; } if ( m_q->m_truncated && m_q->m_isBoolean ) { g_errno = ETOOMANYOPERANDS; g_msg = " (error: query has too many operands)"; return false; } // do not allow querier to use the links: query operator unless they // are admin or the search controls explicitly allow links: //if ( m_q->m_hasLinksOperator && ! m_isAdmin && // !cr->m_allowLinksSearch ) { // g_errno = ENOPERM; // g_msg = " (error: permission denied)"; // return false; //} // miscellaneous m_showBanned = false; //if ( m_isAdmin ) m_showBanned = true; // admin can say &sb=0 explicitly to not show banned results if ( m_isAdmin ) m_showBanned = r->getLong("sb",m_showBanned); if ( m_q->m_hasUrlField ) m_ipRestrictForTopics = false; if ( m_q->m_hasIpField ) { m_ipRestrictForTopics = false; //if( m_isAdmin ) m_showBanned = true; } if ( m_q->m_hasPositiveSiteField ) { m_ipRestrictForTopics = false; m_doSiteClustering = false; } if ( m_q->m_hasQuotaField ) { m_doSiteClustering = false; m_doDupContentRemoval = false; } m_familyFilter = r->getLong("ff",0); long codeLen; char *code = r->getString ("code",&codeLen,NULL); // set m_endUser if ( ! codeLen || ! code || strcmp(code,"gbfront")==0 ) m_endUser = true; else m_endUser = false; if(codeLen && !m_endUser) { m_maxResults = cr->m_maxSearchResultsForClients; } else { m_maxResults = cr->m_maxSearchResults; } // don't let admin bewilder himself if ( m_maxResults < 1 ) m_maxResults = 500; // we can't get this kind of constraint from generic Parms routines if ( m_firstResultNum + m_docsWanted > m_maxResults ) m_firstResultNum = m_maxResults - m_docsWanted; if(m_firstResultNum < 0) m_firstResultNum = 0; // if useCache is -1 then pick a default value if ( m_useCache == -1 ) { // assume yes as default m_useCache = 1; // . if query has url: or site: term do NOT use cache by def. // . however, if spider is off then use the cache by default if ( g_conf.m_spideringEnabled ) { if ( m_q->m_hasPositiveSiteField ) m_useCache = 0; else if ( m_q->m_hasIpField ) m_useCache = 0; else if ( m_q->m_hasUrlField ) m_useCache = 0; else if ( m_siteLen > 0 ) m_useCache = 0; else if ( m_whiteListBuf.length() ) m_useCache = 0; else if ( m_urlLen > 0 ) m_useCache = 0; } } // never use cache if doing a rerank (msg3b) //if ( m_rerankRuleset >= 0 ) m_useCache = 0; bool readFromCache = false; if ( m_useCache == 1 ) readFromCache = true; if ( m_rcache == 0 ) readFromCache = false; if ( m_useCache == 0 ) readFromCache = false; // if useCache is false, don't write to cache if it was not specified if ( m_wcache == -1 ) { if ( m_useCache == 0 ) m_wcache = 0; else m_wcache = 1; } // save it m_rcache = readFromCache; /* m_language = 0; // convert m_languageCode to a number for m_language if ( m_languageCode ) { m_language = (unsigned char)atoi(m_languageCode); if ( m_language == 0 ) m_language = getLanguageFromAbbr(m_languageCode); } */ // a hack for buzz for backwards compatibility //if ( strstr ( m_q->m_orig,"gbkeyword:r36p1" ) ) // m_ruleset = 36; // // . turn this off for now // . it is used in setClusterLevels() to use clusterdb to filter our // search results via Msg39, so it is not the most efficient. // . plus i am deleting most foreign language pages from the index // so we can just focus on english and that will give us more english // pages that we could normally get. we don't have resources to // de-spam the other languages, etc. // . turn it back on, i took out the setClusterLevels() use of that // because we got the langid in the posdb keys now // //m_language = 0; // convert m_defaultSortCountry to a number for m_countryHint m_countryHint = g_countryCode.getIndexOfAbbr(m_defaultSortCountry); return true; }
/* subscr_addr_add_url -- add address(es) for one url to subscription */ static void subscr_addr_add_url(struct subscription *s, const char *url, size_t url_len) { int alloc_len; char *scratch_mem = NULL; char *mem; char *host; char *delim; char *path; int port = 80; /* port to send to (default is port 80) */ struct addrinfo hints; struct addrinfo *result = NULL; struct addrinfo *rp; int rerr; size_t host_len, path_len; /* url MUST begin with http: */ if (url_len < 7 || os_strncasecmp(url, "http://", 7)) goto fail; url += 7; url_len -= 7; /* Make a copy of the string to allow modification during parsing */ scratch_mem = dup_binstr(url, url_len); if (scratch_mem == NULL) goto fail; wpa_printf(MSG_DEBUG, "WPS UPnP: Adding URL '%s'", scratch_mem); host = scratch_mem; path = os_strchr(host, '/'); if (path) *path++ = '\0'; /* null terminate host */ /* Process and remove optional port component */ delim = os_strchr(host, ':'); if (delim) { *delim = '\0'; /* null terminate host name for now */ if (isdigit(delim[1])) port = atol(delim + 1); } /* * getaddrinfo does the right thing with dotted decimal notations, or * will resolve domain names. Resolving domain names will unfortunately * hang the entire program until it is resolved or it times out * internal to getaddrinfo; fortunately we think that the use of actual * domain names (vs. dotted decimal notations) should be uncommon. */ os_memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_family = AF_INET; /* IPv4 */ hints.ai_socktype = SOCK_STREAM; #if NO_DOMAIN_NAME_RESOLUTION /* Suppress domain name resolutions that would halt * the program for periods of time */ hints.ai_flags = AI_NUMERICHOST; #else /* Allow domain name resolution. */ hints.ai_flags = 0; #endif hints.ai_protocol = 0; /* Any protocol? */ rerr = getaddrinfo(host, NULL /* fill in port ourselves */, &hints, &result); if (rerr) { wpa_printf(MSG_INFO, "WPS UPnP: Resolve error %d (%s) on: %s", rerr, gai_strerror(rerr), host); goto fail; } if (delim) *delim = ':'; /* Restore port */ host_len = os_strlen(host); path_len = path ? os_strlen(path) : 0; alloc_len = host_len + 1 + 1 + path_len + 1; for (rp = result; rp; rp = rp->ai_next) { struct subscr_addr *a; /* Limit no. of address to avoid denial of service attack */ if (dl_list_len(&s->addr_list) >= MAX_ADDR_PER_SUBSCRIPTION) { wpa_printf(MSG_INFO, "WPS UPnP: subscr_addr_add_url: " "Ignoring excessive addresses"); break; } a = os_zalloc(sizeof(*a) + alloc_len); if (a == NULL) break; mem = (char *) (a + 1); a->domain_and_port = mem; os_memcpy(mem, host, host_len); mem += host_len + 1; a->path = mem; if (path == NULL || path[0] != '/') *mem++ = '/'; if (path) os_memcpy(mem, path, path_len); os_memcpy(&a->saddr, rp->ai_addr, sizeof(a->saddr)); a->saddr.sin_port = htons(port); dl_list_add(&s->addr_list, &a->list); } fail: if (result) freeaddrinfo(result); os_free(scratch_mem); }
/* * Aux function for "do_cmd_wiz_change()" */ static void do_cmd_wiz_change_aux(void) { int i; int tmp_int; long tmp_long; char tmp_val[160]; char ppp[80]; /* Query the stats */ for (i = 0; i < A_MAX; i++) { /* Prompt */ strnfmt(ppp, sizeof(ppp), "%s (3-118): ", stat_names[i]); /* Default */ strnfmt(tmp_val, sizeof(tmp_val), "%d", p_ptr->stat_max[i]); /* Query */ if (!get_string(ppp, tmp_val, 4)) return; /* Extract */ tmp_int = atoi(tmp_val); /* Verify */ if (tmp_int > 18+100) tmp_int = 18+100; else if (tmp_int < 3) tmp_int = 3; /* Save it */ p_ptr->stat_cur[i] = p_ptr->stat_max[i] = tmp_int; } /* Default */ strnfmt(tmp_val, sizeof(tmp_val), "%ld", (long)(p_ptr->au)); /* Query */ if (!get_string("Gold: ", tmp_val, 10)) return; /* Extract */ tmp_long = atol(tmp_val); /* Verify */ if (tmp_long < 0) tmp_long = 0L; /* Save */ p_ptr->au = tmp_long; /* Default */ strnfmt(tmp_val, sizeof(tmp_val), "%ld", (long)(p_ptr->exp)); /* Query */ if (!get_string("Experience: ", tmp_val, 10)) return; /* Extract */ tmp_long = atol(tmp_val); /* Verify */ if (tmp_long < 0) tmp_long = 0L; if (tmp_long > p_ptr->exp) player_exp_gain(p_ptr, tmp_long - p_ptr->exp); else player_exp_lose(p_ptr, p_ptr->exp - tmp_long, FALSE); }
ANSC_STATUS Pam_GetFirstIpInterfaceObjectName ( BOOL bUpstream, char* pIfObjName, PULONG pulObjNameSize ) { ANSC_STATUS returnStatus = ANSC_STATUS_CANT_FIND; int iReturnValue = 0; ULONG ulTotal = 0; ULONG ulIndex = 0; ULONG ulInstNum = 0; ULONG ulLen = 0; char pObjName[256] = {0}; char Buffer[128] = {0}; ULONG BufferSize = 0; char LowerLayers[256] = {0}; ULONG LowerLayersSize = 0; BOOL bLowerLayerUpstream = FALSE; char* EnvIndex = NULL; ULONG ulEnvIndex = PAM_MAX_IP_INTERFACE_NUM; #ifdef _COSA_SIM_ // Hard coded, RTian 09/20/2013 { if(bUpstream) { pulObjNameSize = sprintf(pIfObjName, "Device.IP.Interface.1.") + 1; // else pulObjNameSize = sprintf(pIfObjName, "Device.IP.Interface.4.") + 1; return ANSC_STATUS_SUCCESS; } } #endif ulTotal = CosaGetParamValueUlong("Device.IP.InterfaceNumberOfEntries"); EnvIndex = getenv(PAM_FIRST_IP_INTERFACE); if(EnvIndex != NULL) { ulEnvIndex = atol(EnvIndex); } for ( ulIndex = 0; ulIndex < ulTotal; ulIndex++ ) { if(EnvIndex != NULL && ulEnvIndex < PAM_MAX_IP_INTERFACE_NUM) { ulInstNum = CosaGetInstanceNumberByIndex("Device.IP.Interface.", ulEnvIndex); if( 0 == ulInstNum) { EnvIndex = NULL; ulEnvIndex = PAM_MAX_IP_INTERFACE_NUM; } else { ulIndex = EnvIndex; } } ulInstNum = CosaGetInstanceNumberByIndex("Device.IP.Interface.", ulIndex); if ( 0 == ulInstNum ) { CcspTraceWarning(("Pam_GetFirstIpInterfaceObjectName -- invalid Device.IP.Interface instance number!\n")); returnStatus = ANSC_STATUS_FAILURE; break; } else { _ansc_sprintf(pObjName, "Device.IP.Interface.%d.LowerLayers", ulInstNum); /*CcspTraceInfo(("Checking %s...\n", pObjName));*/ LowerLayersSize = sizeof(LowerLayers); iReturnValue = CosaGetParamValueString(pObjName, LowerLayers, &LowerLayersSize); if ( iReturnValue != 0 ) { returnStatus = ANSC_STATUS_FAILURE; break; } else if ( LowerLayersSize == 0 ) { continue; } do { /* * We have to check whether LowerLayers is a partial object name (without '.' at the end) or not * Assuming only one lower layer value for now * Look for the LowerLayer with a empty LowerLayers parameter */ ulLen = _ansc_strlen(LowerLayers); if ( LowerLayers[ulLen - 1] == '.' ) { LowerLayers[ulLen - 1] = '\0'; } _ansc_strcpy (pObjName, LowerLayers); _ansc_sprintf(Buffer, "%s.LowerLayers", LowerLayers); CcspTraceInfo(("Checking %s...\n", Buffer)); LowerLayersSize = sizeof(LowerLayers); iReturnValue = CosaGetParamValueString(Buffer, LowerLayers, &LowerLayersSize); if ( iReturnValue != 0 ) { break; } else if ( LowerLayersSize == 0 ) { break; } } while (TRUE); /* * Check the Upstream parameter. * Note, not all error cases are covered well here, which happened to help to pass the test * on DRG -- LowerLayers parameter of IP.Interface on top of Bridge.1 is not actually correct. */ _ansc_sprintf(Buffer, "%s.Upstream", pObjName); bLowerLayerUpstream = CosaGetParamValueBool(Buffer); if ( bUpstream == bLowerLayerUpstream ) { CcspTraceInfo (( "Found the lowest %s layer %s for IP interface Device.IP.Interface.%d.\n", bUpstream ? "upstream" : "downstream", LowerLayers, ulInstNum )); _ansc_sprintf(Buffer, "Device.IP.Interface.%d.", ulInstNum); BufferSize = _ansc_strlen(Buffer); if ( BufferSize < *pulObjNameSize ) { AnscCopyString(pIfObjName, Buffer); *pulObjNameSize = BufferSize; returnStatus = ANSC_STATUS_SUCCESS; } else { *pulObjNameSize = BufferSize; returnStatus = ANSC_STATUS_MORE_DATA; } break; } } } return returnStatus; }
// read config from file to the structure int io_read_config (tIO *conf_data) { FILE *fp = NULL; char input[128]; char token[64]; int line = 0; fp = fopen (conf_file, "r"); if (fp == NULL) { // fprintf(stderr, "can't open %s: %s\n", conf_files[chan], strerror(errno)); return (-1); } while (fgets(input, sizeof (input), fp)!=NULL){ char *ptr = input; line ++; ptr = get_token (ptr, token, sizeof (token)); if (token[0] == '#') continue; if (strcasecmp (token, "ext_inputs") == 0) { ptr = get_token (ptr, token, sizeof (token)); if (strcmp (token, "{") != 0) goto err; while (fgets(input, sizeof (input), fp)!=NULL){ char *ptr = input; line++; ptr = get_token (ptr, token, sizeof (token)); if (token[0] == '#') continue; if (strcmp (token, "}") == 0) { break; } else if (strcasecmp (token, "ch_1_current_state") == 0) { ptr = get_token (ptr, token, sizeof (token)); conf_data->ext_inputs[0].current_state = atol (token); } else if (strcasecmp (token, "ch_2_current_state") == 0) { ptr = get_token (ptr, token, sizeof (token)); conf_data->ext_inputs[1].current_state = atol (token); } } } else if (strcasecmp (token, "ext_outputs") == 0) { ptr = get_token (ptr, token, sizeof (token)); if (strcmp (token, "{") != 0) goto err; while (fgets(input, sizeof (input), fp)!=NULL){ char *ptr = input; line++; ptr = get_token (ptr, token, sizeof (token)); if (token[0] == '#') continue; if (strcmp (token, "}") == 0) { break; } else if (strcasecmp (token, "ch_1_current_state") == 0) { ptr = get_token (ptr, token, sizeof (token)); conf_data->ext_outputs[0].current_state = atol (token); } else if (strcasecmp (token, "ch_2_current_state") == 0) { ptr = get_token (ptr, token, sizeof (token)); conf_data->ext_outputs[1].current_state = atol (token); } else if (strcasecmp (token, "ch_1_default_state") == 0) { ptr = get_token (ptr, token, sizeof (token)); conf_data->ext_outputs[0].default_state = atol (token); } else if (strcasecmp (token, "ch_2_default_state") == 0) { ptr = get_token (ptr, token, sizeof (token)); conf_data->ext_outputs[1].default_state = atol (token); } } } } fclose (fp); return 0; err: // fprintf(stderr, "Error %s in %d\n", &conf_files[chan], line); if (fp) fclose (fp); return -1; }
int main(int argc, char *argv[]) { const char *progname = argv[0]; struct ccn_ping_client client = {.identifier = 0, .interval = 1, .sent = 0, .received = 0, .total = -1, .number = -1, .print_timestamp = 0, .allow_caching = 0}; struct ccn_closure in_content = {.p = &incoming_content}; struct hashtb_param param = {0}; int res; struct sigaction sa; memset(&sa, 0, sizeof(sa)); sa.sa_handler = &handle_interrupt; sigaction(SIGINT, &sa, &osa); memset(&sta, 0, sizeof(sta)); gettimeofday(&sta.start, 0); sta.min = INT_MAX; while ((res = getopt(argc, argv, "htai:c:n:p:")) != -1) { switch (res) { case 'c': client.total = atol(optarg); if (client.total <= 0) usage(progname); break; case 'i': client.interval = atof(optarg); if (client.interval < PING_MIN_INTERVAL) usage(progname); break; case 'n': client.number = atol(optarg); if (client.number < 0) usage(progname); break; case 'p': client.identifier = optarg; if (!is_valid_identifier(client.identifier)) usage(progname); break; case 't': client.print_timestamp = 1; break; case 'a': client.allow_caching = 1; break; case 'h': default: usage(progname); break; } } if (client.number < 0) srandom(time(NULL) * getpid()); argc -= optind; argv += optind; if (argv[0] == NULL) usage(progname); sta.prefix = argv[0]; client.original_prefix = argv[0]; client.prefix = ccn_charbuf_create(); res = ccn_name_from_uri(client.prefix, argv[0]); if (res < 0) { fprintf(stderr, "%s: bad ccn URI: %s\n", progname, argv[0]); exit(1); } if (argv[1] != NULL) fprintf(stderr, "%s warning: extra arguments ignored\n", progname); //append "/ping" to the given name prefix res = ccn_name_append_str(client.prefix, PING_COMPONENT); if (res < 0) { fprintf(stderr, "%s: error constructing ccn URI: %s/%s\n", progname, argv[0], PING_COMPONENT); exit(1); } //append identifier if not empty if (client.identifier) { res = ccn_name_append_str(client.prefix, client.identifier); if (res < 0) { fprintf(stderr, "%s: error constructing ccn URI: %s/%s/%s\n", progname, argv[0], PING_COMPONENT, client.identifier); exit(1); } } /* Connect to ccnd */ client.h = ccn_create(); if (ccn_connect(client.h, NULL) == -1) { perror("Could not connect to ccnd"); exit(1); } client.closure = &in_content; in_content.data = &client; client.ccn_ping_table = hashtb_create(sizeof(struct ccn_ping_entry), ¶m); client.sched = ccn_schedule_create(&client, &ccn_ping_ticker); client.event = ccn_schedule_event(client.sched, 0, &do_ping, NULL, 0); if (client.print_timestamp) { printf("%ld.%06u: ", (long)sta.start.tv_sec, (unsigned)sta.start.tv_usec); } printf("CCNPING %s\n", client.original_prefix); res = 0; while (res >= 0 && (client.total <= 0 || client.sent < client.total || hashtb_n(client.ccn_ping_table) > 0)) { if (client.total <= 0 || client.sent < client.total) ccn_schedule_run(client.sched); res = ccn_run(client.h, 10); } ccn_schedule_destroy(&client.sched); ccn_destroy(&client.h); ccn_charbuf_destroy(&client.prefix); print_statistics(); return 0; }
int main(int argc, char *argv[]) { int use_audio, use_video; int fullscreen; int scalesize; int scale_width, scale_height; int loop_play; int i, pause; int volume; Uint32 seek; float skip; int bilinear_filtering; SDL_Surface *screen; SMPEG *mpeg; SMPEG_Info info; char *basefile; SDL_version sdlver; SMPEG_version smpegver; int fd; char buf[32]; int status; /* Get the command line options */ use_audio = 1; use_video = 1; fullscreen = 0; scalesize = 1; scale_width = 0; scale_height = 0; loop_play = 0; volume = 100; seek = 0; skip = 0; bilinear_filtering = 0; fd = 0; for ( i=1; argv[i] && (argv[i][0] == '-') && (argv[i][1] != 0); ++i ) { if ( (strcmp(argv[i], "--noaudio") == 0) || (strcmp(argv[i], "--nosound") == 0) ) { use_audio = 0; } else if ( strcmp(argv[i], "--novideo") == 0 ) { use_video = 0; } else if ( strcmp(argv[i], "--fullscreen") == 0 ) { fullscreen = 1; } else if ((strcmp(argv[i], "--double") == 0)||(strcmp(argv[i], "-2") == 0)) { scalesize = 2; } else if ((strcmp(argv[i], "--loop") == 0) || (strcmp(argv[i], "-l") == 0)) { loop_play = 1; } else if ( strcmp(argv[i], "--bilinear") == 0 ) { bilinear_filtering = 1; } else if ((strcmp(argv[i], "--seek") == 0)||(strcmp(argv[i], "-S") == 0)) { ++i; if ( argv[i] ) { seek = atol(argv[i]); } } else if ((strcmp(argv[i], "--skip") == 0)||(strcmp(argv[i], "-k") == 0)) { ++i; if ( argv[i] ) { skip = (float)atof(argv[i]); } } else if ((strcmp(argv[i], "--volume") == 0)||(strcmp(argv[i], "-v") == 0)) { ++i; if (i >= argc) { fprintf(stderr, "Please specify volume when using --volume or -v\n"); return(1); } if ( argv[i] ) { volume = atoi(argv[i]); } if ( ( volume < 0 ) || ( volume > 100 ) ) { fprintf(stderr, "Volume must be between 0 and 100\n"); volume = 100; } } else if ((strcmp(argv[i], "--version") == 0) || (strcmp(argv[i], "-V") == 0)) { sdlver = *SDL_Linked_Version(); SMPEG_VERSION(&smpegver); printf("SDL version: %d.%d.%d\n" "SMPEG version: %d.%d.%d\n", sdlver.major, sdlver.minor, sdlver.patch, smpegver.major, smpegver.minor, smpegver.patch); return(0); } else if ((strcmp(argv[i], "--scale") == 0)||(strcmp(argv[i], "-s") == 0)) { ++i; if ( argv[i] ) { sscanf(argv[i], "%dx%d", &scale_width, &scale_height); } } else if ((strcmp(argv[i], "--help") == 0) || (strcmp(argv[i], "-h") == 0)) { usage(argv[0]); return(0); } else { fprintf(stderr, "Warning: Unknown option: %s\n", argv[i]); } } /* If there were no arguments just print the usage */ if (argc == 1) { usage(argv[0]); return(0); } #if defined(linux) || defined(__FreeBSD__) /* Plaympeg doesn't need a mouse */ putenv("SDL_NOMOUSE=1"); #endif /* Play the mpeg files! */ status = 0; for ( ; argv[i]; ++i ) { /* Initialize SDL */ if ( use_video ) { if ((SDL_Init(SDL_INIT_VIDEO) < 0) || !SDL_VideoDriverName(buf, 1)) { fprintf(stderr, "Warning: Couldn't init SDL video: %s\n", SDL_GetError()); fprintf(stderr, "Will ignore video stream\n"); use_video = 0; } } if ( use_audio ) { if ((SDL_Init(SDL_INIT_AUDIO) < 0) || !SDL_AudioDriverName(buf, 1)) { fprintf(stderr, "Warning: Couldn't init SDL audio: %s\n", SDL_GetError()); fprintf(stderr, "Will ignore audio stream\n"); use_audio = 0; } } /* Allow Ctrl-C when there's no video output */ signal(SIGINT, next_movie); /* Create the MPEG stream */ #ifdef NET_SUPPORT #ifdef RAW_SUPPORT /* Check if source is an IP address and port*/ if((fd = raw_open(argv[i])) != 0) mpeg = SMPEG_new_descr(fd, &info, use_audio); else #endif #ifdef HTTP_SUPPORT /* Check if source is an http URL */ if((fd = http_open(argv[i])) != 0) mpeg = SMPEG_new_descr(fd, &info, use_audio); else #endif #ifdef FTP_SUPPORT /* Check if source is an http URL */ if((fd = ftp_open(argv[i])) != 0) mpeg = SMPEG_new_descr(fd, &info, use_audio); else #endif #endif #ifdef VCD_SUPPORT /* Check if source is a CDROM device */ if((fd = vcd_open(argv[i])) != 0) mpeg = SMPEG_new_descr(fd, &info, use_audio); else #endif { if(strcmp(argv[i], "-") == 0) /* Use stdin for input */ mpeg = SMPEG_new_descr(0, &info, use_audio); else mpeg = SMPEG_new(argv[i], &info, use_audio); } if ( SMPEG_error(mpeg) ) { fprintf(stderr, "%s: %s\n", argv[i], SMPEG_error(mpeg)); SMPEG_delete(mpeg); status = -1; continue; } SMPEG_enableaudio(mpeg, use_audio); SMPEG_enablevideo(mpeg, use_video); SMPEG_setvolume(mpeg, volume); /* Enable software bilinear filtering, if desired */ if ( bilinear_filtering ) { SMPEG_Filter *filter; filter = SMPEGfilter_bilinear(); filter = SMPEG_filter( mpeg, filter ); filter->destroy(filter); } /* Print information about the video */ basefile = strrchr(argv[i], '/'); if ( basefile ) { ++basefile; } else { basefile = argv[i]; } if ( info.has_audio && info.has_video ) { printf("%s: MPEG system stream (audio/video)\n", basefile); } else if ( info.has_audio ) { printf("%s: MPEG audio stream\n", basefile); } else if ( info.has_video ) { printf("%s: MPEG video stream\n", basefile); } if ( info.has_video ) { printf("\tVideo %dx%d resolution\n", info.width, info.height); } if ( info.has_audio ) { printf("\tAudio %s\n", info.audio_string); } if ( info.total_size ) { printf("\tSize: %d\n", info.total_size); } if ( info.total_time ) { printf("\tTotal time: %f\n", info.total_time); } /* Set up video display if needed */ if ( info.has_video && use_video ) { const SDL_VideoInfo *video_info; Uint32 video_flags; int video_bpp; int width, height; /* Get the "native" video mode */ video_info = SDL_GetVideoInfo(); switch (video_info->vfmt->BitsPerPixel) { case 16: case 24: case 32: video_bpp = video_info->vfmt->BitsPerPixel; break; default: video_bpp = 16; break; } if ( scale_width ) { width = scale_width; } else { width = info.width; } width *= scalesize; if ( scale_height ) { height = scale_height; } else { height = info.height; } height *= scalesize; video_flags = SDL_SWSURFACE; if ( fullscreen ) { video_flags = SDL_FULLSCREEN|SDL_DOUBLEBUF|SDL_HWSURFACE; } video_flags |= SDL_ASYNCBLIT; video_flags |= SDL_RESIZABLE; screen = SDL_SetVideoMode(width, height, video_bpp, video_flags); if ( screen == NULL ) { fprintf(stderr, "Unable to set %dx%d video mode: %s\n", width, height, SDL_GetError()); continue; } SDL_WM_SetCaption(argv[i], "plaympeg"); if ( screen->flags & SDL_FULLSCREEN ) { SDL_ShowCursor(0); } SMPEG_setdisplay(mpeg, screen, NULL, update); SMPEG_scaleXY(mpeg, screen->w, screen->h); } else { SDL_QuitSubSystem(SDL_INIT_VIDEO); } /* Set any special playback parameters */ if ( loop_play ) { SMPEG_loop(mpeg, 1); } /* Seek starting position */ if(seek) SMPEG_seek(mpeg, seek); /* Skip seconds to starting position */ if(skip) SMPEG_skip(mpeg, skip); /* Play it, and wait for playback to complete */ SMPEG_play(mpeg); done = 0; pause = 0; while ( ! done && ( pause || (SMPEG_status(mpeg) == SMPEG_PLAYING) ) ) { SDL_Event event; while ( use_video && SDL_PollEvent(&event) ) { switch (event.type) { case SDL_VIDEORESIZE: { SDL_Surface *old_screen = screen; SMPEG_pause(mpeg); screen = SDL_SetVideoMode(event.resize.w, event.resize.h, screen->format->BitsPerPixel, screen->flags); if ( old_screen != screen ) { SMPEG_setdisplay(mpeg, screen, NULL, update); } SMPEG_scaleXY(mpeg, screen->w, screen->h); SMPEG_pause(mpeg); } break; case SDL_KEYDOWN: if ( (event.key.keysym.sym == SDLK_ESCAPE) || (event.key.keysym.sym == SDLK_q) ) { // Quit done = 1; } else if ( event.key.keysym.sym == SDLK_RETURN ) { // toggle fullscreen if ( event.key.keysym.mod & KMOD_ALT ) { SDL_WM_ToggleFullScreen(screen); fullscreen = (screen->flags & SDL_FULLSCREEN); SDL_ShowCursor(!fullscreen); } } else if ( event.key.keysym.sym == SDLK_UP ) { // Volume up if ( volume < 100 ) { if ( event.key.keysym.mod & KMOD_SHIFT ) { // 10+ volume += 10; } else if ( event.key.keysym.mod & KMOD_CTRL ) { // 100+ volume = 100; } else { // 1+ volume++; } if ( volume > 100 ) volume = 100; SMPEG_setvolume(mpeg, volume); } } else if ( event.key.keysym.sym == SDLK_DOWN ) { // Volume down if ( volume > 0 ) { if ( event.key.keysym.mod & KMOD_SHIFT ) { volume -= 10; } else if ( event.key.keysym.mod & KMOD_CTRL ) { volume = 0; } else { volume--; } if ( volume < 0 ) volume = 0; SMPEG_setvolume(mpeg, volume); } } else if ( event.key.keysym.sym == SDLK_PAGEUP ) { // Full volume volume = 100; SMPEG_setvolume(mpeg, volume); } else if ( event.key.keysym.sym == SDLK_PAGEDOWN ) { // Volume off volume = 0; SMPEG_setvolume(mpeg, volume); } else if ( event.key.keysym.sym == SDLK_SPACE ) { // Toggle play / pause if ( SMPEG_status(mpeg) == SMPEG_PLAYING ) { SMPEG_pause(mpeg); pause = 1; } else { SMPEG_play(mpeg); pause = 0; } } else if ( event.key.keysym.sym == SDLK_RIGHT ) { // Forward if ( event.key.keysym.mod & KMOD_SHIFT ) { SMPEG_skip(mpeg, 100); } else if ( event.key.keysym.mod & KMOD_CTRL ) { SMPEG_skip(mpeg, 50); } else { SMPEG_skip(mpeg, 5); } } else if ( event.key.keysym.sym == SDLK_LEFT ) { // Reverse if ( event.key.keysym.mod & KMOD_SHIFT ) { } else if ( event.key.keysym.mod & KMOD_CTRL ) { } else { } } else if ( event.key.keysym.sym == SDLK_KP_MINUS ) { // Scale minus if ( scalesize > 1 ) { scalesize--; } } else if ( event.key.keysym.sym == SDLK_KP_PLUS ) { // Scale plus scalesize++; } else if ( event.key.keysym.sym == SDLK_f ) { // Toggle filtering on/off if ( bilinear_filtering ) { SMPEG_Filter *filter = SMPEGfilter_null(); filter = SMPEG_filter( mpeg, filter ); filter->destroy(filter); bilinear_filtering = 0; } else { SMPEG_Filter *filter = SMPEGfilter_bilinear(); filter = SMPEG_filter( mpeg, filter ); filter->destroy(filter); bilinear_filtering = 1; } } break; case SDL_QUIT: done = 1; break; default: break; } } SDL_Delay(1000/2); } SMPEG_delete(mpeg); } SDL_Quit(); #if defined(RAW_SUPPORT) || defined(HTTP_SUPPORT) || defined(FTP_SUPPORT) || \ defined(VCD_SUPPORT) if(fd) close(fd); #endif return(status); }
int main(int argc, char* argv[]) { INT n = (argc == 2) ? atol(argv[1]) : 0; for (INT i = 1; i <= n; ++i) printf ("%llu : %llu\n", i, orbita(i)); return 0; }
void QItem_Handle_Submitted(OneQueItem *Item, StrBuf *Line, const char **Pos) { Item->Submitted = atol(*Pos); }
/* * Called when link goes down */ int ipdown_main(int argc, char **argv) { if (check_action() != ACT_IDLE) return -1; runStartup("/etc/config", ".ipdown"); #ifdef HAVE_REGISTER if (isregistered_real()) #endif { #ifdef HAVE_RB500 runStartup("/usr/local/etc/config", ".ipdown"); #else runStartup("/jffs/etc/config", ".ipdown"); runStartup("/mmc/etc/config", ".ipdown"); runStartup("/tmp/etc/config", ".ipdown"); #endif } stop_ddns(); stop_ntpc(); unlink("/tmp/ppp/link"); if (nvram_match("wan_proto", "l2tp")) { /* * clear dns from the resolv.conf */ nvram_set("wan_get_dns", ""); dns_to_resolv(); // todo route_del(nvram_safe_get("wan_ifname"), 0, nvram_safe_get("l2tp_server_ip"), nvram_safe_get("wan_gateway_buf"), "255.255.255.255"); /* * Restore the default gateway for WAN interface */ nvram_set("wan_gateway", nvram_safe_get("wan_gateway_buf")); /* * Set default route to gateway if specified */ route_add(nvram_safe_get("wan_ifname"), 0, "0.0.0.0", nvram_safe_get("wan_gateway"), "0.0.0.0"); } if (nvram_match("wan_proto", "pptp")) { eval("route", "del", "default"); nvram_set("wan_gateway", nvram_safe_get("wan_gateway_buf")); eval("route", "add", "default", "gw", nvram_safe_get("wan_gateway")); sysprintf("iptables -t nat -A POSTROUTING -o %s -j MASQUERADE\n", nvram_safe_get("pptp_ifname")); } #ifdef HAVE_3G #if defined(HAVE_TMK) || defined(HAVE_BKM) else if (nvram_match("wan_proto", "3g")) { char *gpio3g = nvram_get("gpio3g"); if (gpio3g != NULL) set_gpio(atoi(gpio3g), 0); } #endif #endif nvram_set("pppoe_ifname", ""); nvram_set("pppd_pppifname", ""); // write PPP traffic statistics to nvram if wanted if (nvram_match("ppp_traffic", "1")) { char buffer[64]; long long old_in, old_out; long long in, out; char *pin; char *pout; time_t stamp; old_in = atol(nvram_safe_get("ppp_byte_in")); old_out = atol(nvram_safe_get("ppp_byte_out")); if ((pin = getenv("BYTES_RCVD"))) in = atol(pin); else in = 0; if ((pout = getenv("BYTES_SENT"))) out = atol(pout); else out = 0; in += old_in; out += old_out; snprintf(buffer, 63, "%lld", in); nvram_set("ppp_byte_in", buffer); snprintf(buffer, 63, "%lld", out); nvram_set("ppp_byte_out", buffer); if ((stamp = time(NULL)) < 1087818160) // clock is not set // properly stamp = 0; snprintf(buffer, 63, "%ld", stamp); nvram_set("ppp_byte_stamp", buffer); nvram_commit(); } if (nvram_match("ppp_demand", "1") && (nvram_match("wan_proto", "pptp") || nvram_match("wan_proto", "l2tp") || nvram_match("wan_proto", "pppoe"))) { stop_process("listen", "activity listener"); eval("listen", nvram_safe_get("lan_ifname")); } return 1; }
static bool HandleGameObjectTargetCommand(ChatHandler* handler, char const* args) { Player* player = handler->GetSession()->GetPlayer(); QueryResult result; GameEventMgr::ActiveEvents const& activeEventsList = sGameEventMgr->GetActiveEventList(); if (*args) { // number or [name] Shift-click form |color|Hgameobject_entry:go_id|h[name]|h|r char* id = handler->extractKeyFromLink((char*)args, "Hgameobject_entry"); if (!id) return false; uint32 objectId = atol(id); if (objectId) result = WorldDatabase.PQuery("SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseMask, (POW(position_x - '%f', 2) + POW(position_y - '%f', 2) + POW(position_z - '%f', 2)) AS order_ FROM gameobject WHERE map = '%i' AND id = '%u' ORDER BY order_ ASC LIMIT 1", player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), objectId); else { std::string name = id; WorldDatabase.EscapeString(name); result = WorldDatabase.PQuery( "SELECT guid, id, position_x, position_y, position_z, orientation, map, phaseMask, (POW(position_x - %f, 2) + POW(position_y - %f, 2) + POW(position_z - %f, 2)) AS order_ " "FROM gameobject, gameobject_template WHERE gameobject_template.entry = gameobject.id AND map = %i AND name " _LIKE_" " _CONCAT3_("'%%'", "'%s'", "'%%'")" ORDER BY order_ ASC LIMIT 1", player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetMapId(), name.c_str()); } } else { std::ostringstream eventFilter; eventFilter << " AND (eventEntry IS NULL "; bool initString = true; for (GameEventMgr::ActiveEvents::const_iterator itr = activeEventsList.begin(); itr != activeEventsList.end(); ++itr) { if (initString) { eventFilter << "OR eventEntry IN (" << *itr; initString = false; } else eventFilter << ',' << *itr; } if (!initString) eventFilter << "))"; else eventFilter << ')'; result = WorldDatabase.PQuery("SELECT gameobject.guid, id, position_x, position_y, position_z, orientation, map, phaseMask, " "(POW(position_x - %f, 2) + POW(position_y - %f, 2) + POW(position_z - %f, 2)) AS order_ FROM gameobject " "LEFT OUTER JOIN game_event_gameobject on gameobject.guid = game_event_gameobject.guid WHERE map = '%i' %s ORDER BY order_ ASC LIMIT 10", handler->GetSession()->GetPlayer()->GetPositionX(), handler->GetSession()->GetPlayer()->GetPositionY(), handler->GetSession()->GetPlayer()->GetPositionZ(), handler->GetSession()->GetPlayer()->GetMapId(), eventFilter.str().c_str()); } if (!result) { handler->SendSysMessage(LANG_COMMAND_TARGETOBJNOTFOUND); return true; } bool found = false; float x, y, z, o; uint32 guidLow, id, phase; uint16 mapId; uint32 poolId; do { Field* fields = result->Fetch(); guidLow = fields[0].GetUInt32(); id = fields[1].GetUInt32(); x = fields[2].GetFloat(); y = fields[3].GetFloat(); z = fields[4].GetFloat(); o = fields[5].GetFloat(); mapId = fields[6].GetUInt16(); phase = fields[7].GetUInt32(); poolId = sPoolMgr->IsPartOfAPool<GameObject>(guidLow); if (!poolId || sPoolMgr->IsSpawnedObject<GameObject>(guidLow)) found = true; } while (result->NextRow() && !found); if (!found) { handler->PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST, id); return false; } GameObjectTemplate const* objectInfo = sObjectMgr->GetGameObjectTemplate(id); if (!objectInfo) { handler->PSendSysMessage(LANG_GAMEOBJECT_NOT_EXIST, id); return false; } GameObject* target = handler->GetSession()->GetPlayer()->GetMap()->GetGameObject(ObjectGuid(HIGHGUID_GAMEOBJECT, id, guidLow)); handler->PSendSysMessage(LANG_GAMEOBJECT_DETAIL, guidLow, objectInfo->name.c_str(), guidLow, id, x, y, z, mapId, o, phase); if (target) { int32 curRespawnDelay = int32(target->GetRespawnTimeEx() - time(NULL)); if (curRespawnDelay < 0) curRespawnDelay = 0; std::string curRespawnDelayStr = secsToTimeString(curRespawnDelay, true); std::string defRespawnDelayStr = secsToTimeString(target->GetRespawnDelay(), true); handler->PSendSysMessage(LANG_COMMAND_RAWPAWNTIMES, defRespawnDelayStr.c_str(), curRespawnDelayStr.c_str()); } return true; }
static void monitor_read_config(Control *ctrl, xmlNodePtr node) { xmlChar *value; t_global_monitor *global; global = (t_global_monitor *)ctrl->data; if (node == NULL || node->children == NULL) { return; } for (node = node->children; node; node = node->next) { if (xmlStrEqual(node->name, (const xmlChar *)MONITOR_ROOT)) { if ((value = xmlGetProp(node, (const xmlChar *)"Use_Label"))) { global->monitor->options.use_label = atoi(value); g_free(value); } if ((value = xmlGetProp(node, (const xmlChar *)"Color_In"))) { gdk_color_parse(value, &global->monitor->options.color[IN]); g_free(value); } if ((value = xmlGetProp(node, (const xmlChar *)"Color_Out"))) { gdk_color_parse(value, &global->monitor->options.color[OUT]); g_free(value); } if ((value = xmlGetProp(node, (const xmlChar *) "Text"))) { if (global->monitor->options.label_text) g_free(global->monitor->options.label_text); global->monitor->options.label_text = g_strdup((gchar *)value); g_free(value); } if ((value = xmlGetProp(node, (const xmlChar *) "Network_Device"))) { if (global->monitor->options.network_device) g_free(global->monitor->options.network_device); global->monitor->options.network_device = g_strdup((gchar *)value); g_free(value); } if ((value = xmlGetProp(node, (const xmlChar *) "Max_In"))) { global->monitor->options.max[IN] = atoi( value ); g_free(value); } if ((value = xmlGetProp(node, (const xmlChar *) "Max_Out"))) { global->monitor->options.max[OUT] = atol( value ); g_free(value); } if ((value = xmlGetProp(node, (const xmlChar *) "Auto_Max"))) { global->monitor->options.auto_max = atol(value); g_free(value); } if ((value = xmlGetProp(node, (const xmlChar *) "Update_Interval"))) { global->monitor->options.update_interval = atoi(value); g_free(value); } break; } } setup_monitor(global); }
VOID InitProg(INT iArgc, PSZ rgArgv[]) { APIRET rc; BYTE szTranslate[256]; INT iArg; ULONG ulLVB; USHORT uscbLVB; ULONG ulDataSize; ULONG ulParmSize; BOOL fSetParms = FALSE; ULONG ulParm; memset(szTranslate, 0, sizeof szTranslate); /* Determine if we run in the foreground */ rc = VioGetBuf(&ulLVB, &uscbLVB, (HVIO)0); if (rc) fForeGround = FALSE; else fForeGround = TRUE; if (fForeGround) printf("FAT32 cache helper version %s.\n", FAT32_VERSION); else WriteLogMessage("FAT32 task detached"); rc = DosGetNamedSharedMem((PVOID *)&pOptions, SHAREMEM, PAG_READ|PAG_WRITE); if (!rc) { fActive = TRUE; WriteLogMessage("Shared memory found!"); } else { rc = DosAllocSharedMem((PVOID *)&pOptions, SHAREMEM, sizeof (LWOPTS), PAG_COMMIT|PAG_READ|PAG_WRITE); if (rc) DosExit(EXIT_PROCESS, 1); memset(pOptions, 0, sizeof pOptions); pOptions->bLWPrio = PRTYC_IDLETIME; WriteLogMessage("Shared memory allocated!"); } ulDataSize = sizeof f32Parms; rc = DosFSCtl( (PVOID)&f32Parms, ulDataSize, &ulDataSize, NULL, 0, &ulParmSize, FAT32_GETPARMS, "FAT32", -1, FSCTL_FSDNAME); if (rc) { printf("DosFSCtl, FAT32_GETPARMS failed, rc = %d\n", rc); DosExit(EXIT_PROCESS, 1); } if (strcmp(f32Parms.szVersion, FAT32_VERSION)) { printf("ERROR: FAT32 version (%s) differs from CACHEF32 version (%s)\n", f32Parms.szVersion, FAT32_VERSION); DosExit(EXIT_PROCESS, 1); } for (iArg = 1; iArg < iArgc; iArg++) { strupr(rgArgv[iArg]); if (rgArgv[iArg][0] == '/' || rgArgv[iArg][0] == '-') { switch (rgArgv[iArg][1]) { case '?' : printf("USAGE: CACHEF32 [options]\n"); printf("/Q (Quit)\n"); printf("/N do NOT load lazy write deamon.\n"); printf("/D:diskidle in millisecs.\n"); printf("/B:bufferidle in millisecs.\n"); printf("/M:maxage in millisecs.\n"); printf("/R:d:,n sets read ahead sector count for drive d: to n.\n"); printf("/FS use short file names internally.\n"); printf("/FL use long file names internally.\n"); printf("/L:on|off set lazy writing on or off.\n"); printf("/P:1|2|3|4 Set priority of Lazy writer\n"); DosExit(EXIT_PROCESS, 0); break; case 'P': if (rgArgv[iArg][2] != ':') { printf("Missing : after /P\n"); DosExit(EXIT_PROCESS, 1); } if (rgArgv[iArg][3] < '1' || rgArgv[iArg][3] > '4') { printf("Lazy write priority should be from 1 to 4!\n"); DosExit(EXIT_PROCESS, 1); } pOptions->bLWPrio = rgArgv[iArg][3] - '0'; break; case 'N': fLoadDeamon = FALSE; break; case 'T': printf("The /T option is no longer supported.\n"); printf("Please read the documentation.\n"); break; case 'Q' : if (fActive) { if (pOptions->fTerminate) printf("Terminate request already set!\n"); pOptions->fTerminate = TRUE; printf("Terminating CACHEF32.EXE...\n"); DosExit(EXIT_PROCESS, 0); } printf("/Q is invalid, CACHEF32 is not running!\n"); DosExit(EXIT_PROCESS, 1); break; case 'D': if (rgArgv[iArg][2] != ':') { printf("ERROR: missing : in %s\n", rgArgv[iArg]); DosExit(EXIT_PROCESS, 1); } ulParm = atol(&rgArgv[iArg][3]); if (!ulParm) { printf("ERROR: Invalid value in %s\n", rgArgv[iArg]); DosExit(EXIT_PROCESS, 1); } f32Parms.ulDiskIdle = ulParm / TIME_FACTOR; fSetParms = TRUE; break; case 'B': if (rgArgv[iArg][2] != ':') { printf("ERROR: missing : in %s\n", rgArgv[iArg]); DosExit(EXIT_PROCESS, 1); } ulParm = atol(&rgArgv[iArg][3]); if (!ulParm) { printf("ERROR: Invalid value in %s\n", rgArgv[iArg]); DosExit(EXIT_PROCESS, 1); } f32Parms.ulBufferIdle = ulParm / TIME_FACTOR; fSetParms = TRUE; break; case 'M': if (rgArgv[iArg][2] != ':') { printf("ERROR: missing : in %s\n", rgArgv[iArg]); DosExit(EXIT_PROCESS, 1); } ulParm = atol(&rgArgv[iArg][3]); if (!ulParm) { printf("ERROR: Invalid value in %s\n", rgArgv[iArg]); DosExit(EXIT_PROCESS, 1); } f32Parms.ulMaxAge = ulParm / TIME_FACTOR; fSetParms = TRUE; break; case 'R': if (rgArgv[iArg][2] != ':') { printf("ERROR: missing : in %s\n", rgArgv[iArg]); DosExit(EXIT_PROCESS, 1); } SetRASectors(&rgArgv[iArg][3]); break; case 'F': if (rgArgv[iArg][2] == 'S') f32Parms.fUseShortNames = TRUE; else if (rgArgv[iArg][2] == 'L') f32Parms.fUseShortNames = FALSE; else { printf("ERROR: Unknown option %s\n", rgArgv[iArg]); DosExit(EXIT_PROCESS, 1); } fSetParms = TRUE; break; case 'L': if (!stricmp(&rgArgv[iArg][2], ":ON")) { rc = DosFSCtl(NULL, 0, NULL, NULL, 0, NULL, FAT32_STARTLW, "FAT32", -1, FSCTL_FSDNAME); if (rc) printf("Warning: Lazy writing is already active or cachesize is 0!\n"); } else if (!stricmp(&rgArgv[iArg][2], ":OFF")) { rc = DosFSCtl(NULL, 0, NULL, NULL, 0, NULL, FAT32_STOPLW, "FAT32", -1, FSCTL_FSDNAME); if (rc) printf("Warning: Lazy writing is not active!\n"); } else { printf("ERROR: Unknown option %s\n", rgArgv[iArg]); DosExit(EXIT_PROCESS, 1); } break; default : printf("ERROR: Unknown option %s\n", rgArgv[iArg]); DosExit(EXIT_PROCESS, 1); break; } } } if (LoadTranslateTable()) fSetParms = TRUE; if (fSetParms) { if (f32Parms.ulDiskIdle < f32Parms.ulBufferIdle) { printf("DISKIDLE must be greater than BUFFERIDLE\n"); DosExit(EXIT_PROCESS, 1); } ulParmSize = sizeof f32Parms; rc = DosFSCtl( NULL, 0, &ulDataSize, (PVOID)&f32Parms, ulParmSize, &ulParmSize, FAT32_SETPARMS, "FAT32", -1, FSCTL_FSDNAME); if (rc) { printf("DosFSCtl FAT32_SETPARMS, failed, rc = %d\n", rc); DosExit(EXIT_PROCESS, 1); } } ulDriveMap = GetFAT32Drives(); if (!fActive) { if (!ulDriveMap) { printf("FAT32: No FAT32 partitions found, aborting...\n"); DosExit(EXIT_PROCESS, 1); } } /* Query parms */ if (fActive || !f32Parms.usCacheSize) { if (fActive) { printf("CACHEF32 is already running.\n"); printf("Current priority is %s.\n", rgPriority[pOptions->bLWPrio]); } if (!f32Parms.fLW) printf("LAZY WRITING is NOT active!\n\n"); else { printf("\n"); printf("DISKIDLE : %lu milliseconds.\n", f32Parms.ulDiskIdle * TIME_FACTOR); printf("BUFFERIDLE: %lu milliseconds.\n", f32Parms.ulBufferIdle * TIME_FACTOR); printf("MAXAGE : %lu milliseconds.\n", f32Parms.ulMaxAge * TIME_FACTOR); } printf("\n"); ShowRASectors(); printf("\n"); printf("CACHE has space for %u sectors\n", f32Parms.usCacheSize); printf("CACHE contains %u sectors\n", f32Parms.usCacheUsed); printf("There are %u dirty sectors in cache.\n", f32Parms.usDirtySectors); if (f32Parms.usPendingFlush > 0) printf("%u sectors are in pending flush state.\n", f32Parms.usPendingFlush); printf("The cache hits ratio is %3d%%.\n", f32Parms.ulTotalHits * 100 / f32Parms.ulTotalReads); if (f32Parms.fUseShortNames) { printf("Internally, short names are used.\n"); printf("All files are visible in DOS sessions.\n"); } else { printf("Internally, long names are used.\n"); printf("Files and directories with long names are hidden for DOS.\n"); } printf("FAT32.IFS has currently %u GDT segments allocated.\n", f32Parms.usSegmentsAllocated); } return; }
/* * Process the parameter update from ichip we received as a response to AT+iWNXT. * The response usually looks like this : key="value", so the key can be isolated * by looking for the '=' sign and the leading/trailing '"' have to be ignored. */ void ADAFRUITBLE::processParameterChange(char *key) { PotThrottleConfiguration *acceleratorConfig = NULL; PotThrottleConfiguration *brakeConfig = NULL; MotorControllerConfiguration *motorConfig = NULL; bool parameterFound = true; char *value = strchr(key, '='); if (!value) return; Throttle *accelerator = DeviceManager::getInstance()->getAccelerator(); Throttle *brake = DeviceManager::getInstance()->getBrake(); MotorController *motorController = DeviceManager::getInstance()->getMotorController(); if (accelerator) acceleratorConfig = (PotThrottleConfiguration *)accelerator->getConfiguration(); if (brake) brakeConfig = (PotThrottleConfiguration *)brake->getConfiguration(); if(motorController) motorConfig = (MotorControllerConfiguration *)motorController->getConfiguration(); value[0] = 0; // replace the '=' sign with a 0 value++; if (value[0] == '"') value++; // if the value starts with a '"', advance one character if (value[strlen(value) - 1] == '"') value[strlen(value) - 1] = 0; // if the value ends with a '"' character, replace it with 0 if (!strcmp(key, Constants::numThrottlePots) && acceleratorConfig) { acceleratorConfig->numberPotMeters = atol(value); accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleSubType) && acceleratorConfig) { acceleratorConfig->throttleSubType = atol(value); accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleMin1) && acceleratorConfig) { acceleratorConfig->minimumLevel1 = atol(value); accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleMin2) && acceleratorConfig) { acceleratorConfig->minimumLevel2 = atol(value); accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleMax1) && acceleratorConfig) { acceleratorConfig->maximumLevel1 = atol(value); accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleMax2) && acceleratorConfig) { acceleratorConfig->maximumLevel2 = atol(value); accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleRegenMax) && acceleratorConfig) { acceleratorConfig->positionRegenMaximum = atol(value) * 10; } else if (!strcmp(key, Constants::throttleRegenMin) && acceleratorConfig) { acceleratorConfig->positionRegenMinimum = atol(value) * 10; accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleFwd) && acceleratorConfig) { acceleratorConfig->positionForwardMotionStart = atol(value) * 10; accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleMap) && acceleratorConfig) { acceleratorConfig->positionHalfPower = atol(value) * 10; accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleMinRegen) && acceleratorConfig) { acceleratorConfig->minimumRegen = atol(value); accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleMaxRegen) && acceleratorConfig) { acceleratorConfig->maximumRegen = atol(value); accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::throttleCreep) && acceleratorConfig) { acceleratorConfig->creep = atol(value); accelerator->saveConfiguration(); } else if (!strcmp(key, Constants::brakeMin) && brakeConfig) { brakeConfig->minimumLevel1 = atol(value); brake->saveConfiguration(); } else if (!strcmp(key, Constants::brakeMax) && brakeConfig) { brakeConfig->maximumLevel1 = atol(value); brake->saveConfiguration(); } else if (!strcmp(key, Constants::brakeMinRegen) && brakeConfig) { brakeConfig->minimumRegen = atol(value); brake->saveConfiguration(); } else if (!strcmp(key, Constants::brakeMaxRegen) && brakeConfig) { brakeConfig->maximumRegen = atol(value); brake->saveConfiguration(); } else if (!strcmp(key, Constants::speedMax) && motorConfig) { motorConfig->speedMax = atol(value); motorController->saveConfiguration(); } else if (!strcmp(key, Constants::torqueMax) && motorConfig) { motorConfig->torqueMax = atol(value) * 10; motorController->saveConfiguration(); } else if (!strcmp(key, Constants::coolFan) && motorConfig) { motorConfig->coolFan = atol(value); motorController->saveConfiguration(); } else if (!strcmp(key, Constants::coolOn) && motorConfig) { motorConfig->coolOn = (atol(value)); motorController->saveConfiguration(); } else if (!strcmp(key, Constants::coolOff) && motorConfig) { motorConfig->coolOff = (atol(value)); motorController->saveConfiguration(); } else if (!strcmp(key, Constants::prechargeR) && motorConfig) { motorConfig->prechargeR = atol(value); motorController->saveConfiguration(); } else if (!strcmp(key, Constants::prechargeRelay) && motorConfig) { motorConfig->prechargeRelay = atol(value); motorController->saveConfiguration(); } else if (!strcmp(key, Constants::nominalVolt) && motorConfig) { motorConfig->nominalVolt = (atol(value))*10; motorController->saveConfiguration(); } else if (!strcmp(key, Constants::mainContactorRelay) && motorConfig) { motorConfig->mainContactorRelay = atol(value); motorController->saveConfiguration(); } else if (!strcmp(key, Constants::brakeLight) && motorConfig) { motorConfig->brakeLight = atol(value); motorController->saveConfiguration(); } else if (!strcmp(key, Constants::revLight) && motorConfig) { motorConfig->revLight = atol(value); motorController->saveConfiguration(); } else if (!strcmp(key, Constants::enableIn) && motorConfig) { motorConfig->enableIn = atol(value); motorController->saveConfiguration(); } else if (!strcmp(key, Constants::reverseIn) && motorConfig) { motorConfig->reverseIn = atol(value); motorController->saveConfiguration(); /* } else if (!strcmp(key, Constants::motorMode) && motorConfig) { motorConfig->motorMode = (MotorController::PowerMode)atoi(value); motorController->saveConfiguration(); */ } else if (!strcmp(key, "x1000")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16),true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } //sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1001")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16),true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } //sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1002")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16),true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } // sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1031")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } //sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1032")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } //sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1033")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } //sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1034")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } // sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1010")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } // sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1011")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } //sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1012")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } //sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1020")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1040")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } // sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x1050")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } // sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x2000")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x4400")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } // sysPrefs->forceCacheWrite(); sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x6000")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } // sysPrefs->forceCacheWrite(); } else if (!strcmp(key, "x650")) { if (255==atol(value)) { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), true); } else { sysPrefs->setDeviceStatus(strtol(key+1, 0, 16), false); } // sysPrefs->forceCacheWrite(); } else if (!strcmp(key, Constants::logLevel)) { extern PrefHandler *sysPrefs; uint8_t loglevel = atoi(value); Logger::setLoglevel((Logger::LogLevel)loglevel); sysPrefs->write(EESYS_LOG_LEVEL, loglevel); } else { parameterFound = false; } if (parameterFound) { Logger::info(ADABLUE, "parameter change: %s", key); } else { sysPrefs->forceCacheWrite(); DeviceManager::getInstance()->updateWifi(); } }
void websearch_configuration::handle_config_cmd(char *cmd, const uint32_t &cmd_hash, char *arg, char *buf, const unsigned long &linenum) { std::vector<std::string> bpvec; char tmp[BUFFER_SIZE]; int vec_count; char *vec[20]; // max 10 urls per feed parser. int i; feed_parser fed; feed_parser def_fed; bool def = false; switch (cmd_hash) { case hash_lang : _lang = std::string(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "Websearch language"); break; case hash_n : _Nr = atoi(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "Number of websearch results per page"); break; case hash_se : strlcpy(tmp,arg,sizeof(tmp)); vec_count = miscutil::ssplit(tmp," \t",vec,SZ(vec),1,1); div_t divresult; divresult = div(vec_count-1,3); if (divresult.rem > 0) { errlog::log_error(LOG_LEVEL_ERROR, "Wrong number of parameters for search-engine " "directive in websearch plugin configuration file"); break; } if (_default_engines) { // reset engines. _se_enabled = feeds(); _se_options.clear(); _default_engines = false; _se_default = feeds(); } fed = feed_parser(vec[0]); def_fed = feed_parser(vec[0]); for (i=1; i<vec_count; i+=3) { fed.add_url(vec[i]); std::string fu_name = vec[i+1]; def = false; if (strcmp(vec[i+2],"default")==0) def = true; feed_url_options fuo(vec[i],fu_name,def); _se_options.insert(std::pair<const char*,feed_url_options>(fuo._url.c_str(),fuo)); if (def) def_fed.add_url(vec[i]); } _se_enabled.add_feed(fed); if (!def_fed.empty()) _se_default.add_feed(def_fed); configuration_spec::html_table_row(_config_args,cmd,arg, "Enabled search engine"); break; case hash_thumbs: _thumbs = static_cast<bool>(atoi(arg)); configuration_spec::html_table_row(_config_args,cmd,arg, "Enable search results webpage thumbnails"); break; case hash_qcd : _query_context_delay = strtod(arg,NULL); configuration_spec::html_table_row(_config_args,cmd,arg, "Delay in seconds before deletion of cached websearches and results"); break; case hash_js: _js = static_cast<bool>(atoi(arg)); configuration_spec::html_table_row(_config_args,cmd,arg, "Enable javascript use on the websearch result page"); break; case hash_content_analysis: _content_analysis = static_cast<bool>(atoi(arg)); configuration_spec::html_table_row(_config_args,cmd,arg, "Enable the background download of webpages pointed to by websearch results and content analysis"); break; case hash_se_transfer_timeout: _se_transfer_timeout = atol(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "Sets the transfer timeout in seconds for connections to a search engine"); break; case hash_se_connect_timeout: _se_connect_timeout = atol(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "Sets the connection timeout in seconds for connections to a search engine"); break; case hash_ct_transfer_timeout: _ct_transfer_timeout = atol(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "Sets the transfer timeout in seconds when fetching content for analysis and caching"); break; case hash_ct_connect_timeout: _ct_connect_timeout = atol(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "Sets the connection timeout in seconds when fetching content for analysis and caching"); break; case hash_clustering: _clustering = static_cast<bool>(atoi(arg)); configuration_spec::html_table_row(_config_args,cmd,arg, "Enables the clustering from the UI"); break; case hash_max_expansions: _max_expansions = atoi(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "Sets the maximum number of query expansions"); break; case hash_extended_highlight: _extended_highlight = static_cast<bool>(atoi(arg)); configuration_spec::html_table_row(_config_args,cmd,arg, "Enables a more discriminative word highlight scheme"); break; case hash_background_proxy: _background_proxy_addr = std::string(arg); miscutil::tokenize(_background_proxy_addr,bpvec,":"); if (bpvec.size()!=2) { errlog::log_error(LOG_LEVEL_ERROR, "wrong address:port for background proxy: %s",_background_proxy_addr.c_str()); _background_proxy_addr = ""; } else { _background_proxy_addr = bpvec.at(0); _background_proxy_port = atoi(bpvec.at(1).c_str()); } configuration_spec::html_table_row(_config_args,cmd,arg, "Background proxy for fetching URLs"); break; case hash_show_node_ip: _show_node_ip = static_cast<bool>(atoi(arg)); configuration_spec::html_table_row(_config_args,cmd,arg, "Enable rendering of the node IP address in the info bar"); break; case hash_personalization: _personalization = static_cast<bool>(atoi(arg)); configuration_spec::html_table_row(_config_args,cmd,arg, "Enable personalized result ranking"); break; case hash_result_message: if (!arg) break; _result_message = std::string(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "Message to appear in a panel next to the search results"); break; case hash_dyn_ui: _dyn_ui = static_cast<bool>(atoi(arg)); configuration_spec::html_table_row(_config_args,cmd,arg, "Enabled the dynamic UI"); break; case hash_ui_theme: _ui_theme = std::string(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "User Interface selected theme"); break; case hash_num_reco_queries: _num_reco_queries = atoi(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "Max number of recommended queries"); break; case hash_num_recent_queries: _num_recent_queries = atoi(arg); configuration_spec::html_table_row(_config_args,cmd,arg, "Max number of recent queries"); break; default: break; } // end of switch. }
void PA6C::filterData(char *fieldData, goCoord *current, uint8_t *sID, uint8_t *fID) { if(!(*fID)) { if(strstr(fieldData,GPGGA)!=NULL) { *sID = 4; (*fID)++; return; } if(strstr(fieldData,GPGSA)!=NULL) { *sID |= 2; (*fID)++; return; } if(strstr(fieldData,GPGSV)!=NULL) return; if(strstr(fieldData,GPRMC)!=NULL) { *sID |= 1; (*fID)++; return; } if(strstr(fieldData,GPVTG)!=NULL) { *sID |= 0x08; (*fID)++; return; } *fID = 0; } if(!(*sID)) *fID = 0; if(*sID == 4) { switch(*fID) { case 6: current->positionFixInd = atoi(fieldData); break; case 7: current->satellitesUsed = atoi(fieldData); break; case 9: current->altitude = atol(fieldData); break; case 14: *fID = 0; return; break; } (*fID)++; } if(*sID == 6) { switch(*fID) { case 1: break; case 2: current->mode2 = atoi(fieldData); break; case 15: current->pdop = (uint16_t)(atof(fieldData)*100); break; case 16: current->hdop = (uint16_t)(atof(fieldData)*100); break; case 17: current->vdop = (uint16_t)(atof(fieldData)*100); *fID = 0; return; break; } (*fID)++; } if(*sID == 7) { switch(*fID) { case 1: fieldData[6] = '\0'; strcpy(current->time,fieldData); break; case 2: if(fieldData[0] == 'A') current->signalLock = true; else current->signalLock = false; break; case 3: strcpy(current->latitude,fieldData); break; case 4: current->ns = fieldData[0]; break; case 5: strcpy(current->longitude,fieldData); break; case 6: current->ew = fieldData[0]; break; case 8: current->course = atoi(fieldData); break; case 9: strcpy(current->date,fieldData); break; case 12: *fID = 0; return; break; } (*fID)++; } if(*sID == 0x0F) { switch(*fID) { case 7: current->speed = atol(fieldData); break; case 9: *fID = 0; return; break; } (*fID)++; } }
int getLocationsViafstab() { FILE* fp; char line[512]; int ret = 0; // In this case, we'll first get the partitions we care about (with labels) fp = fopen("/etc/recovery.fstab", "rt"); if (fp == NULL) { LOGE("=> Unable to open /etc/recovery.fstab\n"); return -1; } while (fgets(line, sizeof(line), fp) != NULL) { char mount[32], fstype[32], device[256]; char* pDevice = device; if (line[0] != '/') continue; sscanf(line + 1, "%s %s %s", mount, fstype, device); // Attempt to flip mounts until we find the block device char realDevice[256]; memset(realDevice, 0, sizeof(realDevice)); while (readlink(device, realDevice, sizeof(realDevice)) > 0) { strcpy(device, realDevice); memset(realDevice, 0, sizeof(realDevice)); } if (device[0] != '/') pDevice = NULL; setLocationData(mount, pDevice, pDevice, fstype, 0); } fclose(fp); // We can ignore the results of this call. But if it works, it at least helps get details getSizesViaPartitions(); // Now, let's retrieve base partition sizes if (isEMMCdevice) { fp = __popen("fdisk -l /dev/block/mmcblk0","r"); if (fp == NULL) { LOGE("=> Unable to retrieve partition sizes via fdisk\n"); return -1; } while (fgets(line, sizeof(line), fp) != NULL) { char isBoot[64], device[64], blocks[2][16], *pSizeBlock; unsigned long long size = 0; if (line[0] != '/') continue; sscanf(line, "%s %s %*s %s %s", device, isBoot, blocks[0], blocks[1]); if (isBoot[0] == '*') pSizeBlock = blocks[1]; else pSizeBlock = blocks[0]; // If the block size isn't accurate, don't record it. if (pSizeBlock[strlen(pSizeBlock)-1] == '+') pSizeBlock = NULL; // This could be NULL if we decided the size wasn't accurate if (pSizeBlock) { size = ((unsigned long long) atol(pSizeBlock)) * 1024ULL; } if (size && (setLocationData(NULL, device, NULL, NULL, size) == 0)) { // LOGI(" Mount %s size: %d\n", device, size); } } fclose(fp); } return ret; }
int rrd_xport(int argc, char **argv, int UNUSED(*xsize), time_t *start, time_t *end, /* which time frame do you want ? * will be changed to represent reality */ unsigned long *step, /* which stepsize do you want? * will be changed to represent reality */ unsigned long *col_cnt, /* number of data columns in the result */ char ***legend_v, /* legend entries */ rrd_value_t **data) /* two dimensional array containing the data */ { image_desc_t im; time_t start_tmp=0,end_tmp=0; struct rrd_time_value start_tv, end_tv; char *parsetime_error = NULL; optind = 0; opterr = 0; /* initialize getopt */ rrd_graph_init(&im); parsetime("end-24h", &start_tv); parsetime("now", &end_tv); while (1){ static struct option long_options[] = { {"start", required_argument, 0, 's'}, {"end", required_argument, 0, 'e'}, {"maxrows", required_argument, 0, 'm'}, {"step", required_argument, 0, 261}, {0,0,0,0} }; int option_index = 0; int opt; opt = getopt_long(argc, argv, "s:e:m:", long_options, &option_index); if (opt == EOF) break; switch(opt) { case 261: im.step = atoi(optarg); break; case 's': if ((parsetime_error = parsetime(optarg, &start_tv))) { rrd_set_error( "start time: %s", parsetime_error ); return -1; } break; case 'e': if ((parsetime_error = parsetime(optarg, &end_tv))) { rrd_set_error( "end time: %s", parsetime_error ); return -1; } break; case 'm': im.xsize = atol(optarg); if (im.xsize < 10) { rrd_set_error("maxrows below 10 rows"); return -1; } break; case '?': rrd_set_error("unknown option '%c'", optopt); return -1; } } if (proc_start_end(&start_tv,&end_tv,&start_tmp,&end_tmp) == -1){ return -1; } if (start_tmp < 3600*24*365*10){ rrd_set_error("the first entry to fetch should be after 1980 (%ld)",start_tmp); return -1; } if (end_tmp < start_tmp) { rrd_set_error("start (%ld) should be less than end (%ld)", start_tmp, end_tmp); return -1; } im.start = start_tmp; im.end = end_tmp; im.step = max((long)im.step, (im.end-im.start)/im.xsize); rrd_graph_script(argc,argv,&im,0); if (rrd_test_error()) { im_free(&im); return -1; } if (im.gdes_c == 0){ rrd_set_error("can't make a graph without contents"); im_free(&im); return(-1); } if (rrd_xport_fn(&im, start, end, step, col_cnt, legend_v, data) == -1){ im_free(&im); return -1; } im_free(&im); return 0; }
int MAIN(int argc, char **argv) { ENGINE *e = NULL; char **args; char *host = NULL, *port = NULL, *path = "/"; char *reqin = NULL, *respin = NULL; char *reqout = NULL, *respout = NULL; char *signfile = NULL, *keyfile = NULL; char *rsignfile = NULL, *rkeyfile = NULL; char *outfile = NULL; int add_nonce = 1, noverify = 0, use_ssl = -1; STACK_OF(CONF_VALUE) *headers = NULL; OCSP_REQUEST *req = NULL; OCSP_RESPONSE *resp = NULL; OCSP_BASICRESP *bs = NULL; X509 *issuer = NULL, *cert = NULL; X509 *signer = NULL, *rsigner = NULL; EVP_PKEY *key = NULL, *rkey = NULL; BIO *acbio = NULL, *cbio = NULL; BIO *derbio = NULL; BIO *out = NULL; int req_timeout = -1; int req_text = 0, resp_text = 0; long nsec = MAX_VALIDITY_PERIOD, maxage = -1; char *CAfile = NULL, *CApath = NULL; X509_STORE *store = NULL; STACK_OF(X509) *sign_other = NULL, *verify_other = NULL, *rother = NULL; char *sign_certfile = NULL, *verify_certfile = NULL, *rcertfile = NULL; unsigned long sign_flags = 0, verify_flags = 0, rflags = 0; int ret = 1; int accept_count = -1; int badarg = 0; int i; int ignore_err = 0; STACK_OF(OPENSSL_STRING) *reqnames = NULL; STACK_OF(OCSP_CERTID) *ids = NULL; X509 *rca_cert = NULL; char *ridx_filename = NULL; char *rca_filename = NULL; CA_DB *rdb = NULL; int nmin = 0, ndays = -1; const EVP_MD *cert_id_md = NULL; if (bio_err == NULL) bio_err = BIO_new_fp(OPENSSL_TYPE__FILE_STDERR, BIO_NOCLOSE); if (!load_config(bio_err, NULL)) goto end; SSL_load_error_strings(); OpenSSL_add_ssl_algorithms(); args = argv + 1; reqnames = sk_OPENSSL_STRING_new_null(); ids = sk_OCSP_CERTID_new_null(); while (!badarg && *args && *args[0] == '-') { if (!TINYCLR_SSL_STRCMP(*args, "-out")) { if (args[1]) { args++; outfile = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-timeout")) { if (args[1]) { args++; req_timeout = atol(*args); if (req_timeout < 0) { BIO_printf(bio_err, "Illegal timeout value %s\n", *args); badarg = 1; } } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-url")) { if (args[1]) { args++; if (!OCSP_parse_url(*args, &host, &port, &path, &use_ssl)) { BIO_printf(bio_err, "Error parsing URL\n"); badarg = 1; } } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-host")) { if (args[1]) { args++; host = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-port")) { if (args[1]) { args++; port = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-header")) { if (args[1] && args[2]) { if (!X509V3_add_value(args[1], args[2], &headers)) goto end; args += 2; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-ignore_err")) ignore_err = 1; else if (!TINYCLR_SSL_STRCMP(*args, "-noverify")) noverify = 1; else if (!TINYCLR_SSL_STRCMP(*args, "-nonce")) add_nonce = 2; else if (!TINYCLR_SSL_STRCMP(*args, "-no_nonce")) add_nonce = 0; else if (!TINYCLR_SSL_STRCMP(*args, "-resp_no_certs")) rflags |= OCSP_NOCERTS; else if (!TINYCLR_SSL_STRCMP(*args, "-resp_key_id")) rflags |= OCSP_RESPID_KEY; else if (!TINYCLR_SSL_STRCMP(*args, "-no_certs")) sign_flags |= OCSP_NOCERTS; else if (!TINYCLR_SSL_STRCMP(*args, "-no_signature_verify")) verify_flags |= OCSP_NOSIGS; else if (!TINYCLR_SSL_STRCMP(*args, "-no_cert_verify")) verify_flags |= OCSP_NOVERIFY; else if (!TINYCLR_SSL_STRCMP(*args, "-no_chain")) verify_flags |= OCSP_NOCHAIN; else if (!TINYCLR_SSL_STRCMP(*args, "-no_cert_checks")) verify_flags |= OCSP_NOCHECKS; else if (!TINYCLR_SSL_STRCMP(*args, "-no_explicit")) verify_flags |= OCSP_NOEXPLICIT; else if (!TINYCLR_SSL_STRCMP(*args, "-trust_other")) verify_flags |= OCSP_TRUSTOTHER; else if (!TINYCLR_SSL_STRCMP(*args, "-no_intern")) verify_flags |= OCSP_NOINTERN; else if (!TINYCLR_SSL_STRCMP(*args, "-text")) { req_text = 1; resp_text = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-req_text")) req_text = 1; else if (!TINYCLR_SSL_STRCMP(*args, "-resp_text")) resp_text = 1; else if (!TINYCLR_SSL_STRCMP(*args, "-reqin")) { if (args[1]) { args++; reqin = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-respin")) { if (args[1]) { args++; respin = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-signer")) { if (args[1]) { args++; signfile = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP (*args, "-VAfile")) { if (args[1]) { args++; verify_certfile = *args; verify_flags |= OCSP_TRUSTOTHER; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-sign_other")) { if (args[1]) { args++; sign_certfile = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-verify_other")) { if (args[1]) { args++; verify_certfile = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP (*args, "-CAfile")) { if (args[1]) { args++; CAfile = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP (*args, "-CApath")) { if (args[1]) { args++; CApath = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP (*args, "-validity_period")) { if (args[1]) { args++; nsec = atol(*args); if (nsec < 0) { BIO_printf(bio_err, "Illegal validity period %s\n", *args); badarg = 1; } } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP (*args, "-status_age")) { if (args[1]) { args++; maxage = atol(*args); if (maxage < 0) { BIO_printf(bio_err, "Illegal validity age %s\n", *args); badarg = 1; } } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-signkey")) { if (args[1]) { args++; keyfile = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-reqout")) { if (args[1]) { args++; reqout = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-respout")) { if (args[1]) { args++; respout = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-path")) { if (args[1]) { args++; path = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-issuer")) { if (args[1]) { args++; X509_free(issuer); issuer = load_cert(bio_err, *args, FORMAT_PEM, NULL, e, "issuer certificate"); if(!issuer) goto end; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP (*args, "-cert")) { if (args[1]) { args++; X509_free(cert); cert = load_cert(bio_err, *args, FORMAT_PEM, NULL, e, "certificate"); if(!cert) goto end; if (!cert_id_md) cert_id_md = EVP_sha1(); if(!add_ocsp_cert(&req, cert, cert_id_md, issuer, ids)) goto end; if(!sk_OPENSSL_STRING_push(reqnames, *args)) goto end; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-serial")) { if (args[1]) { args++; if (!cert_id_md) cert_id_md = EVP_sha1(); if(!add_ocsp_serial(&req, *args, cert_id_md, issuer, ids)) goto end; if(!sk_OPENSSL_STRING_push(reqnames, *args)) goto end; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-index")) { if (args[1]) { args++; ridx_filename = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-CA")) { if (args[1]) { args++; rca_filename = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP (*args, "-nmin")) { if (args[1]) { args++; nmin = atol(*args); if (nmin < 0) { BIO_printf(bio_err, "Illegal update period %s\n", *args); badarg = 1; } } if (ndays == -1) ndays = 0; else badarg = 1; } else if (!TINYCLR_SSL_STRCMP (*args, "-nrequest")) { if (args[1]) { args++; accept_count = atol(*args); if (accept_count < 0) { BIO_printf(bio_err, "Illegal accept count %s\n", *args); badarg = 1; } } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP (*args, "-ndays")) { if (args[1]) { args++; ndays = atol(*args); if (ndays < 0) { BIO_printf(bio_err, "Illegal update period %s\n", *args); badarg = 1; } } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-rsigner")) { if (args[1]) { args++; rsignfile = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-rkey")) { if (args[1]) { args++; rkeyfile = *args; } else badarg = 1; } else if (!TINYCLR_SSL_STRCMP(*args, "-rother")) { if (args[1]) { args++; rcertfile = *args; } else badarg = 1; } else if ((cert_id_md = EVP_get_digestbyname((*args)+1))==NULL) { badarg = 1; } args++; } /* Have we anything to do? */ if (!req && !reqin && !respin && !(port && ridx_filename)) badarg = 1; if (badarg) { BIO_printf (bio_err, "OCSP utility\n"); BIO_printf (bio_err, "Usage ocsp [options]\n"); BIO_printf (bio_err, "where options are\n"); BIO_printf (bio_err, "-out file output filename\n"); BIO_printf (bio_err, "-issuer file issuer certificate\n"); BIO_printf (bio_err, "-cert file certificate to check\n"); BIO_printf (bio_err, "-serial n serial number to check\n"); BIO_printf (bio_err, "-signer file certificate to sign OCSP request with\n"); BIO_printf (bio_err, "-signkey file private key to sign OCSP request with\n"); BIO_printf (bio_err, "-sign_other file additional certificates to include in signed request\n"); BIO_printf (bio_err, "-no_certs don't include any certificates in signed request\n"); BIO_printf (bio_err, "-req_text print text form of request\n"); BIO_printf (bio_err, "-resp_text print text form of response\n"); BIO_printf (bio_err, "-text print text form of request and response\n"); BIO_printf (bio_err, "-reqout file write DER encoded OCSP request to \"file\"\n"); BIO_printf (bio_err, "-respout file write DER encoded OCSP reponse to \"file\"\n"); BIO_printf (bio_err, "-reqin file read DER encoded OCSP request from \"file\"\n"); BIO_printf (bio_err, "-respin file read DER encoded OCSP reponse from \"file\"\n"); BIO_printf (bio_err, "-nonce add OCSP nonce to request\n"); BIO_printf (bio_err, "-no_nonce don't add OCSP nonce to request\n"); BIO_printf (bio_err, "-url URL OCSP responder URL\n"); BIO_printf (bio_err, "-host host:n send OCSP request to host on port n\n"); BIO_printf (bio_err, "-path path to use in OCSP request\n"); BIO_printf (bio_err, "-CApath dir trusted certificates directory\n"); BIO_printf (bio_err, "-CAfile file trusted certificates file\n"); BIO_printf (bio_err, "-VAfile file validator certificates file\n"); BIO_printf (bio_err, "-validity_period n maximum validity discrepancy in seconds\n"); BIO_printf (bio_err, "-status_age n maximum status age in seconds\n"); BIO_printf (bio_err, "-noverify don't verify response at all\n"); BIO_printf (bio_err, "-verify_other file additional certificates to search for signer\n"); BIO_printf (bio_err, "-trust_other don't verify additional certificates\n"); BIO_printf (bio_err, "-no_intern don't search certificates contained in response for signer\n"); BIO_printf (bio_err, "-no_signature_verify don't check signature on response\n"); BIO_printf (bio_err, "-no_cert_verify don't check signing certificate\n"); BIO_printf (bio_err, "-no_chain don't chain verify response\n"); BIO_printf (bio_err, "-no_cert_checks don't do additional checks on signing certificate\n"); BIO_printf (bio_err, "-port num port to run responder on\n"); BIO_printf (bio_err, "-index file certificate status index file\n"); BIO_printf (bio_err, "-CA file CA certificate\n"); BIO_printf (bio_err, "-rsigner file responder certificate to sign responses with\n"); BIO_printf (bio_err, "-rkey file responder key to sign responses with\n"); BIO_printf (bio_err, "-rother file other certificates to include in response\n"); BIO_printf (bio_err, "-resp_no_certs don't include any certificates in response\n"); BIO_printf (bio_err, "-nmin n number of minutes before next update\n"); BIO_printf (bio_err, "-ndays n number of days before next update\n"); BIO_printf (bio_err, "-resp_key_id identify reponse by signing certificate key ID\n"); BIO_printf (bio_err, "-nrequest n number of requests to accept (default unlimited)\n"); BIO_printf (bio_err, "-<dgst alg> use specified digest in the request"); goto end; } if(outfile) out = BIO_new_file(outfile, "w"); else out = BIO_new_fp(OPENSSL_TYPE__FILE_STDOUT, BIO_NOCLOSE); if(!out) { BIO_printf(bio_err, "Error opening output file\n"); goto end; } if (!req && (add_nonce != 2)) add_nonce = 0; if (!req && reqin) { derbio = BIO_new_file(reqin, "rb"); if (!derbio) { BIO_printf(bio_err, "Error Opening OCSP request file\n"); goto end; } req = d2i_OCSP_REQUEST_bio(derbio, NULL); BIO_free(derbio); if(!req) { BIO_printf(bio_err, "Error reading OCSP request\n"); goto end; } } if (!req && port) { acbio = init_responder(port); if (!acbio) goto end; } if (rsignfile && !rdb) { if (!rkeyfile) rkeyfile = rsignfile; rsigner = load_cert(bio_err, rsignfile, FORMAT_PEM, NULL, e, "responder certificate"); if (!rsigner) { BIO_printf(bio_err, "Error loading responder certificate\n"); goto end; } rca_cert = load_cert(bio_err, rca_filename, FORMAT_PEM, NULL, e, "CA certificate"); if (rcertfile) { rother = load_certs(bio_err, rcertfile, FORMAT_PEM, NULL, e, "responder other certificates"); if (!rother) goto end; } rkey = load_key(bio_err, rkeyfile, FORMAT_PEM, 0, NULL, NULL, "responder private key"); if (!rkey) goto end; } if(acbio) BIO_printf(bio_err, "Waiting for OCSP client connections...\n"); redo_accept: if (acbio) { if (!do_responder(&req, &cbio, acbio, port)) goto end; if (!req) { resp = OCSP_response_create(OCSP_RESPONSE_STATUS_MALFORMEDREQUEST, NULL); send_ocsp_response(cbio, resp); goto done_resp; } } if (!req && (signfile || reqout || host || add_nonce || ridx_filename)) { BIO_printf(bio_err, "Need an OCSP request for this operation!\n"); goto end; } if (req && add_nonce) OCSP_request_add1_nonce(req, NULL, -1); if (signfile) { if (!keyfile) keyfile = signfile; signer = load_cert(bio_err, signfile, FORMAT_PEM, NULL, e, "signer certificate"); if (!signer) { BIO_printf(bio_err, "Error loading signer certificate\n"); goto end; } if (sign_certfile) { sign_other = load_certs(bio_err, sign_certfile, FORMAT_PEM, NULL, e, "signer certificates"); if (!sign_other) goto end; } key = load_key(bio_err, keyfile, FORMAT_PEM, 0, NULL, NULL, "signer private key"); if (!key) goto end; if (!OCSP_request_sign(req, signer, key, NULL, sign_other, sign_flags)) { BIO_printf(bio_err, "Error signing OCSP request\n"); goto end; } } if (req_text && req) OCSP_REQUEST_print(out, req, 0); if (reqout) { derbio = BIO_new_file(reqout, "wb"); if(!derbio) { BIO_printf(bio_err, "Error opening file %s\n", reqout); goto end; } i2d_OCSP_REQUEST_bio(derbio, req); BIO_free(derbio); } if (ridx_filename && (!rkey || !rsigner || !rca_cert)) { BIO_printf(bio_err, "Need a responder certificate, key and CA for this operation!\n"); goto end; } if (ridx_filename && !rdb) { rdb = load_index(ridx_filename, NULL); if (!rdb) goto end; if (!index_index(rdb)) goto end; } if (rdb) { i = make_ocsp_response(&resp, req, rdb, rca_cert, rsigner, rkey, rother, rflags, nmin, ndays); if (cbio) send_ocsp_response(cbio, resp); } else if (host) { #ifndef OPENSSL_NO_SOCK resp = process_responder(bio_err, req, host, path, port, use_ssl, headers, req_timeout); if (!resp) goto end; #else BIO_printf(bio_err, "Error creating connect BIO - sockets not supported.\n"); goto end; #endif } else if (respin) { derbio = BIO_new_file(respin, "rb"); if (!derbio) { BIO_printf(bio_err, "Error Opening OCSP response file\n"); goto end; } resp = d2i_OCSP_RESPONSE_bio(derbio, NULL); BIO_free(derbio); if(!resp) { BIO_printf(bio_err, "Error reading OCSP response\n"); goto end; } } else { ret = 0; goto end; } done_resp: if (respout) { derbio = BIO_new_file(respout, "wb"); if(!derbio) { BIO_printf(bio_err, "Error opening file %s\n", respout); goto end; } i2d_OCSP_RESPONSE_bio(derbio, resp); BIO_free(derbio); } i = OCSP_response_status(resp); if (i != OCSP_RESPONSE_STATUS_SUCCESSFUL) { BIO_printf(out, "Responder Error: %s (%d)\n", OCSP_response_status_str(i), i); if (ignore_err) goto redo_accept; ret = 0; goto end; } if (resp_text) OCSP_RESPONSE_print(out, resp, 0); /* If running as responder don't verify our own response */ if (cbio) { if (accept_count > 0) accept_count--; /* Redo if more connections needed */ if (accept_count) { BIO_free_all(cbio); cbio = NULL; OCSP_REQUEST_free(req); req = NULL; OCSP_RESPONSE_free(resp); resp = NULL; goto redo_accept; } goto end; } if (!store) store = setup_verify(bio_err, CAfile, CApath); if (!store) goto end; if (verify_certfile) { verify_other = load_certs(bio_err, verify_certfile, FORMAT_PEM, NULL, e, "validator certificate"); if (!verify_other) goto end; } bs = OCSP_response_get1_basic(resp); if (!bs) { BIO_printf(bio_err, "Error parsing response\n"); goto end; } if (!noverify) { if (req && ((i = OCSP_check_nonce(req, bs)) <= 0)) { if (i == -1) BIO_printf(bio_err, "WARNING: no nonce in response\n"); else { BIO_printf(bio_err, "Nonce Verify error\n"); goto end; } } i = OCSP_basic_verify(bs, verify_other, store, verify_flags); if (i < 0) i = OCSP_basic_verify(bs, NULL, store, 0); if(i <= 0) { BIO_printf(bio_err, "Response Verify Failure\n"); ERR_print_errors(bio_err); } else BIO_printf(bio_err, "Response verify OK\n"); } if (!print_ocsp_summary(out, bs, req, reqnames, ids, nsec, maxage)) goto end; ret = 0; end: ERR_print_errors(bio_err); X509_free(signer); X509_STORE_free(store); EVP_PKEY_free(key); EVP_PKEY_free(rkey); X509_free(issuer); X509_free(cert); X509_free(rsigner); X509_free(rca_cert); free_index(rdb); BIO_free_all(cbio); BIO_free_all(acbio); BIO_free(out); OCSP_REQUEST_free(req); OCSP_RESPONSE_free(resp); OCSP_BASICRESP_free(bs); sk_OPENSSL_STRING_free(reqnames); sk_OCSP_CERTID_free(ids); sk_X509_pop_free(sign_other, X509_free); sk_X509_pop_free(verify_other, X509_free); sk_CONF_VALUE_pop_free(headers, X509V3_conf_free); if (use_ssl != -1) { OPENSSL_free(host); OPENSSL_free(port); OPENSSL_free(path); } OPENSSL_EXIT(ret); }
int main (int argc, char **argv) { jack_client_t *client; jack_thread_info_t thread_info; jack_status_t jstat; int c; memset(&thread_info, 0, sizeof(thread_info)); thread_info.channels = 2; thread_info.delay = 100000; thread_info.format = 0; thread_info.iecmult = 2.0; thread_info.outfd = NULL; thread_info.address = "127.0.0.1"; thread_info.port = 7770; thread_info.message = "/1/fader1"; const char *optstring = "hqpjiomx:d:f:V"; struct option long_options[] = { { "help", no_argument, 0, 'h' }, { "json", no_argument, 0, 'j' }, { "iec268", required_argument, 0, 'i' }, { "file", required_argument, 0, 'f' }, { "delay", required_argument, 0, 'd' }, { "peakhold", required_argument, 0, 'p' }, { "osc", required_argument, 0, 'o' }, { "port", required_argument, 0, 'x' }, { "message", required_argument, 0, 'm' }, { "quiet", no_argument, 0, 'q' }, { "version", no_argument, 0, 'V' }, { 0, 0, 0, 0 } }; int option_index; while ((c = getopt_long(argc, argv, optstring, long_options, &option_index)) != -1) { switch (c) { case 'h': usage(argv[0], 0); break; case 'q': want_quiet = 1; break; case 'i': thread_info.format|=2; thread_info.iecmult = atof(optarg)/100.0; break; case 'j': thread_info.format|=4; break; case 'p': thread_info.format|=8; break; case 'f': if (thread_info.outfd) fclose(thread_info.outfd); thread_info.outfd = fopen(optarg, "w"); break; case 'd': if (atol(optarg) < 0 || atol(optarg) > 60000) fprintf(stderr, "delay: time out of bounds.\n"); else thread_info.delay = 1000*atol(optarg); break; case 'm': thread_info.message = optarg; break; case 'o': thread_info.address = optarg; break; case 'x': thread_info.port = atoi(optarg); break; case 'V': printf ("%s %s\n\n",argv[0], VERSION); printf( "Copyright (C) 2012 Robin Gareus <*****@*****.**>\n" "This is free software; see the source for copying conditions. There is NO\n" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n" ); break; default: fprintf(stderr, "invalid argument.\n"); usage(argv[0], 0); break; } } if (!thread_info.outfd) { thread_info.outfd=stdout; thread_info.format|=1; } if (argc <= optind) { fprintf(stderr, "At least one port/audio-channel must be given.\n"); usage(argv[0], 1); } /* set up JACK client */ if ((client = jack_client_open("jackpeak", JackNoStartServer, &jstat)) == 0) { fprintf(stderr, "Can not connect to JACK.\n"); exit(1); } thread_info.client = client; thread_info.can_process = 0; thread_info.channels = argc - optind; jack_set_process_callback(client, process, &thread_info); jack_on_shutdown(client, jack_shutdown, &thread_info); jack_set_buffer_size_callback(client, jack_bufsiz_cb, &thread_info); if (jack_activate(client)) { fprintf(stderr, "cannot activate client"); } setup_ports(thread_info.channels, &argv[optind], &thread_info); /* set up i/o thread */ pthread_create(&thread_info.thread_id, NULL, io_thread, &thread_info); #ifndef _WIN32 signal (SIGHUP, catchsig); #endif thread_info.samplerate = jack_get_sample_rate(thread_info.client); if (!want_quiet) { fprintf(stderr, "%i channel%s, @%iSPS.\naddress: %s:%i\nmessage: %s\n", thread_info.channels, (thread_info.channels>1)?"s":"", thread_info.samplerate, thread_info.address, thread_info.port, thread_info.message ); } /* all systems go - run the i/o thread */ thread_info.can_capture = 1; pthread_join(thread_info.thread_id, NULL); if (thread_info.outfd != stdout) fclose(thread_info.outfd); jack_client_close(client); cleanup(&thread_info); return(0); }
int parseCommandLine(int argc, char** argv) { int i = 0; for(i=1; i<argc; i++) { if( !strncmp(argv[i], "-p", 2) ) { param_port = argv[i] + 3; } else if ( !strncmp(argv[i], "-l", 2) ) { param_limit = atoi(argv[i] + 3); } else if ( !strncmp(argv[i], "-t", 2) ) { param_speed = atol(argv[i] + 3); } else if ( !strncmp(argv[i], "-rH", 3) ) { param_read_hex = argv[i] + 4; } else if ( !strncmp(argv[i], "-rB", 3) ) { param_read_bin = argv[i] + 4; } else if ( !strncmp(argv[i], "-wH", 3) ) { if (param_write_bin != NULL) { printf("can write only one file\n"); exit(-1); } param_write_hex = argv[i] + 4; } else if ( !strncmp(argv[i], "-wB", 3) ) { if (param_write_hex != NULL) { printf("can write only one file\n"); exit(-1); } param_write_bin = argv[i] + 4; } else if ( !strcmp(argv[i], "-verbose") ) { verbose = 1; } else if ( !strcmp(argv[i], "-read") ) { cmd_read = 1; } else if ( !strcmp(argv[i], "-erase") ) { cmd_erase = 1; } else if ( !strcmp(argv[i], "-status") ) { cmd_status = 1; } else if ( !strcmp(argv[i], "-write") ) { cmd_write = 1; } else if ( !strcmp(argv[i], "-run") ) { cmd_run = 1; } else if ( !strcmp(argv[i], "-boot") ) { cmd_boot = 1; } else if ( !strcmp(argv[i], "--help") ) { argc = 1; //that's not pretty, but it works :) break; } else { fprintf(stderr, "Unknown parameter '%s'\n", argv[i]); return -1; } } if( argc == 1 ) { //print usage //printf("%s\n", argv[0]); printf("parameters:\n"); printf("-p:PORT - port of Logic Sniffer, needs to be specified\n\n"); printf("-t:SPEED - sets speed of the serial port\n"); printf("-wH:FILE - HEX file to be uploaded to PUMP\n"); printf("-wB:FILE - BIN file to be uploaded to PUMP\n"); printf("-rH:FILE - HEX file to be downloaded from PUMP\n"); printf("-rB:FILE - BIN file to be downloaded from PUMP\n"); // printf("-l:0 - send only bytes from file (0-padded) - write only\n"); printf("-l:X - send only first X paged \n"); // printf("-verbode - be noisy\n"); printf("commands:\n"); printf("-erase - erases Flash\n"); printf("-write - writes data to Flash\n"); printf("-read - reads data from Flash\n"); printf("-run - enter run mode after finished\n"); printf("-status - get OLS stauts\n"); printf("-boot - enter bootloader mode - ignore other commands\n"); printf("\n\n"); printf("When no command specified, program will check FW version, and Flash ID\n\n"); printf("Usage examples:\n"); printf("To read Flash to HEX file 'ols.hex' from OLS on COM2:\n"); printf("ols-loader -p:COM2 -rH:ols.hex -read\n"); printf("To erase and write flash, data in BIN file 'ols.bin', OLS on COM2:\n"); printf("ols-loader -p:COM2 -wB:old.hex -write -erase\n"); printf("To get status, and jump to run mode, OLS on COM2:\n"); printf("ols-loader -p:COM2 -run -status\n"); return 0; } return 1; }
/* * Read list of areas from VARDIR/AREAS file. * * Format: * AREA NEWSGROUP [-options] * * Options: * -a Z:N/F.P use alternate address for this area * -z ZONE use AKA for zone Z for this area * -o ORIGIN use alternate origin line for this area * -d DISTRIBUTION use Distribution: DISTRIBUTION for this newsgroup * -l only local xpostings allowed * -x no xpostings allowed * -g no messages from other gates FTN->Usenet * -8 use ISO 8-bit umlauts * -H AREA/NEWSGROUP match entire hierarchy, names are * translated automatically * -R LVL ^ARFC header level * -m MAXSIZE set MaxMsgSize for this area (0 = infinity) * -L LIMITSIZE set LimitMsgSize for this area (0 = infinity) * -X "Xtra: xyz" add extra RFC header (multiple -X are allowed) * -8 convert to 8bit iso-8859-1 characters * -Q convert to quoted-printable iso-8859-1 characters * -C def:in:out charset mapping setting */ Area *areas_parse_line(char *buf) { Area *p; char *a, *g, *o; a = xstrtok(buf, " \t"); /* FTN area */ g = xstrtok(NULL, " \t"); /* Newsgroup */ if(a==NULL || g==NULL) return NULL; /* Check for include command */ if(strieq(a, "include")) { areas_do_file(g); return NULL; } /* Create new areas entry */ p = (Area *)xmalloc(sizeof(Area)); p->next = NULL; p->area = strsave(a); p->group = strsave(g); p->zone = cf_defzone(); node_invalid(&p->addr); p->origin = NULL; p->distribution = NULL; p->flags = 0; p->rfc_lvl = -1; p->maxsize = -1; p->limitsize = -1; tl_init(&p->x_hdr); p->charset = NULL; /* Options */ for(o=xstrtok(NULL, " \t"); o; o=xstrtok(NULL, " \t") ) { if(!strcmp(o, "-a")) /* -a Z:N/F.P */ if((o = xstrtok(NULL, " \t"))) asc_to_node(o, &p->addr, FALSE); if(!strcmp(o, "-z")) /* -z ZONE */ if((o = xstrtok(NULL, " \t"))) p->zone = atoi(o); if(!strcmp(o, "-o")) /* -o ORIGIN */ if((o = xstrtok(NULL, " \t"))) p->origin = strsave(o); if(!strcmp(o, "-d")) /* -d DISTRIBUTION */ if((o = xstrtok(NULL, " \t"))) p->distribution = strsave(o); if(!strcmp(o, "-l")) p->flags |= AREA_LOCALXPOST; if(!strcmp(o, "-x")) p->flags |= AREA_NOXPOST; if(!strcmp(o, "-g")) p->flags |= AREA_NOGATE; if(!strcmp(o, "-H")) p->flags |= AREA_HIERARCHY; if(!strcmp(o, "-!")) p->flags |= AREA_NO; if(!strcmp(o, "-R")) /* -R lvl */ if((o = xstrtok(NULL, " \t"))) p->rfc_lvl = atoi(o); if(!strcmp(o, "-m")) /* -m MAXMSGSIZE */ if((o = xstrtok(NULL, " \t"))) p->maxsize = atol(o); if(!strcmp(o, "-L")) /* -L LIMITMSGSIZE */ if((o = xstrtok(NULL, " \t"))) p->limitsize = atol(o); if(!strcmp(o, "-X")) /* -X "Xtra: xyz" */ if((o = xstrtok(NULL, " \t"))) tl_append(&p->x_hdr, o); if(!strcmp(o, "-8")) p->flags |= AREA_8BIT; if(!strcmp(o, "-Q")) p->flags |= AREA_QP; if(!strcmp(o, "-C")) /* -C DEF:IN:OUT */ if((o = xstrtok(NULL, " \t"))) p->charset = strsave(o); } /* Value not set or error */ if(p->maxsize < 0) p->maxsize = areas_def_maxsize; if(p->limitsize < 0) p->limitsize = areas_def_limitsize; debug(15, "areas: %s %s Z=%d A=%s R=%d S=%ld", p->area, p->group, p->zone, p->addr.zone!=-1 ? znfp1(&p->addr) : "", p->rfc_lvl, p->maxsize ); return p; }
static int fill_ip_info(const char *interface, char *ipaddr, char *gateway, uint32_t *prefixLength, char *dns[], char *server, uint32_t *lease, char *vendorInfo, char *domain, char *mtu) { char prop_name[PROPERTY_KEY_MAX]; char prop_value[PROPERTY_VALUE_MAX]; /* Interface name after converting p2p0-p2p0-X to p2p to reuse system properties */ char p2p_interface[MAX_INTERFACE_LENGTH]; int x; get_p2p_interface_replacement(interface, p2p_interface); snprintf(prop_name, sizeof(prop_name), "%s.%s.ipaddress", DHCP_PROP_NAME_PREFIX, p2p_interface); property_get(prop_name, ipaddr, NULL); snprintf(prop_name, sizeof(prop_name), "%s.%s.gateway", DHCP_PROP_NAME_PREFIX, p2p_interface); property_get(prop_name, gateway, NULL); snprintf(prop_name, sizeof(prop_name), "%s.%s.server", DHCP_PROP_NAME_PREFIX, p2p_interface); property_get(prop_name, server, NULL); //TODO: Handle IPv6 when we change system property usage if (gateway[0] == '\0' || strncmp(gateway, "0.0.0.0", 7) == 0) { //DHCP server is our best bet as gateway strncpy(gateway, server, PROPERTY_VALUE_MAX); } snprintf(prop_name, sizeof(prop_name), "%s.%s.mask", DHCP_PROP_NAME_PREFIX, p2p_interface); if (property_get(prop_name, prop_value, NULL)) { int p; // this conversion is v4 only, but this dhcp client is v4 only anyway in_addr_t mask = ntohl(inet_addr(prop_value)); // Check netmask is a valid IP address. ntohl gives NONE response (all 1's) for // non 255.255.255.255 inputs. if we get that value check if it is legit.. if (mask == INADDR_NONE && strcmp(prop_value, "255.255.255.255") != 0) { snprintf(errmsg, sizeof(errmsg), "DHCP gave invalid net mask %s", prop_value); return -1; } for (p = 0; p < 32; p++) { if (mask == 0) break; // check for non-contiguous netmask, e.g., 255.254.255.0 if ((mask & 0x80000000) == 0) { snprintf(errmsg, sizeof(errmsg), "DHCP gave invalid net mask %s", prop_value); return -1; } mask = mask << 1; } *prefixLength = p; } for (x=0; dns[x] != NULL; x++) { snprintf(prop_name, sizeof(prop_name), "%s.%s.dns%d", DHCP_PROP_NAME_PREFIX, p2p_interface, x+1); property_get(prop_name, dns[x], NULL); } snprintf(prop_name, sizeof(prop_name), "%s.%s.leasetime", DHCP_PROP_NAME_PREFIX, p2p_interface); if (property_get(prop_name, prop_value, NULL)) { *lease = atol(prop_value); } snprintf(prop_name, sizeof(prop_name), "%s.%s.vendorInfo", DHCP_PROP_NAME_PREFIX, p2p_interface); property_get(prop_name, vendorInfo, NULL); snprintf(prop_name, sizeof(prop_name), "%s.%s.domain", DHCP_PROP_NAME_PREFIX, p2p_interface); property_get(prop_name, domain, NULL); snprintf(prop_name, sizeof(prop_name), "%s.%s.mtu", DHCP_PROP_NAME_PREFIX, p2p_interface); property_get(prop_name, mtu, NULL); return 0; }
long String::toInt(void) const { if (buffer) return atol(buffer); return 0; }
Datum::operator long ( ) { return atol ( sDatum.c_str ( ) ); }
int main(int argc, char **argv) { char *dev = NULL; char errbuf[PCAP_ERRBUF_SIZE]; pcap_t *handle; char *filter_rule = NULL; u_short ss_port = 443; // shadowsocks server port. set it in the argv[3]. struct bpf_program fp; bpf_u_int32 net, mask; if (argc == ARGC_NUM) { dev = argv[1]; filter_rule = argv[2]; ss_port = (u_short)atol(argv[3]); printf("Device: %s\n", dev); printf("Filter rule: %s\n", filter_rule); } else { print_usage(); return -1; } printf("ethernet header len:[%d](14:normal, 16:cooked)\n", ETHERNET_H_LEN); if (pcap_lookupnet(dev, &net, &mask, errbuf) == -1) { printf("Couldn't get netmask for device %s: %s\n", dev, errbuf); net = 0; mask = 0; } printf("init pcap\n"); handle = pcap_open_live(dev, SNAP_LEN, 1, 1000, errbuf); if(handle == NULL) { printf("pcap_open_live dev:[%s] err:[%s]\n", dev, errbuf); printf("init pcap failed\n"); return -1; } printf("init libnet\n"); libnet_t *libnet_handler = start_libnet(dev); if(NULL == libnet_handler) { printf("init libnet failed\n"); return -1; } if (pcap_compile(handle, &fp, filter_rule, 0, net) == -1) { printf("filter rule err:[%s][%s]\n", filter_rule, pcap_geterr(handle)); return -1; } if (pcap_setfilter(handle, &fp) == -1) { printf("set filter failed:[%s][%s]\n", filter_rule, pcap_geterr(handle)); return -1; } while(1) { pcap_loop(handle, 1, got_packet, (u_char *)libnet_handler); } /* cleanup */ pcap_freecode(&fp); pcap_close(handle); libnet_destroy(libnet_handler); return 0; }
static int parse_args(int argc, char * argv[]) { int i, c; long n; while ((c = getopt_long(argc, argv, opt_string, long_options, &i)) != -1) { switch (c) { case 'v': verbose = 1; break; case 'p': report_progress = 1; break; case 'h': help = 1; break; case 'f': if (strlen(optarg) == 0) { printf("invalid root directory\n"); return 1; } benchmark_root_dir = optarg; break; case 'c': n = atol(optarg); if (n <= 32) { printf("cachesize shouldn't be less than 32mb\n"); return 1; } cachesize = n * 1024 * 1024L; break; case 'n': n = atol(optarg); if (n <= 0) { printf("need to operate on at least one file\n"); return 1; } num_files = n; break; case 'd': n = atol(optarg); if (n <= 0) { printf("need at least one file per directory\n"); return 1; } directory_max_children = n; break; case 'm': n = atol(optarg); if (n <= 0) { printf("need to use at least one thread\n"); return 1; } num_threads = n; break; case 'b': n = atol(optarg); if (n <= 0) { printf("io size needs to be > 0\n"); return 1; } iosize = n; break; case 'x': n = atol(optarg); if (n < 0) { printf("number of operations needs to be >= 0.\n" "0 means only open and close files\n"); return 1; } num_operations = n; break; case 0: break; case '?': printf("?\n"); default: return 1; } } return 0; }