version 1.1, 2002/01/27 07:13:28 |
version 1.4, 2002/08/08 08:56:32 |
|
|
/* $OpenXM$ */ |
/* $OpenXM: OpenXM/src/asir-contrib/packages/doc/gentexi.c,v 1.3 2002/02/09 08:50:48 takayama Exp $ */ |
|
|
#include <stdio.h> |
#include <stdio.h> |
int Debug = 0; |
int Debug = 0; |
|
|
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); |
|
|
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 96 main(int argc,char *argv[]) { |
|
Line 102 main(int argc,char *argv[]) { |
|
if (Debug) fprintf(stderr,"Done.\n"); |
if (Debug) fprintf(stderr,"Done.\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 138 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 196 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 332 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 349 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 380 struct item *getItem() { |
|
} |
} |
} |
} |
}else{ |
}else{ |
fprintf(stderr,"Unknown keyword at %s\n",it->name); |
fprintf(stderr,"Unknown keyword << %s >> at %s\n",key, it->name); |
exit(10); |
exit(10); |
} |
} |
}while (p >= 0); |
}while (p >= 0); |
Line 431 printTexi(FILE *fp, struct item *it) { |
|
Line 461 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 511 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'); |
|
} |