Annotation of OpenXM/src/cfep/package/gendoc.c, Revision 1.1
1.1 ! takayama 1: /*
! 2: Generates html files for help under
! 3: ${OpenXM_HOME}/doc/cfep/html-ja_JP.utf8
! 4: cf. ~/.cfep/html-ja_JP.utf8
! 5:
! 6: mdimport ${OpenXM_HOME}/doc/cfep/html-ja_JP.utf8
! 7: */
! 8: #include <stdio.h>
! 9: #include <stdlib.h>
! 10: #include <string.h>
! 11: #include <sys/types.h>
! 12: #include <unistd.h>
! 13: #include <locale.h>
! 14:
! 15:
! 16: char *extractFileName(char *s);
! 17: char *extractFolderName(char *s);
! 18: int translate(char *dir,char *outputdirTop);
! 19: int Sjis = 0;
! 20:
! 21: main(int argc, char *argv[]) {
! 22: char com[1024];
! 23: char workdir[1024];
! 24: char oxhome[1024];
! 25: int i;
! 26: if (argc < 2) {
! 27: fprintf(stderr,"gendoc foldernameOfHtmlHelp ... \n");
! 28: if (Sjis) fprintf(stderr," output to ${OpenXM_HOME}/doc/cfep/html-ja_JP.sjis\n");
! 29: else fprintf(stderr," output to ${OpenXM_HOME}/doc/cfep/html-ja_JP.utf8\n");
! 30: fprintf(stderr,"nkf is used.\n");
! 31: fprintf(stderr,"Example: gendoc ~/OX4/OpenXM/src/asir-doc/html-jp\n");
! 32: exit(0);
! 33: }
! 34: setlocale(LC_ALL,"C");
! 35: /* if ja_JP.eucJP is set, 01 is added to each bytes of argv[i] on mac. cf. misc/argvtest* */
! 36: /* A strange things will happen when japanese file names are used. */
! 37: if (!getenv("OpenXM_HOME")) {
! 38: fprintf(stderr,"OpenXM_HOME is not set.\n"); exit(1);
! 39: }
! 40: strcpy(oxhome,getenv("OpenXM_HOME"));
! 41: if (Sjis) sprintf(workdir,"%s/doc/cfep/html-ja_JP.sjis",oxhome);
! 42: else sprintf(workdir,"%s/doc/cfep/html-ja_JP.utf8",oxhome);
! 43:
! 44: sprintf(com,"mkdir -p %s",workdir);
! 45: system(com);
! 46:
! 47: for (i=1; i<argc; i++) {
! 48: translate(argv[i],workdir);
! 49: }
! 50:
! 51: }
! 52:
! 53: int translate(char *dir,char *outputdirTop) {
! 54: char com[1024];
! 55: FILE *fp;
! 56: FILE *fp2;
! 57: int first,i;
! 58: first = 1;
! 59: char *folder;
! 60: char oname[1024*3];
! 61: char *fname;
! 62: char longFname[1024];
! 63: sprintf(com,"ls %s/*.html >/tmp/tmp-gendoc.txt",dir);
! 64: system(com);
! 65:
! 66: fp = fopen("/tmp/tmp-gendoc.txt","r");
! 67: while (fgets(longFname,1000,fp)) {
! 68: for (i=0; i<strlen(longFname); i++) {
! 69: if (longFname[i] == '\n') longFname[i] = 0;
! 70: }
! 71: if (first) {
! 72: folder = extractFolderName(longFname);
! 73: sprintf(com,"mkdir -p %s/%s",outputdirTop,folder);
! 74: fprintf(stderr,"%s\n",com);
! 75: system(com);
! 76: first = 0;
! 77: }
! 78: fname = extractFileName(longFname);
! 79: sprintf(oname,"%s/%s/%s",outputdirTop,folder,fname);
! 80: fp2 = fopen(oname,"w");
! 81: if (Sjis) fprintf(fp2,"<HTML>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=SJIS\">\n");
! 82: else fprintf(fp2,"<HTML>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n");
! 83: fclose(fp2);
! 84: if (Sjis) sprintf(com,"nkf -s %s | sed -e 's/<HTML>//g' >>%s",longFname,oname);
! 85: else sprintf(com,"nkf -w %s | sed -e 's/<HTML>//g' >>%s",longFname,oname);
! 86: printf("%s\n",com);
! 87: system(com);
! 88: }
! 89: system("rm -f /tmp/tmp-gendoc.txt");
! 90: return 0;
! 91: }
! 92:
! 93: char *extractFileName(char *s) {
! 94: int i,n,start;
! 95: char *ans;
! 96: start = 0;
! 97: n = strlen(s);
! 98: ans = (char *)malloc(n+10);
! 99: strcpy(ans,"tmp.html");
! 100: for (i=n-1; i>=0; i--) {
! 101: if (s[i] == '/') {
! 102: start = i+1;
! 103: break;
! 104: }
! 105: }
! 106: if (start < n) strcpy(ans,&(s[start]));
! 107: for (i=0; i<strlen(ans); i++) {
! 108: if (ans[i] < ' ') ans[i]=0;
! 109: }
! 110: return ans;
! 111: }
! 112:
! 113: char *extractFolderName(char *s) {
! 114: int i,n,start,end;
! 115: char *ans;
! 116: start = end = -1;
! 117: n = strlen(s);
! 118: ans = (char *)malloc(n+5);
! 119: strcpy(ans,"tmp");
! 120: for (i=n-1; i>=0; i--) {
! 121: if (s[i] == '/') {
! 122: i--; end = i;
! 123: for ( ; i>=0; i--) {
! 124: if (s[i] == '/') {
! 125: start = i+1;
! 126: break;
! 127: }
! 128: }
! 129: break;
! 130: }
! 131: }
! 132: if ((start>=0) && (end >=0)) strcpy(ans,&(s[start]));
! 133: ans[end-start+1] = 0;
! 134: for (i=0; i<strlen(ans); i++) {
! 135: if (ans[i] < ' ') ans[i]=0;
! 136: }
! 137: return ans;
! 138: }
! 139:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>