texlive[62492] Build/source/texk: [up]mendex: output to file instead

commits+hironobu at tug.org commits+hironobu at tug.org
Mon Mar 7 13:36:45 CET 2022


Revision: 62492
          http://tug.org/svn/texlive?view=revision&revision=62492
Author:   hironobu
Date:     2022-03-07 13:36:44 +0100 (Mon, 07 Mar 2022)
Log Message:
-----------
[up]mendex: output to file instead of accumulating into buffer too much

Modified Paths:
--------------
    trunk/Build/source/texk/mendexk/ChangeLog
    trunk/Build/source/texk/mendexk/fwrite.c
    trunk/Build/source/texk/upmendex/ChangeLog
    trunk/Build/source/texk/upmendex/fwrite.c

Modified: trunk/Build/source/texk/mendexk/ChangeLog
===================================================================
--- trunk/Build/source/texk/mendexk/ChangeLog	2022-03-07 02:28:29 UTC (rev 62491)
+++ trunk/Build/source/texk/mendexk/ChangeLog	2022-03-07 12:36:44 UTC (rev 62492)
@@ -1,3 +1,8 @@
+2022-03-07  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* fwrite.c: output to file instead of accumulating too much.
+	https://github.com/texjporg/tex-jp-build/issues/137
+
 2022-01-22  Hironori Kitagawa  <h_kitagawa2001 at yahoo.co.jp>
 
 	* fread.c: Adapt to arguments of input_line2() in ptexenc-1.4.0.

Modified: trunk/Build/source/texk/mendexk/fwrite.c
===================================================================
--- trunk/Build/source/texk/mendexk/fwrite.c	2022-03-07 02:28:29 UTC (rev 62491)
+++ trunk/Build/source/texk/mendexk/fwrite.c	2022-03-07 12:36:44 UTC (rev 62492)
@@ -13,8 +13,8 @@
 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, int force);
+static int range_check(struct index ind, int count, char *lbuff, FILE *fp);
+static void linecheck(char *lbuff, char *tmpbuff, FILE *fp, int force);
 static void crcheck(char *lbuff, FILE *fp);
 
 /* All buffers have size BUFFERLEN.  */
@@ -362,7 +362,7 @@
 	line_length=strlen(lbuff);
 
 	for(j=0;j<ind[num].num;j++) {
-		cc=range_check(ind[num],j,lbuff);
+		cc=range_check(ind[num],j,lbuff,fp);
 		if (cc>j) {
 			int epage = pnumconv2(&ind[num].p[cc]);
 			int bpage = pnumconv2(&ind[num].p[j]);
@@ -397,7 +397,7 @@
 			if (strlen(ind[num].p[j].enc)>0) {
 				SAPPENDF(tmpbuff,"%s",encap_suffix);
 			}
-			linecheck(lbuff,tmpbuff, FALSE);
+			linecheck(lbuff,tmpbuff,fp, FALSE);
 			j=cc;
 			if (j==ind[num].num) {
 				goto PRINT;
@@ -404,7 +404,7 @@
 			}
 			else {
 				SAPPENDF(tmpbuff,"%s",delim_n);
-				linecheck(lbuff,tmpbuff, TRUE);
+				linecheck(lbuff,tmpbuff,fp, TRUE);
 			}
 		}
 		else if (strlen(ind[num].p[j].enc)>0) {
@@ -425,12 +425,12 @@
 				SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
 				SAPPENDF(tmpbuff,"%s",encap_suffix);
 				SAPPENDF(tmpbuff,"%s",delim_n);
-				linecheck(lbuff,tmpbuff, FALSE);
+				linecheck(lbuff,tmpbuff,fp, FALSE);
 			}
 			else {
 				SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
 				SAPPENDF(tmpbuff,"%s",delim_n);
-				linecheck(lbuff,tmpbuff, FALSE);
+				linecheck(lbuff,tmpbuff,fp, FALSE);
 			}
 		}
 		else {
@@ -437,7 +437,7 @@
 /* no encap */
 			SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
 			SAPPENDF(tmpbuff,"%s",delim_n);
-			linecheck(lbuff,tmpbuff, FALSE);
+			linecheck(lbuff,tmpbuff,fp, FALSE);
 		}
 	}
 
@@ -469,7 +469,7 @@
 	else {
 		SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
 	}
-	linecheck(lbuff,tmpbuff, FALSE);
+	linecheck(lbuff,tmpbuff,fp, FALSE);
 
 PRINT:
 	fputs(lbuff,fp);
@@ -477,7 +477,7 @@
 	lbuff[0]='\0';
 }
 
-static int range_check(struct index ind, int count, char *lbuff)
+static int range_check(struct index ind, int count, char *lbuff, FILE *fp)
 {
 	int i,j,k,cc1,cc2,start,force=0;
 	char tmpbuff[BUFFERLEN],errbuff[BUFFERLEN];
@@ -513,7 +513,7 @@
 					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, FALSE);
+						linecheck(lbuff,tmpbuff,fp, FALSE);
 					}
 				}
 			}
@@ -551,10 +551,12 @@
 }
 
 /*   check line length   */
