static char * getUserDB(void) { char *userdir = getenv("HOME"); char *nssdir = NULL; if (userdir == NULL) { return NULL; } nssdir = PORT_Alloc(strlen(userdir) +sizeof(NSS_USER_PATH1)+sizeof(NSS_USER_PATH2)); if (nssdir == NULL) { return NULL; } PORT_Strcpy(nssdir, userdir); /* verify it exists */ if (!testdir(nssdir)) { PORT_Free(nssdir); return NULL; } PORT_Strcat(nssdir, NSS_USER_PATH1); if (!testdir(nssdir) && mkdir(nssdir, 0760)) { PORT_Free(nssdir); return NULL; } PORT_Strcat(nssdir, NSS_USER_PATH2); if (!testdir(nssdir) && mkdir(nssdir, 0760)) { PORT_Free(nssdir); return NULL; } return nssdir; }
int getFileNum(char *path, int* num) { DIR *db; char filename[128]; int total = 0; struct dirent *p; db = opendir(path); if(db == NULL) return -1; memset(filename,0,128); *num = 0; while ((p=readdir(db))) { if((strcmp(p->d_name,".")==0)||(strcmp(p->d_name,"..")==0)||p->d_name[0] == '.') continue; else { sprintf(filename, "%s/%s", path, p->d_name); if(testdir(filename) == 0) //a file { total ++; printf("%s\n", filename); //printf("%d\n", total); } } } *num = total; //printf("%d\n", *num); closedir(db); return 0; }
int preProc(PicNodeList* pPicNodeList, char* path){ int iResult = -1; int num; //test if the path is a directory if(access(path,F_OK) != 0 || testdir(path) == 0) { printf("[%s] is not a valid directory\n", path); return -1; } if(getFileNum(path, &num) != 0){ printf("Error in getFileNum()\n"); return -1; } pPicNodeList->numOfImgs = num; pPicNodeList->picNode = (PicNode *)malloc(num*sizeof(PicNode)); memset(pPicNodeList->picNode, 0, num*sizeof(PicNode)); if(setPicNodeList(path, pPicNodeList) != 0){ printf("Error in pPicNodeList()\n"); free(pPicNodeList->picNode); return -1; } return 0; }
int setPicNodeList(char *path, PicNodeList* pPicNodeList) { DIR *db; int i=0; char filename[128]; struct dirent *p; db = opendir(path); if(db == NULL)return 0; memset(filename,0,128); while ((p=readdir(db))) { if((strcmp(p->d_name,".")==0)||(strcmp(p->d_name,"..")==0)||p->d_name[0] == '.') continue; else { memset(filename, 0, 128); sprintf(filename, "%s/%s", path, p->d_name); if(testdir(filename) == 0) //a file { memcpy(pPicNodeList->picNode[i].path, filename, strlen(filename)); printf("%s\n", filename); if(computeAvgAndVar(filename, &(pPicNodeList->picNode[i].avg), &(pPicNodeList->picNode[i].var)) != 0){ printf("Error in computeAvgAndVar(), filename[%s]\n", filename); return -1; } i++; } } } closedir(db); return 0; }
/* * put pins in proper sequence */ void pinsort(void) { Pinent *p1, *p2; int d; p1 = &wbuf.pent[0]; p2 = &wbuf.pent[1]; d = testdir(p1, p2, wroute[0]); if(d == 1 || (d == 2 && (testdir(p1, p2, wroute[1]) == 1))){ p1 = &wbuf.pent[1]; p2 = &wbuf.pent[0]; } dirn[0] = testdir(p1, p2, 0); dirn[1] = testdir(p1, p2, 1); pptr[0] = p1; pptr[1] = p2; }
void cleanupTestCase() { { QDir testdir(QDir::tempPath() + QLatin1String("/test_speed")); foreach (const QString &filename, testdir.entryList()) { testdir.remove(filename); } } const QDir temp = QDir(QDir::tempPath()); temp.rmdir(QLatin1String("test_speed")); }
int main(int argc,char **argv,char **envp) { long command_id; char hlr_code[8]; char phone_no[20]; char command_code[8]; char op_code[8]; char imsi_no[32]; char new_phone[20]; char new_imsi[32]; char business_status[8]; struct timeval tt1, tt2; int ret; char inputstr[2048],ss[64]; int i,status,today; char srvip[32]; int srvport; char dbuser[32],dbpswd[32],dbname[32],tname[64]; char logfilename[256],logdir[256]; time_t t; struct tm *tv; char chhlr; int msglen,readlen,headlen,tcplen,bodylen; int transid; char order_fname[256],reply_fname[256],query_fname[256],cfginfo[1024],*p,*d; int line; int ordercode, etm; FILE *cfgfp; char cfgstr[256]; char mgr_user[20], mgr_pswd[20], mgr_term[10]; procname=argv[0]; logfp=NULL; memset(inputstr,0x0,sizeof(inputstr)); for(i=0;i<argc;i++) { strcat(inputstr,argv[i]); strcat(inputstr," "); } if(GenDaemon()<0) { printf("GenDaemon() failed!\n"); exit(1); } signal(SIGTERM,LogOut); signal(SIGPIPE,SIG_IGN); signal(SIGCLD,SIG_IGN); signal(SIGINT,SIG_IGN); memset(hlrcode,0x0,sizeof(hlrcode)); memset(hlrport,0x0,sizeof(hlrport)); memset(dbuser,0x0,sizeof(dbuser)); memset(dbpswd,0x0,sizeof(dbpswd)); memset(dbname,0x0,sizeof(dbname)); memset(logdir,0x0,sizeof(logdir)); while(--argc>0) { if(argv[argc][0]!='-') usage("Incorrect Parameter!"); printf("CMD:%c\n",argv[argc][1]); switch(argv[argc][1]) { case 'H': strncpy(hlrcode,argv[argc]+2,4); break; case 'N': strncpy(hlrport,argv[argc]+2,4); break; case 'U': strncpy(dbuser,argv[argc]+2,30); break; case 'P': strncpy(dbpswd,argv[argc]+2,30); break; case 'S': strncpy(dbname,argv[argc]+2,30); break; case 'L': strncpy(logdir,argv[argc]+2,240); break; case 'V': printf("\n\n version = %s\n\n",VERSION); exit(0); default: usage("Unknow Parameter!"); break; } } printf("hlrcode===%s[%s]~\n",hlrcode,hlrport); if(strlen(hlrcode)!=3) usage("Incorrect parameter [hlrcode]!\n"); if(strlen(hlrport)!=1) usage("Incorrect parameter [hlrport]!\n"); if(strlen(logdir)<1) strcpy(logdir,getenv("LOGDIR")); if(testdir(logdir)) usage("Incorrect parameter [logdir]!"); time(&t); tv=localtime(&t); memset(logfilename,0x0,sizeof(logfilename)); sprintf(logfilename,"%s/%s%04d%02d%02d.%s.%s",logdir, port_type, tv->tm_year+1900,tv->tm_mon+1,tv->tm_mday,hlrcode,hlrport); logfp=fopen(logfilename,"a"); if(logfp==NULL) { printf("can't open %s for LOG!\n",logfilename); exit(1); } fprintf(logfp,"INIT %04d/%02d/%02d %02d:%02d:%02d\n", tv->tm_year+1900,tv->tm_mon+1,tv->tm_mday, tv->tm_hour,tv->tm_min,tv->tm_sec); fprintf(logfp,"%s[%d]\n",inputstr,argc); fflush(logfp); today=tv->tm_mday; /************ 获取连接配置信息 ********************/ if(get_hlr_cfg(hlrcode, atoi(hlrport), gsmip, &gsmport, gsmuser, gsmpswd, order_fname,reply_fname,query_fname, srvip, &commport, NULL, mgr_user, mgr_pswd, mgr_term) != 0) { fprintf(logfp,"get_cfg_filename(%s) failed!\n",hlrcode); fclose(logfp); exit(1); } /************ GET ORDER INFO ***********************/ cfgfp=fopen(order_fname,"r"); if(cfgfp==NULL) { fprintf(logfp,"Can't open %s for read[%d]\n",order_fname,errno); fclose(logfp); exit(1); } line=0; memset(cfginfo,0x0,sizeof(cfginfo)); while(fgets(cfginfo,sizeof(cfginfo),cfgfp)) { line++; if(cfginfo[0]=='#' || cfginfo[0]=='\r' || cfginfo[0]=='\n') { memset(cfginfo,0x0,sizeof(cfginfo)); continue; } if(strncmp(cfginfo,"OP",2) || (p=strchr(cfginfo,':'))==NULL) { fprintf(logfp,"Incorrect cfg_info[line=%d]\n",line); fclose(cfgfp); fclose(logfp); exit(1); } orderptr=(struct order_info *)malloc(sizeof(struct order_info)); memset(orderptr,0x0,sizeof(struct order_info)); orderptr->ordercode=atoi(cfginfo+2); strcpy(orderptr->orderinfo,rlspace(p+1)); if(strlen(orderptr->orderinfo)==0 || strlen(orderptr->orderinfo)>1000) { fprintf(logfp,"Incorrect cfg_info[line=%d]\n",line); fclose(cfgfp); fclose(logfp); exit(1); } ordertail=&orderhead; while(ordertail->next) { if(ordertail->next->ordercode==orderptr->ordercode) { fprintf(logfp,"ORDER_CODE[%d] is exists[line=%d]\n", orderptr->ordercode,line); fclose(logfp); fclose(cfgfp); exit(1); } ordertail=ordertail->next; } ordertail->next=orderptr; memset(cfginfo,0x0,sizeof(cfginfo)); } fclose(cfgfp); /*fprintf(logfp,"ORDER INFO:\n"); orderptr=orderhead.next; while(orderptr) { fprintf(logfp,"%06d = [%s]\n",orderptr->ordercode,orderptr->orderinfo); orderptr=orderptr->next; } fflush(logfp);*/ /************ GET REPLY INFO ***********************/ cfgfp=fopen(reply_fname,"r"); if(cfgfp==NULL) { fprintf(logfp,"Can't open %s for read[%d]\n",reply_fname,errno); fclose(logfp); exit(1); } fprintf(logfp,"REPLY INFO:\n"); line=0; memset(cfginfo,0x0,sizeof(cfginfo)); while(fgets(cfginfo,sizeof(cfginfo),cfgfp)) { line++; if(cfginfo[0]=='#' || cfginfo[0]=='\r' || cfginfo[0]=='\n') { memset(cfginfo,0x0,sizeof(cfginfo)); continue; } /*fprintf(logfp,"%s",cfginfo); */ if(strncmp(cfginfo,"RETN:",5) || cfginfo[9]!=':') { fprintf(logfp,"Incorrect cfg_info[line=%d]\n",line); fclose(cfgfp); fclose(logfp); exit(1); } replyptr=(struct reply_info *)malloc(sizeof(struct reply_info)); memset(replyptr,0x0,sizeof(struct reply_info)); replyptr->replycode=atoi(cfginfo+5); p=cfginfo+10; d=replyptr->replyinfo; if(*p!='[' || strchr(p,']')==NULL) { fprintf(logfp,"Incorrect cfg_info[line=%d]\n",line); fclose(cfgfp); fclose(logfp); exit(1); } while(*(++p)!=']') { if(*p=='\\') { p++; switch(*p) { case 'r': *d='\r'; break; case 'n': *d='\n'; break; case 't': *d='\t'; break; default: *d=*p; } } else *d=*p; d++; } if(d==replyptr->replyinfo) { fprintf(logfp,"Incorrect cfg_info[line=%d]\n",line); fclose(cfgfp); fclose(logfp); exit(1); } replyptr->next=replyhead.next; replyhead.next=replyptr; memset(cfginfo,0x0,sizeof(cfginfo)); } fclose(cfgfp); fflush(logfp); /************ GET QUERY INFO ***********************/ ret=get_query_cfg(query_fname); if(ret) { fprintf(logfp,"get_query_cfg()===%d\n",ret); fclose(logfp); exit(1); } /*disp_query_cfg(); */ connid = tcp_connect(srvip, commport); if(connid < 0) { fprintf(logfp,"Incorrect IPADDR in mcfghead[%s]\n",srvip); fclose(logfp); exit(1); } memset(dbuser,0x0,sizeof(dbuser)); memset(dbpswd,0x0,sizeof(dbpswd)); memset(tname,0x0,sizeof(tname)); if(login_server(connid,hlrcode,hlrport, mgr_user, mgr_pswd, mgr_term)) { fprintf(logfp,"login_server() failed!\n"); fclose(logfp); exit(1); } fprintf(logfp,"login_server(%s) success!\n",hlrcode); /*** CONNECT TO HLR ** */ gsmid = tcp_connect(gsmip, gsmport); if(gsmid < 0){ fprintf(logfp, "connect(%s:%d) failed, errno:%d\n", gsmip, gsmport, errno); fclose(logfp); exit(1); } sndid=gsmid; rcvid=gsmid; /*** LOGIN HLR ***/ sprintf(ss, "%s\r\n", gsmuser); ret = sndcmd(sndid, "\nENTER USERNAME < \08 ", ss, strlen(ss), "\nENTER PASSWORD < \08 ", replystr, sizeof(replystr)); if(ret <= 0){ fprintf(logfp, "sndcmd username failed, return:%d\n", ret); fclose(logfp); return 2; } sprintf(ss, "%s\r\n", gsmpswd); ret = sndcmd(sndid, "\nENTER PASSWORD < \08 ", ss, strlen(ss), "\nMAIN LEVEL COMMAND <___>", replystr, sizeof(replystr)); if(ret <= 0){ fprintf(logfp, "sndcmd password failed, return:%d\n", ret); fclose(logfp); return 3; } fprintf(logfp,"LOGIN HLR,SUCCESS![%ld]\n",time(NULL)); fflush(logfp); /*if(1) exit(0); */ /************** GET AN ORDER AND DEAL ********************/ waitnum=0; transid=2; cmdreqptr=(struct cmd_data_req *)tcpbuf.data; cmdreqptr->type=ONLY_GET; while(1) { if(send_req(connid,DECRYPT,TX_END,GETORDER,transid++,CMDREQLEN)<0) { fprintf(logfp,"send_req(%d) failed[%d]\n",connid,errno); break; } readlen=readnet(connid,(char *)&tcpbuf,8); if(readlen!=8) { fprintf(logfp,"readnet(%d,0,8)=%d failed\n",connid,readlen); break; } if(strncmp(tcpbuf.flag,MSGFLAG,4)) { tcpbuf.msglen[0]=0; fprintf(logfp,"MSGFLAG is incorrect [%s]!\n",tcpbuf.flag); break; } msglen=get_length(tcpbuf.msglen,4); if(msglen<32) { fprintf(logfp,"MSGLEN is incorrect[%04d]\n",msglen); break; } readlen=readnet(connid,(char *)&tcpbuf+8,msglen-8); if(readlen!=msglen-8) { fprintf(logfp,"readnet(%d,8,%d)=%d failed!\n",connid,msglen-8,readlen); break; } printf("RCV:%s~\n",(char *)&tcpbuf); ordercode = 0; etm = 0; ret = exec_cmd( &ordercode, &etm); fprintf(logfp, "EXEC_CMD===========%d ordercode=%04d tm=%dms\n",ret, ordercode, etm); if(ret<0) { fprintf(logfp,"exec_cmd() failed!\n"); break; } time(&t); tv=localtime(&t); if(today!=tv->tm_mday) { fclose(logfp); memset(logfilename,0x0,sizeof(logfilename)); sprintf(logfilename,"%s/%s%04d%02d%02d.%s.%s",logdir, port_type, tv->tm_year+1900,tv->tm_mon+1,tv->tm_mday,hlrcode,hlrport); logfp=fopen(logfilename,"a"); if(logfp==NULL) { printf("can't open %s for LOG!\n",logfilename); exit(1); } today=tv->tm_mday; } fflush(logfp); } fclose(logfp); close(connid); return 0; }
int main(int argc,char **argv,char **envp) { long command_id; char hlr_code[8]; char phone_no[20]; char command_code[8]; char op_code[8]; char imsi_no[32]; char new_phone[20]; char new_imsi[32]; char business_status[8]; char mgr_user[20], mgr_pswd[20], mgr_term[10]; int ret; char inputstr[2048],ss[64]; int i,status,today; char srvip[32]; int srvport; char logfilename[256],logdir[256]; time_t t; struct tm *tv; char chhlr; int msglen,readlen,headlen,tcplen,bodylen; int transid; char order_fname[256],reply_fname[256],query_fname[256],cfginfo[1024],*p,*d; int line; FILE *cfgfp; char cfgstr[256]; procname=argv[0]; logfp=NULL; memset(inputstr,0x0,sizeof(inputstr)); for(i=0;i<argc;i++) { strcat(inputstr,argv[i]); strcat(inputstr," "); } if(GenDaemon()<0) { printf("GenDaemon() failed!\n"); exit(1); } signal(SIGTERM,LogOut); signal(SIGPIPE,SIG_IGN); signal(SIGCLD,SIG_IGN); signal(SIGINT,SIG_IGN); memset(hlrcode,0x0,sizeof(hlrcode)); memset(hlrport,0x0,sizeof(hlrport)); memset(logdir,0x0,sizeof(logdir)); while(--argc>0) { if(argv[argc][0]!='-') usage("Incorrect Parameter!"); printf("CMD:%c\n",argv[argc][1]); switch(argv[argc][1]) { case 'H': strncpy(hlrcode,argv[argc]+2,4); break; case 'N': strncpy(hlrport,argv[argc]+2,4); break; case 'L': strncpy(logdir,argv[argc]+2,240); break; case 'V': printf("\n\n version = %s\n\n",VERSION); exit(0); case 't': case 'T': test_flag = 1; break; default: usage("Unknow Parameter!"); break; } } printf("hlrcode===%s[%s]~\n",hlrcode,hlrport); if(strlen(hlrcode)!=3) usage("Incorrect parameter [hlrcode]!\n"); if(strlen(hlrport)!=1) usage("Incorrect parameter [hlrport]!\n"); if(strlen(logdir)<1) strcpy(logdir,getenv("LOGDIR")); if(testdir(logdir)) usage("Incorrect parameter [logdir]!"); time(&t); tv=localtime(&t); memset(logfilename,0x0,sizeof(logfilename)); sprintf(logfilename,"%s/erc%04d%02d%02d.%s.%s",logdir, tv->tm_year+1900,tv->tm_mon+1,tv->tm_mday,hlrcode,hlrport); logfp=fopen(logfilename,"a"); if(logfp==NULL) { printf("can't open %s for LOG!\n",logfilename); exit(1); } fprintf(logfp,"INIT %04d/%02d/%02d %02d:%02d:%02d\n", tv->tm_year+1900,tv->tm_mon+1,tv->tm_mday, tv->tm_hour,tv->tm_min,tv->tm_sec); fprintf(logfp,"%s[%d]\n",inputstr,argc); fflush(logfp); today=tv->tm_mday; /************ 获取连接配置信息 ********************/ if(get_hlr_cfg(hlrcode, atoi(hlrport), gsmip, &gsmport, gsmuser, gsmpswd, order_fname,reply_fname,query_fname, srvip, &commport, NULL, mgr_user, mgr_pswd, mgr_term) != 0) { fprintf(logfp,"get_cfg_filename(%s) failed!\n",hlrcode); fclose(logfp); exit(1); } /************ GET ORDER INFO ***********************/ cfgfp=fopen(order_fname,"r"); if(cfgfp==NULL) { fprintf(logfp,"Can't open %s for read[%d]\n",order_fname,errno); fclose(logfp); exit(1); } line=0; memset(cfginfo,0x0,sizeof(cfginfo)); while(fgets(cfginfo,sizeof(cfginfo),cfgfp)) { line++; if(cfginfo[0]=='#' || cfginfo[0]=='\r' || cfginfo[0]=='\n') { memset(cfginfo,0x0,sizeof(cfginfo)); continue; } if(strncmp(cfginfo,"OP",2) || (p=strchr(cfginfo,':'))==NULL) { fprintf(logfp,"Incorrect cfg_info[line=%d]\n",line); fclose(cfgfp); fclose(logfp); exit(1); } orderptr=(struct order_info *)malloc(sizeof(struct order_info)); memset(orderptr,0x0,sizeof(struct order_info)); orderptr->ordercode=atoi(cfginfo+2); strcpy(orderptr->orderinfo,rlspace(p+1)); if(strlen(orderptr->orderinfo)==0 || strlen(orderptr->orderinfo)>1000) { fprintf(logfp,"Incorrect cfg_info[line=%d]\n",line); fclose(cfgfp); fclose(logfp); exit(1); } ordertail=&orderhead; while(ordertail->next) { if(ordertail->next->ordercode==orderptr->ordercode) { fprintf(logfp,"ORDER_CODE[%d] is exists[line=%d]\n", orderptr->ordercode,line); fclose(logfp); fclose(cfgfp); exit(1); } ordertail=ordertail->next; } ordertail->next=orderptr; memset(cfginfo,0x0,sizeof(cfginfo)); } fclose(cfgfp); fprintf(logfp,"ORDER INFO:\n"); orderptr=orderhead.next; while(orderptr) { fprintf(logfp,"%06d = [%s]\n",orderptr->ordercode,orderptr->orderinfo); orderptr=orderptr->next; } fflush(logfp); /************ GET REPLY INFO ***********************/ cfgfp=fopen(reply_fname,"r"); if(cfgfp==NULL) { fprintf(logfp,"Can't open %s for read[%d]\n",reply_fname,errno); fclose(logfp); exit(1); } fprintf(logfp,"REPLY INFO:\n"); line=0; memset(cfginfo,0x0,sizeof(cfginfo)); while(fgets(cfginfo,sizeof(cfginfo),cfgfp)) { line++; if(cfginfo[0]=='#' || cfginfo[0]=='\r' || cfginfo[0]=='\n') { memset(cfginfo,0x0,sizeof(cfginfo)); continue; } fprintf(logfp,"%s",cfginfo); if(strncmp(cfginfo,"RETN:",5) || cfginfo[9]!=':') { fprintf(logfp,"Incorrect cfg_info[line=%d]\n",line); fclose(cfgfp); fclose(logfp); exit(1); } replyptr=(struct reply_info *)malloc(sizeof(struct reply_info)); memset(replyptr,0x0,sizeof(struct reply_info)); replyptr->replycode=atoi(cfginfo+5); p=cfginfo+10; d=replyptr->replyinfo; if(*p!='[' || strchr(p,']')==NULL) { fprintf(logfp,"Incorrect cfg_info[line=%d]\n",line); fclose(cfgfp); fclose(logfp); exit(1); } while(*(++p)!=']') { if(*p=='\\') { p++; switch(*p) { case 'r': *d='\r'; break; case 'n': *d='\n'; break; case 't': *d='\t'; break; default: *d=*p; } } else *d=*p; d++; } if(d==replyptr->replyinfo) { fprintf(logfp,"Incorrect cfg_info[line=%d]\n",line); fclose(cfgfp); fclose(logfp); exit(1); } replyptr->next=replyhead.next; replyhead.next=replyptr; memset(cfginfo,0x0,sizeof(cfginfo)); } fclose(cfgfp); fflush(logfp); /************ GET QUERY INFO ***********************/ ret=get_query_cfg(query_fname); if(ret) { fprintf(logfp,"get_query_cfg()===%d\n",ret); fclose(logfp); exit(1); } disp_query_cfg(); /************ INIT COMM_PORT ***********************/ connid=tcp_connect(srvip, commport); if(connid<0) { fprintf(logfp,"socket() failed[%d]\n",errno); fclose(logfp); exit(1); } if(login_server(connid, hlrcode, hlrport, mgr_user, mgr_pswd, mgr_term)) { fprintf(logfp,"login_server() failed!\n"); fclose(logfp); exit(1); } fprintf(logfp,"login_server(%s) success!\n",hlrcode); gsmid = tcp_connect(gsmip, gsmport); sndid=gsmid; rcvid=gsmid; /*** LOGIN HLR ***/ sleep(1); enter[0]='\r'; enter[1]=0x00; while(1) { RcvFrmFlag(); if(strstr(replystr+STATION,"<")) { break; } if(strstr(replystr+STATION,"USERCODE")) { cusnd(gsmuser,strlen(gsmuser)); cusnd(enter,1); continue; } if(strstr(replystr+STATION,"PASSWORD")) { cusnd(gsmpswd,strlen(gsmpswd)); cusnd(enter,1); continue; } cusnd(enter,1); } fprintf(logfp,"LOGIN HLR,SUCCESS![%ld]\n",time(NULL)); fflush(logfp); /************** GET AN ORDER AND DEAL ********************/ waitnum=0; transid=2; cmdreqptr=(struct cmd_data_req *)tcpbuf.data; cmdreqptr->type=ONLY_GET; yy_time.rec_time = time(NULL); strcpy(yy_time.hlrcode, hlrcode); strcpy(yy_time.hlrport, hlrport); while(1) { int data_flag = 0; gettimeofday(&t1, NULL); if(send_req(connid,DECRYPT,TX_END,GETORDER,transid++,CMDREQLEN)<0) { fprintf(logfp,"send_req(%d) failed[%d]\n",connid,errno); break; } readlen = read_ack(connid, &tcpbuf); if(readlen != 0) { fprintf(logfp,"readnet(%d,8,%d)=%d failed!\n",connid,msglen-8,readlen); break; } gettimeofday(&t2, NULL); cmdackptr=(struct cmd_data_ack *)tcpbuf.data; data_flag = (get_length(cmdackptr->retn,4) == 0001); if(data_flag){ yy_time.rows ++; yy_time.tm4get += time_diff1(t1, t2); } printf("RCV:%s~\n",(char *)&tcpbuf); ret=exec_cmd(); gettimeofday(&t1, NULL); if(data_flag){ yy_time.tm4exc += time_diff1(t2, t1); } printf("EXEC_CMD===========%d\n",ret); if(ret<0) { fprintf(logfp,"exec_cmd() failed!\n"); break; } time(&t); yy_time_log(t); tv=localtime(&t); if(today!=tv->tm_mday) { fclose(logfp); memset(logfilename,0x0,sizeof(logfilename)); sprintf(logfilename,"%s/erc%04d%02d%02d.%s.%s",logdir, tv->tm_year+1900,tv->tm_mon+1,tv->tm_mday,hlrcode,hlrport); logfp=fopen(logfilename,"a"); if(logfp==NULL) { printf("can't open %s for LOG!\n",logfilename); exit(1); } today=tv->tm_mday; } fflush(logfp); } fclose(logfp); close(connid); return 0; }
int main(int argc, char *argv[]) { #ifdef use_directs struct direct *dp; #else struct dirent *dp; #endif char *fname = FNAME; int files = 200; /* number of files in each dir */ int fi; int count = 200; /* times to read dir */ int ct; int entries = 0; int totfiles = 0; int totdirs = 0; DIR *dir; struct timeval time; char *p, str[MAXPATHLEN]; char *opts; int err, i, dot, dotdot; int nmoffset; umask(0); setbuf(stdout, NULL); Myname = *argv++; argc--; while (argc && **argv == '-') { for (opts = &argv[0][1]; *opts; opts++) { switch (*opts) { case 'h': /* help */ usage(); exit(1); break; case 't': /* time */ Tflag++; break; case 'f': /* funtionality */ Fflag++; break; case 'n': /* No Test Directory create */ Nflag++; break; case 'i': /* ignore spurious files */ Iflag++; break; default: error("unknown option '%c'", *opts); usage(); exit(1); } } argc--; argv++; } if (argc) { files = getparm(*argv, 1, "files"); argv++; argc--; } if (argc) { count = getparm(*argv, 1, "count"); argv++; argc--; } if (argc) { fname = *argv; argv++; argc--; } if (argc) { usage(); exit(1); } nmoffset = strlen(fname); if (Fflag) { Tflag = 0; count = 1; } if (count > files) { error("count (%d) can't be greater than files (%d)", count, files); exit(1); } if (files > MAXFILES) { error("too many files requested (max is %d)", MAXFILES); exit(1); } fprintf(stdout, "%s: readdir\n", Myname); if (!Nflag) testdir(NULL); else mtestdir(NULL); dirtree(1, files, 0, fname, DNAME, &totfiles, &totdirs); if (Tflag) { starttime(); } if ((dir = opendir(".")) == NULL) { error("can't opendir %s", "."); exit(1); } for (ct = 0; ct < count; ct++) { rewinddir(dir); dot = 0; dotdot = 0; err = 0; for (i = 0; i < sizeof(bitmap); i++) bitmap[i] = 0; while ((dp = readdir(dir)) != NULL) { entries++; if (strcmp(".", dp->d_name) == 0) { if (dot) { /* already read dot */ error("'.' dir entry read twice"); exit(1); } dot++; continue; } else if (strcmp("..", dp->d_name) == 0) { if (dotdot) { /* already read dotdot */ error("'..' dir entry read twice"); exit(1); } dotdot++; continue; } /* * at this point, should have entry of the form * fname%d */ /* If we don't have our own directory, ignore such errors (if Iflag set). */ if (strncmp(dp->d_name, fname, nmoffset)) { if (Iflag) continue; else { error("unexpected dir entry '%s'", dp->d_name); exit(1); } } /* get ptr to numeric part of name */ p = dp->d_name + nmoffset; fi = atoi(p); if (fi < 0 || fi >= MAXFILES) { error("unexpected dir entry '%s'", dp->d_name); exit(1); } if (BIT(fi)) { error("duplicate '%s' dir entry read", dp->d_name); err++; } else SETBIT(fi); } /* end readdir loop */ if (!dot) { error("didn't read '.' dir entry, pass %d", ct); err++; } if (!dotdot) { error("didn't read '..' dir entry, pass %d", ct); err++; } for (fi = 0; fi < ct; fi++) { if (BIT(fi)) { sprintf(str, "%s%d", fname, fi); error("unlinked '%s' dir entry read pass %d", str, ct); err++; } } for (fi = ct; fi < files; fi++) { if (!BIT(fi)) { sprintf(str, "%s%d", fname, fi); error("\ didn't read expected '%s' dir entry, pass %d", str, ct); err++; } } if (err) { error("Test failed with %d errors", err); exit(1); } sprintf(str, "%s%d", fname, ct); if (unlink(str) < 0) { error("can't unlink %s", str); exit(1); } }
/** * \brief Initilizes the groupname, hostname, and dirlist * * First attempts to find the Storage Group defined with the specified name * for the given host. If not found, checks for the named Storage Group, as * defined across all hosts. If not found, tries the "Default" Storage Group * for the given host. If not found, tries the "Default" Storage Group, as * defined across all hosts. * * \param group The name of the Storage Group * \param hostname The host whose Storage Group definition is desired */ void StorageGroup::Init(const QString group, const QString hostname, const bool allowFallback) { bool found = false; m_groupname = group; m_groupname.detach(); m_hostname = hostname; m_hostname.detach(); m_allowFallback = allowFallback; m_dirlist.clear(); StaticInit(); found = FindDirs(m_groupname, m_hostname, &m_dirlist); if (!found && m_builtinGroups.contains(group)) { QDir testdir(m_builtinGroups[group]); if (!testdir.exists()) testdir.mkpath(m_builtinGroups[group]); if (testdir.exists()) { m_dirlist.prepend(testdir.absolutePath()); found = true; } } if ((!found) && m_allowFallback && (m_groupname != "LiveTV") && (!hostname.isEmpty())) { LOG(VB_FILE, LOG_NOTICE, LOC + QString("Unable to find any directories for the local " "storage group '%1' on '%2', trying directories on " "all hosts!").arg(group).arg(hostname)); found = FindDirs(m_groupname, "", &m_dirlist); if (found) { m_hostname = ""; m_hostname.detach(); } } if ((!found) && m_allowFallback && (group != "Default")) { LOG(VB_FILE, LOG_NOTICE, LOC + QString("Unable to find storage group '%1', trying " "'Default' group!").arg(group)); found = FindDirs("Default", m_hostname, &m_dirlist); if(found) { m_groupname = "Default"; m_groupname.detach(); } else if (!hostname.isEmpty()) { LOG(VB_FILE, LOG_NOTICE, LOC + QString("Unable to find any directories for the local " "Default storage group on '%1', trying directories " "in all Default groups!").arg(hostname)); found = FindDirs("Default", "", &m_dirlist); if(found) { m_groupname = "Default"; m_hostname = ""; m_groupname.detach(); m_hostname.detach(); } } } if (allowFallback && !m_dirlist.size()) { QString msg = "Unable to find any Storage Group Directories. "; QString tmpDir = gCoreContext->GetSetting("RecordFilePrefix"); if (tmpDir != "") { msg += QString("Using old 'RecordFilePrefix' value of '%1'") .arg(tmpDir); } else { tmpDir = kDefaultStorageDir; msg += QString("Using hardcoded default value of '%1'") .arg(kDefaultStorageDir); } LOG(VB_GENERAL, LOG_ERR, LOC + msg); m_dirlist << tmpDir; } }
/** * \brief Finds and and optionally initialize a directory list * associated with a Storage Group * * \param group The name of the Storage Group * \param hostname The host whose directory list should be checked, first * \param dirlist Optional pointer to a QStringList to hold found dir list * \return true if directories were found */ bool StorageGroup::FindDirs(const QString group, const QString hostname, QStringList *dirlist) { bool found = false; QString dirname; MSqlQuery query(MSqlQuery::InitCon()); StaticInit(); QString sql = "SELECT DISTINCT dirname " "FROM storagegroup "; if (!group.isEmpty()) { sql.append("WHERE groupname = :GROUP"); if (!hostname.isEmpty()) sql.append(" AND hostname = :HOSTNAME"); } query.prepare(sql); if (!group.isEmpty()) { query.bindValue(":GROUP", group); if (!hostname.isEmpty()) query.bindValue(":HOSTNAME", hostname); } if (!query.exec() || !query.isActive()) MythDB::DBError("StorageGroup::StorageGroup()", query); else if (query.next()) { do { /* The storagegroup.dirname column uses utf8_bin collation, so Qt * uses QString::fromAscii() for toString(). Explicitly convert the * value using QString::fromUtf8() to prevent corruption. */ dirname = QString::fromUtf8(query.value(0) .toByteArray().constData()); dirname.replace(QRegExp("^\\s*"), ""); dirname.replace(QRegExp("\\s*$"), ""); if (dirname.right(1) == "/") dirname.remove(dirname.length() - 1, 1); if (dirlist) (*dirlist) << dirname; else return true; } while (query.next()); found = true; } if (m_builtinGroups.contains(group)) { QDir testdir(m_builtinGroups[group]); if (testdir.exists()) { if (dirlist && !dirlist->contains(testdir.absolutePath())) dirlist->prepend(testdir.absolutePath()); found = true; } } return found; }
int main(int argc, char *argv[]) { int files; /* number of files in each dir */ int totfiles = 0; int dirs; /* directories in each dir */ int totdirs = 0; int levels; /* levels deep */ char *fname; char *dname; struct timeval time; char *opts; struct testparam *param; struct btest *b; char *config_file; char *test_dir; char *log_file; FILE *log; setbuf(stdout, NULL); Myname = *argv++; argc--; while(argc && **argv == '-') { for(opts = &argv[0][1]; *opts; opts++) { switch (*opts) { case 'h': /* help */ usage(); exit(1); break; case 's': /* silent */ Sflag++; break; case 't': /* time */ Tflag++; break; case 'f': /* funtionality */ Fflag++; break; case 'n': /* No Test Directory create */ Nflag++; break; default: error("unknown option '%c'", *opts); usage(); exit(1); } } argc--; argv++; } if(argc) { config_file = *argv; argc--; argv++; } else { fprintf(stderr, "Missing config_file"); exit(1); } if(argc != 0) { fprintf(stderr, "too many parameters"); usage(); exit(1); } param = readin_config(config_file); if(param == NULL) { fprintf(stderr, "Nothing built\n"); exit(1); } b = get_btest_args(param, ONE); if(b == NULL) { fprintf(stderr, "Missing basic test number 1 in the config file '%s'\n", config_file); free_testparam(param); exit(1); } if(b->levels == -1) { fprintf(stderr, "Missing 'levels' parameter in the config file '%s' for the basic test number 1\n", config_file); free_testparam(param); exit(1); } if(b->files == -1) { fprintf(stderr, "Missing 'files' parameter in the config file '%s' for the basic test number 1\n", config_file); free_testparam(param); exit(1); } if(b->dirs == -1) { fprintf(stderr, "Missing 'dirs' parameter in the config file '%s' for the basic test number 1\n", config_file); free_testparam(param); exit(1); } levels = b->levels; files = b->files; dirs = b->dirs; fname = b->fname; dname = b->dname; test_dir = get_test_directory(param); log_file = get_log_file(param); free_testparam(param); if(!Fflag) { Tflag = 0; levels = 2; files = 2; dirs = 2; } if(!Sflag) { fprintf(stdout, "%s: File and directory creation test\n", Myname); } if(!Nflag) testdir(test_dir); else mtestdir(test_dir); starttime(); dirtree(levels, files, dirs, fname, dname, &totfiles, &totdirs); endtime(&time); if(!Sflag) { fprintf(stdout, "\tcreated %d files %d directories %d levels deep", totfiles, totdirs, levels); } if(Tflag && !Sflag) { fprintf(stdout, " in %ld.%02ld seconds", (long)time.tv_sec, (long)time.tv_usec / 10000); } if(!Sflag) { fprintf(stdout, "\n"); } if((log = fopen(log_file, "a")) == NULL) { printf("Enable to open the file '%s'\n", log_file); complete(); } fprintf(log, "b1\t%d\t%d\t%d\t%ld.%02ld\n", totfiles, totdirs, levels, (long)time.tv_sec, (long)time.tv_usec / 10000); fclose(log); complete(); }
int main(int argc, char *argv[]) { int files = 10; /* number of files in each dir */ int fi; int count = 50; /* times to do each file */ int ct; int totfiles = 0; int totdirs = 0; char *fname = FNAME; struct timeval time; char str[MAXPATHLEN]; struct stat statb; char *opts; umask(0); setbuf(stdout, NULL); Myname = *argv++; argc--; while (argc && **argv == '-') { for (opts = &argv[0][1]; *opts; opts++) { switch (*opts) { case 'h': /* help */ usage(); exit(1); break; case 't': /* time */ Tflag++; break; case 'f': /* funtionality */ Fflag++; break; case 'n': /* suppress initial directory */ Nflag++; break; default: error("unknown option '%c'", *opts); usage(); exit(1); } } argc--; argv++; } if (argc) { files = getparm(*argv, 1, "files"); argv++; argc--; } if (argc) { count = getparm(*argv, 1, "count"); argv++; argc--; } if (argc) { fname = *argv; argc--; argv++; } if (argc) { usage(); exit(1); } if (Fflag) { Tflag = 0; count = 1; } if (!Nflag) testdir(NULL); else mtestdir(NULL); dirtree(1, files, 0, fname, DNAME, &totfiles, &totdirs); fprintf(stdout, "%s: getattr and lookup\n", Myname); if (Tflag) { starttime(); } for (ct = 0; ct < count; ct++) { for (fi = 0; fi < files; fi++) { sprintf(str, "%s%d", fname, fi); if (stat(str, &statb) < 0) { error("can't stat %s", str); exit(1); } } } if (Tflag) { endtime(&time); } fprintf(stdout, "\t%d stats on %d files", files * count * 2, files); if (Tflag) { fprintf(stdout, " in %ld.%-2ld seconds", (long)time.tv_sec, (long)time.tv_usec / 10000); } fprintf(stdout, "\n"); /* XXX REMOVE DIRECTORY TREE? */ complete(); return 0; }