summaryrefslogtreecommitdiff
path: root/Build/source/texk/mendexk/fwrite.c
diff options
context:
space:
mode:
authorDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
committerDenis Bitouzé <dbitouze@wanadoo.fr>2021-02-25 18:23:07 +0000
commitc6101f91d071883b48b1b4b51e5eba0f36d9a78d (patch)
tree1bf7f5a881d7a4f5c5bf59d0b2821943dd822372 /Build/source/texk/mendexk/fwrite.c
parent07ee7222e389b0777456b427a55c22d0e6ffd267 (diff)
French translation for tlmgr updated
git-svn-id: svn://tug.org/texlive/trunk@57912 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/mendexk/fwrite.c')
-rw-r--r--Build/source/texk/mendexk/fwrite.c547
1 files changed, 0 insertions, 547 deletions
diff --git a/Build/source/texk/mendexk/fwrite.c b/Build/source/texk/mendexk/fwrite.c
deleted file mode 100644
index 2cd0f4bd491..00000000000
--- a/Build/source/texk/mendexk/fwrite.c
+++ /dev/null
@@ -1,547 +0,0 @@
-#include "mendex.h"
-
-#include <stdarg.h>
-
-#include <kpathsea/tex-file.h>
-#include <ptexenc/ptexenc.h>
-#include <ptexenc/unicode.h>
-#include <ptexenc/unicode-jp.h>
-
-#include "exkana.h"
-#include "exvar.h"
-
-int line_length=0;
-
-static void printpage(struct index *ind, FILE *fp, int num, char *lbuff);
-static int range_check(struct index ind, int count, char *lbuff);
-static void linecheck(char *lbuff, char *tmpbuff);
-static void crcheck(char *lbuff, FILE *fp);
-
-/* All buffers have size BUFFERLEN. */
-#define BUFFERLEN 4096
-
-#ifdef HAVE___VA_ARGS__
-/* Use C99 variadic macros if they are supported. */
-/* We would like to use sizeof(buf) instead of BUFFERLEN but that fails
- for, e.g., gcc-4.8.3 on Cygwin and gcc-4.5.3 on NetBSD. */
-#define SPRINTF(buf, ...) \
- snprintf(buf, BUFFERLEN, __VA_ARGS__)
-#define SAPPENDF(buf, ...) \
- snprintf(buf + strlen(buf), BUFFERLEN - strlen(buf), __VA_ARGS__)
-#else
-/* Alternatively use static inline functions. */
-static inline int SPRINTF(char *buf, const char *format, ...)
-{
- va_list argptr;
- int n;
-
- va_start(argptr, format);
- n = vsnprintf(buf, BUFFERLEN, format, argptr);
- va_end(argptr);
-
- return n;
-}
-static inline int SAPPENDF(char *buf, const char *format, ...)
-{
- va_list argptr;
- int n;
-
- va_start(argptr, format);
- n = vsnprintf(buf + strlen(buf), BUFFERLEN - strlen(buf), format, argptr);
- va_end(argptr);
-
- return n;
-}
-#endif
-
-static void fprint_euc_char(FILE *fp, const char a, const char b)
-{
- if (is_internalUPTEX()) { /* convert a character from EUC to UTF8 */
- int k = 0;
- unsigned char str[5];
- int chr = (unsigned char)a<<8 | (unsigned char)b;
- chr = (chr==0xffff) ? U_REPLACEMENT_CHARACTER : JIStoUCS2(chr & 0x7f7f);
- chr = UCStoUTF8(chr);
- /* if (BYTE1(chr) != 0){ str[k++] = BYTE1(chr); } */ /* do not happen */
- if (BYTE2(chr) != 0){ str[k++] = BYTE2(chr); }
- if (BYTE3(chr) != 0){ str[k++] = BYTE3(chr); }
- str[k++] = BYTE4(chr);
- str[k++] = '\0';
- fprintf(fp,"%s",str);
- }
- else
- fprintf(fp,"%c%c",a,b);
-}
-
-/* fprintf with convert kanji code */
-int fprintf2(FILE *fp, const char *format, ...)
-{
- char print_buff[8000];
- va_list argptr;
- int n;
-
- va_start(argptr, format);
- n = vsnprintf(print_buff, sizeof print_buff, format, argptr);
- va_end(argptr);
-
- fputs(print_buff, fp);
- return n;
-}
-
-void warn_printf(FILE *fp, const char *format, ...)
-{
- char print_buff[8000];
- va_list argptr;
-
- va_start(argptr, format);
- vsnprintf(print_buff, sizeof print_buff, format, argptr);
- va_end(argptr);
-
- warn++;
- fputs(print_buff, stderr);
- if (fp!=stderr) fputs(print_buff, fp);
-}
-
-void verb_printf(FILE *fp, const char *format, ...)
-{
- char print_buff[8000];
- va_list argptr;
-
- va_start(argptr, format);
- vsnprintf(print_buff, sizeof print_buff, format, argptr);
- va_end(argptr);
-
- if (verb!=0) fputs(print_buff, stderr);
- if (fp!=stderr) fputs(print_buff, fp);
-}
-
-
-/* write ind file */
-void indwrite(char *filename, struct index *ind, int pagenum)
-{
- int i,j,hpoint=0;
- char datama[2048],lbuff[BUFFERLEN];
- FILE *fp;
- int conv_euc_to_euc;
-
- if (filename && kpse_out_name_ok(filename)) fp=fopen(filename,"wb");
- else {
- fp=stdout;
-#ifdef WIN32
- setmode(fileno(fp), _O_BINARY);
-#endif
- }
-
- conv_euc_to_euc = is_internalUPTEX() ? 1 : 0;
- if (conv_euc_to_euc) set_enc_string(NULL, "euc");
- convert(atama,datama);
- if (conv_euc_to_euc) set_enc_string(NULL, "uptex");
- fputs(preamble,fp);
-
- if (fpage>0) {
- fprintf(fp,"%s%d%s",setpage_prefix,pagenum,setpage_suffix);
- }
-
- for (i=line_length=0;i<lines;i++) {
- if (i==0) {
- if (!((alphabet(ind[i].dic[0][0]))||(japanese(ind[i].dic[0])))) {
- if (lethead_flag) {
- if (symbol_flag && strlen(symbol)) {
- fprintf(fp,"%s%s%s",lethead_prefix,symbol,lethead_suffix);
- }
- else if (lethead_flag>0) {
- fprintf(fp,"%s%s%s",lethead_prefix,symhead_positive,lethead_suffix);
- }
- else if (lethead_flag<0) {
- fprintf(fp,"%s%s%s",lethead_prefix,symhead_negative,lethead_suffix);
- }
- }
- SPRINTF(lbuff,"%s%s",item_0,ind[i].idx[0]);
- }
- else if (alphabet(ind[i].dic[0][0])) {
- if (lethead_flag>0) {
- fprintf(fp,"%s%c%s",lethead_prefix,ind[i].dic[0][0],lethead_suffix);
- }
- else if (lethead_flag<0) {
- fprintf(fp,"%s%c%s",lethead_prefix,ind[i].dic[0][0]+32,lethead_suffix);
- }
- SPRINTF(lbuff,"%s%s",item_0,ind[i].idx[0]);
- }
- else if (japanese(ind[i].dic[0])) {
- if (lethead_flag) {
- fputs(lethead_prefix,fp);
- for (j=hpoint;j<(strlen(datama)/2);j++) {
- if ((unsigned char)ind[i].dic[0][1]<(unsigned char)datama[j*2+1]) {
- fprint_euc_char(fp,atama[(j-1)*2],atama[(j-1)*2+1]);
- hpoint=j;
- break;
- }
- }
- if (j==(strlen(datama)/2)) {
- fprint_euc_char(fp,atama[(j-1)*2],atama[(j-1)*2+1]);
- }
- fputs(lethead_suffix,fp);
- }
- SPRINTF(lbuff,"%s%s",item_0,ind[i].idx[0]);
- for (hpoint=0;hpoint<(strlen(datama)/2);hpoint++) {
- if ((unsigned char)ind[i].dic[0][1]<(unsigned char)datama[hpoint*2+1]) {
- break;
- }
- }
- }
- switch (ind[i].words) {
- case 1:
- SAPPENDF(lbuff,"%s",delim_0);
- break;
-
- case 2:
- SAPPENDF(lbuff,"%s",item_x1);
- SAPPENDF(lbuff,"%s",ind[i].idx[1]);
- SAPPENDF(lbuff,"%s",delim_1);
- break;
-
- case 3:
- SAPPENDF(lbuff,"%s",item_x1);
- SAPPENDF(lbuff,"%s",ind[i].idx[1]);
- SAPPENDF(lbuff,"%s",item_x2);
- SAPPENDF(lbuff,"%s",ind[i].idx[2]);
- SAPPENDF(lbuff,"%s",delim_2);
- break;
-
- default:
- break;
- }
- printpage(ind,fp,i,lbuff);
- }
- else {
- if (!((alphabet(ind[i].dic[0][0]))||(japanese(ind[i].dic[0])))) {
- if ((alphabet(ind[i-1].dic[0][0]))||(japanese(ind[i-1].dic[0]))){
- fputs(group_skip,fp);
- if (lethead_flag && symbol_flag) {
- fprintf(fp,"%s%s%s",lethead_prefix,symbol,lethead_suffix);
- }
- }
- }
- else if (alphabet(ind[i].dic[0][0])) {
- if (ind[i].dic[0][0]!=ind[i-1].dic[0][0]) {
- fputs(group_skip,fp);
- if (lethead_flag>0) {
- fprintf(fp,"%s%c%s",lethead_prefix,ind[i].dic[0][0],lethead_suffix);
- }
- else if (lethead_flag<0) {
- fprintf(fp,"%s%c%s",lethead_prefix,ind[i].dic[0][0]+32,lethead_suffix);
- }
- }
- }
- else if (japanese(ind[i].dic[0])) {
- for (j=hpoint;j<(strlen(datama)/2);j++) {
- if ((unsigned char)(ind[i].dic[0][0]<=(unsigned char)datama[j*2])&&((unsigned char)ind[i].dic[0][1]<(unsigned char)datama[j*2+1])) {
- break;
- }
- }
- if ((j!=hpoint)||(j==0)) {
- hpoint=j;
- fputs(group_skip,fp);
- if (lethead_flag!=0) {
- fputs(lethead_prefix,fp);
- fprint_euc_char(fp,atama[(j-1)*2],atama[(j-1)*2+1]);
- fputs(lethead_suffix,fp);
- }
- }
- }
-
- switch (ind[i].words) {
- case 1:
- SAPPENDF(lbuff,"%s",item_0);
- SAPPENDF(lbuff,"%s",ind[i].idx[0]);
- SAPPENDF(lbuff,"%s",delim_0);
- break;
-
- case 2:
- if (strcmp(ind[i-1].idx[0],ind[i].idx[0])!=0 || strcmp(ind[i-1].dic[0],ind[i].dic[0])!=0) {
- SAPPENDF(lbuff,"%s",item_0);
- SAPPENDF(lbuff,"%s",ind[i].idx[0]);
- SAPPENDF(lbuff,"%s",item_x1);
- }
- else {
- if (ind[i-1].words==1) {
- SAPPENDF(lbuff,"%s",item_01);
- }
- else {
- SAPPENDF(lbuff,"%s",item_1);
- }
- }
- SAPPENDF(lbuff,"%s",ind[i].idx[1]);
- SAPPENDF(lbuff,"%s",delim_1);
- break;
-
- case 3:
- if (strcmp(ind[i-1].idx[0],ind[i].idx[0])!=0 || strcmp(ind[i-1].dic[0],ind[i].dic[0])!=0) {
- SAPPENDF(lbuff,"%s",item_0);
- SAPPENDF(lbuff,"%s",ind[i].idx[0]);
- SAPPENDF(lbuff,"%s",item_x1);
- SAPPENDF(lbuff,"%s",ind[i].idx[1]);
- SAPPENDF(lbuff,"%s",item_x2);
- }
- else if (ind[i-1].words==1) {
- SAPPENDF(lbuff,"%s",item_01);
- SAPPENDF(lbuff,"%s",ind[i].idx[1]);
- SAPPENDF(lbuff,"%s",item_x2);
- }
- else if (strcmp(ind[i-1].idx[1],ind[i].idx[1])!=0 || strcmp(ind[i-1].dic[1],ind[i].dic[1])!=0) {
- SAPPENDF(lbuff,"%s",item_1);
- SAPPENDF(lbuff,"%s",ind[i].idx[1]);
- if (ind[i-1].words==2) SAPPENDF(lbuff,"%s",item_12);
- else SAPPENDF(lbuff,"%s",item_x2);
- }
- else {
- SAPPENDF(lbuff,"%s",item_2);
- }
- SAPPENDF(lbuff,"%s",ind[i].idx[2]);
- SAPPENDF(lbuff,"%s",delim_2);
- break;
-
- default:
- break;
- }
- printpage(ind,fp,i,lbuff);
- }
- }
- fputs(postamble,fp);
-
- if (filename) fclose(fp);
-}
-
-/* write page block */
-static void printpage(struct index *ind, FILE *fp, int num, char *lbuff)
-{
- int i,j,k,cc;
- char buff[BUFFERLEN],tmpbuff[BUFFERLEN],errbuff[BUFFERLEN];
-
- buff[0]=tmpbuff[0]='\0';
-
- crcheck(lbuff,fp);
- line_length=strlen(lbuff);
-
- for(j=0;j<ind[num].num;j++) {
- cc=range_check(ind[num],j,lbuff);
- if (cc>j) {
- if (pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0])==pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])) {
- j=cc-1;
- continue;
- }
-/* range process */
- if (ind[num].p[j].enc[0]==range_open
- || ind[num].p[j].enc[0]==range_close)
- ind[num].p[j].enc++;
- if (strlen(ind[num].p[j].enc)>0) {
- SPRINTF(buff,"%s%s%s",encap_prefix,ind[num].p[j].enc,encap_infix);
- }
- if (strlen(suffix_3p)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))==2) {
- SAPPENDF(buff,"%s",ind[num].p[j].page);
- SAPPENDF(buff,"%s",suffix_3p);
- }
- else if (strlen(suffix_mp)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))>=2) {
- SAPPENDF(buff,"%s",ind[num].p[j].page);
- SAPPENDF(buff,"%s",suffix_mp);
- }
- else if (strlen(suffix_2p)>0 && (pnumconv(ind[num].p[cc].page,ind[num].p[cc].attr[0])-pnumconv(ind[num].p[j].page,ind[num].p[j].attr[0]))==1) {
- SAPPENDF(buff,"%s",ind[num].p[j].page);
- SAPPENDF(buff,"%s",suffix_2p);
- }
- else {
- SAPPENDF(buff,"%s",ind[num].p[j].page);
- SAPPENDF(buff,"%s",delim_r);
- SAPPENDF(buff,"%s",ind[num].p[cc].page);
- }
- SAPPENDF(tmpbuff,"%s",buff);
- buff[0]='\0';
- if (strlen(ind[num].p[j].enc)>0) {
- SAPPENDF(tmpbuff,"%s",encap_suffix);
- }
- linecheck(lbuff,tmpbuff);
- j=cc;
- if (j==ind[num].num) {
- goto PRINT;
- }
- else {
- SAPPENDF(tmpbuff,"%s",delim_n);
- linecheck(lbuff,tmpbuff);
- }
- }
- else if (strlen(ind[num].p[j].enc)>0) {
-/* normal encap */
- if (ind[num].p[j].enc[0]==range_close) {
- SPRINTF(errbuff,"Warning: Unmatched range closing operator \'%c\',",range_close);
- for (i=0;i<ind[num].words;i++) {
- SAPPENDF(errbuff,"%s",ind[num].idx[i]);
- SAPPENDF(errbuff,".");
- }
- warn_printf(efp, "%s\n", errbuff);
- ind[num].p[j].enc++;
- }
- if (strlen(ind[num].p[j].enc)>0) {
- SAPPENDF(tmpbuff,"%s",encap_prefix);
- SAPPENDF(tmpbuff,"%s",ind[num].p[j].enc);
- SAPPENDF(tmpbuff,"%s",encap_infix);
- SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
- SAPPENDF(tmpbuff,"%s",encap_suffix);
- SAPPENDF(tmpbuff,"%s",delim_n);
- linecheck(lbuff,tmpbuff);
- }
- else {
- SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
- SAPPENDF(tmpbuff,"%s",delim_n);
- linecheck(lbuff,tmpbuff);
- }
- }
- else {
-/* no encap */
- SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
- SAPPENDF(tmpbuff,"%s",delim_n);
- linecheck(lbuff,tmpbuff);
- }
- }
-
- if (ind[num].p[j].enc[0]==range_open) {
- SPRINTF(errbuff,"Warning: Unmatched range opening operator \'%c\',",range_open);
- for (k=0;k<ind[num].words;k++) {
- SAPPENDF(errbuff,"%s",ind[num].idx[k]);
- SAPPENDF(errbuff,".");
- }
- warn_printf(efp, "%s\n", errbuff);
- ind[num].p[j].enc++;
- }
- else if (ind[num].p[j].enc[0]==range_close) {
- SPRINTF(errbuff,"Warning: Unmatched range closing operator \'%c\',",range_close);
- for (k=0;k<ind[num].words;k++) {
- SAPPENDF(errbuff,"%s",ind[num].idx[k]);
- SAPPENDF(errbuff,".");
- }
- warn_printf(efp, "%s\n", errbuff);
- ind[num].p[j].enc++;
- }
- if (strlen(ind[num].p[j].enc)>0) {
- SAPPENDF(tmpbuff,"%s",encap_prefix);
- SAPPENDF(tmpbuff,"%s",ind[num].p[j].enc);
- SAPPENDF(tmpbuff,"%s",encap_infix);
- SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
- SAPPENDF(tmpbuff,"%s",encap_suffix);
- }
- else {
- SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
- }
- linecheck(lbuff,tmpbuff);
-
-PRINT:
- fputs(lbuff,fp);
- fputs(delim_t,fp);
- lbuff[0]='\0';
-}
-
-static int range_check(struct index ind, int count, char *lbuff)
-{
- int i,j,k,cc1,cc2,start,force=0;
- char tmpbuff[BUFFERLEN],errbuff[BUFFERLEN];
-
- for (i=count;i<ind.num+1;i++) {
- if (ind.p[i].enc[0]==range_close) {
- SPRINTF(errbuff,"Warning: Unmatched range closing operator \'%c\',",range_close);
- SAPPENDF(errbuff,"%s",ind.idx[0]);
- SAPPENDF(errbuff,".");
- warn_printf(efp, "%s\n", errbuff);
- ind.p[i].enc++;
- }
- if (ind.p[i].enc[0]==range_open) {
- start=i;
- ind.p[i].enc++;
- for (j=i;j<ind.num+1;j++) {
- if (strcmp(ind.p[start].enc,ind.p[j].enc)) {
- if (ind.p[j].enc[0]==range_close) {
- ind.p[j].enc++;
- ind.p[j].enc[0]='\0';
- force=1;
- break;
- }
- else if (j!=i && ind.p[j].enc[0]==range_open) {
- SPRINTF(errbuff,"Warning: Unmatched range opening operator \'%c\',",range_open);
- for (k=0;k<ind.words;k++) {
- SAPPENDF(errbuff,"%s",ind.idx[k]);
- SAPPENDF(errbuff,".");
- }
- warn_printf(efp, "%s\n", errbuff);
- ind.p[j].enc++;
- }
- if (strlen(ind.p[j].enc)>0) {
- SPRINTF(tmpbuff,"%s%s%s%s%s%s",encap_prefix,ind.p[j].enc,encap_infix
- ,ind.p[j].page,encap_suffix,delim_n);
- linecheck(lbuff,tmpbuff);
- }
- }
- }
- if (j==ind.num+1) {
- SPRINTF(errbuff,"Warning: Unmatched range opening operator \'%c\',",range_open);
- for (k=0;k<ind.words;k++) {
- SAPPENDF(errbuff,"%s",ind.idx[k]);
- SAPPENDF(errbuff,".");
- }
- warn_printf(efp, "%s\n", errbuff);
- }
- i=j-1;
- }
- else if (prange && i<ind.num) {
- if (chkcontinue(ind.p,i)
- && (!strcmp(ind.p[i].enc,ind.p[i+1].enc)
- || ind.p[i+1].enc[0]==range_open))
- continue;
- else {
- i++;
- break;
- }
- }
- else {
- i++;
- break;
- }
- }
- cc1=pnumconv(ind.p[i-1].page,ind.p[i-1].attr[0]);
- cc2=pnumconv(ind.p[count].page,ind.p[count].attr[0]);
- if (cc1>=cc2+2 || (cc1>=cc2+1 && strlen(suffix_2p)) || force) {
- return i-1;
- }
- else return count;
-}
-
-/* check line length */
-static void linecheck(char *lbuff, char *tmpbuff)
-{
- if (line_length+strlen(tmpbuff)>line_max) {
- SAPPENDF(lbuff,"\n");
- SAPPENDF(lbuff,"%s",indent_space);
- SAPPENDF(lbuff,"%s",tmpbuff);
- line_length=indent_length+strlen(tmpbuff);
- tmpbuff[0]='\0';
- }
- else {
- SAPPENDF(lbuff,"%s",tmpbuff);
- line_length+=strlen(tmpbuff);
- tmpbuff[0]='\0';
- }
-}
-
-static void crcheck(char *lbuff, FILE *fp)
-{
- int i;
- char buff[BUFFERLEN];
-
- for (i=strlen(lbuff);i>=0;i--) {
- if (lbuff[i]=='\n') {
- strncpy(buff,lbuff,i+1);
- buff[i+1]='\0';
- fputs(buff,fp);
- strncpy(buff,&lbuff[i+1],BUFFERLEN-1);
- strcpy(lbuff,buff);
- break;
- }
- }
-}