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;
}
Beispiel #2
0
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;
}
Beispiel #3
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;
}
Beispiel #4
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;
}
Beispiel #5
0
Datei: lib.c Projekt: kahrs/cda
/*
 * 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;
}
Beispiel #6
0
    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"));
    }
Beispiel #7
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];
        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;
}
Beispiel #8
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;
}
Beispiel #9
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);
		}
	}
Beispiel #10
0
/**
 *  \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;
    }
}
Beispiel #11
0
/**
 *  \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;
}
Beispiel #12
0
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();
}
Beispiel #13
0
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;
}