=================================================================== RCS file: /home/cvs/OpenXM/src/util/oxgentexi.c,v retrieving revision 1.13 retrieving revision 1.18 diff -u -p -r1.13 -r1.18 --- OpenXM/src/util/oxgentexi.c 2005/07/21 11:29:16 1.13 +++ OpenXM/src/util/oxgentexi.c 2017/03/28 12:00:04 1.18 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM/src/util/oxgentexi.c,v 1.12 2005/07/03 08:27:38 ohara Exp $ */ +/* $OpenXM: OpenXM/src/util/oxgentexi.c,v 1.17 2017/03/19 00:22:16 takayama Exp $ */ #include #include @@ -21,6 +21,7 @@ struct item { char *changelog; char *examplev[VMAX]; char *exampleDescv[VMAX]; + char *options; int examplec; int refc; char *refv[VMAX]; @@ -32,6 +33,18 @@ struct item *getItem(void); char *str(char *key); char *str2(char *key,int size); int cmpItem(struct item *it,struct item *it2); +void printItem(struct item *it); +void shell(struct item *v[],int n); +void printMenu(FILE *fp, struct item **it, int n); +void printBye(); +void printTitlePage(char *title, char *author,char *infoName); +void printItem(struct item *it); +void printTexi(FILE *fp, struct item *it); +void printTexi_common(FILE *fp,struct item *it); +void printTexi0(FILE *fp, struct item *it); +void printTexi1(FILE *fp, struct item *it); +void outputExample(FILE *fp,char *s); +void outputOfExample(char *com); char *S; int Ssize = 256; @@ -47,9 +60,10 @@ char *Author = NULL; char *InfoName = NULL; int NoSorting = 0; +int main(int argc,char *argv[]) { char *t; - int p,c,n,i; + int c,n,i; struct item *tt; struct item *items[ITEMMAX]; @@ -143,6 +157,7 @@ main(int argc,char *argv[]) { exit(0); } +int genInclude(char *name) { char fname[4098]; FILE *fp; @@ -162,6 +177,7 @@ genInclude(char *name) { return 0; } +int cmpItem(struct item *it,struct item *it2) { return strcmp(it->sortKey,it2->sortKey); } @@ -172,13 +188,11 @@ struct item * newItem(){ fprintf(stderr,"newItem: No more memory.\n"); exit(20); } - a->argc = 0; a->optc = 0; a->refc=0; a->examplec = 0; - a->type=0; - a->category = a->category2 = a->name = a->shortDescription - = a->description = a->author = a->algorithm = a->sortKey = NULL; + memset(a, 0, sizeof(struct item)); return a; } - + +int nextToken(char *key,int n) { static int pos = 0; int i = 0; @@ -216,6 +230,7 @@ nextToken(char *key,int n) { return pos; } +void printItem(struct item *it) { int i; if (it == NULL) return; @@ -241,6 +256,8 @@ printItem(struct item *it) { printf("exampleDescv[%d]=%s\n",i,it->exampleDescv[i]); if (it->changelog != NULL) printf("changelog=%s\n",it->changelog); + if (it->options != NULL) + printf("options=%s\n",it->options); for (i=0; irefc; i++) printf(" refv[%d]=%s\n",i,it->refv[i]); if (it->author != NULL) @@ -274,7 +291,7 @@ char *str2(char *key,int size) { return s; } char *getCategory(char *key) { - int i,n; + int i; char *s; s = str(key); for (i=0; idescription = str2(&(S[pp]),pOld-pp); } - if (strcmp(key2,"example:") == 0) { + if ((strcmp(key2,"example:") == 0) || (strcmp(key2,"Example:") == 0)) { it->examplev[examplec++] = str2(&(S[pp]),pOld-pp); it->exampleDescv[examplec-1] = ""; it->examplec = examplec; @@ -423,6 +444,9 @@ struct item *getItem() { if (strcmp(key2,"changelog:") == 0) { it->changelog = str2(&(S[pp]),pOld-pp); } + if ((strcmp(key2,"options:") == 0) || (strcmp(key2,"Options:")==0)) { + it->options = str2(&(S[pp]),pOld-pp); + } }else if (strcmp(key,"ref:") == 0) { argc = 0; while ((pp=nextToken(key,LIMIT)) >= 0) { @@ -438,11 +462,10 @@ struct item *getItem() { } } }else{ - fprintf(stderr,"Error: unknown keyword << %s >> at %s.\n",key, it->name); + fprintf(stderr,"Warning: unknown keyword << %s >> at %s.\n",key, it->name); fprintf(stderr," The error occurs around "); for (i=pp ; i < p; i++) fputc(S[i],stderr); fprintf(stderr,"\n\n"); - exit(1); p = nextToken(key,LIMIT); } }while (p >= 0); @@ -450,6 +473,7 @@ struct item *getItem() { return it; } +void shell(struct item *v[],int n) { int gap,i,j; struct item *temp; @@ -465,6 +489,7 @@ shell(struct item *v[],int n) { } } +void printMenu(FILE *fp, struct item **it, int n) { int i,m; @@ -479,14 +504,17 @@ printMenu(FILE *fp, struct item **it, int n) { } } +void printTexi(FILE *fp, struct item *it) { - int i; - if (it->type == 1) return printTexi1(fp,it); - else return printTexi0(fp,it); + if (it->type == 1) printTexi1(fp,it); + else printTexi0(fp,it); + return; } +void printTexi_common(FILE *fp,struct item *it) { int i; + int elen; if ((it->shortDescription != NULL) || (it->refc >0) || (it->examplec > 0)) { if (it->description != NULL) { @@ -516,7 +544,9 @@ printTexi_common(FILE *fp,struct item *it) { if (GenExample) { outputOfExample(it->examplev[i]); } - fprintf(fp,"@end example\n"); + elen=strlen(it->examplev[i]); + if ((it->examplev[i])[elen-1] == '\n') fprintf(fp,"@end example\n"); + else fprintf(fp,"\n@end example\n"); if (it->exampleDescv[i] != NULL && strlen(it->exampleDescv[i]) > 0) { fprintf(fp,"%s\n\n",it->exampleDescv[i]); } @@ -529,6 +559,10 @@ printTexi_common(FILE *fp,struct item *it) { fprintf(fp,"\n\nChange Log:\n@quotation\n"); fprintf(fp,"%s\n@end quotation\n",it->changelog); } + if (it->options != NULL) { + fprintf(fp,"\nOptinal variabes:"); + fprintf(fp,"%s\n\n",it->options); + } if (it->refc > 0) { fprintf(fp,"\n\nReferences:\n@quotation\n"); for (i=0; i refc; i++) { @@ -540,6 +574,7 @@ printTexi_common(FILE *fp,struct item *it) { fprintf(fp,"\n"); } +void printTexi0(FILE *fp, struct item *it) { int i; @@ -613,6 +648,7 @@ printTexi0(FILE *fp, struct item *it) { printTexi_common(fp,it); } +void printTexi1(FILE *fp, struct item *it) { int i; /* For it->type == 1 */ @@ -640,6 +676,7 @@ printTexi1(FILE *fp, struct item *it) { printTexi_common(fp,it); } +void outputExample(FILE *fp,char *s) { int i; /* Remove unnecessary spaces at the tail. */ @@ -664,6 +701,7 @@ outputExample(FILE *fp,char *s) { } } +void outputOfExample(char *com) { FILE *fp2; int c; @@ -691,6 +729,7 @@ outputOfExample(char *com) { putchar('\n'); } +void printTitlePage(char *title, char *author,char *infoName) { printf("\\input texinfo\n"); printf("@def@colon{:}\n\n"); @@ -714,6 +753,7 @@ printTitlePage(char *title, char *author,char *infoNam printf("@node Top,, (dir), (dir)\n\n"); } +void printBye() { printf("@node Index,,, Top\n"); printf("@unnumbered Index\n");