=================================================================== RCS file: /home/cvs/OpenXM/src/util/oxgentexi.c,v retrieving revision 1.7 retrieving revision 1.14 diff -u -p -r1.7 -r1.14 --- OpenXM/src/util/oxgentexi.c 2005/04/11 11:13:32 1.7 +++ OpenXM/src/util/oxgentexi.c 2005/08/15 16:28:59 1.14 @@ -1,6 +1,8 @@ -/* $OpenXM: OpenXM/src/util/oxgentexi.c,v 1.6 2005/04/06 09:26:29 takayama Exp $ */ +/* $OpenXM: OpenXM/src/util/oxgentexi.c,v 1.13 2005/07/21 11:29:16 takayama Exp $ */ #include +#include +#include int Debug = 0; #define VMAX 20 #define LIMIT 65536 @@ -16,6 +18,7 @@ struct item { char *shortDescription; char *description; char *algorithm; + char *changelog; char *examplev[VMAX]; char *exampleDescv[VMAX]; int examplec; @@ -169,10 +172,7 @@ 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; } @@ -236,6 +236,8 @@ printItem(struct item *it) { printf("examplev[%d]=%s\n",i,it->examplev[i]); for (i=0; i examplec; i++) printf("exampleDescv[%d]=%s\n",i,it->exampleDescv[i]); + if (it->changelog != NULL) + printf("changelog=%s\n",it->changelog); for (i=0; irefc; i++) printf(" refv[%d]=%s\n",i,it->refv[i]); if (it->author != NULL) @@ -375,6 +377,7 @@ struct item *getItem() { if (strcmp(key,"description:") == 0 || strcmp(key,"algorithm:") == 0 || strcmp(key,"author:") == 0 || + strcmp(key,"changelog:") == 0 || strcmp(key,"sortKey:") == 0 || strcmp(key,"example:") == 0 || strcmp(key,"example_description:") ==0 ) { @@ -414,6 +417,9 @@ struct item *getItem() { if (strcmp(key2,"algorithm:") == 0) { it->algorithm = str2(&(S[pp]),pOld-pp); } + if (strcmp(key2,"changelog:") == 0) { + it->changelog = str2(&(S[pp]),pOld-pp); + } }else if (strcmp(key,"ref:") == 0) { argc = 0; while ((pp=nextToken(key,LIMIT)) >= 0) { @@ -478,13 +484,21 @@ printTexi(FILE *fp, struct item *it) { printTexi_common(FILE *fp,struct item *it) { int i; - if (it->description != NULL) { - fprintf(fp,"%s\n\n",it->description); + if ((it->shortDescription != NULL) || (it->refc >0) + || (it->examplec > 0)) { + if (it->description != NULL) { + fprintf(fp,"\nDescription:\n"); + fprintf(fp,"@quotation\n%s\n@end quotation\n\n",it->description); + } + }else { + 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); + fprintf(fp,"\n\n@noindent\nAlgorithm: \n@quotation\n"); + fprintf(fp,"%s\n@end quotation\n",it->algorithm); } if (it->examplec > 0) { @@ -508,14 +522,17 @@ printTexi_common(FILE *fp,struct item *it) { if (it->author != NULL) { fprintf(fp,"Author : %s\n\n",it->author); } + if (it->changelog != NULL) { + fprintf(fp,"\n\nChange Log:\n@quotation\n"); + fprintf(fp,"%s\n@end quotation\n",it->changelog); + } if (it->refc > 0) { - fprintf(fp,"@table @t\n"); - fprintf(fp,"@item References\n"); + fprintf(fp,"\n\nReferences:\n@quotation\n"); for (i=0; i refc; i++) { - fprintf(fp,"@code{%s} ",it->refv[i]); - if (i != it->refc-1) fprintf(fp,", "); + fprintf(fp," @code{%s} ",it->refv[i]); + if (i != it->refc-1) fprintf(fp,", \n"); } - fprintf(fp,"\n@end table\n"); + fprintf(fp,"\n@end quotation\n"); } fprintf(fp,"\n"); } @@ -622,6 +639,12 @@ printTexi1(FILE *fp, struct item *it) { outputExample(FILE *fp,char *s) { int i; + /* Remove unnecessary spaces at the tail. */ + for (i=strlen(s)-1; i>=0; i--) { + if (s[i] == '\n') break; + else if (s[i] <= ' ') {s[i] = 0;} + else break; + } for (i=0; s[i] != 0; i++) { if (s[i] == '@') { if (s[i+1] == '{') {fprintf(fp,"%s","@{"); i += 1;} @@ -676,6 +699,7 @@ printTitlePage(char *title, char *author,char *infoNam printf("@overfullrule=0pt\n"); if (infoName != NULL) printf("@setfilename %s\n",infoName); + else printf("@setfilename asir-contrib-infoName-is-not-set\n"); printf("@settitle %s\n",Title); printf("@titlepage\n");