summaryrefslogtreecommitdiff
path: root/language/korean/HLaTeX/contrib/hbibtex.c
diff options
context:
space:
mode:
Diffstat (limited to 'language/korean/HLaTeX/contrib/hbibtex.c')
-rw-r--r--language/korean/HLaTeX/contrib/hbibtex.c90
1 files changed, 90 insertions, 0 deletions
diff --git a/language/korean/HLaTeX/contrib/hbibtex.c b/language/korean/HLaTeX/contrib/hbibtex.c
new file mode 100644
index 0000000000..0124461c56
--- /dev/null
+++ b/language/korean/HLaTeX/contrib/hbibtex.c
@@ -0,0 +1,90 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define HEXA_STRING "0123456789abcdef"
+
+#ifdef WIN32
+#include <io.h>
+#include <ctype.h>
+#define MKSTEMP mktemp
+#else
+#define MKSTEMP mkstemp
+#endif
+
+int to_8bit(char *);
+
+main(int argc, char *argv[])
+{
+ int i;
+ char args[128], cmd[128];
+
+#ifdef WIN32
+ strcpy(args, "");
+#else
+ bzero(args, 128);
+#endif
+
+ for(i=1; i<argc; i++) {
+ strcat(args, " ");
+ strcat(args, argv[i]);
+ }
+
+ to_8bit(argv[argc-1]);
+ sprintf(cmd, "bibtex %s", args);
+ system(cmd);
+
+ exit(0);
+}
+
+int to_8bit(char *bib) {
+ FILE *in, *out;
+ int x;
+ char line[1024], *l, *h1, *h2, tempfile[10];
+
+ l=strrchr(bib, '.');
+ if(l==NULL || strcmp(l, ".aux")!=0) {
+ strcat(bib, ".aux");
+ }
+
+ in = fopen(bib, "r");
+ if(!in) {
+ printf("\tError opening auxiliary file \"%s\"!!!\n", bib);
+ exit(1);
+ }
+
+ strcpy(tempfile, "BIBXXXXXX");
+ MKSTEMP(tempfile);
+ out = fopen(tempfile, "w");
+ if(!out) {
+ printf("\tError opening temporary file \"%s\"!!!\n", tempfile);
+ exit(1);
+ }
+
+ while(fgets(line, 1024, in)) {
+ l=line;
+ while(*l) {
+ if(*l=='^'&&*(l+1)=='^'
+ &&(h1=strchr(HEXA_STRING, *(l+2)))
+ &&(h2=strchr(HEXA_STRING, *(l+3)))) {
+ if(*h1>'9') x=*h1-87;
+ else x=*h1-48;
+ x*=16;
+ if(*h2>'9') x+=*h2-87;
+ else x+=*h2-48;
+ fputc(x, out);
+ l+=4;
+ }
+ else {
+ fputc(*l++, out);
+ }
+ }
+ }
+ fflush(NULL);
+ fclose(in);
+ fclose(out);
+
+ rename(tempfile, bib);
+
+ return(1);
+}