Esempio n. 1
0
int main(int argc, char **argv){
	int rank,size,i,j;
	MPI_Status status;
	//MPI_Request *request;
	char **pCrackL;
	char *dados;
	//char *dadosS;
	//char **saltL;
	PassSlice *slices;
	char fileName[] = "input.in";
	int qtPTC=0;
	//char *t;
	FILE *file;
	char src[14];
	int TP = 1;
	//MPI_File fh;
	//int filesize;
	//I_MPI_MT_MEMCPY=1;
	//int tDes = getDes();

	MPI_Init(&argc,&argv);

	MPI_Comm_rank(MPI_COMM_WORLD,&rank);
	MPI_Comm_size(MPI_COMM_WORLD,&size); 	

	//qtPTC = atoi(argv[1]);

	//pCrackL=(char*)malloc(qtPTC*getTDes()*sizeof(char));
	//saltL=(char*)malloc(qtPTC*getTS()*sizeof(char));


	if(rank == 0){	
		file = fopen(fileName,"r");

		for(i=0 ; fscanf(file,"%s",src)!=EOF ; i++ );
		fseek(file,0,SEEK_SET);	
		qtPTC = i;
		dados = (char*)malloc(qtPTC*(getTDes()+1)*sizeof(char));
		if(dados==NULL)exit(0);
		pCrackL = (char**)malloc(sizeof(char*)*(qtPTC+1));
		if(pCrackL==NULL)exit(0);
		for(i = 0 ; i < qtPTC ; i++)pCrackL[i]=&(dados[i*(getTDes()+1)]);

		for(i=0 ; i < (qtPTC-1) ; i++ ){
			fscanf(file,"%s",pCrackL[i]);
		}
		fclose(file);
		setTP(TP);
		for(i = 0 ; i < getTP() ; i++){
			slices = initSlices(size-1);		
			/*for(i=0;i<size-1;i++){
			  printf("%i\n",slices[i].interval);
			  printf("%i\n",slices[i].tPass);
			  printf("%s\n",slices[i].begin);
			  printf("%s\n",slices[i].end);	
			  }*/
			for(j=1;j<size;j++){
				MPI_Send(&TP,1,MPI_INT,i,2,MPI_COMM_WORLD);
				MPI_Send(slices[i].begin,TP,MPI_CHAR,i,0,MPI_COMM_WORLD);
				MPI_Send(&slices[i].interval,1,MPI_UNSIGNED_LONG,i,1,MPI_COMM_WORLD);
			}
			TP++;
			setTP(TP);
		}
	} else {
		MPI_Recv(&TP,1,MPI_INT,0,2,MPI_COMM_WORLD,&status);
		MPI_Recv(slices[rank].begin,TP,MPI_CHAR,0,0,MPI_COMM_WORLD,&status);
		MPI_Recv(&slices[rank].interval,1,MPI_UNSIGNED_LONG,0,1,MPI_COMM_WORLD,&status);
	}
	MPI_Bcast (&qtPTC, 1, MPI_INT, 0, MPI_COMM_WORLD);	
	if(rank!=0){
		dados = (char*)malloc(qtPTC*(getTDes()+1)*sizeof(char));
		if(dados==NULL)exit(0);
		pCrackL = (char**)malloc(sizeof(char*)*(qtPTC+1));
		if(pCrackL==NULL)exit(0);
		for(i = 0 ; i < qtPTC ; i++)pCrackL[i]=&(dados[i*(getTDes()+1)]);
	
	}
	//pCrackL=(char*)malloc(qtPTC*getTDes()*sizeof(char));
	//MPI_Bcast (&qtPTC, 1, MPI_INT, 0, MPI_COMM_WORLD);
	//MPI_Barrier(MPI_COMM_WORLD);
	//MPI_Bcast (dados, qtPTC*(getTDes()+1), MPI_CHAR, 0, MPI_COMM_WORLD);
	//for(i=0;i<qtPTC;i++)pCrackL[i] = &dados[i*(getTDes()+1)];
	//MPI_Bcast (saltL, qtPTC*getTS(), MPI_CHAR, 0, MPI_COMM_WORLD);
	//for(i = 0 ; i < qtPTC ; i++){
	//printf("%i %i \n",qtPTC,rank);
	//}
	//printf("%s\n",pCrackL[0]);
	//setTp(1);
	//openMP(pCrackL, saltL, qtPTC);

	MPI_Finalize();
	return 0;
}
Esempio n. 2
0
void	dumpXML(FILE *outfile, char *header)
{
	SVT_CONTROL	*svtcur ;
	EIT_CONTROL	*eitcur ;
	char	cendtime[32];
	char	cstarttime[32];

	fprintf(outfile, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
	fprintf(outfile, "<!DOCTYPE tv SYSTEM \"xmltv.dtd\">\n\n");
	fprintf(outfile, "<tv generator-info-name=\"tsEPG2xml\" generator-info-url=\"http://localhost/\">\n");

	svtcur = svttop->next;
	while(svtcur != NULL) {
		if (!svtcur->haveeitschedule) {
			svtcur = svtcur->next;
			continue;
		}
		memset(ServiceName, '\0', sizeof(ServiceName));
		strcpy(ServiceName, svtcur->service_name);
		xmlspecialchars(ServiceName);

		fprintf(outfile, "  <channel id=\"%s_%d\" tp=\"%s\">\n", (svtcur->original_network_id < 0x10) ? header : "GR", svtcur->service_id, (svtcur->original_network_id < 0x10) ? getTP(svtcur->transport_stream_id) : header);
		fprintf(outfile, "    <display-name lang=\"ja_JP\">%s</display-name>\n", ServiceName);
		fprintf(outfile, "    <transport_stream_id>%d</transport_stream_id>\n", svtcur->transport_stream_id);
		fprintf(outfile, "    <original_network_id>%d</original_network_id>\n", svtcur->original_network_id);
		fprintf(outfile, "    <service_id>%d</service_id>\n", svtcur->service_id);
		fprintf(outfile, "  </channel>\n");
		svtcur = svtcur->next;
	}

	svtcur = svttop->next;
	while(svtcur != NULL) {
		if (!svtcur->haveeitschedule) {
			svtcur = svtcur->next;
			continue;
		}
		eitcur = svtcur->eit;
		while(eitcur != NULL){
			if(!eitcur->service_id){
				eitcur = eitcur->next ;
				continue ;
			}
			if(eitcur->content_type > CAT_COUNT){
				eitcur->content_type = CAT_COUNT -1 ;
			}

			memset(title, '\0', sizeof(title));
			strcpy(title, eitcur->title);
			xmlspecialchars(title);

			memset(subtitle, '\0', sizeof(subtitle));
			strcpy(subtitle, eitcur->subtitle);
			xmlspecialchars(subtitle);

			memset(Category, '\0', sizeof(Category));
			strcpy(Category, ContentCatList[eitcur->content_type].japanese);
			xmlspecialchars(Category);

			memset(cendtime, '\0', sizeof(cendtime));
			memset(cstarttime, '\0', sizeof(cstarttime));
			strcpy(cendtime, strTime(eitcur->start_time + eitcur->duration , "%Y%m%d%H%M%S"));
			strcpy(cstarttime, strTime(eitcur->start_time, "%Y%m%d%H%M%S"));

			fprintf(outfile, "  <programme start=\"%s +0900\" stop=\"%s +0900\" channel=\"%s_%d\" event_id=\"%d\">\n",
					cstarttime, cendtime, (svtcur->original_network_id < 0x10) ? header : "GR", svtcur->service_id, eitcur->event_id);
			fprintf(outfile, "    <title lang=\"ja_JP\">%s</title>\n", title);
			fprintf(outfile, "    <desc lang=\"ja_JP\">%s</desc>\n", subtitle);
			fprintf(outfile, "    <category lang=\"ja_JP\">%s</category>\n", Category);
			fprintf(outfile, "    <category lang=\"en\">%s</category>\n", ContentCatList[eitcur->content_type].english);
			fprintf(outfile, "  </programme>\n");
			eitcur = eitcur->next;
		}
		svtcur = svtcur->next;
	}

	fprintf(outfile, "</tv>\n");
}