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; }
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"); }