home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / msdos / editors / eedraw / src / ed / conv.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-16  |  5.4 KB  |  235 lines

  1. #include <math.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <conio.h>
  5. #include <string.h>
  6. #include <time.h>
  7. #include <dos.h>
  8. #include <dir.h>
  9. #include <alloc.h>
  10. #include <time.h>
  11. #include "conv.h"
  12. #include "..\primary.h"
  13.  
  14. FILE *fin,*fout, *rep;
  15.  
  16. int Lib;    /* input format for library files */
  17. int Line = 1;
  18.  
  19. char Infile[0x80],Outfile[0x80],SLine[0x80];
  20.  
  21. void main(argc,argv)
  22. int argc;
  23. char *argv[];
  24. {
  25.     char buf[0x100];
  26.     int x;
  27.     if((argc!=2) & (argc !=3)){
  28.         fprintf(stderr,"EEFilter: <-l> <File>\n");
  29.         exit(-1);
  30.     }
  31.     if(argc==2)
  32.         Lib=0;    /* Basic EEDraw file, */
  33.     else if((strcmp(argv[1],"-l"))==0)
  34.         Lib=1;
  35.     else if((strcmp(argv[1],"-z"))==0){
  36.         fprintf(stderr,"Usage: EEFilter <-l> Filename\n");
  37.         fprintf(stderr,"EEDraw/EELibs Conversion Utility\n");
  38.         exit(0);
  39.     }
  40.     if(Lib==0 && argc==2)
  41.         sprintf(Infile,"%s",argv[1]);
  42.     else if(Lib==0 && argc==3)
  43.         sprintf(Infile,"%s",argv[2]);
  44.     else if(Lib==1 && argc==3)
  45.         sprintf(Infile,"%s",argv[2]);
  46.     else {
  47.         fprintf(stderr,"EEFilter: <-l> <File>\n");
  48.         exit(-1);
  49.     }
  50.     if((fin=fopen(Infile,"r"))==NULL){
  51.         fprintf(stderr,"Cant open file %s for reading\n",Infile);
  52.         exit(-1);
  53.     }
  54.     sprintf(Outfile,"EEFilter.jnk");
  55.     if((fout=fopen(Outfile,"w"))==NULL){
  56.         fprintf(stderr,"Can't open Tempery file for writting\n");
  57.         exit(-1);
  58.     }
  59.     if((rep=fopen("EEFilter.rep","a"))!=NULL){
  60.         fprintf(rep,"Basic report for filter,\n");
  61.         fprintf(rep,"Input File %s\n",Infile);
  62.         fprintf(rep,"Output file %s\n",Outfile);
  63.         fprintf(rep,"Mode %d\n**********\n\n",Lib);
  64.         fclose(rep);
  65.     }
  66.  
  67.     if(Lib==0){    /* EED Sytle File */
  68.         fgets(buf,0x100,fin);
  69.         fprintf(fout,"EEDraw EEDRAW PROGRAM Version 2.4\n");
  70.         Copy_Line(1);
  71.         Line=2;
  72.         Sch_Layer_Head();
  73.         do_eed();
  74.     } else if(Lib==1){
  75.         fgets(buf,0x100,fin);
  76.         fprintf(fout,"EEDRAW-LIB Version 1.1\n");
  77.         do_lib();
  78.     }
  79.     fclose(fin);
  80.     fclose(fout);
  81.     x=do_move();
  82.     exit(x);
  83. }
  84.  
  85. /* Copy N Lines from the input to the output */
  86. void Copy_Line(Num)
  87. int Num;
  88. {
  89.     char buf[0x100];
  90.     while(Num!=0){
  91.         fgets(buf,0x100,fin);
  92.         fprintf(fout,"%s",buf);
  93.         Num--;
  94.     }
  95. }
  96.  
  97. void Sch_Layer_Head()
  98. {
  99.     fprintf(fout,"EELAYER 12 0\n");
  100.         fprintf(fout,"Wire   15  2  0\n");
  101.          fprintf(fout,"Bus   14  2  1\n");
  102.         fprintf(fout,"Gate    3  1  2\n");
  103.         fprintf(fout,"IEEE    4  1  3\n");
  104.       fprintf(fout,"PinFun    1  1  4\n");
  105.       fprintf(fout,"PinNum   14  1  5\n");
  106.       fprintf(fout,"PinNam    1  1  6\n");
  107.       fprintf(fout,"RefDes   14  1  7\n");
  108.         fprintf(fout,"Attr   14  1  8\n");
  109.       fprintf(fout,"Device    3  1  9\n");
  110.        fprintf(fout,"Notes    1  2 10\n");
  111.       fprintf(fout,"NetNam    4  1 11\n");
  112.          fprintf(fout,"Pin   15  1 12\n");
  113.     fprintf(fout,"EELAYER END\n");
  114.     Line = Line + 15;
  115. }
  116. void do_eed()
  117. {
  118.     char buf[0x100];
  119.     char cmd,flag;
  120.     int v1,v2,v3,v4,v5;
  121.     do {
  122.         buf[0]='\0';
  123.         cmd='\0';
  124.         fgets(buf,0x100,fin);
  125.         sscanf(buf,"%c %d %d %d %d %d",&cmd,&v1,&v2,&v3,&v4,&v5);
  126.         switch(cmd){
  127.             case 'P' :
  128.                 sscanf(buf,"%c %c %d",&cmd,&flag,&v1);
  129.                 fprintf(fout,"%c %c 0 %s",cmd,flag,&buf[4]);
  130.                 Copy_Line(v1);
  131.                 Line = Line + 1 + v1;
  132.                 break;
  133.             case 'T' :
  134.                 fprintf(fout,"%c 10 %s",cmd,&buf[2]);
  135.                 Copy_Line(1);
  136.                 Line = Line +2;
  137.                 break;
  138.             case 'L' :
  139.                 fprintf(fout,"%s",buf);
  140.                 Copy_Line(2);
  141.                 Line = Line + 3;
  142.                 break;
  143.             case 'C' :
  144.                 fprintf(fout,"C %d %d %d\n",LAYER_WIRE, v1,v2);
  145.                 Line ++;
  146.                 break;
  147.             default  :
  148.                 if((rep=fopen("eefilter.rep","a"))!=NULL){
  149.                     fprintf(rep,"\n*******\nErrors\n");
  150.                     fprintf(rep,"Error: found line %d\n",
  151.                         Line);
  152.                     fprintf(rep,"Line :%s:\n",buf);
  153.                     fclose(rep);
  154.                 }
  155.                 break;
  156.         } 
  157.     }while(!feof(fin));    /* outer loop of basic filter */
  158. }
  159. void do_lib()
  160.     char buf[0x100];
  161.     char cmd;
  162.     int v1,v2,v3,v4,v5;
  163.     do {
  164.         buf[0]='\0';
  165.         cmd='\0';
  166.         fgets(buf,0x100,fin);
  167.     if((buf[1]==' ') & ((buf[0] >= 'A') & (buf[0] <= 'Z'))){
  168.         sscanf(buf,"%c %d %d %d %d %d",&cmd,&v1,&v2,&v3,&v4,&v5);
  169.         switch(cmd){
  170.             case '#' :
  171.                 fprintf(fout,"%s",buf);
  172.                 break;
  173.             case 'P' :
  174.                 sscanf(buf,"%c %d",&cmd,&v1);
  175.                 fprintf(fout,"%c %d %s",cmd,LAYER_GATE,&buf[2]);
  176.                 Line = Line + 1;
  177.                 break;
  178.             case 'L' :
  179.                 fprintf(fout,"%c %d %s",cmd,LAYER_GATE,&buf[2]);
  180.                 Line++;
  181.                 break;
  182.             case 'S' :
  183.                 fprintf(fout,"%c %d %s",cmd,LAYER_GATE,&buf[2]);
  184.                 Line++;
  185.                 break;
  186.             case 'A' :
  187.                 fprintf(fout,"%c %d %s",cmd,LAYER_GATE,&buf[2]);
  188.                 Line++;
  189.                 break;
  190.             case 'C' :
  191.                 fprintf(fout,"%c %d %s",cmd,LAYER_GATE,&buf[2]);
  192.                 Line++;
  193.                 break;
  194.             case 'T' :
  195.                 fprintf(fout,"%c %d %s",cmd,LAYER_PINNAM,
  196.                     &buf[2]);
  197.                 Line = Line++;
  198.                 break;
  199.          
  200.             default  :
  201.                 if((rep=fopen("eefilter.rep","a"))!=NULL){
  202.                     fprintf(rep,"\n*******\nErrors\n");
  203.                     fprintf(rep,"Error: found line %d\n",
  204.                         Line);
  205.                     fprintf(rep,"Line :%s:\n",buf);
  206.                     fclose(rep);
  207.                 }
  208.                 break;
  209.         } 
  210.  
  211. /* end of switch statemant, check words in other half of ELSE statment */
  212.  
  213.         } else {
  214.         fprintf(fout,"%s",buf);
  215.         }
  216. /* end of word checks */
  217.     }while(!feof(fin));    /* outer loop of basic filter */
  218. }
  219. int do_move()
  220. {
  221.     char c;
  222.     if((fin=fopen(Outfile,"r"))==NULL){
  223.         fprintf(stderr,"Cant reopen temp file for reading\n");
  224.         return(-1);
  225.     }
  226.     if((fout=fopen(Infile,"w"))==NULL){
  227.         fprintf(stderr,"Cant open %s for writting\n",Infile);
  228.         return(-1);
  229.     }
  230.     while((c=getc(fin))!=EOF)
  231.         putc(c,fout);
  232.     return(0);
  233. }
  234.