aboutsummaryrefslogtreecommitdiffstats
path: root/chinese
diff options
context:
space:
mode:
Diffstat (limited to 'chinese')
-rw-r--r--chinese/pine4/Makefile43
-rw-r--r--chinese/pine4/distinfo3
-rw-r--r--chinese/pine4/files/patch-ac26
-rw-r--r--chinese/pine4/files/patch-ai154
-rw-r--r--chinese/pine4/files/patch-ak11
-rw-r--r--chinese/pine4/files/patch-ao224
-rw-r--r--chinese/pine4/files/patch-as210
-rw-r--r--chinese/pine4/files/patch-au19
-rw-r--r--chinese/pine4/files/patch-aw132
-rw-r--r--chinese/pine4/files/patch-ax263
-rw-r--r--chinese/pine4/files/patch-az21
-rw-r--r--chinese/pine4/files/patch-ba167
-rw-r--r--chinese/pine4/files/patch-bb70
-rw-r--r--chinese/pine4/files/patch-bc347
-rw-r--r--chinese/pine4/files/patch-bd147
-rw-r--r--chinese/pine4/files/patch-be8
-rw-r--r--chinese/pine4/files/patch-bk192
-rw-r--r--chinese/pine4/files/patch-bo25
-rw-r--r--chinese/pine4/files/patch-bp6
-rw-r--r--chinese/pine4/files/patch-br37
-rw-r--r--chinese/pine4/files/patch-bs25
-rw-r--r--chinese/pine4/files/patch-bt27
-rw-r--r--chinese/pine4/files/patch-bu21
-rw-r--r--chinese/pine4/files/patch-bv90
-rw-r--r--chinese/pine4/files/patch-bw61
-rw-r--r--chinese/pine4/files/pgpdecode47
-rw-r--r--chinese/pine4/files/pgpencrypt9
-rw-r--r--chinese/pine4/files/pgpsign9
-rw-r--r--chinese/pine4/files/pine.conf3
-rw-r--r--chinese/pine4/pkg-comment2
-rw-r--r--chinese/pine4/pkg-descr12
-rw-r--r--chinese/pine4/pkg-plist5
32 files changed, 1625 insertions, 791 deletions
diff --git a/chinese/pine4/Makefile b/chinese/pine4/Makefile
index 8e188ca86e2c..0ac722357f64 100644
--- a/chinese/pine4/Makefile
+++ b/chinese/pine4/Makefile
@@ -1,35 +1,46 @@
# New ports collection makefile for: pine
# http://www.washington.edu/pine/
-# Version required: 4.02A
+# Version required: 4.05
# Date created: 15 July 1998
# Whom: Liang Tai-hwa <avatar@www.mmlab.cse.yzu.edu.tw>
#
# $Id: Makefile,v 1.7 1998/08/24 01:24:38 steve Exp $
#
-DISTNAME= pine4.02
-PKGNAME= zh-pine-4.02a
-CATEGORIES= chinese mail news
+DISTNAME= pine4.05
+PKGNAME= zh-pine-4.05
+CATEGORIES= chinese mail news
MASTER_SITES= ftp://ftp.cac.washington.edu/pine/
-PATCH_SITES= ${MASTER_SITES}
-PATCHFILES= ${DISTNAME}A.patch
-PATCH_DIST_STRIP= -p1
-
MAINTAINER= avatar@www.mmlab.cse.yzu.edu.tw
-BROKEN_ELF= does not build ELF libs
-
NO_LATEST_LINK= yes
MAN1= pine.1 pico.1 pilot.1
+post-patch:
+ for i in ${WRKSRC}/doc/pine.1 \
+ ${WRKSRC}/pine/init.c \
+ ${WRKSRC}/pine/pine.hlp \
+ ${WRKSRC}/pine/mailcap.c \
+ ${WRKSRC}/pine/osdep/os-bsf.h ; do \
+ ${MV} $$i $$i.sed ; \
+ ${SED} -e "s:@@PREFIX@@:${PREFIX}:g" \
+ $$i.sed >$$i ; \
+ ${RM} $$i.sed ; \
+ done
+ for i in ${WRKSRC}/doc/tech-notes.txt \
+ ${WRKSRC}/doc/tech-notes/*.html ; do \
+ ${MV} $$i $$i.sed ; \
+ ${SED} -e "s:/usr/local/lib/:${PREFIX}/etc/:g" \
+ $$i.sed >$$i ; \
+ ${RM} $$i.sed ; \
+ done
+
do-build:
@(cd ${WRKSRC}; ${SETENV} ${MAKE_ENV} ./build bsf)
do-install:
- ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
- ${WRKSRC}/bin/libpico.so.2.0 ${PREFIX}/lib/libpico.so.2.0
${INSTALL_PROGRAM} ${WRKSRC}/bin/pico ${PREFIX}/bin/pico
${INSTALL_PROGRAM} ${WRKSRC}/bin/pilot ${PREFIX}/bin/pilot
${INSTALL_PROGRAM} ${WRKSRC}/bin/pine ${PREFIX}/bin/pine
@@ -44,7 +55,6 @@ do-install:
${INSTALL_MAN} ${WRKSRC}/doc/pilot.1 ${PREFIX}/man/man1/pilot.1
${INSTALL_MAN} ${WRKSRC}/doc/pine.1 ${PREFIX}/man/man1/pine.1
.if !defined(NOPORTDOCS)
- ${INSTALL_DATA} -d ${PREFIX}/share/doc/pine
${INSTALL} -d -o ${SHAREOWN} -g ${SHAREGRP} \
${PREFIX}/share/doc/pine \
${PREFIX}/share/doc/pine/tech-notes
@@ -55,6 +65,11 @@ do-install:
.endif
post-install:
- ${LDCONFIG} -m ${PREFIX}/lib/
+ ${PREFIX}/bin/pine -P ${PREFIX}/etc/pine.conf -conf >${WRKSRC}/pine.conf
+ ${INSTALL_DATA} ${WRKSRC}/pine.conf ${PREFIX}/etc/pine.conf
+ @${ECHO} " - - - - - - - - - - - - - - - - - - - - - - - - -"
+ @${ECHO} " If Pine exits with \"Received abort signal\" try"
+ @${ECHO} " disabling the \"quell-folder-internal-msg\" feature"
+ @${ECHO} " - - - - - - - - - - - - - - - - - - - - - - - - -"
.include <bsd.port.mk>
diff --git a/chinese/pine4/distinfo b/chinese/pine4/distinfo
index 0feef2c611e2..c4f77574f639 100644
--- a/chinese/pine4/distinfo
+++ b/chinese/pine4/distinfo
@@ -1,2 +1 @@
-MD5 (pine4.02.tar.gz) = 688979b5649473169bdbf22ea1c82fe7
-MD5 (pine4.02A.patch) = 96271a2a00293186941cad0c0175bd69
+MD5 (pine4.05.tar.gz) = 84dc37198853959188a551eb4ee8aa00
diff --git a/chinese/pine4/files/patch-ac b/chinese/pine4/files/patch-ac
index 6c7f80761c01..b812c52c602a 100644
--- a/chinese/pine4/files/patch-ac
+++ b/chinese/pine4/files/patch-ac
@@ -1,15 +1,15 @@
---- imap/src/osdep/unix/unix.c.orig Thu Jul 16 09:52:38 1998
-+++ imap/src/osdep/unix/unix.c Tue Jul 28 08:34:59 1998
-@@ -1008,7 +1008,11 @@
- /* try again if file exists(?) */
- if (!stat (hitch,&sb)) break;
+--- imap/src/osdep/unix/unix.c.orig Thu Sep 3 15:07:07 1998
++++ imap/src/osdep/unix/unix.c Tue Sep 22 13:36:19 1998
+@@ -1010,7 +1010,11 @@
+ case EACCES: /* protection failure */
+ if (stat (hitch,&sb)) { /* try again if file exists(?) */
/* punt silently if paranoid site */
-- if (mail_parameters (NIL,GET_LOCKEACCESERROR,NIL))
-+ if (
-+#ifdef __FreeBSD__
-+ strncmp(lock,"/var/mail/",10) && /* /var/mail/... isn't lockable */
+- if (mail_parameters (NIL,GET_LOCKEACCESERROR,NIL))
++ if (
++#ifdef __FreeBSD__
++ strncmp(lock,"/var/mail/",10) && /* /var/mail/... isn't lockable */
+#endif
-+ mail_parameters (NIL,GET_LOCKEACCESERROR,NIL))
- default: /* some other error */
- mm_log (tmp,WARN); /* this is probably not good */
- *lock = '\0'; /* give up on lock file */
++ mail_parameters (NIL,GET_LOCKEACCESERROR,NIL))
+ mm_log ("Mailbox vulnerable - directory must have 1777 protection",
+ WARN);
+ *lock = '\0'; /* give up on lock file */
diff --git a/chinese/pine4/files/patch-ai b/chinese/pine4/files/patch-ai
index b54cd830dc16..f50baad1941c 100644
--- a/chinese/pine4/files/patch-ai
+++ b/chinese/pine4/files/patch-ai
@@ -1,5 +1,5 @@
---- pico/browse.c.orig Sat Jul 11 06:41:25 1998
-+++ pico/browse.c Tue Aug 4 12:42:13 1998
+--- pico/browse.c.orig Wed Sep 16 08:19:17 1998
++++ pico/browse.c Tue Sep 22 17:29:07 1998
@@ -126,12 +126,12 @@
@@ -18,7 +18,7 @@
};
#define QUIT_KEY 1
#define EXEC_KEY 2
-@@ -331,7 +331,7 @@
+@@ -333,7 +333,7 @@
child[0] = '\0';
if((gmode&MDTREE) && !in_oper_tree(dir)){
@@ -27,7 +27,7 @@
sleep(2);
return(0);
}
-@@ -419,7 +419,7 @@
+@@ -421,7 +421,7 @@
else{
if(timeo && (c == NODATA || time_to_check()))
if(pico_new_mail())
@@ -36,7 +36,7 @@
}
if(km_popped)
-@@ -695,7 +695,7 @@
+@@ -697,7 +697,7 @@
gmp->current->fname);
/* make sure selected isn't a directory or executable */
if(!LikelyASCII(child)){
@@ -45,7 +45,7 @@
break;
}
-@@ -725,13 +725,13 @@
+@@ -727,13 +727,13 @@
return(0);
}
@@ -61,7 +61,7 @@
break;
}
-@@ -748,11 +748,11 @@
+@@ -750,11 +750,11 @@
{NULL, NULL, 0, KS_NONE},
};
@@ -75,7 +75,7 @@
/* remove break and sleep after help text is installed */
sleep(3);
break;
-@@ -763,7 +763,7 @@
+@@ -765,7 +765,7 @@
PaintBrowser(gmp, 0, &crow, &ccol);
break;
case ABORT:
@@ -84,7 +84,7 @@
i++;
break;
case FALSE:
-@@ -771,7 +771,7 @@
+@@ -773,7 +773,7 @@
i++;
if(tmp[0] == '\0'){
@@ -93,7 +93,7 @@
break;
}
-@@ -790,12 +790,12 @@
+@@ -792,12 +792,12 @@
case 'D':
if(gmp->current->mode == FIODIR){
/* BUG: if dir is empty it should be deleted */
@@ -108,7 +108,7 @@
break;
}
-@@ -806,17 +806,17 @@
+@@ -808,17 +808,17 @@
while(i++ < 2){ /* verify twice!! */
if(i == 1){
if(fexist(child, "w", (off_t *)NULL) != FIOSUC)
@@ -131,7 +131,7 @@
NULL);
break;
}
-@@ -824,7 +824,7 @@
+@@ -826,7 +826,7 @@
if(status == TRUE){
if(unlink(child) < 0){
@@ -140,7 +140,7 @@
}
else{ /* fix up pointers and redraw */
tp = gmp->current;
-@@ -893,12 +893,12 @@
+@@ -903,12 +903,12 @@
while(!i){
@@ -155,7 +155,7 @@
/* remove break and sleep after help text is installed */
sleep(3);
break;
-@@ -906,7 +906,7 @@
+@@ -916,7 +916,7 @@
PaintBrowser(gmp, 0, &crow, &ccol);
break;
case ABORT:
@@ -164,7 +164,7 @@
i++;
break;
case FALSE:
-@@ -917,17 +917,17 @@
+@@ -927,17 +927,17 @@
strcpy(child, gethomedir(NULL));
if(!compresspath(gmp->dname, child, NLINE)){
@@ -180,12 +180,12 @@
}
if((gmode&MDTREE) && !in_oper_tree(child)){
-- emlwrite("Attempt to Goto directory denied", NULL);
-+ emlwrite("已拒絕使用者切換目錄的請求", NULL);
+- emlwrite("\007 Can't go outside of %s in restricted mode",
++ emlwrite("\007 限制模式中無法離開 %s",
+ opertree);
break;
}
-
-@@ -943,7 +943,7 @@
+@@ -954,7 +954,7 @@
PaintBrowser(gmp, 0, &crow, &ccol);
}
else
@@ -194,16 +194,7 @@
break;
default:
-@@ -956,7 +956,7 @@
- case 'a': /* Add */
- case 'A':
- if(gmode&MDSCUR){ /* not allowed! */
-- emlwrite("Copy not allowed in restricted mode",NULL);
-+ emlwrite("無法在限制模式中新增檔案",NULL);
- break;
- }
-
-@@ -965,10 +965,10 @@
+@@ -976,10 +976,10 @@
while(!i){
@@ -212,11 +203,11 @@
QFFILE, NULL)){
case HELPCH:
- emlwrite("\007No help yet!", NULL);
-+ emlwrite("\007尚無輔助說明!", NULL);
++ emlwrite("\007尚無輔助說明!", NULL);
/* remove break and sleep after help text is installed */
sleep(3);
break;
-@@ -976,7 +976,7 @@
+@@ -987,7 +987,7 @@
PaintBrowser(gmp, 0, &crow, &ccol);
break;
case ABORT:
@@ -225,7 +216,7 @@
i++;
break;
case FALSE:
-@@ -987,7 +987,7 @@
+@@ -998,23 +998,23 @@
i++;
if(child[0] == '\0'){
@@ -234,16 +225,26 @@
break;
}
-@@ -995,7 +995,7 @@
- sprintf(child, "%s%c%s", gmp->dname, C_FILESEP, tmp);
+ if(!compresspath(gmp->dname, child, NLINE)){
+- emlwrite("Too many ..'s in name", NULL);
++ emlwrite("檔名中有太多的 .. 了", NULL);
+ break;
+ }
+
+ if((gmode&MDTREE) && !in_oper_tree(child)){
+- emlwrite("\007Restricted mode allows Add in %s only",
++ emlwrite("\007限制模式中僅允許\在 %s 中新增檔案",
+ opertree);
+ break;
+ }
if((status = fexist(child, "w", (off_t *)NULL)) == FIOSUC){
- sprintf(tmp,"File \"%.*s\" already exists!",
-+ sprintf(tmp,"檔案 \"%.*s\" 已存在!",
++ sprintf(tmp,"檔案 \"%.*s\" 已存在!",
NLINE - 20, child);
emlwrite(tmp, NULL);
break;
-@@ -1011,7 +1011,7 @@
+@@ -1030,7 +1030,7 @@
}
else{ /* highlight new file */
ffclose();
@@ -252,7 +253,7 @@
if((p = strrchr(child, C_FILESEP)) == NULL){
emlwrite("Problems refiguring browser", NULL);
-@@ -1059,12 +1059,12 @@
+@@ -1078,12 +1078,12 @@
case 'c': /* copy */
case 'C':
if(gmp->current->mode == FIODIR){
@@ -267,7 +268,7 @@
break;
}
-@@ -1073,10 +1073,10 @@
+@@ -1092,10 +1092,10 @@
while(!i){
@@ -280,7 +281,7 @@
/* remove break and sleep after help text is installed */
sleep(3);
break;
-@@ -1084,7 +1084,7 @@
+@@ -1103,7 +1103,7 @@
PaintBrowser(gmp, 0, &crow, &ccol);
break;
case ABORT:
@@ -289,7 +290,7 @@
i++;
break;
case FALSE:
-@@ -1095,12 +1095,12 @@
+@@ -1114,33 +1114,33 @@
i++;
if(child[0] == '\0'){
@@ -304,8 +305,18 @@
break;
}
-@@ -1108,12 +1108,12 @@
- sprintf(child, "%s%c%s", gmp->dname, C_FILESEP, tmp);
+ if(!compresspath(gmp->dname, child, NLINE)){
+- emlwrite("Too many ..'s in name", NULL);
++ emlwrite("檔名中有太多的 .. 了", NULL);
+ break;
+ }
+
+ if((gmode&MDTREE) && !in_oper_tree(child)){
+- emlwrite("\007Restricted mode allows Copy in %s only",
++ emlwrite("\007限制模式中僅允許\在 %s 中複製檔案",
+ opertree);
+ break;
+ }
if((status = fexist(child, "w", (off_t *)NULL)) == FIOSUC){
- sprintf(tmp,"File \"%.*s\" exists! OVERWRITE",
@@ -320,7 +331,7 @@
NULL);
break;
}
-@@ -1131,7 +1131,7 @@
+@@ -1158,7 +1158,7 @@
break;
}
else{ /* highlight new file */
@@ -329,7 +340,7 @@
if((p = strrchr(child, C_FILESEP)) == NULL){
emlwrite("Problems refiguring browser", NULL);
-@@ -1174,12 +1174,12 @@
+@@ -1201,12 +1201,12 @@
i = 0;
if(!strcmp(gmp->current->fname, "..")){
@@ -344,7 +355,7 @@
break;
}
-@@ -1187,10 +1187,10 @@
+@@ -1214,10 +1214,10 @@
while(!i){
@@ -357,7 +368,7 @@
/* remove break and sleep after help text is installed */
sleep(3);
break;
-@@ -1198,7 +1198,7 @@
+@@ -1225,7 +1225,7 @@
PaintBrowser(gmp, 0, &crow, &ccol);
break;
case ABORT:
@@ -366,7 +377,22 @@
i++;
break;
case FALSE:
-@@ -1216,13 +1216,13 @@
+@@ -1238,12 +1238,12 @@
+ }
+
+ if(!compresspath(gmp->dname, child, NLINE)){
+- emlwrite("Too many ..'s in name", NULL);
++ emlwrite("檔名中有太多的 .. 了", NULL);
+ break;
+ }
+
+ if((gmode&MDTREE) && !in_oper_tree(child)){
+- emlwrite("\007Restricted mode allows Rename in %s only",
++ emlwrite("\007限制模式中僅允許\在 %s 中更改檔名",
+ opertree);
+ break;
+ }
+@@ -1251,13 +1251,13 @@
status = fexist(child, "w", (off_t *)NULL);
if(status == FIOSUC || status == FIOFNF){
if(status == FIOSUC){
@@ -383,7 +409,7 @@
NULL);
break;
}
-@@ -1232,7 +1232,7 @@
+@@ -1267,7 +1267,7 @@
gmp->current->fname);
if(rename(tmp, child) < 0){
@@ -392,7 +418,7 @@
}
else{
if((p = strrchr(child, C_FILESEP)) == NULL){
-@@ -1291,7 +1291,7 @@
+@@ -1326,7 +1326,7 @@
if((gmode&MDTREE) && !in_oper_tree(tmp)){
emlwrite(
@@ -401,7 +427,7 @@
NULL);
break;
}
-@@ -1312,7 +1312,7 @@
+@@ -1347,7 +1347,7 @@
strcpy(tmp, S_FILESEP);
#endif
else{
@@ -410,7 +436,7 @@
NULL);
break;
}
-@@ -1339,12 +1339,12 @@
+@@ -1374,12 +1374,12 @@
PlaceCell(gmp, gmp->current, &row, &col);
}
else
@@ -425,7 +451,7 @@
NULL);
break;
-@@ -1383,7 +1383,7 @@
+@@ -1425,7 +1425,7 @@
switch(readpattern("File name to find")){
case HELPCH:
@@ -434,7 +460,7 @@
/* remove break and sleep after help text is installed */
sleep(3);
break;
-@@ -1414,10 +1414,10 @@
+@@ -1456,10 +1456,10 @@
}
while(tp->next);
@@ -447,7 +473,7 @@
if(tp){
PlaceCell(gmp, gmp->current, &row, &col);
-@@ -1436,7 +1436,7 @@
+@@ -1478,7 +1478,7 @@
i++; /* make sure we jump out */
break;
case ABORT:
@@ -456,7 +482,7 @@
i++;
break;
case FALSE:
-@@ -1460,7 +1460,7 @@
+@@ -1502,7 +1502,7 @@
mlerase();
}
else
@@ -465,7 +491,7 @@
i++;
break;
-@@ -1482,11 +1482,11 @@
+@@ -1524,11 +1524,11 @@
default: /* what? */
Default:
if(c < 0xff)
@@ -480,7 +506,7 @@
case NODATA: /* no op */
break;
}
-@@ -1516,7 +1516,7 @@
+@@ -1560,7 +1560,7 @@
errbuf[0] = '\0';
if((mp=(struct bmaster *)malloc(sizeof(struct bmaster))) == NULL){
@@ -489,7 +515,7 @@
return(NULL);
}
-@@ -1540,7 +1540,7 @@
+@@ -1584,7 +1584,7 @@
mp->cpf = mp->fpl = 0;
mp->longest = 5; /* .. must be labeled! */
@@ -498,7 +524,7 @@
if((mp->names = getfnames(mp->dname, NULL, &nentries, errbuf)) == NULL){
free((char *) mp);
-@@ -1559,7 +1559,7 @@
+@@ -1603,7 +1603,7 @@
* easily be made a user option later on...
*/
if((filtnames=(char **)malloc((nentries+1) * sizeof(char *))) == NULL){
@@ -507,7 +533,7 @@
zotmaster(&mp);
return(NULL);
}
-@@ -1610,7 +1610,7 @@
+@@ -1654,7 +1654,7 @@
while(nentries--){ /* stat filtered files */
/* get a new cell */
if((ncp=(struct fcell *)malloc(sizeof(struct fcell))) == NULL){
@@ -516,7 +542,7 @@
zotfcells(mp->head); /* clean up cells */
free((char *) filtnames);
free((char *) mp);
-@@ -1780,22 +1780,22 @@
+@@ -1840,22 +1840,22 @@
BrowserKeys()
{
menu_browse[QUIT_KEY].name = (gmode&MDBRONLY) ? "Q" : "E";
@@ -546,7 +572,7 @@
}
wkeyhelp(menu_browse);
-@@ -1898,7 +1898,7 @@
+@@ -1958,7 +1958,7 @@
if((tp = tp->next) == NULL){ /* above top? */
if(secondtry++){
@@ -555,7 +581,7 @@
return(-1);
}
else{
-@@ -2064,10 +2064,10 @@
+@@ -2124,10 +2124,10 @@
if(!p) /* no suitable length! */
p = &dir[l-(term.t_ncol-i-19)];
@@ -568,7 +594,7 @@
if(i < j) /* keep it centered */
j = j - i; /* as long as we can */
-@@ -2196,18 +2196,18 @@
+@@ -2256,18 +2256,18 @@
if((line = (buf[i] == '\n') ? 0 : line + 1) >= LA_LINE_LIMIT
|| !buf[i]){
rv = FALSE;
diff --git a/chinese/pine4/files/patch-ak b/chinese/pine4/files/patch-ak
index ea7b9f829357..4c119517546a 100644
--- a/chinese/pine4/files/patch-ak
+++ b/chinese/pine4/files/patch-ak
@@ -1,5 +1,5 @@
--- pico/display.c.orig Sat Jun 20 01:19:53 1998
-+++ pico/display.c Tue Aug 4 12:42:14 1998
++++ pico/display.c Tue Sep 22 18:30:04 1998
@@ -71,32 +71,32 @@
* Standard pico keymenus...
*/
@@ -15,8 +15,9 @@
+ {"^X", "離開", KS_EXIT}, {"^J", "重整段落", KS_JUSTIFY},
+ {"^W", "搜尋", KS_WHEREIS}, {"^V", "下一頁", KS_NEXTPAGE},
{"^U", NULL, KS_NONE},
- #ifdef SPELLER
+-#ifdef SPELLER
- {"^T", "To Spell", KS_SPELLCHK}
++#if defined(SPELLER) && !defined(__FreeBSD__)
+ {"^T", "拼字檢查", KS_SPELLCHK}
#else
- {"^D", "Del Char", KS_NONE}
@@ -38,8 +39,9 @@
+ {"^C", "取消", KS_CANCEL}, {"^J", "重整段落", KS_JUSTIFY},
+ {NULL, NULL, KS_NONE}, {"^V", "下一頁", KS_NEXTPAGE},
{"^U", NULL, KS_NONE},
- #ifdef SPELLER
+-#ifdef SPELLER
- {"^T", "To Spell", KS_SPELLCHK}
++#if defined(SPELLER) && !defined(__FreeBSD__)
+ {"^T", "拼字檢查", KS_SPELLCHK}
#else
- {"^D", "Del Char", KS_NONE}
@@ -111,8 +113,9 @@
- ? "Postpone" : NULL;
+ ? "暫緩寫信" : NULL;
menu_compose[WHERE_KEY].name = (Pmaster->alt_ed) ? "^_" : "^W";
- menu_compose[WHERE_KEY].label = (Pmaster->alt_ed) ? "Alt Edit"
+- menu_compose[WHERE_KEY].label = (Pmaster->alt_ed) ? "Alt Edit"
- : "Where is";
++ menu_compose[WHERE_KEY].label = (Pmaster->alt_ed) ? "自定編輯器"
+ : "搜尋";
KS_OSDATASET(&menu_compose[WHERE_KEY],
(Pmaster->alt_ed) ? KS_ALTEDITOR : KS_WHEREIS);
diff --git a/chinese/pine4/files/patch-ao b/chinese/pine4/files/patch-ao
index 8e5f28a4dc63..cb277b83db43 100644
--- a/chinese/pine4/files/patch-ao
+++ b/chinese/pine4/files/patch-ao
@@ -1,5 +1,26 @@
---- pico/file.c.orig Fri Jul 17 08:11:52 1998
-+++ pico/file.c Tue Aug 4 12:42:14 1998
+--- pico/file.c.orig Fri Aug 28 07:02:07 1998
++++ pico/file.c Tue Sep 22 18:45:49 1998
+@@ -63,17 +63,17 @@
+ return(s);
+
+ if(gmode&MDSCUR){
+- emlwrite("File reading disabled in secure mode",NULL);
++ emlwrite("安全模式中已關閉讀取檔案的功\能",NULL);
+ return(0);
+ }
+
+ if (strlen(fname) == 0) {
+- emlwrite("No file name entered",NULL);
++ emlwrite("尚未輸入檔案名",NULL);
+ return(0);
+ }
+
+ if((gmode&MDTREE) && !in_oper_tree(fname)){
+- emlwrite("Can't read file from outside of %s", opertree);
++ emlwrite("無法讀取 %s 以外的檔案", opertree);
+ return(0);
+ }
+
@@ -137,13 +137,13 @@
menu_ins[last_menu].name = "^T";
@@ -16,7 +37,7 @@
KS_OSDATASET(&menu_ins[last_menu], KS_NONE);
}
-@@ -159,26 +159,25 @@
+@@ -159,43 +159,42 @@
if(gmode & MDCMPLT){
menu_ins[++last_menu].name = msg ? "" : "TAB";
menu_ins[last_menu].key = (CTRL|'I');
@@ -38,7 +59,7 @@
- msg ? "folder" : "directory");
+ : "家",
+ msg ? "檔案匣" : "目錄", msg ? "信件編號" : "檔案");
- s = mlreplyd(prompt, fname, NFILEN, QDEFLT, msg ? NULL : menu_ins);
+ s = mlreplyd(prompt, fname, NLINE, QDEFLT, msg ? NULL : menu_ins);
/* something to read and it was edited or the default accepted */
if(fname[0] && (s == TRUE || s == FALSE)){
bye++;
@@ -49,3 +70,198 @@
}
else{
bye++;
+ if(gmode&MDSCUR){
+- emlwrite("Can't insert file in restricted mode",NULL);
++ emlwrite("在限制模式中無法插入檔案",NULL);
+ }
+ else{
+ if(gmode&MDTREE && !compresspath(opertree, fname, NLINE)){
+ emlwrite(
+- "Can't insert file from outside of %s: too many ..'s",
++ "無法在 %s 以外的地方插入檔案:太多 .. 了",
+ opertree);
+ }
+ else{
+ fixpath(fname, NLINE);
+
+ if((gmode&MDTREE) && !in_oper_tree(fname))
+- emlwrite("Can't insert file from outside of %s",
++ emlwrite("無法在 %s 以外的地方插入檔案",
+ opertree);
+ else
+ retval = ifile(fname);
+@@ -250,7 +249,7 @@
+ break;
+ case (CTRL|'T'):
+ if(msg){
+- emlwrite("Can't select messages yet!", NULL);
++ emlwrite("還無法選擇信件!", NULL);
+ }
+ else{
+ if(*fname && isdir(fname, NULL, NULL))
+@@ -264,7 +263,7 @@
+ if((s = FileBrowse(dir, NLINE, fname, NLINE,
+ NULL, FB_READ)) == 1){
+ if(gmode&MDSCUR){
+- emlwrite("Can't insert in restricted mode",
++ emlwrite("在限制模式中無法插入",
+ NULL);
+ sleep(2);
+ }
+@@ -305,7 +304,7 @@
+
+ if(gmode&MDSCUR){
+ emlwrite(
+- "\007Restricted mode disallows uploaded command",
++ "\007限制模式中不允許\上載",
+ NULL);
+ return(0);
+ }
+@@ -403,17 +402,17 @@
+
+ strcpy(curbp->b_fname, fname);
+ if ((gmode&MDTREE) && !in_oper_tree(fname)) {
+- emlwrite("Can't read file from outside of %s", opertree);
++ emlwrite("無法讀取 %s 以外的檔案", opertree);
+ s = FIOERR;
+ }
+ else if ((s=ffropen(fname)) != FIOSUC){ /* Hard file open. */
+ if(s == FIOFNF) /* File not found. */
+- emlwrite("New file", NULL);
++ emlwrite("新檔", NULL);
+ else
+ fioperr(s, fname);
+ }
+ else{
+- emlwrite("Reading file", NULL);
++ emlwrite("讀取檔案", NULL);
+ nline = 0L;
+ done = newline = 0;
+ while(!done)
+@@ -479,14 +478,14 @@
+ fname[0] = '\0';
+
+ menu_write[0].name = "^T";
+- menu_write[0].label = "To Files";
++ menu_write[0].label = "檔案列表";
+ menu_write[0].key = (CTRL|'T');
+ menu_write[1].name = "TAB";
+- menu_write[1].label = "Complete";
++ menu_write[1].label = "完成";
+ menu_write[1].key = (CTRL|'I');
+ menu_write[2].name = NULL;
+ for(;!(gmode & MDTOOL);){
+- s = mlreplyd("File Name to write : ", fname, NFILEN,
++ s = mlreplyd("欲寫入的檔名:", fname, NFILEN,
+ QDEFLT|QFFILE, menu_write);
+
+ switch(s){
+@@ -497,7 +496,7 @@
+ }
+ case TRUE:
+ if(gmode&MDTREE && !compresspath(opertree, fname, NFILEN)){
+- emlwrite("Can't write outside of %s: too many ..'s",
++ emlwrite("無法寫入 %s 以外的檔案:太多 .. 了",
+ opertree);
+ sleep(2);
+ continue;
+@@ -505,7 +504,7 @@
+ else{
+ fixpath(fname, NFILEN); /* fixup ~ in file name */
+ if((gmode&MDTREE) && !in_oper_tree(fname)){
+- emlwrite("Can't write outside of %s", opertree);
++ emlwrite("無法寫入 %s 以外的檔案", opertree);
+ sleep(2);
+ continue;
+ }
+@@ -586,12 +585,12 @@
+ strcpy(fname, shows);
+ }
+ else {
+- emlwrite("Cannot write. File name too long!!",NULL);
++ emlwrite("無法寫入。檔名過長!",NULL);
+ sleep(3);
+ }
+ }
+ else if (s == -1){
+- emlwrite("Cannot write. File name too long!!",NULL);
++ emlwrite("無法寫入。檔名過長!",NULL);
+ sleep(3);
+ }
+ refresh(FALSE, 1);
+@@ -629,7 +628,7 @@
+ return(ABORT);
+ }
+ }
+- emlwrite("Writing...", NULL);
++ emlwrite("正在寫入...", NULL);
+
+ if ((s=writeout(fname, 0)) != -1) {
+ if(!(gmode&MDTOOL)){
+@@ -646,9 +645,9 @@
+ }
+
+ if(s > 1)
+- emlwrite("Wrote %d lines", (void *)s);
++ emlwrite("寫入 %d 行", (void *)s);
+ else
+- emlwrite("Wrote 1 line", NULL);
++ emlwrite("寫入 1 行", NULL);
+ }
+ return ((s == -1) ? FALSE : TRUE);
+ }
+@@ -674,12 +673,12 @@
+ if ((curbp->b_flag&BFCHG) == 0) /* Return, no changes. */
+ return (TRUE);
+ if (curbp->b_fname[0] == 0) { /* Must have a name. */
+- emlwrite("No file name", NULL);
++ emlwrite("沒有檔名", NULL);
+ sleep(2);
+ return (FALSE);
+ }
+
+- emlwrite("Writing...", NULL);
++ emlwrite("正在寫入...", NULL);
+ if ((s=writeout(curbp->b_fname, 0)) != -1) {
+ curbp->b_flag &= ~BFCHG;
+ wp = wheadp; /* Update mode lines. */
+@@ -690,10 +689,10 @@
+ wp = wp->w_wndp;
+ }
+ if(s > 1){
+- emlwrite("Wrote %d lines", (void *)s);
++ emlwrite("寫入 %d 行", (void *)s);
+ }
+ else
+- emlwrite("Wrote 1 line", NULL);
++ emlwrite("寫入 1 行", NULL);
+ }
+ return (s);
+ }
+@@ -812,7 +811,7 @@
+ curbp->b_flag &= ~BFTEMP; /* and are not temporary*/
+ curbp->b_linecnt = -1; /* must be recalculated */
+
+- emlwrite("Inserting %s.", fname);
++ emlwrite("正在插入 %s。", fname);
+ done = newline = 0;
+ nline = 0L;
+ while(!done)
+@@ -822,7 +821,7 @@
+ else
+ forwchar(FALSE, 1);
+
+- sprintf(line,"Inserted %d line%s", nline, (nline>1) ? "s" : "");
++ sprintf(line,"已插入 %d 行", nline);
+ emlwrite(line, NULL);
+ break;
+ }
+@@ -910,7 +909,7 @@
+ strcat(fn, S_FILESEP);
+ }
+ else{
+- emlwrite("File name too BIG!!",0);
++ emlwrite("檔名太大了!!",0);
+ sleep(3);
+ *fn = '\0';
+ }
diff --git a/chinese/pine4/files/patch-as b/chinese/pine4/files/patch-as
index bc2d25b502a9..18a08ee415fc 100644
--- a/chinese/pine4/files/patch-as
+++ b/chinese/pine4/files/patch-as
@@ -1,39 +1,44 @@
---- pico/search.c.orig Fri Jun 26 05:48:14 1998
-+++ pico/search.c Wed Aug 19 10:45:20 1998
+--- pico/search.c.orig Sat Sep 12 01:15:02 1998
++++ pico/search.c Tue Sep 22 18:54:24 1998
@@ -127,9 +127,9 @@
/* ask the user for the text of a pattern */
while(1){
- if (gmode & MDREPLACE)
-- status = srpat("Search", defpat, repl_mode);
-+ status = srpat("搜尋", defpat, repl_mode);
- else
-- status = readpattern("Search");
-+ status = readpattern("搜尋");
-
- switch(status){
- case TRUE: /* user typed something */
-@@ -138,9 +138,9 @@
- case HELPCH: /* help requested */
- if(Pmaster)
- (*Pmaster->helper)(Pmaster->search_help,
-- "Help for Searching", 1);
-+ "搜尋的輔助說明", 1);
- else
-- pico_help(SearchHelpText, "Help for Searching", 1);
-+ pico_help(SearchHelpText, "搜尋的輔助說明", 1);
- case (CTRL|'L'): /* redraw requested */
- refresh(FALSE, 1);
- update();
-@@ -165,7 +165,7 @@
- break;
- default:
- if(status == ABORT)
-- emlwrite("Search Cancelled", NULL);
-+ emlwrite("取消搜尋", NULL);
- else
- mlerase();
- curwp->w_flag |= WFMODE;
-@@ -212,16 +212,16 @@
+ if (gmode & MDREPLACE)
+- status = srpat("Search", defpat, repl_mode);
++ status = srpat("搜尋", defpat, repl_mode);
+ else
+- status = readpattern("Search");
++ status = readpattern("搜尋");
+
+ switch(status){
+ case TRUE: /* user typed something */
+@@ -142,14 +142,14 @@
+
+ saved_state = save_pico_state();
+ (*Pmaster->helper)(Pmaster->search_help,
+- "Help for Searching", 1);
++ "搜尋的輔助說明", 1);
+ if(saved_state){
+ restore_pico_state(saved_state);
+ free_pico_state(saved_state);
+ }
+ }
+ else
+- pico_help(SearchHelpText, "Help for Searching", 1);
++ pico_help(SearchHelpText, "搜尋的輔助說明", 1);
+
+ case (CTRL|'L'): /* redraw requested */
+ refresh(FALSE, 1);
+@@ -179,7 +179,7 @@
+
+ default:
+ if(status == ABORT)
+- emlwrite("Search Cancelled", NULL);
++ emlwrite("取消搜尋", NULL);
+ else
+ mlerase();
+
+@@ -228,16 +228,16 @@
/* and complain if not there */
if (status == FALSE){
@@ -54,75 +59,68 @@
}
else if(status == TRUE){
emlwrite("", NULL);
-@@ -251,7 +251,7 @@
- /* additional 'replace all' menu option */
- menu_pat[0].name = "^X";
- menu_pat[0].key = (CTRL|'X');
-- menu_pat[0].label = "Repl All";
-+ menu_pat[0].label = "取代所有";
- KS_OSDATASET(&menu_pat[0], KS_NONE);
- menu_pat[1].name = NULL;
-
-@@ -263,12 +263,12 @@
- (*term.t_rev)(0);
-
- if (repl_all)
-- strcpy(prompt, "Replace every \"");
-+ strcpy(prompt, "取代每一個 \"");
- else
-- strcpy(prompt, "Replace \"");
-+ strcpy(prompt, "取代 \"");
-
- expandp(&defpat[0], &prompt[strlen(prompt)], NPAT/2);
-- strcat(prompt, "\" with");
-+ strcat(prompt, "\" 為");
- if(rpat[0] != 0){
- strcat(prompt, " [");
- expandp(rpat, &prompt[strlen(prompt)], NPAT/2);
-@@ -286,9 +286,9 @@
- case HELPCH: /* help requested */
- if(Pmaster)
- (*Pmaster->helper)(Pmaster->search_help,
-- "Help for Searching", 1);
-+ "搜尋的輔助說明", 1);
- else
-- pico_help(SearchHelpText, "Help for Searching", 1);
-+ pico_help(SearchHelpText, "搜尋的輔助說明", 1);
-
- case (CTRL|'L'): /* redraw requested */
- refresh(FALSE, 1);
-@@ -298,10 +298,10 @@
- case (CTRL|'X'): /* toggle replace all option */
- if (repl_all){
- repl_all = FALSE;
-- menu_pat[0].label = "Repl All";
-+ menu_pat[0].label = "取代所有";
- }else{
- repl_all = TRUE;
-- menu_pat[0].label = "Repl One";
-+ menu_pat[0].label = "取代一個";
+@@ -267,7 +267,7 @@
+ /* additional 'replace all' menu option */
+ menu_pat[0].name = "^X";
+ menu_pat[0].key = (CTRL|'X');
+- menu_pat[0].label = "Repl All";
++ menu_pat[0].label = "取代所有";
+ KS_OSDATASET(&menu_pat[0], KS_NONE);
+ menu_pat[1].name = NULL;
+
+@@ -279,10 +279,10 @@
+ pputs(origpat, 1); /* highlight word */
+ (*term.t_rev)(0);
+
+- sprintf(prompt, "Replace%s \"", repl_all ? " every" : "");
++ sprintf(prompt, "取代%s \"", repl_all ? "每一個" : "");
+
+ expandp(&defpat[0], &prompt[strlen(prompt)], NPAT/2);
+- strcat(prompt, "\" with");
++ strcat(prompt, "\" 為");
+ if(rpat[0] != 0){
+ strcat(prompt, " [");
+ expandp(rpat, &prompt[strlen(prompt)], NPAT/2);
+@@ -324,14 +324,14 @@
+
+ saved_state = save_pico_state();
+ (*Pmaster->helper)(Pmaster->search_help,
+- "Help for Searching", 1);
++ "搜尋的輔助說明", 1);
+ if(saved_state){
+ restore_pico_state(saved_state);
+ free_pico_state(saved_state);
}
- break;
-
-@@ -342,7 +342,7 @@
- else
- {
- if(status == ABORT)
-- emlwrite("Replacement Cancelled", NULL);
-+ emlwrite("取消取代", NULL);
- else
- mlerase();
- chword(defpat, defpat);
-@@ -352,7 +352,7 @@
-
- default:
- if(status == ABORT)
-- emlwrite("Replacement Cancelled", NULL);
-+ emlwrite("取消取代", NULL);
- else
- mlerase();
- chword(defpat, defpat);
-@@ -384,9 +384,9 @@
+ }
+ else
+- pico_help(SearchHelpText, "Help for Searching", 1);
++ pico_help(SearchHelpText, "搜尋的輔助說明", 1);
+
+ case (CTRL|'L'): /* redraw requested */
+ refresh(FALSE, 1);
+@@ -341,18 +341,18 @@
+ case (CTRL|'X'): /* toggle replace all option */
+ if (repl_all){
+ repl_all = FALSE;
+- menu_pat[0].label = "Repl All";
++ menu_pat[0].label = "取代所有";
+ }
+ else{
+ repl_all = TRUE;
+- menu_pat[0].label = "Repl One";
++ menu_pat[0].label = "取代一個";
+ }
+
+ break;
+
+ default:
+ if(status == ABORT)
+- emlwrite("Replacement Cancelled", NULL);
++ emlwrite("取消取代", NULL);
+ else
+ mlerase();
+ chword(defpat, origpat);
+@@ -401,9 +401,9 @@
(*term.t_rev)(0);
fflush(stdout);
@@ -134,8 +132,8 @@
expandp(&repl[0], &prompt[strlen(prompt)], NPAT/2);
strcat(prompt, "\"");
-@@ -400,13 +400,13 @@
- chword(orig, orig); /* replace word by itself */
+@@ -417,13 +417,13 @@
+ chword(realpat, realpat); /* replace word by itself */
update();
if(status == ABORT){ /* if cancelled return */
- emlwrite("Replace All cancelled after %d changes", (char *) n);
@@ -150,7 +148,7 @@
return (FALSE);
}
}
-@@ -423,18 +423,18 @@
+@@ -440,18 +440,18 @@
EXTRAKEYS menu_pat[4];
menu_pat[0].name = "^Y";
@@ -165,7 +163,7 @@
KS_OSDATASET(&menu_pat[1], KS_NONE);
menu_pat[2].name = "^R";
if (repl_mode)
-- menu_pat[2].label = "Don't Replace";
+- menu_pat[2].label = "No Replace";
+ menu_pat[2].label = "不取代";
else
- menu_pat[2].label = "Replace";
@@ -173,7 +171,7 @@
menu_pat[2].key = (CTRL|'R');
KS_OSDATASET(&menu_pat[2], KS_NONE);
menu_pat[3].name = NULL;
-@@ -485,11 +485,11 @@
+@@ -504,11 +504,11 @@
EXTRAKEYS menu_pat[3];
menu_pat[0].name = "^Y";
diff --git a/chinese/pine4/files/patch-au b/chinese/pine4/files/patch-au
index 543234a9f097..04aa57854f0f 100644
--- a/chinese/pine4/files/patch-au
+++ b/chinese/pine4/files/patch-au
@@ -1,11 +1,11 @@
---- pine/osdep/os-bsf.h.orig Fri Jun 26 14:19:54 1998
-+++ pine/osdep/os-bsf.h Wed Aug 19 10:45:25 1998
+--- pine/osdep/os-bsf.h.orig Tue Sep 22 11:19:52 1998
++++ pine/osdep/os-bsf.h Tue Sep 22 11:23:50 1998
@@ -74,7 +74,7 @@
default-composer-hdrs or customized-hdrs to get at it. Instead of
defining NEVER_ALLOW_CHANGING_FROM, an easier way of preventing From
changing is to put the feature "no-allow-changing-from" in the
- /usr/local/lib/pine.conf.fixed file.
-+ /usr/local/etc/pine.conf.fixed file.
++ @@PREFIX@@/etc/pine.conf.fixed file.
----*/
/* #define NEVER_ALLOW_CHANGING_FROM /* probably not needed */
@@ -14,7 +14,18 @@
file is included in the os-*.ic file for your system.
----*/
-/* #define BACKGROUND_POST /* comment out to disable posting from child */
-+#define BACKGROUND_POST /* comment out to disable posting from child */
++#define BACKGROUND_POST /* comment out to disable posting from child */
+
+
+
+@@ -160,8 +160,8 @@
+
+
+ /*----- System-wide config file ----------------------------------------*/
+-#define SYSTEM_PINERC "/usr/local/lib/pine.conf"
+-#define SYSTEM_PINERC_FIXED "/usr/local/lib/pine.conf.fixed"
++#define SYSTEM_PINERC "@@PREFIX@@/etc/pine.conf"
++#define SYSTEM_PINERC_FIXED "@@PREFIX@@/etc/pine.conf.fixed"
diff --git a/chinese/pine4/files/patch-aw b/chinese/pine4/files/patch-aw
index e9165b7dc6e7..a1d2bf8b4f78 100644
--- a/chinese/pine4/files/patch-aw
+++ b/chinese/pine4/files/patch-aw
@@ -1,5 +1,5 @@
---- pine/adrbkcmd.c.orig Sat Jul 11 01:32:16 1998
-+++ pine/adrbkcmd.c Tue Aug 4 12:42:16 1998
+--- pine/adrbkcmd.c.orig Wed Sep 16 06:11:08 1998
++++ pine/adrbkcmd.c Tue Sep 22 18:58:32 1998
@@ -112,23 +112,23 @@
static struct key abook_view_keys[] =
{HELP_MENU,
@@ -49,7 +49,7 @@
INST_KEY_MENU(abook_text_km, abook_text_keys);
#define VIEW_ABOOK_NONE 0
-@@ -301,15 +301,15 @@
+@@ -305,15 +305,15 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = so_text(out_store);
sargs.text.src = CharStar;
@@ -68,7 +68,7 @@
sargs.keys.menu = &abook_view_keymenu;
setbitmap(sargs.keys.bitmap);
-@@ -405,7 +405,7 @@
+@@ -421,7 +421,7 @@
if(adrbk_check_all_validity_now()){
if(resync_screen(pab, AddrBookScreen, 0)){
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -77,7 +77,7 @@
ps_global->mangled_screen = 1;
break;
}
-@@ -433,7 +433,7 @@
+@@ -449,7 +449,7 @@
abe_copy = copy_ae(abe);
dprint(9, (debugfile,"Calling edit_entry to edit from view\n"));
edit_entry(pab->address_book, abe_copy, entry,
@@ -86,16 +86,16 @@
/*
* The ABOOK_EDITED case doesn't mean that we necessarily
* changed something, just that we might have but we know
-@@ -478,7 +478,7 @@
+@@ -494,7 +494,7 @@
h_ab_text_or_vcard, RB_NORM);
switch(i){
case 'x':
- cancel_warning(NO_DING, "forward");
+ cancel_warning(NO_DING, "轉寄");
+ rv = 0;
break;
- case 't':
-@@ -704,8 +704,8 @@
+@@ -729,8 +729,8 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = so_text(store);
sargs.text.src = CharStar;
@@ -106,7 +106,7 @@
sargs.bar.style = TextPercent;
sargs.keys.menu = &abook_text_km;
setbitmap(sargs.keys.bitmap);
-@@ -772,8 +772,8 @@
+@@ -800,8 +800,8 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = so_text(store);
sargs.text.src = src;
@@ -117,7 +117,7 @@
sargs.bar.style = TextPercent;
sargs.keys.menu = &abook_text_km;
setbitmap(sargs.keys.bitmap);
-@@ -796,19 +796,19 @@
+@@ -824,19 +824,19 @@
*/
static struct headerentry headents_for_edit[]={
{"Nickname : ", "Nickname", h_composer_abook_nick, 12, 0, NULL,
@@ -144,7 +144,7 @@
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE},
{NULL, NULL, NO_HELP, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE}
-@@ -923,7 +923,7 @@
+@@ -951,7 +951,7 @@
pbuf.canceltest = warped ? pico_cancel_for_adrbk_edit
: pico_cancel_for_adrbk_take;
pbuf.expander = expand_addrs_for_pico;
@@ -153,7 +153,7 @@
pbuf.resize = resize_for_pico;
pbuf.winch_cleanup = winch_cleanup;
pbuf.suspend = do_suspend;
-@@ -938,7 +938,7 @@
+@@ -966,7 +966,7 @@
pbuf.browse_help = h_composer_browse;
pbuf.attach_help = h_composer_ctrl_j;
pbuf.composer_help = h_composer;
@@ -162,7 +162,7 @@
readonly ? 'V' : islower((unsigned char)(*cmd))
? toupper((unsigned char)*cmd)
: *cmd,
-@@ -1523,12 +1523,12 @@
+@@ -1551,12 +1551,12 @@
ps_global->redrawer = redraw_pico;
fix_windsize(ps_global);
@@ -177,7 +177,7 @@
break;
}
-@@ -1552,8 +1552,8 @@
+@@ -1580,8 +1580,8 @@
char *rstr = NULL;
void (*redraw)() = ps_global->redrawer;
@@ -188,7 +188,7 @@
ps_global->redrawer = redraw_pico;
fix_windsize(ps_global);
-@@ -1576,7 +1576,7 @@
+@@ -1604,7 +1604,7 @@
pico_cancel_for_adrbk_take(redraw_pico)
void (*redraw_pico)();
{
@@ -197,7 +197,7 @@
}
-@@ -1584,7 +1584,7 @@
+@@ -1612,7 +1612,7 @@
pico_cancel_for_adrbk_edit(redraw_pico)
void (*redraw_pico)();
{
@@ -206,7 +206,7 @@
}
-@@ -1701,16 +1701,16 @@
+@@ -1729,16 +1729,16 @@
if(ps_global->readonly_pinerc){
q_status_message1(SM_ORDER, 0, 3,
@@ -227,7 +227,7 @@
return -1;
}
-@@ -1759,7 +1759,7 @@
+@@ -1787,7 +1787,7 @@
pbuf.browse_help = h_composer_browse;
pbuf.attach_help = h_composer_ctrl_j;
pbuf.composer_help = h_composer;
@@ -236,7 +236,7 @@
pbuf.pine_anchor = set_titlebar(titlebar,
ps_global->mail_stream,
ps_global->context_current,
-@@ -1828,8 +1828,8 @@
+@@ -1856,8 +1856,8 @@
if(editor_result & COMP_CANCEL){
ret = -1;
q_status_message1(SM_ORDER, 0, 3,
@@ -247,7 +247,7 @@
}
else if(editor_result & COMP_EXIT){
if(!strcmp(server, def_serv ? def_serv : "") &&
-@@ -1837,8 +1837,8 @@
+@@ -1865,8 +1865,8 @@
!strcmp(nickname, def_nick ? def_nick : "")){
ret = -1;
q_status_message1(SM_ORDER, 0, 3,
@@ -258,7 +258,7 @@
}
else{
-@@ -1898,8 +1898,8 @@
+@@ -1936,8 +1936,8 @@
if(*tmp == '\0'){
q_status_message1(SM_ORDER, 0, 3,
@@ -269,7 +269,7 @@
ret = -1;
goto get_out;
}
-@@ -1924,8 +1924,8 @@
+@@ -1962,8 +1962,8 @@
if(set_variable_list(global ? V_GLOB_ADDRBOOK : V_ADDRESSBOOK,
new_list, TRUE)){
q_status_message1(SM_ORDER, 0, 3,
@@ -280,7 +280,7 @@
set_current_val(&vars[global ? V_GLOB_ADDRBOOK : V_ADDRESSBOOK],
TRUE, FALSE);
-@@ -2099,7 +2099,7 @@
+@@ -2137,7 +2137,7 @@
if(ps_global->readonly_pinerc){
if(err)
@@ -289,7 +289,7 @@
return -1;
}
-@@ -2116,10 +2116,10 @@
+@@ -2154,10 +2154,10 @@
if(err){
if(pab->type & GLOBAL)
*err =
@@ -302,7 +302,7 @@
}
return -1;
-@@ -2172,8 +2172,8 @@
+@@ -2210,8 +2210,8 @@
if(cnt > 1){
static ESCKEY_S opts[] = {
@@ -313,7 +313,7 @@
{-1, 0, NULL, NULL}};
sprintf(tmp,
-@@ -2191,7 +2191,7 @@
+@@ -2229,7 +2229,7 @@
case 'x':
if(err)
@@ -322,7 +322,7 @@
return -1;
}
-@@ -2202,7 +2202,7 @@
+@@ -2240,7 +2240,7 @@
case 'n':
case 'x':
if(err)
@@ -331,7 +331,7 @@
return -1;
-@@ -2247,7 +2247,7 @@
+@@ -2285,7 +2285,7 @@
case 'x': /* Cancel */
default:
if(err)
@@ -340,7 +340,7 @@
return -1;
}
-@@ -2267,7 +2267,7 @@
+@@ -2305,7 +2305,7 @@
case 'x':
default:
if(err)
@@ -349,7 +349,7 @@
return -1;
-@@ -2328,7 +2328,7 @@
+@@ -2366,7 +2366,7 @@
case 'n':
default:
if(err)
@@ -358,7 +358,7 @@
return -1;
}
-@@ -2467,7 +2467,7 @@
+@@ -2505,7 +2505,7 @@
/* this also frees old variable contents for us */
if(set_variable_list(varnum, new_list, TRUE)){
if(err)
@@ -367,7 +367,7 @@
set_current_val(&vars[varnum], TRUE, FALSE);
free_list_array(&new_list);
-@@ -2534,7 +2534,7 @@
+@@ -2572,7 +2572,7 @@
if(ps_global->readonly_pinerc){
if(msg)
@@ -376,7 +376,7 @@
return -1;
}
-@@ -2544,12 +2544,12 @@
+@@ -2582,12 +2582,12 @@
opts[i].ch = 'u';
opts[i].rval = 'u';
opts[i].name = "U";
@@ -391,7 +391,7 @@
opts[i].ch = -1;
deefault = 'u';
-@@ -2557,7 +2557,7 @@
+@@ -2595,7 +2595,7 @@
if(pab->type & GLOBAL){
if(vars[V_GLOB_ADDRBOOK].is_fixed){
if(msg)
@@ -400,7 +400,7 @@
return -1;
}
-@@ -2577,7 +2577,7 @@
+@@ -2615,7 +2615,7 @@
else{
if(vars[V_ADDRESSBOOK].is_fixed){
if(msg)
@@ -409,7 +409,7 @@
return -1;
}
-@@ -2616,7 +2616,7 @@
+@@ -2654,7 +2654,7 @@
if(rv == 'x'){
if(msg)
@@ -418,32 +418,32 @@
return -1;
}
-@@ -2659,7 +2659,7 @@
+@@ -2697,7 +2697,7 @@
enum {NotSet, Pers, Glob, Empty} type1, type2;
- int i, j;
+ int i, j, retval = -1;
struct variable *vars = ps_global->vars;
- char *cancel_msg = "Shuffle cancelled: couldn't save configuration file";
+ char *cancel_msg = "取消重整:無法存入設定檔";
dprint(5, (debugfile, "- do_the_shuffle(%d, %d) -\n", anum1, anum2));
-@@ -2673,7 +2673,7 @@
+@@ -2711,7 +2711,7 @@
if(type1 == Empty){
if(msg)
*msg =
- cpystr("Shuffle cancelled: highlight entry you wish to shuffle");
+ cpystr("取消重整:請先標示欲重整的項目");
- return -1;
+ return(retval);
}
-@@ -2690,14 +2690,14 @@
+@@ -2728,14 +2728,14 @@
if((type1 == Pers || type2 == Pers) && vars[V_ADDRESSBOOK].is_fixed){
if(msg)
- *msg = cpystr("Cancelled: Sys. Mgmt. does not allow changing address book configuration");
+ *msg = cpystr("動作取消:系統管理員不允許\改變地址簿設定");
- return -1;
+ return(retval);
}
if((type1 == Glob || type2 == Glob) && vars[V_GLOB_ADDRBOOK].is_fixed){
@@ -451,9 +451,9 @@
- *msg = cpystr("Cancelled: Sys. Mgmt. does not allow changing global address book config");
+ *msg = cpystr("動作取消:系統管理員不允許\改變整體的地址簿設定");
- return -1;
+ return(retval);
}
-@@ -3167,7 +3167,7 @@
+@@ -3207,7 +3207,7 @@
AdrBk_Entry *abe;
VCARD_INFO_S *vinfo;
static ESCKEY_S ab_export_opts[] = {
@@ -462,7 +462,7 @@
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL}};
static ESCKEY_S vcard_or_addresses[] = {
-@@ -3190,7 +3190,7 @@
+@@ -3230,7 +3230,7 @@
switch(i){
case 'x':
@@ -471,7 +471,7 @@
return(ret);
case 'a':
-@@ -3219,7 +3219,7 @@
+@@ -3259,7 +3259,7 @@
ab_export_opts[++r].ch = ctrl('I');
ab_export_opts[r].rval = 11;
ab_export_opts[r].name = "TAB";
@@ -480,7 +480,7 @@
}
ab_export_opts[++r].ch = -1;
-@@ -3232,7 +3232,7 @@
+@@ -3272,7 +3272,7 @@
if(r < 0){
switch(r){
case -1:
@@ -489,7 +489,7 @@
break;
case -2:
-@@ -3616,7 +3616,7 @@
+@@ -3656,7 +3656,7 @@
switch(want_to("Expand nicknames", 'y', 'x', h_ab_forward,WT_NORM)){
case 'x':
gf_clear_so_writec((STORE_S *) pb->contents.text.data);
@@ -498,7 +498,7 @@
goto bomb;
case 'y':
-@@ -3700,7 +3700,7 @@
+@@ -3740,7 +3740,7 @@
gf_clear_so_writec((STORE_S *) pb->contents.text.data);
@@ -507,7 +507,7 @@
NULL, NULL, NULL, NULL, 0);
ps->mangled_screen = 1;
-@@ -4165,8 +4165,8 @@
+@@ -4207,8 +4207,8 @@
char tmp[200];
ACTION_LIST_S *action_list = NULL, *al;
static ESCKEY_S save_or_export[] = {
@@ -518,7 +518,7 @@
{-1, 0, NULL, NULL}};
sprintf(tmp, "Save%s to address book or Export to filesystem ? ",
-@@ -4177,7 +4177,7 @@
+@@ -4219,7 +4219,7 @@
h_ab_save_exp, RB_NORM);
switch(i){
case 'x':
@@ -527,7 +527,7 @@
return(0);
case 'e':
-@@ -4356,7 +4356,7 @@
+@@ -4405,7 +4405,7 @@
if(action_list)
fs_give((void **)&action_list);
@@ -536,7 +536,7 @@
return(ret);
}
-@@ -4545,7 +4545,7 @@
+@@ -4594,7 +4594,7 @@
q_status_message(SM_ORDER | SM_DING, 3, 4,
"Save only partially completed");
else
@@ -545,7 +545,7 @@
}
else if (how_many_to_copy + how_many_no_action -
(skip_dups ? how_many_dups : 0) > 0){
-@@ -4621,15 +4621,15 @@
+@@ -4670,15 +4670,15 @@
if(!agg && as.opened){
static ESCKEY_S prt[] = {
@@ -564,7 +564,7 @@
ps_global->mangled_footer = 1;
return 0;
-@@ -4700,7 +4700,7 @@
+@@ -4749,7 +4749,7 @@
switch(want_to("Expand nicknames", 'y', 'x', h_ab_forward,
WT_NORM)){
case 'x':
@@ -573,7 +573,7 @@
ps_global->mangled_footer = 1;
return 0;
-@@ -4924,7 +4924,7 @@
+@@ -4973,7 +4973,7 @@
lineno = 0L;
if(as.opened)
@@ -582,7 +582,7 @@
as.adrbks[as.cur].nickname);
-@@ -4979,7 +4979,7 @@
+@@ -5028,7 +5028,7 @@
dprint(2, (debugfile, "- ab_delete -\n"));
if(agg){
@@ -591,7 +591,7 @@
ch = want_to(prompt, 'n', 'n', NO_HELP, WT_NORM);
if(ch == 'y'){
adrbk_cntr_t newelnum, flushelnum = NO_NEXT;
-@@ -5144,7 +5144,7 @@
+@@ -5193,7 +5193,7 @@
}
}
else
@@ -600,7 +600,7 @@
}
return(ret);
-@@ -5192,7 +5192,7 @@
+@@ -5241,7 +5241,7 @@
? (char *)rfc1522_decode((unsigned char *)tmp_20k_buf,
abe->fullname, NULL)
: abe->nickname ? abe->nickname : "";
@@ -609,7 +609,7 @@
break;
case ListHead:
-@@ -5200,13 +5200,13 @@
+@@ -5249,13 +5249,13 @@
? (char *)rfc1522_decode((unsigned char *)tmp_20k_buf,
abe->fullname, NULL)
: abe->nickname ? abe->nickname : "";
@@ -625,7 +625,7 @@
break;
}
-@@ -5305,7 +5305,7 @@
+@@ -5354,7 +5354,7 @@
return 0;
}
else{
@@ -634,7 +634,7 @@
return 0;
}
}
-@@ -5441,7 +5441,7 @@
+@@ -5490,7 +5490,7 @@
if(r == 1 || r != 10 && fbuf[0] == '\0'){
ps->mangled_footer = 1;
if(error)
@@ -643,7 +643,7 @@
return(ret);
}
-@@ -5480,7 +5480,7 @@
+@@ -5529,7 +5529,7 @@
pbuf.browse_help = h_composer_browse;
pbuf.attach_help = h_composer_ctrl_j;
pbuf.composer_help = h_composer;
@@ -652,7 +652,7 @@
ps_global->mail_stream,
ps_global->context_current,
ps_global->cur_folder,
-@@ -5728,13 +5728,13 @@
+@@ -5777,13 +5777,13 @@
static struct key ldap_view_keys[] =
{HELP_MENU,
NULL_MENU,
@@ -668,7 +668,7 @@
FWDEMAIL_MENU,
SAVE_MENU,
WHEREIS_MENU};
-@@ -5763,12 +5763,12 @@
+@@ -5812,12 +5812,12 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = so_text(srcstore);
sargs.text.src = srctype;
@@ -684,7 +684,7 @@
sargs.keys.menu = &ldap_view_keymenu;
setbitmap(sargs.keys.bitmap);
-@@ -6117,7 +6117,7 @@
+@@ -6174,7 +6174,7 @@
struct headerentry *he;
void (*redraw_pico)();
{
diff --git a/chinese/pine4/files/patch-ax b/chinese/pine4/files/patch-ax
index 49a34ee41c64..84040b7b9935 100644
--- a/chinese/pine4/files/patch-ax
+++ b/chinese/pine4/files/patch-ax
@@ -1,5 +1,5 @@
---- pine/folder.c.orig Wed Jul 22 06:01:07 1998
-+++ pine/folder.c Tue Aug 4 12:42:16 1998
+--- pine/folder.c.orig Thu Sep 17 01:12:27 1998
++++ pine/folder.c Tue Sep 22 19:05:59 1998
@@ -62,13 +62,13 @@
((X)->dir->status&CNTXT_PARTFIND) == 0)
#define FLDR_NAME(X) ((X) ? ((X)->nickname ? (X)->nickname : (X)->name) :"")
@@ -20,7 +20,7 @@
#define mail_list(S, R, N) mail_list_internal(S, R, N)
-@@ -269,18 +269,18 @@
+@@ -281,18 +281,18 @@
/*
* Various screen keymenu/command binding s.
*/
@@ -47,7 +47,7 @@
{MC_CHOICE,5,{'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE},
PREVC_MENU,
NEXTC_MENU,
-@@ -312,15 +312,15 @@
+@@ -324,15 +324,15 @@
static struct key context_cfg_keys[] =
{HELP_MENU,
OTHER_MENU,
@@ -67,7 +67,7 @@
WHEREIS_MENU,
HELP_MENU,
-@@ -339,9 +339,9 @@
+@@ -351,9 +351,9 @@
static struct key context_select_keys[] =
{HELP_MENU,
@@ -79,7 +79,7 @@
{MC_CHOICE, 5, {'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE},
PREVC_MENU,
NEXTC_MENU,
-@@ -355,9 +355,9 @@
+@@ -367,9 +367,9 @@
static struct key context_fcc_keys[] =
{HELP_MENU,
@@ -91,7 +91,7 @@
{MC_CHOICE, 5, {'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE},
PREVC_MENU,
NEXTC_MENU,
-@@ -372,16 +372,16 @@
+@@ -384,16 +384,16 @@
static struct key folder_keys[] =
{HELP_MENU,
OTHER_MENU,
@@ -112,7 +112,7 @@
WHEREIS_MENU,
HELP_MENU,
-@@ -393,9 +393,9 @@
+@@ -405,9 +405,9 @@
CIND_MENU,
COMPOSE_MENU,
PRYNTTXT_MENU,
@@ -125,7 +125,7 @@
INST_KEY_MENU(folder_km, folder_keys);
#define KM_COL_KEY 2
#define KM_SEL_KEY 3
-@@ -407,9 +407,9 @@
+@@ -419,9 +419,9 @@
static struct key folder_sel_keys[] =
{HELP_MENU,
@@ -138,7 +138,7 @@
PREVF_MENU,
NEXTF_MENU,
PREVPAGE_MENU,
-@@ -423,9 +423,9 @@
+@@ -435,9 +435,9 @@
static struct key folder_sub_sel_keys[] =
{HELP_MENU,
@@ -150,7 +150,7 @@
PREVF_MENU,
NEXTF_MENU,
PREVPAGE_MENU,
-@@ -439,9 +439,9 @@
+@@ -451,9 +451,9 @@
static struct key folder_fcc_keys[] =
{HELP_MENU,
@@ -163,7 +163,7 @@
KS_NONE},
PREVF_MENU,
NEXTF_MENU,
-@@ -457,9 +457,9 @@
+@@ -469,9 +469,9 @@
static struct key folder_sub_keys[] =
{HELP_MENU,
@@ -176,7 +176,7 @@
PREVF_MENU,
NEXTF_MENU,
PREVPAGE_MENU,
-@@ -476,8 +476,8 @@
+@@ -488,8 +488,8 @@
static struct key folder_post_keys[] =
{HELP_MENU,
NULL_MENU,
@@ -187,7 +187,7 @@
PREVF_MENU,
NEXTF_MENU,
PREVPAGE_MENU,
-@@ -572,12 +572,12 @@
+@@ -610,12 +610,12 @@
mailcap_free(); /* free resources we won't be using for a while */
memset(&css, 0, sizeof(CONT_SCR_S));
@@ -202,7 +202,7 @@
css.keymenu = &c_cfg_km;
css.edit = 1;
-@@ -866,7 +866,7 @@
+@@ -904,7 +904,7 @@
/* leave (*new_dir)->ref == NULL */
}
@@ -211,7 +211,7 @@
(*new_dir)->desc = cpystr(tmp_20k_buf);
}
-@@ -965,12 +965,12 @@
+@@ -1003,12 +1003,12 @@
CONT_SCR_S css;
memset(&css, 0, sizeof(CONT_SCR_S));
@@ -226,7 +226,7 @@
css.keymenu = km;
css.edit = edit_config;
-@@ -1041,7 +1041,7 @@
+@@ -1079,7 +1079,7 @@
pbuf.browse_help = h_composer_browse;
pbuf.attach_help = h_composer_ctrl_j;
pbuf.composer_help = h_composer;
@@ -235,7 +235,7 @@
pbuf.pine_anchor = set_titlebar(tmp, ps_global->mail_stream,
ps_global->context_current,
ps_global->cur_folder,ps_global->msgmap,
-@@ -1277,10 +1277,10 @@
+@@ -1322,10 +1322,10 @@
else
exists = (i & FEX_ISDIR);
@@ -249,7 +249,7 @@
if(want_to(prompt, 'y', 0, NO_HELP, WT_NORM) == 'y'){
if(!exists && !mail_create(NULL, tmp)){
flush_status_messages(1); /* mail_create gripes */
-@@ -1312,7 +1312,7 @@
+@@ -1357,7 +1357,7 @@
char *rstr = NULL;
void (*redraw)() = ps_global->redrawer;
#define CCA_PROMPT \
@@ -258,7 +258,7 @@
ps_global->redrawer = redraw_pico;
fix_windsize(ps_global);
-@@ -1429,7 +1429,7 @@
+@@ -1474,7 +1474,7 @@
/*BUG: test writing with NNTP to misc.test via mark's code. reasonable err msg?*/
if(NEWS_TEST(fs->context)) {
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -267,7 +267,7 @@
return(0);
}
#endif
-@@ -1444,7 +1444,7 @@
+@@ -1489,7 +1489,7 @@
FSTATE_S *fs;
{
if(!strncmp(f->prefix, "SUB", 3)){
@@ -276,7 +276,7 @@
FLDR_NAME(f));
return(0);
}
-@@ -1457,7 +1457,7 @@
+@@ -1502,7 +1502,7 @@
fl_hdr_gen(ps)
struct pine *ps;
{
@@ -285,16 +285,16 @@
ps->cur_folder, ps->msgmap, 1, FolderName, 0, 0);
}
-@@ -1572,7 +1572,7 @@
+@@ -1617,7 +1617,7 @@
{
int ch, cmd, mangled_footer, mangled_header,
n, rc, cur_row, cur_col, km_size, was_dir = -1,
-- km_popped = 0, listmode = 0, done = 0;
-+ km_popped = 0, listmode = 0, done = 0, exit_to_main = 0;
+- km_popped = 0, listmode = 0, done = 0, save_sel = 0;
++ km_popped = 0, listmode = 0, done = 0, save_sel = 0, exit_to_main = 0;
unsigned short new_col;
FOLDER_S *cur_f = NULL;
- STRINGLIST *sl = NULL;
-@@ -1682,7 +1682,7 @@
+ STRLIST_S *sl = NULL;
+@@ -1748,7 +1748,7 @@
km.keys[KM_MAIN_KEY].bind.cmd = MC_NONE;
km.keys[KM_MAIN_KEY].bind.nch = 0;
@@ -303,7 +303,7 @@
km.keys[KM_COL_KEY].bind.cmd = MC_MAIN;
km.keys[KM_COL_KEY].bind.ch[0] = 'm';
}
-@@ -1702,14 +1702,14 @@
+@@ -1768,14 +1768,14 @@
if(listmode){
clrbitn(SB_LIST_KEY, bitmap);
km.keys[SB_SEL_KEY].name = "X";
@@ -320,7 +320,7 @@
km.keys[SB_SEL_KEY].bind.cmd = MC_CHOICE;
km.keys[SB_SEL_KEY].bind.ch[0] = 's';
}
-@@ -1723,7 +1723,7 @@
+@@ -1789,7 +1789,7 @@
}
if(cur_f && cur_f->isdir){
@@ -329,7 +329,7 @@
{MC_CHOICE,5,
{'s','>','.',
ctrl('M'),ctrl('J')}},
-@@ -1849,8 +1849,15 @@
+@@ -1915,8 +1915,15 @@
/*---------------------- Key left --------------*/
case MC_CHARLEFT :
case MC_PREVITEM :
@@ -345,7 +345,7 @@
break;
-@@ -1858,6 +1865,7 @@
+@@ -1924,6 +1931,7 @@
/*--------------------- Key right -------------------*/
case MC_CHARRIGHT :
case MC_NEXTITEM :
@@ -353,7 +353,7 @@
if(n = folder_lister_next(fs))
fs->folder_index = n;
-@@ -1879,7 +1887,7 @@
+@@ -1945,7 +1953,7 @@
rc--;
if(rc < 0){
@@ -362,7 +362,7 @@
if(fs->top_row != 0){ /* make sure! */
fs->top_row = 0;
fs->prev_index = -1;
-@@ -1925,7 +1933,7 @@
+@@ -1991,7 +1999,7 @@
FOLDERS(fs->context))->d_line + 1;
if(rc > fs->last_row){
@@ -371,7 +371,7 @@
break;
}
-@@ -2044,7 +2052,7 @@
+@@ -2156,7 +2164,7 @@
rc++;
}
else
@@ -380,7 +380,7 @@
break;
-@@ -2057,7 +2065,7 @@
+@@ -2169,7 +2177,7 @@
if((rc = fs->top_row + fs->display_rows) > fs->last_row){
if((int)folder_entry(fs->folder_index,
FOLDERS(fs->context))->d_line >= fs->last_row){
@@ -389,7 +389,7 @@
break;
}
else
-@@ -2098,7 +2106,7 @@
+@@ -2210,7 +2218,7 @@
}
else
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -398,7 +398,7 @@
break;
-@@ -2107,7 +2115,7 @@
+@@ -2219,7 +2227,7 @@
case MC_CHOICE :
if(!folder_total(FOLDERS(fs->context))){
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -407,7 +407,7 @@
}
else if(folder_lister_select(cur_f, fs, listmode)){
mangled_footer++;
-@@ -2169,7 +2177,7 @@
+@@ -2279,7 +2287,7 @@
mangled_footer++;
}
else
@@ -416,7 +416,7 @@
break;
-@@ -2302,8 +2310,8 @@
+@@ -2415,8 +2423,8 @@
case MC_DELETE :
if(!ALL_FOUND(fs->context) || (fs->context->use & CNTXT_PSEUDO)){
q_status_message1(SM_ORDER | SM_DING, 0, 3,
@@ -427,7 +427,7 @@
break;
}
-@@ -2381,13 +2389,13 @@
+@@ -2494,13 +2502,13 @@
if(fs->zoomed = !fs->zoomed){ /* clear all the prefixes */
(void) folder_lister_nearest_selected(fs);
q_status_message1(SM_ORDER, 0, 3,
@@ -443,7 +443,7 @@
}
create_folder_display(fs, ps->ttyo->screen_cols);
-@@ -2395,7 +2403,7 @@
+@@ -2508,7 +2516,7 @@
}
else
q_status_message(SM_ORDER, 0, 3,
@@ -452,7 +452,7 @@
break;
-@@ -2405,16 +2413,16 @@
+@@ -2518,16 +2526,16 @@
case MC_WHEREIS :
switch(search_folders(fs, -FOOTER_ROWS(ps))){
case -1 :
@@ -472,7 +472,7 @@
break;
}
-@@ -2475,8 +2483,8 @@
+@@ -2594,8 +2602,8 @@
&& ALL_FOUND(fs->context))
return(fs->folder_index + 1);
@@ -483,7 +483,7 @@
return(0);
}
-@@ -2497,8 +2505,8 @@
+@@ -2616,8 +2624,8 @@
else if(fs->folder_index > 0 && ALL_FOUND(fs->context))
return(fs->folder_index - 1);
@@ -494,7 +494,7 @@
return(-1);
}
-@@ -2513,7 +2521,7 @@
+@@ -2632,7 +2640,7 @@
if(listmode){
if(NEWS_TEST(fs->context) && !strncmp(f->prefix, "SUB", 3)){
q_status_message1(SM_ORDER, 0, 3,
@@ -503,7 +503,7 @@
FLDR_NAME(f));
}
else{
-@@ -2523,7 +2531,7 @@
+@@ -2642,7 +2650,7 @@
}
else{
if(f->isdir){
@@ -512,7 +512,7 @@
}
else
folder_select_toggle(fs, f);
-@@ -2580,13 +2588,13 @@
+@@ -2699,13 +2707,13 @@
extern char *sel_pmt2;
if((f = folder_entry(fs->folder_index, FOLDERS(fs->context)))->isdir){
@@ -528,7 +528,7 @@
sel_opts += 2; /* disable extra options */
switch(q = radio_buttons(SEL_ALTER_PMT, -FOOTER_ROWS(ps_global),
sel_opts1, 'c', 'x', help, RB_NORM)){
-@@ -2611,7 +2619,7 @@
+@@ -2730,7 +2738,7 @@
default :
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -537,7 +537,7 @@
return(0);
}
}
-@@ -2625,7 +2633,7 @@
+@@ -2744,7 +2752,7 @@
*/
switch(q){
case 'x': /* cancel */
@@ -546,7 +546,7 @@
return(0);
case 'c' : /* toggle current's selected state */
-@@ -2647,10 +2655,10 @@
+@@ -2766,10 +2774,10 @@
create_folder_display(fs, ps_global->ttyo->screen_cols);
}
@@ -560,7 +560,7 @@
return(1);
case 't' : /* Text */
-@@ -2667,7 +2675,7 @@
+@@ -2786,7 +2794,7 @@
default :
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -569,7 +569,7 @@
return(0);
}
-@@ -2696,35 +2704,30 @@
+@@ -2815,35 +2823,30 @@
if(!(diff = (total = selected_folders(fs)) - old_tot)){
if(narrow)
@@ -616,16 +616,7 @@
if(F_OFF(F_SELECTED_SHOWN_BOLD, ps_global)){
folder_prefixes(fs, " ");
-@@ -2839,7 +2842,7 @@
- fp = next_folder_dir(fs->context, tmpf->name);
-
- /* Provide context in new collection header */
-- sprintf(tmp_20k_buf, "Dir: %s",
-+ sprintf(tmp_20k_buf, "目錄:%s",
- ((p = strstr(fs->context->context, "%s")) && !*(p+2)
- && !strncmp(fp->ref, fs->context->context,
- p - fs->context->context))
-@@ -2860,9 +2863,9 @@
+@@ -3031,9 +3034,9 @@
fs->prev_index = -1; /* redraw display */
@@ -637,7 +628,16 @@
rv++;
}
else
-@@ -2908,12 +2911,12 @@
+@@ -3052,7 +3055,7 @@
+ char *p;
+
+ /* Provide context in new collection header */
+- sprintf(tmp_20k_buf, "Dir: %s",
++ sprintf(tmp_20k_buf, "目錄:%s",
+ ((p = strstr(cntxt->context, "%s")) && !*(p+2)
+ && !strncmp(fdp->ref, cntxt->context, p - cntxt->context))
+ ? fdp->ref + (p - cntxt->context) : fdp->ref);
+@@ -3097,12 +3100,12 @@
fs->prev_index = -1; /* redraw display */
if(fp->status & CNTXT_SUBDIR)
@@ -652,7 +652,7 @@
rv++;
}
-@@ -3479,12 +3482,12 @@
+@@ -3673,12 +3676,12 @@
if(fs->context->use & CNTXT_INCMNG){
char inbox_host[MAXPATH], *beg, *end = NULL;
ESCKEY_S *special_key;
@@ -667,7 +667,7 @@
return(FALSE);
}
-@@ -3506,7 +3509,7 @@
+@@ -3700,7 +3703,7 @@
else
special_key = NULL;
@@ -676,7 +676,7 @@
help = NO_HELP;
while(1){
int flags = OE_APPEND_CURRENT;
-@@ -3524,7 +3527,7 @@
+@@ -3718,7 +3721,7 @@
}
else if(rc == 1){
q_status_message(SM_ORDER,0,2,
@@ -685,7 +685,7 @@
return(FALSE);
}
else if(rc == 0)
-@@ -3534,7 +3537,7 @@
+@@ -3728,7 +3731,7 @@
if(offset = strlen(add_folder)){ /* must be host for incoming */
int i;
@@ -694,7 +694,7 @@
for(i = offset;i >= 0; i--)
add_folder[i+1] = add_folder[i];
-@@ -3543,7 +3546,7 @@
+@@ -3737,7 +3740,7 @@
add_folder[++offset] = '\0'; /* +2, total */
}
else
@@ -703,7 +703,7 @@
help = NO_HELP;
while(1){
-@@ -3551,14 +3554,14 @@
+@@ -3745,14 +3748,14 @@
p = NULL;
if(isdir){
@@ -722,7 +722,7 @@
}
flags = OE_APPEND_CURRENT;
-@@ -3572,7 +3575,7 @@
+@@ -3766,7 +3769,7 @@
if(!ps_global->show_dot_names && add_folder[offset] == '.'){
if(cnt++ <= 0)
q_status_message(SM_ORDER,3,3,
@@ -731,7 +731,7 @@
else{
NAMEVAL_S *feat;
int i;
-@@ -3582,7 +3585,7 @@
+@@ -3776,7 +3779,7 @@
;/* do nothing */
q_status_message1(SM_ORDER,3,3,
@@ -740,7 +740,7 @@
feat && feat->name ? feat->name : "");
}
-@@ -3602,7 +3605,7 @@
+@@ -3796,7 +3799,7 @@
}
else if(*p == fs->context->dir->delim){
q_status_message(SM_ORDER|SM_DING, 3, 3,
@@ -749,7 +749,7 @@
display_message('X');
continue;
}
-@@ -3624,7 +3627,7 @@
+@@ -3818,7 +3821,7 @@
: NO_HELP;
}
else if(rc == 1 || add_folder[0] == '\0') {
@@ -758,7 +758,7 @@
return(FALSE);
}
}
-@@ -3643,7 +3646,7 @@
+@@ -3837,7 +3840,7 @@
help = NO_HELP;
if(fs->context->use & CNTXT_INCMNG){
@@ -767,7 +767,7 @@
while(1){
int flags = OE_APPEND_CURRENT;
-@@ -3664,7 +3667,7 @@
+@@ -3858,7 +3861,7 @@
}
else if(rc == 1 || (rc != 3 && !*nickname)){
q_status_message(SM_ORDER,0,2,
@@ -776,7 +776,7 @@
return(FALSE);
}
}
-@@ -3679,7 +3682,7 @@
+@@ -3873,7 +3876,7 @@
f = folder_entry(offset, FOLDERS(fs->context));
if(!strucmp(FLDR_NAME(f), nickname[0] ? nickname : add_folder)){
q_status_message1(SM_ORDER | SM_DING, 0, 3,
@@ -785,7 +785,7 @@
nickname[0] ? nickname : add_folder);
return(FALSE);
}
-@@ -3732,7 +3735,7 @@
+@@ -3927,7 +3930,7 @@
if(nickname[0])
strcpy(add_folder, nickname); /* known by new name */
@@ -794,7 +794,7 @@
return_val = add_folder;
}
else if(context_isambig(add_folder)){
-@@ -3748,15 +3751,15 @@
+@@ -3943,15 +3946,15 @@
*/
refresh_folder_list(fs, TRUE);
@@ -813,7 +813,7 @@
add_folder);
return(return_val != NULL);
-@@ -3795,13 +3798,13 @@
+@@ -3990,13 +3993,13 @@
subscribe_keys[i = 0].ch = ctrl('T');
subscribe_keys[i].rval = 12;
subscribe_keys[i].name = "^T";
@@ -829,7 +829,7 @@
}
subscribe_keys[i].ch = -1;
-@@ -3861,7 +3864,7 @@
+@@ -4057,7 +4060,7 @@
}
else{
q_status_message(SM_ORDER, 0, 2,
@@ -838,7 +838,7 @@
continue;
}
-@@ -3914,10 +3917,10 @@
+@@ -4110,10 +4113,10 @@
else{
if(rc == 12)
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -849,9 +849,9 @@
- "News group \"%s\" didn't match any existing groups",
+ "新聞組群 \"%s\" 不符合任何現存的組群",
folder);
+ free_folder_list(&subscribe_cntxt);
- continue;
-@@ -3965,7 +3968,7 @@
+@@ -4162,7 +4165,7 @@
if(rc < 0){
if(rc == -1)
@@ -860,16 +860,16 @@
}
else{
if(folders){ /*------ Actually do the subscription -----*/
-@@ -3987,7 +3990,7 @@
+@@ -4184,7 +4187,7 @@
*/
q_status_message1(errors ?SM_INFO : SM_ORDER,
errors ? 0 : 3, 3,
- "Error subscribing to \"%s\"",
+ "訂閱\至 \"%s\" 時發生錯誤",
- (char *) flp->text.data);
+ (char *) flp->name);
errors++;
}
-@@ -4011,13 +4014,13 @@
+@@ -4208,13 +4211,13 @@
if(n == 0)
q_status_message(SM_ORDER | SM_DING, 3, 5,
@@ -885,8 +885,8 @@
+ errors ? ",發生錯誤於 " : "",
errors ? comatose((long)errors) : "");
- mail_free_stringlist(&folders);
-@@ -4026,7 +4029,7 @@
+ free_strlist(&folders);
+@@ -4223,7 +4226,7 @@
(void) context_apply(tmp_20k_buf, &subscribe_cntxt, folder);
if(mail_subscribe(NULL, tmp_20k_buf) == 0L){
q_status_message1(SM_ORDER | SM_DING, 3, 3,
@@ -895,7 +895,7 @@
}
else if(ALL_FOUND(cntxt)){
/*---- Update the screen display data structures -----*/
-@@ -4040,7 +4043,7 @@
+@@ -4237,7 +4240,7 @@
}
if(folder[0])
@@ -904,7 +904,7 @@
}
free_fdir(&subscribe_cntxt.dir, 1);
-@@ -4080,19 +4083,19 @@
+@@ -4277,19 +4280,19 @@
if(NEWS_TEST(fs->context)){
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -927,7 +927,7 @@
new_f->parent
? new_f->nickname
: ps_global->inbox_name);
-@@ -4108,11 +4111,11 @@
+@@ -4305,11 +4308,11 @@
ren_cur = strcmp(folder, ps_global->cur_folder) == 0;
@@ -942,7 +942,7 @@
help = NO_HELP;
strcpy(new_name, folder);
while(1) {
-@@ -4133,7 +4136,7 @@
+@@ -4330,7 +4333,7 @@
if(!ps_global->show_dot_names && *new_name == '.'){
if(cnt++ <= 0)
q_status_message(SM_ORDER,3,3,
@@ -951,7 +951,7 @@
else{
NAMEVAL_S *feat;
int i;
-@@ -4143,7 +4146,7 @@
+@@ -4340,7 +4343,7 @@
;/* do nothing */
q_status_message1(SM_ORDER,3,3,
@@ -960,7 +960,7 @@
feat && feat->name ? feat->name : "");
}
-@@ -4153,13 +4156,13 @@
+@@ -4350,13 +4353,13 @@
if(folder_index(new_name, fs->context, FI_ANY) >= 0){
q_status_message1(SM_ORDER, 3, 3,
@@ -976,7 +976,7 @@
ps_global->inbox_name);
display_message(NO_OP_COMMAND);
continue;
-@@ -4182,7 +4185,7 @@
+@@ -4379,7 +4382,7 @@
if(rc == 1
|| !(*new_name || (fs->context->use & CNTXT_INCMNG))
|| !strcmp(new_name, folder)){
@@ -985,7 +985,7 @@
return(0);
}
-@@ -4264,7 +4267,7 @@
+@@ -4461,7 +4464,7 @@
/* renaming sent-mail or saved-messages */
if(context_create(fs->context, NULL, folder)){
q_status_message3(SM_ORDER,0,3,
@@ -994,7 +994,7 @@
folder, new_name,
pretty_fn(
(strcmp(ps_global->VAR_DEFAULT_SAVE_FOLDER,
-@@ -4275,7 +4278,7 @@
+@@ -4472,7 +4475,7 @@
}
else{
q_status_message1(SM_ORDER | SM_DING, 3, 4,
@@ -1003,7 +1003,7 @@
dprint(2, (debugfile, "Error creating \"%s\" in %s context\n",
folder, fs->context->context));
-@@ -4283,7 +4286,7 @@
+@@ -4480,7 +4483,7 @@
}
else
q_status_message2(SM_ORDER, 0, 3,
@@ -1012,8 +1012,14 @@
pretty_fn(folder), pretty_fn(new_name));
/* Rebuild folder list */
-@@ -4332,7 +4335,7 @@
- int ret, close_opened = 0, blast_folder = 1;
+@@ -4530,12 +4533,12 @@
+
+ if(!folder_total(FOLDERS(fs->context))){
+ q_status_message(SM_ORDER | SM_DING, 0, 4,
+- "Empty folder collection. No folder to delete!");
++ "空的資料匣褻陛C沒有東西可供刪除!");
+ return(0);
+ }
if(NEWS_TEST(fs->context)){
- static char fmt[] = "Really unsubscribe from \"%.*s\"";
@@ -1021,7 +1027,7 @@
folder = folder_entry(fs->folder_index, FOLDERS(fs->context))->name;
/* 4 is strlen("%.*s") */
-@@ -4354,7 +4357,7 @@
+@@ -4557,7 +4560,7 @@
(void) context_apply(tmp_20k_buf, fs->context, folder);
if(!mail_unsubscribe(NULL, tmp_20k_buf)){
q_status_message1(SM_ORDER | SM_DING, 3, 3,
@@ -1030,16 +1036,7 @@
return(0);
}
-@@ -4372,7 +4375,7 @@
-
- if(!folder_total(FOLDERS(fs->context))){
- q_status_message(SM_ORDER | SM_DING, 0, 4,
-- "Empty folder collection. No folder to delete!");
-+ "空的資料匣總集。沒有東西可供刪除!");
- return(0);
- }
-
-@@ -4382,12 +4385,12 @@
+@@ -4579,12 +4582,12 @@
if(ps_global->readonly_pinerc && (fs->context->use & CNTXT_INCMNG)){
q_status_message(SM_ORDER,3,5,
@@ -1054,7 +1051,7 @@
return(0);
}
else if(fs->context == ps_global->context_current
-@@ -4402,7 +4405,7 @@
+@@ -4599,7 +4602,7 @@
if(ret){
q_status_message1(SM_ORDER | SM_DING, 3, 4,
@@ -1063,7 +1060,7 @@
folder);
return(0);
}
-@@ -4413,19 +4416,19 @@
+@@ -4610,19 +4613,19 @@
*/
if(folder_index(folder, fs->context, FI_FOLDER) >= 0
&& (ret = want_to(DIR_FOLD_PMT,'n','x',NO_HELP,WT_NORM)) != 'y'){
@@ -1088,7 +1085,7 @@
switch(radio_buttons(DELF_PROMPT, -FOOTER_ROWS(ps_global),
delf_opts,'n','x',NO_HELP,RB_NORM)){
-@@ -4434,7 +4437,7 @@
+@@ -4631,7 +4634,7 @@
break;
case 'x' :
@@ -1097,7 +1094,7 @@
return(0);
default :
-@@ -4442,13 +4445,13 @@
+@@ -4639,13 +4642,13 @@
}
}
else{
@@ -1116,7 +1113,7 @@
return(0);
}
}
-@@ -4491,13 +4494,13 @@
+@@ -4688,13 +4691,13 @@
/*
* BUG: what if sent-mail or saved-messages????
*/
@@ -1133,7 +1130,7 @@
if(fs->context->use & CNTXT_INCMNG){
-@@ -4642,7 +4645,7 @@
+@@ -4839,7 +4842,7 @@
int flags;
pat[0] = '\0';
@@ -1142,7 +1139,7 @@
while(1){
flags = OE_APPEND_CURRENT | OE_DISALLOW_HELP;
-@@ -4658,7 +4661,7 @@
+@@ -4855,7 +4858,7 @@
return(1);
case 1 :
@@ -1151,7 +1148,7 @@
default :
return(0);
-@@ -4734,7 +4737,7 @@
+@@ -4931,7 +4934,7 @@
return(1);
}
@@ -1160,7 +1157,7 @@
return(0);
}
-@@ -4767,7 +4770,7 @@
+@@ -4964,7 +4967,7 @@
if(!strucmp(folder = f->name, ps_global->inbox_name))
return(FEX_ISFILE);
@@ -1169,7 +1166,7 @@
we_cancel = busy_alarm(1, tmp, NULL, 0);
mm_list_info = &ldata; /* tie down global reference */
-@@ -4910,7 +4913,7 @@
+@@ -5107,7 +5110,7 @@
return(1);
}
@@ -1178,7 +1175,7 @@
return(0);
}
-@@ -4932,7 +4935,7 @@
+@@ -5129,7 +5132,7 @@
while(1){
flags = OE_APPEND_CURRENT | OE_DISALLOW_HELP;
sprintf(number, "%ld", *count);
@@ -1187,7 +1184,7 @@
r = optionally_enter(number, -FOOTER_ROWS(ps_global), 0, 31,
prompt, sel_num_opt, NO_HELP, &flags);
switch (r){
-@@ -4941,7 +4944,7 @@
+@@ -5138,7 +5141,7 @@
break;
else if((*count = atol(number)) < 0L)
q_status_message(SM_ORDER, 3, 3,
@@ -1196,7 +1193,7 @@
else
return(1); /* success */
-@@ -5102,7 +5105,7 @@
+@@ -5299,7 +5302,7 @@
for(; i >= 0; i--)
folder_entry(i, FOLDERS(fs->context))->scanned = 0;
@@ -1205,7 +1202,7 @@
rv = 0;
break;
}
-@@ -5147,14 +5150,14 @@
+@@ -5344,14 +5347,14 @@
int rc, t_index, done = 0;
static char search_string[MAX_SEARCH+1];
static ESCKEY_S search_keys[] = {{0, 0, NULL, NULL},
@@ -1223,7 +1220,7 @@
return(0);
}
else{
-@@ -5162,7 +5165,7 @@
+@@ -5359,7 +5362,7 @@
search_keys[0].ch = ctrl('X');
search_keys[0].rval = 9;
search_keys[0].name = "^X";
@@ -1232,7 +1229,7 @@
}
else{
search_keys[0].ch = 0;
-@@ -5173,7 +5176,7 @@
+@@ -5370,7 +5373,7 @@
}
t_index = fd->folder_index;
@@ -1241,7 +1238,7 @@
(*search_string == '\0') ? "" : "[",
search_string,
(*search_string == '\0') ? "" : "] ");
-@@ -5184,7 +5187,7 @@
+@@ -5381,7 +5384,7 @@
switch(optionally_enter(nsearch_string, ask_line, 0, MAX_SEARCH,
prompt, search_keys, help, &flags)){
case -1 :
@@ -1250,7 +1247,7 @@
return(0);
case 0 : /*----- Search away ------*/
-@@ -5241,9 +5244,9 @@
+@@ -5438,9 +5441,9 @@
}
if(rc){
@@ -1263,7 +1260,7 @@
fd->prev_index = -1; /* repaint! */
}
-@@ -5257,14 +5260,14 @@
+@@ -5454,14 +5457,14 @@
while((t_index = folder_lister_prev(fd)) >= 0)
fd->folder_index = t_index;
@@ -1280,7 +1277,7 @@
return(3);
default :
-@@ -6273,7 +6276,7 @@
+@@ -6500,7 +6503,7 @@
if(p = context_digest(c_string, dcontext, host, rcontext, view)){
q_status_message2(SM_ORDER | SM_DING, 3, 4,
@@ -1289,7 +1286,7 @@
fs_give((void **) &c_string);
if(nickname)
fs_give((void **)&nickname);
-@@ -6314,14 +6317,14 @@
+@@ -6541,14 +6544,14 @@
/* fix up label */
if(NEWS_TEST(c)){
@@ -1308,7 +1305,7 @@
(*host) ? host : "", p ? p - rcontext : 0,
rcontext, (p && (p - rcontext) > 0) ? "" : "home directory");
}
-@@ -7503,7 +7506,7 @@
+@@ -7745,7 +7748,7 @@
if(error && num_in_error){
cnt_errs = num_in_error;
memset((void *)ng_error, 0, (size_t)90);
diff --git a/chinese/pine4/files/patch-az b/chinese/pine4/files/patch-az
index bd6856d81c93..175b6bbcdd81 100644
--- a/chinese/pine4/files/patch-az
+++ b/chinese/pine4/files/patch-az
@@ -1,12 +1,21 @@
---- pine/init.c.orig Fri Jul 17 02:22:22 1998
-+++ pine/init.c Tue Aug 4 12:42:17 1998
-@@ -579,6 +579,9 @@
+--- pine/init.c.orig Thu Sep 3 01:39:42 1998
++++ pine/init.c Tue Sep 22 13:50:07 1998
+@@ -319,7 +319,7 @@
+
+ /*----------------------------------------------------------------------
+ These are the variables that control a number of pine functions. They
+-come out of the .pinerc and the /usr/local/lib/pine.conf files. Some can
++come out of the .pinerc and the @@PREFIX@@/etc/pine.conf files. Some can
+ be set by the user while in Pine. Eventually all the local ones should
+ be so and maybe the global ones too.
+
+@@ -578,6 +578,9 @@
+ #ifdef DF_SMTP_SERVER
GLO_SMTP_SERVER = parse_list(DF_SMTP_SERVER, 1, NULL);
#endif
-
++
+ F_TURN_ON(F_TCAP_WINS,ps);
+ F_TURN_ON(F_QUELL_INTERNAL_MSG,ps);
-+
+
/* Set the default mail directory */
build_path(buf, GLO_MAIL_DIRECTORY, "[]");
- GLO_FOLDER_SPEC = parse_list(buf, 1, NULL);
diff --git a/chinese/pine4/files/patch-ba b/chinese/pine4/files/patch-ba
index 679ab9a99e14..cc4fe8ad069a 100644
--- a/chinese/pine4/files/patch-ba
+++ b/chinese/pine4/files/patch-ba
@@ -1,6 +1,6 @@
---- pine/mailcmd.c.orig Fri Jul 17 13:57:21 1998
-+++ pine/mailcmd.c Tue Aug 4 12:42:17 1998
-@@ -110,39 +110,39 @@
+--- pine/mailcmd.c.orig Tue Sep 15 03:01:15 1998
++++ pine/mailcmd.c Tue Sep 22 19:13:41 1998
+@@ -108,39 +108,39 @@
/*
* List of Select options used by apply_* functions...
*/
@@ -61,7 +61,7 @@
{ -1, 0, NULL, NULL},
{ -1, 0, NULL, NULL},
{ -1, 0, NULL, NULL},
-@@ -152,24 +152,24 @@
+@@ -150,24 +150,24 @@
static char *sel_flag =
@@ -96,7 +96,7 @@
{ctrl('W'), 14, "^W", "Toggle When"},
{KEY_UP, 12, "", ""},
{KEY_DOWN, 13, "", ""},
-@@ -179,18 +179,18 @@
+@@ -177,18 +177,18 @@
static char *sel_text =
#ifdef RECIPIENT
@@ -123,7 +123,7 @@
#endif /* RECIPIENT */
{-1, 0, NULL, NULL}
};
-@@ -244,7 +244,7 @@
+@@ -242,7 +242,7 @@
case MC_HELP :
if(state->nr_mode) {
q_status_message(SM_ORDER, 0, 3,
@@ -132,7 +132,7 @@
break;
}
-@@ -273,7 +273,7 @@
+@@ -271,7 +271,7 @@
/*------- View message text --------*/
case MC_VIEW_TEXT :
@@ -141,7 +141,7 @@
state->next_screen = mail_view_screen;
#if defined(DOS) && !defined(WIN32)
flush_index_cache(); /* save room on PC */
-@@ -297,10 +297,10 @@
+@@ -295,10 +295,10 @@
mn_dec_cur(stream, msgmap);
if(i == mn_get_cur(msgmap))
q_status_message(SM_ORDER, 0, 2,
@@ -154,7 +154,7 @@
}
break;
-@@ -312,7 +312,7 @@
+@@ -310,7 +310,7 @@
&& (i = mn_get_cur(msgmap)) < mn_get_total(msgmap)){
mn_inc_cur(stream, msgmap);
if(i == mn_get_cur(msgmap))
@@ -163,7 +163,7 @@
}
else{
prompt[0] = '\0';
-@@ -329,7 +329,7 @@
+@@ -327,7 +327,7 @@
strcat(prompt, ". No more folders to TAB to.");
}
@@ -260,18 +260,21 @@
cmd_export(state, msgmap, question_line, 0);
state->mangled_footer = 1;
}
-@@ -597,29 +597,28 @@
+@@ -596,9 +596,9 @@
+ dprint(2, (debugfile, "\n - expunge -\n"));
if(IS_NEWS(stream) && stream->rdonly){
if((del_count = count_flagged(stream, F_DEL)) > 0L){
- state->mangled_footer = 1;
+- state->mangled_footer = 1;
- sprintf(prompt, "Exclude %ld message%s from %s", del_count,
- plural(del_count), pretty_fn(state->cur_folder));
++
+ sprintf(prompt, "自 %s 中排除 %ld 封信件",
+ pretty_fn(state->cur_folder), del_count);
- if(F_ON(F_AUTO_EXPUNGE, state)
- || want_to(prompt, 'y', 0, NO_HELP, WT_NORM) == 'y'){
- msgno_exclude(stream, msgmap);
- clear_index_cache();
+ if(F_ON(F_FULL_AUTO_EXPUNGE, state)
+ || (F_ON(F_AUTO_EXPUNGE, state)
+ && (state->context_current
+@@ -620,21 +620,20 @@
+
state->mangled_body = 1;
state->mangled_header = 1;
- q_status_message2(SM_ORDER, 0, 4, "%s message%s excluded",
@@ -297,16 +300,16 @@
break;
}
-@@ -634,7 +633,7 @@
- break;
- }
- else if(ret == 'x') { /* ^C */
-- cmd_cancelled("Expunge");
-+ cmd_cancelled("刪除");
- break;
- }
- }
-@@ -685,11 +684,11 @@
+@@ -653,7 +652,7 @@
+ ret = 'y';
+
+ if(ret == 'x')
+- cmd_cancelled("Expunge");
++ cmd_cancelled("刪除");
+
+ if(ret != 'y')
+ break;
+@@ -705,11 +704,11 @@
if(state->expunge_count <= 0)
if(del_count)
q_status_message1(SM_ORDER, 0, 3,
@@ -320,7 +323,7 @@
break;
-@@ -719,16 +718,15 @@
+@@ -743,16 +742,15 @@
*/
refresh_sort(msgmap, FALSE);
state->mangled_header = 1;
@@ -342,7 +345,7 @@
}
break;
-@@ -736,7 +734,7 @@
+@@ -760,7 +758,7 @@
/*------- Make Selection -----------*/
case MC_SELECT :
@@ -351,7 +354,7 @@
aggregate_select(state, msgmap, question_line, in_index);
if(in_index && any_lflagged(msgmap, MN_SLCT) > 0L
&& !any_lflagged(msgmap, MN_HIDE)
-@@ -768,7 +766,7 @@
+@@ -792,7 +790,7 @@
unzoom_index(state, msgmap);
}
else
@@ -360,7 +363,7 @@
}
break;
-@@ -846,21 +844,21 @@
+@@ -870,21 +868,21 @@
{
if(cmd == ctrl('Q') || cmd == ctrl('S'))
q_status_message1(SM_ASYNC, 0, 2,
@@ -389,7 +392,7 @@
}
-@@ -1133,11 +1131,9 @@
+@@ -1157,11 +1155,9 @@
char *type, *cmd;
{
if(mn_get_total(map) <= 0L){
@@ -403,7 +406,7 @@
return(FALSE);
}
-@@ -1161,8 +1157,8 @@
+@@ -1185,8 +1181,8 @@
{
if(READONLY_FOLDER || state->dead_stream){
q_status_message2(SM_ORDER | (state->dead_stream ? SM_DING : 0), 0, 3,
@@ -414,7 +417,7 @@
return(FALSE);
}
-@@ -1182,7 +1178,7 @@
+@@ -1206,7 +1202,7 @@
cmd_cancelled(cmd)
char *cmd;
{
@@ -423,7 +426,7 @@
}
-@@ -1208,7 +1204,7 @@
+@@ -1232,7 +1228,7 @@
dprint(4, (debugfile, "\n - delete message -\n"));
if(!(any_messages(msgmap, NULL, "to Delete")
@@ -432,7 +435,7 @@
return;
if(state->io_error_on_stream) {
-@@ -1218,16 +1214,15 @@
+@@ -1242,16 +1238,15 @@
if(agg){
sequence = selected_sequence(state->mail_stream, msgmap, &del_count);
@@ -452,7 +455,7 @@
lastmsg ? "" : long2string(msgno));
}
-@@ -1289,7 +1284,7 @@
+@@ -1311,7 +1306,7 @@
dprint(4, (debugfile, "\n - undelete -\n"));
if(!(any_messages(msgmap, NULL, "to Undelete")
@@ -461,7 +464,7 @@
return;
if(agg){
-@@ -1380,7 +1375,7 @@
+@@ -1399,7 +1394,7 @@
};
if(!(any_messages(msgmap, NULL, "to Flag")
@@ -470,7 +473,7 @@
return;
if(state->io_error_on_stream) {
-@@ -1735,7 +1730,7 @@
+@@ -1754,7 +1749,7 @@
if(msgno_any_exceptions(state->mail_stream, msgmap)
&& want_to("Saved copy will NOT include entire message! Continue",
'y', 'n', NO_HELP, WT_FLUSH_IN | WT_SEQ_SENSITIVE) != 'y'){
@@ -479,7 +482,7 @@
return;
}
-@@ -1858,32 +1853,32 @@
+@@ -1877,32 +1872,32 @@
ekey[rc].ch = ctrl('T');
ekey[rc].rval = 2;
ekey[rc].name = "^T";
@@ -517,7 +520,7 @@
}
if(saveable_count > 1){
-@@ -2021,7 +2016,7 @@
+@@ -2040,7 +2035,7 @@
/* else fall thru like they cancelled */
case 1 :
@@ -526,7 +529,7 @@
done--;
break;
-@@ -3126,16 +3121,16 @@
+@@ -3162,16 +3157,16 @@
{
if(context && ps_global->context_list->next && context_isambig(folder)){
sprintf(tmp_20k_buf,
@@ -546,7 +549,7 @@
return(-1);
}
-@@ -3259,14 +3254,14 @@
+@@ -3295,14 +3290,14 @@
export_opts[i = 0].ch = ctrl('T');
export_opts[i].rval = 10;
export_opts[i].name = "^T";
@@ -563,7 +566,7 @@
}
#endif /* !(DOS || MAC) */
-@@ -3274,7 +3269,7 @@
+@@ -3310,7 +3305,7 @@
export_opts[i].ch = ctrl('I');
export_opts[i].rval = 11;
export_opts[i].name = "TAB";
@@ -572,7 +575,7 @@
}
#if 0
-@@ -3283,7 +3278,7 @@
+@@ -3319,7 +3314,7 @@
export_opts[i].ch = ctrl('X');
export_opts[i].rval = 14;
export_opts[i].name = "^X";
@@ -581,7 +584,7 @@
}
#endif
-@@ -3297,7 +3292,7 @@
+@@ -3333,7 +3328,7 @@
if(r < 0){
switch(r){
case -1:
@@ -590,7 +593,7 @@
break;
case -2:
-@@ -3319,7 +3314,7 @@
+@@ -3355,7 +3350,7 @@
if(ps_global->restricted){
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -599,7 +602,7 @@
goto fini;
}
-@@ -3338,7 +3333,7 @@
+@@ -3374,7 +3369,7 @@
|| !format_message(mn_m2raw(msgmap, mn_get_cur(msgmap)),
env, b, FM_NEW_MESS | FM_NOWRAP, pc)){
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -608,7 +611,7 @@
break;
}
-@@ -3351,18 +3346,18 @@
+@@ -3387,18 +3382,18 @@
(void) close_system_pipe(&syspipe);
else
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -630,7 +633,7 @@
goto fini;
}
-@@ -3474,7 +3469,7 @@
+@@ -3512,7 +3507,7 @@
STORE_S *store = NULL;
struct variable *vars = ps->vars;
static ESCKEY_S simple_export_opts[] = {
@@ -639,7 +642,7 @@
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL}};
-@@ -3482,7 +3477,7 @@
+@@ -3520,7 +3515,7 @@
simple_export_opts[r].ch = ctrl('I');
simple_export_opts[r].rval = 11;
simple_export_opts[r].name = "TAB";
@@ -648,7 +651,7 @@
}
if(!srctext){
-@@ -3555,7 +3550,7 @@
+@@ -3593,7 +3588,7 @@
break;
case -1:
@@ -657,7 +660,7 @@
break;
case -2:
-@@ -4131,32 +4126,32 @@
+@@ -4180,32 +4175,32 @@
ekey[rc].ch = (allow_list) ? ctrl('T') : 0 ;
ekey[rc].rval = (allow_list) ? 2 : 0;
ekey[rc].name = (allow_list) ? "^T" : "";
@@ -695,7 +698,7 @@
}
if(ps_global->context_list->next){
-@@ -4272,15 +4267,15 @@
+@@ -4321,15 +4316,15 @@
newfolder);
else if(tc->use & CNTXT_INCMNG)
q_status_message1(SM_ORDER, 0, 3,
@@ -715,7 +718,7 @@
newfolder);
return(NULL);
-@@ -4293,7 +4288,7 @@
+@@ -4342,7 +4337,7 @@
/* fall thru like they cancelled */
case 1 : /* o_e says user cancel */
@@ -724,7 +727,7 @@
return(NULL);
case 2 : /* o_e says user wants list */
-@@ -4529,7 +4524,7 @@
+@@ -4578,7 +4573,7 @@
else if ((new_context->use & CNTXT_INCMNG)
&& (folder_index(newfolder, new_context, FI_FOLDER) < 0)){
q_status_message1(SM_ORDER, 3, 4,
@@ -733,7 +736,7 @@
return(0);
}
}
-@@ -4610,7 +4605,7 @@
+@@ -4659,7 +4654,7 @@
}
}
@@ -742,7 +745,7 @@
pretty_fn(newfolder), 70), "\"");
we_cancel = busy_alarm(1, status_msg, NULL, 1);
-@@ -4693,7 +4688,7 @@
+@@ -4742,7 +4737,7 @@
&& !mn_get_revsort(ps_global->msgmap)))
refresh_sort(ps_global->msgmap, FALSE);
@@ -751,7 +754,7 @@
old_folder);
}
}
-@@ -4774,14 +4769,13 @@
+@@ -4823,14 +4818,13 @@
/* UWIN doesn't want to see this message */
if(!ps_global->nr_mode)
@@ -770,7 +773,7 @@
sort_folder(ps_global->msgmap, ps_global->def_sort,
ps_global->def_sort_rev, TRUE);
-@@ -4947,9 +4941,9 @@
+@@ -4996,9 +4990,9 @@
char ing[4];
if(final_msg)
@@ -782,7 +785,7 @@
buff1[0] = '\0';
buff2[0] = '\0';
-@@ -4958,7 +4952,7 @@
+@@ -5007,7 +5001,7 @@
stream->mailbox));
if(!stream->rdonly){
@@ -791,7 +794,7 @@
flush_status_messages(1);
/* Save read messages? */
-@@ -4998,10 +4992,8 @@
+@@ -5047,10 +5041,8 @@
}
else{
sprintf(prompt_b,
@@ -804,7 +807,7 @@
ret = want_to(prompt_b, 'y', 0, NO_HELP, WT_NORM);
}
-@@ -5012,13 +5004,10 @@
+@@ -5061,13 +5053,10 @@
if(ret == 'y'){
sprintf(buff2,
@@ -819,7 +822,7 @@
long2string(delete_count));
if(final_msg)
*final_msg = cpystr(buff2);
-@@ -5042,17 +5031,15 @@
+@@ -5093,17 +5082,15 @@
if(ret != 'y'){
if(stream->nmsgs){
sprintf(buff2,
@@ -841,7 +844,7 @@
ing, pretty_fn(folder));
}
-@@ -5071,7 +5058,7 @@
+@@ -5122,7 +5109,7 @@
q_status_message(SM_ORDER,
F_ON(F_AUTO_READ_MSGS,ps_global) ? 0 : 3, 5, moved_msg);
@@ -850,7 +853,7 @@
ing, pretty_fn(folder));
if(F_ON(F_NEWS_CROSS_DELETE, ps_global))
-@@ -5079,7 +5066,7 @@
+@@ -5130,7 +5117,7 @@
}
else
sprintf(buff2,
@@ -859,7 +862,7 @@
ing, pretty_fn(folder));
if(final_msg)
-@@ -5368,18 +5355,18 @@
+@@ -5430,18 +5417,18 @@
if(in_index && F_ON(F_PRINT_INDEX, state)){
char m[10];
static ESCKEY_S prt_opts[] = {
@@ -883,7 +886,7 @@
if(agg)
restore_selected(msgmap);
-@@ -5396,11 +5383,11 @@
+@@ -5458,11 +5445,11 @@
}
if(do_index)
@@ -898,7 +901,7 @@
if(open_printer(prompt) < 0){
if(agg)
-@@ -5663,7 +5650,7 @@
+@@ -5725,7 +5712,7 @@
/* else fall thru as if cancelled */
case 1 :
@@ -907,7 +910,7 @@
done++;
break;
-@@ -5746,7 +5733,7 @@
+@@ -5808,7 +5795,7 @@
sel_opts = sel_opts2;
if(old_tot = any_lflagged(msgmap, MN_SLCT)){
i = get_lflag(state->mail_stream, msgmap, mn_get_cur(msgmap), MN_SLCT);
@@ -916,7 +919,7 @@
sel_opts += 2; /* disable extra options */
switch(q = radio_buttons(sel_pmt1, q_line, sel_opts1, 'c', 'x', help,
RB_NORM)){
-@@ -5790,7 +5777,7 @@
+@@ -5852,7 +5839,7 @@
*/
switch(q){
case 'x': /* cancel */
@@ -925,7 +928,7 @@
return;
case 'c' : /* select/unselect current */
-@@ -5998,14 +5985,14 @@
+@@ -6060,14 +6047,14 @@
sel_opts3[i].ch = '*';
sel_opts3[i].rval = '*';
sel_opts3[i].name = "*";
@@ -942,7 +945,7 @@
}
/*
-@@ -6017,7 +6004,7 @@
+@@ -6079,7 +6066,7 @@
sel_opts3[i].ch = 'b';
sel_opts3[i].rval = 'b';
sel_opts3[i].name = "B";
@@ -951,7 +954,7 @@
}
if(F_ON(F_ENABLE_PRYNT, state)){
-@@ -6088,7 +6075,7 @@
+@@ -6150,7 +6137,7 @@
break;
case 'x' : /* cancel */
@@ -960,7 +963,7 @@
rv = 0;
break;
-@@ -6205,7 +6192,7 @@
+@@ -6267,7 +6254,7 @@
*t = '\0';
if(r == 1 || numbers[0] == '\0'){
@@ -969,7 +972,7 @@
return(1);
}
else
-@@ -6331,7 +6318,7 @@
+@@ -6393,7 +6380,7 @@
prompt, sel_date_opt, help, &flags);
switch (r){
case 1 :
@@ -978,7 +981,7 @@
return(1);
case 3 :
-@@ -6441,15 +6428,15 @@
+@@ -6503,15 +6490,15 @@
ekey[0].ch = ctrl('T');
ekey[0].name = "^T";
ekey[0].rval = 10;
@@ -997,7 +1000,7 @@
break;
case 's' :
-@@ -6457,7 +6444,7 @@
+@@ -6519,7 +6506,7 @@
ekey[0].ch = ctrl('X');
ekey[0].name = "^X";
ekey[0].rval = 13;
@@ -1006,7 +1009,7 @@
break;
case 'a' :
-@@ -6556,7 +6543,7 @@
+@@ -6618,7 +6605,7 @@
}
if(type == 'x' || r == 'x'){
@@ -1015,7 +1018,7 @@
return(1);
}
-@@ -6735,7 +6722,7 @@
+@@ -6799,7 +6786,7 @@
NO_HELP, RB_NORM);
if(s == 'x'){
@@ -1024,7 +1027,7 @@
return(1);
}
else if(s == '!')
-@@ -6832,7 +6819,7 @@
+@@ -6896,7 +6883,7 @@
/*----- String together the prompt ------*/
tmp[1] = '\0';
@@ -1033,7 +1036,7 @@
for(i = 0; state->sort_types[i] != EndofList && i < 8; i++) {
sorts[i].rval = i;
p = sorts[i].label = sort_name(state->sort_types[i]);
-@@ -6849,7 +6836,7 @@
+@@ -6913,7 +6900,7 @@
sorts[i].ch = 'r';
sorts[i].rval = 'r';
sorts[i].name = cpystr("R");
@@ -1042,7 +1045,7 @@
sorts[++i].ch = -1;
help = h_select_sort;
-@@ -6862,7 +6849,7 @@
+@@ -6926,7 +6913,7 @@
}
else{
retval = 0;
diff --git a/chinese/pine4/files/patch-bb b/chinese/pine4/files/patch-bb
index 12a5be0380d6..09353ef999c0 100644
--- a/chinese/pine4/files/patch-bb
+++ b/chinese/pine4/files/patch-bb
@@ -1,5 +1,5 @@
---- pine/mailindx.c.orig Tue Jul 21 01:21:48 1998
-+++ pine/mailindx.c Tue Aug 4 12:42:18 1998
+--- pine/mailindx.c.orig Thu Sep 3 00:22:21 1998
++++ pine/mailindx.c Tue Sep 22 19:18:33 1998
@@ -55,10 +55,10 @@
/*
* Some common Command Bindings
@@ -40,9 +40,9 @@
HELP_MENU,
OTHER_MENU,
- {":","SelectCur",{MC_SELCUR,1,{':'}},KS_SELECTCUR},
-- {"Z","ZoomMode",{MC_ZOOM,1,{'z'}},KS_NONE},
+- {"Z","ZoomMode",{MC_ZOOM,1,{'z'}},KS_ZOOM},
+ {":","選擇",{MC_SELCUR,1,{':'}},KS_SELECTCUR},
-+ {"Z","縮放模式",{MC_ZOOM,1,{'z'}},KS_NONE},
++ {"Z","縮放模式",{MC_ZOOM,1,{'z'}},KS_ZOOM},
LISTFLD_MENU,
NULL_MENU,
NULL_MENU,
@@ -58,7 +58,7 @@
PREVMSG_MENU,
NEXTMSG_MENU,
PREVPAGE_MENU,
-@@ -344,14 +344,14 @@
+@@ -356,14 +356,14 @@
if(flags & INDX_HEADER)
set_titlebar((stream == ps_global->mail_stream)
? (style == MsgIndex || style == MultiMsgIndex)
@@ -78,7 +78,7 @@
stream, cntxt, folder, msgmap, 1, MessageNumber, 0, 0);
if(flags & INDX_FOOTER) {
-@@ -443,7 +443,7 @@
+@@ -455,7 +455,7 @@
{
dprint(1, (debugfile, "\n\n ---- MAIL INDEX ----\n"));
if(!state->mail_stream) {
@@ -87,7 +87,7 @@
state->prev_screen = mail_index_screen;
state->next_screen = main_menu_screen;
return;
-@@ -624,7 +624,7 @@
+@@ -657,7 +657,7 @@
if(F_ON(F_SHOW_CURSOR, state) && cur_row < 0){
q_status_message(SM_ORDER,
(ch==NO_OP_IDLE || ch==NO_OP_COMMAND) ? 0 : 3, 5,
@@ -96,7 +96,7 @@
cur_row = state->ttyo->screen_rows - FOOTER_ROWS(state);
display_message(ch);
}
-@@ -741,7 +741,7 @@
+@@ -778,7 +778,7 @@
k = i;
if(++j >= id.lines_per_page){
if((id.msg_at_top = i) == 1L)
@@ -105,7 +105,7 @@
break;
}
-@@ -750,7 +750,7 @@
+@@ -787,7 +787,7 @@
if(i <= 1L){
if(mn_get_cur(msgmap) == 1L)
q_status_message(SM_ORDER, 0, 1,
@@ -114,7 +114,7 @@
break;
}
-@@ -770,7 +770,7 @@
+@@ -807,7 +807,7 @@
k = i;
if(++j >= id.lines_per_page){
if(i+id.lines_per_page >= mn_get_total(msgmap))
@@ -123,7 +123,7 @@
id.msg_at_top = i;
break;
-@@ -779,7 +779,7 @@
+@@ -816,7 +816,7 @@
if(i >= mn_get_total(msgmap)){
if(mn_get_cur(msgmap) == k)
@@ -132,7 +132,7 @@
break;
}
-@@ -961,9 +961,9 @@
+@@ -1029,9 +1029,9 @@
}
q_status_message2(SM_ORDER, 0, 1,
@@ -144,7 +144,7 @@
}
break;
-@@ -985,9 +985,9 @@
+@@ -1053,9 +1053,9 @@
}
q_status_message2(SM_ORDER, 0, 1,
@@ -156,7 +156,7 @@
}
break;
-@@ -1787,7 +1787,7 @@
+@@ -1861,7 +1861,7 @@
dprint(1, (debugfile,
"parse_index_format: unrecognized token: %s\n", q));
q_status_message1(SM_ORDER | SM_DING, 0, 3,
@@ -165,7 +165,7 @@
continue;
}
-@@ -1829,7 +1829,7 @@
+@@ -1903,7 +1903,7 @@
if(!column){
dprint(1, (debugfile, "Completely unrecognizable index-format\n"));
q_status_message(SM_ORDER | SM_DING, 0, 3,
@@ -174,16 +174,16 @@
return(0);
}
-@@ -2320,7 +2320,7 @@
- sprintf(str, "%ld", idata->msgno);
- else if(idata->bogus < 2 && cdesc->ctype == iSubject)
- sprintf(str, "%-*.*s", width, width,
-- "[ No Message Text Available ]");
-+ "[ 無法取得信件 ]");
- }
- else
- switch(cdesc->ctype){
-@@ -2959,8 +2959,8 @@
+@@ -2526,7 +2526,7 @@
+ sprintf(str, "%ld", idata->msgno);
+ else if(idata->bogus < 2 && cdesc->ctype == iSubject)
+ sprintf(str, "%-*.*s", width, width,
+- "[ No Message Text Available ]");
++ "[ 無法取得信件 ]");
+ }
+ else
+ switch(cdesc->ctype){
+@@ -3425,8 +3425,8 @@
HelpType help;
static char search_string[MAX_SEARCH+1] = { '\0' };
static ESCKEY_S header_search_key[] = { {0, 0, NULL, NULL },
@@ -194,7 +194,7 @@
{-1, 0, NULL, NULL} };
dprint(4, (debugfile, "\n - search headers - \n"));
-@@ -2969,7 +2969,7 @@
+@@ -3435,7 +3435,7 @@
return;
}
else if(mn_total_cur(msgmap) > 1L){
@@ -203,7 +203,7 @@
comatose(mn_total_cur(msgmap)));
return;
}
-@@ -2980,13 +2980,13 @@
+@@ -3446,13 +3446,13 @@
new_string[0] = '\0';
while(1) {
@@ -219,7 +219,7 @@
}
else{
header_search_key[0].ch = header_search_key[0].rval = 0;
-@@ -3005,7 +3005,7 @@
+@@ -3471,7 +3471,7 @@
continue;
}
else if(rc == 10){
@@ -228,7 +228,7 @@
if(any_lflagged(msgmap, MN_HIDE)){
do{
selected = sorted_msg;
-@@ -3021,7 +3021,7 @@
+@@ -3487,7 +3487,7 @@
return;
}
else if(rc == 11){
@@ -237,7 +237,7 @@
if(any_lflagged(msgmap, MN_HIDE)){
do{
selected = sorted_msg;
-@@ -3046,7 +3046,7 @@
+@@ -3512,7 +3512,7 @@
}
if(rc == 1 || (new_string[0] == '\0' && search_string[0] == '\0')) {
@@ -246,7 +246,7 @@
return;
}
-@@ -3085,21 +3085,21 @@
+@@ -3551,21 +3551,21 @@
}
if(ps_global->intr_pending){
@@ -273,7 +273,7 @@
#ifndef DOS
intr_handling_off();
-@@ -3236,7 +3236,7 @@
+@@ -3702,7 +3702,7 @@
&& LEVELSORT(ps_global->mail_stream)))
sort_func = percent_sorted;
@@ -282,7 +282,7 @@
strsquish(tmp_20k_buf + 500, ps_global->cur_folder,
ps_global->ttyo->screen_cols - 20));
we_cancel = busy_alarm(1, sort_msg, sort_func, 1);
-@@ -3286,8 +3286,8 @@
+@@ -3752,8 +3752,8 @@
new_sort = mn_get_sort(msgmap);
new_rev = mn_get_revsort(msgmap);
q_status_message2(SM_ORDER, 3, 3,
@@ -293,7 +293,7 @@
sort_name(new_sort));
}
else if(mn_get_total(msgmap) < g_sort_prog->nmsgs)
-@@ -4045,7 +4045,7 @@
+@@ -4515,7 +4515,7 @@
icache.name = temp_nam(NULL, "pi");
if((icache.cache = (void *)fopen(icache.name,"w+b")) == NULL){
@@ -302,7 +302,7 @@
fatal(tmp_20k_buf);
}
-@@ -4398,10 +4398,10 @@
+@@ -4897,10 +4897,10 @@
&& format_message(mn_m2raw(ps_global->msgmap,
mn_get_cur(ps_global->msgmap)),
env, body, FM_NEW_MESS, pc)){
diff --git a/chinese/pine4/files/patch-bc b/chinese/pine4/files/patch-bc
index 458027423721..8d0dbd503e48 100644
--- a/chinese/pine4/files/patch-bc
+++ b/chinese/pine4/files/patch-bc
@@ -1,6 +1,6 @@
---- pine/mailpart.c.orig Wed Aug 19 10:37:25 1998
-+++ pine/mailpart.c Wed Aug 19 10:45:24 1998
-@@ -134,18 +134,18 @@
+--- pine/mailpart.c.orig Wed Sep 16 04:00:39 1998
++++ pine/mailpart.c Tue Sep 22 20:29:13 1998
+@@ -142,18 +142,18 @@
{HELP_MENU,
OTHER_MENU,
{"<",NULL,{MC_EXIT,2,{'<',','}},KS_EXITMODE},
@@ -23,7 +23,7 @@
{NULL, NULL, {MC_EXPORT, 1, {'e'}}, KS_EXPORT},
HELP_MENU,
-@@ -154,9 +154,9 @@
+@@ -162,9 +162,9 @@
QUIT_MENU,
PIPE_MENU,
BOUNCE_MENU,
@@ -35,13 +35,11 @@
INDEX_MENU,
REPLY_MENU,
FORWARD_MENU};
-@@ -173,11 +173,11 @@
- static struct key att_view_keys[] =
+@@ -182,10 +182,10 @@
{HELP_MENU,
OTHER_MENU,
-- {"<",NULL,{MC_EXIT,2,{'<',','}},KS_EXITMODE},
+ {"<",NULL,{MC_EXIT,2,{'<',','}},KS_EXITMODE},
- {"Ret","[View Hilite]",{MC_VIEW_HANDLE,3,
-+ {"<",NULL,{MC_EXIT,3,{'<',',',KEY_LEFT}},KS_EXITMODE},
+ {"Ret","[檢視 Hilite]",{MC_VIEW_HANDLE,3,
{ctrl('m'),ctrl('j'),KEY_RIGHT}},KS_NONE},
- {"^B","Prev URL",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE},
@@ -51,7 +49,7 @@
PREVPAGE_MENU,
NEXTPAGE_MENU,
DELETE_MENU,
-@@ -193,7 +193,7 @@
+@@ -201,7 +201,7 @@
BOUNCE_MENU,
NULL_MENU,
WHEREIS_MENU,
@@ -60,7 +58,7 @@
NULL_MENU,
REPLY_MENU,
FORWARD_MENU};
-@@ -323,12 +323,12 @@
+@@ -337,12 +337,12 @@
if(mn_total_cur(ps->msgmap) > 1L){
q_status_message(SM_ORDER | SM_DING, 0, 3,
@@ -68,15 +66,14 @@
+ "同一時間僅能檢視一封信的附件!");
return;
}
-- else if(ps->atmts && ps->atmts->description && !(ps->atmts + 1)->description)
-+ else if(ps->atmts && !(ps->atmts + 1)->description)
+ else if(ps->atmts && ps->atmts->description && !(ps->atmts + 1)->description)
q_status_message1(SM_ASYNC, 0, 3,
- "Message %s has only one part (the message body), and no attachments.",
+ "信件 %s 僅有一部分(信件本體),沒有附件。",
long2string(mn_get_cur(ps->msgmap)));
/*
-@@ -471,7 +471,7 @@
+@@ -485,7 +485,7 @@
break;
if(ps->mangled_header){
@@ -85,7 +82,16 @@
ps->context_current, ps->cur_folder, ps->msgmap, 1,
MessageNumber, 0, 0);
ps->mangled_header = 0;
-@@ -535,7 +535,7 @@
+@@ -523,7 +523,7 @@
+ last_type = current->attp->body->type;
+ last_subtype = current->attp->body->subtype;
+
+- sprintf(backtag, "Msg #%ld", mn_get_cur(ps->msgmap));
++ sprintf(backtag, "信件 #%ld", mn_get_cur(ps->msgmap));
+ km->keys[ATT_PARENT_KEY].label = backtag;
+
+ if(F_OFF(F_ENABLE_PIPE, ps))
+@@ -549,7 +549,7 @@
clrbitn(ATT_PRINT_KEY, bitmap);
km->keys[ATT_EXPORT_KEY].name = "E";
@@ -94,7 +100,16 @@
}
if(km_popped){
-@@ -630,7 +630,7 @@
+@@ -615,7 +615,7 @@
+ break;
+ }
+
+- helper(h_attachment_screen, "HELP FOR ATTACHMENT INDEX", 0);
++ helper(h_attachment_screen, "附件索引的輔助說明", 0);
+ ps->mangled_screen = 1;
+ break;
+
+@@ -644,7 +644,7 @@
if(ctmp = next_attline(current))
current = ctmp;
else
@@ -103,7 +118,7 @@
break;
-@@ -638,7 +638,7 @@
+@@ -652,7 +652,7 @@
if(ctmp = prev_attline(current))
current = ctmp;
else
@@ -112,7 +127,7 @@
break;
-@@ -652,7 +652,7 @@
+@@ -666,7 +666,7 @@
}
else
q_status_message(SM_ORDER, 0, 1,
@@ -121,7 +136,7 @@
break;
-@@ -673,7 +673,7 @@
+@@ -687,7 +687,7 @@
}
else
q_status_message(SM_ORDER, 0, 1,
@@ -130,7 +145,7 @@
break;
-@@ -1041,7 +1041,7 @@
+@@ -1149,7 +1149,7 @@
{
bitmap_t bitmap;
@@ -139,7 +154,7 @@
ps_global->context_current, ps_global->cur_folder,
ps_global->msgmap, 1, FolderName,0,0);
-@@ -1210,7 +1210,7 @@
+@@ -1318,7 +1318,7 @@
gf_io_t pc;
STORE_S *store;
static ESCKEY_S att_save_opts[] = {
@@ -148,7 +163,7 @@
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL}};
-@@ -1243,7 +1243,7 @@
+@@ -1351,7 +1351,7 @@
att_save_opts[++r].ch = ctrl('V');
att_save_opts[r].rval = 12;
att_save_opts[r].name = "^V";
@@ -157,7 +172,7 @@
}
#endif /* !(DOS || MAC) */
-@@ -1251,7 +1251,7 @@
+@@ -1359,7 +1359,7 @@
att_save_opts[++r].ch = ctrl('I');
att_save_opts[r].rval = 11;
att_save_opts[r].name = "TAB";
@@ -166,7 +181,94 @@
}
att_save_opts[++r].ch = -1;
-@@ -1470,7 +1470,7 @@
+@@ -1393,7 +1393,7 @@
+
+ if(ps_global->restricted){
+ q_status_message(SM_ORDER | SM_DING, 3, 3,
+- "Download disallowed in restricted mode");
++ "限制模式中不允許\下載");
+ return;
+ }
+
+@@ -1401,7 +1401,7 @@
+ tfp = temp_nam(NULL, "pd");
+ dprint(1, (debugfile, "Download attachment called!\n"));
+ if(store = so_get(FileStar, tfp, WRITE_ACCESS|OWNER_ONLY)){
+- sprintf(prompt_buf, "Saving to \"%.50s\"", tfp);
++ sprintf(prompt_buf, "正在存入 \"%.50s\"", tfp);
+ we_cancel = init_att_progress(prompt_buf,
+ ps_global->mail_stream,
+ a->body);
+@@ -1410,7 +1410,7 @@
+ if(err = detach(ps_global->mail_stream, msgno,
+ a->number, &len, pc, NULL))
+ q_status_message2(SM_ORDER | SM_DING, 3, 5,
+- "%s: Error writing attachment to \"%s\"",
++ "%s: \\寫入附件至 \"%s\" 時發生錯誤",
+ err, tfp);
+
+ /* cancel regardless, so it doesn't get in way of xfer */
+@@ -1427,18 +1427,18 @@
+ (void)close_system_pipe(&syspipe);
+ else
+ q_status_message(SM_ORDER | SM_DING, 3, 3,
+- err = "Error running download command");
++ err = "執行下載命令時發生錯誤");
+ }
+
+ unlink(tfp);
+ }
+ else
+ q_status_message(SM_ORDER | SM_DING, 3, 3,
+- err = "Error building temp file for download");
++ err = "建立暫存檔時發生錯誤");
+
+ fs_give((void **)&tfp);
+ if(!err)
+- q_status_message1(SM_ORDER, 0, 4, "Part %s downloaded",
++ q_status_message1(SM_ORDER, 0, 4, "已下載第 %s 部份",
+ a->number);
+
+ return;
+@@ -1450,12 +1450,12 @@
+
+ if((store = so_get(FileStar, full_filename, WRITE_ACCESS)) == NULL){
+ q_status_message2(SM_ORDER | SM_DING, 3, 5,
+- "Error opening destination %s: %s",
++ "開啟目地檔 %s 時發生錯誤:%s",
+ full_filename, error_description(errno));
+ return;
+ }
+
+- sprintf(prompt_buf, "Saving to \"%.50s\"", full_filename);
++ sprintf(prompt_buf, "正在存入 \"%.50s\"", full_filename);
+ we_cancel = init_att_progress(prompt_buf, ps_global->mail_stream, a->body);
+
+ gf_set_so_writec(&pc, store);
+@@ -1474,7 +1474,7 @@
+ truncate(full_filename, (over == -1) ? orig_size : 0);
+
+ q_status_message2(SM_ORDER | SM_DING, 3, 5,
+- "%s: Error writing attachment to \"%s\"",
++ "%s:寫入附件至 \"%s\" 時發生錯誤",
+ err, full_filename);
+ }
+ else{
+@@ -1552,7 +1552,7 @@
+ MESSAGECACHE *mc;
+ STORE_S *so;
+
+- sprintf(nmsgs, "Attached Msg (part %s) ", a->number);
++ sprintf(nmsgs, "附加的信件 (第 %s 部份) ", a->number);
+ if(save_prompt(ps_global, &cntxt, newfolder, nmsgs,
+ a->body->nested.msg->env, msgno, a->number)){
+ save_folder = (strucmp(newfolder, ps_global->inbox_name) == 0)
+@@ -1574,11 +1574,11 @@
+ a->body->size.bytes, flags, date, so);
+ if(rv == 1)
+ q_status_message2(SM_ORDER, 0, 4,
+- "Attached message (part %s) saved to \"%s\"",
++ "附加的 digest(第 %s 部份) 存為 \"%s\"",
a->number,
save_folder);
else if(rv == -1)
@@ -175,7 +277,16 @@
/* else whatever broke in save_fetch_append shoulda bitched */
so_give(&so);
-@@ -1546,11 +1546,11 @@
+@@ -1620,7 +1620,7 @@
+ if(MIME_MSG(part->body.type, part->body.subtype))
+ cnt++;
+
+- sprintf(nmsgs, "%d Msg Digest (part %s) ", cnt, a->number);
++ sprintf(nmsgs, "%d 信件 Digest (第 %s 部份) ", cnt, a->number);
+
+ if(save_prompt(ps_global, &cntxt, newfolder, nmsgs, NULL, 0, NULL)){
+ save_folder = (strucmp(newfolder, ps_global->inbox_name) == 0)
+@@ -1654,11 +1654,11 @@
if(rv == 1)
q_status_message2(SM_ORDER, 0, 4,
@@ -189,7 +300,7 @@
/* else whatever broke in save_fetch_append shoulda bitched */
if(our_stream)
-@@ -1604,7 +1604,7 @@
+@@ -1712,7 +1712,7 @@
ATTACH_S *ap = a;
STORE_S *store;
static ESCKEY_S opts[] = {
@@ -198,7 +309,7 @@
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL}};
-@@ -1612,7 +1612,7 @@
+@@ -1720,7 +1720,7 @@
opts[i].ch = ctrl('I');
opts[i].rval = 11;
opts[i].name = "TAB";
@@ -207,7 +318,7 @@
}
filename[0] = full_filename[0] = '\0';
-@@ -1625,7 +1625,7 @@
+@@ -1733,12 +1733,12 @@
if(rv < 0){
switch(rv){
case -1:
@@ -216,7 +327,35 @@
break;
case -2:
-@@ -1677,7 +1677,7 @@
+ q_status_message1(SM_ORDER, 0, 2,
+- "Can't export to file outside of %s",
++ "無法將檔案匯出至 %s 以外的地方",
+ ps_global->VAR_OPER_DIR);
+ break;
+ }
+@@ -1752,17 +1752,17 @@
+ q_status_message(SM_ORDER | SM_DING, 3, 4, err);
+ else
+ q_status_message3(SM_ORDER, 0, 4,
+- "Attached message (part %s) %s to \"%s\"",
++ "附件(第 %s 部份)%s至 \"%s\"",
+ a->number,
+- over==0 ? "written"
+- : over==1 ? "overwritten" : "appended",
++ over==0 ? "寫入"
++ : over==1 ? "覆蓋\" : "附加",
+ full_filename);
+
+ so_give(&store);
+ }
+ else
+ q_status_message2(SM_ORDER | SM_DING, 3, 4,
+- "Error opening file \"%s\" to export message: %s",
++ "無法開啟檔案 \"%s\" 以供匯出信件:%s",
+ full_filename, error_description(errno));
+ }
+
+@@ -1785,7 +1785,7 @@
ATTACH_S *ap;
STORE_S *store;
static ESCKEY_S opts[] = {
@@ -225,7 +364,7 @@
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL}};
-@@ -1685,7 +1685,7 @@
+@@ -1793,7 +1793,7 @@
opts[i].ch = ctrl('I');
opts[i].rval = 11;
opts[i].name = "TAB";
@@ -234,7 +373,7 @@
}
filename[0] = full_filename[0] = '\0';
-@@ -1698,7 +1698,7 @@
+@@ -1806,12 +1806,12 @@
if(rv < 0){
switch(rv){
case -1:
@@ -243,7 +382,68 @@
break;
case -2:
-@@ -1906,14 +1906,14 @@
+ q_status_message1(SM_ORDER, 0, 2,
+- "Can't export to file outside of %s",
++ "無法將檔案匯出至 %s 以外的地方",
+ ps_global->VAR_OPER_DIR);
+ break;
+ }
+@@ -1833,7 +1833,7 @@
+ sprintf(tmp_20k_buf, " [Unknown Message subtype: %s ]\n",
+ ap->body->subtype);
+ if(!so_puts(store, tmp_20k_buf))
+- err = "Can't write export file";
++ err = "無法寫入匯出檔";
+ }
+ else{
+ count++;
+@@ -1842,29 +1842,29 @@
+ }
+ }
+ else if(!so_puts(store, "Unknown type in Digest"))
+- err = "Can't write export file";
++ err = "無法寫入匯出檔";
+ }
+
+ so_give(&store);
+
+ if(err){
+ q_status_message1(SM_ORDER | SM_DING, 3, 3,
+- "Error exporting: %s", err);
++ "匯出檔案時發生錯誤:%s", err);
+ q_status_message1(SM_ORDER | SM_DING, 3, 3,
+- "%s messages exported before error occurred", err);
++ "%s 封信件在錯誤產生之前被匯出", err);
+ }
+ else
+ q_status_message4(SM_ORDER, 0, 4,
+- "%s messages in digest (part %s) %s to \"%s\"",
++ "共 %s 封信件(第 %s 部份)%s至 \"%s\"",
+ long2string(count),
+ a->number,
+- over==0 ? "written"
+- : over==1 ? "overwritten" : "appended",
++ over==0 ? "被寫入"
++ : over==1 ? "被覆蓋\" : "被附加",
+ full_filename);
+ }
+ else
+ q_status_message2(SM_ORDER | SM_DING, 3, 4,
+- "Error opening file \"%s\" to export digest: %s",
++ "無法開啟檔案 \"%s\" 以供匯出 digest:%s",
+ full_filename, error_description(errno));
+ }
+
+@@ -1933,7 +1933,7 @@
+
+
+ q_status_message2(SM_ORDER | SM_DING, 3, 3,
+- "Error printing message %s, part %s",
++ "無法列印第 %s 封信件的第 %s 部份",
+ long2string(msgno), a->number);
+ return(0);
+ }
+@@ -2014,14 +2014,14 @@
/*----- Can't display this type ------*/
if(a->body->encoding < ENCOTHER)
q_status_message4(SM_ORDER | SM_DING, 3, 5,
@@ -261,16 +461,16 @@
body_encodings[(a->body->encoding <= ENCMAX)
? a->body->encoding : ENCOTHER]);
-@@ -2102,7 +2102,7 @@
- gf_set_so_writec(&pc, store);
- (void) decode_text(a, msgno, pc, QStatus, FM_DISPLAY | FM_HANDLES);
- gf_clear_so_writec(store);
-- scroll_attachment("ATTACHED TEXT", store, src, handles, a, flags);
-+ scroll_attachment("附件文字", store, src, handles, a, flags);
+@@ -2243,7 +2243,7 @@
+ clear_index_cache_ent(msgno);
+
+ if(store = format_text_att(msgno, a, &handles)){
+- scroll_attachment("ATTACHED TEXT", store, CharStar, handles, a, flags);
++ scroll_attachment("附件文字", store, CharStar, handles, a, flags);
free_handles(&handles);
so_give(&store); /* free resources associated with store */
}
-@@ -2277,22 +2277,22 @@
+@@ -2411,22 +2411,22 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = so_text(store);
sargs.text.src = src;
@@ -297,21 +497,19 @@
}
if(!handles){
-@@ -2706,10 +2706,10 @@
- memset(&sargs, 0, sizeof(SCROLL_S));
+@@ -2858,9 +2858,9 @@
sargs.text.text = so_text(store);
sargs.text.src = CharStar;
-- sargs.text.desc = "attachment info";
+ sargs.text.desc = "attachment info";
- sargs.bar.title = "ABOUT ATTACHMENT";
-+ sargs.text.desc = "附件資訊";
-+ sargs.bar.title = "關於附件";
++ sargs.bar.title = "附件資訊";
sargs.help.text = h_simple_text_view;
- sargs.help.title = "HELP FOR \"ABOUT ATTACHMENT\"";
+ sargs.help.title = "\"關於附件\"的輔助說明";
scrolltool(&sargs);
-@@ -2771,7 +2771,7 @@
+@@ -2922,7 +2922,7 @@
else /* partially formatted outgoing message */
pine_send(outgoing, &body,
ps_global->nr_mode
@@ -320,7 +518,22 @@
NULL, NULL, NULL, NULL, NULL, FALSE);
ps_global->mangled_screen = 1;
-@@ -2857,7 +2857,7 @@
+@@ -2938,12 +2938,12 @@
+ mail_free_body(&body);
+ so_give((STORE_S **) &msgtext);
+ q_status_message(SM_ORDER | SM_DING, 4, 5,
+- "Error fetching message contents. Can't forward message.");
++ "取得信件內容時發生錯誤。無法轉寄信件。");
+ }
+ }
+ else
+ q_status_message(SM_ORDER | SM_DING, 3, 4,
+- "Error allocating message text");
++ "無法配置信件文字");
+
+ mail_free_envelope(&outgoing);
+ }
+@@ -3008,7 +3008,7 @@
pine_simple_send(outgoing, &body, NULL, NULL, NULL, 1);
else /* partially formatted outgoing message */
pine_send(outgoing, &body,
@@ -329,7 +542,27 @@
NULL, NULL, NULL, NULL, NULL, FALSE);
ps_global->mangled_screen = 1;
-@@ -2954,7 +2954,7 @@
+@@ -3023,16 +3023,16 @@
+ else{
+ so_give((STORE_S **) &msgtext);
+ q_status_message(SM_ORDER | SM_DING, 4, 5,
+- "Error fetching message contents. Can't forward message.");
++ "取得信件內容時發生錯誤。無法轉寄信件。");
+ }
+ }
+ else
+ q_status_message(SM_ORDER | SM_DING, 3, 4,
+- "Error allocating message text");
++ "無法配置信件文字");
+ }
+ else
+ q_status_message1(SM_ORDER,3,4,
+- "Error fetching message %s. Can't forward it.",
++ "取得信件 %s 的內容時發生錯誤。無法轉寄它。",
+ long2string(msgno));
+
+ mail_free_envelope(&outgoing);
+@@ -3105,7 +3105,7 @@
tp = body_partno(stream, msgno, a->body),
msgtext, prefix, include_text)){
/* partially formatted outgoing message */
@@ -338,7 +571,23 @@
fcc.tptr, NULL, NULL, NULL, NULL, 0);
pine_free_body(&body);
-@@ -3035,7 +3035,7 @@
+@@ -3113,13 +3113,13 @@
+ }
+ else
+ q_status_message(SM_ORDER | SM_DING, 3, 4,
+- "Error building message body");
++ "無法建立信件本體");
+
+ fs_give((void **) &tp);
+ }
+ else
+ q_status_message(SM_ORDER | SM_DING, 3, 4,
+- "Error allocating message text");
++ "無法配置信件文字");
+ }
+
+ seeyalater:
+@@ -3186,7 +3186,7 @@
sprintf(prompt, "Pipe %sattachment %s to %s: ", raw ? "RAW " : "",
a->number, capture ? "" : "(Free Output) ");
@@ -347,7 +596,7 @@
pipe_opt[2].label = capture ? "Free Output" : "Capture Output";
flags = OE_APPEND_CURRENT | OE_SEQ_SENSITIVE;
rc = optionally_enter(pipe_command, -FOOTER_ROWS(ps_global), 0,
-@@ -3053,7 +3053,7 @@
+@@ -3204,7 +3204,7 @@
}
else if(rc == 0){
if(pipe_command[0] == '\0'){
@@ -356,7 +605,7 @@
break;
}
-@@ -3127,7 +3127,7 @@
+@@ -3278,7 +3278,7 @@
break;
}
else if(rc == 1){
diff --git a/chinese/pine4/files/patch-bd b/chinese/pine4/files/patch-bd
index 42ad8eb016ec..08e112efd180 100644
--- a/chinese/pine4/files/patch-bd
+++ b/chinese/pine4/files/patch-bd
@@ -1,6 +1,6 @@
---- pine/mailview.c.orig Wed Aug 19 10:37:26 1998
-+++ pine/mailview.c Wed Aug 19 10:45:24 1998
-@@ -140,8 +140,8 @@
+--- pine/mailview.c.orig Thu Sep 17 05:56:10 1998
++++ pine/mailview.c Tue Sep 22 19:30:34 1998
+@@ -145,8 +145,8 @@
static struct key view_keys[] =
{HELP_MENU,
OTHER_MENU,
@@ -11,7 +11,7 @@
PREVMSG_MENU,
NEXTMSG_MENU,
PREVPAGE_MENU,
-@@ -166,11 +166,11 @@
+@@ -171,11 +171,11 @@
HELP_MENU,
OTHER_MENU,
@@ -27,7 +27,7 @@
JUMP_MENU,
TAB_MENU,
HDRMODE_MENU,
-@@ -187,7 +187,7 @@
+@@ -192,7 +192,7 @@
#define FLAG_KEY 34
#define VIEW_PIPE_KEY 35
@@ -36,7 +36,7 @@
{HELP_MENU,
WHEREIS_MENU,
QUIT_MENU,
-@@ -211,7 +211,7 @@
+@@ -216,7 +216,7 @@
NEXTMSG_MENU,
PREVPAGE_MENU,
NEXTPAGE_MENU,
@@ -45,16 +45,16 @@
JUMP_MENU,
PRYNTTXT_MENU,
SAVE_MENU,
-@@ -233,7 +233,7 @@
+@@ -238,7 +238,7 @@
static struct key simple_text_keys[] =
{HELP_MENU,
NULL_MENU,
-- {"E","Exit Viewer",{MC_EXIT,1,{'e'}},KS_NONE},
-+ {"E","離開",{MC_EXIT,1,{'e'}},KS_NONE},
+- {"E","Exit Viewer",{MC_EXIT,1,{'e'}},KS_EXITMODE},
++ {"E","離開",{MC_EXIT,1,{'e'}},KS_EXITMODE},
NULL_MENU,
NULL_MENU,
NULL_MENU,
-@@ -242,7 +242,7 @@
+@@ -247,7 +247,7 @@
PRYNTTXT_MENU,
WHEREIS_MENU,
FWDEMAIL_MENU,
@@ -63,7 +63,7 @@
INST_KEY_MENU(simple_text_keymenu, simple_text_keys);
-@@ -377,7 +377,7 @@
+@@ -388,7 +388,7 @@
* we were viewing. If so, make sure we don't just come back.
*/
if(mn_get_total(ps->msgmap) <= 0L || !ps->mail_stream){
@@ -72,7 +72,7 @@
ps->next_screen = mail_index_screen;
break;
}
-@@ -391,7 +391,7 @@
+@@ -402,7 +402,7 @@
body = NULL;
if(!(env = mail_fetchstructure(ps->mail_stream, raw_msgno, &body))
|| !(mc = mail_elt(ps->mail_stream, raw_msgno))){
@@ -81,7 +81,7 @@
comatose(mn_get_cur(ps->msgmap)));
dprint(1, (debugfile, "!!!! ERROR fetching %s of msg %ld\n",
env ? "elt" : "env", mn_get_cur(ps->msgmap)));
-@@ -444,7 +444,7 @@
+@@ -457,7 +457,7 @@
memset(&scrollargs, 0, sizeof(SCROLL_S));
scrollargs.text.text = so_text(store);
scrollargs.text.src = src;
@@ -90,7 +90,7 @@
/*
* make first selectable handle the default
-@@ -463,11 +463,11 @@
+@@ -477,11 +477,11 @@
else
scrollargs.body_valid = 1;
@@ -104,7 +104,7 @@
scrollargs.keys.menu = &view_keymenu;
scrollargs.keys.what = save_what;
setbitmap(scrollargs.keys.bitmap);
-@@ -1196,7 +1196,7 @@
+@@ -1214,7 +1214,7 @@
/*---- format and copy envelope ----*/
if(ps_global->full_header)
q_status_message(SM_INFO, 0, 3,
@@ -113,7 +113,7 @@
HD_INIT(&h, ps_global->VAR_VIEW_HEADERS, ps_global->view_all_except,
FE_DEFAULT);
-@@ -1235,7 +1235,7 @@
+@@ -1253,7 +1253,7 @@
if(append_file_name)
fs_give((void **)&append_file_name);
@@ -122,7 +122,7 @@
error_description(errno));
return(0);
}
-@@ -1529,7 +1529,7 @@
+@@ -1547,7 +1547,7 @@
write_error:
if(!(flgs & FM_DISPLAY))
@@ -131,7 +131,7 @@
decode_err ? decode_err : error_description(errno));
return(0);
-@@ -1865,8 +1865,8 @@
+@@ -1885,12 +1885,12 @@
char prompt[256], tmp[MAILTMPLEN];
int rc, flags, local_h;
static ESCKEY_S launch_opts[] = {
@@ -141,17 +141,23 @@
+ {'n', 'n', "N", "否"},
{-2, 0, NULL, NULL},
{-2, 0, NULL, NULL},
- {0, 'u', "U", "editURL"},
-@@ -1887,7 +1887,7 @@
- else{
- launch_opts[5].ch = -1;
- if(!local_h){
-- if(want_to("No Web-Browser application defined! Define now",
-+ if(want_to("尚未定義 Web-Browser!現在定義",
+- {0, 'u', "U", "editURL"},
+- {0, 'a', "A", "editApp"},
++ {0, 'u', "U", "編輯 URL"},
++ {0, 'a', "A", "編輯應用程式"},
+ {-1, 0, NULL, NULL}};
+
+ if(handle->type == URL){
+@@ -1920,7 +1920,7 @@
+ return(0);
+ }
+ else{
+- if(want_to("No URL-Viewer application defined! Define now",
++ if(want_to("尚未定義 URL 檢視程式!現在定義",
'y', 0, NO_HELP, WT_SEQ_SENSITIVE) == 'y'){
/* Prompt for the displayer? */
tmp[0] = '\0';
-@@ -1931,7 +1931,7 @@
+@@ -1964,7 +1964,7 @@
}
else{
q_status_message1(SM_ORDER | SM_DING, 2, 2,
@@ -160,7 +166,7 @@
error_description(errno));
continue;
}
-@@ -1960,8 +1960,8 @@
+@@ -1994,8 +1994,8 @@
return(1);
while(1){
@@ -171,30 +177,39 @@
(handle->type == URL) ? "\"" : "",
(handle->type == URL) ? handle->h.url.path : "",
(handle->type == URL)
-@@ -2426,11 +2426,11 @@
+@@ -2606,11 +2606,11 @@
mode = PIPE_RESET | PIPE_USER ;
if(syspipe = open_system_pipe(cmd, NULL, NULL, mode)){
close_system_pipe(&syspipe);
- q_status_message(SM_ORDER, 0, 4, "VIEWER command completed");
-+ q_status_message(SM_ORDER, 0, 4, "VIEWER 命令完成");
++ q_status_message(SM_ORDER, 0, 4, "檢視器命令完成");
}
else
q_status_message1(SM_ORDER, 3, 4,
-- "Cannot spawn command : %s", cmd);
-+ "無法起始命令:%s", cmd);
+- "Cannot spawn command : %s", cmd);
++ "無法起始命令:%s", cmd);
}
else if(f = url_local_handler(handle->h.url.path)){
if((*f)(handle->h.url.path) > 1)
-@@ -2438,7 +2438,7 @@
+@@ -2618,7 +2618,7 @@
}
else
q_status_message1(SM_ORDER, 2, 2,
-- "\"Web-Browser\" not defined: Can't open %s",
-+ "尚未定義 \"Web-Browser\":無法開啟 %s",
+- "\"URL-Viewer\" not defined: Can't open %s",
++ "尚未定義 \"URL-檢視器\":無法開啟 %s",
handle->h.url.path);
return(rv);
-@@ -2758,7 +2758,7 @@
+@@ -2630,7 +2630,7 @@
+ int return_value;
+ {
+ q_status_message(SM_ORDER | SM_DING, 3, 3,
+- "Can't spawn. Command too long.");
++ "無法起始。命令太長。");
+ return(return_value);
+ }
+
+@@ -2920,7 +2920,7 @@
}
else
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -203,7 +218,7 @@
if(outgoing)
mail_free_envelope(&outgoing);
-@@ -2822,7 +2822,7 @@
+@@ -2984,7 +2984,7 @@
else if(errstr)
q_status_message(SM_ORDER|SM_DING, 3, 3, errstr);
else
@@ -212,7 +227,7 @@
break;
-@@ -2845,7 +2845,7 @@
+@@ -3007,7 +3007,7 @@
if(uid_val != ps_global->mail_stream->uid_validity){
/* Complain! */
q_status_message(SM_ORDER|SM_DING, 3, 3,
@@ -221,7 +236,7 @@
}
if(uid){
-@@ -2861,7 +2861,7 @@
+@@ -3023,7 +3023,7 @@
if(i > mn_get_total(ps_global->msgmap))
q_status_message(SM_ORDER, 2, 3,
@@ -230,7 +245,7 @@
}
else if(search){
/*
-@@ -2882,9 +2882,9 @@
+@@ -3044,9 +3044,9 @@
if(i = any_lflagged(ps_global->msgmap, MN_SLCT)){
extern long zoom_index();
@@ -243,7 +258,7 @@
/* Zoom the index! */
zoom_index(ps_global, ps_global->msgmap);
}
-@@ -3023,9 +3023,9 @@
+@@ -3185,9 +3185,9 @@
if(auth && *auth != '*')
q_status_message1(SM_ORDER, 3, 3,
@@ -256,7 +271,7 @@
/*
* At this point our structure should contain the
-@@ -3110,7 +3110,7 @@
+@@ -3272,7 +3272,7 @@
if(i > mn_get_total(ps_global->msgmap))
q_status_message(SM_ORDER, 2, 3,
@@ -265,7 +280,7 @@
}
break;
-@@ -3189,7 +3189,7 @@
+@@ -3386,7 +3386,7 @@
}
else
q_status_message1(SM_ORDER | SM_DING, 0, 3,
@@ -274,7 +289,7 @@
return(1);
}
-@@ -3216,7 +3216,7 @@
+@@ -3413,7 +3413,7 @@
dprint(2, (debugfile, "-- bogus url \"%s\": %s\n",
url ? url : "<NULL URL>", reason));
if(url)
@@ -283,7 +298,7 @@
(void *) (strchr(url, ':') - url), url, reason);
return(0);
-@@ -3356,7 +3356,7 @@
+@@ -3554,7 +3554,7 @@
write_error:
if(style == QStatus)
@@ -292,16 +307,16 @@
error_description(errno));
return(1);
-@@ -3606,7 +3606,7 @@
- gf_set_so_writec(&tmp_pc, df_store);
+@@ -3805,7 +3805,7 @@
+ gf_set_so_readc(&tmp_gc, df_store);
if(errstr = dfilter(display_filter, tmp_store, tmp_pc, NULL)){
q_status_message1(SM_ORDER | SM_DING, 3, 3,
- "Formatting error: %s", errstr);
+ "格式錯誤:%s", errstr);
rv = FHT_WRTERR;
}
- else{
-@@ -3618,7 +3618,7 @@
+ else
+@@ -3815,7 +3815,7 @@
}
else{
q_status_message1(SM_ORDER | SM_DING, 3, 3,
@@ -310,7 +325,7 @@
rv = FHT_WRTERR;
}
}
-@@ -3643,7 +3643,7 @@
+@@ -3841,7 +3841,7 @@
if(errstr = gf_pipe(tmp_gc, final_pc)){
rv = FHT_WRTERR;
q_status_message1(SM_ORDER | SM_DING, 3, 3,
@@ -319,7 +334,7 @@
}
}
-@@ -3782,7 +3782,7 @@
+@@ -3984,7 +3984,7 @@
format_newsgroup_string("Newsgroups: ", e->newsgroups, prefix, pc);
if(e->ngbogus)
q_status_message(SM_ORDER, 0, 3,
@@ -328,7 +343,7 @@
}
if((which & FE_FOLLOWUPTO) && e->followup_to)
-@@ -4406,7 +4406,7 @@
+@@ -4624,7 +4624,7 @@
}
if(!sparms->bar.title)
@@ -337,7 +352,7 @@
if(sparms->bar.style == TitleBarNone)
sparms->bar.style = MsgTextPercent;
-@@ -4555,7 +4555,7 @@
+@@ -4773,7 +4773,7 @@
}
if(first_view && num_display_lines >= get_scroll_text_lines())
@@ -346,7 +361,7 @@
force = 0; /* may not need to next time around */
-@@ -4671,7 +4671,7 @@
+@@ -4898,7 +4898,7 @@
whereis_pos.row = 0;
if(sparms->help.text == NO_HELP || ps_global->nr_mode){
q_status_message(SM_ORDER, 0, 5,
@@ -355,7 +370,7 @@
break;
}
-@@ -4710,12 +4710,12 @@
+@@ -4937,12 +4937,12 @@
cur_top_line -= scroll_lines;
if(cur_top_line <= 0){
cur_top_line = 0;
@@ -370,7 +385,7 @@
STYLE_NAME(sparms));
break;
-@@ -4729,12 +4729,12 @@
+@@ -4956,12 +4956,12 @@
cur_top_line += scroll_lines;
if(cur_top_line + num_display_lines >= get_scroll_text_lines())
@@ -385,7 +400,7 @@
STYLE_NAME(sparms));
break;
-@@ -4751,11 +4751,11 @@
+@@ -4978,11 +4978,11 @@
cur_top_line++;
if(cur_top_line + num_display_lines
>= get_scroll_text_lines())
@@ -399,7 +414,7 @@
STYLE_NAME(sparms));
}
-@@ -4772,11 +4772,11 @@
+@@ -4999,11 +4999,11 @@
if(cur_top_line){
cur_top_line--;
if(cur_top_line == 0)
@@ -413,7 +428,7 @@
STYLE_NAME(sparms));
}
-@@ -4807,7 +4807,7 @@
+@@ -5034,7 +5034,7 @@
}
q_status_message(SM_ORDER, 0, 1,
@@ -422,7 +437,7 @@
}
break;
-@@ -4837,7 +4837,7 @@
+@@ -5064,7 +5064,7 @@
}
q_status_message(SM_ORDER, 0, 1,
@@ -431,7 +446,7 @@
}
break;
-@@ -4856,7 +4856,7 @@
+@@ -5083,7 +5083,7 @@
break;
case -1 :
@@ -440,7 +455,7 @@
break;
default :
-@@ -4943,14 +4943,14 @@
+@@ -5170,14 +5170,14 @@
q_status_message(SM_ORDER, 0, 3, tmp_20k_buf);
else
q_status_message2(SM_ORDER, 0, 3,
@@ -459,7 +474,7 @@
break;
-@@ -5006,7 +5006,7 @@
+@@ -5257,7 +5257,7 @@
break;
case -1 :
@@ -468,7 +483,7 @@
break;
default :
-@@ -5251,13 +5251,13 @@
+@@ -5522,13 +5522,13 @@
int rc, flags;
static char search_string[MAX_SEARCH+1] = { '\0' };
static ESCKEY_S word_search_key[] = { { 0, 0, "", "" },
@@ -485,7 +500,7 @@
help = NO_HELP;
nsearch_string[0] = '\0';
-@@ -5272,13 +5272,13 @@
+@@ -5543,13 +5543,13 @@
continue;
}
else if(rc == 10){
@@ -501,7 +516,7 @@
cursor_pos->row = max(get_scroll_text_lines() - 1, 0);
cursor_pos->col = 0;
return(cursor_pos->row);
-@@ -6069,10 +6069,10 @@
+@@ -6411,10 +6411,10 @@
if(*msg_p[0])
for(i = 0; i < msg_q; i++)
q_status_message2(SM_ORDER, 3, 4,
@@ -514,7 +529,7 @@
}
else{
SCROLL_S sargs;
-@@ -6083,7 +6083,7 @@
+@@ -6425,7 +6425,7 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = f;
sargs.text.src = FileStar;
diff --git a/chinese/pine4/files/patch-be b/chinese/pine4/files/patch-be
index 07f83897f2a3..0beea920d4ab 100644
--- a/chinese/pine4/files/patch-be
+++ b/chinese/pine4/files/patch-be
@@ -1,6 +1,6 @@
---- pine/newmail.c.orig Fri Mar 27 07:28:33 1998
-+++ pine/newmail.c Tue Aug 4 12:42:19 1998
-@@ -289,38 +289,28 @@
+--- pine/newmail.c.orig Sat Aug 22 10:33:02 1998
++++ pine/newmail.c Tue Sep 22 19:22:59 1998
+@@ -301,38 +301,28 @@
ENVELOPE *e;
char subject[200], from[2*MAX_SCREEN_COLS],
intro[MAX_SCREEN_COLS+1];
@@ -47,7 +47,7 @@
if(e->from->personal)
istrncpy(from + ((number > 1L) ? 18 : 6),
(char *) rfc1522_decode((unsigned char *) tmp_20k_buf,
-@@ -337,13 +327,13 @@
+@@ -349,13 +339,13 @@
if(number <= 1L) {
if(e && e->subject){
diff --git a/chinese/pine4/files/patch-bk b/chinese/pine4/files/patch-bk
index d967e6e9d9af..7d218d7a14e9 100644
--- a/chinese/pine4/files/patch-bk
+++ b/chinese/pine4/files/patch-bk
@@ -1,8 +1,8 @@
---- pine/send.c.orig Wed Aug 19 10:37:27 1998
-+++ pine/send.c Wed Aug 19 10:45:31 1998
-@@ -209,18 +209,18 @@
-
-
+--- pine/send.c.orig Wed Sep 16 03:12:31 1998
++++ pine/send.c Tue Sep 22 11:56:19 1998
+@@ -211,18 +211,18 @@
+ * Various useful strings
+ */
#define INTRPT_PMT \
- "Continue INTERRUPTED composition (answering \"n\" won't erase it)"
+ "繼續編輯上次中斷的文章嗎(回答 \"否\" 將不會刪除它)"
@@ -12,7 +12,7 @@
#define FORM_PMT \
- "Start composition from Form Letter Folder"
+ "開始自來源信件匣中編輯"
- #define PSTPN_FORM_PMT \
+ #define PSTPN_FORM_PMT \
- "Save to Postponed or Form letter folder? "
+ "要存至「暫緩」或「來源」信件匣?"
#define POST_PMT \
@@ -23,9 +23,9 @@
-#define INTR_DEL_PMT "Deleted messages will be removed from folder. Delete"
+#define INTR_DEL_PMT "刪除的信件將被移出檔案匣。確定刪除嗎"
- /*
- * Since c-client preallocates, it's necessary here to define a limit
-@@ -375,14 +375,14 @@
+ #if defined(DOS) || defined(OS2)
+ #define POST_PERM_GRIPE \
+@@ -382,14 +382,14 @@
mail_close(stream);
if(ret == 'x'){
q_status_message(SM_ORDER, 0, 3,
@@ -42,7 +42,7 @@
file_path);
if(stream)
mail_close(stream);
-@@ -451,14 +451,14 @@
+@@ -469,14 +469,14 @@
if(ret == 'x'){
q_status_message(SM_ORDER, 0, 3,
@@ -59,7 +59,7 @@
if(stream)
mail_close(stream);
}
-@@ -533,7 +533,7 @@
+@@ -562,7 +562,7 @@
if(ret == 'x'){
q_status_message(SM_ORDER, 0, 3,
@@ -68,7 +68,7 @@
done++;
}
}
-@@ -543,7 +543,7 @@
+@@ -572,7 +572,7 @@
}
else{
q_status_message1(SM_ORDER | SM_DING, 3, 3,
@@ -77,7 +77,7 @@
if(stream)
mail_close(stream);
}
-@@ -617,7 +617,7 @@
+@@ -646,7 +646,7 @@
fs_give((void **)&tmp_fcc);
}
@@ -86,7 +86,7 @@
reply, redraft_pos, lcc, custom, fcc_is_sticky);
if(reply){
-@@ -684,7 +684,7 @@
+@@ -713,7 +713,7 @@
*/
if(!stream->nmsgs){
q_status_message(SM_ORDER | SM_DING, 3, 5,
@@ -95,7 +95,7 @@
return(redraft_cleanup(stream, TRUE));
}
else if(stream == ps_global->mail_stream){
-@@ -720,7 +720,7 @@
+@@ -749,7 +749,7 @@
mn_give(&msgmap);
if(rv){
@@ -104,7 +104,7 @@
(void) redraft_cleanup(stream, FALSE);
return(0); /* special case */
}
-@@ -958,7 +958,7 @@
+@@ -992,7 +992,7 @@
if(b->type == TYPEMULTIPART){
if(strucmp(b->subtype, "mixed")){
q_status_message1(SM_INFO, 3, 4,
@@ -113,7 +113,7 @@
b->subtype);
fs_give((void **)&b->subtype);
b->subtype = cpystr("mixed");
-@@ -966,7 +966,7 @@
+@@ -1000,7 +1000,7 @@
}
else{
q_status_message2(SM_ORDER | SM_DING, 3, 4,
@@ -122,7 +122,7 @@
body_types[b->type], b->subtype);
return(redraft_cleanup(stream, TRUE));
}
-@@ -980,7 +980,7 @@
+@@ -1014,7 +1014,7 @@
set_mime_type_by_grope(&part->body, NULL);
if(part->body.type != TYPETEXT){
q_status_message2(SM_ORDER | SM_DING, 3, 4,
@@ -131,7 +131,7 @@
body_types[part->body.type],
part->body.subtype);
return(redraft_cleanup(stream, TRUE));
-@@ -1041,7 +1041,7 @@
+@@ -1075,7 +1075,7 @@
if(stream == ps_global->mail_stream){
q_status_message1(SM_ORDER, 3, 7,
@@ -140,7 +140,7 @@
ps_global->inbox_name);
do_broach_folder(ps_global->inbox_name,
ps_global->context_list);
-@@ -1062,7 +1062,7 @@
+@@ -1096,7 +1096,7 @@
if(!(rv = mail_delete(stream, mbox)))
q_status_message1(SM_ORDER|SM_DING, 3, 3,
@@ -149,7 +149,7 @@
fs_give((void **) &mbox);
success = rv > 0L;
-@@ -1085,7 +1085,7 @@
+@@ -1119,7 +1119,7 @@
{
if(background_posting(FALSE)){
q_status_message1(SM_ORDER, 0, 3,
@@ -158,7 +158,7 @@
type);
return(failure);
}
-@@ -1308,7 +1308,7 @@
+@@ -1342,7 +1342,7 @@
if(rc == 1 || (rc == 0 && !answer)) {
q_status_message(SM_ORDER, 3, 4,
@@ -167,7 +167,7 @@
return(0);
}
-@@ -1397,7 +1397,7 @@
+@@ -1431,7 +1431,7 @@
if(rc == 1 || (rc == 0 && !answer)) {
q_status_message(SM_ORDER, 3, 4,
@@ -176,7 +176,7 @@
return(0);
}
-@@ -1453,7 +1453,7 @@
+@@ -1487,7 +1487,7 @@
if(rc == 1 || (rc == 0 && answer[0] == '\0')) {
q_status_message(SM_ORDER, 3, 4,
@@ -185,7 +185,7 @@
return(0);
}
-@@ -1480,31 +1480,31 @@
+@@ -1514,31 +1514,31 @@
*/
static struct headerentry he_template[]={
{"From : ", "From", h_composer_from, 10, 0, NULL,
@@ -226,7 +226,7 @@
0, 1, 1, 0, 0, 1, 0, 0, 0, 0, KS_NONE},
{"Subject : ", "Subject", h_composer_subject, 10, 0, NULL,
valid_subject, NULL, NULL, NULL, NULL,
-@@ -1539,7 +1539,7 @@
+@@ -1573,7 +1573,7 @@
static struct headerentry he_custom_addr_templ={
NULL, NULL, h_composer_custom_addr,10, 0, NULL,
@@ -235,7 +235,7 @@
0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK};
static struct headerentry he_custom_free_templ={
NULL, NULL, h_composer_custom_free,10, 0, NULL,
-@@ -1822,7 +1822,7 @@
+@@ -1856,7 +1856,7 @@
default:
q_status_message1(SM_ORDER,3,3,
@@ -244,7 +244,7 @@
break;
}
}
-@@ -1832,7 +1832,7 @@
+@@ -1866,7 +1866,7 @@
ekey[0].ch = ctrl('T');
ekey[0].rval = 2;
ekey[0].name = "^T";
@@ -253,7 +253,7 @@
ekey[1].ch = -1;
/*----------------------------------------------------------------------
-@@ -1943,12 +1943,12 @@
+@@ -1977,12 +1977,12 @@
opts[i].ch = 'y';
opts[i].rval = 'y';
opts[i].name = "Y";
@@ -268,7 +268,7 @@
verbose_requested = 0;
if(F_ON(F_VERBOSE_POST, ps_global)){
-@@ -1995,7 +1995,7 @@
+@@ -2029,7 +2029,7 @@
dsn_show = (dsn_requested & DSN_SHOW);
sprintf(tmp_20k_buf,
"%s%s%s%s%s%sto \"%s\" ? ",
@@ -277,7 +277,7 @@
(verbose_requested || dsn_show)
? "(" : "",
(verbose_requested)
-@@ -2132,7 +2132,7 @@
+@@ -2166,7 +2166,7 @@
if(!(outgoing->to || outgoing->cc || outgoing->bcc
|| local_so)){
q_status_message(SM_ORDER, 3, 5,
@@ -286,7 +286,7 @@
continue;
}
-@@ -2157,7 +2157,7 @@
+@@ -2191,7 +2191,7 @@
}
else if(result == 0){
q_status_message(SM_ORDER,3,5,
@@ -295,7 +295,7 @@
retval = -1;
dprint(1,
(debugfile, "explicit fcc write failed!\n"));
-@@ -2175,7 +2175,7 @@
+@@ -2209,7 +2209,7 @@
}
}
else{
@@ -304,7 +304,7 @@
retval = -1;
}
}
-@@ -2203,7 +2203,7 @@
+@@ -2237,7 +2237,7 @@
break;
case 1:
@@ -313,16 +313,16 @@
done++;
retval = -1;
break;
-@@ -2447,7 +2447,7 @@
+@@ -2488,7 +2488,7 @@
break;
case 'x': /* ^C */
- q_status_message(SM_ORDER, 0, 3, "Message cancelled");
+ q_status_message(SM_ORDER, 0, 3, "取消信件");
dprint(4, (debugfile, "=== send: cancelled\n"));
+ pbuf = save_previous_pbuf;
return;
-
-@@ -2837,7 +2837,7 @@
+@@ -2879,7 +2879,7 @@
default:
q_status_message1(SM_ORDER,3,7,
@@ -331,7 +331,7 @@
(void *)pf->type);
break;
}
-@@ -2864,7 +2864,7 @@
+@@ -2906,7 +2906,7 @@
#endif
if(pf->canedit || !he->rich_header)
q_status_message(SM_ORDER, 3, 3,
@@ -340,7 +340,7 @@
memset(he, 0, (size_t)sizeof(*he));
pf->he = NULL;
-@@ -3207,7 +3207,7 @@
+@@ -3254,7 +3254,7 @@
? "CANCEL" : "HUH?"));
if((editor_result & COMP_CANCEL)
&& F_ON(F_QUELL_DEAD_LETTER, ps_global)){
@@ -349,7 +349,7 @@
break;
}
-@@ -3231,7 +3231,7 @@
+@@ -3278,7 +3278,7 @@
&& (check_addresses(&header) == CA_BAD)){
/*--- Addresses didn't check out---*/
q_status_message(SM_ORDER, 7, 7,
@@ -358,16 +358,16 @@
continue;
}
-@@ -3288,7 +3288,7 @@
+@@ -3336,7 +3336,7 @@
if(!so_puts(local_so, tmp_20k_buf)){
- if(editor_result & COMP_CANCEL)
- q_status_message2(SM_ORDER | SM_DING, 3, 3,
-- "Can't write \"%s\": %s",
-+ "無法寫入 \"%s\":%s",
- folder, error_description(errno));
- else
- dprint(1, (debugfile, "* * * CAN'T WRITE %s: %s\n",
-@@ -3300,7 +3300,7 @@
+ if(editor_result & COMP_CANCEL)
+ q_status_message2(SM_ORDER | SM_DING, 3, 3,
+- "Can't write \"%s\": %s",
++ "無法寫入 \"%s\": %s",
+ folder, error_description(errno));
+ else
+ dprint(1, (debugfile, "* * * CAN'T WRITE %s: %s\n",
+@@ -3349,7 +3349,7 @@
if(!ps_global->VAR_POSTPONED_FOLDER
|| !ps_global->VAR_POSTPONED_FOLDER[0]){
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -376,7 +376,7 @@
continue;
}
-@@ -3330,7 +3330,7 @@
+@@ -3379,7 +3379,7 @@
}
else{
strcpy(folder, ps_global->VAR_POSTPONED_FOLDER);
@@ -385,7 +385,7 @@
}
local_so = open_fcc(folder,&fcc_cntxt, 1, NULL, NULL);
-@@ -3472,10 +3472,10 @@
+@@ -3521,10 +3521,10 @@
&& ps_global->VAR_FORM_FOLDER[0]
&& !strcmp(folder, ps_global->VAR_FORM_FOLDER))
q_status_message(SM_ORDER, 0, 3,
@@ -398,7 +398,7 @@
break; /* postpone went OK, get out of here */
}
-@@ -3485,15 +3485,15 @@
+@@ -3534,15 +3534,15 @@
if(fcc_result && folder)
lc = last_cmpnt(folder);
@@ -417,7 +417,7 @@
body_start = 1;
continue; /* postpone failed, jump back in to composer */
}
-@@ -3509,14 +3509,14 @@
+@@ -3558,14 +3558,14 @@
/* --- If posting, confirm with user ----*/
if(outgoing->newsgroups && *outgoing->newsgroups
&& want_to(POST_PMT, 'n', 'n', NO_HELP, WT_NORM) == 'n'){
@@ -434,7 +434,7 @@
dprint(4, (debugfile, "no recip, continuing\n"));
continue;
}
-@@ -3558,8 +3558,8 @@
+@@ -3607,8 +3607,8 @@
&& !filter_message_text(sending_filter_requested, outgoing,
*body, &orig_so)){
q_status_message1(SM_ORDER, 3, 3,
@@ -445,7 +445,7 @@
continue;
}
-@@ -3650,7 +3650,7 @@
+@@ -3699,7 +3699,7 @@
}
else if(!(result & (P_MAIL_BITS | P_NEWS_BITS))){
q_status_message(SM_ORDER, 3, 5,
@@ -454,7 +454,7 @@
dprint(1, (debugfile,
"explicit fcc write failed!\n"));
result |= P_FCC_LOSE;
-@@ -3717,7 +3717,7 @@
+@@ -3766,7 +3766,7 @@
}
else if(!(result & (P_MAIL_BITS | P_NEWS_BITS))){
q_status_message(SM_ORDER,3,5,
@@ -463,7 +463,7 @@
dprint(1, (debugfile, "explicit fcc write failed!\n"));
result |= P_FCC_LOSE;
}
-@@ -3801,8 +3801,8 @@
+@@ -3852,8 +3852,8 @@
postpone_prompt()
{
int ret = 1;
@@ -474,7 +474,7 @@
{-1, 0, NULL, NULL} };
return(radio_buttons(PSTPN_FORM_PMT, -FOOTER_ROWS(ps_global),
-@@ -3949,23 +3949,23 @@
+@@ -4005,23 +4005,23 @@
char *buf;
int *goodorbad;
{
@@ -506,7 +506,7 @@
(result & P_FCC_WIN) ? "\"" : "",
(result & P_FCC_WIN) ? fcc_name : "",
(result & P_FCC_WIN) ? "\"" : "");
-@@ -4004,7 +4004,7 @@
+@@ -4060,7 +4060,7 @@
|| (F_ON(F_COMPOSE_REJECTS_UNQUAL, ps_global)
&& a->host[0] == '@'))){
q_status_message2(SM_ORDER, 4, 7,
@@ -515,7 +515,7 @@
a->mailbox,
(a->host[0] == '.')
? a->host
-@@ -4014,7 +4014,7 @@
+@@ -4070,7 +4070,7 @@
else if(ps_global->restricted
&& !address_is_us(*pf->addr, ps_global)){
q_status_message(SM_ORDER, 3, 3,
@@ -524,7 +524,7 @@
return(CA_BAD);
}
else if(a->mailbox && strucmp(a->mailbox, "mailer-daemon") == 0
-@@ -4164,7 +4164,7 @@
+@@ -4220,7 +4220,7 @@
if(!(n > 0L && n <= mn_get_total(ps_global->msgmap)
&& (e = mail_fetchstructure(ps_global->mail_stream,
mn_m2raw(ps_global->msgmap, n), &b)))){
@@ -533,7 +533,7 @@
flush_status_messages(0);
return(0L);
}
-@@ -4179,7 +4179,7 @@
+@@ -4235,7 +4235,7 @@
/* actually write message text */
if(!format_message(mn_m2raw(ps_global->msgmap, n), e, b,
FM_NEW_MESS | FM_DISPLAY, f)){
@@ -542,7 +542,7 @@
flush_status_messages(0);
rv = 0L;
}
-@@ -4292,12 +4292,12 @@
+@@ -4348,12 +4348,12 @@
opts[i].ch = 'y';
opts[i].rval = 'y';
opts[i].name = "Y";
@@ -557,7 +557,7 @@
if(filters){
/* set global_filter_pointer to desired filter or NULL if none */
-@@ -4305,12 +4305,12 @@
+@@ -4361,12 +4361,12 @@
opts[i].ch = ctrl('P');
opts[i].rval = 10;
opts[i].name = "^P";
@@ -572,7 +572,7 @@
if(F_ON(F_FIRST_SEND_FILTER_DFLT, ps_global))
filters = filters->next;
-@@ -4380,23 +4380,23 @@
+@@ -4436,23 +4436,23 @@
p = NULL;
dsn_show = (dsn_requested & DSN_SHOW);
@@ -601,7 +601,7 @@
(verbose_requested || background_requested)
? "mode" : "",
(dsn_show
-@@ -4411,11 +4411,11 @@
+@@ -4467,11 +4467,11 @@
*p = ' ';
if(verbose_label)
@@ -615,7 +615,7 @@
if(F_ON(F_DSN, ps_global)){
if(dsn_requested & DSN_SHOW){
-@@ -4439,11 +4439,11 @@
+@@ -4495,11 +4495,11 @@
break;
}
else if(rv == 'n'){ /* Declined! */
@@ -629,7 +629,7 @@
break;
}
else if(rv == 10) /* PREVIOUS filter */
-@@ -4625,7 +4625,7 @@
+@@ -4681,7 +4681,7 @@
if(body->type != TYPEOTHER){
rv = 1;
q_status_message3(SM_ORDER, 0, 3,
@@ -638,7 +638,7 @@
body_types[body->type],
body->subtype ? body->subtype : rfc822_default_subtype(body->type));
}
-@@ -4674,7 +4674,7 @@
+@@ -4730,7 +4730,7 @@
(void) close_system_pipe(&syspipe);
if((l = name_file_size(fname)) < 0L){
q_status_message2(SM_ORDER | SM_DING, 3, 4,
@@ -647,7 +647,7 @@
fnp = error_description(errno));
dprint(1, (debugfile,
"!!! Upload cmd \"%s\" failed for \"%s\": %s\n",
-@@ -4686,7 +4686,7 @@
+@@ -4742,7 +4742,7 @@
return(l >= 0);
}
else
@@ -656,7 +656,7 @@
return(0);
}
-@@ -4739,7 +4739,7 @@
+@@ -4795,7 +4795,7 @@
else if(reply->flags == REPLY_MSGNO)
return;
@@ -665,7 +665,7 @@
if(!stream){
if(stream = mail_open(NULL, reply->mailbox, OP_SILENT)){
ourstream++;
-@@ -4817,7 +4817,7 @@
+@@ -4873,7 +4873,7 @@
so_give(&tmpf_so);
}
else
@@ -674,7 +674,7 @@
}
if(!errstr){
-@@ -4841,13 +4841,13 @@
+@@ -4897,13 +4897,13 @@
so_give(&tmpf_so);
}
else
@@ -691,7 +691,7 @@
}
else
errstr = gf_filter(cmd, key ? filter_session_key() : NULL,
-@@ -4858,7 +4858,7 @@
+@@ -4914,7 +4914,7 @@
if(errstr){
int ch;
@@ -700,7 +700,7 @@
fflush(stdout);
while((ch = read_char(300)) != ctrl('M')
&& ch != NO_OP_IDLE)
-@@ -4951,7 +4951,7 @@
+@@ -5007,7 +5007,7 @@
if(tmp_so)
so_give(&tmp_so);
@@ -709,7 +709,7 @@
errstr);
dprint(1, (debugfile, "Filter FAILED: %s\n", errstr));
}
-@@ -5036,11 +5036,11 @@
+@@ -5092,11 +5092,11 @@
loser = pine_simple_send(outgoing, &body, NULL, NULL, NULL, 0);
@@ -723,7 +723,7 @@
mail_free_envelope(&outgoing);
pine_free_body(&body);
-@@ -5124,7 +5124,7 @@
+@@ -5180,7 +5180,7 @@
if(!pf){
q_status_message(SM_ORDER,3,3,
@@ -732,7 +732,7 @@
return(0);
}
-@@ -5133,7 +5133,7 @@
+@@ -5189,7 +5189,7 @@
gf_filter_init(); /* zero piped byte count, 'n */
send_bytes_to_send = send_body_size(body); /* count body bytes */
ps_global->c_client_error[0] = error_buf[0] = '\0';
@@ -741,7 +741,7 @@
send_bytes_to_send ? sent_percent : NULL, 1);
/* try posting via local "<mta> <-t>" if specified */
-@@ -5318,7 +5318,7 @@
+@@ -5374,7 +5374,7 @@
struct headerentry *last_he = NULL;
sprintf(error_buf,
@@ -750,7 +750,7 @@
(sending_stream && sending_stream->reply) ? ": ": ".",
(sending_stream && sending_stream->reply)
? sending_stream->reply : "");
-@@ -5391,7 +5391,7 @@
+@@ -5447,7 +5447,7 @@
TIME_STAMP("smtp done", 1);
}
else if(!error_mess)
@@ -759,7 +759,7 @@
ps_global->c_client_error);
if(verbose_file){
-@@ -5399,7 +5399,7 @@
+@@ -5455,7 +5455,7 @@
TIME_STAMP("verbose start", 1);
fclose(verbose_send_output);
verbose_send_output = NULL;
@@ -768,7 +768,7 @@
display_output_file(verbose_file, "Verbose SMTP Interaction",NULL, 1);
TIME_STAMP("verbose end", 1);
}
-@@ -5488,12 +5488,12 @@
+@@ -5544,12 +5544,12 @@
if(folder_index(fcc, *fcc_cntxt, FI_FOLDER) < 0){
if(ps_global->context_list->next)
sprintf(tmp_20k_buf,
@@ -783,7 +783,7 @@
strsquish(tmp_20k_buf + 500, fcc, 40));
if(force || want_to(tmp_20k_buf,'y','n',NO_HELP,WT_NORM) == 'y'){
-@@ -5530,7 +5530,7 @@
+@@ -5586,7 +5586,7 @@
ok++;
}
else{
@@ -792,7 +792,7 @@
strsquish(tmp_20k_buf + 500, fcc, 40));
if(force || want_to(tmp_20k_buf,'y','n',NO_HELP,WT_NORM) == 'y'){
/*
-@@ -5564,8 +5564,8 @@
+@@ -5620,8 +5620,8 @@
if(ok == 0){
if(ps_global->mm_log_error){
@@ -803,7 +803,7 @@
l1 = strlen(s1);
l2 = strlen(s2);
-@@ -5583,10 +5583,10 @@
+@@ -5639,10 +5639,10 @@
}
else
@@ -816,7 +816,7 @@
q_status_message(SM_ORDER | SM_DING, 3, 3, errstr);
}
-@@ -5634,7 +5634,7 @@
+@@ -5690,7 +5690,7 @@
if(label && *label){
char msg_buf[80];
@@ -825,7 +825,7 @@
we_cancel = busy_alarm(1, msg_buf, NULL, 1);
}
else
-@@ -5670,7 +5670,7 @@
+@@ -5726,7 +5726,7 @@
we_cancel = 0;
q_status_message1(SM_ORDER | SM_DING, 3, 5,
@@ -834,7 +834,7 @@
dprint(1, (debugfile, "ERROR appending %s in \"%s\"",
fcc, cntxt ? cntxt->context : "NULL"));
return(0);
-@@ -6146,7 +6146,7 @@
+@@ -6209,7 +6209,7 @@
if((file_contents = (void *)so_get(FileStar, pa->filename,
READ_ACCESS)) == NULL){
q_status_message2(SM_ORDER | SM_DING, 3, 4,
@@ -843,7 +843,7 @@
error_description(errno), pa->filename);
display_message('x');
continue;
-@@ -6673,13 +6673,17 @@
+@@ -6736,13 +6736,17 @@
body->subtype = cpystr("octet-stream");
}
@@ -868,7 +868,7 @@
}
}
-@@ -6848,6 +6852,9 @@
+@@ -6912,6 +6916,9 @@
value = rfc1522_encode(tmp_20k_buf, (unsigned char *) text,
ps_global->VAR_CHAR_SET);
@@ -878,7 +878,7 @@
if(value && value == text){ /* no encoding was done, have to fold */
int fold_by, len;
char *actual_field;
-@@ -7180,7 +7187,7 @@
+@@ -7254,7 +7261,7 @@
break;
default:
@@ -887,7 +887,7 @@
break;
}
}
-@@ -7499,7 +7506,8 @@
+@@ -7573,7 +7580,8 @@
switch (body->encoding) { /* all else needs filtering */
case ENC8BIT: /* encode 8BIT into QUOTED-PRINTABLE */
@@ -897,7 +897,7 @@
break;
case ENCBINARY: /* encode binary into BASE64 */
-@@ -7513,7 +7521,7 @@
+@@ -7587,7 +7595,7 @@
if(encode_error = gf_pipe(gc, l_putc)){ /* shove body part down pipe */
q_status_message1(SM_ORDER | SM_DING, 3, 4,
@@ -906,7 +906,7 @@
display_message('x');
}
-@@ -7582,7 +7590,7 @@
+@@ -7656,7 +7664,7 @@
&& !(so_puts(so, "Content-Transfer-Encoding: ")
&& so_puts(so, body_encodings[(body->encoding==ENCBINARY)
? ENCBASE64
@@ -915,7 +915,7 @@
? ENCQUOTEDPRINTABLE
: (body->encoding <= ENCMAX)
? body->encoding
-@@ -8205,7 +8213,7 @@
+@@ -8279,7 +8287,7 @@
|| (forbid = pine_header_forbidden(name))){
if(forbid)
q_status_message1(SM_ORDER, 3, 3,
@@ -924,7 +924,7 @@
*t = save;
continue;
-@@ -8322,7 +8330,7 @@
+@@ -8396,7 +8404,7 @@
if(ps_global->post){
if(gripe)
q_status_message(SM_ORDER|SM_DING, 3, 3,
diff --git a/chinese/pine4/files/patch-bo b/chinese/pine4/files/patch-bo
index e0eef8d39021..d7ea62040456 100644
--- a/chinese/pine4/files/patch-bo
+++ b/chinese/pine4/files/patch-bo
@@ -1,6 +1,17 @@
---- build.orig Tue Jun 16 01:35:10 1998
-+++ build Wed Aug 19 10:45:16 1998
-@@ -256,11 +256,11 @@
+--- build.orig Fri Sep 4 08:01:15 1998
++++ build Tue Sep 22 13:21:37 1998
+@@ -80,8 +80,8 @@
+ pine The Pine mailer. Once compiled this should work just fine on
+ your system with no other files than this binary, and no
+ modifications to your system. Optionally you may create two
+- configuration files, /usr/local/lib/pine.conf and
+- /usr/local/lib/pine.info. See the documentation for details.
++ configuration files, /usr/local/etc/pine.conf and
++ /usr/local/etc/pine.info. See the documentation for details.
+
+ pico The standalone editor similar to the Pine message composer.
+ This is a very simple straight forward text editor.
+@@ -274,11 +274,11 @@
if [ -s c-client ] ; then rm -f c-client ; fi
ln -s imap/c-client c-client
@@ -17,7 +28,7 @@
eval echo make "$makeargs" "$K1" "$K2" $ccltarg
cd $PHOME/imap
eval make "$makeargs" "$K1" "$K2" $ccltarg
-@@ -281,14 +281,16 @@
+@@ -299,14 +299,14 @@
cd $PHOME/bin
rm -f pine mtest imapd pico pilot
if [ -s ../pine/pine ] ; then ln ../pine/pine pine ; fi
@@ -27,17 +38,15 @@
+# if [ -s ../imapd/imapd ] ; then ln ../imapd/imapd imapd ; fi
if [ -s ../pico/pico ] ; then ln ../pico/pico pico ; fi
if [ -s ../pico/pilot ] ; then ln ../pico/pilot pilot ; fi
-+ if [ -s ../pico/libpico.so.2.0 ] ;
-+ then ln ../pico/libpico.so.2.0 libpico.so.2.0 ; fi
cd $PHOME
echo ''
echo "Links to executables are in bin directory:"
- size bin/pine bin/mtest bin/imapd bin/pico bin/pilot
-+ size bin/pine bin/pico bin/pilot bin/libpico.so.2.0
++ size bin/pine bin/pico bin/pilot
echo "Done"
;;
-@@ -299,10 +301,10 @@
+@@ -317,10 +317,10 @@
make clean
echo "Cleaning Pine"
cd $PHOME/pine
diff --git a/chinese/pine4/files/patch-bp b/chinese/pine4/files/patch-bp
index ddcafda265d2..0d07559d4209 100644
--- a/chinese/pine4/files/patch-bp
+++ b/chinese/pine4/files/patch-bp
@@ -5,13 +5,13 @@
/etc/mime.types System-wide file ext. to MIME type mapping
.br
-/usr/local/lib/pine.info Local pointer to system administrator.
-+/usr/local/etc/pine.info Local pointer to system administrator.
++@@PREFIX@@/etc/pine.info Local pointer to system administrator.
.br
-/usr/local/lib/pine.conf System-wide configuration file.
-+/usr/local/etc/pine.conf System-wide configuration file.
++@@PREFIX@@/etc/pine.conf System-wide configuration file.
.br
-/usr/local/lib/pine.conf.fixed Non-overridable configuration file.
-+/usr/local/etc/pine.conf.fixed Non-overridable configuration file.
++@@PREFIX@@/etc/pine.conf.fixed Non-overridable configuration file.
.br
/tmp/.\\usr\\spool\\mail\\xxxx Per-folder mailbox lock files.
.br
diff --git a/chinese/pine4/files/patch-br b/chinese/pine4/files/patch-br
index 3ea141eae580..5a68b420380a 100644
--- a/chinese/pine4/files/patch-br
+++ b/chinese/pine4/files/patch-br
@@ -1,48 +1,57 @@
---- pine/pine.hlp.orig Wed Jul 22 06:04:04 1998
-+++ pine/pine.hlp Wed Aug 19 10:45:28 1998
-@@ -750,9 +750,9 @@
+--- pine/pine.hlp.orig Tue Sep 22 20:33:23 1998
++++ pine/pine.hlp Tue Sep 22 20:34:09 1998
+@@ -835,9 +835,9 @@
executable &lt;Unix search path&gt;/pine
persnl cfg ~/.pinerc
- global cfg /usr/local/lib/pine.conf
- fixed cfg /usr/local/lib/pine.conf.fixed
- local help /usr/local/lib/pine.info
-+ global cfg /usr/local/etc/pine.conf
-+ fixed cfg /usr/local/etc/pine.conf.fixed
-+ local help /usr/local/etc/pine.info
++ global cfg @@PREFIX@@/etc/pine.conf
++ fixed cfg @@PREFIX@@/etc/pine.conf.fixed
++ local help @@PREFIX@@/etc/pine.info
interrupted ~/.pine-interrupted-mail
debug ~/.pine-debugN
-@@ -1137,9 +1137,9 @@
+@@ -850,7 +850,7 @@
+ sentmail# ~/mail/sent-mail
+ mailcap# ~/.mailcap + /etc/mailcap
+ + /usr/etc/mailcap + /usr/local/etc/mailcap
+- mimetypes# ~/.mime.types + /etc/mime.types + /usr/local/lib/mime.types
++ mimetypes# ~/.mime.types + /etc/mime.types + @@PREFIX@@/etc/mime.types
+
+ news-spool varies across Unix flavors, e.g. /usr/spool/news or /var/news
+ active-news varies across Unix flavors, e.g. /usr/lib/news/active
+@@ -1404,9 +1404,9 @@
this link now to send a message to it:<BR>
<A HREF="X-Pine-Gripe:_LOCAL_ADDRESS_?local"><!--#echo var="_LOCAL_FULLNAME_"--></A><P>
<!--chtml endif-->
-<!--chtml if [ -r /usr/local/lib/pine.info ]-->
-+<!--chtml if [ -r /usr/local/etc/pine.info ]-->
++<!--chtml if [ -r @@PREFIX@@/etc/pine.info ]-->
<HR WIDTH="75%">Local Support Contacts:<P>
-<!--#include file="/usr/local/lib/pine.info"-->
-+<!--#include file="/usr/local/etc/pine.info"-->
++<!--#include file="@@PREFIX@@/etc/pine.info"-->
<HR WIDTH="75%">
<!--chtml endif-->
<P>
-@@ -1226,7 +1226,7 @@
+@@ -1493,7 +1493,7 @@
<OL>
<LI> <A HREF="#intro">Introduction</A>
<LI> <A HREF="#pine_help">Pine Help</A>
-<!--chtml if [ -r /usr/local/lib/pine.info ]-->
-+<!--chtml if [ -r /usr/local/etc/pine.info ]-->
++<!--chtml if [ -r @@PREFIX@@/etc/pine.info ]-->
<LI> <A HREF="#local_support">Local Support Contacts</A>
<!--chtml endif-->
<LI> <A HREF="#giving_cmds">Giving Commands in Pine</A>
-@@ -1333,9 +1333,9 @@
+@@ -1600,9 +1600,9 @@
at your site.)
-<!--chtml if [ -r /usr/local/lib/pine.info ]-->
-+<!--chtml if [ -r /usr/local/etc/pine.info ]-->
++<!--chtml if [ -r @@PREFIX@@/etc/pine.info ]-->
<H2><A NAME="local_support">Local Support Contacts</A></H2>
-<!--#include file="/usr/local/lib/pine.info"-->
-+<!--#include file="/usr/local/etc/pine.info"-->
++<!--#include file="@@PREFIX@@/etc/pine.info"-->
<!--chtml endif-->
<H2><A NAME="giving_cmds">Giving Commands in Pine</A></H2>
diff --git a/chinese/pine4/files/patch-bs b/chinese/pine4/files/patch-bs
new file mode 100644
index 000000000000..51763015b004
--- /dev/null
+++ b/chinese/pine4/files/patch-bs
@@ -0,0 +1,25 @@
+--- pine/mailcap.c.orig Tue Sep 15 05:31:21 1998
++++ pine/mailcap.c Tue Sep 22 14:27:29 1998
+@@ -61,7 +61,7 @@
+
+ Mime types makes mime assign attachment types according
+ to file name extensions found in a system wide file
+- ``/usr/local/lib/mime.types'' and a user specific file
++ ``@@PREFIX@@/etc/mime.types'' and a user specific file
+ ``~/.mime.types'' . These files specify file extensions
+ that will be connected to a mime type.
+ *******************************************************
+@@ -96,11 +96,11 @@
+ #define MC_PATH_SEPARATOR ':'
+ #define MC_USER_FILE NULL
+ #define MC_STDPATH \
+- ".mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap"
++ ".mailcap:/etc/mailcap:/usr/etc/mailcap:@@PREFIX@@/etc/mailcap"
+ #define MT_PATH_SEPARATOR ':'
+ #define MT_USER_FILE NULL
+ #define MT_STDPATH \
+- ".mime.types:/etc/mime.types:/usr/local/lib/mime.types"
++ ".mime.types:/etc/mime.types:@@PREFIX@@/etc/mime.types"
+ #endif /* !DOS */
+
+ #ifdef _WINDOWS
diff --git a/chinese/pine4/files/patch-bt b/chinese/pine4/files/patch-bt
new file mode 100644
index 000000000000..73285bb6ad09
--- /dev/null
+++ b/chinese/pine4/files/patch-bt
@@ -0,0 +1,27 @@
+--- pine/osdep/expnfldr.orig Tue Sep 22 21:19:44 1998
++++ pine/osdep/expnfldr Tue Sep 22 21:20:44 1998
+@@ -32,13 +32,13 @@
+ } else if(ps_global->restricted
+ && (strindex("./~", temp_filename[0]) != NULL
+ || srchstr(temp_filename,"/../"))){
+- q_status_message(SM_ORDER, 0, 3, "Can only open local folders");
++ q_status_message(SM_ORDER, 0, 3, "僅能開啟本地的檔案匣");
+ return(0);
+ } else if(temp_filename[0] == '*') {
+ strcpy(filename, temp_filename);
+ } else if(ps_global->VAR_OPER_DIR && srchstr(temp_filename,"..")){
+ q_status_message(SM_ORDER, 0, 3,
+- "\"..\" not allowed in folder name");
++ "檔案匣名稱中不允許\有 \"..\"");
+ return(0);
+ } else if (temp_filename[0] == '~'){
+ if(fnexpand(temp_filename, sizeof(temp_filename)) == NULL) {
+@@ -46,7 +46,7 @@
+ if(p != NULL)
+ *p = '\0';
+ q_status_message1(SM_ORDER, 3, 3,
+- "Error expanding folder name: \"%s\" unknown user",
++ "檔案匣展開錯誤:\"%s\" 未知的使用者",
+ temp_filename);
+ return(0);
+ }
diff --git a/chinese/pine4/files/patch-bu b/chinese/pine4/files/patch-bu
new file mode 100644
index 000000000000..37b8893c8556
--- /dev/null
+++ b/chinese/pine4/files/patch-bu
@@ -0,0 +1,21 @@
+--- pine/osdep/execview.orig Tue Sep 22 21:21:12 1998
++++ pine/osdep/execview Tue Sep 22 21:22:10 1998
+@@ -45,14 +45,14 @@
+ if(syspipe = open_system_pipe(command, r_file_h, NULL, mode)){
+ close_system_pipe(&syspipe);
+ if(needsterminal == 1)
+- q_status_message(SM_ORDER, 0, 4, "VIEWER command completed");
++ q_status_message(SM_ORDER, 0, 4, "VIEWER 命令完成");
+ else if(needsterminal == 2)
+- display_output_file(result_file, "VIEWER", " command result", 1);
++ display_output_file(result_file, "VIEWER", " 命令結果", 1);
+ else
+- display_output_file(result_file, "VIEWER", " command launched", 1);
++ display_output_file(result_file, "VIEWER", " 命令已啟動", 1);
+ }
+ else
+- q_status_message1(SM_ORDER, 3, 4, "Cannot spawn command : %s", cmd);
++ q_status_message1(SM_ORDER, 3, 4, "無法起始命令:%s", cmd);
+
+ fs_give((void **)&command);
+ if(result_file)
diff --git a/chinese/pine4/files/patch-bv b/chinese/pine4/files/patch-bv
new file mode 100644
index 000000000000..ffa5de3907b8
--- /dev/null
+++ b/chinese/pine4/files/patch-bv
@@ -0,0 +1,90 @@
+--- pine/osdep/print.orig Tue Sep 22 21:22:23 1998
++++ pine/osdep/print Tue Sep 22 21:26:09 1998
+@@ -39,12 +39,12 @@
+ HelpType help;
+ char **list;
+ static ESCKEY_S ekey[] = {
+- {'y', 'y', "Y", "Yes"},
+- {'n', 'n', "N", "No"},
+- {ctrl('P'), 10, "^P", "Prev Printer"},
+- {ctrl('N'), 11, "^N", "Next Printer"},
++ {'y', 'y', "Y", "是"},
++ {'n', 'n', "N", "否"},
++ {ctrl('P'), 10, "^P", "前一印表機"},
++ {ctrl('N'), 11, "^N", "下一印表機"},
+ {-2, 0, NULL, NULL},
+- {'c', 'c', "C", "CustomPrint"},
++ {'c', 'c', "C", "自定印表機"},
+ {KEY_UP, 10, "", ""},
+ {KEY_DOWN, 11, "", ""},
+ {-1, 0, NULL, NULL}};
+@@ -61,7 +61,7 @@
+
+ if(ps_global->VAR_PRINTER == NULL){
+ q_status_message(SM_ORDER | SM_DING, 3, 5,
+- "No printer has been chosen. Use SETUP on main menu to make choice.");
++ "尚未選擇印表機。請用主選單中的設定來選擇。");
+ return(-1);
+ }
+
+@@ -138,7 +138,7 @@
+ switch(cmd){
+ case 'y':
+ q_status_message1(SM_ORDER, 0, 9,
+- "Printing with command \"%s\"", command);
++ "正以 \"%s\" 命令列印中", command);
+ done++;
+ break;
+
+@@ -175,7 +175,7 @@
+ if(trailer)
+ fs_give((void **)&trailer);
+
+- sprintf(prompt, "Enter custom command : ");
++ sprintf(prompt, "輸入自定的命令:");
+ command[0] = '\0';
+ rc = 1;
+ help = NO_HELP;
+@@ -195,13 +195,13 @@
+ removing_trailing_white_space(command);
+ removing_leading_white_space(command);
+ q_status_message1(SM_ORDER, 0, 9,
+- "Printing with command \"%s\"", command);
++ "正以 \"%s\" 命令列印中", command);
+ }
+ }
+ }
+
+ if(cmd == 'x' || cmd == 'n'){
+- q_status_message(SM_ORDER, 0, 2, "Print cancelled");
++ q_status_message(SM_ORDER, 0, 2, "取消列印");
+ if(init)
+ fs_give((void **)&init);
+
+@@ -221,7 +221,7 @@
+ || strucmp(command, aname) == 0){
+ /*----------- Printer attached to ansi device ---------*/
+ q_status_message(SM_ORDER, 0, 9,
+- "Printing to attached desktop printer...");
++ "正列印至桌上印表機...");
+ display_message('x');
+ xonxoff_proc(1); /* make sure XON/XOFF used */
+ crlf_proc(1); /* AND LF->CR xlation */
+@@ -252,7 +252,7 @@
+ else{
+ fs_give((void **)&ps_global->print->result);
+ q_status_message1(SM_ORDER | SM_DING, 3, 4,
+- "Error opening printer: %s",
++ "印表機開啟錯誤:%s",
+ error_description(errno));
+ dprint(2, (debugfile, "Error popening printer \"%s\"\n",
+ error_description(errno)));
+@@ -311,7 +311,7 @@
+
+ fs_give((void **)&ps_global->print);
+
+- q_status_message(SM_ASYNC, 0, 3, "Print command completed");
++ q_status_message(SM_ASYNC, 0, 3, "列印指令完成");
+ display_message('x');
+ }
+
diff --git a/chinese/pine4/files/patch-bw b/chinese/pine4/files/patch-bw
new file mode 100644
index 000000000000..06556abd1c60
--- /dev/null
+++ b/chinese/pine4/files/patch-bw
@@ -0,0 +1,61 @@
+--- pine/osdep/termin.gen.orig Wed Aug 19 08:35:10 1998
++++ pine/osdep/termin.gen Tue Sep 22 21:47:15 1998
+@@ -32,21 +32,19 @@
+ * we're in again...
+ */
+ if(ps_global->expunge_count){
+- q_status_message3(SM_ORDER, 3, 3,
+- "%s message%s expunged from folder \"%s\"",
+- long2string(ps_global->expunge_count),
+- plural(ps_global->expunge_count),
+- pretty_fn(ps_global->cur_folder));
++ q_status_message2(SM_ORDER, 3, 3,
++ "自資料匣 \"%s\" 中刪除 %s 封信件",
++ pretty_fn(ps_global->cur_folder),
++ long2string(ps_global->expunge_count));
+ ps_global->expunge_count = 0L;
+ display_message('x');
+ }
+
+ if(ps_global->inbox_expunge_count){
+- q_status_message3(SM_ORDER, 3, 3,
+- "%s message%s expunged from folder \"%s\"",
+- long2string(ps_global->inbox_expunge_count),
+- plural(ps_global->inbox_expunge_count),
+- pretty_fn(ps_global->inbox_name));
++ q_status_message2(SM_ORDER, 3, 3,
++ "自資料匣 \"%s\" 中刪除 %s 封信件",
++ pretty_fn(ps_global->inbox_name),
++ long2string(ps_global->inbox_expunge_count));
+ ps_global->inbox_expunge_count = 0L;
+ display_message('x');
+ }
+@@ -71,7 +69,7 @@
+ int winner = 0;
+
+ if(ps_global->post->status < 0){
+- q_status_message(SM_ORDER | SM_DING, 3, 3, "Abysmal failure!");
++ q_status_message(SM_ORDER | SM_DING, 3, 3, "徹底失敗!");
+ }
+ else{
+ (void) pine_send_status(ps_global->post->status,
+@@ -84,7 +82,7 @@
+
+ if(!winner)
+ q_status_message(SM_ORDER, 0, 3,
+- "Re-send via \"Compose\" then \"Yes\" to \"Continue INTERRUPTED?\"");
++ "由 \"編修\" 再回答 \"是\" 來繼續重送 \"上次中斷的信件?\"");
+
+ if(ps_global->post->fcc)
+ fs_give((void **) &ps_global->post->fcc);
+@@ -115,8 +113,8 @@
+
+
+ static struct key oe_keys[] =
+- {{"^G","Help",KS_SCREENHELP}, {"^C","Cancel",KS_NONE},
+- {"^T","xxx",KS_NONE}, {"Ret","Accept",KS_NONE},
++ {{"^G","輔助說明",KS_SCREENHELP}, {"^C","取消",KS_NONE},
++ {"^T","xxx",KS_NONE}, {"Ret","同意",KS_NONE},
+ {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE},
+ {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE},
+ {NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE},
diff --git a/chinese/pine4/files/pgpdecode b/chinese/pine4/files/pgpdecode
index 86d5a97daa04..40625939c37c 100644
--- a/chinese/pine4/files/pgpdecode
+++ b/chinese/pine4/files/pgpdecode
@@ -6,9 +6,46 @@
# The tmp files in the original version were world readable for
# the short time of unpacking, setting suitable umask prevents this
#
+# Wed Sep 16 21:35:43 WST 1997 Anthony Di Pietro <anthony@dino.omen.com.au>
+# Modified to work with both PGP v2 and PGP v5.
+# Now uses mktemp to prevent symlink attack and tmp races.
+
umask 077
-trap "rm -f /tmp/pgpdecode.???.$$; exit" 0 1 2 15
-(pgp -f > /tmp/pgpdecode.txt.$$) 2>&1 | tee /tmp/pgpdecode.pgp.$$ 1>&2
-sed -e 's/^/| /' /tmp/pgpdecode.pgp.$$
-echo " "
-cat /tmp/pgpdecode.txt.$$
+
+MYNAME=`basename $0`
+
+STDOUT=`mktemp -q /tmp/${MYNAME}.XXXXXX`
+if [ $? -ne 0 ]
+then
+ echo "$0: Can't create temporary file to decode message."
+ exit 1
+fi
+
+trap "rm -f $STDOUT ; exit" 0 1 2 15
+
+STDERR=`mktemp -q /tmp/${MYNAME}.XXXXXX`
+if [ $? -ne 0 ]
+then
+ echo "$0: Can't create temporary file to decode message."
+ exit 1
+fi
+
+trap "rm -f $STDOUT $STDERR; exit" 0 1 2 15
+
+if [ -x /usr/local/bin/pgpv ]
+then
+ pgpv 2>&1 > $STDOUT |tee $STDERR > /dev/tty
+else
+ pgp -f 2>&1 > $STDOUT |tee $STDERR > /dev/tty
+fi
+
+cat $STDERR | \
+grep -v '^No files specified. Using stdin.$' | \
+grep -v '^Opening file \"stdout\" type text.$' | \
+grep -v '^Opening file \"stdout\" type binary.$' | \
+grep -v '^Opening file \"/dev/null\" type text.$' | \
+grep -v '^Opening file \"/dev/null\" type binary.$' | \
+grep -v '^$'| \
+sed -e 's/^/| /'
+echo ""
+cat $STDOUT
diff --git a/chinese/pine4/files/pgpencrypt b/chinese/pine4/files/pgpencrypt
index b727b6693153..3baa1d2739eb 100644
--- a/chinese/pine4/files/pgpencrypt
+++ b/chinese/pine4/files/pgpencrypt
@@ -1,4 +1,11 @@
#!/bin/sh
# ---------- pgpencrypt ---------
# 21.03.96 Roland Rosenfeld <roland@spinnaker.rhein.de>
-pgp -feast $*
+# Wed 16 Sep 1998 23:46:43 WST Anthony Di Pietro <anthony@dino.omen.com.au>
+# Modified to work with both PGP v2 and PGP v5.
+if [ -x /usr/local/bin/pgpe ]
+then
+ pgpe -s -a -r $*
+else
+ pgp -feast $*
+fi
diff --git a/chinese/pine4/files/pgpsign b/chinese/pine4/files/pgpsign
index e56326cb1bf9..6eff395c89c0 100644
--- a/chinese/pine4/files/pgpsign
+++ b/chinese/pine4/files/pgpsign
@@ -1,4 +1,11 @@
#!/bin/sh
# ---------- pgpsign ---------
# 21.03.96 Roland Rosenfeld <roland@spinnaker.rhein.de>
-pgp -fast
+# Wed 16 Sep 1998 23:48:51 WST Anthony Di Pietro <anthony@dino.omen.com.au>
+# Modified to work with both PGP v2 and PGP v5.
+if [ -x /usr/local/bin/pgps ]
+then
+ pgps -a -t
+else
+ pgp -fast
+fi
diff --git a/chinese/pine4/files/pine.conf b/chinese/pine4/files/pine.conf
index 883488f1bb20..7aadc067d99f 100644
--- a/chinese/pine4/files/pine.conf
+++ b/chinese/pine4/files/pine.conf
@@ -23,7 +23,8 @@
# e.g. feature-list= select-without-confirm, signature-at-bottom
# Default condition for all of the features is no-.
feature-list=enable-8bit-esmtp-negotiation,
- enable-arrow-navigation
+ enable-arrow-navigation,
+ signature-at-bottom
# Reflects capabilities of the display you have. Default: US-ASCII.
# Typical alternatives include ISO-8859-x, (x is a number between 1 and 9).
diff --git a/chinese/pine4/pkg-comment b/chinese/pine4/pkg-comment
index a0b7777ce545..b3b6745d85c9 100644
--- a/chinese/pine4/pkg-comment
+++ b/chinese/pine4/pkg-comment
@@ -1 +1 @@
-Pine(tm) -- a Program for Internet News & Email with Chinese(BIG-5) support
+PINE(tm) -- a Program for Internet News & Email with Chinese(BIG-5) support
diff --git a/chinese/pine4/pkg-descr b/chinese/pine4/pkg-descr
index f4bf3564bb85..ce866efdaf88 100644
--- a/chinese/pine4/pkg-descr
+++ b/chinese/pine4/pkg-descr
@@ -8,9 +8,9 @@ Besides Pine this package includes the Pico editor, the Pilot file browser
and also the IMAPv4r1 daemon and POP2/POP3 servers (these daemons are not
built by default).
-An optional configuration file "pine.conf" can be put into /usr/local/etc
-to set system wide defaults. The format of this file is identical to the
-.pinerc file that is auto-generated by pine in your home directory.
+An optional set of configuration files can be put into /usr/local/etc
+to set system wide defaults. Have a look at the documentation installed
+in /usr/local/share/doc/pine/ for more details.
Also included in dot.pinerc.pgp.sample are example entries needed to
add to your .pinerc to activate the pgp add on scripts pgpdecode,
@@ -19,15 +19,15 @@ pgpencode, and pgpsign.
dot.pinerc.sample is an example configuration file can be put into your home
directory as .pinerc.
-Pine on WWW: http://www.cac.washington.edu/pine/
+Pine on WWW: http://www.washington.edu/pine/
-This version of zh-pine ports was based on pine4(pine 4.02) ports of FreeBSD,
+This version of zh-pine ports was based on pine4(pine 4.04) ports of FreeBSD,
which is maintained by:
- Adrian Penisoara (Ady)
pine@freebsd.ady.ro
-zh-pine 4.02 ports for FreeBSD is maintained by:
+zh-pine 4.04 ports for FreeBSD is maintained by:
- Liang Tai Hwa
avatar@www.mmlab.cse.yzu.edu.tw
diff --git a/chinese/pine4/pkg-plist b/chinese/pine4/pkg-plist
index e477632da870..34a1759d5615 100644
--- a/chinese/pine4/pkg-plist
+++ b/chinese/pine4/pkg-plist
@@ -6,9 +6,8 @@ bin/pilot
bin/pine
etc/dot.pinerc.pgp.sample
etc/dot.pinerc.sample
-lib/libpico.so.2.0
-@exec /sbin/ldconfig -m %B
-@unexec /sbin/ldconfig -R
+@exec %D/bin/pine -P %D/etc/pine.conf -conf >%D/etc/pine.conf.tmp
+@exec /bin/mv %D/etc/pine.conf.tmp %D/etc/pine.conf
share/doc/pine/brochure.txt
share/doc/pine/tech-notes.txt
share/doc/pine/tech-notes/background.html