[BACK]Return to gentexi.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-contrib / packages / doc

Diff for /OpenXM/src/asir-contrib/packages/doc/Attic/gentexi.c between version 1.1 and 1.6

version 1.1, 2002/01/27 07:13:28 version 1.6, 2002/10/23 01:11:41
Line 1 
Line 1 
 /*  $OpenXM$  */   /*  $OpenXM: OpenXM/src/asir-contrib/packages/doc/gentexi.c,v 1.5 2002/08/23 03:26:16 noro Exp $  */
   
 #include <stdio.h>  #include <stdio.h>
 int Debug = 0;  int Debug = 0;
Line 15  struct item {
Line 15  struct item {
   char *optv[VMAX];    char *optv[VMAX];
   char *shortDescription;    char *shortDescription;
   char *description;    char *description;
     char *algorithm;
   char *examplev[VMAX];    char *examplev[VMAX];
     char *exampleDescv[VMAX];
   int examplec;    int examplec;
   int refc;    int refc;
   char *refv[VMAX];    char *refv[VMAX];
     char *author;
 };  };
 struct item *getItem(void);  struct item *getItem(void);
 char *str(char *key);  char *str(char *key);
Line 31  int Sp = 0;
Line 34  int Sp = 0;
 char *Upnode;  char *Upnode;
 char *Category=NULL;  char *Category=NULL;
 char *Lang="en";  char *Lang="en";
   int Include = 0;
   int GenExample = 0;
   
 main(int argc,char *argv[]) {  main(int argc,char *argv[]) {
   char *t;    char *t;
   int p,c,n,i;    int p,c,n,i;
   struct item *tt;    struct item *tt;
   int Template = 0;  
   struct item *items[ITEMMAX];    struct item *items[ITEMMAX];
   
   Upnode = str("UNKNOWN");    Upnode = str("UNKNOWN");
Line 51  main(int argc,char *argv[]) {
Line 55  main(int argc,char *argv[]) {
       Lang = "en";        Lang = "en";
     }else if (strcmp(argv[i],"--ja") == 0) {      }else if (strcmp(argv[i],"--ja") == 0) {
       Lang = "ja";        Lang = "ja";
     }else if (strcmp(argv[i],"--template") == 0) {      }else if (strcmp(argv[i],"--include") == 0) {
       Template = 1;        Include = 1;
       }else if (strcmp(argv[i],"--example") == 0) {
         GenExample = 1;
     }else if (strcmp(argv[i],"--debug") == 0) {      }else if (strcmp(argv[i],"--debug") == 0) {
       Debug = 1;        Debug = 1;
     }else {      }else {
Line 95  main(int argc,char *argv[]) {
Line 101  main(int argc,char *argv[]) {
   shell(items,n);    shell(items,n);
   if (Debug) fprintf(stderr,"Done.\n");    if (Debug) fprintf(stderr,"Done.\n");
   
     printMenu(stdout,items,n);
   
   for (i=0; i<n; i++) {    for (i=0; i<n; i++) {
     if (Template) {  
       genTemplate(items[i]->name);  
     }  
     printTexi(stdout,items[i]);      printTexi(stdout,items[i]);
   }    }
     exit(0);
 }  }
   
 genTemplate(char *name) {  genInclude(char *name) {
   char fname[4098];    char fname[4098];
   FILE *fp;    FILE *fp;
     int c;
   
   sprintf(fname,"tmp/%s-auto-%s.texi",name,Lang);    sprintf(fname,"tmp/%s-auto-%s.texi",name,Lang);
   if (fopen(fname,"r") == NULL) {    fp = fopen(fname,"r");
     fp = fopen(fname,"w");    if (fp == NULL) {
     fclose(fp);      /* fprintf(stderr,"No file %s\n",fname); */
       return 0;
   }    }
     while ((c=fgetc(fp)) != EOF) {
       putchar(c);
     }
     putchar('\n');
     fclose(fp);
     return 0;
 }  }
   
 cmpItem(struct item *it,struct item *it2) {  cmpItem(struct item *it,struct item *it2) {
Line 127  struct item * newItem(){
Line 140  struct item * newItem(){
   }    }
   a->argc = 0; a->optc = 0; a->refc=0; a->examplec = 0;    a->argc = 0; a->optc = 0; a->refc=0; a->examplec = 0;
   a->category = a->category2 = a->name = a->shortDescription    a->category = a->category2 = a->name = a->shortDescription
     = a->description = NULL;      = a->description = a->author = a->algorithm = NULL;
   return a;    return a;
 }  }
   
Line 185  printItem(struct item *it) {
Line 198  printItem(struct item *it) {
     printf("shortDescription=%s\n",it->shortDescription);      printf("shortDescription=%s\n",it->shortDescription);
   if (it->description != NULL)    if (it->description != NULL)
     printf("description=%s\n",it->description);      printf("description=%s\n",it->description);
     if (it->algorithm != NULL)
       printf("algorithm=%s\n",it->algorithm);
   for (i=0; i <it->examplec; i++)    for (i=0; i <it->examplec; i++)
     printf("examplev[%d]=%s\n",i,it->examplev[i]);      printf("examplev[%d]=%s\n",i,it->examplev[i]);
     for (i=0; i <it->examplec; i++)
       printf("exampleDescv[%d]=%s\n",i,it->exampleDescv[i]);
   for (i=0; i<it->refc; i++)    for (i=0; i<it->refc; i++)
     printf("  refv[%d]=%s\n",i,it->refv[i]);      printf("  refv[%d]=%s\n",i,it->refv[i]);
     if (it->author != NULL)
       printf("author=%s\n",it->author);
   printf("\n");    printf("\n");
 }  }
   
Line 315  struct item *getItem() {
Line 334  struct item *getItem() {
     /* Get Description or Examples */      /* Get Description or Examples */
     if (strcmp(key,"end:") == 0) break;      if (strcmp(key,"end:") == 0) break;
     if (strcmp(key,"description:") == 0 ||      if (strcmp(key,"description:") == 0 ||
         strcmp(key,"example:") == 0) {          strcmp(key,"algorithm:") == 0 ||
           strcmp(key,"author:") == 0 ||
           strcmp(key,"example:") == 0 ||
                   strcmp(key,"example_description:") ==0 ) {
       pp = p;        pp = p;
       strcpy(key2,key);        strcpy(key2,key);
       do {        do {
Line 329  struct item *getItem() {
Line 351  struct item *getItem() {
       }        }
       if (strcmp(key2,"example:") == 0) {        if (strcmp(key2,"example:") == 0) {
         it->examplev[examplec++] = str2(&(S[pp]),pOld-pp);          it->examplev[examplec++] = str2(&(S[pp]),pOld-pp);
           it->exampleDescv[examplec-1] = "";
         it->examplec = examplec;          it->examplec = examplec;
         if (examplec > VMAX-1) {          if (examplec > VMAX-1) {
           fprintf(stderr,"Too many examples. \n");            fprintf(stderr,"Too many examples. \n");
           exit(20);            exit(20);
         }          }
       }        }
         if (strcmp(key2,"example_description:") == 0) {
           it->exampleDescv[examplec-1] = str2(&(S[pp]),pOld-pp);
         }
         if (strcmp(key2,"author:") == 0) {
           it->author = str2(&(S[pp]),pOld-pp);
         }
         if (strcmp(key2,"algorithm:") == 0) {
           it->algorithm = str2(&(S[pp]),pOld-pp);
         }
     }else if (strcmp(key,"ref:") == 0) {      }else if (strcmp(key,"ref:") == 0) {
       argc = 0;        argc = 0;
       while ((pp=nextToken(key,LIMIT)) >= 0) {        while ((pp=nextToken(key,LIMIT)) >= 0) {
Line 350  struct item *getItem() {
Line 382  struct item *getItem() {
         }          }
       }        }
     }else{      }else{
       fprintf(stderr,"Unknown keyword at %s\n",it->name);        fprintf(stderr,"Warning: unknown keyword << %s >> at %s. Ignored.\n",key, it->name);
       exit(10);        p = nextToken(key,LIMIT);
     }      }
   }while (p >= 0);    }while (p >= 0);
   
Line 373  shell(struct item *v[],int n) {
Line 405  shell(struct item *v[],int n) {
   }    }
 }  }
   
   printMenu(FILE *fp, struct item **it, int n) {
     int i;
   
     fprintf(fp,"@menu\n");
     for ( i = 0; i < n; i++ )
           fprintf(fp,"* %s::\n",it[i]->name);
     fprintf(fp,"@end menu\n");
   }
   
 printTexi(FILE *fp, struct item *it) {  printTexi(FILE *fp, struct item *it) {
   int i;    int i;
   fprintf(fp,"@c DO NOT EDIT THIS FILE. Generated by gentexi.\n");    fprintf(fp,"@c DO NOT EDIT THIS FILE. Generated by gentexi.\n");
Line 385  printTexi(FILE *fp, struct item *it) {
Line 426  printTexi(FILE *fp, struct item *it) {
     return ;      return ;
   }    }
   
   #if 0
   fprintf(fp,"@menu\n");    fprintf(fp,"@menu\n");
   fprintf(fp,"* %s\n",it->name);    fprintf(fp,"* %s::\n",it->name);
   fprintf(fp,"@end menu\n");    fprintf(fp,"@end menu\n");
   #endif
   fprintf(fp,"@node %s,,, %s\n",it->name,Upnode);    fprintf(fp,"@node %s,,, %s\n",it->name,Upnode);
   fprintf(fp,"@subsection @code{%s}\n",it->name);    fprintf(fp,"@subsection @code{%s}\n",it->name);
   fprintf(fp,"@findex %s\n",it->name);    fprintf(fp,"@findex %s\n",it->name);
Line 431  printTexi(FILE *fp, struct item *it) {
Line 474  printTexi(FILE *fp, struct item *it) {
   fprintf(fp,"@end table\n");    fprintf(fp,"@end table\n");
   
   /* include file */    /* include file */
   fprintf(fp,"@include tmp/%s-auto-en.texi\n",it->name);    if (Include) {
       if (genInclude(it->name))
         fprintf(fp,"@c @include tmp/%s-auto-en.texi\n",it->name);
     }
   fprintf(fp,"@c @itemize @bullet \n");    fprintf(fp,"@c @itemize @bullet \n");
   fprintf(fp,"@c @item \n");    fprintf(fp,"@c @item \n");
   fprintf(fp,"@c @end itemize\n");    fprintf(fp,"@c @end itemize\n");
   
     if (it->description != NULL) {
       fprintf(fp,"%s\n\n",it->description);
     }
   
     if (it->algorithm != NULL) {
       fprintf(fp,"\n\n@noindent\nAlgorithm: \n");
       fprintf(fp,"%s\n\n",it->algorithm);
     }
   
   if (it->examplec > 0) {    if (it->examplec > 0) {
     for (i=0; i<it->examplec; i++) {      for (i=0; i<it->examplec; i++) {
             if (it->examplec == 1) {
           fprintf(fp,"Example:\n");
             }else{
           fprintf(fp,"Example %d:\n",i);
             }
       fprintf(fp,"@example\n");        fprintf(fp,"@example\n");
       fprintf(fp,"%s\n",it->examplev[i]);        fprintf(fp,"%s\n",it->examplev[i]);
         if (GenExample) {
           outputOfExample(it->examplev[i]);
         }
       fprintf(fp,"@end example\n");        fprintf(fp,"@end example\n");
             if (it->exampleDescv[i] != NULL && strlen(it->exampleDescv[i]) > 0) {
                   fprintf(fp,"%s\n\n",it->exampleDescv[i]);
             }
     }      }
   }    }
     if (it->author != NULL) {
       fprintf(fp,"Author : %s\n\n",it->author);
     }
   if (it->refc > 0) {    if (it->refc > 0) {
     fprintf(fp,"@table @t\n");      fprintf(fp,"@table @t\n");
     fprintf(fp,"@item References\n");      fprintf(fp,"@item References\n");
Line 455  printTexi(FILE *fp, struct item *it) {
Line 524  printTexi(FILE *fp, struct item *it) {
   fprintf(fp,"\n");    fprintf(fp,"\n");
 }  }
   
   outputOfExample(char *com) {
     FILE *fp2;
     int c;
     fp2 = fopen("gentexi-in.tmp","w");
     if (fp2 == NULL) {
       fprintf(stderr,"Cannot open tentexi-in.tmp\n");
       exit(10);
     }
     system("rm -f gentexi-out.tmp");
     fprintf(fp2,"output(\"gentexi-out.tmp\")$\n");
     fprintf(fp2,"%s\n",com);
     fprintf(fp2,"output()$\n");
     fprintf(fp2,"quit;");
     fclose(fp2);
     system("asir <gentexi-in.tmp >/dev/null");
   
     fp2 = fopen("gentexi-out.tmp","r");
     if (fp2 == NULL) {
       fprintf(stderr,"Cannot open tentexi-in.tmp\n");
       exit(10);
     }
     while ((c=fgetc(fp2)) != EOF) {
       putchar(c);
     }
     putchar('\n');
   }

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.6

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>