std::wstring TestUtils::exec(LPCTSTR szCmd) { FILE* pipe = _tpopen(szCmd, _T("rt")); if (!pipe) return L"ERROR"; wchar_t buffer[4096]; std::wstring result; while(!feof(pipe)) { if(fgetws(buffer, 4096, pipe) != NULL) result += buffer; } wtrim(result); _pclose(pipe); return result; }
int main(int argc, char ** argv) { int from, to, i,j; FILE *fFrom, *fTo; char buff[BSIZE]; char * part[4]={"vars","func","prtcls","lgrng"}; int ok=1; if(argc!=4) ok=0; else if(1!=(i=sscanf(argv[2],"%d",&from))) { ok=0;printf("i=%d\n",i);} else if(1!=(i=sscanf(argv[3],"%d",&to) )) { ok=0;printf("i_=%d\n",i);} if(!ok) { printf("This programs needs 3 arguments\n" "1)path to destination of models in LanHEP format\n" "2)Model number N (like varsN.mdl)\n" "3)Target model number. The model will be created in the current directory\n"); return 1; } for(i=0;i<4;i++) { sprintf(buff,"%s/%s%d.mdl",argv[1],part[i],from); if(access(buff,R_OK)) { printf("Source file '%s' not found\n",buff); return 2; } } sprintf(buff,"cp %s/%s%d.mdl %s%d.mdl",argv[1],part[3],from,part[3],to); system(buff); for(i=0;i<3;i++) { int k=0; sprintf(buff,"%s/%s%d.mdl",argv[1],part[i],from); fFrom=fopen(buff,"r"); sprintf(buff,"%s%d.mdl",part[i],to); fTo=fopen(buff,"w"); fgets(buff,BSIZE,fFrom); fputs(buff,fTo); fgets(buff,BSIZE,fFrom); fputs(buff,fTo); switch(i) { case 0: /* vars*.md */ for(;fgets(buff,BSIZE,fFrom);) { if( buff[0] != '=' ) fputs(" ",fTo); fputs(buff,fTo); } break; case 1: /* func*.md */ for(k=0;1==fscanf(fFrom,"%[^|]%*c",buff) ;) { if(buff[0]=='=') {fprintf(fTo,"%s\n",buff); break;} fprintf(fTo," %s|",buff); fscanf(fFrom,"%[^|]%*c",buff); if(k==0) {fprintf(fTo,"%s&",buff); k=1;} else fprintf(fTo,"%s%%",buff); fgets(buff,BSIZE,fFrom); fputs(buff,fTo); } break; case 2: /* Particles */ for(j=0;j<3;j++){ fscanf(fFrom,"%[^|]%*c",buff); fprintf(fTo,"%s|",buff);} fprintf(fTo," number |"); fgets(buff,BSIZE,fFrom); fputs(buff,fTo); for(;;) { char name[40],symb[40],aux[40]; int nn; if( fscanf(fFrom,"%[^|%]%*c",buff)==EOF ) break; fprintf(fTo,"%s",buff); if(buff[0]=='=')break; else fprintf(fTo,"|"); strcpy(name,buff); fscanf(fFrom,"%[^|]%*c",symb); fprintf(fTo,"%s|",symb); fscanf(fFrom,"%[^|]%*c",buff); fprintf(fTo,"%s|",buff); wtrim(symb); nn=mcnum(symb,name); fgets(buff,BSIZE,fFrom); if(nn==0) { sscanf(buff,"%*[^|]%*c%*[^|]%*c%*[^|]%*c%*[^|]%*c%[^|]",aux); wtrim(aux); if(strcmp(aux,"*")) printf("Warning! Monte Caro code for %s (%s) is unknown.\n" " Replaced by zero. Improve it!\n",symb, name); } fprintf(fTo,"%8d|",nn); fputs(buff,fTo); } break; } fclose(fFrom); fclose(fTo); } sprintf(buff,"extlib%d.mdl",to); fTo=fopen(buff,"w"); sprintf(buff,"%s/%s%d.mdl",argv[1],part[0],from); fFrom=fopen(buff,"r"); fscanf(fFrom,"%[^\n]",buff); fprintf(fTo,"%s\n",buff); fprintf(fTo,"Libraries\n" "External libraries and citation <|\n" "=======================================================================\n"); fclose(fTo),fclose(fFrom); return 0; }