/* checking last page */ int lastpage(const char *filename) { int i,cc,num= -1; char logfile[32],numbuff[16]; FILE *fp; for (i=strlen(filename);i>=0;i--) { if (filename[i]=='.') { strncpy(logfile,filename,i); sprintf(&logfile[i],".log"); break; } } if (i==-1) sprintf(logfile,"%s.log",filename); if(kpse_in_name_ok(logfile)) fp=fopen(logfile,"r"); else fp=NULL; if (fp==NULL) { fprintf(stderr,"No log file, %s.\n",logfile); exit(0); } while (1) { cc=fgetc(fp); if (cc==EOF) break; else if (cc=='[') { for (i=0;;i++) { cc=fgetc(fp); if (((i==0)&&(cc=='-'))||((cc>='0')&&(cc<='9'))) numbuff[i]=cc; else { numbuff[i]='\0'; break; } } if (strlen(numbuff)>0) num=atoi(numbuff); } } fclose(fp); return num; }
/* read style file */ void styread(const char *filename) { int i,cc; char buff[4096],tmp[4096]; filename = KP_find_file(&kp_ist,filename); if(kpse_in_name_ok(filename)) fp=fopen(filename,"rb"); else fp=NULL; if (fp==NULL) { fprintf(stderr,"%s does not exist.\n",filename); exit(0); } for (i=0;;i++) { if (fgets(buff,4095,fp)==NULL) break; if (getparam(buff,"keyword",keyword)) continue; if (getparachar(buff,"arg_open",&arg_open)) continue; if (getparachar(buff,"arg_close",&arg_close)) continue; if (getparachar(buff,"range_open",&range_open)) continue; if (getparachar(buff,"range_close",&range_close)) continue; if (getparachar(buff,"level",&level)) continue; if (getparachar(buff,"actual",&actual)) continue; if (getparachar(buff,"encap",&encap)) continue; if (getparachar(buff,"quote","e)) continue; if (getparachar(buff,"escape",&escape)) continue; if (getparam(buff,"preamble",preamble)) continue; if (getparam(buff,"postamble",postamble)) continue; if (getparam(buff,"group_skip",group_skip)) continue; if (getparam(buff,"lethead_prefix",lethead_prefix)) continue; if (getparam(buff,"heading_prefix",lethead_prefix)) continue; if (getparam(buff,"lethead_suffix",lethead_suffix)) continue; if (getparam(buff,"heading_suffix",lethead_suffix)) continue; if (getparam(buff,"symhead_positive",symhead_positive)) continue; if (getparam(buff,"symhead_negative",symhead_negative)) continue; if (getparam(buff,"numhead_positive",numhead_positive)) continue; if (getparam(buff,"numhead_negative",numhead_negative)) continue; cc=scompare(buff,"lethead_flag"); if (cc!= -1) { lethead_flag=atoi(&buff[cc]); continue; } cc=scompare(buff,"heading_flag"); if (cc!= -1) { lethead_flag=atoi(&buff[cc]); continue; } cc=scompare(buff,"priority"); if (cc!= -1) { priority=atoi(&buff[cc]); continue; } if (getparam(buff,"item_0",item_0)) continue; if (getparam(buff,"item_1",item_1)) continue; if (getparam(buff,"item_2",item_2)) continue; if (getparam(buff,"item_2",item_2)) continue; if (getparam(buff,"item_01",item_01)) continue; if (getparam(buff,"item_x1",item_x1)) continue; if (getparam(buff,"item_12",item_12)) continue; if (getparam(buff,"item_x2",item_x2)) continue; if (getparam(buff,"delim_0",delim_0)) continue; if (getparam(buff,"delim_1",delim_1)) continue; if (getparam(buff,"delim_2",delim_2)) continue; if (getparam(buff,"delim_n",delim_n)) continue; if (getparam(buff,"delim_r",delim_r)) continue; if (getparam(buff,"delim_t",delim_t)) continue; if (getparam(buff,"suffix_2p",suffix_2p)) continue; if (getparam(buff,"suffix_3p",suffix_3p)) continue; if (getparam(buff,"suffix_mp",suffix_mp)) continue; if (getparam(buff,"encap_prefix",encap_prefix)) continue; if (getparam(buff,"encap_infix",encap_infix)) continue; if (getparam(buff,"encap_suffix",encap_suffix)) continue; cc=scompare(buff,"line_max"); if (cc!= -1) { line_max=atoi(&buff[cc]); continue; } if (getparam(buff,"indent_space",indent_space)) continue; cc=scompare(buff,"indent_length"); if (cc!= -1) { indent_length=atoi(&buff[cc]); continue; } if (getparam(buff,"symbol",symbol)) continue; cc=scompare(buff,"symbol_flag"); if (cc!= -1) { symbol_flag=atoi(&buff[cc]); continue; } cc=scompare(buff,"letter_head"); if (cc!= -1) { letter_head=atoi(&buff[cc]); continue; } if (getparam(buff,"atama",tmp)) { multibyte_to_widechar(atama,STYBUFSIZE,tmp); continue; } if (getparam(buff,"tumunja",tmp)) { multibyte_to_widechar(tumunja,STYBUFSIZE,tmp); continue; } if (getparam(buff,"hanzi_head",tmp)) { multibyte_to_widechar(hanzi_head,STYBUFSIZE,tmp); continue; } if (getparam(buff,"page_compositor",page_compositor)) continue; if (getparam(buff,"page_precedence",page_precedence)) continue; if (getparam(buff,"character_order",character_order)) continue; if (getparam(buff,"icu_locale", icu_locale )) continue; cc=scompare(buff,"icu_rules"); if (cc!= -1) { escape_mode=1; getparam(buff,"icu_rules",icu_rules); escape_mode=0; continue; } if (getparam(buff,"icu_attributes", icu_attr_str )) continue; } fclose(fp); }