-static void linecheck(char *lbuff, char *tmpbuff, int force)
+static void linecheck(char *lbuff, char *tmpbuff, FILE *fp, int force)
 {
 	if (line_length+strlen(tmpbuff)>line_max && !force) {
 		SAPPENDF(lbuff,"\n");
+		fputs(lbuff,fp);
+		lbuff[0]='\0';
 		SAPPENDF(lbuff,"%s",indent_space);
 		SAPPENDF(lbuff,"%s",tmpbuff);
 		line_length=indent_length+strlen(tmpbuff);

Modified: trunk/Build/source/texk/upmendex/ChangeLog
===================================================================
--- trunk/Build/source/texk/upmendex/ChangeLog	2022-03-07 02:28:29 UTC (rev 62491)
+++ trunk/Build/source/texk/upmendex/ChangeLog	2022-03-07 12:36:44 UTC (rev 62492)
@@ -1,3 +1,8 @@
+2022-03-07  Hironobu Yamashita  <h.y.acetaminophen at gmail.com>
+
+	* fwrite.c: output to file instead of accumulating too much.
+	https://github.com/texjporg/tex-jp-build/issues/137
+
 2022-01-18  Karl Berry  <karl at freefriends.org>
 
 	* COPYRIGHT,

Modified: trunk/Build/source/texk/upmendex/fwrite.c
===================================================================
--- trunk/Build/source/texk/upmendex/fwrite.c	2022-03-07 02:28:29 UTC (rev 62491)
+++ trunk/Build/source/texk/upmendex/fwrite.c	2022-03-07 12:36:44 UTC (rev 62492)
@@ -12,8 +12,8 @@
 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, int force);
+static int range_check(struct index ind, int count, char *lbuff, FILE *fp);
+static void linecheck(char *lbuff, char *tmpbuff, FILE *fp, int force);
 static void crcheck(char *lbuff, FILE *fp);
 static void index_normalize(UChar *istr, UChar *ini, int *chset);
 static int initial_cmp_char(UChar *ini, UChar ch);
@@ -541,7 +541,7 @@
 	line_length=strlen(lbuff);
 
 	for(j=0;j<ind[num].num;j++) {
-		cc=range_check(ind[num],j,lbuff);
+		cc=range_check(ind[num],j,lbuff,fp);
 		if (cc>j) {
 			int epage = pnumconv2(&ind[num].p[cc]);
 			int bpage = pnumconv2(&ind[num].p[j]);
@@ -576,7 +576,7 @@
 			if (strlen(ind[num].p[j].enc)>0) {
 				SAPPENDF(tmpbuff,"%s",encap_suffix);
 			}
-			linecheck(lbuff,tmpbuff, FALSE);
+			linecheck(lbuff,tmpbuff,fp, FALSE);
 			j=cc;
 			if (j==ind[num].num) {
 				goto PRINT;
@@ -583,7 +583,7 @@
 			}
 			else {
 				SAPPENDF(tmpbuff,"%s",delim_n);
-				linecheck(lbuff,tmpbuff, TRUE);
+				linecheck(lbuff,tmpbuff,fp, TRUE);
 			}
 		}
 		else if (strlen(ind[num].p[j].enc)>0) {
@@ -605,12 +605,12 @@
 				SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
 				SAPPENDF(tmpbuff,"%s",encap_suffix);
 				SAPPENDF(tmpbuff,"%s",delim_n);
-				linecheck(lbuff,tmpbuff, FALSE);
+				linecheck(lbuff,tmpbuff,fp, FALSE);
 			}
 			else {
 				SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
 				SAPPENDF(tmpbuff,"%s",delim_n);
-				linecheck(lbuff,tmpbuff, FALSE);
+				linecheck(lbuff,tmpbuff,fp, FALSE);
 			}
 		}
 		else {
@@ -617,7 +617,7 @@
 /* no encap */
 			SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
 			SAPPENDF(tmpbuff,"%s",delim_n);
-			linecheck(lbuff,tmpbuff, FALSE);
+			linecheck(lbuff,tmpbuff,fp, FALSE);
 		}
 	}
 
@@ -651,7 +651,7 @@
 	else {
 		SAPPENDF(tmpbuff,"%s",ind[num].p[j].page);
 	}
-	linecheck(lbuff,tmpbuff, FALSE);
+	linecheck(lbuff,tmpbuff,fp, FALSE);
 
 PRINT:
 	fputs(lbuff,fp);
@@ -659,7 +659,7 @@
 	lbuff[0]='\0';
 }
 
-static int range_check(struct index ind, int count, char *lbuff)
+static int range_check(struct index ind, int count, char *lbuff, FILE *fp)
 {
 	int i,j,k,cc1,cc2,start,force=0;
 	char tmpbuff[BUFFERLEN],errbuff[BUFFERLEN],obuff[BUFFERLEN];
@@ -697,7 +697,7 @@
 					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, FALSE);
+						linecheck(lbuff,tmpbuff,fp, FALSE);
 					}
 				}
 			}
@@ -736,10 +736,12 @@
 }
 
 /*   check line length   */
-static void linecheck(char *lbuff, char *tmpbuff, int force)
+static void linecheck(char *lbuff, char *tmpbuff, FILE *fp, int force)
 {
 	if (line_length+strlen(tmpbuff)>line_max && !force) {
 		SAPPENDF(lbuff,"\n");
+		fputs(lbuff,fp);
+		lbuff[0]='\0';
 		SAPPENDF(lbuff,"%s",indent_space);
 		SAPPENDF(lbuff,"%s",tmpbuff);
 		line_length=indent_length+strlen(tmpbuff);



More information about the tex-live-commits mailing list.