=================================================================== RCS file: /home/cvs/OpenXM/src/asir-doc/html_tools/gen_hh_new.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- OpenXM/src/asir-doc/html_tools/gen_hh_new.c 2009/10/27 01:31:24 1.4 +++ OpenXM/src/asir-doc/html_tools/gen_hh_new.c 2013/08/31 13:45:59 1.5 @@ -1,11 +1,13 @@ #include +#include #include +#if !defined(_MSC_VER) #include +#else +#include +#endif -gen_hhp(out,n,prefix,lang) -char *out; -int n; -char *prefix,*lang; +void gen_hhp(char *out, int n, char *prefix, char *lang, char *htmldir) { int i; FILE *outf; @@ -15,20 +17,19 @@ char *prefix,*lang; fprintf(outf,"Compatibility=1.1 or later\n"); fprintf(outf,"Compiled file=%shelp-%s.chm\n",prefix,lang); fprintf(outf,"Contents file=%shelp-%s.hhc\n",prefix,lang); - fprintf(outf,"Default topic=html\\%s-%s_toc.html\n",prefix,lang); + fprintf(outf,"Default topic=%s\\%s-%s_toc.html\n",htmldir,prefix,lang); fprintf(outf,"Display compile progress=No\n"); fprintf(outf,"Index file=%shelp-%s.hhk\n",prefix,lang); fprintf(outf,"Language=0x411 “ú–{Œê\n\n\n[FILES]\n"); - fprintf(outf,"html\\%s-%s_toc.html\n",prefix,lang); + fprintf(outf,"%s\\%s-%s_toc.html\n",htmldir,prefix,lang); for ( i = 1; i <= n; i++ ) - fprintf(outf,"html\\%s-%s_%d.html\n",prefix,lang,i); + fprintf(outf,"%s\\%s-%s_%d.html\n",htmldir,prefix,lang,i); fprintf(outf,"\n[INFOTYPES]\n"); } -conv_toc(in,out,prefix_) -char *in,*out,*prefix_; +void conv_toc(char *in, char *out, char *prefix_, char *htmldir) { char buf[BUFSIZ]; char *fname,*ptr,*ptr1; @@ -64,15 +65,14 @@ char *in,*out,*prefix_; *ptr1 = 0; fprintf(outf,"
  • \n"); fprintf(outf,"\n",ptr); - fprintf(outf,"\n",fname); + fprintf(outf,"\n",htmldir,fname); fprintf(outf,"\n"); } } fprintf(outf,"\n\n"); } -conv_index (in,out,prefix_) -char *in,*out,*prefix_; +void conv_index (char *in, char *out, char *prefix_, char *htmldir) { char buf[BUFSIZ]; char *fname,*ptr,*ptr1; @@ -107,36 +107,26 @@ char *in,*out,*prefix_; *ptr1 = 0; fprintf(outf,"
  • \n"); fprintf(outf,"\n",ptr); - fprintf(outf,"\n",fname); + fprintf(outf,"\n",htmldir,fname); fprintf(outf,"\n"); } } fprintf(outf,"\n"); } -main(argc,argv) -int argc; -char **argv; +#if !defined(_MSC_VER) +int find_files(char *indir,char *prefix) { DIR *d; struct dirent *dent; - int i,n,n1,len; + int n=0,n1; char *ptr,*ptr1; - char *indir,*outdir; - char in[BUFSIZ],out[BUFSIZ],name[BUFSIZ],prefix_[BUFSIZ]; - char *prefix,*lang; - - indir = argv[1]; - outdir = argv[2]; - prefix = argv[3]; - lang = argv[4]; - len = strlen(prefix); - sprintf(in,"%s/%s-%s_toc.html",indir,prefix,lang); - sprintf(out,"%s/%shelp-%s.hhc",outdir,prefix,lang); - sprintf(prefix_,"%s-%s_",prefix,lang); - conv_toc(in,out,prefix_); + char name[BUFSIZ]; + int len=strlen(prefix); d = opendir(indir); - n = 0; + if(!d) { + exit(1); + } while ( dent = readdir(d) ) { strcpy(name,dent->d_name); ptr = name+len; @@ -154,10 +144,64 @@ char **argv; if ( n1 > n ) n = n1; } + closedir(d); + return n; +} +#else +int find_files(char *indir,char *prefix) +{ + HANDLE h; + WIN32_FIND_DATA fd; + char *ptr,*ptr1; + char pattern[BUFSIZ]; + char name[BUFSIZ]; + int n=0,n1; + int len=strlen(prefix); + sprintf(pattern, "%s\\%s*_*.*", indir, prefix); + h = FindFirstFileEx(pattern, FindExInfoStandard, &fd, FindExSearchNameMatch, NULL, 0); + if(h == INVALID_HANDLE_VALUE) { + exit(1); + } + do { + strcpy(name,fd.cFileName); + ptr = name+len; + ptr = strchr(ptr,'_') + 1; + ptr1 = strchr(ptr,'.'); + *ptr1 = 0; + if ( !strcmp(ptr,"toc") ) + continue; + n1 = atoi(ptr); + if ( n1 > n ) + n = n1; + } while(FindNextFile(h, &fd)); + return n; +} +#endif + +int main(int argc, char *argv[]) +{ + int n; + char *indir,*outdir; + char in[BUFSIZ],out[BUFSIZ],prefix_[BUFSIZ]; + char *prefix,*lang; + char *htmldir = "html"; + + indir = argv[1]; + outdir = argv[2]; + prefix = argv[3]; + lang = argv[4]; + if(argc>5) { + htmldir = argv[5]; + } + sprintf(in,"%s/%s-%s_toc.html",indir,prefix,lang); + sprintf(out,"%s/%shelp-%s.hhc",outdir,prefix,lang); + sprintf(prefix_,"%s-%s_",prefix,lang); + conv_toc(in,out,prefix_,htmldir); + n = find_files(indir,prefix); sprintf(in,"%s/%s-%s_%d.html",indir,prefix,lang,n); sprintf(out,"%s/%shelp-%s.hhk",outdir,prefix,lang); - conv_index(in,out,prefix_); + conv_index(in,out,prefix_,htmldir); sprintf(out,"%s/%shelp-%s.hhp",outdir,prefix,lang); - gen_hhp(out,n,prefix,lang); - exit(0); + gen_hhp(out,n,prefix,lang,htmldir); + return 0; }