aboutsummaryrefslogtreecommitdiffstats
path: root/chinese
diff options
context:
space:
mode:
Diffstat (limited to 'chinese')
-rw-r--r--chinese/pine4/Makefile8
-rw-r--r--chinese/pine4/distinfo2
-rw-r--r--chinese/pine4/files/patch-aj91
-rw-r--r--chinese/pine4/files/patch-ao69
-rw-r--r--chinese/pine4/files/patch-au14
-rw-r--r--chinese/pine4/files/patch-av572
-rw-r--r--chinese/pine4/files/patch-aw177
-rw-r--r--chinese/pine4/files/patch-ax989
-rw-r--r--chinese/pine4/files/patch-ay96
-rw-r--r--chinese/pine4/files/patch-ba194
-rw-r--r--chinese/pine4/files/patch-bc112
-rw-r--r--chinese/pine4/files/patch-bd220
-rw-r--r--chinese/pine4/files/patch-bf812
-rw-r--r--chinese/pine4/files/patch-bg52
-rw-r--r--chinese/pine4/files/patch-bi79
-rw-r--r--chinese/pine4/files/patch-bj56
-rw-r--r--chinese/pine4/files/patch-bk403
-rw-r--r--chinese/pine4/pkg-descr8
18 files changed, 2293 insertions, 1661 deletions
diff --git a/chinese/pine4/Makefile b/chinese/pine4/Makefile
index 0ac722357f64..ef8dfa4333fc 100644
--- a/chinese/pine4/Makefile
+++ b/chinese/pine4/Makefile
@@ -1,14 +1,14 @@
# New ports collection makefile for: pine
# http://www.washington.edu/pine/
-# Version required: 4.05
+# Version required: 4.10
# Date created: 15 July 1998
-# Whom: Liang Tai-hwa <avatar@www.mmlab.cse.yzu.edu.tw>
+# Whom: Tai-hwa Liang <avatar@www.mmlab.cse.yzu.edu.tw>
#
# $Id: Makefile,v 1.7 1998/08/24 01:24:38 steve Exp $
#
-DISTNAME= pine4.05
-PKGNAME= zh-pine-4.05
+DISTNAME= pine4.10
+PKGNAME= zh-pine-4.10
CATEGORIES= chinese mail news
MASTER_SITES= ftp://ftp.cac.washington.edu/pine/
diff --git a/chinese/pine4/distinfo b/chinese/pine4/distinfo
index c4f77574f639..6a1361333792 100644
--- a/chinese/pine4/distinfo
+++ b/chinese/pine4/distinfo
@@ -1 +1 @@
-MD5 (pine4.05.tar.gz) = 84dc37198853959188a551eb4ee8aa00
+MD5 (pine4.10.tar.gz) = f871e201b4070da1f060f35d3b8f2ccd
diff --git a/chinese/pine4/files/patch-aj b/chinese/pine4/files/patch-aj
index cc7d338da183..a79745846f3c 100644
--- a/chinese/pine4/files/patch-aj
+++ b/chinese/pine4/files/patch-aj
@@ -1,6 +1,6 @@
---- pico/composer.c.orig Wed Aug 19 10:37:25 1998
-+++ pico/composer.c Wed Aug 19 10:45:17 1998
-@@ -136,12 +136,12 @@
+--- pico/composer.c.orig Thu Dec 24 05:03:58 1998
++++ pico/composer.c Wed Feb 24 02:12:51 1999
+@@ -133,12 +133,12 @@
static KEYMENU menu_header[] = {
@@ -19,7 +19,7 @@
};
#define SEND_KEY 1
#define RICH_KEY 2
-@@ -245,7 +245,7 @@
+@@ -262,7 +262,7 @@
if(strlen(addrbuf) + strlen(buf) >= addrbuflen){
addrbuflen += NLINE * 4;
if(!(addrbuf = (char *)realloc(addrbuf, addrbuflen))){
@@ -28,7 +28,7 @@
(void *) addrbuflen);
return(ABORT);
}
-@@ -312,7 +312,7 @@
+@@ -329,7 +329,7 @@
* get first chunk of memory, and tie it to structure...
*/
if((curline = HALLOC()) == NULL){
@@ -37,7 +37,7 @@
return(FALSE);
}
longest = term.t_ncol - e->prlen - 1;
-@@ -694,7 +694,7 @@
+@@ -711,7 +711,7 @@
}
else{
(*term.t_beep)();
@@ -46,7 +46,7 @@
}
break;
-@@ -707,12 +707,12 @@
+@@ -724,12 +724,12 @@
err = NULL;
if(headents[ods.cur_e].is_attach){
if(SyncAttach() < 0){
@@ -58,10 +58,10 @@
headents[ods.cur_e].break_on_comma, 0) == -1)
- emlwrite("\007Format lines failed!", NULL);
+ emlwrite("\007版面整理失敗!", NULL);
- UpdateHeader();
+ UpdateHeader(0);
PaintHeader(COMPOSER_TOP_LINE, FALSE);
PaintBody(1);
-@@ -966,7 +966,7 @@
+@@ -998,7 +998,7 @@
if(FormatLines(headents[ods.cur_e].hd_text, buf,
term.t_ncol - headents[ods.cur_e].prlen,
headents[ods.cur_e].break_on_comma,0)==-1){
@@ -69,8 +69,8 @@
+ emlwrite("\007版面整理失敗!", NULL);
}
- UpdateHeader();
-@@ -1025,7 +1025,7 @@
+ UpdateHeader(0);
+@@ -1057,7 +1057,7 @@
if(FormatLines(ods.cur_l, bufp,
(term.t_ncol-headents[ods.cur_e].prlen),
headents[ods.cur_e].break_on_comma, 0) == -1){
@@ -79,7 +79,7 @@
NULL);
(*term.t_beep)();
break;
-@@ -1106,10 +1106,10 @@
+@@ -1193,10 +1193,10 @@
default : /* huh? */
bleep:
if(ch&CTRL)
@@ -92,7 +92,7 @@
case NODATA:
break;
-@@ -1149,14 +1149,14 @@
+@@ -1236,14 +1236,14 @@
if(gripe){
char xx[81];
@@ -111,7 +111,7 @@
strcat(xx, ".");
emlwrite(xx, NULL);
}
-@@ -1191,7 +1191,7 @@
+@@ -1278,7 +1278,7 @@
if(FormatLines(headents[ods.cur_e].hd_text, "",
term.t_ncol-headents[new_e].prlen,
headents[ods.cur_e].break_on_comma, 0) == -1)
@@ -120,7 +120,7 @@
}
} else if(headents[ods.cur_e].builder) { /* expand addresses */
int mangled = 0;
-@@ -1262,8 +1262,8 @@
+@@ -1349,8 +1349,8 @@
if(!(new_l = prev_sel_hline(&new_e, ods.cur_l))){ /* all the way up! */
ods.p_line = COMPOSER_TOP_LINE;
if(gripe)
@@ -131,7 +131,7 @@
return(0);
}
-@@ -1292,7 +1292,7 @@
+@@ -1379,7 +1379,7 @@
if(FormatLines(headents[ods.cur_e].hd_text, "",
term.t_ncol - headents[ods.cur_e].prlen,
headents[ods.cur_e].break_on_comma,0) == -1)
@@ -140,7 +140,7 @@
}
}
else if(headents[ods.cur_e].builder){
-@@ -1371,7 +1371,7 @@
+@@ -1458,7 +1458,7 @@
lp = lp->next;
}
else{
@@ -149,7 +149,7 @@
return(0);
}
}
-@@ -1385,12 +1385,12 @@
+@@ -1472,12 +1472,12 @@
/* validate the new attachment, and reformat if needed */
if(status = SyncAttach()){
if(status < 0)
@@ -164,7 +164,7 @@
return(0);
}
}
-@@ -1466,7 +1466,7 @@
+@@ -1553,7 +1553,7 @@
if (term.t_nrow < 6 && ch != NODATA){
(*term.t_beep)();
@@ -173,7 +173,7 @@
continue;
}
-@@ -1537,13 +1537,13 @@
+@@ -1624,13 +1624,13 @@
if(headents[ods.cur_e].only_file_chars
&& !fallowc((unsigned char) ch)){
/* no garbage in filenames */
@@ -189,7 +189,7 @@
continue;
}
-@@ -1689,7 +1689,7 @@
+@@ -1779,7 +1779,7 @@
headents[ods.cur_e].dirty = 1;
}
else
@@ -198,7 +198,7 @@
continue;
case (CTRL|'F') :
-@@ -1740,7 +1740,7 @@
+@@ -1830,7 +1830,7 @@
continue;
if(headents[ods.cur_e].is_attach && intag(strng, ods.p_off)){
@@ -207,7 +207,7 @@
continue;
}
-@@ -1754,7 +1754,7 @@
+@@ -1844,7 +1844,7 @@
}
if(headents[ods.cur_e].is_attach && intag(strng, ods.p_off-1)){
@@ -216,7 +216,7 @@
continue;
}
-@@ -1965,7 +1965,7 @@
+@@ -2141,7 +2141,7 @@
if(nlp == NULL){ /* no place to add below? */
if((lp = HALLOC()) == NULL){
@@ -225,7 +225,7 @@
free(buf);
return(-1);
}
-@@ -2000,7 +2000,7 @@
+@@ -2174,7 +2174,7 @@
if(strlen(buf) && !nlp){
if((lp = HALLOC()) == NULL){
@@ -234,7 +234,7 @@
free(buf);
return(-1);
}
-@@ -2286,14 +2286,14 @@
+@@ -2461,14 +2461,14 @@
if(level < 0 || !headents[level].name){
(*term.t_beep)();
@@ -251,9 +251,9 @@
+ (Pmaster->pine_flags & MDHDRONLY) ? "地址簿"
+ : "編輯器",
headents[level].name);
+ saved_state = save_pico_state();
(*Pmaster->helper)(headents[level].help, buf, 1);
- ttresize();
-@@ -2923,7 +2923,7 @@
+@@ -3110,7 +3110,7 @@
}
if((sbuf=(char *)malloc((unsigned) i)) == NULL){
@@ -262,7 +262,7 @@
return(-1);
}
-@@ -2980,7 +2980,7 @@
+@@ -3167,7 +3167,7 @@
if(!arg){
headarg = arg = (BUILDER_ARG *)malloc(sizeof(BUILDER_ARG));
if(!arg){
@@ -271,7 +271,7 @@
return(-1);
}
else{
-@@ -2993,7 +2993,7 @@
+@@ -3180,7 +3180,7 @@
else{
nextarg = (BUILDER_ARG *)malloc(sizeof(BUILDER_ARG));
if(!nextarg){
@@ -280,7 +280,7 @@
return(-1);
}
else{
-@@ -3009,7 +3009,7 @@
+@@ -3196,7 +3196,7 @@
if(!e->sticky){
line = e->hd_text;
if(!(arg->tptr=(char *)malloc(strlen(line->text) + 1))){
@@ -289,7 +289,7 @@
return(-1);
}
else
-@@ -3026,7 +3026,7 @@
+@@ -3213,7 +3213,7 @@
if(!headarg){
headarg = (BUILDER_ARG *)malloc(sizeof(BUILDER_ARG));
if(!headarg){
@@ -298,7 +298,7 @@
return(-1);
}
else{
-@@ -3335,7 +3335,7 @@
+@@ -3522,7 +3522,7 @@
if(ksize()){
if((bp = buf = (char *)malloc(ksize()+5)) == NULL){
@@ -307,7 +307,7 @@
return(FALSE);
}
}
-@@ -3369,7 +3369,7 @@
+@@ -3556,7 +3556,7 @@
work_buf_len = strlen(ods.cur_l->text) + buf_len;
work_buf = (char *) malloc((work_buf_len + 1) * sizeof(char));
if (work_buf == NULL) {
@@ -316,7 +316,7 @@
return(FALSE);
}
-@@ -3578,9 +3578,9 @@
+@@ -3765,9 +3765,9 @@
if(Pmaster && Pmaster->exit_label)
menu_header[SEND_KEY].label = Pmaster->exit_label;
else if(gmode & (MDVIEW | MDHDRONLY))
@@ -328,7 +328,7 @@
if(gmode & MDVIEW){
menu_header[CUT_KEY].name = NULL;
-@@ -3601,7 +3601,7 @@
+@@ -3788,14 +3788,14 @@
menu_header[RICH_KEY].name = NULL;
}
else{
@@ -337,7 +337,24 @@
menu_header[RICH_KEY].name = "^R";
}
-@@ -3680,7 +3680,7 @@
+ if(gmode & MDHDRONLY){
+ if(headents[ods.cur_e].fileedit){
+ menu_header[PONE_KEY].name = "^_";
+- menu_header[PONE_KEY].label = "Edit File";
++ menu_header[PONE_KEY].label = "編輯檔案";
+ }
+ else
+ menu_header[PONE_KEY].name = NULL;
+@@ -3804,7 +3804,7 @@
+ }
+ else{
+ menu_header[PONE_KEY].name = "^O";
+- menu_header[PONE_KEY].label = "Postpone";
++ menu_header[PONE_KEY].label = "暫緩";
+ KS_OSDATASET(&menu_header[PONE_KEY],KS_OSDATAGET(&headents[ods.cur_e]));
+
+ menu_header[ATT_KEY].name = "^J";
+@@ -3876,7 +3876,7 @@
*headents[i].realaddr = bufp;
}
else{
diff --git a/chinese/pine4/files/patch-ao b/chinese/pine4/files/patch-ao
index cb277b83db43..2d5dc2543248 100644
--- a/chinese/pine4/files/patch-ao
+++ b/chinese/pine4/files/patch-ao
@@ -1,5 +1,5 @@
---- pico/file.c.orig Fri Aug 28 07:02:07 1998
-+++ pico/file.c Tue Sep 22 18:45:49 1998
+--- pico/file.c.orig Sat Jan 30 03:59:32 1999
++++ pico/file.c Mon Feb 22 22:11:27 1999
@@ -63,17 +63,17 @@
return(s);
@@ -15,7 +15,7 @@
return(0);
}
- if((gmode&MDTREE) && !in_oper_tree(fname)){
+ if((gmode & MDTREE) && !in_oper_tree(fname)){
- emlwrite("Can't read file from outside of %s", opertree);
+ emlwrite("無法讀取 %s 以外的檔案", opertree);
return(0);
@@ -37,7 +37,7 @@
KS_OSDATASET(&menu_ins[last_menu], KS_NONE);
}
-@@ -159,43 +159,42 @@
+@@ -159,44 +159,43 @@
if(gmode & MDCMPLT){
menu_ins[++last_menu].name = msg ? "" : "TAB";
menu_ins[last_menu].key = (CTRL|'I');
@@ -51,13 +51,13 @@
- sprintf(prompt, "%s to insert from %s %s: ",
- msg ? "Number of message" : "File",
-- (msg || (gmode&MDCURDIR)) ? "current"
+ sprintf(prompt, "自%s%s插入的%s:",
-+ (msg || (gmode&MDCURDIR)) ? "目前的"
- : (gmode&MDTREE) ? opertree
-- : "home",
+ (msg || (gmode&MDCURDIR))
+- ? "current"
+- : ((gmode & MDTREE) || opertree[0]) ? opertree : "home",
- msg ? "folder" : "directory");
-+ : "家",
++ ? "目前的"
++ : ((gmode & MDTREE) || opertree[0]) ? opertree : "家",
+ msg ? "檔案匣" : "目錄", msg ? "信件編號" : "檔案");
s = mlreplyd(prompt, fname, NLINE, QDEFLT, msg ? NULL : menu_ins);
/* something to read and it was edited or the default accepted */
@@ -75,7 +75,8 @@
+ emlwrite("在限制模式中無法插入檔案",NULL);
}
else{
- if(gmode&MDTREE && !compresspath(opertree, fname, NLINE)){
+ if((gmode & MDTREE)
+ && !compresspath(opertree, fname, NLINE)){
emlwrite(
- "Can't insert file from outside of %s: too many ..'s",
+ "無法在 %s 以外的地方插入檔案:太多 .. 了",
@@ -84,13 +85,13 @@
else{
fixpath(fname, NLINE);
- if((gmode&MDTREE) && !in_oper_tree(fname))
+ 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 @@
+@@ -252,7 +251,7 @@
break;
case (CTRL|'T'):
if(msg){
@@ -99,7 +100,7 @@
}
else{
if(*fname && isdir(fname, NULL, NULL))
-@@ -264,7 +263,7 @@
+@@ -267,7 +266,7 @@
if((s = FileBrowse(dir, NLINE, fname, NLINE,
NULL, FB_READ)) == 1){
if(gmode&MDSCUR){
@@ -108,7 +109,7 @@
NULL);
sleep(2);
}
-@@ -305,7 +304,7 @@
+@@ -308,7 +307,7 @@
if(gmode&MDSCUR){
emlwrite(
@@ -117,15 +118,9 @@
NULL);
return(0);
}
-@@ -403,17 +402,17 @@
-
+@@ -408,20 +407,20 @@
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=ffropen(fname)) != FIOSUC){ /* Hard file open. */
if(s == FIOFNF) /* File not found. */
- emlwrite("New file", NULL);
+ emlwrite("新檔", NULL);
@@ -138,6 +133,16 @@
nline = 0L;
done = newline = 0;
while(!done)
+ if((s = ffgetline(line, NLINE, 1)) == FIOEOF){
+ curbp->b_flag &= ~(BFTEMP|BFCHG);
+ gotobob(FALSE, 1);
+- sprintf(line,"Read %d line%s",
+- nline, (nline > 1) ? "s" : "");
++ sprintf(line,"讀取第 %d 行",
++ nline);
+ emlwrite(line, NULL);
+ break;
+ }
@@ -479,14 +478,14 @@
fname[0] = '\0';
@@ -159,7 +164,7 @@
@@ -497,7 +496,7 @@
}
case TRUE:
- if(gmode&MDTREE && !compresspath(opertree, fname, NFILEN)){
+ if((gmode & MDTREE) && !compresspath(opertree, fname, NFILEN)){
- emlwrite("Can't write outside of %s: too many ..'s",
+ emlwrite("無法寫入 %s 以外的檔案:太多 .. 了",
opertree);
@@ -168,13 +173,13 @@
@@ -505,7 +504,7 @@
else{
fixpath(fname, NFILEN); /* fixup ~ in file name */
- if((gmode&MDTREE) && !in_oper_tree(fname)){
+ 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 @@
+@@ -589,12 +588,12 @@
strcpy(fname, shows);
}
else {
@@ -189,7 +194,7 @@
sleep(3);
}
refresh(FALSE, 1);
-@@ -629,7 +628,7 @@
+@@ -632,7 +631,7 @@
return(ABORT);
}
}
@@ -198,7 +203,7 @@
if ((s=writeout(fname, 0)) != -1) {
if(!(gmode&MDTOOL)){
-@@ -646,9 +645,9 @@
+@@ -649,9 +648,9 @@
}
if(s > 1)
@@ -210,7 +215,7 @@
}
return ((s == -1) ? FALSE : TRUE);
}
-@@ -674,12 +673,12 @@
+@@ -677,12 +676,12 @@
if ((curbp->b_flag&BFCHG) == 0) /* Return, no changes. */
return (TRUE);
if (curbp->b_fname[0] == 0) { /* Must have a name. */
@@ -225,7 +230,7 @@
if ((s=writeout(curbp->b_fname, 0)) != -1) {
curbp->b_flag &= ~BFCHG;
wp = wheadp; /* Update mode lines. */
-@@ -690,10 +689,10 @@
+@@ -693,10 +692,10 @@
wp = wp->w_wndp;
}
if(s > 1){
@@ -238,7 +243,7 @@
}
return (s);
}
-@@ -812,7 +811,7 @@
+@@ -815,7 +814,7 @@
curbp->b_flag &= ~BFTEMP; /* and are not temporary*/
curbp->b_linecnt = -1; /* must be recalculated */
@@ -247,7 +252,7 @@
done = newline = 0;
nline = 0L;
while(!done)
-@@ -822,7 +821,7 @@
+@@ -825,7 +824,7 @@
else
forwchar(FALSE, 1);
@@ -256,7 +261,7 @@
emlwrite(line, NULL);
break;
}
-@@ -910,7 +909,7 @@
+@@ -913,7 +912,7 @@
strcat(fn, S_FILESEP);
}
else{
diff --git a/chinese/pine4/files/patch-au b/chinese/pine4/files/patch-au
index 04aa57854f0f..b827f7c0b209 100644
--- a/chinese/pine4/files/patch-au
+++ b/chinese/pine4/files/patch-au
@@ -1,5 +1,5 @@
---- 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
+--- pine/osdep/os-bsf.h.orig Thu Oct 8 05:51:40 1998
++++ pine/osdep/os-bsf.h Mon Feb 22 22:21:57 1999
@@ -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
@@ -7,14 +7,14 @@
- /usr/local/lib/pine.conf.fixed file.
+ @@PREFIX@@/etc/pine.conf.fixed file.
----*/
- /* #define NEVER_ALLOW_CHANGING_FROM /* probably not needed */
+ /* #define NEVER_ALLOW_CHANGING_FROM */
@@ -87,7 +87,7 @@
NOTE: You'll also have to make sure the appropriate osdep/postreap.*
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 */
++/* #define BACKGROUND_POST /* comment out to disable posting from child */
@@ -33,8 +33,8 @@
/*----------------------------------------------------------------------
If no nntp-servers are defined, this program will be used to post news.
----*/
--#define SENDNEWS "/usr/local/news/inews -h" /* news posting cmd */
-+#define SENDNEWS "/usr/local/news/lib/inews -h" /* For NN inews */
+-#define SENDNEWS "/usr/local/news/inews -h"
++#define SENDNEWS "/usr/local/news/inews -h" /* For NN inews */
+/*#define SENDNEWS "/usr/local/bin/inews -h" /* For INN inews */
+/*#define SENDNEWS "/usr/local/bin/inews -h" /* For Cnews inews */
diff --git a/chinese/pine4/files/patch-av b/chinese/pine4/files/patch-av
index c1820598b2f3..b336511f00d7 100644
--- a/chinese/pine4/files/patch-av
+++ b/chinese/pine4/files/patch-av
@@ -1,7 +1,7 @@
---- pine/addrbook.c.orig Thu Jul 9 05:35:32 1998
-+++ pine/addrbook.c Tue Aug 4 12:42:15 1998
-@@ -126,13 +126,13 @@
- int addr_scroll_callback PROTO((int, long));
+--- pine/addrbook.c.orig Tue Feb 23 16:21:22 1999
++++ pine/addrbook.c Tue Feb 23 18:02:45 1999
+@@ -129,14 +129,14 @@
+ char *pcpine_help_addrbook PROTO((char *));
#endif
-#define CLICKHERE "[ Address List ]"
@@ -11,6 +11,7 @@
-#define ADD_GLOBAL " [ Move here to add a Global Address Book ]"
-#define DISTLIST "DISTRIBUTION LIST:"
-#define NOABOOKS "[ No Address Book Configured ]"
+-#define CLICKHERECMB "[ Select Here to See Expanded List ]"
+#define CLICKHERE "[ 地址列表 ]"
+#define EMPTY "[ 沒有任何項目 ]"
+#define ZOOM_EMPTY "[ 本列表中沒有任何已被選取的項目 ]"
@@ -18,10 +19,11 @@
+#define ADD_GLOBAL " [ 移到這裡加入一個整體的地址簿 ]"
+#define DISTLIST "分類列表:"
+#define NOABOOKS "[ 沒有已經設定好的地址簿 ]"
++#define CLICKHERECMB "[ 選這裡以檢視展開後的列表 ]"
/*
-@@ -283,7 +283,7 @@
+@@ -287,7 +287,7 @@
dprint(2, (debugfile, "parse_format: ignoring unrecognized word \"%s\" in address-book-formats\n", p));
q_status_message1(SM_ORDER, warnings++==0 ? 1 : 0, 4,
@@ -30,16 +32,16 @@
/* put back space */
if(r)
*r = SPACE;
-@@ -353,7 +353,7 @@
+@@ -357,7 +357,7 @@
if(column == 0){
q_status_message(SM_ORDER, 0, 4,
- "address-book-formats has no recognizable words, using default format");
-+ "由於在地址簿格式中找不到足以辨識的字, 因此使用預設模式");
++ "由於在地址簿格式中找不到足以辨識的字,因此使用預設模式");
goto assign_default;
}
-@@ -575,7 +575,7 @@
+@@ -599,7 +599,7 @@
}
else{
q_status_message(SM_ORDER | SM_DING, 5, 10,
@@ -48,7 +50,7 @@
dprint(1,
(debugfile,
"Bug in addrbook (null dlc in dlist(%ld), not supposed to happen\n",
-@@ -1676,14 +1676,14 @@
+@@ -1705,14 +1705,14 @@
mailcap_free(); /* free resources we won't be using for a while */
if(setjmp(addrbook_changed_unexpectedly)){
@@ -64,8 +66,8 @@
+ (void)addr_book(AddrBookScreen, "地址簿", NULL);
end_adrbks();
- ab_nesting_level = 0;
-@@ -1701,14 +1701,14 @@
+ pine_state->prev_screen = addr_book_screen;
+@@ -1728,14 +1728,14 @@
mailcap_free(); /* free resources we won't be using for a while */
if(setjmp(addrbook_changed_unexpectedly)){
@@ -81,8 +83,26 @@
+ (void)addr_book(AddrBookConfig, "設定地址簿", NULL);
end_adrbks();
- ab_nesting_level = 0;
-@@ -1737,7 +1737,7 @@
+ pine_state->prev_screen = addr_book_screen;
+@@ -1759,7 +1759,7 @@
+ save_nesting_level = cpyint(ab_nesting_level);
+ memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf));
+ if(setjmp(addrbook_changed_unexpectedly)){
+- q_status_message(SM_ORDER, 5, 10, "Resetting address book...");
++ q_status_message(SM_ORDER, 5, 10, "正在重設地址簿...");
+ dprint(1,
+ (debugfile, "RESETTING address book... addr_book_compose_oneaddr!\n"));
+ addrbook_reset();
+@@ -1768,7 +1768,7 @@
+
+ ab_nesting_level++;
+
+- p = addr_book(SelectAddr, "SELECT ADDRESS", NULL);
++ p = addr_book(SelectAddr, "選擇地址", NULL);
+
+ if(ab_nesting_level <= 1)
+ end_adrbks();
+@@ -1803,7 +1803,7 @@
save_nesting_level = cpyint(ab_nesting_level);
memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf));
if(setjmp(addrbook_changed_unexpectedly)){
@@ -91,16 +111,16 @@
dprint(1,
(debugfile, "RESETTING address book... addr_book_compose!\n"));
addrbook_reset();
-@@ -1746,7 +1746,7 @@
+@@ -1812,7 +1812,7 @@
ab_nesting_level++;
- p = addr_book(SelectNicksCom, "COMPOSER: SELECT ADDRESS", error);
-+ p = addr_book(SelectNicksCom, "編輯器:選擇地址", error);
++ p = addr_book(SelectNicksCom, "編輯器:選擇列表", error);
if(ab_nesting_level <= 1)
end_adrbks();
-@@ -1781,7 +1781,7 @@
+@@ -1847,7 +1847,7 @@
save_nesting_level = cpyint(ab_nesting_level);
memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf));
if(setjmp(addrbook_changed_unexpectedly)){
@@ -109,7 +129,7 @@
dprint(1,
(debugfile, "RESETTING address book... addr_book_compose_lcc!\n"));
addrbook_reset();
-@@ -1794,7 +1794,7 @@
+@@ -1860,7 +1860,7 @@
* We used to use SelectAddrLccCom here but decided it wasn't necessary
* to restrict the selection to a list.
*/
@@ -118,7 +138,7 @@
if(ab_nesting_level <= 1)
end_adrbks();
-@@ -1829,7 +1829,7 @@
+@@ -1895,7 +1895,7 @@
save_nesting_level = cpyint(ab_nesting_level);
memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf));
if(setjmp(addrbook_changed_unexpectedly)){
@@ -127,7 +147,7 @@
dprint(1,
(debugfile, "RESETTING address book... addr_book_change_list!\n"));
addrbook_reset();
-@@ -1838,7 +1838,7 @@
+@@ -1904,7 +1904,7 @@
ab_nesting_level++;
@@ -136,7 +156,7 @@
error);
if(ab_nesting_level <= 1)
-@@ -1871,7 +1871,7 @@
+@@ -1937,7 +1937,7 @@
save_nesting_level = cpyint(ab_nesting_level);
memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf));
if(setjmp(addrbook_changed_unexpectedly)){
@@ -145,7 +165,16 @@
dprint(1,
(debugfile, "RESETTING address book...addr_book_bounce!\n"));
addrbook_reset();
-@@ -1912,7 +1912,7 @@
+@@ -1946,7 +1946,7 @@
+
+ ab_nesting_level++;
+
+- p = addr_book(SelectManyNicks, "SELECT ADDRESSES", NULL);
++ p = addr_book(SelectManyNicks, "選擇地址", NULL);
+
+ if(ab_nesting_level <= 1)
+ end_adrbks();
+@@ -1978,7 +1978,7 @@
save_nesting_level = cpyint(ab_nesting_level);
memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf));
if(setjmp(addrbook_changed_unexpectedly)){
@@ -154,7 +183,16 @@
dprint(1,
(debugfile, "RESETTING address book...addr_book_takeaddr!\n"));
addrbook_reset();
-@@ -1957,7 +1957,7 @@
+@@ -1987,7 +1987,7 @@
+
+ ab_nesting_level++;
+
+- p = addr_book(SelectNickTake, "TAKEADDR: SELECT NICKNAME", NULL);
++ p = addr_book(SelectNickTake, "選擇地址:選擇暱稱", NULL);
+
+ if(ab_nesting_level <= 1)
+ end_adrbks();
+@@ -2023,7 +2023,7 @@
save_nesting_level = cpyint(ab_nesting_level);
memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf));
if(setjmp(addrbook_changed_unexpectedly)){
@@ -163,7 +201,16 @@
dprint(1,
(debugfile, "RESETTING address book...addr_book_nick_for_edit!\n"));
addrbook_reset();
-@@ -2005,7 +2005,7 @@
+@@ -2038,7 +2038,7 @@
+ * and this seemed to be the easiest way to accomplish that.
+ */
+ as.n_serv = 0;
+- p = addr_book(SelectNickCom, "SELECT NICKNAME", error);
++ p = addr_book(SelectNickCom, "選擇暱稱", error);
+ as.n_serv = save_n_serv;
+
+ if(ab_nesting_level <= 1)
+@@ -2071,7 +2071,7 @@
save_nesting_level = cpyint(ab_nesting_level);
memcpy(save_jmp_buf, addrbook_changed_unexpectedly, sizeof(jmp_buf));
if(setjmp(addrbook_changed_unexpectedly)){
@@ -172,18 +219,27 @@
dprint(1,
(debugfile, "RESETTING address book...addr_book_selnick!\n"));
addrbook_reset();
-@@ -2037,8 +2037,8 @@
+@@ -2080,7 +2080,7 @@
+
+ ab_nesting_level++;
+
+- p = addr_book(SelectNick, "SELECT NICKNAME", NULL);
++ p = addr_book(SelectNick, "選擇暱稱", NULL);
+
+ if(ab_nesting_level <= 1)
+ end_adrbks();
+@@ -2103,8 +2103,8 @@
NULL_MENU,
NULL_MENU,
NULL_MENU,
- {"P", "PrevEntry", {MC_PREVITEM,1,{'p'}}, KS_NONE},
- {"N", "NextEntry", {MC_NEXTITEM,1,{'n'}}, KS_NONE},
+ {"P", "前一個項目", {MC_PREVITEM,1,{'p'}}, KS_NONE},
-+ {"N", "下一個項目", {MC_NEXTITEM,1,{'n'}}, KS_NONE},
++ {"N", "次一個項目", {MC_NEXTITEM,1,{'n'}}, KS_NONE},
PREVPAGE_MENU,
NEXTPAGE_MENU,
NULL_MENU,
-@@ -2061,10 +2061,10 @@
+@@ -2127,10 +2127,10 @@
HELP_MENU,
OTHER_MENU,
@@ -198,7 +254,7 @@
NULL_MENU,
NULL_MENU,
NULL_MENU,
-@@ -2193,7 +2193,7 @@
+@@ -2259,7 +2259,7 @@
if(!init_addrbooks(HalfOpen, 1, !as.config, !are_selecting)){
if(are_selecting){
q_status_message(SM_ORDER | SM_DING, 0, 4,
@@ -207,7 +263,7 @@
display_message(c);
sleep(2);
return NULL;
-@@ -2201,7 +2201,7 @@
+@@ -2267,7 +2267,7 @@
else if(!as.config){
ps->next_screen = main_menu_screen;
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -216,7 +272,7 @@
ps->mangled_screen = 1;
return NULL;
}
-@@ -2211,7 +2211,7 @@
+@@ -2277,7 +2277,7 @@
readonly_warning(NO_DING, NULL);
else if(as.adrbks[0].access == NoAccess)
q_status_message(SM_ORDER, 0, 4,
@@ -225,18 +281,21 @@
}
erase_checks();
-@@ -2342,8 +2342,8 @@
- char buf[80], *bp;
+@@ -2422,10 +2422,10 @@
if(style == AddrBookScreen){
-- sprintf(buf, "ADDRESS BOOK%s%s%s",
-- (!as.opened) ? " LIST" :
-+ sprintf(buf, "地址簿%s%s%s",
-+ (!as.opened) ? "列表" :
- (as.n_addrbk > 1) ? " <" : "",
- (as.opened && as.n_addrbk > 1 && pab->nickname)
- ? pab->nickname : "",
-@@ -2418,7 +2418,7 @@
+ if(F_ON(F_CMBND_ABOOK_DISP,ps_global))
+- sprintf(buf, "ADDRESS BOOK%s", (as.n_addrbk > 1) ? "S" : "");
++ sprintf(buf, "地址簿");
+ else
+- sprintf(buf, "ADDRESS BOOK%s%s%s",
+- is_custom_title ? " <" : cur_is_open() ? "" : " LIST",
++ sprintf(buf, "地址簿%s%s%s",
++ is_custom_title ? " <" : cur_is_open() ? "" : "列表",
+ is_custom_title ? pab->nickname : "",
+ is_custom_title ? ">" : "");
+
+@@ -2490,7 +2490,7 @@
km->how_many = 1;
clrbitn(OTHER_KEY, bitmap);
@@ -245,7 +304,7 @@
KS_OSDATASET(&km->keys[TWO_KEY], KS_EXITMODE);
/*
-@@ -2431,22 +2431,22 @@
+@@ -2503,22 +2503,22 @@
clrbitn(THREE_KEY, bitmap);
menu_init_binding(km, 'A', MC_ADDABOOK, "A",
add_is_global(as.top_ent+as.cur_row)
@@ -275,7 +334,7 @@
ADD_KEY);
}
}
-@@ -2459,7 +2459,7 @@
+@@ -2531,7 +2531,7 @@
* The OTHER_KEY is used as the Exit key in selection mode.
* This is because the TWO_KEY is being used for < actions.
*/
@@ -284,25 +343,47 @@
OTHER_KEY);
KS_OSDATASET(&km->keys[OTHER_KEY], KS_EXITMODE);
-@@ -2474,7 +2474,7 @@
- cmd = MC_POPUP;
-
- menu_init_binding(km, '<', cmd, "<",
-- cmd == MC_POPUP ? "AddbkList" : "Unexpand",
-+ cmd == MC_POPUP ? "地址簿列表" : "復原展開",
- TWO_KEY);
- menu_add_binding(km, ',', cmd);
- if(F_ON(F_ARROW_NAV,ps))
-@@ -2489,7 +2489,7 @@
+@@ -2551,8 +2551,8 @@
+ clrbitn(TWO_KEY, bitmap);
+ else{
+ menu_init_binding(km, '<', cmd, "<",
+- cmd == MC_POPUP ? "AddressBkList"
+- : "Unexpand",
++ cmd == MC_POPUP ? "地址簿列表"
++ : "復原展開",
+ TWO_KEY);
+ menu_add_binding(km, ',', cmd);
+ if(F_ON(F_ARROW_NAV,ps))
+@@ -2563,16 +2563,16 @@
+ if(checkedn){
+ if(entry_is_clickable_title(as.top_ent+as.cur_row)){
+ menu_init_binding(km, 'S', MC_CHOICE, "S",
+- "Select", TWO_KEY);
++ "選擇", TWO_KEY);
+ }
+ else{
+ menu_init_binding(km, 'S', MC_CHOICE, "S",
+- "[Select]", TWO_KEY);
++ "[選擇]", TWO_KEY);
+ def_key = TWO_KEY;
+ }
+ }
+ else
+- menu_init_binding(km, 'S', MC_CHOICE, "S", "Select",
++ menu_init_binding(km, 'S', MC_CHOICE, "S", "選擇",
+ TWO_KEY);
+ }
+ else
+@@ -2584,7 +2584,7 @@
* key becomes the ViewAbook key.
*/
- if(entry_is_askserver(as.top_ent+as.cur_row)){
+ if(entry_is_askserver(as.top_ent+as.cur_row) && !as.checkboxes){
- menu_init_binding(km, '>', MC_QUERY_SERV, ">", "[Search]",
+ menu_init_binding(km, '>', MC_QUERY_SERV, ">", "[搜尋]",
THREE_KEY);
menu_add_binding(km, 's', MC_QUERY_SERV);
menu_add_binding(km, '.', MC_QUERY_SERV);
-@@ -2497,7 +2497,7 @@
+@@ -2592,7 +2592,7 @@
menu_add_binding(km, KEY_RIGHT, MC_QUERY_SERV);
}
else if(entry_is_clickable_title(as.top_ent+as.cur_row)){
@@ -311,16 +392,16 @@
THREE_KEY);
menu_add_binding(km, 'v', MC_OPENABOOK);
menu_add_binding(km, '.', MC_OPENABOOK);
-@@ -2505,7 +2505,7 @@
+@@ -2600,7 +2600,7 @@
menu_add_binding(km, KEY_RIGHT, MC_OPENABOOK);
}
- else if(as.opened){
+ else if(cur_is_open()){
- menu_init_binding(km, 'S', MC_CHOICE, "S", "[Select]",
+ menu_init_binding(km, 'S', MC_CHOICE, "S", "[選取]",
THREE_KEY);
}
else
-@@ -2518,7 +2518,7 @@
+@@ -2613,7 +2613,7 @@
*/
if(entry_is_clickable(as.top_ent+as.cur_row) &&
!entry_is_clickable_title(as.top_ent+as.cur_row)){
@@ -329,22 +410,22 @@
SENDTO_KEY);
menu_add_binding(km, '.', MC_EXPAND);
if(F_ON(F_ARROW_NAV,ps))
-@@ -2528,12 +2528,12 @@
+@@ -2623,12 +2623,12 @@
clrbitn(SENDTO_KEY, bitmap);
- if(as.opened && as.checkboxes){
+ if(cur_is_open() && as.checkboxes){
- menu_init_binding(km, 'X', MC_TOGGLE, "X", "Set/Unset",
+ menu_init_binding(km, 'X', MC_TOGGLE, "X", "設定/解除設定",
DELETE_KEY);
}
- else if(as.opened && listmode_ok){
+ else if(cur_is_open() && listmode_ok){
- menu_init_binding(km, 'L', MC_LISTMODE, "L", "ListMode",
+ menu_init_binding(km, 'L', MC_LISTMODE, "L", "列表模式",
DELETE_KEY);
}
else
-@@ -2550,7 +2550,7 @@
+@@ -2645,7 +2645,7 @@
* reasonable function call.
*/
km->keys[OTHER_KEY].name = "O";
@@ -353,20 +434,53 @@
km->keys[OTHER_KEY].bind.cmd = MC_OTHER;
km->keys[OTHER_KEY].bind.ch[0] = 'O';
km->keys[OTHER_KEY].bind.nch = 1;
-@@ -2569,18 +2569,18 @@
+@@ -2664,13 +2664,13 @@
if(F_OFF(F_EXPANDED_DISTLISTS,ps) &&
entry_is_listent(as.top_ent+as.cur_row)){
cmd = MC_UNEXPAND;
- menu_init_binding(km, '<', cmd, "<", "Unexpand",
+ menu_init_binding(km, '<', cmd, "<", "復原展開",
TWO_KEY);
+ KS_OSDATASET(&km->keys[TWO_KEY], KS_NONE);
}
else{
+ cmd = MC_MAIN;
+- menu_init_binding(km, 'M', cmd, "<", "Main Menu",
++ menu_init_binding(km, 'M', cmd, "<", "主選單",
+ TWO_KEY);
+ KS_OSDATASET(&km->keys[TWO_KEY], KS_MAINMENU);
+ }
+@@ -2679,11 +2679,11 @@
+ /*
+ * Add or delete entries from this address book.
+ */
+- menu_init_binding(km, '@', MC_ADD, "@", "AddNew",
++ menu_init_binding(km, '@', MC_ADD, "@", "新增",
+ ADD_KEY);
+- menu_init_binding(km, 'D', MC_DELETE, "D", "Delete",
++ menu_init_binding(km, 'D', MC_DELETE, "D", "刪除",
+ DELETE_KEY);
+- menu_init_binding(km, 'C', MC_COMPOSE, "C", "ComposeTo",
++ menu_init_binding(km, 'C', MC_COMPOSE, "C", "編修",
+ SENDTO_KEY);
+ KS_OSDATASET(&km->keys[SENDTO_KEY], KS_COMPOSER);
+ }
+@@ -2709,7 +2709,7 @@
+ if(F_OFF(F_EXPANDED_DISTLISTS,ps) &&
+ entry_is_listent(as.top_ent+as.cur_row)){
+ cmd = MC_UNEXPAND;
+- menu_init_binding(km, '<', cmd, "<", "Unexpand",
++ menu_init_binding(km, '<', cmd, "<", "復原展開",
+ TWO_KEY);
+ KS_OSDATASET(&km->keys[TWO_KEY], KS_NONE);
+ }
+@@ -2717,12 +2717,12 @@
if(as.n_addrbk > 1 || as.n_serv){
cmd = MC_POPUP;
-- menu_init_binding(km, '<', cmd, "<", "AddbkList",
-+ menu_init_binding(km, '<', cmd, "<", "地址簿列表",
- TWO_KEY);
+ menu_init_binding(km, '<', cmd, "<",
+- "AddressBkList", TWO_KEY);
++ "地址簿列表", TWO_KEY);
+ KS_OSDATASET(&km->keys[TWO_KEY], KS_NONE);
}
else{
cmd = MC_MAIN;
@@ -375,7 +489,7 @@
TWO_KEY);
KS_OSDATASET(&km->keys[TWO_KEY], KS_MAINMENU);
}
-@@ -2592,9 +2592,9 @@
+@@ -2732,9 +2732,9 @@
/*
* Add or delete entries from this address book.
*/
@@ -387,7 +501,7 @@
DELETE_KEY);
}
else{
-@@ -2604,14 +2604,14 @@
+@@ -2744,14 +2744,14 @@
/* Find someplace to put Main Menu command */
if(cmd == MC_POPUP){
@@ -404,7 +518,7 @@
SENDTO_KEY);
KS_OSDATASET(&km->keys[SENDTO_KEY], KS_COMPOSER);
}
-@@ -2621,7 +2621,7 @@
+@@ -2761,7 +2761,7 @@
* non-selection mode.
*/
cmd = MC_MAIN;
@@ -413,76 +527,39 @@
TWO_KEY);
KS_OSDATASET(&km->keys[TWO_KEY], KS_MAINMENU);
-@@ -2661,10 +2661,10 @@
+@@ -2800,10 +2800,10 @@
cmd = MC_VIEW_ENTRY;
menu_init_binding(km, '>', cmd, ">",
- cmd == MC_EXPAND ? "[Expand]" :
- cmd == MC_QUERY_SERV ? "[Search]" :
-- as.opened ? "[View/Update]"
-- : "[ViewAbook]",
+- cur_is_open() ? "[View/Update]"
+- : "[ViewAbook]",
+ cmd == MC_EXPAND ? "[展開]" :
+ cmd == MC_QUERY_SERV ? "[搜尋]" :
-+ as.opened ? "[檢視/更新]"
-+ : "[檢視地址簿]",
++ cur_is_open() ? "[檢視/更新]"
++ : "[檢視地址簿]",
THREE_KEY);
if(cmd == MC_QUERY_SERV)
-@@ -2777,34 +2777,34 @@
+@@ -2941,13 +2941,13 @@
}
- if(as.config){
-- helper(h_abook_config, "HELP ON CONFIGURING ADDRESS BOOKS",
-+ helper(h_abook_config, "設定地址簿的輔助說明",
- HLPD_NONE);
- }
- else if(are_selecting){
- if(as.opened){
- /* single nick select from TakeAddr */
- if(style == SelectNickTake)
-- helper(h_abook_select_nicks_take, "HELP ON ADDRESS BOOK",
-+ helper(h_abook_select_nicks_take, "地址簿的輔助說明",
- HLPD_SIMPLE | HLPD_NEWWIN);
- /* single nick select from addrbook */
- else if(selecting_one_nick)
-- helper(h_abook_select_nick, "HELP ON ADDRESS BOOK",
-+ helper(h_abook_select_nick, "地址簿的輔助說明",
- HLPD_SIMPLE | HLPD_NEWWIN);
- /* can use X checkbox command now */
- else if(as.checkboxes)
-- helper(h_abook_select_checks, "HELP ON ADDRESS BOOK",
-+ helper(h_abook_select_checks, "地址簿的輔助說明",
- HLPD_SIMPLE | HLPD_NEWWIN);
- /* ListMode command available */
- else if(listmode_ok)
-- helper(h_abook_select_listmode, "HELP ON ADDRESS BOOK",
-+ helper(h_abook_select_listmode, "地址簿的輔助說明",
- HLPD_SIMPLE | HLPD_NEWWIN);
- /* no ListMode command available */
- else
-- helper(h_abook_select_addr, "HELP ON ADDRESS BOOK",
-+ helper(h_abook_select_addr, "地址簿的輔助說明",
- HLPD_SIMPLE | HLPD_NEWWIN);
- }
- else{
-- helper(h_abook_select_top, "HELP ON ADDRESS BOOK",
-+ helper(h_abook_select_top, "地址簿的輔助說明",
- HLPD_SIMPLE | HLPD_NEWWIN);
- }
- }
-@@ -2812,9 +2812,9 @@
- else{
- ps->next_screen = SCREEN_FUN_NULL;
- if(as.opened)
-- helper(h_abook_opened, "HELP ON ADDRESS BOOK", HLPD_NONE);
-+ helper(h_abook_opened, "地址簿的輔助說明", HLPD_NONE);
- else
-- helper(h_abook_top, "HELP ON ADDRESS BOOK", HLPD_NONE);
-+ helper(h_abook_top, "地址簿的輔助說明", HLPD_NONE);
- }
+ if(as.config)
+- helper(gAbookHelp, "HELP ON CONFIGURING ADDRESS BOOKS",
++ helper(gAbookHelp, "設定地址簿的輔助說明",
+ HLPD_NONE);
+ else if(are_selecting)
+- helper(gAbookHelp, "HELP ON ADDRESS BOOK",
++ helper(gAbookHelp, "地址簿的輔助說明",
+ HLPD_SIMPLE | HLPD_NEWWIN);
+ else /* general maintenance screen */
+- helper(gAbookHelp, "HELP ON ADDRESS BOOK", HLPD_NONE);
++ helper(gAbookHelp, "地址簿的輔助說明", HLPD_NONE);
/*
-@@ -2887,7 +2887,7 @@
+ * Helper() may have a Main Menu key. If user types that
+@@ -3021,7 +3021,7 @@
}
else
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -491,7 +568,7 @@
break;
-@@ -2923,7 +2923,7 @@
+@@ -3057,7 +3057,7 @@
}
else
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -500,7 +577,7 @@
break;
-@@ -2984,11 +2984,11 @@
+@@ -3128,11 +3128,11 @@
}
else if(dlc_to_flush->type == DlcTitleNoPerm)
q_status_message(SM_ORDER, 0, 4,
@@ -514,7 +591,7 @@
break;
-@@ -3034,7 +3034,7 @@
+@@ -3178,7 +3178,7 @@
}
else
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -523,7 +600,7 @@
break;
-@@ -3046,7 +3046,7 @@
+@@ -3190,7 +3190,7 @@
/* Select an entry to mail to or a nickname to add to */
if(!any_addrs_avail(as.top_ent+as.cur_row)){
q_status_message(SM_ORDER | SM_DING, 0, 4,
@@ -532,7 +609,7 @@
break;
}
-@@ -3068,7 +3068,7 @@
+@@ -3212,7 +3212,7 @@
}
else if(as.checkboxes && checkedn <= 0){
q_status_message(SM_ORDER, 0, 1,
@@ -541,7 +618,7 @@
break;
}
else if(as.checkboxes){
-@@ -3152,7 +3152,7 @@
+@@ -3296,7 +3296,7 @@
if(selecting_mult_nicks){
if(dl->type != ListHead && style == SelectAddrLccCom){
q_status_message(SM_ORDER, 0, 4,
@@ -550,7 +627,7 @@
break;
}
else{
-@@ -3214,16 +3214,16 @@
+@@ -3358,16 +3358,16 @@
if(entry_is_clickable(as.top_ent+as.cur_row))
clickable_warning(as.top_ent+as.cur_row);
else if(entry_is_askserver(as.top_ent+as.cur_row))
@@ -570,7 +647,7 @@
break;
-@@ -3247,7 +3247,7 @@
+@@ -3391,7 +3391,7 @@
if(adrbk_check_all_validity_now()){
if(resync_screen(pab, style, checkedn)){
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -579,7 +656,7 @@
ps->mangled_screen = 1;
break;
}
-@@ -3262,7 +3262,7 @@
+@@ -3406,7 +3406,7 @@
dprint(9, (debugfile,
"Calling edit_entry to add entry manually\n"));
edit_entry(pab->address_book, (AdrBk_Entry *)NULL, NO_NEXT,
@@ -588,7 +665,7 @@
/*
* Warped means we got plopped down somewhere in the display
-@@ -3406,7 +3406,7 @@
+@@ -3551,7 +3551,7 @@
}
else{
q_status_message1(SM_ORDER|SM_DING, 0, 4,
@@ -597,7 +674,7 @@
if(nick)
fs_give((void **)&nick);
if(file)
-@@ -3442,7 +3442,7 @@
+@@ -3586,7 +3586,7 @@
ps->mangled_screen = 1;
}
else
@@ -606,7 +683,7 @@
break;
-@@ -3450,7 +3450,7 @@
+@@ -3594,7 +3594,7 @@
/*---------- Delete an address book -------------------*/
case MC_DELABOOK:
if(as.n_addrbk == 0){
@@ -615,7 +692,7 @@
break;
}
-@@ -3505,7 +3505,7 @@
+@@ -3665,7 +3665,7 @@
start_disp = 0;
ps->mangled_body = 1;
ps->mangled_footer = 1;
@@ -624,7 +701,7 @@
}
else{
if(err){
-@@ -3523,7 +3523,7 @@
+@@ -3683,7 +3683,7 @@
case MC_SHUFFLE:
if(entry_is_addkey(as.top_ent+as.cur_row)){
q_status_message(SM_ORDER, 0, 4,
@@ -633,7 +710,7 @@
break;
}
-@@ -3596,8 +3596,8 @@
+@@ -3756,8 +3756,8 @@
q_status_message(SM_ORDER, 0, 3,
msg ? msg :
@@ -644,25 +721,25 @@
if(ret < 0)
dprint(5, (debugfile, "addrbook shuffle failed: %s\n",
msg ? msg : "?"));
-@@ -3615,7 +3615,7 @@
- case MC_PREVITEM:
- r = prev_selectable_line(as.cur_row+as.top_ent, &new_line);
- if(r == 0){
-- q_status_message(SM_INFO, 0, 1, "Already on first line.");
-+ q_status_message(SM_INFO, 0, 1, "已經在第一行了。");
- break;
- }
+@@ -3784,7 +3784,7 @@
-@@ -3654,7 +3654,7 @@
- case MC_NEXTITEM:
- r = next_selectable_line(as.cur_row+as.top_ent, &new_line);
- if(r == 0){
-- q_status_message(SM_INFO, 0, 1, "Already on last line.");
-+ q_status_message(SM_INFO, 0, 1, "已經在最後一行了。");
- break;
- }
+ if(new_top_ent == as.top_ent ||
+ (as.cur_row + (as.top_ent-new_top_ent) > as.l_p_page - 1)){
+- q_status_message(SM_INFO, 0, 1, "Already on first line.");
++ q_status_message(SM_INFO, 0, 1, "已經在第一行了。");
+ }
+ else{
+ as.cur_row += (as.top_ent - new_top_ent);
+@@ -3842,7 +3842,7 @@
-@@ -3733,7 +3733,7 @@
+ if(new_end_line - as.top_ent <= as.l_p_page - 1 ||
+ as.cur_row - (new_end_line-as.top_ent-(as.l_p_page-1)) < 0){
+- q_status_message(SM_INFO, 0, 1, "Already on last line.");
++ q_status_message(SM_INFO, 0, 1, "已經在最後一行了。");
+ }
+ else{
+ as.cur_row -= (new_end_line-as.top_ent-(as.l_p_page-1));
+@@ -3930,7 +3930,7 @@
#endif
default:
q_status_message(SM_INFO, 0, 1,
@@ -671,7 +748,7 @@
break;
}
}
-@@ -3786,7 +3786,7 @@
+@@ -4037,7 +4037,7 @@
break;
if(as.top_ent == new_top_ent && as.cur_row == (fl-as.top_ent)){
@@ -680,16 +757,16 @@
break;
}
-@@ -3809,7 +3809,7 @@
- else{
- new_top_ent = as.top_ent;
- if(as.cur_row == (fl - as.top_ent)){ /* no change */
-- q_status_message(SM_INFO,0,1,"Already on last page.");
-+ q_status_message(SM_INFO,0,1,"已經在最後一頁了。");
- break;
- }
- }
-@@ -3848,14 +3848,14 @@
+@@ -4073,7 +4073,7 @@
+ as.cur_row -
+ (new_end_line-as.top_ent-(as.l_p_page-1)) < 0){
+ q_status_message(SM_INFO, 0, 1,
+- "Already on last page.");
++ "已經在最後一頁了。");
+ }
+ else{
+ as.cur_row -=
+@@ -4122,14 +4122,14 @@
if(adrbk_check_all_validity_now()){
if(resync_screen(pab, style, checkedn)){
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -706,16 +783,16 @@
break;
}
-@@ -3917,7 +3917,7 @@
+@@ -4191,7 +4191,7 @@
case MC_TOGGLE:
togglex:
if(!any_addrs_avail(as.top_ent+as.cur_row)){
- q_status_message(SM_ORDER, 0, 4, "No entries to select");
-+ q_status_message(SM_ORDER, 0, 4, "沒有可供選擇的項目");
++ q_status_message(SM_ORDER, 0, 4, "沒有可供刪除的項目");
break;
}
-@@ -3936,10 +3936,10 @@
+@@ -4210,10 +4210,10 @@
if(style == SelectAddrLccCom && dl->type == ListEnt)
q_status_message(SM_ORDER, 0, 4,
@@ -728,7 +805,7 @@
else if(dl->type == ListHead || dl->type == Simple){
current_changed_flag++;
if(entry_is_checked(pab->address_book->checks,
-@@ -3956,11 +3956,11 @@
+@@ -4230,11 +4230,11 @@
}
else
q_status_message(SM_ORDER, 0, 4,
@@ -742,16 +819,7 @@
break;
-@@ -3968,7 +3968,7 @@
- /*------ Turn all checkboxes on ---------*/
- case MC_SELALL:
- if(!any_addrs_avail(as.top_ent+as.cur_row)){
-- q_status_message(SM_ORDER, 0, 4, "No entries to select");
-+ q_status_message(SM_ORDER, 0, 4, "沒有可供選擇的項目");
- break;
- }
-
-@@ -4018,7 +4018,7 @@
+@@ -4252,7 +4252,7 @@
ps->mangled_body = 1;
start_disp = 0;
q_status_message(SM_ORDER, 0, 4,
@@ -760,7 +828,7 @@
break;
-@@ -4038,13 +4038,13 @@
+@@ -4272,13 +4272,13 @@
if(!directory_ok){
q_status_message(SM_ORDER, 0, 4,
(style == SelectAddrLccCom)
@@ -777,7 +845,7 @@
break;
}
-@@ -4099,7 +4099,7 @@
+@@ -4333,14 +4333,14 @@
/*----- Select entries to work on --*/
case MC_SELECT:
if(!any_addrs_avail(as.top_ent+as.cur_row)){
@@ -786,7 +854,15 @@
break;
}
-@@ -4134,7 +4134,7 @@
+ if(!cur_is_open()){
+ if(entry_is_askserver(as.top_ent+as.cur_row))
+ q_status_message(SM_ORDER, 0, 4,
+- "Select is only available from within an expanded address book");
++ "僅能在展開後的地址簿中選擇");
+ else
+ clickable_warning(as.top_ent+as.cur_row);
+
+@@ -4373,7 +4373,7 @@
/*----------- Select current entry ----------*/
case MC_SELCUR:
if(!any_addrs_avail(as.top_ent+as.cur_row)){
@@ -795,7 +871,7 @@
break;
}
-@@ -4195,7 +4195,7 @@
+@@ -4434,7 +4434,7 @@
dlc_restart = *dlc;
as.zoomed = 0;
q_status_message(SM_ORDER, 0, 2,
@@ -804,7 +880,7 @@
warp_to_dlc(&dlc_restart, 0L);
/* put current entry in middle of screen */
-@@ -4262,11 +4262,11 @@
+@@ -4501,11 +4501,11 @@
}
else
q_status_message(SM_ORDER, 0, 4,
@@ -818,7 +894,7 @@
break;
-@@ -4279,7 +4279,7 @@
+@@ -4518,7 +4518,7 @@
: NULL,
&start_disp);
else{
@@ -827,7 +903,7 @@
ab_unzoom(&start_disp);
}
-@@ -4321,7 +4321,7 @@
+@@ -4560,7 +4560,7 @@
}
else
q_status_message(SM_ORDER, 0, 2,
@@ -836,7 +912,7 @@
break;
-@@ -4377,7 +4377,7 @@
+@@ -4606,7 +4606,7 @@
/*------ Copy entries into an abook ----*/
case MC_SAVE:
if(!any_addrs_avail(as.top_ent+as.cur_row)){
@@ -845,7 +921,7 @@
break;
}
-@@ -4399,7 +4399,7 @@
+@@ -4628,7 +4628,7 @@
/*------ Forward an entry in mail -----------*/
case MC_FORWARD:
if(!any_addrs_avail(as.top_ent+as.cur_row)){
@@ -854,7 +930,7 @@
break;
}
-@@ -4414,14 +4414,14 @@
+@@ -4643,14 +4643,14 @@
}
if(!is_addr(as.top_ent+as.cur_row)){
@@ -871,7 +947,7 @@
break;
}
-@@ -4453,18 +4453,18 @@
+@@ -4682,18 +4682,18 @@
case MC_UNKNOWN:
if(c == 'e' && !are_selecting){
q_status_message(SM_ORDER | SM_DING, 0, 2,
@@ -893,25 +969,25 @@
break;
}
/* else, fall through */
-@@ -4499,7 +4499,7 @@
+@@ -4731,7 +4731,7 @@
as.zoomed = 1;
if(as.selections){
- q_status_message(SM_ORDER, 0, 2, "Zoom Mode is now on");
+ q_status_message(SM_ORDER, 0, 2, "現在開啟縮放模式");
- if(as.opened){
+ if(cur_is_open()){
dl = dlist(as.top_ent+as.cur_row);
if((dl->type == ListHead ||
-@@ -4540,7 +4540,7 @@
+@@ -4779,7 +4779,7 @@
}
else{
as.zoomed = 0;
- q_status_message(SM_ORDER, 0, 2, "No selected entries to zoom on");
-+ q_status_message(SM_ORDER, 0, 2, "沒有已選擇的項目可供縮放");
++ q_status_message(SM_ORDER, 0, 2, "沒有已選擇的項目可供放大");
}
}
-@@ -4601,7 +4601,7 @@
+@@ -4840,7 +4840,7 @@
char *name;
{
q_status_message2(SM_ORDER | (bell ? SM_DING : 0), 0, 4,
@@ -920,7 +996,7 @@
name ? " " : "",
name ? name : "");
}
-@@ -4622,11 +4622,11 @@
+@@ -4861,11 +4861,11 @@
dl = dlist(cur_line);
if(dl->type == NoAbooks)
q_status_message(SM_ORDER, 0, 4,
@@ -935,20 +1011,20 @@
}
-@@ -4643,9 +4643,9 @@
+@@ -4882,9 +4882,9 @@
register AddrScrn_Disp *dl;
dl = dlist(cur_line);
- q_status_message1(SM_ORDER, 0, 4, "%s not expanded, use \">\" to expand",
-- dl->type == Title ? "Address Book"
-- : "Distribution List");
+- (dl->type == Title || dl->type == ClickHereCmb) ? "Address Book"
+- : "Distribution List");
+ q_status_message1(SM_ORDER, 0, 4, "%s 未被展開,使用 \">\" 來展開",
-+ dl->type == Title ? "地址簿"
-+ : "分類列表");
++ (dl->type == Title || dl->type == ClickHereCmb) ? "地址簿"
++ : "分類列表");
}
-@@ -4661,7 +4661,7 @@
+@@ -4900,7 +4900,7 @@
char *what;
{
q_status_message1(SM_INFO | (bell ? SM_DING : 0), 0, 2,
@@ -957,7 +1033,7 @@
}
-@@ -4671,7 +4671,7 @@
+@@ -4910,7 +4910,7 @@
void
no_tabs_warning()
{
@@ -966,7 +1042,7 @@
}
-@@ -4690,11 +4690,11 @@
+@@ -4929,11 +4929,11 @@
{
int ret = 0;
static ESCKEY_S opts[] = {
@@ -983,7 +1059,16 @@
{ 0, '%', "", ""},
{-1, 0, NULL, NULL}};
-@@ -4726,7 +4726,7 @@
+@@ -4942,7 +4942,7 @@
+
+ opts[5].ch = (F_ON(F_ENABLE_PRYNT, ps_global)) ? 'y' : -1;
+
+- switch(radio_buttons("APPLY command : ", command_line, opts, 0, 'z',
++ switch(radio_buttons("套用命令:", command_line, opts, 0, 'z',
+ NO_HELP, RB_NORM)){
+ case 'c':
+ ret = ab_compose_to_addr(cur_line, 1);
+@@ -4965,7 +4965,7 @@
break;
case 'z':
@@ -992,7 +1077,7 @@
break;
}
-@@ -4748,22 +4748,22 @@
+@@ -4987,22 +4987,22 @@
int *start_disp;
{
static ESCKEY_S sel_opts1[] = {
@@ -1007,8 +1092,7 @@
+ {'f', 'f', "F", "切換選擇"},
{-1, 0, NULL, NULL}
};
-- static char *sel_pmt1 = "ALTER message selection : ";
-+ static char *sel_pmt1 = "更改訊息選擇:";
+ static char *sel_pmt1 = "ALTER message selection : ";
static ESCKEY_S sel_opts2[] = {
- {'a', 'a', "A", "select All"},
- {'c', 'c', "C", "select Cur"},
@@ -1025,7 +1109,7 @@
ESCKEY_S *sel_opts;
HelpType help = NO_HELP;
adrbk_cntr_t num, ab_count;
-@@ -4791,8 +4791,8 @@
+@@ -5030,8 +5030,8 @@
if(dl && (dl->type == ListHead || dl->type == Simple)){
sel_opts1[1].label = entry_is_selected(abook->selects,
(a_c_arg_t)dl->elnum)
@@ -1036,7 +1120,7 @@
sel_opts1[1].ch = 'c';
}
else
-@@ -4814,7 +4814,7 @@
+@@ -5053,7 +5053,7 @@
default:
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -1045,7 +1129,7 @@
return;
}
}
-@@ -4823,8 +4823,8 @@
+@@ -5062,8 +5062,8 @@
(dl->type == ListHead || dl->type == Simple)){
sel_opts1[1].label = entry_is_selected(abook->selects,
(a_c_arg_t)dl->elnum)
@@ -1056,7 +1140,7 @@
sel_opts1[1].ch = 'c';
}
else
-@@ -4841,7 +4841,7 @@
+@@ -5080,7 +5080,7 @@
switch(q){
case 'x': /* cancel */
@@ -1065,7 +1149,7 @@
break;
case 'c': /* select/unselect current */
-@@ -4853,7 +4853,7 @@
+@@ -5092,7 +5092,7 @@
if(as.selections == 0 && as.zoomed){
as.zoomed = 0;
q_status_message(SM_ORDER, 0, 2,
@@ -1074,7 +1158,7 @@
do_warp++;
}
else if(as.zoomed){
-@@ -4892,7 +4892,7 @@
+@@ -5131,17 +5131,17 @@
if(as.selections == 0 && as.zoomed){
as.zoomed = 0;
q_status_message(SM_ORDER, 0, 2,
@@ -1083,7 +1167,20 @@
do_warp++;
}
else{
-@@ -4918,7 +4918,7 @@
+ char bb[100];
+
+- sprintf(bb, "%s entries UNselected%s%s%s",
++ sprintf(bb, "%s 個項目被取消選擇%s%s%s",
+ comatose(prevsel-as.selections),
+- as.selections ? ", still " : "",
++ as.selections ? ",仍有 " : "",
+ as.selections ? comatose(as.selections) : "",
+- as.selections ? " selected in other addrbooks" : "");
++ as.selections ? " 個項目選擇於其他地址簿中" : "");
+ q_status_message(SM_ORDER, 0, 2, bb);
+ if(as.zoomed)
+ do_beginning++;
+@@ -5157,7 +5157,7 @@
}
}
@@ -1092,7 +1189,7 @@
comatose(ab_count));
if(prevsel == 0 && as.selections > 0 &&
!as.zoomed && F_ON(F_AUTO_ZOOM, ps)){
-@@ -4955,14 +4955,14 @@
+@@ -5194,14 +5194,14 @@
do_beginning++;
else{
as.zoomed = 0;
@@ -1109,7 +1206,7 @@
comatose(as.selections));
break;
-@@ -4988,7 +4988,7 @@
+@@ -5227,7 +5227,7 @@
if(as.selections == 0){
as.zoomed = 0;
q_status_message(SM_ORDER, 0, 2,
@@ -1118,7 +1215,7 @@
do_warp++;
}
else
-@@ -5007,63 +5007,63 @@
+@@ -5246,63 +5246,63 @@
if(prevsel == as.selections && prevsel > 0){
if(as.selections == 1)
q_status_message(SM_ORDER, 0, 2,
@@ -1143,7 +1240,7 @@
else
q_status_message(SM_ORDER, 0, 2,
- "Select failed! No entries selected");
-+ "選擇失敗! 沒有任何項目被選擇");
++ "選擇失敗!沒有任何項目被選擇");
}
else if(as.selections == 0){
if(prevsel == 1)
@@ -1196,7 +1293,7 @@
comatose(as.selections-prevsel),
comatose(as.selections));
}
-@@ -5073,13 +5073,13 @@
+@@ -5312,17 +5312,17 @@
default :
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -1206,13 +1303,18 @@
}
}
else{
- q_status_message(SM_ORDER | SM_DING, 3, 3,
-- "Select is not supported from the top-level view");
-+ "尚未支援自頂層視角選擇");
+ if(F_ON(F_CMBND_ABOOK_DISP,ps_global))
+ q_status_message(SM_ORDER | SM_DING, 3, 3,
+- "Select is only available from within an expanded address book");
++ "僅支援自展開的地址簿中選擇");
+ else
+ q_status_message(SM_ORDER | SM_DING, 3, 3,
+- "Select is only available when viewing an individual address book");
++ "選擇僅能在檢視個人地址簿時使用");
+
return;
}
-
-@@ -5137,11 +5137,11 @@
+@@ -5381,11 +5381,11 @@
int narrow;
{
static ESCKEY_S ab_sel_type_opt[] = {
@@ -1227,7 +1329,7 @@
int type;
adrbk_cntr_t num, ab_count;
-@@ -5159,7 +5159,7 @@
+@@ -5403,7 +5403,7 @@
break;
case 'x':
@@ -1236,7 +1338,7 @@
return -1;
default:
-@@ -5279,7 +5279,7 @@
+@@ -5523,7 +5523,7 @@
}
if(type == 'x' || r == 'x'){
@@ -1245,7 +1347,7 @@
return -1;
}
-@@ -5362,7 +5362,7 @@
+@@ -5606,7 +5606,7 @@
break;
default:
@@ -1254,7 +1356,7 @@
return(err);
}
-@@ -5481,18 +5481,18 @@
+@@ -5725,18 +5725,18 @@
new_top_ent = NO_LINE;
if(rc == -2)
@@ -1277,16 +1379,16 @@
/* know match is on the same page */
if(!*warped &&
-@@ -6115,7 +6115,7 @@
+@@ -6378,7 +6378,7 @@
dprint(7, (debugfile, "- search_book -\n"));
- sprintf(prompt, "Word to search for [%s]: ", search_string);
-+ sprintf(prompt, "欲搜尋的字串 [%s]:", search_string);
++ sprintf(prompt, "欲搜尋的字串 [%s]: ", search_string);
help = NO_HELP;
nsearch_string[0] = '\0';
-@@ -6127,12 +6127,12 @@
+@@ -6390,12 +6390,12 @@
ekey[1].ch = ctrl('Y');
ekey[1].rval = 10;
ekey[1].name = "^Y";
@@ -1301,7 +1403,7 @@
ekey[3].ch = -1;
-@@ -6149,11 +6149,11 @@
+@@ -6412,11 +6412,11 @@
warp_to_beginning(); /* go to top of addrbooks */
if((nl=first_selectable_line(0L)) != NO_LINE){
*new_line = nl;
@@ -1315,7 +1417,7 @@
return -1;
}
}
-@@ -6162,11 +6162,11 @@
+@@ -6425,11 +6425,11 @@
warp_to_end(); /* go to bottom */
if((nl=first_selectable_line(0L)) != NO_LINE){
*new_line = nl;
diff --git a/chinese/pine4/files/patch-aw b/chinese/pine4/files/patch-aw
index a1d2bf8b4f78..f2f18544613d 100644
--- a/chinese/pine4/files/patch-aw
+++ b/chinese/pine4/files/patch-aw
@@ -1,5 +1,5 @@
---- pine/adrbkcmd.c.orig Wed Sep 16 06:11:08 1998
-+++ pine/adrbkcmd.c Tue Sep 22 18:58:32 1998
+--- pine/adrbkcmd.c.orig Sat Jan 30 03:57:55 1999
++++ pine/adrbkcmd.c Mon Feb 22 22:36:14 1999
@@ -112,23 +112,23 @@
static struct key abook_view_keys[] =
{HELP_MENU,
@@ -121,28 +121,26 @@
*/
static struct headerentry headents_for_edit[]={
{"Nickname : ", "Nickname", h_composer_abook_nick, 12, 0, NULL,
-- verify_nick, NULL, NULL, addr_book_nick_for_edit, "To AddrBk",
-- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE},
-+ verify_nick, NULL, NULL, addr_book_nick_for_edit, "地址簿",
-+ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, KS_NONE},
+- verify_nick, NULL, NULL, addr_book_nick_for_edit, "To AddrBk", NULL,
++ verify_nick, NULL, NULL, addr_book_nick_for_edit, "地址簿", NULL,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE},
{"Fullname : ", "Fullname", h_composer_abook_full, 12, 0, NULL,
-- NULL, NULL, NULL, view_message_for_pico, "To Message",
-+ NULL, NULL, NULL, view_message_for_pico, "資料匣",
+- NULL, NULL, NULL, view_message_for_pico, "To Message", NULL,
++ NULL, NULL, NULL, view_message_for_pico, "資料匣", NULL,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE},
{"Fcc : ", "FileCopy", h_composer_abook_fcc, 12, 0, NULL,
-- NULL, NULL, NULL, folders_for_fcc, "To Fldrs",
-- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE},
-+ NULL, NULL, NULL, folders_for_fcc, "資料匣",
-+ 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, KS_NONE},
+- NULL, NULL, NULL, folders_for_fcc, "To Fldrs", NULL,
++ NULL, NULL, NULL, folders_for_fcc, "資料匣", NULL,
+ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE},
{"Comment : ", "Comment", h_composer_abook_comment, 12, 0, NULL,
-- NULL, NULL, NULL, view_message_for_pico, "To Message",
-+ NULL, NULL, NULL, view_message_for_pico, "資料匣",
+- NULL, NULL, NULL, view_message_for_pico, "To Message", NULL,
++ NULL, NULL, NULL, view_message_for_pico, "資料匣", NULL,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE},
{"Addresses : ", "Addresses", h_composer_abook_addrs, 12, 0, NULL,
-- verify_addr, NULL, NULL, addr_book_change_list, "To AddrBk",
-+ verify_addr, NULL, NULL, addr_book_change_list, "地址簿",
+- verify_addr, NULL, NULL, addr_book_change_list, "To AddrBk", NULL,
++ verify_addr, NULL, NULL, addr_book_change_list, "地址簿", NULL,
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE},
- {NULL, NULL, NO_HELP, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL,
+ {NULL, NULL, NO_HELP, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, KS_NONE}
@@ -951,7 +951,7 @@
pbuf.canceltest = warped ? pico_cancel_for_adrbk_edit
@@ -153,7 +151,7 @@
pbuf.resize = resize_for_pico;
pbuf.winch_cleanup = winch_cleanup;
pbuf.suspend = do_suspend;
-@@ -966,7 +966,7 @@
+@@ -967,7 +967,7 @@
pbuf.browse_help = h_composer_browse;
pbuf.attach_help = h_composer_ctrl_j;
pbuf.composer_help = h_composer;
@@ -162,7 +160,7 @@
readonly ? 'V' : islower((unsigned char)(*cmd))
? toupper((unsigned char)*cmd)
: *cmd,
-@@ -1551,12 +1551,12 @@
+@@ -1559,12 +1559,12 @@
ps_global->redrawer = redraw_pico;
fix_windsize(ps_global);
@@ -177,7 +175,7 @@
break;
}
-@@ -1580,8 +1580,8 @@
+@@ -1588,8 +1588,8 @@
char *rstr = NULL;
void (*redraw)() = ps_global->redrawer;
@@ -188,7 +186,7 @@
ps_global->redrawer = redraw_pico;
fix_windsize(ps_global);
-@@ -1604,7 +1604,7 @@
+@@ -1612,7 +1612,7 @@
pico_cancel_for_adrbk_take(redraw_pico)
void (*redraw_pico)();
{
@@ -197,7 +195,7 @@
}
-@@ -1612,7 +1612,7 @@
+@@ -1620,7 +1620,7 @@
pico_cancel_for_adrbk_edit(redraw_pico)
void (*redraw_pico)();
{
@@ -206,7 +204,7 @@
}
-@@ -1729,16 +1729,16 @@
+@@ -1737,16 +1737,16 @@
if(ps_global->readonly_pinerc){
q_status_message1(SM_ORDER, 0, 3,
@@ -227,7 +225,7 @@
return -1;
}
-@@ -1787,7 +1787,7 @@
+@@ -1796,7 +1796,7 @@
pbuf.browse_help = h_composer_browse;
pbuf.attach_help = h_composer_ctrl_j;
pbuf.composer_help = h_composer;
@@ -236,7 +234,7 @@
pbuf.pine_anchor = set_titlebar(titlebar,
ps_global->mail_stream,
ps_global->context_current,
-@@ -1856,8 +1856,8 @@
+@@ -1916,8 +1916,8 @@
if(editor_result & COMP_CANCEL){
ret = -1;
q_status_message1(SM_ORDER, 0, 3,
@@ -247,7 +245,7 @@
}
else if(editor_result & COMP_EXIT){
if(!strcmp(server, def_serv ? def_serv : "") &&
-@@ -1865,8 +1865,8 @@
+@@ -1925,8 +1925,8 @@
!strcmp(nickname, def_nick ? def_nick : "")){
ret = -1;
q_status_message1(SM_ORDER, 0, 3,
@@ -258,7 +256,7 @@
}
else{
-@@ -1936,8 +1936,8 @@
+@@ -1993,8 +1993,8 @@
if(*tmp == '\0'){
q_status_message1(SM_ORDER, 0, 3,
@@ -269,7 +267,7 @@
ret = -1;
goto get_out;
}
-@@ -1962,8 +1962,8 @@
+@@ -2019,8 +2019,8 @@
if(set_variable_list(global ? V_GLOB_ADDRBOOK : V_ADDRESSBOOK,
new_list, TRUE)){
q_status_message1(SM_ORDER, 0, 3,
@@ -280,7 +278,7 @@
set_current_val(&vars[global ? V_GLOB_ADDRBOOK : V_ADDRESSBOOK],
TRUE, FALSE);
-@@ -2137,7 +2137,7 @@
+@@ -2191,7 +2191,7 @@
if(ps_global->readonly_pinerc){
if(err)
@@ -289,7 +287,7 @@
return -1;
}
-@@ -2154,10 +2154,10 @@
+@@ -2208,10 +2208,10 @@
if(err){
if(pab->type & GLOBAL)
*err =
@@ -302,7 +300,7 @@
}
return -1;
-@@ -2210,8 +2210,8 @@
+@@ -2264,8 +2264,8 @@
if(cnt > 1){
static ESCKEY_S opts[] = {
@@ -313,7 +311,7 @@
{-1, 0, NULL, NULL}};
sprintf(tmp,
-@@ -2229,7 +2229,7 @@
+@@ -2283,7 +2283,7 @@
case 'x':
if(err)
@@ -322,7 +320,7 @@
return -1;
}
-@@ -2240,7 +2240,7 @@
+@@ -2294,7 +2294,7 @@
case 'n':
case 'x':
if(err)
@@ -331,7 +329,7 @@
return -1;
-@@ -2285,7 +2285,7 @@
+@@ -2339,7 +2339,7 @@
case 'x': /* Cancel */
default:
if(err)
@@ -340,7 +338,7 @@
return -1;
}
-@@ -2305,7 +2305,7 @@
+@@ -2359,7 +2359,7 @@
case 'x':
default:
if(err)
@@ -349,7 +347,7 @@
return -1;
-@@ -2366,7 +2366,7 @@
+@@ -2420,7 +2420,7 @@
case 'n':
default:
if(err)
@@ -358,7 +356,7 @@
return -1;
}
-@@ -2505,7 +2505,7 @@
+@@ -2559,7 +2559,7 @@
/* this also frees old variable contents for us */
if(set_variable_list(varnum, new_list, TRUE)){
if(err)
@@ -367,7 +365,7 @@
set_current_val(&vars[varnum], TRUE, FALSE);
free_list_array(&new_list);
-@@ -2572,7 +2572,7 @@
+@@ -2626,7 +2626,7 @@
if(ps_global->readonly_pinerc){
if(msg)
@@ -376,7 +374,7 @@
return -1;
}
-@@ -2582,12 +2582,12 @@
+@@ -2636,12 +2636,12 @@
opts[i].ch = 'u';
opts[i].rval = 'u';
opts[i].name = "U";
@@ -391,7 +389,7 @@
opts[i].ch = -1;
deefault = 'u';
-@@ -2595,7 +2595,7 @@
+@@ -2649,7 +2649,7 @@
if(pab->type & GLOBAL){
if(vars[V_GLOB_ADDRBOOK].is_fixed){
if(msg)
@@ -400,7 +398,7 @@
return -1;
}
-@@ -2615,7 +2615,7 @@
+@@ -2669,7 +2669,7 @@
else{
if(vars[V_ADDRESSBOOK].is_fixed){
if(msg)
@@ -409,7 +407,7 @@
return -1;
}
-@@ -2654,7 +2654,7 @@
+@@ -2708,7 +2708,7 @@
if(rv == 'x'){
if(msg)
@@ -418,7 +416,7 @@
return -1;
}
-@@ -2697,7 +2697,7 @@
+@@ -2751,7 +2751,7 @@
enum {NotSet, Pers, Glob, Empty} type1, type2;
int i, j, retval = -1;
struct variable *vars = ps_global->vars;
@@ -427,7 +425,7 @@
dprint(5, (debugfile, "- do_the_shuffle(%d, %d) -\n", anum1, anum2));
-@@ -2711,7 +2711,7 @@
+@@ -2765,7 +2765,7 @@
if(type1 == Empty){
if(msg)
*msg =
@@ -436,7 +434,7 @@
return(retval);
}
-@@ -2728,14 +2728,14 @@
+@@ -2782,14 +2782,14 @@
if((type1 == Pers || type2 == Pers) && vars[V_ADDRESSBOOK].is_fixed){
if(msg)
@@ -453,7 +451,7 @@
return(retval);
}
-@@ -3207,7 +3207,7 @@
+@@ -3261,7 +3261,7 @@
AdrBk_Entry *abe;
VCARD_INFO_S *vinfo;
static ESCKEY_S ab_export_opts[] = {
@@ -462,7 +460,7 @@
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL}};
static ESCKEY_S vcard_or_addresses[] = {
-@@ -3230,7 +3230,7 @@
+@@ -3284,7 +3284,7 @@
switch(i){
case 'x':
@@ -471,7 +469,7 @@
return(ret);
case 'a':
-@@ -3259,7 +3259,7 @@
+@@ -3313,7 +3313,7 @@
ab_export_opts[++r].ch = ctrl('I');
ab_export_opts[r].rval = 11;
ab_export_opts[r].name = "TAB";
@@ -480,7 +478,7 @@
}
ab_export_opts[++r].ch = -1;
-@@ -3272,7 +3272,7 @@
+@@ -3326,7 +3326,7 @@
if(r < 0){
switch(r){
case -1:
@@ -489,7 +487,7 @@
break;
case -2:
-@@ -3656,7 +3656,7 @@
+@@ -3711,7 +3711,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,16 +496,16 @@
goto bomb;
case 'y':
-@@ -3740,7 +3740,7 @@
+@@ -3795,7 +3795,7 @@
gf_clear_so_writec((STORE_S *) pb->contents.text.data);
-- pine_send(outgoing, &body, "FORWARDING ADDRESS BOOK ENTRY", NULL,
-+ pine_send(outgoing, &body, "轉寄地址簿項目", NULL,
+- pine_send(outgoing, &body, "FORWARDING ADDRESS BOOK ENTRY", NULL, NULL,
++ pine_send(outgoing, &body, "轉寄地址簿項目", NULL, NULL,
NULL, NULL, NULL, NULL, 0);
ps->mangled_screen = 1;
-@@ -4207,8 +4207,8 @@
+@@ -4262,8 +4262,8 @@
char tmp[200];
ACTION_LIST_S *action_list = NULL, *al;
static ESCKEY_S save_or_export[] = {
@@ -518,7 +516,7 @@
{-1, 0, NULL, NULL}};
sprintf(tmp, "Save%s to address book or Export to filesystem ? ",
-@@ -4219,7 +4219,7 @@
+@@ -4274,7 +4274,7 @@
h_ab_save_exp, RB_NORM);
switch(i){
case 'x':
@@ -527,7 +525,7 @@
return(0);
case 'e':
-@@ -4405,7 +4405,7 @@
+@@ -4457,7 +4457,7 @@
if(action_list)
fs_give((void **)&action_list);
@@ -536,7 +534,7 @@
return(ret);
}
-@@ -4594,7 +4594,7 @@
+@@ -4638,7 +4638,7 @@
q_status_message(SM_ORDER | SM_DING, 3, 4,
"Save only partially completed");
else
@@ -545,9 +543,9 @@
}
else if (how_many_to_copy + how_many_no_action -
(skip_dups ? how_many_dups : 0) > 0){
-@@ -4670,15 +4670,15 @@
-
- if(!agg && as.opened){
+@@ -4715,15 +4715,15 @@
+ curopen = cur_is_open();
+ if(!agg && curopen){
static ESCKEY_S prt[] = {
- {'a', 'a', "A", "AddressBook"},
- {'e', 'e', "E", "Entry"},
@@ -564,7 +562,7 @@
ps_global->mangled_footer = 1;
return 0;
-@@ -4749,7 +4749,7 @@
+@@ -4794,7 +4794,7 @@
switch(want_to("Expand nicknames", 'y', 'x', h_ab_forward,
WT_NORM)){
case 'x':
@@ -573,17 +571,17 @@
ps_global->mangled_footer = 1;
return 0;
-@@ -4973,7 +4973,7 @@
- lineno = 0L;
-
- if(as.opened)
-- print_text1(" ADDRESS BOOK %s\n\n",
-+ print_text1(" 地址簿 %s\n\n",
- as.adrbks[as.cur].nickname);
-
-
-@@ -5028,7 +5028,7 @@
- dprint(2, (debugfile, "- ab_delete -\n"));
+@@ -5068,7 +5068,7 @@
+ if(F_ON(F_CMBND_ABOOK_DISP,ps_global))
+ lineno = 0L - XTRA_TITLE_LINES_IN_OLD_ABOOK_DISP;
+ else{
+- print_text1(" ADDRESS BOOK %s\n\n",
++ print_text1(" 地址簿 %s\n\n",
+ as.adrbks[as.cur].nickname);
+ lineno = 0L;
+ }
+@@ -5134,7 +5134,7 @@
+ dprint(2, (debugfile, "- ab_agg_delete -\n"));
if(agg){
- sprintf(prompt, "Really delete %d selected entries", as.selections);
@@ -591,16 +589,16 @@
ch = want_to(prompt, 'n', 'n', NO_HELP, WT_NORM);
if(ch == 'y'){
adrbk_cntr_t newelnum, flushelnum = NO_NEXT;
-@@ -5193,7 +5193,7 @@
+@@ -5301,7 +5301,7 @@
}
}
else
-- cmd_cancelled("Apply command");
-+ cmd_cancelled("套用命令");
+- cmd_cancelled("Apply Delete command");
++ cmd_cancelled("套用刪除命令");
}
return(ret);
-@@ -5241,7 +5241,7 @@
+@@ -5349,7 +5349,7 @@
? (char *)rfc1522_decode((unsigned char *)tmp_20k_buf,
abe->fullname, NULL)
: abe->nickname ? abe->nickname : "";
@@ -609,7 +607,7 @@
break;
case ListHead:
-@@ -5249,13 +5249,13 @@
+@@ -5357,13 +5357,13 @@
? (char *)rfc1522_decode((unsigned char *)tmp_20k_buf,
abe->fullname, NULL)
: abe->nickname ? abe->nickname : "";
@@ -625,7 +623,7 @@
break;
}
-@@ -5354,7 +5354,7 @@
+@@ -5462,7 +5462,7 @@
return 0;
}
else{
@@ -634,7 +632,7 @@
return 0;
}
}
-@@ -5490,7 +5490,7 @@
+@@ -5598,7 +5598,7 @@
if(r == 1 || r != 10 && fbuf[0] == '\0'){
ps->mangled_footer = 1;
if(error)
@@ -643,7 +641,7 @@
return(ret);
}
-@@ -5529,7 +5529,7 @@
+@@ -5638,7 +5638,7 @@
pbuf.browse_help = h_composer_browse;
pbuf.attach_help = h_composer_ctrl_j;
pbuf.composer_help = h_composer;
@@ -652,15 +650,19 @@
ps_global->mail_stream,
ps_global->context_current,
ps_global->cur_folder,
-@@ -5777,13 +5777,13 @@
+@@ -5895,14 +5895,14 @@
+
static struct key ldap_view_keys[] =
{HELP_MENU,
- NULL_MENU,
+- {"V","ViewLink",{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE},
- {"<","Results Index",{MC_EXIT,2,{'<',','}},KS_NONE},
++ {"V","檢視鏈結",{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE},
+ {"<","結果索引",{MC_EXIT,2,{'<',','}},KS_NONE},
PRYNTTXT_MENU,
- NULL_MENU,
- NULL_MENU,
+- {"^B","PrevLink",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE},
+- {"^F","NextLink",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE},
++ {"^B","前一鏈結",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE},
++ {"^F","次一鏈結",{MC_NEXT_HANDLE,1,{ctrl('F')}},KS_NONE},
PREVPAGE_MENU,
NEXTPAGE_MENU,
- {"C", "ComposeTo", {MC_COMPOSE,1,{'c'}}, KS_COMPOSER},
@@ -668,13 +670,14 @@
FWDEMAIL_MENU,
SAVE_MENU,
WHEREIS_MENU};
-@@ -5812,12 +5812,12 @@
+@@ -5935,13 +5935,13 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = so_text(srcstore);
sargs.text.src = srctype;
- sargs.text.desc = "expanded entry";
-- sargs.bar.title = "DIRECTORY ENTRY";
+ sargs.text.desc = "已展開的項目";
+ sargs.text.handles= handles;
+- sargs.bar.title = "DIRECTORY ENTRY";
+ sargs.bar.title = "地址項目";
sargs.proc.tool = process_ldap_cmd;
sargs.proc.data.p = (void *) winning_e;
@@ -684,7 +687,7 @@
sargs.keys.menu = &ldap_view_keymenu;
setbitmap(sargs.keys.bitmap);
-@@ -6174,7 +6174,7 @@
+@@ -6412,7 +6412,7 @@
struct headerentry *he;
void (*redraw_pico)();
{
diff --git a/chinese/pine4/files/patch-ax b/chinese/pine4/files/patch-ax
index 84040b7b9935..367d902475d7 100644
--- a/chinese/pine4/files/patch-ax
+++ b/chinese/pine4/files/patch-ax
@@ -1,8 +1,22 @@
---- 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)
+--- pine/folder.c.orig Fri Feb 5 05:47:33 1999
++++ pine/folder.c Wed Feb 24 02:50:43 1999
+@@ -58,10 +58,10 @@
+ #include "headers.h"
+
+
+-#define CLICKHERE "[ Select Here to See Expanded List ]"
+-#define CLICKHERETOO "[ ** Empty List ** Select Here to Try Re-Expanding ]"
++#define CLICKHERE "[ 選這裡以檢視展開的列表 ]"
++#define CLICKHERETOO "[ ** 空的列表 ** 選這裡來重新展開 ]"
+ #define CLICKHERETOONEWS \
+- "[ ** Empty List ** Use \"A Subscribe\" to subscribe to a newsgroup ]"
++ "[ ** 空的列表 ** 使用 \"A Subscribe\" 來訂閱一個新聞組群 ]"
+ #define ALL_FOUND(X) (((X)->dir->status & CNTXT_NOFIND) == 0 && \
+ ((X)->dir->status & CNTXT_PARTFIND) == 0)
#define FLDR_NAME(X) ((X) ? ((X)->nickname ? (X)->nickname : (X)->name) :"")
+@@ -70,13 +70,13 @@
+ FOLDERS((S)->text.handles->h.f.context)) \
+ : NULL)
#define SUBSCRIBE_PMT \
- "Enter newsgroup name (or partial name to get a list): "
-#define LISTMODE_GRIPE "Use \"X\" to mark selections in list mode"
@@ -20,21 +34,24 @@
#define mail_list(S, R, N) mail_list_internal(S, R, N)
-@@ -281,18 +281,18 @@
+@@ -313,21 +313,21 @@
/*
* Various screen keymenu/command binding s.
*/
-#define PREVC_MENU {"P", "PrevCltn", {MC_PREVITEM, 1, {'p'}}, KS_NONE}
-#define NEXTC_MENU {"N", "NextCltn", {MC_NEXTITEM, 2, {'n',TAB}}, KS_NONE}
-#define DELC_MENU {"D", "Del Cltn", {MC_DELETE,2,{'d',KEY_DEL}}, KS_NONE}
--#define PREVF_MENU {"P", "PrevFldr", {MC_PREVITEM, 1, {'p'}}, KS_NONE}
--#define NEXTF_MENU {"N", "NextFldr", {MC_NEXTITEM, 2, {'n',TAB}}, KS_NONE}
--#define CIND_MENU {"I", "CurIndex", {MC_INDEX,1,{'i'}}, KS_FLDRINDEX}
+-#define PREVF_MENU {"P", "PrevFldr", {MC_PREV_HANDLE, 3, \
+#define PREVC_MENU {"P", "前一總集", {MC_PREVITEM, 1, {'p'}}, KS_NONE}
+#define NEXTC_MENU {"N", "次一總集", {MC_NEXTITEM, 2, {'n',TAB}}, KS_NONE}
+#define DELC_MENU {"D", "刪除總集", {MC_DELETE,2,{'d',KEY_DEL}}, KS_NONE}
-+#define PREVF_MENU {"P", "前一資料匣", {MC_PREVITEM, 1, {'p'}}, KS_NONE}
-+#define NEXTF_MENU {"N", "次一資料匣", {MC_NEXTITEM, 2, {'n',TAB}}, KS_NONE}
++#define PREVF_MENU {"P", "前一資料匣", {MC_PREV_HANDLE, 3, \
+ {'p', ctrl('B'), KEY_LEFT}}, KS_NONE}
+-#define NEXTF_MENU {"N", "NextFldr", {MC_NEXT_HANDLE, 4, \
++#define NEXTF_MENU {"N", "次一資料匣", {MC_NEXT_HANDLE, 4, \
+ {'n', ctrl('F'), TAB, KEY_RIGHT}}, \
+ KS_NONE}
+-#define CIND_MENU {"I", "CurIndex", {MC_INDEX,1,{'i'}}, KS_FLDRINDEX}
+#define CIND_MENU {"I", "索引", {MC_INDEX,1,{'i'}}, KS_FLDRINDEX}
static struct key context_mgr_keys[] =
@@ -47,7 +64,7 @@
{MC_CHOICE,5,{'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE},
PREVC_MENU,
NEXTC_MENU,
-@@ -324,15 +324,15 @@
+@@ -359,15 +359,15 @@
static struct key context_cfg_keys[] =
{HELP_MENU,
OTHER_MENU,
@@ -67,7 +84,7 @@
WHEREIS_MENU,
HELP_MENU,
-@@ -351,9 +351,9 @@
+@@ -386,9 +386,9 @@
static struct key context_select_keys[] =
{HELP_MENU,
@@ -79,7 +96,7 @@
{MC_CHOICE, 5, {'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE},
PREVC_MENU,
NEXTC_MENU,
-@@ -367,9 +367,9 @@
+@@ -402,9 +402,9 @@
static struct key context_fcc_keys[] =
{HELP_MENU,
@@ -91,16 +108,7 @@
{MC_CHOICE, 5, {'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE},
PREVC_MENU,
NEXTC_MENU,
-@@ -384,16 +384,16 @@
- static struct key folder_keys[] =
- {HELP_MENU,
- OTHER_MENU,
-- {"<", NULL, {MC_EXIT,3,{' ','<',','}}, KS_NONE},
-- {">", "[View Fldr]",
-+ {"M", NULL, {MC_EXIT,3,{' ','<',','}}, KS_NONE},
-+ {">", "[檢視檔案匣]",
- {MC_CHOICE,5,{'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE},
- PREVF_MENU,
+@@ -426,23 +426,23 @@
NEXTF_MENU,
PREVPAGE_MENU,
NEXTPAGE_MENU,
@@ -112,58 +120,35 @@
WHEREIS_MENU,
HELP_MENU,
-@@ -405,9 +405,9 @@
+ OTHER_MENU,
+ QUIT_MENU,
+ MAIN_MENU,
+- {"V", "[View Fldr]", {MC_OPENFLDR}, KS_NONE},
++ {"V", "[檢視檔案匣]", {MC_OPENFLDR}, KS_NONE},
+ GOTO_MENU,
CIND_MENU,
COMPOSE_MENU,
- PRYNTTXT_MENU,
+- {"%", "Print", {MC_PRINTFLDR,1,{'%'}}, KS_PRINT},
- {"Z", "ZoomMode", {MC_ZOOM,1,{'z'}}, KS_NONE},
- {";","Select",{MC_SELECT,1,{';'}},KS_SELECT},
- {":","SelectCur",{MC_SELCUR,1,{':'}},KS_SELECT}};
++ {"%", "列印", {MC_PRINTFLDR,1,{'%'}}, KS_PRINT},
+ {"Z", "縮放模式", {MC_ZOOM,1,{'z'}}, KS_NONE},
+ {";","選擇",{MC_SELECT,1,{';'}},KS_SELECT},
+ {":","選擇目前的",{MC_SELCUR,1,{':'}},KS_SELECT}};
INST_KEY_MENU(folder_km, folder_keys);
#define KM_COL_KEY 2
#define KM_SEL_KEY 3
-@@ -419,9 +419,9 @@
+@@ -455,7 +455,7 @@
static struct key folder_sel_keys[] =
{HELP_MENU,
-- {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE},
-- {"<", "Collections", {MC_COLLECTIONS,2,{'<',','}}, KS_NONE},
-- {"S", "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}},KS_NONE},
-+ {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE},
-+ {"<", "總集", {MC_COLLECTIONS,2,{'<',','}}, KS_NONE},
-+ {"S", "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}},KS_NONE},
- PREVF_MENU,
- NEXTF_MENU,
- PREVPAGE_MENU,
-@@ -435,9 +435,9 @@
-
- static struct key folder_sub_sel_keys[] =
- {HELP_MENU,
-- {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE},
-+ {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE},
- NULL_MENU,
-- {"S", "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}},KS_NONE},
-+ {"S", "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}},KS_NONE},
- PREVF_MENU,
- NEXTF_MENU,
- PREVPAGE_MENU,
-@@ -451,9 +451,9 @@
-
- static struct key folder_fcc_keys[] =
- {HELP_MENU,
- {"E", "ExitSelect", {MC_EXIT,1,{'e'}}, KS_EXITMODE},
-- {"<", "Collections", {MC_COLLECTIONS,2,{'<',','}}, KS_NONE},
-- {"S", "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}},
+ {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE},
-+ {"<", "總集", {MC_COLLECTIONS,2,{'<',','}}, KS_NONE},
-+ {"S", "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}},
+ NULL_MENU,
+ {NULL, NULL, {MC_CHOICE,3,{0,ctrl('M'),ctrl('J')}},
KS_NONE},
- PREVF_MENU,
- NEXTF_MENU,
-@@ -469,9 +469,9 @@
+@@ -474,14 +474,14 @@
static struct key folder_sub_keys[] =
{HELP_MENU,
@@ -176,7 +161,13 @@
PREVF_MENU,
NEXTF_MENU,
PREVPAGE_MENU,
-@@ -488,8 +488,8 @@
+ NEXTPAGE_MENU,
+- {"L", "List Mode", {MC_LISTMODE, 1, {'l'}}, KS_NONE},
++ {"L", "列表模式", {MC_LISTMODE, 1, {'l'}}, KS_NONE},
+ NULL_MENU,
+ NULL_MENU,
+ WHEREIS_MENU};
+@@ -493,8 +493,8 @@
static struct key folder_post_keys[] =
{HELP_MENU,
NULL_MENU,
@@ -187,7 +178,16 @@
PREVF_MENU,
NEXTF_MENU,
PREVPAGE_MENU,
-@@ -610,12 +610,12 @@
+@@ -537,7 +537,7 @@
+ fs.agg_ops = F_ON(F_ENABLE_AGG_OPS, ps_global) != 0;
+ fs.relative_path = 1;
+ fs.f.valid = fl_val_gen;
+- fs.f.title.bar = "FOLDER LIST";
++ fs.f.title.bar = "信件匣列表";
+ fs.f.title.style = FolderName;
+ fs.f.help.text = h_folder_maint;
+ fs.f.help.title = "HELP FOR FOLDERS";
+@@ -621,12 +621,12 @@
mailcap_free(); /* free resources we won't be using for a while */
memset(&css, 0, sizeof(CONT_SCR_S));
@@ -202,7 +202,51 @@
css.keymenu = &c_cfg_km;
css.edit = 1;
-@@ -904,7 +904,7 @@
+@@ -669,10 +669,10 @@
+ fs.context = *cntxtp;
+ fs.combined_view = !sublist && F_ON(F_CMBND_FOLDER_DISP, ps_global) != 0;
+ fs.f.valid = fl_val_gen;
+- fs.f.title.bar = "GOTO: SELECT FOLDER";
++ fs.f.title.bar = "前往:選擇資料匣";
+ fs.f.title.style = FolderName;
+ fs.f.help.text = h_folder_open;
+- fs.f.help.title = "HELP FOR OPENING FOLDERS";
++ fs.f.help.title = "開啟資料匣的輔助說明";
+ fs.km = &folder_sel_km;
+
+ /* If we were provided a string,
+@@ -681,7 +681,7 @@
+ if(sublist && *folder && context_isambig(folder)){
+ if((*cntxtp)->use & CNTXT_INCMNG){
+ q_status_message(SM_ORDER, 0, 3,
+- "All folders displayed for Incoming Collection");
++ "所有的資料匣被顯示為來源總集");
+ }
+ else{
+ folder_sublist_context(folder, *cntxtp, &fake_context,
+@@ -732,10 +732,10 @@
+ fs.context = *cntxtp;
+ fs.combined_view = F_ON(F_CMBND_FOLDER_DISP, ps_global) != 0;
+ fs.f.valid = fl_val_gen;
+- fs.f.title.bar = "SAVE: SELECT FOLDER";
++ fs.f.title.bar = "存檔:選擇資料匣";
+ fs.f.title.style = MessageNumber;
+ fs.f.help.text = h_folder_save;
+- fs.f.help.title = "HELP FOR SAVING MESSAGES TO FOLDERS";
++ fs.f.help.title = "將信件存入資料匣的輔助說明";
+ fs.km = &folder_sel_km;
+
+ /* If we were provided a string,
+@@ -744,7 +744,7 @@
+ if(sublist && *folder && context_isambig(folder)){
+ if((*cntxtp)->use & CNTXT_INCMNG){
+ q_status_message(SM_ORDER, 0, 3,
+- "All folders displayed for Incoming Collection");
++ "所有的資料匣被顯示為來源總集");
+ }
+ else{
+ folder_sublist_context(folder, *cntxtp, &fake_context,
+@@ -921,7 +921,7 @@
/* leave (*new_dir)->ref == NULL */
}
@@ -211,7 +255,7 @@
(*new_dir)->desc = cpystr(tmp_20k_buf);
}
-@@ -1003,12 +1003,12 @@
+@@ -1025,12 +1025,12 @@
CONT_SCR_S css;
memset(&css, 0, sizeof(CONT_SCR_S));
@@ -226,7 +270,7 @@
css.keymenu = km;
css.edit = edit_config;
-@@ -1079,7 +1079,7 @@
+@@ -1102,7 +1102,7 @@
pbuf.browse_help = h_composer_browse;
pbuf.attach_help = h_composer_ctrl_j;
pbuf.composer_help = h_composer;
@@ -235,7 +279,7 @@
pbuf.pine_anchor = set_titlebar(tmp, ps_global->mail_stream,
ps_global->context_current,
ps_global->cur_folder,ps_global->msgmap,
-@@ -1322,10 +1322,10 @@
+@@ -1347,10 +1347,10 @@
else
exists = (i & FEX_ISDIR);
@@ -249,7 +293,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 */
-@@ -1357,7 +1357,7 @@
+@@ -1382,7 +1382,7 @@
char *rstr = NULL;
void (*redraw)() = ps_global->redrawer;
#define CCA_PROMPT \
@@ -258,277 +302,262 @@
ps_global->redrawer = redraw_pico;
fix_windsize(ps_global);
-@@ -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,
-- "Can't save messages to bulletin boards or news groups!");
-+ "無法將訊息存至電子佈告欄或新聞組群上!");
- return(0);
- }
- #endif
-@@ -1489,7 +1489,7 @@
+@@ -1505,7 +1505,7 @@
FSTATE_S *fs;
{
- if(!strncmp(f->prefix, "SUB", 3)){
+ if(f->subscribed){
- q_status_message1(SM_ORDER, 0, 4, "Already subscribed to \"%s\"",
+ q_status_message1(SM_ORDER, 0, 4, "已訂閱\至 \"%s\"",
FLDR_NAME(f));
return(0);
}
-@@ -1502,7 +1502,7 @@
- fl_hdr_gen(ps)
- struct pine *ps;
- {
-- set_titlebar("FOLDER LIST", ps->mail_stream, ps->context_current,
-+ set_titlebar("信件匣列表", ps->mail_stream, ps->context_current,
- ps->cur_folder, ps->msgmap, 1, FolderName, 0, 0);
- }
-
-@@ -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, 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;
- 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;
-
-- km.keys[KM_COL_KEY].label = "Main Menu";
-+ km.keys[KM_COL_KEY].label = "主選單";
- km.keys[KM_COL_KEY].bind.cmd = MC_MAIN;
- km.keys[KM_COL_KEY].bind.ch[0] = 'm';
- }
-@@ -1768,14 +1768,14 @@
- if(listmode){
- clrbitn(SB_LIST_KEY, bitmap);
- km.keys[SB_SEL_KEY].name = "X";
-- km.keys[SB_SEL_KEY].label = "[Set/Unset]";
-+ km.keys[SB_SEL_KEY].label = "[設定/取消設定]";
- km.keys[SB_SEL_KEY].bind.cmd = MC_SELCUR;
- km.keys[SB_SEL_KEY].bind.ch[0] = 'x';
- }
- else{
- clrbitn(SB_SUB_KEY, bitmap);
- km.keys[SB_SEL_KEY].name = "S";
-- km.keys[SB_SEL_KEY].label = "[Subscribe]";
-+ km.keys[SB_SEL_KEY].label = "[訂閱\]";
- km.keys[SB_SEL_KEY].bind.cmd = MC_CHOICE;
- km.keys[SB_SEL_KEY].bind.ch[0] = 's';
- }
-@@ -1789,7 +1789,7 @@
- }
-
- if(cur_f && cur_f->isdir){
-- static struct key sel_key = {">", "[View Dir]",
-+ static struct key sel_key = {">", "[檢視目錄]",
- {MC_CHOICE,5,
- {'s','>','.',
- ctrl('M'),ctrl('J')}},
-@@ -1915,8 +1915,15 @@
- /*---------------------- Key left --------------*/
- case MC_CHARLEFT :
- case MC_PREVITEM :
-+ if (exit_to_main)
-+ {
-+ ps_global->next_screen = main_menu_screen;
-+ done++;
-+ }
- if((n = folder_lister_prev(fs)) >= 0)
- fs->folder_index = n;
-+ else
-+ exit_to_main = 1;
-
- break;
-
-@@ -1924,6 +1931,7 @@
- /*--------------------- Key right -------------------*/
- case MC_CHARRIGHT :
- case MC_NEXTITEM :
-+ exit_to_main = 0;
- if(n = folder_lister_next(fs))
- fs->folder_index = n;
-
-@@ -1945,7 +1953,7 @@
- rc--;
-
- if(rc < 0){
-- q_status_message(SM_ORDER, 0, 1, "Already on first line.");
-+ q_status_message(SM_ORDER, 0, 1, "已經到第一行了。");
- if(fs->top_row != 0){ /* make sure! */
- fs->top_row = 0;
- fs->prev_index = -1;
-@@ -1991,7 +1999,7 @@
- FOLDERS(fs->context))->d_line + 1;
-
- if(rc > fs->last_row){
-- q_status_message(SM_ORDER, 0, 1, "Already on last line.");
-+ q_status_message(SM_ORDER, 0, 1, "已經到最後一行了。");
- break;
- }
+@@ -1549,7 +1549,7 @@
+ }
+ else{
+ q_status_message(SM_ORDER | SM_DING, 3, 3,
+- "Formatting Error: Can't create space for list");
++ "格式化錯誤:無法為列表建立空間");
+ return(NULL);
+ }
-@@ -2156,7 +2164,7 @@
- rc++;
+@@ -1563,7 +1563,7 @@
+ memset(&sargs, 0, sizeof(SCROLL_S));
+ sargs.text.text = so_text(screen_text);
+ sargs.text.src = CharStar;
+- sargs.text.desc = "folder list";
++ sargs.text.desc = "信件匣列表";
+ if(sargs.text.handles = folder_list_handle(fs, handles))
+ sargs.start.on = Handle;
+
+@@ -1875,7 +1875,7 @@
+ else if(fp->fs->combined_view
+ && (F_ON(F_CMBND_SUBDIR_DISP, ps_global)
+ || !c_list->dir->prev)){
+- static char *emptiness = "[No Folders in Collection]";
++ static char *emptiness = "[總集中沒有資料匣]";
+
+ gf_puts(folder_list_center_space(emptiness, cols), pc);
+ len = folder_list_write(pc, c_list, -1, emptiness,
+@@ -1885,7 +1885,7 @@
+ else if(fp->fs->combined_view
+ && (F_ON(F_CMBND_SUBDIR_DISP, ps_global)
+ || !c_list->dir->prev)){
+- static char *unexpanded = "[Select Here to See Expanded List]";
++ static char *unexpanded = "[選這裡以檢視展開後的列表]";
+
+ gf_puts(folder_list_center_space(unexpanded, cols), pc);
+ len = folder_list_write(pc, c_list, -1, unexpanded,
+@@ -2092,11 +2092,11 @@
+ q_status_message(SM_ORDER, 0, 1, LISTMODE_GRIPE);
}
else
-- q_status_message(SM_ORDER,0,1,"Already on first page.");
-+ q_status_message(SM_ORDER,0,1,"已經到第一頁了。");
-
- break;
-
-@@ -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){
-- q_status_message(SM_ORDER,0,1,"Already on last page.");
-+ q_status_message(SM_ORDER,0,1,"已經到最後一頁了。");
- break;
- }
- else
-@@ -2210,7 +2218,7 @@
- }
- else
- q_status_message(SM_ORDER | SM_DING, 3, 3,
-- "Sorry, no help text available");
-+ "很抱歉,文字說明無法取得");
+- q_status_message(SM_ORDER, 0, 4, "Already in List Mode");
++ q_status_message(SM_ORDER, 0, 4, "已經處於列表模式中");
+ }
+ else
+ q_status_message(SM_ORDER, 0, 4,
+- "No Folders! Can't enter List Mode");
++ "沒有資料匣!無法進入列表模式");
- break;
+ break;
-@@ -2219,7 +2227,7 @@
- case MC_CHOICE :
- if(!folder_total(FOLDERS(fs->context))){
- q_status_message(SM_ORDER | SM_DING, 3, 3,
-- "Empty folder collection. Nothing to select!");
-+ "空的資料匣總集。沒有東西可供選擇!");
- }
- else if(folder_lister_select(cur_f, fs, listmode)){
- mangled_footer++;
-@@ -2279,7 +2287,7 @@
- mangled_footer++;
- }
- else
-- q_status_message(SM_ORDER, 0, 4, "Already in List Mode");
-+ q_status_message(SM_ORDER, 0, 4, "已經在列表模式了。");
+@@ -2122,7 +2122,7 @@
+ sparms->text.handles->h.f.index);
+ else
+ q_status_message(SM_ORDER, 0, 4,
+- "No Folders! Nothing to View");
++ "沒有資料匣!沒有可供檢視的項目");
- break;
+ break;
-@@ -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,
-- "No folder selected to delete. %s list.",
-- ALL_FOUND(fs->context) ? "Empty" : "Expand");
-+ "尚未選擇供刪除的資料匣。%s列表。",
-+ ALL_FOUND(fs->context) ? "空" : "展開");
- break;
- }
+@@ -2206,7 +2206,7 @@
+ }
+ else
+ q_status_message(SM_ORDER | SM_DING, 0, 4,
+- "Empty folder collection. No folder to rename!");
++ "空的資料匣總集。沒有可供更名的資料匣!");
+
+ break;
+
+@@ -2216,7 +2216,7 @@
+ if(!(sparms->text.handles
+ && folder_total(FOLDERS(sparms->text.handles->h.f.context)))){
+ q_status_message(SM_ORDER | SM_DING, 0, 4,
+- "Empty folder collection. No folder to delete!");
++ "空的資料匣總集。沒有可供刪除的資料匣!");
+ }
+ else if(delete_folder(sparms->text.handles->h.f.context,
+ sparms->text.handles->h.f.index)){
+@@ -2336,7 +2336,7 @@
+ }
+ else
+ q_status_message(SM_ORDER | SM_DING, 0, 4,
+- "Empty folder collection. No folder to select!");
++ "空的資料匣總集。沒有可供選擇的資料匣!");
-@@ -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,
-- "In Zoomed list of %s folders. Use \"Z\" to restore regular list",
-+ "在 %s 個資料匣縮放的列表中。使用 \"Z\" 來回復正常列表",
- int2string(n));
+ break;
- }
- else{
+@@ -2352,11 +2352,11 @@
+ if(sparms->text.handles->h.f.context->use & CNTXT_ZOOM){
+ sparms->text.handles->h.f.context->use &= ~CNTXT_ZOOM;
q_status_message(SM_ORDER, 0, 3,
- "Folder List Zoom mode is now off");
+ "資料匣列表縮放模式目前為關閉狀態");
}
-
- create_folder_display(fs, ps->ttyo->screen_cols);
-@@ -2508,7 +2516,7 @@
+ else{
+ q_status_message1(SM_ORDER, 0, 3,
+- "In Zoomed list of %s folders. Use \"Z\" to restore regular list",
++ "在 %s 個資料匣縮放的列表中。使用 \"Z\" 來回復正常列表",
+ int2string(n));
+ sparms->text.handles->h.f.context->use |= CNTXT_ZOOM;
+ }
+@@ -2376,10 +2376,10 @@
}
else
q_status_message(SM_ORDER, 0, 3,
- "No selected folders to Zoom on");
+ "尚未選擇供放大的資料匣。");
+ }
+ else
+- q_status_message(SM_ORDER, 0, 4, "No Folders to Zoom on!");
++ q_status_message(SM_ORDER, 0, 4, "沒有可供放大的資料匣!");
+ break;
- break;
-@@ -2518,16 +2526,16 @@
- case MC_WHEREIS :
- switch(search_folders(fs, -FOOTER_ROWS(ps))){
- case -1 :
-- cmd_cancelled("Folder name search");
-+ cmd_cancelled("搜尋檔案匣名稱");
- break;
-
- case 0 :
-- q_status_message(SM_ORDER | SM_DING, 0, 2, "Word not found");
-+ q_status_message(SM_ORDER | SM_DING, 0, 2, "找不到該字");
- break;
-
- case 2 :
- q_status_message(SM_ORDER, 0, 2,
-- "Search wrapped to beginning");
-+ "從頭搜尋");
- break;
- }
+@@ -2469,7 +2469,7 @@
+ empty++;
-@@ -2594,8 +2602,8 @@
- && ALL_FOUND(fs->context))
- return(fs->folder_index + 1);
+ if(empty)
+- q_status_message(SM_ORDER | SM_DING, 3, 3, "Empty folder list!");
++ q_status_message(SM_ORDER | SM_DING, 3, 3, "空的資料匣列表!");
-- q_status_message1(SM_ORDER, 0, 1, "Already on last %sfolder",
-- fs->zoomed ? "Zoomed " : "");
-+ q_status_message1(SM_ORDER, 0, 1, "已經在最後一個%s資料匣了",
-+ fs->zoomed ? "縮放後的" : "");
- return(0);
+ return(rv);
}
-
-@@ -2616,8 +2624,8 @@
- else if(fs->folder_index > 0 && ALL_FOUND(fs->context))
- return(fs->folder_index - 1);
-
-- q_status_message1(SM_ORDER, 0, 1, "Already on first %sfolder",
-- fs->zoomed ? "Zoomed " : "");
-+ q_status_message1(SM_ORDER, 0, 1, "已經在第一個%s資料匣了",
-+ fs->zoomed ? "縮放後的" : "");
- return(-1);
- }
-
-@@ -2632,7 +2640,7 @@
- if(listmode){
- if(NEWS_TEST(fs->context) && !strncmp(f->prefix, "SUB", 3)){
- q_status_message1(SM_ORDER, 0, 3,
-- "Already subscribed to \"%s\"",
-+ "已訂閱\至 \"%s\"",
- FLDR_NAME(f));
+@@ -2510,14 +2510,14 @@
+ ? sparms->text.handles->h.f.context->dir->prev
+ : FPROC(sparms)->fs->context->dir->prev){
+ sparms->keys.menu->keys[KM_COL_KEY].bind.ch[0] = 'e';
+- sparms->keys.menu->keys[KM_COL_KEY].label = "ParentDir";
++ sparms->keys.menu->keys[KM_COL_KEY].label = "上層目錄";
+ sparms->keys.menu->keys[KM_COL_KEY].bind.cmd = MC_PARENT;
+ }
+ else if((FPROC(sparms)->fs->context->next
+ || FPROC(sparms)->fs->context->prev)
+ && !FPROC(sparms)->fs->combined_view){
+ sparms->keys.menu->keys[KM_COL_KEY].bind.ch[0] = 'e';
+- sparms->keys.menu->keys[KM_COL_KEY].label = "ClctnList";
++ sparms->keys.menu->keys[KM_COL_KEY].label = "總集列表";
+ sparms->keys.menu->keys[KM_COL_KEY].bind.cmd = MC_EXIT;
+ }
+ else{
+@@ -2529,7 +2529,7 @@
+ sparms->keys.menu->keys[KM_MAIN_KEY].bind.cmd = MC_NONE;
+ sparms->keys.menu->keys[KM_MAIN_KEY].bind.nch = 0;
+
+- sparms->keys.menu->keys[KM_COL_KEY].label = "Main Menu";
++ sparms->keys.menu->keys[KM_COL_KEY].label = "主選單";
+ sparms->keys.menu->keys[KM_COL_KEY].bind.cmd = MC_MAIN;
+ sparms->keys.menu->keys[KM_COL_KEY].bind.ch[0] = 'm';
+ }
+@@ -2545,7 +2545,7 @@
+ FOLDERS(sparms->text.handles->h.f.context)))){
+ if(fp->isdir){
+ if(fp->isfolder){
+- sparms->keys.menu->keys[KM_SEL_KEY].label = "View Dir";
++ sparms->keys.menu->keys[KM_SEL_KEY].label = "檢視目錄";
+ menu_clear_binding(sparms->keys.menu, 'v');
+ menu_clear_binding(sparms->keys.menu, ctrl('M'));
+ menu_clear_binding(sparms->keys.menu, ctrl('J'));
+@@ -2555,7 +2555,7 @@
+ setbitn(KM_ALTVIEW_KEY, sparms->keys.bitmap);
+ }
+ else{
+- sparms->keys.menu->keys[KM_SEL_KEY].label = "[View Dir]";
++ sparms->keys.menu->keys[KM_SEL_KEY].label = "[檢視目錄]";
+ menu_add_binding(sparms->keys.menu, 'v', MC_CHOICE);
+ menu_add_binding(sparms->keys.menu, ctrl('M'), MC_CHOICE);
+ menu_add_binding(sparms->keys.menu, ctrl('J'), MC_CHOICE);
+@@ -2563,7 +2563,7 @@
+ }
}
else{
-@@ -2642,7 +2650,7 @@
+- sparms->keys.menu->keys[KM_SEL_KEY].label = "[View Fldr]";
++ sparms->keys.menu->keys[KM_SEL_KEY].label = "[檢視資料匣]";
+ menu_add_binding(sparms->keys.menu, 'v', MC_CHOICE);
+ menu_add_binding(sparms->keys.menu, ctrl('M'), MC_CHOICE);
+ menu_add_binding(sparms->keys.menu, ctrl('J'), MC_CHOICE);
+@@ -2573,7 +2573,7 @@
+ else if(FPROC(sparms)->fs->combined_view
+ && sparms->text.handles && sparms->text.handles->h.f.context
+ && !sparms->text.handles->h.f.context->dir->prev){
+- sparms->keys.menu->keys[KM_SEL_KEY].label = "[View Cltn]";
++ sparms->keys.menu->keys[KM_SEL_KEY].label = "[檢視總集]";
+ menu_add_binding(sparms->keys.menu, 'v', MC_CHOICE);
+ menu_add_binding(sparms->keys.menu, ctrl('M'), MC_CHOICE);
+ menu_add_binding(sparms->keys.menu, ctrl('J'), MC_CHOICE);
+@@ -2616,7 +2623,7 @@
+ ? sparms->text.handles->h.f.context->dir->prev
+ : FPROC(sparms)->fs->context->dir->prev){
+ sparms->keys.menu->keys[FC_COL_KEY].name = "<";
+- sparms->keys.menu->keys[FC_COL_KEY].label = "ParentDir";
++ sparms->keys.menu->keys[FC_COL_KEY].label = "上層目錄";
+ sparms->keys.menu->keys[FC_COL_KEY].bind.cmd = MC_PARENT;
+ sparms->keys.menu->keys[FC_COL_KEY].bind.nch = 2;
+ sparms->keys.menu->keys[FC_COL_KEY].bind.ch[0] = '<';
+@@ -2627,7 +2634,7 @@
+ || FPROC(sparms)->fs->context->prev)
+ && !FPROC(sparms)->fs->combined_view){
+ sparms->keys.menu->keys[FC_COL_KEY].name = "<";
+- sparms->keys.menu->keys[FC_COL_KEY].label = "ClctnList";
++ sparms->keys.menu->keys[FC_COL_KEY].label = "總集列表";
+ sparms->keys.menu->keys[FC_COL_KEY].bind.cmd = MC_COLLECTIONS;
+ sparms->keys.menu->keys[FC_COL_KEY].bind.nch = 2;
+ sparms->keys.menu->keys[FC_COL_KEY].bind.ch[0] = '<';
+@@ -2639,7 +2646,7 @@
+ * turn off "ExitSelect" in first slot
+ */
+ sparms->keys.menu->keys[FC_COL_KEY].name = "E";
+- sparms->keys.menu->keys[FC_COL_KEY].label = "ExitSelect";
++ sparms->keys.menu->keys[FC_COL_KEY].label = "離開";
+ sparms->keys.menu->keys[FC_COL_KEY].bind.cmd = MC_EXIT;
+ sparms->keys.menu->keys[FC_COL_KEY].bind.nch = 1;
+ sparms->keys.menu->keys[FC_COL_KEY].bind.ch[0] = 'e';
+@@ -2651,7 +2658,7 @@
+ FOLDERS(sparms->text.handles->h.f.context)))
+ && fp->isdir){
+ sparms->keys.menu->keys[FC_SEL_KEY].name = ">";
+- sparms->keys.menu->keys[FC_SEL_KEY].label = "[View Dir]";
++ sparms->keys.menu->keys[FC_SEL_KEY].label = "[檢視目錄]";
+ menu_clear_binding(sparms->keys.menu, 's');
+ menu_add_binding(sparms->keys.menu, 'v', MC_CHOICE);
+ menu_add_binding(sparms->keys.menu, '>', MC_CHOICE);
+@@ -2659,7 +2666,7 @@
}
else{
- if(f->isdir){
-- q_status_message(SM_ORDER, 0, 3, "Can't select directories");
-+ q_status_message(SM_ORDER, 0, 3, "無法選擇目錄");
- }
- else
- folder_select_toggle(fs, f);
-@@ -2699,13 +2707,13 @@
- extern char *sel_pmt2;
-
- if((f = folder_entry(fs->folder_index, FOLDERS(fs->context)))->isdir){
-- q_status_message(SM_ORDER | SM_DING, 0, 3, "Can't Select directories");
-+ q_status_message(SM_ORDER | SM_DING, 0, 3, "無法選擇目錄");
- return(0);
+ sparms->keys.menu->keys[FC_SEL_KEY].name = "S";
+- sparms->keys.menu->keys[FC_SEL_KEY].label = "[Select]";
++ sparms->keys.menu->keys[FC_SEL_KEY].label = "[選擇]";
+ menu_clear_binding(sparms->keys.menu, 'v');
+ menu_clear_binding(sparms->keys.menu, '>');
+ menu_clear_binding(sparms->keys.menu, '.');
+@@ -2695,14 +2702,14 @@
+ if(FPROC(sparms)->fs->list_cntxt){
+ clrbitn(SB_LIST_KEY, sparms->keys.bitmap);
+ sparms->keys.menu->keys[SB_SEL_KEY].name = "X";
+- sparms->keys.menu->keys[SB_SEL_KEY].label = "[Set/Unset]";
++ sparms->keys.menu->keys[SB_SEL_KEY].label = "[設定/取消設定]";
+ sparms->keys.menu->keys[SB_SEL_KEY].bind.cmd = MC_SELCUR;
+ sparms->keys.menu->keys[SB_SEL_KEY].bind.ch[0] = 'x';
}
-
- sel_opts = self_opts2;
- if(old_tot = selected_folders(fs)){
-- sel_opts1[1].label = "unselect Cur" + (f->selected ? 0 : 2);
-+ sel_opts1[1].label = "取消目前選擇" + (f->selected ? 0 : 2);
- sel_opts += 2; /* disable extra options */
- switch(q = radio_buttons(SEL_ALTER_PMT, -FOOTER_ROWS(ps_global),
- sel_opts1, 'c', 'x', help, RB_NORM)){
-@@ -2730,7 +2738,7 @@
+ else{
+ clrbitn(SB_SUB_KEY, sparms->keys.bitmap);
+ sparms->keys.menu->keys[SB_SEL_KEY].name = "S";
+- sparms->keys.menu->keys[SB_SEL_KEY].label = "[Subscribe]";
++ sparms->keys.menu->keys[SB_SEL_KEY].label = "[訂閱\]";
+ sparms->keys.menu->keys[SB_SEL_KEY].bind.cmd = MC_CHOICE;
+ sparms->keys.menu->keys[SB_SEL_KEY].bind.ch[0] = 's';
+ }
+@@ -2778,7 +2785,7 @@
default :
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -537,7 +566,7 @@
return(0);
}
}
-@@ -2744,7 +2752,7 @@
+@@ -2792,7 +2799,7 @@
*/
switch(q){
case 'x': /* cancel */
@@ -546,9 +575,9 @@
return(0);
case 'c' : /* toggle current's selected state */
-@@ -2766,10 +2774,10 @@
- create_folder_display(fs, ps_global->ttyo->screen_cols);
- }
+@@ -2804,10 +2811,10 @@
+ for(total = i = 0; i < n; i++)
+ folder_entry(i, FOLDERS(context))->selected = old_tot == 0;
- q_status_message4(SM_ORDER, 0, 2, "%s%s folder%s %sselected",
- old_tot ? "" : "All ",
@@ -560,7 +589,7 @@
return(1);
case 't' : /* Text */
-@@ -2786,7 +2794,7 @@
+@@ -2824,7 +2831,7 @@
default :
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -569,9 +598,9 @@
return(0);
}
-@@ -2815,35 +2823,30 @@
+@@ -2852,34 +2859,30 @@
- if(!(diff = (total = selected_folders(fs)) - old_tot)){
+ if(!(diff = (total = selected_folders(context)) - old_tot)){
if(narrow)
- q_status_message4(SM_ORDER, 0, 2,
- "%s. %s folder%s remain%s selected.",
@@ -581,54 +610,54 @@
- (old_tot == 1L) ? "s" : "");
+ q_status_message2(SM_ORDER, 0, 2,
+ "%s。 仍有 %s 個資料匣被選擇。",
-+ j ? "沒有導致改變"
-+ : "交點中沒有信件", comatose(old_tot));
++ j ? "沒有造成改變"
++ : "交點中沒有信件",
++ comatose(old_tot));
else if(old_tot && j)
q_status_message(SM_ORDER, 0, 2,
- "No change resulted. Matching folders already selected.");
-+ "沒有導致改變。符合的資料匣已經被選擇了。");
++ "沒有造成改變。符合的資料匣已經被選擇了。");
else
q_status_message1(SM_ORDER | SM_DING, 0, 2,
- "Select failed! No %sfolders selected.",
- old_tot ? "additional " : "");
+ "選擇失敗!沒有%s資料匣被選擇。",
-+ old_tot ? "額外的 " : "");
++ old_tot ? "額外的" : "");
}
- else{
- if(old_tot){
- sprintf(tmp_20k_buf,
-- "Select matched %ld folder%s! %s %sfolder%s %sselected.",
-+ "選擇符合的 %ld 個資料匣!共計 %s 個資料匣被%s選擇.",
- (diff > 0) ? diff : old_tot + diff,
-- plural((diff > 0) ? diff : old_tot + diff),
- comatose((diff > 0) ? total : -diff),
-- (diff > 0) ? "total " : "",
-- plural((diff > 0) ? total : -diff),
-- (diff > 0) ? "" : "UN");
-+ (diff > 0) ? "" : "取消");
- q_status_message(SM_ORDER, 0, 2, tmp_20k_buf);
- }
- else{
-- q_status_message2(SM_ORDER, 0, 2, "Select matched %s folder%s!",
-- comatose(diff), plural(diff));
-+ q_status_message1(SM_ORDER, 0, 2, "選擇符合的 %s 個資料匣!",
-+ comatose(diff));
-
- if(F_OFF(F_SELECTED_SHOWN_BOLD, ps_global)){
- folder_prefixes(fs, " ");
-@@ -3031,9 +3034,9 @@
-
- fs->prev_index = -1; /* redraw display */
+ else if(old_tot){
+ sprintf(tmp_20k_buf,
+- "Select matched %ld folder%s. %s %sfolder%s %sselected.",
++ "選擇符合的 %ld 個資料匣!共計 %s 個資料匣被%s選擇。",
+ (diff > 0) ? diff : old_tot + diff,
+- plural((diff > 0) ? diff : old_tot + diff),
+ comatose((diff > 0) ? total : -diff),
+- (diff > 0) ? "total " : "",
+- plural((diff > 0) ? total : -diff),
+- (diff > 0) ? "" : "UN");
++ (diff > 0) ? "" : "取消");
+ q_status_message(SM_ORDER, 0, 2, tmp_20k_buf);
+ }
+ else
+- q_status_message2(SM_ORDER, 0, 2, "Select matched %s folder%s.",
+- comatose(diff), plural(diff));
++ q_status_message1(SM_ORDER, 0, 2, "選擇符合的 %s 個資料匣!",
++ comatose(diff));
+ return(1);
+ }
+@@ -2995,9 +2998,9 @@
+ fp->prev = context->dir;
+ fp->status |= CNTXT_SUBDIR;
+ context->dir = fp;
- q_status_message2(SM_ORDER, 0, 3, "Now in %sdirectory: %s",
+ q_status_message2(SM_ORDER, 0, 3, "目前在 %s目錄中:%s",
- folder_total(FOLDERS(fs->context))
+ folder_total(FOLDERS(context))
- ? "" : "EMPTY ", fp->ref);
+ ? "" : "空的 ", fp->ref);
rv++;
}
else
-@@ -3052,7 +3055,7 @@
+@@ -3016,7 +3019,7 @@
char *p;
/* Provide context in new collection header */
@@ -637,14 +666,14 @@
((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 */
+@@ -3062,12 +3065,12 @@
+ context->dir = fp;
if(fp->status & CNTXT_SUBDIR)
- q_status_message1(SM_ORDER, 0, 3, "Now in directory: %s",
+ q_status_message1(SM_ORDER, 0, 3, "目前所在目錄:%s",
strsquish(tmp_20k_buf + 500, fp->ref,
- fs->display_cols - 22));
+ ps_global->ttyo->screen_cols - 22));
else
q_status_message(SM_ORDER, 0, 3,
- "Returned to collection's top directory");
@@ -652,8 +681,8 @@
rv++;
}
-@@ -3673,12 +3676,12 @@
- if(fs->context->use & CNTXT_INCMNG){
+@@ -3258,12 +3261,12 @@
+ if(context->use & CNTXT_INCMNG){
char inbox_host[MAXPATH], *beg, *end = NULL;
ESCKEY_S *special_key;
- static ESCKEY_S host_key[] = {{ctrl('X'),12,"^X","Use Inbox Host"},
@@ -667,7 +696,7 @@
return(FALSE);
}
-@@ -3700,7 +3703,7 @@
+@@ -3285,7 +3288,7 @@
else
special_key = NULL;
@@ -676,7 +705,7 @@
help = NO_HELP;
while(1){
int flags = OE_APPEND_CURRENT;
-@@ -3718,7 +3721,7 @@
+@@ -3303,7 +3306,7 @@
}
else if(rc == 1){
q_status_message(SM_ORDER,0,2,
@@ -685,7 +714,7 @@
return(FALSE);
}
else if(rc == 0)
-@@ -3728,7 +3731,7 @@
+@@ -3313,7 +3316,7 @@
if(offset = strlen(add_folder)){ /* must be host for incoming */
int i;
@@ -694,7 +723,7 @@
for(i = offset;i >= 0; i--)
add_folder[i+1] = add_folder[i];
-@@ -3737,7 +3740,7 @@
+@@ -3322,7 +3325,7 @@
add_folder[++offset] = '\0'; /* +2, total */
}
else
@@ -703,7 +732,7 @@
help = NO_HELP;
while(1){
-@@ -3745,14 +3748,14 @@
+@@ -3330,14 +3333,14 @@
p = NULL;
if(isdir){
@@ -722,34 +751,29 @@
}
flags = OE_APPEND_CURRENT;
-@@ -3766,7 +3769,7 @@
+@@ -3351,10 +3354,10 @@
if(!ps_global->show_dot_names && add_folder[offset] == '.'){
if(cnt++ <= 0)
- q_status_message(SM_ORDER,3,3,
-- "Folder name can't begin with dot");
-+ "資料匣不能以點 \".\" 為名稱開頭");
- else{
- NAMEVAL_S *feat;
- int i;
-@@ -3776,7 +3779,7 @@
- ;/* do nothing */
-
- q_status_message1(SM_ORDER,3,3,
+ q_status_message(SM_ORDER,3,3,
+- "Folder name can't begin with dot");
++ "資料匣不能以點 \".\" 為名稱開頭");
+ else
+ q_status_message1(SM_ORDER,3,3,
- "Config feature \"%s\" enables names beginning with dot",
+ "設定檔中 \"%s\" 的功\能可使資料匣以點 \".\" 為名稱開頭",
- feat && feat->name ? feat->name : "");
- }
+ feature_list_name(F_ENABLE_DOT_FOLDERS));
-@@ -3796,7 +3799,7 @@
+ display_message(NO_OP_COMMAND);
+@@ -3373,7 +3376,7 @@
}
- else if(*p == fs->context->dir->delim){
+ else if(*p == context->dir->delim){
q_status_message(SM_ORDER|SM_DING, 3, 3,
- "Can't have trailing directory delimiters!");
+ "不能有目錄尾端的分隔號 \"/\"!");
display_message('X');
continue;
}
-@@ -3818,7 +3821,7 @@
+@@ -3395,7 +3398,7 @@
: NO_HELP;
}
else if(rc == 1 || add_folder[0] == '\0') {
@@ -758,16 +782,16 @@
return(FALSE);
}
}
-@@ -3837,7 +3840,7 @@
+@@ -3414,7 +3417,7 @@
help = NO_HELP;
- if(fs->context->use & CNTXT_INCMNG){
+ if(context->use & CNTXT_INCMNG){
- sprintf(tmp, "Nickname for folder \"%s\" : ", &add_folder[offset]);
+ sprintf(tmp, "資料匣\"%s\" 的暱稱:", &add_folder[offset]);
while(1){
int flags = OE_APPEND_CURRENT;
-@@ -3858,7 +3861,7 @@
+@@ -3435,7 +3438,7 @@
}
else if(rc == 1 || (rc != 3 && !*nickname)){
q_status_message(SM_ORDER,0,2,
@@ -776,8 +800,8 @@
return(FALSE);
}
}
-@@ -3873,7 +3876,7 @@
- f = folder_entry(offset, FOLDERS(fs->context));
+@@ -3450,7 +3453,7 @@
+ f = folder_entry(offset, FOLDERS(context));
if(!strucmp(FLDR_NAME(f), nickname[0] ? nickname : add_folder)){
q_status_message1(SM_ORDER | SM_DING, 0, 3,
- "Incoming folder \"%s\" already exists",
@@ -785,7 +809,7 @@
nickname[0] ? nickname : add_folder);
return(FALSE);
}
-@@ -3927,7 +3930,7 @@
+@@ -3503,18 +3506,18 @@
if(nickname[0])
strcpy(add_folder, nickname); /* known by new name */
@@ -794,16 +818,11 @@
return_val = add_folder;
}
else if(context_isambig(add_folder)){
-@@ -3943,15 +3946,15 @@
- */
- refresh_folder_list(fs, TRUE);
-
-- q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" created",
-- isdir ? "Directory" : "Folder", add_folder);
-+ q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" 已建立",
-+ isdir ? "目錄" : "資料匣", add_folder);
- }
-
+ free_folder_list(context);
+- q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" created",
+- isdir ? "Directory" : "Folder", add_folder);
++ q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" 已建立",
++ isdir ? "目錄" : "資料匣", add_folder);
return_val = add_folder;
}
else
@@ -813,7 +832,7 @@
add_folder);
return(return_val != NULL);
-@@ -3990,13 +3993,13 @@
+@@ -3553,13 +3556,13 @@
subscribe_keys[i = 0].ch = ctrl('T');
subscribe_keys[i].rval = 12;
subscribe_keys[i].name = "^T";
@@ -829,7 +848,7 @@
}
subscribe_keys[i].ch = -1;
-@@ -4057,7 +4060,7 @@
+@@ -3620,7 +3623,7 @@
}
else{
q_status_message(SM_ORDER, 0, 2,
@@ -838,7 +857,7 @@
continue;
}
-@@ -4110,10 +4113,10 @@
+@@ -3673,10 +3676,10 @@
else{
if(rc == 12)
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -851,16 +870,16 @@
folder);
free_folder_list(&subscribe_cntxt);
-@@ -4162,7 +4165,7 @@
-
+@@ -3721,7 +3724,7 @@
if(rc < 0){
+ folder[0] = '\0'; /* make sure not to return partials */
if(rc == -1)
- q_status_message(SM_ORDER, 0, 3, "Subscribe cancelled");
+ q_status_message(SM_ORDER, 0, 3, "取消訂閱\");
}
else{
if(folders){ /*------ Actually do the subscription -----*/
-@@ -4184,7 +4187,7 @@
+@@ -3743,7 +3746,7 @@
*/
q_status_message1(errors ?SM_INFO : SM_ORDER,
errors ? 0 : 3, 3,
@@ -869,7 +888,7 @@
(char *) flp->name);
errors++;
}
-@@ -4208,13 +4211,13 @@
+@@ -3767,13 +3770,13 @@
if(n == 0)
q_status_message(SM_ORDER | SM_DING, 3, 5,
@@ -886,7 +905,7 @@
errors ? comatose((long)errors) : "");
free_strlist(&folders);
-@@ -4223,7 +4226,7 @@
+@@ -3782,7 +3785,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 +914,7 @@
}
else if(ALL_FOUND(cntxt)){
/*---- Update the screen display data structures -----*/
-@@ -4237,7 +4240,7 @@
+@@ -3796,7 +3799,7 @@
}
if(folder[0])
@@ -904,21 +923,21 @@
}
free_fdir(&subscribe_cntxt.dir, 1);
-@@ -4277,19 +4280,19 @@
+@@ -3837,19 +3840,19 @@
- if(NEWS_TEST(fs->context)){
+ if(NEWS_TEST(context)){
q_status_message(SM_ORDER | SM_DING, 3, 3,
- "Can't rename bulletin boards or news groups!");
+ "無法更改電子佈告欄或新聞組群的名稱!");
return(0);
}
- else if(!folder_total(FOLDERS(fs->context))){
+ else if(!folder_total(FOLDERS(context))){
q_status_message(SM_ORDER | SM_DING, 0, 4,
- "Empty folder collection. No folder to rename!");
+ "空的資料匣總集。沒有可供更名的資料匣!");
return(0);
}
- else if((new_f = folder_entry(fs->folder_index, FOLDERS(fs->context)))
+ else if((new_f = folder_entry(index, FOLDERS(context)))
&& (!strucmp(FLDR_NAME(new_f), ps_global->inbox_name)
|| new_f->parent)) {
q_status_message1(SM_ORDER | SM_DING, 3, 4,
@@ -927,13 +946,13 @@
new_f->parent
? new_f->nickname
: ps_global->inbox_name);
-@@ -4305,11 +4308,11 @@
+@@ -3865,11 +3868,11 @@
ren_cur = strcmp(folder, ps_global->cur_folder) == 0;
- sprintf(prompt, "Rename %s to : ",
+ sprintf(prompt, "將 %s 更名為:",
- (fs->context->use & CNTXT_INCMNG)
+ (context->use & CNTXT_INCMNG)
- ? "nickname"
+ ? "暱稱"
: (isdir = new_f->isdir)
@@ -942,27 +961,22 @@
help = NO_HELP;
strcpy(new_name, folder);
while(1) {
-@@ -4330,7 +4333,7 @@
+@@ -3890,10 +3893,10 @@
if(!ps_global->show_dot_names && *new_name == '.'){
if(cnt++ <= 0)
q_status_message(SM_ORDER,3,3,
- "Folder name can't begin with dot");
+ "資料匣不能以點 \".\" 為名稱開頭");
- else{
- NAMEVAL_S *feat;
- int i;
-@@ -4340,7 +4343,7 @@
- ;/* do nothing */
-
- q_status_message1(SM_ORDER,3,3,
+ else
+ q_status_message1(SM_ORDER,3,3,
- "Config feature \"%s\" enables names beginning with dot",
+ "設定檔中 \"%s\" 的功\能可使資料匣以點 \".\" 為名稱開頭",
- feat && feat->name ? feat->name : "");
- }
+ feature_list_name(F_ENABLE_DOT_FOLDERS));
-@@ -4350,13 +4353,13 @@
+ display_message(NO_OP_COMMAND);
+@@ -3902,13 +3905,13 @@
- if(folder_index(new_name, fs->context, FI_ANY) >= 0){
+ if(folder_index(new_name, context, FI_ANY) >= 0){
q_status_message1(SM_ORDER, 3, 3,
- "Folder \"%s\" already exists",
+ "資料匣 \"%s\" 已存在",
@@ -976,25 +990,25 @@
ps_global->inbox_name);
display_message(NO_OP_COMMAND);
continue;
-@@ -4379,7 +4382,7 @@
+@@ -3931,7 +3934,7 @@
if(rc == 1
- || !(*new_name || (fs->context->use & CNTXT_INCMNG))
+ || !(*new_name || (context->use & CNTXT_INCMNG))
|| !strcmp(new_name, folder)){
- q_status_message(SM_ORDER, 0, 2, "Folder rename cancelled");
+ q_status_message(SM_ORDER, 0, 2, "取消資料匣更名");
return(0);
}
-@@ -4461,7 +4464,7 @@
+@@ -4012,7 +4015,7 @@
/* renaming sent-mail or saved-messages */
- if(context_create(fs->context, NULL, folder)){
+ if(context_create(context, NULL, folder)){
q_status_message3(SM_ORDER,0,3,
- "Folder \"%s\" renamed to \"%s\". New \"%s\" created",
+ "資料匣 \"%s\" 名稱改為 \"%s\"。建立新的 \"%s\"",
folder, new_name,
pretty_fn(
(strcmp(ps_global->VAR_DEFAULT_SAVE_FOLDER,
-@@ -4472,7 +4475,7 @@
+@@ -4023,7 +4026,7 @@
}
else{
q_status_message1(SM_ORDER | SM_DING, 3, 4,
@@ -1002,8 +1016,8 @@
+ "建立新的資料匣 \"%s\" 時發生錯誤", folder);
dprint(2, (debugfile, "Error creating \"%s\" in %s context\n",
- folder, fs->context->context));
-@@ -4480,7 +4483,7 @@
+ folder, context->context));
+@@ -4031,7 +4034,7 @@
}
else
q_status_message2(SM_ORDER, 0, 3,
@@ -1011,24 +1025,18 @@
+ "資料匣 \"%s\" 名稱改為 \"%s\"",
pretty_fn(folder), pretty_fn(new_name));
- /* Rebuild folder list */
-@@ -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);
- }
+ free_folder_list(context);
+@@ -4068,7 +4071,7 @@
+ int ret, close_opened = 0, blast_folder = 1;
- if(NEWS_TEST(fs->context)){
+ if(NEWS_TEST(context)){
- static char fmt[] = "Really unsubscribe from \"%.*s\"";
+ static char fmt[] = "確定自 \"%.*s\" 中解除訂閱\嗎";
- folder = folder_entry(fs->folder_index, FOLDERS(fs->context))->name;
+ folder = folder_entry(index, FOLDERS(context))->name;
/* 4 is strlen("%.*s") */
-@@ -4557,7 +4560,7 @@
- (void) context_apply(tmp_20k_buf, fs->context, folder);
+@@ -4090,7 +4093,7 @@
+ (void) context_apply(tmp_20k_buf, context, folder);
if(!mail_unsubscribe(NULL, tmp_20k_buf)){
q_status_message1(SM_ORDER | SM_DING, 3, 3,
- "Error unsubscribing from \"%s\"", folder);
@@ -1036,9 +1044,9 @@
return(0);
}
-@@ -4579,12 +4582,12 @@
+@@ -4107,12 +4110,12 @@
- if(ps_global->readonly_pinerc && (fs->context->use & CNTXT_INCMNG)){
+ if(ps_global->readonly_pinerc && (context->use & CNTXT_INCMNG)){
q_status_message(SM_ORDER,3,5,
- "Deletion cancelled: config file not editable");
+ "取消刪除:無法編輯設定檔");
@@ -1050,8 +1058,8 @@
+ "無法刪除特殊資料匣 \"%s\"。", ps_global->inbox_name);
return(0);
}
- else if(fs->context == ps_global->context_current
-@@ -4599,7 +4602,7 @@
+ else if(context == ps_global->context_current
+@@ -4127,7 +4130,7 @@
if(ret){
q_status_message1(SM_ORDER | SM_DING, 3, 4,
@@ -1060,9 +1068,9 @@
folder);
return(0);
}
-@@ -4610,19 +4613,19 @@
+@@ -4138,19 +4141,19 @@
*/
- if(folder_index(folder, fs->context, FI_FOLDER) >= 0
+ if(folder_index(folder, context, FI_FOLDER) >= 0
&& (ret = want_to(DIR_FOLD_PMT,'n','x',NO_HELP,WT_NORM)) != 'y'){
- q_status_message(SM_ORDER,0,3, (ret == 'x') ? "Delete cancelled"
- : "No folder deleted");
@@ -1072,7 +1080,7 @@
}
}
- if(fs->context->use & CNTXT_INCMNG){
+ if(context->use & CNTXT_INCMNG){
static ESCKEY_S delf_opts[] = {
- {'n', 'n', "N", "Nickname only"},
- {'b', 'b', "B", "Both Folder and Nickname"},
@@ -1085,7 +1093,7 @@
switch(radio_buttons(DELF_PROMPT, -FOOTER_ROWS(ps_global),
delf_opts,'n','x',NO_HELP,RB_NORM)){
-@@ -4631,7 +4634,7 @@
+@@ -4159,7 +4162,7 @@
break;
case 'x' :
@@ -1094,7 +1102,7 @@
return(0);
default :
-@@ -4639,13 +4642,13 @@
+@@ -4167,13 +4170,13 @@
}
}
else{
@@ -1113,7 +1121,7 @@
return(0);
}
}
-@@ -4688,13 +4691,13 @@
+@@ -4216,13 +4219,13 @@
/*
* BUG: what if sent-mail or saved-messages????
*/
@@ -1123,14 +1131,14 @@
}
}
-- q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" deleted!",
+- q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" deleted.",
- blast_folder ? "Folder" : "Nickname", folder);
-+ q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" 已被刪除!",
++ q_status_message2(SM_ORDER, 0, 3, "%s \"%s\" 已刪除。",
+ blast_folder ? "資料匣" : "暱稱", folder);
- if(fs->context->use & CNTXT_INCMNG){
-@@ -4839,7 +4842,7 @@
+ if(context->use & CNTXT_INCMNG){
+@@ -4299,7 +4302,7 @@
int flags;
pat[0] = '\0';
@@ -1139,7 +1147,7 @@
while(1){
flags = OE_APPEND_CURRENT | OE_DISALLOW_HELP;
-@@ -4855,7 +4858,7 @@
+@@ -4317,7 +4320,7 @@
return(1);
case 1 :
@@ -1148,7 +1156,7 @@
default :
return(0);
-@@ -4931,7 +4934,7 @@
+@@ -4394,7 +4397,7 @@
return(1);
}
@@ -1157,7 +1165,7 @@
return(0);
}
-@@ -4964,7 +4967,7 @@
+@@ -4427,7 +4430,7 @@
if(!strucmp(folder = f->name, ps_global->inbox_name))
return(FEX_ISFILE);
@@ -1166,7 +1174,7 @@
we_cancel = busy_alarm(1, tmp, NULL, 0);
mm_list_info = &ldata; /* tie down global reference */
-@@ -5107,7 +5110,7 @@
+@@ -4571,7 +4574,7 @@
return(1);
}
@@ -1175,7 +1183,7 @@
return(0);
}
-@@ -5129,7 +5132,7 @@
+@@ -4593,7 +4596,7 @@
while(1){
flags = OE_APPEND_CURRENT | OE_DISALLOW_HELP;
sprintf(number, "%ld", *count);
@@ -1184,7 +1192,7 @@
r = optionally_enter(number, -FOOTER_ROWS(ps_global), 0, 31,
prompt, sel_num_opt, NO_HELP, &flags);
switch (r){
-@@ -5138,7 +5141,7 @@
+@@ -4602,7 +4605,7 @@
break;
else if((*count = atol(number)) < 0L)
q_status_message(SM_ORDER, 3, 3,
@@ -1193,91 +1201,16 @@
else
return(1); /* success */
-@@ -5299,7 +5302,7 @@
+@@ -4763,7 +4766,7 @@
for(; i >= 0; i--)
- folder_entry(i, FOLDERS(fs->context))->scanned = 0;
+ folder_entry(i, FOLDERS(context))->scanned = 0;
- cmd_cancelled("Select");
+ cmd_cancelled("選擇");
rv = 0;
break;
}
-@@ -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},
-- {ctrl('Y'), 10, "^Y","First Fldr"},
-- {ctrl('V'), 11, "^V","Last Fldr"},
-+ {ctrl('Y'), 10, "^Y","第一個資料匣"},
-+ {ctrl('V'), 11, "^V","最後一個資料匣"},
- {-1, 0, NULL, NULL} };
-
- nsearch_string[0] = '\0';
- if(!folder_total(FOLDERS(fd->context))){
- q_status_message(SM_ORDER | SM_DING, 0, 4,
-- "Empty folder collection. No folders to search!");
-+ "空的資料匣總集。沒有東西可供搜尋!");
- return(0);
- }
- else{
-@@ -5359,7 +5362,7 @@
- search_keys[0].ch = ctrl('X');
- search_keys[0].rval = 9;
- search_keys[0].name = "^X";
-- search_keys[0].label = "List Matches";
-+ search_keys[0].label = "列出符合者";
- }
- else{
- search_keys[0].ch = 0;
-@@ -5370,7 +5373,7 @@
- }
-
- t_index = fd->folder_index;
-- sprintf(prompt, "Folder name to search for %s%s%s: ",
-+ sprintf(prompt, "欲搜尋的資料匣名稱 %s%s%s:",
- (*search_string == '\0') ? "" : "[",
- search_string,
- (*search_string == '\0') ? "" : "] ");
-@@ -5381,7 +5384,7 @@
- switch(optionally_enter(nsearch_string, ask_line, 0, MAX_SEARCH,
- prompt, search_keys, help, &flags)){
- case -1 :
-- q_status_message(SM_ORDER | SM_DING, 3, 3, "Error reading word");
-+ q_status_message(SM_ORDER | SM_DING, 3, 3, "讀取字元時發生錯誤");
- return(0);
-
- case 0 : /*----- Search away ------*/
-@@ -5438,9 +5441,9 @@
- }
-
- if(rc){
-- q_status_message2(SM_ORDER, 0, 3,
-- "Searched matched %s folder%s",
-- int2string(count), plural(count));
-+ q_status_message1(SM_ORDER, 0, 3,
-+ "共有 %s 個資料匣符合搜尋條件",
-+ int2string(count));
- fd->prev_index = -1; /* repaint! */
- }
-
-@@ -5454,14 +5457,14 @@
- while((t_index = folder_lister_prev(fd)) >= 0)
- fd->folder_index = t_index;
-
-- q_status_message(SM_ORDER, 0, 3, "Searched to First Folder.");
-+ q_status_message(SM_ORDER, 0, 3, "搜尋至第一個資料匣。");
- return(3);
-
- case 11 :
- while((t_index = folder_lister_next(fd)))
- fd->folder_index = t_index;
-
-- q_status_message(SM_ORDER, 0, 3, "Searched to Last Folder.");
-+ q_status_message(SM_ORDER, 0, 3, "搜尋至最後一個資料匣。");
- return(3);
-
- default :
-@@ -6500,7 +6503,7 @@
+@@ -5712,7 +5715,7 @@
if(p = context_digest(c_string, dcontext, host, rcontext, view)){
q_status_message2(SM_ORDER | SM_DING, 3, 4,
@@ -1286,7 +1219,7 @@
fs_give((void **) &c_string);
if(nickname)
fs_give((void **)&nickname);
-@@ -6541,14 +6544,14 @@
+@@ -5753,14 +5756,14 @@
/* fix up label */
if(NEWS_TEST(c)){
@@ -1305,7 +1238,7 @@
(*host) ? host : "", p ? p - rcontext : 0,
rcontext, (p && (p - rcontext) > 0) ? "" : "home directory");
}
-@@ -7745,7 +7748,7 @@
+@@ -6986,7 +6989,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-ay b/chinese/pine4/files/patch-ay
index 05b94047d2b9..9471f165fa6d 100644
--- a/chinese/pine4/files/patch-ay
+++ b/chinese/pine4/files/patch-ay
@@ -1,11 +1,7 @@
---- pine/help.c.orig Wed Jul 1 06:22:26 1998
-+++ pine/help.c Tue Aug 4 12:42:16 1998
-@@ -50,15 +50,15 @@
-
- static struct key help_keys[] =
- {MAIN_MENU,
-- {"E","Exit Help",{MC_EXIT,1,{'e'}}, KS_EXITMODE},
-+ {"E","離開",{MC_EXIT,1,{'e'}}, KS_EXITMODE},
+--- pine/help.c.orig Thu Jan 7 03:50:55 1999
++++ pine/help.c Tue Feb 23 15:27:01 1999
+@@ -53,12 +53,12 @@
+ {NULL,NULL,{MC_EXIT,1,{'e'}}, KS_EXITMODE},
{NULL,NULL,{MC_EXIT,1,{'e'}}, KS_EXITMODE},
{NULL,NULL,{MC_VIEW_HANDLE,3,{'v',ctrl('m'),ctrl('j')}},KS_NONE},
- {"^B","PrevLink",{MC_PREV_HANDLE,1,{ctrl('B')}},KS_NONE},
@@ -29,7 +25,7 @@
NULL_MENU,
NULL_MENU,
NULL_MENU,
-@@ -269,7 +269,7 @@
+@@ -262,7 +262,7 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = so_text(store);
sargs.text.src = CharStar;
@@ -38,7 +34,7 @@
sargs.text.handles = handles;
if(!(sargs.bar.title = title)){
if(!struncmp(shown_text[0], "<html>", 6)){
-@@ -297,7 +297,7 @@
+@@ -290,7 +290,7 @@
}
if(!sargs.bar.title)
@@ -47,7 +43,7 @@
}
sargs.bar.style = TextPercent;
-@@ -313,13 +313,13 @@
+@@ -307,18 +307,18 @@
setbitmap(sargs.keys.bitmap);
if(flags & HLPD_FROMHELP){
km.keys[HLP_EXIT_KEY].name = "P";
@@ -55,6 +51,21 @@
+ km.keys[HLP_EXIT_KEY].label = "前一說明";
km.keys[HLP_EXIT_KEY].bind.cmd = MC_FINISH;
km.keys[HLP_EXIT_KEY].bind.ch[0] = 'p';
+
+ km.keys[HLP_SUBEXIT_KEY].name = "E";
+- km.keys[HLP_SUBEXIT_KEY].label = "Exit Help";
++ km.keys[HLP_SUBEXIT_KEY].label = "離開";
+ km.keys[HLP_SUBEXIT_KEY].bind.cmd = MC_EXIT;
+ km.keys[HLP_SUBEXIT_KEY].bind.ch[0] = 'e';
+ }
+ else if(text == h_special_help_nav){
+ km.keys[HLP_EXIT_KEY].name = "P";
+- km.keys[HLP_EXIT_KEY].label = "Prev Help";
++ km.keys[HLP_EXIT_KEY].label = "前一說明";
+ km.keys[HLP_EXIT_KEY].bind.cmd = MC_FINISH;
+ km.keys[HLP_EXIT_KEY].bind.ch[0] = 'p';
+
+@@ -327,12 +327,12 @@
}
else{
km.keys[HLP_EXIT_KEY].name = "E";
@@ -62,8 +73,14 @@
+ km.keys[HLP_EXIT_KEY].label = "離開";
km.keys[HLP_EXIT_KEY].bind.cmd = MC_EXIT;
km.keys[HLP_EXIT_KEY].bind.ch[0] = 'e';
- clrbitn(HLP_SUBEXIT_KEY, sargs.keys.bitmap);
-@@ -478,7 +478,7 @@
+
+ km.keys[HLP_SUBEXIT_KEY].name = "?";
+- km.keys[HLP_SUBEXIT_KEY].label = "Help Help";
++ km.keys[HLP_SUBEXIT_KEY].label = "輔助說明";
+ km.keys[HLP_SUBEXIT_KEY].bind.cmd = MC_HELP;
+ km.keys[HLP_SUBEXIT_KEY].bind.ch[0] = '?';
+ }
+@@ -492,7 +492,7 @@
}
sparms->keys.menu->keys[HLP_VIEW_HANDLE].name = "V";
@@ -72,7 +89,16 @@
}
}
-@@ -559,7 +559,7 @@
+@@ -543,7 +543,7 @@
+ print_text(NEWLINE);
+
+ if(error = gf_pipe(helper_getc, print_char))
+- q_status_message1(SM_ORDER | SM_DING, 3, 3, "Printing Error: %s", error);
++ q_status_message1(SM_ORDER | SM_DING, 3, 3, "列印錯誤:%s", error);
+
+ print_char(ctrl('L')); /* new page. */
+ }
+@@ -573,7 +573,7 @@
#endif
if(ps_global->intr_pending){
q_status_message(SM_ORDER, 3, 3,
@@ -81,7 +107,7 @@
break;
}
-@@ -948,7 +948,7 @@
+@@ -962,7 +962,7 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = tmp_text;
sargs.text.src = CharStar;
@@ -90,7 +116,7 @@
sargs.bar.title = title;
sargs.start.on = LastPage;
-@@ -1304,7 +1304,7 @@
+@@ -1321,7 +1321,7 @@
#endif
}
else if(ch == 'x'){
@@ -99,3 +125,41 @@
return(-1);
}
}
+@@ -1448,13 +1448,13 @@
+ if(in_handle){
+ hp_menu[++i].type = tQueue;
+ hp_menu[i].label.style = lNormal;
+- hp_menu[i].label.string = "View Help Section";
++ hp_menu[i].label.string = "檢視輔助說明章節";
+ hp_menu[i].data.val = 'V';
+ }
+
+ hp_menu[++i].type = tQueue;
+ hp_menu[i].label.style = lNormal;
+- hp_menu[i].label.string = "Exit Help";
++ hp_menu[i].label.string = "離開";
+ hp_menu[i].data.val = 'E';
+
+ hp_menu[++i].type = tTail;
+@@ -1479,18 +1479,18 @@
+ if(in_handle){
+ hp_menu[++i].type = tQueue;
+ hp_menu[i].label.style = lNormal;
+- hp_menu[i].label.string = "View Help Section";
++ hp_menu[i].label.string = "檢視該節說明";
+ hp_menu[i].data.val = 'V';
+ }
+
+ hp_menu[++i].type = tQueue;
+ hp_menu[i].label.style = lNormal;
+- hp_menu[i].label.string = "Previous Help Section";
++ hp_menu[i].label.string = "前一節";
+ hp_menu[i].data.val = 'P';
+
+ hp_menu[++i].type = tQueue;
+ hp_menu[i].label.style = lNormal;
+- hp_menu[i].label.string = "Exit Help";
++ hp_menu[i].label.string = "離開";
+ hp_menu[i].data.val = 'E';
+
+ hp_menu[++i].type = tTail;
diff --git a/chinese/pine4/files/patch-ba b/chinese/pine4/files/patch-ba
index cc4fe8ad069a..85e358656524 100644
--- a/chinese/pine4/files/patch-ba
+++ b/chinese/pine4/files/patch-ba
@@ -1,6 +1,6 @@
---- 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 @@
+--- pine/mailcmd.c.orig Thu Feb 4 10:16:45 1999
++++ pine/mailcmd.c Wed Feb 24 21:29:19 1999
+@@ -109,39 +109,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},
-@@ -150,24 +150,24 @@
+@@ -151,24 +151,24 @@
static char *sel_flag =
@@ -96,7 +96,7 @@
{ctrl('W'), 14, "^W", "Toggle When"},
{KEY_UP, 12, "", ""},
{KEY_DOWN, 13, "", ""},
-@@ -177,18 +177,18 @@
+@@ -178,18 +178,18 @@
static char *sel_text =
#ifdef RECIPIENT
@@ -123,7 +123,7 @@
#endif /* RECIPIENT */
{-1, 0, NULL, NULL}
};
-@@ -242,7 +242,7 @@
+@@ -243,7 +243,7 @@
case MC_HELP :
if(state->nr_mode) {
q_status_message(SM_ORDER, 0, 3,
@@ -132,7 +132,7 @@
break;
}
-@@ -271,7 +271,7 @@
+@@ -272,7 +272,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 */
-@@ -295,10 +295,10 @@
+@@ -296,10 +296,10 @@
mn_dec_cur(stream, msgmap);
if(i == mn_get_cur(msgmap))
q_status_message(SM_ORDER, 0, 2,
@@ -154,7 +154,7 @@
}
break;
-@@ -310,7 +310,7 @@
+@@ -311,7 +311,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';
-@@ -327,7 +327,7 @@
+@@ -328,7 +328,7 @@
strcat(prompt, ". No more folders to TAB to.");
}
@@ -172,7 +172,7 @@
prompt[0] ? prompt : NULL);
if(!IS_NEWS(stream))
-@@ -474,9 +474,9 @@
+@@ -475,9 +475,9 @@
}
}
else
@@ -184,7 +184,7 @@
break;
}
-@@ -493,9 +493,9 @@
+@@ -494,9 +494,9 @@
*/
if(F_OFF(F_AUTO_OPEN_NEXT_UNREAD, state)){
static ESCKEY_S next_opt[] = {
@@ -197,7 +197,7 @@
{-1, 0, NULL, NULL}
};
-@@ -521,7 +521,7 @@
+@@ -522,7 +522,7 @@
else
any_messages(NULL,
(mn_get_total(msgmap) > 0L)
@@ -206,7 +206,7 @@
: NULL,
NULL);
}
-@@ -539,7 +539,7 @@
+@@ -540,7 +540,7 @@
* global "zoom mode" flag to suppress messags from the index
* should suffice.
*/
@@ -215,7 +215,7 @@
if(unzoom_index(state, msgmap)){
dprint(4, (debugfile, "\n\n ---- Exiting ZOOM mode ----\n"));
q_status_message(SM_ORDER,0,2, "Index Zoom Mode is now off");
-@@ -551,7 +551,7 @@
+@@ -552,7 +552,7 @@
comatose(i), plural(i));
}
else
@@ -224,7 +224,7 @@
}
break;
-@@ -559,7 +559,7 @@
+@@ -560,7 +560,7 @@
/*---------- print message on paper ----------*/
case MC_PRINTMSG :
@@ -233,7 +233,7 @@
cmd_print(state, msgmap, 0, in_index);
break;
-@@ -567,7 +567,7 @@
+@@ -568,7 +568,7 @@
/*---------- Take Address ----------*/
case MC_TAKE :
@@ -242,7 +242,7 @@
cmd_take_addr(state, msgmap, 0);
break;
-@@ -575,7 +575,7 @@
+@@ -576,7 +576,7 @@
/*---------- Save Message ----------*/
case MC_SAVE :
@@ -251,7 +251,7 @@
cmd_save(state, msgmap, 0);
break;
-@@ -583,7 +583,7 @@
+@@ -584,7 +584,7 @@
/*---------- Export message ----------*/
case MC_EXPORT :
@@ -260,7 +260,7 @@
cmd_export(state, msgmap, question_line, 0);
state->mangled_footer = 1;
}
-@@ -596,9 +596,9 @@
+@@ -597,9 +597,9 @@
dprint(2, (debugfile, "\n - expunge -\n"));
if(IS_NEWS(stream) && stream->rdonly){
if((del_count = count_flagged(stream, F_DEL)) > 0L){
@@ -273,7 +273,7 @@
if(F_ON(F_FULL_AUTO_EXPUNGE, state)
|| (F_ON(F_AUTO_EXPUNGE, state)
&& (state->context_current
-@@ -620,21 +620,20 @@
+@@ -621,21 +621,20 @@
state->mangled_body = 1;
state->mangled_header = 1;
@@ -300,7 +300,7 @@
break;
}
-@@ -653,7 +652,7 @@
+@@ -654,7 +653,7 @@
ret = 'y';
if(ret == 'x')
@@ -309,7 +309,7 @@
if(ret != 'y')
break;
-@@ -705,11 +704,11 @@
+@@ -706,11 +705,11 @@
if(state->expunge_count <= 0)
if(del_count)
q_status_message1(SM_ORDER, 0, 3,
@@ -323,7 +323,7 @@
break;
-@@ -743,16 +742,15 @@
+@@ -744,16 +743,15 @@
*/
refresh_sort(msgmap, FALSE);
state->mangled_header = 1;
@@ -345,7 +345,7 @@
}
break;
-@@ -760,7 +758,7 @@
+@@ -761,7 +759,7 @@
/*------- Make Selection -----------*/
case MC_SELECT :
@@ -354,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)
-@@ -792,7 +790,7 @@
+@@ -793,7 +791,7 @@
unzoom_index(state, msgmap);
}
else
@@ -363,7 +363,7 @@
}
break;
-@@ -870,21 +868,21 @@
+@@ -871,21 +869,21 @@
{
if(cmd == ctrl('Q') || cmd == ctrl('S'))
q_status_message1(SM_ASYNC, 0, 2,
@@ -392,7 +392,7 @@
}
-@@ -1157,11 +1155,9 @@
+@@ -1158,11 +1156,9 @@
char *type, *cmd;
{
if(mn_get_total(map) <= 0L){
@@ -406,7 +406,7 @@
return(FALSE);
}
-@@ -1185,8 +1181,8 @@
+@@ -1186,8 +1182,8 @@
{
if(READONLY_FOLDER || state->dead_stream){
q_status_message2(SM_ORDER | (state->dead_stream ? SM_DING : 0), 0, 3,
@@ -417,7 +417,7 @@
return(FALSE);
}
-@@ -1206,7 +1202,7 @@
+@@ -1207,7 +1203,7 @@
cmd_cancelled(cmd)
char *cmd;
{
@@ -426,7 +426,7 @@
}
-@@ -1232,7 +1228,7 @@
+@@ -1233,7 +1229,7 @@
dprint(4, (debugfile, "\n - delete message -\n"));
if(!(any_messages(msgmap, NULL, "to Delete")
@@ -435,7 +435,7 @@
return;
if(state->io_error_on_stream) {
-@@ -1242,16 +1238,15 @@
+@@ -1243,16 +1239,15 @@
if(agg){
sequence = selected_sequence(state->mail_stream, msgmap, &del_count);
@@ -455,7 +455,7 @@
lastmsg ? "" : long2string(msgno));
}
-@@ -1311,7 +1306,7 @@
+@@ -1312,7 +1307,7 @@
dprint(4, (debugfile, "\n - undelete -\n"));
if(!(any_messages(msgmap, NULL, "to Undelete")
@@ -464,7 +464,24 @@
return;
if(agg){
-@@ -1399,7 +1394,7 @@
+@@ -1332,12 +1327,12 @@
+ if(del_count == 1L){
+ update_titlebar_status();
+ q_status_message(SM_ORDER, 0, 3,
+- "Deletion mark removed, message won't be deleted");
++ "以移除刪除標記,信件將不會遭刪除");
+ }
+ else
+- q_status_message2(SM_ORDER, 0, 3,
+- "Deletion mark removed from %s message%s",
+- comatose(del_count), plural(del_count));
++ q_status_message1(SM_ORDER, 0, 3,
++ "移除 %s 封信件上的刪除標記",
++ comatose(del_count));
+
+ if(state->io_error_on_stream) {
+ state->io_error_on_stream = 0;
+@@ -1401,7 +1396,7 @@
};
if(!(any_messages(msgmap, NULL, "to Flag")
@@ -473,7 +490,7 @@
return;
if(state->io_error_on_stream) {
-@@ -1754,7 +1749,7 @@
+@@ -1756,7 +1751,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'){
@@ -482,7 +499,7 @@
return;
}
-@@ -1877,32 +1872,32 @@
+@@ -1879,32 +1874,32 @@
ekey[rc].ch = ctrl('T');
ekey[rc].rval = 2;
ekey[rc].name = "^T";
@@ -520,7 +537,7 @@
}
if(saveable_count > 1){
-@@ -2040,7 +2035,7 @@
+@@ -2042,7 +2037,7 @@
/* else fall thru like they cancelled */
case 1 :
@@ -529,9 +546,9 @@
done--;
break;
-@@ -3162,16 +3157,16 @@
- {
- if(context && ps_global->context_list->next && context_isambig(folder)){
+@@ -3172,16 +3167,16 @@
+ }
+
sprintf(tmp_20k_buf,
- "Folder \"%.15s%s\" in <%.15s%s> doesn't exist. Create",
+ "信件匣 \"%.15s%s\" 在 <%.15s%s> 不存在。要建立",
@@ -549,7 +566,7 @@
return(-1);
}
-@@ -3295,14 +3290,14 @@
+@@ -3305,14 +3300,14 @@
export_opts[i = 0].ch = ctrl('T');
export_opts[i].rval = 10;
export_opts[i].name = "^T";
@@ -566,7 +583,7 @@
}
#endif /* !(DOS || MAC) */
-@@ -3310,7 +3305,7 @@
+@@ -3320,7 +3315,7 @@
export_opts[i].ch = ctrl('I');
export_opts[i].rval = 11;
export_opts[i].name = "TAB";
@@ -575,7 +592,7 @@
}
#if 0
-@@ -3319,7 +3314,7 @@
+@@ -3329,7 +3324,7 @@
export_opts[i].ch = ctrl('X');
export_opts[i].rval = 14;
export_opts[i].name = "^X";
@@ -584,7 +601,7 @@
}
#endif
-@@ -3333,7 +3328,7 @@
+@@ -3343,7 +3338,7 @@
if(r < 0){
switch(r){
case -1:
@@ -593,7 +610,7 @@
break;
case -2:
-@@ -3355,7 +3350,7 @@
+@@ -3365,7 +3360,7 @@
if(ps_global->restricted){
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -602,7 +619,7 @@
goto fini;
}
-@@ -3374,7 +3369,7 @@
+@@ -3384,7 +3379,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,
@@ -611,7 +628,7 @@
break;
}
-@@ -3387,18 +3382,18 @@
+@@ -3397,18 +3392,18 @@
(void) close_system_pipe(&syspipe);
else
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -633,7 +650,7 @@
goto fini;
}
-@@ -3512,7 +3507,7 @@
+@@ -3522,7 +3517,7 @@
STORE_S *store = NULL;
struct variable *vars = ps->vars;
static ESCKEY_S simple_export_opts[] = {
@@ -642,7 +659,7 @@
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL}};
-@@ -3520,7 +3515,7 @@
+@@ -3530,7 +3525,7 @@
simple_export_opts[r].ch = ctrl('I');
simple_export_opts[r].rval = 11;
simple_export_opts[r].name = "TAB";
@@ -651,7 +668,7 @@
}
if(!srctext){
-@@ -3593,7 +3588,7 @@
+@@ -3603,7 +3598,7 @@
break;
case -1:
@@ -660,7 +677,7 @@
break;
case -2:
-@@ -4180,32 +4175,32 @@
+@@ -4192,32 +4187,32 @@
ekey[rc].ch = (allow_list) ? ctrl('T') : 0 ;
ekey[rc].rval = (allow_list) ? 2 : 0;
ekey[rc].name = (allow_list) ? "^T" : "";
@@ -698,7 +715,7 @@
}
if(ps_global->context_list->next){
-@@ -4321,15 +4316,15 @@
+@@ -4335,15 +4330,15 @@
newfolder);
else if(tc->use & CNTXT_INCMNG)
q_status_message1(SM_ORDER, 0, 3,
@@ -718,7 +735,7 @@
newfolder);
return(NULL);
-@@ -4342,7 +4337,7 @@
+@@ -4356,7 +4351,7 @@
/* fall thru like they cancelled */
case 1 : /* o_e says user cancel */
@@ -727,7 +744,7 @@
return(NULL);
case 2 : /* o_e says user wants list */
-@@ -4578,7 +4573,7 @@
+@@ -4592,7 +4587,7 @@
else if ((new_context->use & CNTXT_INCMNG)
&& (folder_index(newfolder, new_context, FI_FOLDER) < 0)){
q_status_message1(SM_ORDER, 3, 4,
@@ -736,7 +753,22 @@
return(0);
}
}
-@@ -4659,7 +4654,7 @@
+@@ -4632,11 +4627,10 @@
+ clear_index_cache();
+ /* MUST sort before restoring msgno! */
+ refresh_sort(ps_global->msgmap, FALSE);
+- q_status_message3(SM_ORDER, 0, 3,
+- "Opened folder \"%s\" with %s message%s",
++ q_status_message2(SM_ORDER, 0, 3,
++ "信件匣 \"%s\" 已開啟,共 %s 封信件",
+ ps_global->inbox_name,
+- long2string(mn_get_total(ps_global->msgmap)),
+- plural(mn_get_total(ps_global->msgmap)));
++ long2string(mn_get_total(ps_global->msgmap)));
+ return(1);
+ }
+
+@@ -4673,7 +4667,7 @@
}
}
@@ -745,7 +777,7 @@
pretty_fn(newfolder), 70), "\"");
we_cancel = busy_alarm(1, status_msg, NULL, 1);
-@@ -4742,7 +4737,7 @@
+@@ -4756,7 +4750,7 @@
&& !mn_get_revsort(ps_global->msgmap)))
refresh_sort(ps_global->msgmap, FALSE);
@@ -754,7 +786,7 @@
old_folder);
}
}
-@@ -4823,14 +4818,13 @@
+@@ -4837,14 +4831,13 @@
/* UWIN doesn't want to see this message */
if(!ps_global->nr_mode)
@@ -773,7 +805,7 @@
sort_folder(ps_global->msgmap, ps_global->def_sort,
ps_global->def_sort_rev, TRUE);
-@@ -4996,9 +4990,9 @@
+@@ -5010,9 +5003,9 @@
char ing[4];
if(final_msg)
@@ -785,7 +817,7 @@
buff1[0] = '\0';
buff2[0] = '\0';
-@@ -5007,7 +5001,7 @@
+@@ -5021,7 +5014,7 @@
stream->mailbox));
if(!stream->rdonly){
@@ -794,7 +826,7 @@
flush_status_messages(1);
/* Save read messages? */
-@@ -5047,10 +5041,8 @@
+@@ -5061,10 +5054,8 @@
}
else{
sprintf(prompt_b,
@@ -807,7 +839,7 @@
ret = want_to(prompt_b, 'y', 0, NO_HELP, WT_NORM);
}
-@@ -5061,13 +5053,10 @@
+@@ -5075,13 +5066,10 @@
if(ret == 'y'){
sprintf(buff2,
@@ -822,7 +854,7 @@
long2string(delete_count));
if(final_msg)
*final_msg = cpystr(buff2);
-@@ -5093,17 +5082,15 @@
+@@ -5107,17 +5095,15 @@
if(ret != 'y'){
if(stream->nmsgs){
sprintf(buff2,
@@ -844,7 +876,7 @@
ing, pretty_fn(folder));
}
-@@ -5122,7 +5109,7 @@
+@@ -5136,7 +5122,7 @@
q_status_message(SM_ORDER,
F_ON(F_AUTO_READ_MSGS,ps_global) ? 0 : 3, 5, moved_msg);
@@ -853,7 +885,7 @@
ing, pretty_fn(folder));
if(F_ON(F_NEWS_CROSS_DELETE, ps_global))
-@@ -5130,7 +5117,7 @@
+@@ -5144,7 +5130,7 @@
}
else
sprintf(buff2,
@@ -862,7 +894,7 @@
ing, pretty_fn(folder));
if(final_msg)
-@@ -5430,18 +5417,18 @@
+@@ -5444,18 +5430,18 @@
if(in_index && F_ON(F_PRINT_INDEX, state)){
char m[10];
static ESCKEY_S prt_opts[] = {
@@ -886,7 +918,7 @@
if(agg)
restore_selected(msgmap);
-@@ -5458,11 +5445,11 @@
+@@ -5472,11 +5458,11 @@
}
if(do_index)
@@ -901,7 +933,7 @@
if(open_printer(prompt) < 0){
if(agg)
-@@ -5725,7 +5712,7 @@
+@@ -5740,7 +5726,7 @@
/* else fall thru as if cancelled */
case 1 :
@@ -910,7 +942,7 @@
done++;
break;
-@@ -5808,7 +5795,7 @@
+@@ -5823,7 +5809,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);
@@ -919,7 +951,7 @@
sel_opts += 2; /* disable extra options */
switch(q = radio_buttons(sel_pmt1, q_line, sel_opts1, 'c', 'x', help,
RB_NORM)){
-@@ -5852,7 +5839,7 @@
+@@ -5867,7 +5853,7 @@
*/
switch(q){
case 'x': /* cancel */
@@ -928,7 +960,7 @@
return;
case 'c' : /* select/unselect current */
-@@ -6060,14 +6047,14 @@
+@@ -6075,14 +6061,14 @@
sel_opts3[i].ch = '*';
sel_opts3[i].rval = '*';
sel_opts3[i].name = "*";
@@ -945,7 +977,7 @@
}
/*
-@@ -6079,7 +6066,7 @@
+@@ -6094,7 +6080,7 @@
sel_opts3[i].ch = 'b';
sel_opts3[i].rval = 'b';
sel_opts3[i].name = "B";
@@ -954,7 +986,7 @@
}
if(F_ON(F_ENABLE_PRYNT, state)){
-@@ -6150,7 +6137,7 @@
+@@ -6165,7 +6151,7 @@
break;
case 'x' : /* cancel */
@@ -963,7 +995,7 @@
rv = 0;
break;
-@@ -6267,7 +6254,7 @@
+@@ -6282,7 +6268,7 @@
*t = '\0';
if(r == 1 || numbers[0] == '\0'){
@@ -972,7 +1004,7 @@
return(1);
}
else
-@@ -6393,7 +6380,7 @@
+@@ -6408,7 +6394,7 @@
prompt, sel_date_opt, help, &flags);
switch (r){
case 1 :
@@ -981,7 +1013,7 @@
return(1);
case 3 :
-@@ -6503,15 +6490,15 @@
+@@ -6518,15 +6504,15 @@
ekey[0].ch = ctrl('T');
ekey[0].name = "^T";
ekey[0].rval = 10;
@@ -1000,7 +1032,7 @@
break;
case 's' :
-@@ -6519,7 +6506,7 @@
+@@ -6534,7 +6520,7 @@
ekey[0].ch = ctrl('X');
ekey[0].name = "^X";
ekey[0].rval = 13;
@@ -1009,7 +1041,7 @@
break;
case 'a' :
-@@ -6618,7 +6605,7 @@
+@@ -6633,7 +6619,7 @@
}
if(type == 'x' || r == 'x'){
@@ -1018,7 +1050,7 @@
return(1);
}
-@@ -6799,7 +6786,7 @@
+@@ -6814,7 +6800,7 @@
NO_HELP, RB_NORM);
if(s == 'x'){
@@ -1027,7 +1059,7 @@
return(1);
}
else if(s == '!')
-@@ -6896,7 +6883,7 @@
+@@ -6911,7 +6897,7 @@
/*----- String together the prompt ------*/
tmp[1] = '\0';
@@ -1036,7 +1068,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]);
-@@ -6913,7 +6900,7 @@
+@@ -6928,7 +6914,7 @@
sorts[i].ch = 'r';
sorts[i].rval = 'r';
sorts[i].name = cpystr("R");
@@ -1045,7 +1077,7 @@
sorts[++i].ch = -1;
help = h_select_sort;
-@@ -6926,7 +6913,7 @@
+@@ -6941,7 +6927,7 @@
}
else{
retval = 0;
diff --git a/chinese/pine4/files/patch-bc b/chinese/pine4/files/patch-bc
index 8d0dbd503e48..855878fdbafb 100644
--- a/chinese/pine4/files/patch-bc
+++ b/chinese/pine4/files/patch-bc
@@ -1,5 +1,5 @@
---- pine/mailpart.c.orig Wed Sep 16 04:00:39 1998
-+++ pine/mailpart.c Tue Sep 22 20:29:13 1998
+--- pine/mailpart.c.orig Fri Feb 5 07:14:39 1999
++++ pine/mailpart.c Tue Feb 23 15:32:33 1999
@@ -142,18 +142,18 @@
{HELP_MENU,
OTHER_MENU,
@@ -62,14 +62,14 @@
if(mn_total_cur(ps->msgmap) > 1L){
q_status_message(SM_ORDER | SM_DING, 0, 3,
-- "Can only view one message's attachments at a time!");
+- "Can only view one message's attachments at a time.");
+ "同一時間僅能檢視一封信的附件!");
return;
}
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 僅有一部分(信件本體),沒有附件。",
++ "信件 %s 僅有一部分(信件本體),沒有附件。",
long2string(mn_get_cur(ps->msgmap)));
/*
@@ -154,7 +154,7 @@
ps_global->context_current, ps_global->cur_folder,
ps_global->msgmap, 1, FolderName,0,0);
-@@ -1318,7 +1318,7 @@
+@@ -1317,7 +1317,7 @@
gf_io_t pc;
STORE_S *store;
static ESCKEY_S att_save_opts[] = {
@@ -163,7 +163,7 @@
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL}};
-@@ -1351,7 +1351,7 @@
+@@ -1346,7 +1346,7 @@
att_save_opts[++r].ch = ctrl('V');
att_save_opts[r].rval = 12;
att_save_opts[r].name = "^V";
@@ -172,7 +172,7 @@
}
#endif /* !(DOS || MAC) */
-@@ -1359,7 +1359,7 @@
+@@ -1354,7 +1354,7 @@
att_save_opts[++r].ch = ctrl('I');
att_save_opts[r].rval = 11;
att_save_opts[r].name = "TAB";
@@ -181,7 +181,7 @@
}
att_save_opts[++r].ch = -1;
-@@ -1393,7 +1393,7 @@
+@@ -1388,7 +1388,7 @@
if(ps_global->restricted){
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -190,7 +190,7 @@
return;
}
-@@ -1401,7 +1401,7 @@
+@@ -1396,7 +1396,7 @@
tfp = temp_nam(NULL, "pd");
dprint(1, (debugfile, "Download attachment called!\n"));
if(store = so_get(FileStar, tfp, WRITE_ACCESS|OWNER_ONLY)){
@@ -199,7 +199,7 @@
we_cancel = init_att_progress(prompt_buf,
ps_global->mail_stream,
a->body);
-@@ -1410,7 +1410,7 @@
+@@ -1405,7 +1405,7 @@
if(err = detach(ps_global->mail_stream, msgno,
a->number, &len, pc, NULL))
q_status_message2(SM_ORDER | SM_DING, 3, 5,
@@ -208,7 +208,7 @@
err, tfp);
/* cancel regardless, so it doesn't get in way of xfer */
-@@ -1427,18 +1427,18 @@
+@@ -1422,18 +1422,18 @@
(void)close_system_pipe(&syspipe);
else
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -230,7 +230,7 @@
a->number);
return;
-@@ -1450,12 +1450,12 @@
+@@ -1445,12 +1445,12 @@
if((store = so_get(FileStar, full_filename, WRITE_ACCESS)) == NULL){
q_status_message2(SM_ORDER | SM_DING, 3, 5,
@@ -245,7 +245,7 @@
we_cancel = init_att_progress(prompt_buf, ps_global->mail_stream, a->body);
gf_set_so_writec(&pc, store);
-@@ -1474,7 +1474,7 @@
+@@ -1469,7 +1469,7 @@
truncate(full_filename, (over == -1) ? orig_size : 0);
q_status_message2(SM_ORDER | SM_DING, 3, 5,
@@ -254,7 +254,7 @@
err, full_filename);
}
else{
-@@ -1552,7 +1552,7 @@
+@@ -1547,7 +1547,7 @@
MESSAGECACHE *mc;
STORE_S *so;
@@ -263,7 +263,7 @@
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 @@
+@@ -1569,11 +1569,11 @@
a->body->size.bytes, flags, date, so);
if(rv == 1)
q_status_message2(SM_ORDER, 0, 4,
@@ -277,7 +277,7 @@
/* else whatever broke in save_fetch_append shoulda bitched */
so_give(&so);
-@@ -1620,7 +1620,7 @@
+@@ -1615,7 +1615,7 @@
if(MIME_MSG(part->body.type, part->body.subtype))
cnt++;
@@ -286,7 +286,7 @@
if(save_prompt(ps_global, &cntxt, newfolder, nmsgs, NULL, 0, NULL)){
save_folder = (strucmp(newfolder, ps_global->inbox_name) == 0)
-@@ -1654,11 +1654,11 @@
+@@ -1649,11 +1649,11 @@
if(rv == 1)
q_status_message2(SM_ORDER, 0, 4,
@@ -300,7 +300,7 @@
/* else whatever broke in save_fetch_append shoulda bitched */
if(our_stream)
-@@ -1712,7 +1712,7 @@
+@@ -1707,7 +1707,7 @@
ATTACH_S *ap = a;
STORE_S *store;
static ESCKEY_S opts[] = {
@@ -309,7 +309,7 @@
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL}};
-@@ -1720,7 +1720,7 @@
+@@ -1715,7 +1715,7 @@
opts[i].ch = ctrl('I');
opts[i].rval = 11;
opts[i].name = "TAB";
@@ -318,7 +318,7 @@
}
filename[0] = full_filename[0] = '\0';
-@@ -1733,12 +1733,12 @@
+@@ -1728,12 +1728,12 @@
if(rv < 0){
switch(rv){
case -1:
@@ -333,7 +333,7 @@
ps_global->VAR_OPER_DIR);
break;
}
-@@ -1752,17 +1752,17 @@
+@@ -1747,17 +1747,17 @@
q_status_message(SM_ORDER | SM_DING, 3, 4, err);
else
q_status_message3(SM_ORDER, 0, 4,
@@ -355,7 +355,7 @@
full_filename, error_description(errno));
}
-@@ -1785,7 +1785,7 @@
+@@ -1780,7 +1780,7 @@
ATTACH_S *ap;
STORE_S *store;
static ESCKEY_S opts[] = {
@@ -364,7 +364,7 @@
{-1, 0, NULL, NULL},
{-1, 0, NULL, NULL}};
-@@ -1793,7 +1793,7 @@
+@@ -1788,7 +1788,7 @@
opts[i].ch = ctrl('I');
opts[i].rval = 11;
opts[i].name = "TAB";
@@ -373,7 +373,7 @@
}
filename[0] = full_filename[0] = '\0';
-@@ -1806,12 +1806,12 @@
+@@ -1801,12 +1801,12 @@
if(rv < 0){
switch(rv){
case -1:
@@ -388,7 +388,7 @@
ps_global->VAR_OPER_DIR);
break;
}
-@@ -1833,7 +1833,7 @@
+@@ -1828,7 +1828,7 @@
sprintf(tmp_20k_buf, " [Unknown Message subtype: %s ]\n",
ap->body->subtype);
if(!so_puts(store, tmp_20k_buf))
@@ -397,7 +397,7 @@
}
else{
count++;
-@@ -1842,29 +1842,29 @@
+@@ -1837,29 +1837,29 @@
}
}
else if(!so_puts(store, "Unknown type in Digest"))
@@ -434,7 +434,7 @@
full_filename, error_description(errno));
}
-@@ -1933,7 +1933,7 @@
+@@ -1928,7 +1928,7 @@
q_status_message2(SM_ORDER | SM_DING, 3, 3,
@@ -443,7 +443,7 @@
long2string(msgno), a->number);
return(0);
}
-@@ -2014,14 +2014,14 @@
+@@ -2009,14 +2009,14 @@
/*----- Can't display this type ------*/
if(a->body->encoding < ENCOTHER)
q_status_message4(SM_ORDER | SM_DING, 3, 5,
@@ -461,7 +461,7 @@
body_encodings[(a->body->encoding <= ENCMAX)
? a->body->encoding : ENCOTHER]);
-@@ -2243,7 +2243,7 @@
+@@ -2238,7 +2238,7 @@
clear_index_cache_ent(msgno);
if(store = format_text_att(msgno, a, &handles)){
@@ -470,7 +470,7 @@
free_handles(&handles);
so_give(&store); /* free resources associated with store */
}
-@@ -2411,22 +2411,22 @@
+@@ -2406,22 +2406,22 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = so_text(store);
sargs.text.src = src;
@@ -497,7 +497,7 @@
}
if(!handles){
-@@ -2858,9 +2858,9 @@
+@@ -2853,9 +2853,9 @@
sargs.text.text = so_text(store);
sargs.text.src = CharStar;
sargs.text.desc = "attachment info";
@@ -509,18 +509,18 @@
scrolltool(&sargs);
-@@ -2922,7 +2922,7 @@
+@@ -2970,7 +2970,7 @@
else /* partially formatted outgoing message */
pine_send(outgoing, &body,
ps_global->nr_mode
- ? "SEND MESSAGE" : "FORWARD MESSAGE",
+ ? "送出信件" : "轉寄信件",
- NULL, NULL, NULL, NULL, NULL, FALSE);
+ role, NULL, NULL, redraft_pos, NULL, NULL, FALSE);
ps_global->mangled_screen = 1;
-@@ -2938,12 +2938,12 @@
- mail_free_body(&body);
+@@ -2988,12 +2988,12 @@
so_give((STORE_S **) &msgtext);
+ free_redraft_pos(&redraft_pos);
q_status_message(SM_ORDER | SM_DING, 4, 5,
- "Error fetching message contents. Can't forward message.");
+ "取得信件內容時發生錯誤。無法轉寄信件。");
@@ -532,17 +532,35 @@
+ "無法配置信件文字");
mail_free_envelope(&outgoing);
- }
-@@ -3008,7 +3008,7 @@
+ free_role(&role);
+@@ -3032,7 +3032,7 @@
+
+ ret = 'n';
+ if(ps_global->full_header)
+- ret = want_to("Forward message as an attachment", 'n', 0,
++ ret = want_to("將信件以附件形式轉寄", 'n', 0,
+ NO_HELP, WT_SEQ_SENSITIVE);
+ /* Setup possible role */
+ if(!ps_global->anonymous && (pattern_h = open_nonempty_patterns())){
+@@ -3043,7 +3043,7 @@
+ else{ /* cancel reply */
+ role = NULL;
+ close_patterns(&pattern_h);
+- cmd_cancelled("Forward");
++ cmd_cancelled("轉寄");
+ mail_free_envelope(&outgoing);
+ so_give((STORE_S **) &msgtext);
+ return;
+@@ -3121,7 +3121,7 @@
pine_simple_send(outgoing, &body, NULL, NULL, NULL, 1);
else /* partially formatted outgoing message */
pine_send(outgoing, &body,
- ps_global->nr_mode ? "SEND MESSAGE" : "FORWARD MESSAGE",
+ ps_global->nr_mode ? "送出信件" : "轉寄信件",
- NULL, NULL, NULL, NULL, NULL, FALSE);
+ role, NULL, NULL, redraft_pos, NULL, NULL, FALSE);
ps_global->mangled_screen = 1;
-@@ -3023,16 +3023,16 @@
+@@ -3138,16 +3138,16 @@
else{
so_give((STORE_S **) &msgtext);
q_status_message(SM_ORDER | SM_DING, 4, 5,
@@ -562,16 +580,16 @@
long2string(msgno));
mail_free_envelope(&outgoing);
-@@ -3105,7 +3105,7 @@
- tp = body_partno(stream, msgno, a->body),
- msgtext, prefix, include_text)){
+@@ -3256,7 +3256,7 @@
+ : ps_global->VAR_SIGNATURE_FILE,
+ &redraft_pos)){
/* partially formatted outgoing message */
- pine_send(outgoing, &body, "COMPOSE MESSAGE REPLY",
+ pine_send(outgoing, &body, "編輯信件回函",
- fcc.tptr, NULL, NULL, NULL, NULL, 0);
+ role, fcc.tptr, NULL, redraft_pos, NULL, NULL, 0);
pine_free_body(&body);
-@@ -3113,13 +3113,13 @@
+@@ -3264,13 +3264,13 @@
}
else
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -587,7 +605,7 @@
}
seeyalater:
-@@ -3186,7 +3186,7 @@
+@@ -3340,7 +3340,7 @@
sprintf(prompt, "Pipe %sattachment %s to %s: ", raw ? "RAW " : "",
a->number, capture ? "" : "(Free Output) ");
@@ -596,7 +614,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,
-@@ -3204,7 +3204,7 @@
+@@ -3358,7 +3358,7 @@
}
else if(rc == 0){
if(pipe_command[0] == '\0'){
@@ -605,7 +623,7 @@
break;
}
-@@ -3278,7 +3278,7 @@
+@@ -3436,7 +3436,7 @@
break;
}
else if(rc == 1){
diff --git a/chinese/pine4/files/patch-bd b/chinese/pine4/files/patch-bd
index 08e112efd180..4a01615b4505 100644
--- a/chinese/pine4/files/patch-bd
+++ b/chinese/pine4/files/patch-bd
@@ -1,6 +1,6 @@
---- 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 @@
+--- pine/mailview.c.orig Tue Feb 2 01:26:04 1999
++++ pine/mailview.c Tue Feb 23 15:45:46 1999
+@@ -157,8 +157,8 @@
static struct key view_keys[] =
{HELP_MENU,
OTHER_MENU,
@@ -11,7 +11,7 @@
PREVMSG_MENU,
NEXTMSG_MENU,
PREVPAGE_MENU,
-@@ -171,11 +171,11 @@
+@@ -183,11 +183,11 @@
HELP_MENU,
OTHER_MENU,
@@ -27,7 +27,7 @@
JUMP_MENU,
TAB_MENU,
HDRMODE_MENU,
-@@ -192,7 +192,7 @@
+@@ -204,7 +204,7 @@
#define FLAG_KEY 34
#define VIEW_PIPE_KEY 35
@@ -36,7 +36,7 @@
{HELP_MENU,
WHEREIS_MENU,
QUIT_MENU,
-@@ -216,7 +216,7 @@
+@@ -228,7 +228,7 @@
NEXTMSG_MENU,
PREVPAGE_MENU,
NEXTPAGE_MENU,
@@ -45,7 +45,7 @@
JUMP_MENU,
PRYNTTXT_MENU,
SAVE_MENU,
-@@ -238,7 +238,7 @@
+@@ -250,7 +250,7 @@
static struct key simple_text_keys[] =
{HELP_MENU,
NULL_MENU,
@@ -54,7 +54,7 @@
NULL_MENU,
NULL_MENU,
NULL_MENU,
-@@ -247,7 +247,7 @@
+@@ -259,7 +259,7 @@
PRYNTTXT_MENU,
WHEREIS_MENU,
FWDEMAIL_MENU,
@@ -63,7 +63,7 @@
INST_KEY_MENU(simple_text_keymenu, simple_text_keys);
-@@ -388,7 +388,7 @@
+@@ -403,7 +403,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;
}
-@@ -402,7 +402,7 @@
+@@ -417,7 +417,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)));
-@@ -457,7 +457,7 @@
+@@ -472,7 +472,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
-@@ -477,11 +477,11 @@
+@@ -492,11 +492,11 @@
else
scrollargs.body_valid = 1;
@@ -104,7 +104,7 @@
scrollargs.keys.menu = &view_keymenu;
scrollargs.keys.what = save_what;
setbitmap(scrollargs.keys.bitmap);
-@@ -1214,7 +1214,7 @@
+@@ -1237,7 +1237,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);
-@@ -1253,7 +1253,7 @@
+@@ -1276,7 +1276,7 @@
if(append_file_name)
fs_give((void **)&append_file_name);
@@ -122,7 +122,7 @@
error_description(errno));
return(0);
}
-@@ -1547,7 +1547,7 @@
+@@ -1570,7 +1570,7 @@
write_error:
if(!(flgs & FM_DISPLAY))
@@ -131,7 +131,7 @@
decode_err ? decode_err : error_description(errno));
return(0);
-@@ -1885,12 +1885,12 @@
+@@ -1908,12 +1908,12 @@
char prompt[256], tmp[MAILTMPLEN];
int rc, flags, local_h;
static ESCKEY_S launch_opts[] = {
@@ -148,16 +148,21 @@
{-1, 0, NULL, NULL}};
if(handle->type == URL){
-@@ -1920,7 +1920,7 @@
+@@ -1939,11 +1939,11 @@
+ if(!local_h){
+ if(ps_global->vars[V_BROWSER].is_fixed){
+ q_status_message(SM_ORDER, 3, 4,
+- "URL-Viewer is disabled by sys-admin");
++ "URL 檢視程式已被系統管理員關閉");
return(0);
}
else{
-- if(want_to("No URL-Viewer application defined! Define now",
+- 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';
-@@ -1964,7 +1964,7 @@
+@@ -1987,7 +1987,7 @@
}
else{
q_status_message1(SM_ORDER | SM_DING, 2, 2,
@@ -166,7 +171,7 @@
error_description(errno));
continue;
}
-@@ -1994,8 +1994,8 @@
+@@ -2017,8 +2017,8 @@
return(1);
while(1){
@@ -177,9 +182,9 @@
(handle->type == URL) ? "\"" : "",
(handle->type == URL) ? handle->h.url.path : "",
(handle->type == URL)
-@@ -2606,11 +2606,11 @@
+@@ -2723,11 +2723,11 @@
mode = PIPE_RESET | PIPE_USER ;
- if(syspipe = open_system_pipe(cmd, NULL, NULL, mode)){
+ if(syspipe = open_system_pipe(cmd, NULL, NULL, mode, 0)){
close_system_pipe(&syspipe);
- q_status_message(SM_ORDER, 0, 4, "VIEWER command completed");
+ q_status_message(SM_ORDER, 0, 4, "檢視器命令完成");
@@ -191,7 +196,7 @@
}
else if(f = url_local_handler(handle->h.url.path)){
if((*f)(handle->h.url.path) > 1)
-@@ -2618,7 +2618,7 @@
+@@ -2735,7 +2735,7 @@
}
else
q_status_message1(SM_ORDER, 2, 2,
@@ -200,7 +205,7 @@
handle->h.url.path);
return(rv);
-@@ -2630,7 +2630,7 @@
+@@ -2747,7 +2747,7 @@
int return_value;
{
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -209,7 +214,7 @@
return(return_value);
}
-@@ -2920,7 +2920,7 @@
+@@ -3046,7 +3046,7 @@
}
else
q_status_message(SM_ORDER | SM_DING, 3, 4,
@@ -218,7 +223,7 @@
if(outgoing)
mail_free_envelope(&outgoing);
-@@ -2984,7 +2984,7 @@
+@@ -3113,7 +3113,7 @@
else if(errstr)
q_status_message(SM_ORDER|SM_DING, 3, 3, errstr);
else
@@ -227,7 +232,7 @@
break;
-@@ -3007,7 +3007,7 @@
+@@ -3136,7 +3136,7 @@
if(uid_val != ps_global->mail_stream->uid_validity){
/* Complain! */
q_status_message(SM_ORDER|SM_DING, 3, 3,
@@ -236,7 +241,7 @@
}
if(uid){
-@@ -3023,7 +3023,7 @@
+@@ -3152,7 +3152,7 @@
if(i > mn_get_total(ps_global->msgmap))
q_status_message(SM_ORDER, 2, 3,
@@ -245,7 +250,7 @@
}
else if(search){
/*
-@@ -3044,9 +3044,9 @@
+@@ -3173,9 +3173,9 @@
if(i = any_lflagged(ps_global->msgmap, MN_SLCT)){
extern long zoom_index();
@@ -258,7 +263,7 @@
/* Zoom the index! */
zoom_index(ps_global, ps_global->msgmap);
}
-@@ -3185,9 +3185,9 @@
+@@ -3314,9 +3314,9 @@
if(auth && *auth != '*')
q_status_message1(SM_ORDER, 3, 3,
@@ -271,7 +276,7 @@
/*
* At this point our structure should contain the
-@@ -3272,7 +3272,7 @@
+@@ -3401,7 +3401,7 @@
if(i > mn_get_total(ps_global->msgmap))
q_status_message(SM_ORDER, 2, 3,
@@ -280,7 +285,7 @@
}
break;
-@@ -3386,7 +3386,7 @@
+@@ -3515,7 +3515,7 @@
}
else
q_status_message1(SM_ORDER | SM_DING, 0, 3,
@@ -289,7 +294,7 @@
return(1);
}
-@@ -3413,7 +3413,7 @@
+@@ -3542,7 +3542,7 @@
dprint(2, (debugfile, "-- bogus url \"%s\": %s\n",
url ? url : "<NULL URL>", reason));
if(url)
@@ -298,7 +303,7 @@
(void *) (strchr(url, ':') - url), url, reason);
return(0);
-@@ -3554,7 +3554,7 @@
+@@ -3684,7 +3684,7 @@
write_error:
if(style == QStatus)
@@ -307,7 +312,7 @@
error_description(errno));
return(1);
-@@ -3805,7 +3805,7 @@
+@@ -3935,7 +3935,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,
@@ -316,7 +321,7 @@
rv = FHT_WRTERR;
}
else
-@@ -3815,7 +3815,7 @@
+@@ -3945,7 +3945,7 @@
}
else{
q_status_message1(SM_ORDER | SM_DING, 3, 3,
@@ -325,7 +330,7 @@
rv = FHT_WRTERR;
}
}
-@@ -3841,7 +3841,7 @@
+@@ -3971,7 +3971,7 @@
if(errstr = gf_pipe(tmp_gc, final_pc)){
rv = FHT_WRTERR;
q_status_message1(SM_ORDER | SM_DING, 3, 3,
@@ -334,7 +339,7 @@
}
}
-@@ -3984,7 +3984,7 @@
+@@ -4115,7 +4115,7 @@
format_newsgroup_string("Newsgroups: ", e->newsgroups, prefix, pc);
if(e->ngbogus)
q_status_message(SM_ORDER, 0, 3,
@@ -343,7 +348,7 @@
}
if((which & FE_FOLLOWUPTO) && e->followup_to)
-@@ -4624,7 +4624,7 @@
+@@ -4756,7 +4756,7 @@
}
if(!sparms->bar.title)
@@ -352,16 +357,16 @@
if(sparms->bar.style == TitleBarNone)
sparms->bar.style = MsgTextPercent;
-@@ -4773,7 +4773,7 @@
+@@ -4914,7 +4914,7 @@
}
- if(first_view && num_display_lines >= get_scroll_text_lines())
+ if(first_view && num_display_lines >= scroll_text_lines())
- q_status_message1(SM_INFO, 0, 1, "ALL of %s", STYLE_NAME(sparms));
-+ q_status_message1(SM_INFO, 0, 1, "%s 全部", STYLE_NAME(sparms));
++ q_status_message1(SM_INFO, 0, 1, "%s全部", STYLE_NAME(sparms));
force = 0; /* may not need to next time around */
-@@ -4898,7 +4898,7 @@
+@@ -5047,7 +5047,7 @@
whereis_pos.row = 0;
if(sparms->help.text == NO_HELP || ps_global->nr_mode){
q_status_message(SM_ORDER, 0, 5,
@@ -370,7 +375,7 @@
break;
}
-@@ -4937,12 +4937,12 @@
+@@ -5086,12 +5086,12 @@
cur_top_line -= scroll_lines;
if(cur_top_line <= 0){
cur_top_line = 0;
@@ -379,31 +384,31 @@
STYLE_NAME(sparms));
}
}
- else
-- q_status_message1(SM_ORDER, 0, 1, "Already at start of %s",
-+ q_status_message1(SM_ORDER, 0, 1, "已經在%s的起始",
- STYLE_NAME(sparms));
- break;
+ else{
+- q_status_message1(SM_ORDER, 0, 1, "Already at start of %s",
++ q_status_message1(SM_ORDER, 0, 1, "已經在%s的起始",
+ STYLE_NAME(sparms));
-@@ -4956,12 +4956,12 @@
+ /* hilite last available handle */
+@@ -5117,12 +5117,12 @@
cur_top_line += scroll_lines;
- if(cur_top_line + num_display_lines >= get_scroll_text_lines())
+ if(cur_top_line + num_display_lines >= scroll_text_lines())
- q_status_message1(SM_INFO, 0, 1, "END of %s",
+ q_status_message1(SM_INFO, 0, 1, "%s結尾",
STYLE_NAME(sparms));
}
else if(!sparms->end_scroll
- || !(done = (*sparms->end_scroll)(sparms)))
-- q_status_message1(SM_ORDER, 0, 1, "Already at end of %s",
-+ q_status_message1(SM_ORDER, 0, 1, "已經在%s的結尾",
- STYLE_NAME(sparms));
-
- break;
-@@ -4978,11 +4978,11 @@
+ || !(done = (*sparms->end_scroll)(sparms))){
+- q_status_message1(SM_ORDER, 0, 1, "Already at end of %s",
++ q_status_message1(SM_ORDER, 0, 1, "已經在%s的結尾",
+ STYLE_NAME(sparms));
+ /* hilite last available handle */
+ if(sparms->text.handles){
+@@ -5184,11 +5184,11 @@
+ whereis_pos.row = 0;
cur_top_line++;
- if(cur_top_line + num_display_lines
- >= get_scroll_text_lines())
+ if(cur_top_line + num_display_lines >= scroll_text_lines())
- q_status_message1(SM_INFO, 0, 1, "END of %s",
+ q_status_message1(SM_INFO, 0, 1, "%s結尾",
STYLE_NAME(sparms));
@@ -414,7 +419,7 @@
STYLE_NAME(sparms));
}
-@@ -4999,11 +4999,11 @@
+@@ -5243,11 +5243,11 @@
if(cur_top_line){
cur_top_line--;
if(cur_top_line == 0)
@@ -428,25 +433,25 @@
STYLE_NAME(sparms));
}
-@@ -5034,7 +5034,7 @@
+@@ -5281,7 +5281,7 @@
}
- q_status_message(SM_ORDER, 0, 1,
-- "Already on last selectable item");
-+ "已經在最後一個可選擇的項目上");
+ q_status_message1(SM_ORDER, 0, 1,
+- "Already on last item in %s",
++ "已經在%s中最後一個可選擇的項目上",
+ STYLE_NAME(sparms));
}
- break;
-@@ -5064,7 +5064,7 @@
+@@ -5315,7 +5315,7 @@
}
- q_status_message(SM_ORDER, 0, 1,
-- "Already on first selectable item");
-+ "已經在第一個可選擇的項目上");
+ q_status_message1(SM_ORDER, 0, 1,
+- "Already on first item in %s",
++ "已經在%s中第一個可選擇的項目上",
+ STYLE_NAME(sparms));
}
- break;
-@@ -5083,7 +5083,7 @@
+@@ -5335,7 +5335,7 @@
break;
case -1 :
@@ -455,7 +460,7 @@
break;
default :
-@@ -5170,14 +5170,14 @@
+@@ -5434,8 +5434,8 @@
q_status_message(SM_ORDER, 0, 3, tmp_20k_buf);
else
q_status_message2(SM_ORDER, 0, 3,
@@ -464,6 +469,10 @@
+ "%s在畫面上第 %s 行找到",
+ result ? "重頭搜尋。" : "",
int2string(whereis_pos.row));
+
+ if(key){
+@@ -5452,9 +5452,9 @@
+ }
}
else if(found_on == -1)
- cmd_cancelled("Search");
@@ -471,19 +480,19 @@
else
- q_status_message(SM_ORDER | SM_DING, 0, 3, "Word not found");
+ q_status_message(SM_ORDER | SM_DING, 0, 3, "找不到該字");
+ }
break;
+@@ -5548,7 +5548,7 @@
+ break;
-@@ -5257,7 +5257,7 @@
- break;
-
- case -1 :
-- cmd_cancelled("View");
-+ cmd_cancelled("檢視");
- break;
+ case -1 :
+- cmd_cancelled("View");
++ cmd_cancelled("檢視");
+ break;
- default :
-@@ -5522,13 +5522,13 @@
+ default :
+@@ -5836,13 +5836,13 @@
int rc, flags;
static char search_string[MAX_SEARCH+1] = { '\0' };
static ESCKEY_S word_search_key[] = { { 0, 0, "", "" },
@@ -500,7 +509,7 @@
help = NO_HELP;
nsearch_string[0] = '\0';
-@@ -5543,13 +5543,13 @@
+@@ -5857,13 +5857,13 @@
continue;
}
else if(rc == 10){
@@ -513,28 +522,39 @@
else if(rc == 11){
- strcpy(report, "Searched to Last Line.");
+ strcpy(report, "搜尋至最後一行。");
- cursor_pos->row = max(get_scroll_text_lines() - 1, 0);
+ cursor_pos->row = max(scroll_text_lines() - 1, 0);
cursor_pos->col = 0;
return(cursor_pos->row);
-@@ -6411,10 +6411,10 @@
- if(*msg_p[0])
- for(i = 0; i < msg_q; i++)
- q_status_message2(SM_ORDER, 3, 4,
-- "%s Result: %s", title, msg_p[i]);
-+ "%s 結果:%s", title, msg_p[i]);
- else
- q_status_message2(SM_ORDER, 0, 4, "%s%s", title,
-- alt_msg ? alt_msg : " command completed");
-+ alt_msg ? alt_msg : " 命令完成");
- }
- else{
- SCROLL_S sargs;
-@@ -6425,7 +6425,7 @@
+@@ -6808,12 +6808,12 @@
+ if(*msg_p[0])
+ for(i = 0; i < msg_q; i++)
+ q_status_message2(SM_ORDER, 3, 4,
+- "%s Result: %s", title, msg_p[i]);
++ "%s 結果:%s", title, msg_p[i]);
+ else
+ q_status_message2(SM_ORDER, 0, 4, "%s%s", title,
+ alt_msg
+ ? alt_msg
+- : " command completed with no output");
++ : " 命令已完成(沒有輸出)");
+
+ fclose(f);
+ f = NULL;
+@@ -6826,7 +6826,7 @@
+ q_status_message2(SM_ORDER, 0, 4, "%s%s", title,
+ alt_msg
+ ? alt_msg
+- : " command completed with no output");
++ : " 命令已完成(沒有輸出)");
+ fclose(f);
+ f = NULL;
+ }
+@@ -6841,7 +6841,7 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = f;
sargs.text.src = FileStar;
-- sargs.text.desc = "help text";
-+ sargs.text.desc = "輔助說明文字";
+- sargs.text.desc = "output";
++ sargs.text.desc = "輸出";
sargs.bar.title = title;
sargs.bar.style = TextPercent;
sargs.help.text = h_simple_text_view;
diff --git a/chinese/pine4/files/patch-bf b/chinese/pine4/files/patch-bf
index 032fbc6ade9f..685b3775f925 100644
--- a/chinese/pine4/files/patch-bf
+++ b/chinese/pine4/files/patch-bf
@@ -1,6 +1,6 @@
---- pine/other.c.orig Thu Jul 16 09:09:27 1998
-+++ pine/other.c Tue Aug 4 12:42:20 1998
-@@ -51,16 +51,16 @@
+--- pine/other.c.orig Tue Feb 2 07:32:44 1999
++++ pine/other.c Wed Feb 24 02:19:21 1999
+@@ -51,18 +51,18 @@
#define BODY_LINES(X) ((X)->ttyo->screen_rows -HEADER_ROWS(X)-FOOTER_ROWS(X))
@@ -22,9 +22,48 @@
-static char *fixed_val = "Value is Fixed";
+static char *fixed_val = "設定值已固定";
- typedef struct proto_conf_line {
- short type, /* type of line treatment */
-@@ -311,9 +311,9 @@
+-#define ADD_FIRST_ROLE "Use Add to add a role"
++#define ADD_FIRST_ROLE "以 \"新增角色\" 來增加一名角色"
+
+ typedef struct conf_line {
+ char *varname, /* alloc'd var name string */
+@@ -271,16 +271,14 @@
+ #ifndef NO_KEYBOARD_LOCK
+ ClearScreen();
+
+- set_titlebar("KEYBOARD LOCK", ps_global->mail_stream,
++ set_titlebar("鍵盤鎖定", ps_global->mail_stream,
+ ps_global->context_current, ps_global->cur_folder, NULL,
+ 1, FolderName, 0, 0);
+
+ PutLine0(6,3 ,
+- "You may lock this keyboard so that no one else can access your mail");
++ "可鎖定鍵盤以防止其他人在您離開時存取您的信件。在密碼輸入之後,");
+ PutLine0(8, 3 ,
+- "while you are away. The screen will be locked after entering the ");
+- PutLine0(10, 3 ,
+- "password to be used for unlocking the keyboard when you return.");
++ "螢幕將會鎖定,您可在回來後以原密碼解除鎖定。");
+ fflush(stdout);
+ #endif
+ }
+@@ -292,12 +290,12 @@
+ #ifndef NO_KEYBOARD_LOCK
+ ClearScreen();
+
+- set_titlebar("KEYBOARD LOCK", ps_global->mail_stream,
++ set_titlebar("鍵盤鎖定", ps_global->mail_stream,
+ ps_global->context_current, ps_global->cur_folder, NULL,
+ 1, FolderName, 0, 0);
+
+- PutLine2(6, 3, "This keyboard is locked by %s <%s>.",klockame, klockin);
+- PutLine0(8, 3, "To unlock, enter password used to lock the keyboard.");
++ PutLine2(6, 3, "本鍵盤已被 %s <%s> 鎖定。",klockame, klockin);
++ PutLine0(8, 3, "輸入原本上鎖的密碼以解除鍵盤鎖定。");
+ fflush(stdout);
+ #endif
+ }
+@@ -339,9 +337,9 @@
char prompt[50];
sprintf(prompt,
@@ -37,7 +76,7 @@
flags = OE_PASSWD;
rc = optionally_enter(pw, -FOOTER_ROWS(ps), 0, 30,
-@@ -322,7 +322,7 @@
+@@ -350,7 +348,7 @@
if(rc == 3)
help = help == NO_HELP ? h_kb_lock : NO_HELP;
else if(rc == 1 || pw[0] == '\0'){
@@ -46,7 +85,7 @@
return(-1);
}
else if(rc != 4)
-@@ -333,14 +333,14 @@
+@@ -361,14 +359,14 @@
strcpy(inpasswd, pw);
else if(strcmp(inpasswd, pw)){
q_status_message(SM_ORDER, 0, 2,
@@ -64,7 +103,7 @@
return(-1);
}
-@@ -354,7 +354,7 @@
+@@ -382,7 +380,7 @@
while(strcmp(inpasswd, passwd)){
if(passwd[0])
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -73,7 +112,7 @@
help = NO_HELP;
while(1){
-@@ -362,7 +362,7 @@
+@@ -390,7 +388,7 @@
flags = OE_PASSWD | OE_DISALLOW_CANCEL;
rc = optionally_enter(passwd, -FOOTER_ROWS(ps), 0, 30,
@@ -82,7 +121,7 @@
help, &flags);
if(rc == 3) {
help = help == NO_HELP ? h_oe_keylock : NO_HELP;
-@@ -377,7 +377,7 @@
+@@ -405,7 +403,7 @@
if(old_suspend)
F_TURN_ON(F_CAN_SUSPEND, ps_global);
@@ -91,70 +130,61 @@
return(0);
}
-@@ -412,7 +412,7 @@
- PICO pbuf;
+@@ -443,7 +441,7 @@
+ struct variable *vars = ps_global->vars;
- if(!signature_path(sigfile, sig_path, MAXPATH)){
-- q_status_message(SM_ORDER, 3, 4, "No signature file defined.");
-+ q_status_message(SM_ORDER, 3, 4, "尚未定義簽名檔。");
- return;
- }
+ if(!signature_path(sigfile, sig_path, MAXPATH))
+- return(cpystr("No signature file defined."));
++ return(cpystr("尚未定義簽名檔。"));
-@@ -442,7 +442,7 @@
- pbuf.browse_help = h_composer_browse;
- pbuf.attach_help = h_composer_ctrl_j;
+ memset(&pbuf, 0, sizeof(PICO));
-- pbuf.pine_anchor = set_titlebar("SIGNATURE EDITOR",
-+ pbuf.pine_anchor = set_titlebar("簽名檔編輯器",
- ps_global->mail_stream,
- ps_global->context_current,
- ps_global->cur_folder,
-@@ -486,7 +486,7 @@
+@@ -519,7 +517,7 @@
+ * Now alloc and init the text to pass pico
*/
if(!(msgso = so_get(PicoText, NULL, EDIT_ACCESS))){
- q_status_message(SM_ORDER | SM_DING, 3, 4,
-- "Error allocating space for signature file");
-+ "配置簽名檔空間時發生錯誤");
+- ret = cpystr("Error allocating space for file");
++ ret = cpystr("配置檔案空間時發生錯誤");
dprint(1, (debugfile, "Can't alloc space for signature_edit"));
- return;
+ return(ret);
}
-@@ -496,7 +496,7 @@
- if(can_access(sig_path, READ_ACCESS) == 0
+@@ -530,7 +528,7 @@
&& !(tmpso = so_get(FileStar, sig_path, READ_ACCESS))){
char *problem = error_description(errno);
-- q_status_message2(SM_ORDER | SM_DING, 3, 3, "Error editing %s: %s",
-+ q_status_message2(SM_ORDER | SM_DING, 3, 3, "編輯 %s 時發生錯誤:%s",
- sig_path, problem ? problem : "<NULL>");
- dprint(1, (debugfile, "signature_edit: can't open %s: %s", sig_path,
- problem ? problem : "<NULL>"));
-@@ -508,7 +508,7 @@
+
+- sprintf(errbuf, "Error editing \"%s\": %s",
++ sprintf(errbuf, "編輯 %s 時發生錯誤:%s",
+ sig_path, problem ? problem : "<NULL>");
+ ret = cpystr(errbuf);
+
+@@ -543,7 +541,7 @@
+ gf_set_so_writec(&pc, msgso);
gf_filter_init(); /* no filters needed */
if(errstr = gf_pipe(gc, pc)){
- q_status_message1(SM_ORDER | SM_DING, 3, 5,
-- "Error reading signature \"%s\"", errstr);
-+ "編輯簽名檔時發生錯誤 \"%s\"", errstr);
+- sprintf(errbuf, "Error reading file: \"%s\"", errstr);
++ sprintf(errbuf, "編輯簽名檔時發生錯誤 \"%s\"", errstr);
+ ret = cpystr(errbuf);
}
- gf_clear_so_readc(tmpso);
-@@ -547,7 +547,7 @@
+@@ -582,7 +580,7 @@
+ gf_set_so_writec(&pc, tmpso); /* write sig file */
gf_filter_init(); /* no filters needed */
if(errstr = gf_pipe(gc, pc)){
- q_status_message1(SM_ORDER | SM_DING, 3, 5,
-- "Error writing signature \"%s\"",
-+ "寫入簽名檔時發生錯誤 \"%s\"",
+- sprintf(errbuf, "Error writing file: \"%s\"",
++ sprintf(errbuf, "寫入檔案時發生錯誤:\"%s\"",
errstr);
+ ret = cpystr(errbuf);
}
-
-@@ -557,7 +557,7 @@
+@@ -592,7 +590,7 @@
+ so_give(&tmpso);
}
else{
- q_status_message1(SM_ORDER | SM_DING, 3, 3,
-- "Error writing %s", sig_path);
-+ "寫入 %s 時發生錯誤", sig_path);
+- sprintf(errbuf, "Error writing \"%s\"", sig_path);
++ sprintf(errbuf, "寫入 %s 時發生錯誤", sig_path);
+ ret = cpystr(errbuf);
dprint(1, (debugfile, "signature_edit: can't write %s",
sig_path));
- }
-@@ -581,8 +581,8 @@
+@@ -618,8 +616,8 @@
char *rstr = NULL;
void (*redraw)() = ps_global->redrawer;
static ESCKEY_S opts[] = {
@@ -165,7 +195,7 @@
{-1, 0, NULL, NULL}
};
-@@ -590,18 +590,18 @@
+@@ -627,18 +625,18 @@
fix_windsize(ps_global);
while(1){
@@ -187,7 +217,7 @@
break;
}
}
-@@ -616,24 +616,24 @@
+@@ -653,24 +651,24 @@
* * * * * * Start of Config Screen Support Code * * * * *
*/
@@ -219,7 +249,113 @@
PRYNTTXT_MENU,
WHEREIS_MENU};
INST_KEY_MENU(config_text_keymenu, config_text_keys);
-@@ -657,7 +657,7 @@
+@@ -679,13 +677,13 @@
+ {HELP_MENU,
+ OTHER_MENU,
+ EXIT_SETUP_MENU,
+- {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE},
++ {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE},
+ PREV_MENU,
+ NEXT_MENU,
+ PREVPAGE_MENU,
+ NEXTPAGE_MENU,
+- {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE},
+- {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE},
++ {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE},
++ {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE},
+ PRYNTTXT_MENU,
+ WHEREIS_MENU,
+
+@@ -693,8 +691,8 @@
+ OTHER_MENU,
+ NULL_MENU,
+ NULL_MENU,
+- {"T", "ToFiles", {MC_CHOICE, 2, {'t', ctrl('T')}}, KS_NONE},
+- {"F", "editFile", {MC_EDITFILE, 1, {'f'}}, KS_NONE},
++ {"T", "檔案選單", {MC_CHOICE, 2, {'t', ctrl('T')}}, KS_NONE},
++ {"F", "編輯檔案", {MC_EDITFILE, 1, {'f'}}, KS_NONE},
+ NULL_MENU,
+ NULL_MENU,
+ NULL_MENU,
+@@ -707,13 +705,13 @@
+ {HELP_MENU,
+ OTHER_MENU,
+ EXIT_SETUP_MENU,
+- {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE},
++ {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE},
+ PREV_MENU,
+ NEXT_MENU,
+ PREVPAGE_MENU,
+ NEXTPAGE_MENU,
+- {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE},
+- {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE},
++ {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE},
++ {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE},
+ PRYNTTXT_MENU,
+ WHEREIS_MENU,
+
+@@ -721,7 +719,7 @@
+ OTHER_MENU,
+ NULL_MENU,
+ NULL_MENU,
+- {"T", "ToAddrBk", {MC_CHOICEB, 2, {'t', ctrl('T')}}, KS_NONE},
++ {"T", "地址簿", {MC_CHOICEB, 2, {'t', ctrl('T')}}, KS_NONE},
+ NULL_MENU,
+ NULL_MENU,
+ NULL_MENU,
+@@ -735,13 +733,13 @@
+ {HELP_MENU,
+ OTHER_MENU,
+ EXIT_SETUP_MENU,
+- {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE},
++ {"C", "[改變設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE},
+ PREV_MENU,
+ NEXT_MENU,
+ PREVPAGE_MENU,
+ NEXTPAGE_MENU,
+- {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE},
+- {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE},
++ {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE},
++ {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE},
+ PRYNTTXT_MENU,
+ WHEREIS_MENU,
+
+@@ -749,7 +747,7 @@
+ OTHER_MENU,
+ NULL_MENU,
+ NULL_MENU,
+- {"T", "ToFldrs", {MC_CHOICEC, 2, {'t', ctrl('T')}}, KS_NONE},
++ {"T", "檔案列表", {MC_CHOICEC, 2, {'t', ctrl('T')}}, KS_NONE},
+ NULL_MENU,
+ NULL_MENU,
+ NULL_MENU,
+@@ -763,13 +761,13 @@
+ {HELP_MENU,
+ OTHER_MENU,
+ EXIT_SETUP_MENU,
+- {"C", "[Change Val]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE},
++ {"C", "[修改設定值]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE},
+ PREV_MENU,
+ NEXT_MENU,
+ PREVPAGE_MENU,
+ NEXTPAGE_MENU,
+- {"A", "Add Value", {MC_ADD,1,{'a'}}, KS_NONE},
+- {"D", "Delete Val", {MC_DELETE,1,{'d'}}, KS_NONE},
++ {"A", "新增設定值", {MC_ADD,1,{'a'}}, KS_NONE},
++ {"D", "刪除設定值", {MC_DELETE,1,{'d'}}, KS_NONE},
+ PRYNTTXT_MENU,
+ WHEREIS_MENU,
+
+@@ -777,7 +775,7 @@
+ OTHER_MENU,
+ NULL_MENU,
+ NULL_MENU,
+- {"T", "ToNicks", {MC_CHOICE, 2, {'t', ctrl('T')}}, KS_NONE},
++ {"T", "暱稱列表", {MC_CHOICE, 2, {'t', ctrl('T')}}, KS_NONE},
+ NULL_MENU,
+ NULL_MENU,
+ NULL_MENU,
+@@ -806,7 +804,7 @@
{HELP_MENU,
NULL_MENU,
EXIT_SETUP_MENU,
@@ -228,7 +364,7 @@
PREV_MENU,
NEXT_MENU,
PREVPAGE_MENU,
-@@ -672,7 +672,7 @@
+@@ -821,7 +819,7 @@
{HELP_MENU,
NULL_MENU,
EXIT_SETUP_MENU,
@@ -237,15 +373,7 @@
PREV_MENU,
NEXT_MENU,
PREVPAGE_MENU,
-@@ -696,7 +696,6 @@
- || (F) == F_DISABLE_DFLT_IN_BUG_RPT \
- || (F) == F_DISABLE_ALARM \
- || (F) == F_ALLOW_CHANGING_FROM \
-- || (F) == F_TCAP_WINS \
- || (F) == F_QUELL_PARTIAL_FETCH \
- || (F) == F_AGG_SEQ_COPY)
-
-@@ -1377,14 +1376,14 @@
+@@ -1489,14 +1487,14 @@
{HELP_MENU,
PRYNTTXT_MENU,
EXIT_SETUP_MENU,
@@ -264,7 +392,7 @@
WHEREIS_MENU};
INST_KEY_MENU(printer_edit_keymenu, printer_edit_keys);
-@@ -1392,7 +1391,7 @@
+@@ -1504,7 +1502,7 @@
{HELP_MENU,
PRYNTTXT_MENU,
EXIT_SETUP_MENU,
@@ -273,7 +401,7 @@
PREV_MENU,
NEXT_MENU,
PREVPAGE_MENU,
-@@ -1425,7 +1424,7 @@
+@@ -1537,7 +1535,7 @@
char *saved_printer;
OPT_SCREEN_S screen;
@@ -282,7 +410,16 @@
return;
saved_printer = cpystr(ps->VAR_PRINTER);
-@@ -1794,7 +1793,7 @@
+@@ -1553,7 +1551,7 @@
+ #ifdef OS2
+ = cpystr("\"Select\" a port or |pipe-command as your default printer.");
+ #else
+- = cpystr("You may \"Select\" a print command as your default printer.");
++ = cpystr("可以 \"選擇\" 一個列印命令為預設印表機。");
+ #endif
+
+ new_confline(&ctmpa);
+@@ -1906,7 +1904,7 @@
vsave = save_config_vars(ps);
switch(conf_scroll_screen(ps, &screen, start_line,
@@ -291,7 +428,7 @@
case 0:
break;
-@@ -1835,8 +1834,8 @@
+@@ -1947,8 +1945,8 @@
fs_give((void **)def_printer_line);
*def_printer_line = fs_get(36 + strlen(p) + 1);
@@ -302,7 +439,7 @@
fs_give((void **)&nick);
fs_give((void **)&cmd);
-@@ -1846,7 +1845,7 @@
+@@ -1958,7 +1956,7 @@
static struct key flag_keys[] =
{HELP_MENU,
NULL_MENU,
@@ -311,7 +448,7 @@
TOGGLE_MENU,
PREV_MENU,
NEXT_MENU,
-@@ -2000,9 +1999,9 @@
+@@ -2112,9 +2110,9 @@
static struct key addr_select_keys[] =
{HELP_MENU,
@@ -323,11 +460,11 @@
PREV_MENU,
NEXT_MENU,
PREVPAGE_MENU,
-@@ -2016,29 +2015,29 @@
+@@ -2128,29 +2126,29 @@
static struct key addr_select_with_goback_keys[] =
{HELP_MENU,
NULL_MENU,
-- {"<", "AddbkList", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE},
+- {"<", "AddressBkList", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE},
- {"S", "[Select]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE},
+ {"<", "地址簿列表", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE},
+ {"S", "[選擇]", {MC_CHOICE,3,{'s',ctrl('M'),ctrl('J')}}, KS_NONE},
@@ -345,7 +482,7 @@
static struct key addr_select_with_view_keys[] =
{HELP_MENU,
NULL_MENU,
-- {"<", "AddbkList", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE},
+- {"<", "AddressBkList", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE},
- {">", "[View]",
+ {"<", "地址簿列表", {MC_ADDRBOOK,2,{'<',','}}, KS_NONE},
+ {">", "[檢視]",
@@ -359,7 +496,25 @@
FWDEMAIL_MENU,
SAVE_MENU,
WHEREIS_MENU};
-@@ -2047,7 +2046,7 @@
+@@ -2159,14 +2157,14 @@
+ static struct key addr_select_for_url_keys[] =
+ {HELP_MENU,
+ NULL_MENU,
+- {"<", "Exit Viewer", {MC_ADDRBOOK,3,{'<',',','e'}}, KS_NONE},
+- {">", "[View]",
++ {"<", "離開", {MC_ADDRBOOK,3,{'<',',','e'}}, KS_NONE},
++ {">", "[檢視]",
+ {MC_VIEW_TEXT,5,{'v','>','.',ctrl('M'),ctrl('J')}}, KS_NONE},
+ PREV_MENU,
+ NEXT_MENU,
+ PREVPAGE_MENU,
+ NEXTPAGE_MENU,
+- {"C", "ComposeTo", {MC_COMPOSE,1,{'c'}}, KS_COMPOSER},
++ {"C", "編修", {MC_COMPOSE,1,{'c'}}, KS_COMPOSER},
+ FWDEMAIL_MENU,
+ SAVE_MENU,
+ WHEREIS_MENU};
+@@ -2175,7 +2173,7 @@
static struct key addr_select_exit_keys[] =
{NULL_MENU,
NULL_MENU,
@@ -368,7 +523,7 @@
KS_EXITMODE},
NULL_MENU,
NULL_MENU,
-@@ -2063,7 +2062,7 @@
+@@ -2191,7 +2189,7 @@
static struct key addr_select_goback_keys[] =
{NULL_MENU,
NULL_MENU,
@@ -377,7 +532,7 @@
KS_EXITMODE},
NULL_MENU,
NULL_MENU,
-@@ -2404,7 +2403,7 @@
+@@ -2546,7 +2544,7 @@
sprintf(ee+2, "%s, No Matches Returned",
ldap_err2string(wp_err->ldap_errno));
else
@@ -386,16 +541,16 @@
strcat(ee, " -- Choose Exit ]");
ctmpa->value = cpystr(ee);
-@@ -2498,7 +2497,7 @@
+@@ -2644,7 +2642,7 @@
case MC_CHOICE :
if(flags & CF_PRIVATE){
q_status_message(SM_ORDER | SM_DING, 0, 3,
- "No email address available for this entry; choose another or ExitSelect");
-+ "無法針對此項目獲得電子郵件地址;請選擇其他的或離開");
++ "本項目中沒有電子郵件地址;請選其他的項目或離開");
}
else if(some_selectable){
(*cl)->d.a.ac->selected_ld = (*cl)->d.a.ld;
-@@ -2561,15 +2560,15 @@
+@@ -2709,15 +2707,15 @@
static struct key direct_config_keys[] =
{HELP_MENU,
NULL_MENU,
@@ -418,25 +573,16 @@
WHEREIS_MENU};
INST_KEY_MENU(dir_conf_km, direct_config_keys);
-@@ -2655,7 +2654,7 @@
- */
- if(!ps->VAR_LDAP_SERVERS || !ps->VAR_LDAP_SERVERS[0] ||
- !ps->VAR_LDAP_SERVERS[0][0]){
-- if(!fixed_var(&ps->vars[V_LDAP_SERVERS], "modify", "directory list")){
-+ if(!fixed_var(&ps->vars[V_LDAP_SERVERS], "修改", "地址列表")){
- unsigned flags = 0;
-
- opt_screen = &screen;
-@@ -2665,7 +2664,7 @@
- #endif /* notdef */
-
+@@ -2789,7 +2787,7 @@
+ &first_line);
+
(void)conf_scroll_screen(ps, &screen, first_line,
- "SETUP DIRECTORY SERVERS", "servers ", 1);
+ "設定地址伺服器", "servers ", 1);
ps->mangled_screen = 1;
}
-@@ -2685,20 +2684,20 @@
+@@ -2809,20 +2807,20 @@
case MC_DELETE :
if(first_one)
q_status_message(SM_ORDER|SM_DING, 0, 3,
@@ -460,7 +606,7 @@
if(first_one)
dir_config_add(ps, cl);
else
-@@ -2708,10 +2707,10 @@
+@@ -2832,10 +2830,10 @@
break;
case MC_SHUFFLE :
@@ -473,7 +619,7 @@
else
dir_config_shuffle(ps, cl);
}
-@@ -2840,7 +2839,7 @@
+@@ -2965,7 +2963,7 @@
write_pinerc(ps);
}
else
@@ -482,7 +628,7 @@
}
free_ldap_server_info(&info);
-@@ -2870,7 +2869,7 @@
+@@ -2995,7 +2993,7 @@
if(cnt < 2){
q_status_message(SM_ORDER, 0, 3,
@@ -491,7 +637,7 @@
return;
}
-@@ -2881,12 +2880,12 @@
+@@ -3006,12 +3004,12 @@
opts[i].ch = 'u';
opts[i].rval = 'u';
opts[i].name = "U";
@@ -506,7 +652,7 @@
opts[i].ch = -1;
deefault = 'u';
-@@ -2898,11 +2897,11 @@
+@@ -3023,11 +3021,11 @@
else if(current_num == cnt - 1) /* no down */
opts[1].ch = -2;
@@ -521,7 +667,7 @@
help = (opts[0].ch == -2) ? h_dir_shuf_down
: (opts[1].ch == -2) ? h_dir_shuf_up
: h_dir_shuf;
-@@ -2912,7 +2911,7 @@
+@@ -3037,7 +3035,7 @@
switch(rv){
case 'x':
@@ -530,7 +676,7 @@
return;
case 'u':
-@@ -2950,7 +2949,7 @@
+@@ -3075,7 +3073,7 @@
free_list_array(&new_list);
if(j){
q_status_message(SM_ORDER, 0, 3,
@@ -539,7 +685,7 @@
set_current_val((*cl)->var, TRUE, FALSE);
return;
}
-@@ -3002,10 +3001,10 @@
+@@ -3127,10 +3125,10 @@
info = break_up_ldap_server(raw_server);
if(strcmp((*cl)->var->current_val.l[(*cl)->varmem], raw_server) == 0)
@@ -552,7 +698,7 @@
else{
char tmp[900];
char *subtitle;
-@@ -3740,7 +3739,7 @@
+@@ -3967,7 +3965,7 @@
}
else
q_status_message(SM_ORDER, 3, 3,
@@ -561,7 +707,7 @@
}
else{
int cnt, ans = 0;
-@@ -3763,8 +3762,8 @@
+@@ -3990,11 +3988,11 @@
*/
if(!(*cl)->var->user_val.l && cnt > 1){
static ESCKEY_S opts[] = {
@@ -571,8 +717,12 @@
+ {'r', 'r', "R", "移除一個"},
{-1, 0, NULL, NULL}};
ans = radio_buttons(
- "Ignore all default directory servers or just remove this one ? ",
-@@ -3870,7 +3869,7 @@
+- "Ignore all default directory servers or just remove this one ? ",
++ "忽略所有預設的目錄伺服器或僅移除這臺?",
+ -FOOTER_ROWS(ps), opts, 'i', 'x',
+ h_ab_del_dir_ignore, RB_NORM);
+ }
+@@ -4100,7 +4098,7 @@
CONF_S *first_line = NULL;
q_status_message(SM_ORDER, 0, 3,
@@ -581,7 +731,7 @@
dir_init_display(ps, cl, servers,
&ps->vars[V_LDAP_SERVERS], &first_line);
*cl = first_line;
-@@ -3910,7 +3909,7 @@
+@@ -4140,7 +4138,7 @@
}
}
else
@@ -590,16 +740,25 @@
}
if(rv == 1){
-@@ -4416,7 +4415,7 @@
- ps->mangled_screen = 1;
- }
- else
-- q_status_message(SM_ORDER,0,3,"No help yet!");
-+ q_status_message(SM_ORDER,0,3,"輔助說明尚未存在!");
-
- break;
+@@ -4164,7 +4162,7 @@
+ int (*tool)();
+ {
+ new_confline(ctmp);
+- (*ctmp)->help_title= "HELP FOR DIRECTORY SERVER CONFIGURATION";
++ (*ctmp)->help_title= "目錄伺服器設定的輔助說明";
+ (*ctmp)->value = cpystr(ADD_FIRST_LDAP_SERVER);
+ (*ctmp)->var = var;
+ (*ctmp)->varmem = 0;
+@@ -4227,7 +4225,7 @@
+ p->next = b;
+ }
-@@ -4473,7 +4472,7 @@
+- (*ctmp)->help_title= "HELP FOR DIRECTORY SERVER CONFIGURATION";
++ (*ctmp)->help_title= "目錄伺服器設定的輔助說明";
+ (*ctmp)->value = serv;
+ (*ctmp)->var = var;
+ (*ctmp)->varmem = member;
+@@ -4709,7 +4707,7 @@
if(i)
config_scroll_up(i);
else
@@ -608,7 +767,7 @@
}
break;
-@@ -4497,7 +4496,7 @@
+@@ -4733,7 +4731,7 @@
}
else
q_status_message(SM_ORDER, 0, 1,
@@ -617,7 +776,7 @@
break;
-@@ -4540,7 +4539,7 @@
+@@ -4776,7 +4774,7 @@
if(ctmpa == screen->current){
q_status_message(SM_ORDER,0,1,
@@ -626,7 +785,7 @@
goto no_down;
}
-@@ -4571,7 +4570,7 @@
+@@ -4807,7 +4805,7 @@
if(ctmpa){
if(ctmpa == screen->current)
q_status_message(SM_ORDER, 0, 1,
@@ -635,7 +794,7 @@
screen->current = ctmpa;
}
-@@ -4651,13 +4650,13 @@
+@@ -4965,13 +4963,13 @@
HelpType help;
static ESCKEY_S ekey[] = {
{0, 0, "", ""},
@@ -652,7 +811,7 @@
(last[0]) ? "[" : "",
(last[0]) ? last : "",
(last[0]) ? "]" : "");
-@@ -4779,7 +4778,7 @@
+@@ -5093,7 +5091,7 @@
result = "Searched to bottom";
}
else
@@ -661,7 +820,7 @@
if((found & FOUND_IT) && ctmpa){
strcpy(last, buf);
-@@ -4798,7 +4797,7 @@
+@@ -5112,7 +5110,7 @@
screen->current = ctmpa;
}
@@ -670,22 +829,18 @@
}
break;
-@@ -4813,10 +4812,10 @@
- if(edit_config
+@@ -5128,8 +5126,8 @@
&& (ps_global->restricted || ps_global->readonly_pinerc)){
q_status_message1(SM_ORDER, 0, 3,
-- "%s can't change options or settings",
+ "%s can't change options or settings",
- ps_global->restricted ? "Pine demo"
- : "Config file not changeable,");
-- if(cmd == MC_EXIT){
-+ "%s無法改變選項或設定",
+ ps_global->restricted ? "Pine 展示版"
-+ : "設定檔無法改變,");
-+ if(cmd == MC_EXIT || cmd == KEY_LEFT){
++ : "無法改變的設定檔,");
+ if(cmd == MC_EXIT){
retval = 0;
done++;
- }
-@@ -4831,9 +4830,9 @@
+@@ -5145,9 +5143,9 @@
&screen->current, flags)){
case -1:
q_status_message2(SM_ORDER, 0, 2,
@@ -697,7 +852,7 @@
break;
case 0:
-@@ -5370,11 +5369,11 @@
+@@ -5495,11 +5493,11 @@
ekey[1].ch = ctrl('P');
ekey[1].rval = ctrl('P');
ekey[1].name = "^P";
@@ -711,7 +866,7 @@
ekey[3].ch = KEY_DOWN;
ekey[3].rval = ctrl('P');
ekey[3].name = "";
-@@ -5389,12 +5388,12 @@
+@@ -5514,12 +5512,12 @@
sval[0] = '\0';
switch(cmd){
case MC_ADD: /* add to list */
@@ -726,7 +881,7 @@
}
else{
int maxwidth =min(80,ps->ttyo->screen_cols) - 15;
-@@ -5418,7 +5417,7 @@
+@@ -5543,7 +5541,7 @@
}
sprintf(prompt,
@@ -735,7 +890,7 @@
}
else if((*cl)->var->is_list
&& !(*cl)->var->user_val.l
-@@ -5427,13 +5426,13 @@
+@@ -5552,13 +5550,13 @@
ekey[0].ch = 'r';
ekey[0].rval = 'r';
ekey[0].name = "R";
@@ -752,14 +907,14 @@
switch(radio_buttons(prompt, -FOOTER_ROWS(ps), ekey, 'a', 'x',
h_config_replace_add, RB_NORM)){
case 'a':
-@@ -5447,25 +5446,25 @@
+@@ -5572,25 +5570,25 @@
}
add_text:
- sprintf(prompt, "Enter the %stext to be added : ",
- flags&CF_NUMBER ? "numeric " : "");
+ sprintf(prompt, "輸入想加入的%s字:",
-+ flags&CF_NUMBER ? "數 " : "文");
++ flags&CF_NUMBER ? "數" : "文");
break;
case 'r':
@@ -767,7 +922,7 @@
- sprintf(prompt, "Enter the %sreplacement text : ",
- flags&CF_NUMBER ? "numeric " : "");
+ sprintf(prompt, "輸入想取代的%s字:",
-+ flags&CF_NUMBER ? "數 " : "文");
++ flags&CF_NUMBER ? "數" : "文");
break;
case 'x':
@@ -781,11 +936,11 @@
- sprintf(prompt, "Enter the %stext to be added : ",
- flags&CF_NUMBER ? "numeric " : "");
+ sprintf(prompt, "輸入想加入的%s字:",
-+ flags&CF_NUMBER ? "數 " : "文");
++ flags&CF_NUMBER ? "數" : "文");
ps->mangled_footer = 1;
-@@ -5482,7 +5481,7 @@
+@@ -5607,7 +5605,7 @@
ekey[0].ch = ctrl('W');
ekey[0].rval = 5;
ekey[0].name = "^W";
@@ -794,7 +949,7 @@
ekey[1].ch = -1;
}
else if(!(flags&CF_NUMBER))
-@@ -5536,7 +5535,7 @@
+@@ -5660,7 +5658,7 @@
}
else{
q_status_message1(SM_ORDER, 0, 3,
@@ -803,7 +958,7 @@
rv = ps->mangled_body = 0;
}
-@@ -5544,7 +5543,7 @@
+@@ -5668,7 +5666,7 @@
}
else{
q_status_message1(SM_ORDER, 0, 3,
@@ -812,7 +967,7 @@
}
}
else{
-@@ -5552,7 +5551,7 @@
+@@ -5676,7 +5674,7 @@
&& !(isdigit((unsigned char)sval[0])
|| sval[0] == '-' || sval[0] == '+')){
q_status_message(SM_ORDER,3,3,
@@ -821,7 +976,7 @@
i = 3; /* to keep loop going */
continue;
}
-@@ -5565,7 +5564,7 @@
+@@ -5689,7 +5687,7 @@
}
}
else if(i == 1){
@@ -830,18 +985,18 @@
}
else if(i == 3){
help = help == NO_HELP ? h_config_add : NO_HELP;
-@@ -5588,8 +5587,8 @@
+@@ -5712,8 +5710,8 @@
}
sprintf(prompt,
- "Enter text to insert %s \"%.*s\": ",
- after ? "after" : "before", k, tmpval);
+ "輸入想要插在 \"%.*s\" %s的文字",
-+ k, tmpval, after ? "之後" : "之前");
++ after ? "之後" : "之前", k, tmpval);
continue;
}
else if(i == ctrl('P')){
-@@ -5609,7 +5608,7 @@
+@@ -5733,7 +5731,7 @@
*/
if(++repeat_key > 0){
q_status_message1(SM_ORDER,3,3,
@@ -850,7 +1005,7 @@
repeat_key = -5;
}
}
-@@ -5633,7 +5632,7 @@
+@@ -5757,7 +5755,7 @@
if(numval == hirange){
if(++repeat_key > 0){
q_status_message1(SM_ORDER,3,3,
@@ -859,7 +1014,25 @@
repeat_key = -5;
}
}
-@@ -5686,7 +5685,7 @@
+@@ -5782,7 +5780,7 @@
+ && (*cl)->var->current_val.p){
+ char pmt[40];
+
+- sprintf(pmt, "Override default with %s", empty_val2);
++ sprintf(pmt, "以 %s 覆蓋預設值", empty_val2);
+ if(want_to(pmt, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){
+ sval[0] = '\0';
+ (*cl)->var->user_val.p = cpystr(sval);
+@@ -5795,7 +5793,7 @@
+ && (*cl)->var->current_val.l){
+ char pmt[40];
+
+- sprintf(pmt, "Override default with %s", empty_val2);
++ sprintf(pmt, "以 %s 覆蓋預設值", empty_val2);
+ if(want_to(pmt, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){
+ char **ltmp;
+
+@@ -5810,7 +5808,7 @@
}
else if(((*cl)->var->is_list && !(*cl)->var->user_val.l)
|| (!(*cl)->var->is_list && !(*cl)->var->user_val.p)){
@@ -868,7 +1041,7 @@
}
else{
if((*cl)->var->is_fixed)
-@@ -5702,7 +5701,8 @@
+@@ -5826,7 +5824,8 @@
: "<NULL VALUE>",
(*cl)->var->name);
else
@@ -878,7 +1051,7 @@
(*cl)->var->is_list ? "item " : "",
(*cl)->var->is_list
? int2string((*cl)->varmem + 1)
-@@ -5710,8 +5710,7 @@
+@@ -5834,8 +5833,7 @@
? (!*(*cl)->var->user_val.p)
? empty_val2
: (*cl)->var->user_val.p
@@ -888,7 +1061,7 @@
ps->mangled_footer = 1;
if(want_to(prompt, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){
-@@ -5726,7 +5725,7 @@
+@@ -5850,7 +5848,7 @@
}
}
else
@@ -897,7 +1070,7 @@
}
break;
-@@ -5855,7 +5854,7 @@
+@@ -5978,7 +5976,7 @@
&& !(isdigit((unsigned char)sval[0])
|| sval[0] == '-' || sval[0] == '+')){
q_status_message(SM_ORDER,3,3,
@@ -906,7 +1079,7 @@
continue;
}
-@@ -5869,7 +5868,7 @@
+@@ -5992,7 +5990,7 @@
}
}
else if(i == 1){
@@ -915,7 +1088,7 @@
}
else if(i == 3){
help = help == NO_HELP ? h_config_change : NO_HELP;
-@@ -5887,7 +5886,7 @@
+@@ -6010,7 +6008,7 @@
*/
if(++repeat_key > 0){
q_status_message1(SM_ORDER,3,3,
@@ -924,7 +1097,7 @@
repeat_key = -5;
}
}
-@@ -5903,7 +5902,7 @@
+@@ -6026,7 +6024,7 @@
if(numval == hirange){
if(++repeat_key > 0){
q_status_message1(SM_ORDER,3,3,
@@ -933,7 +1106,7 @@
repeat_key = -5;
}
}
-@@ -5990,15 +5989,15 @@
+@@ -6113,15 +6111,15 @@
if(flags & CF_CHANGES){
switch(want_to(EXIT_PMT, 'y', 'x', h_config_undo, WT_FLUSH_IN)){
case 'y':
@@ -952,7 +1125,7 @@
return(0);
}
}
-@@ -6290,7 +6289,7 @@
+@@ -6413,7 +6411,7 @@
&& want_to("Delete old unused personal option setting",
'y', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){
fs_give((void **)&(*cl)->var->user_val.p);
@@ -961,7 +1134,7 @@
rv = 1;
}
-@@ -6429,7 +6428,7 @@
+@@ -6552,7 +6550,7 @@
&& want_to("Delete old unused personal option setting",
'y', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){
fs_give((void **)&(*cl)->var->user_val.p);
@@ -970,7 +1143,7 @@
rv = 1;
}
-@@ -6519,15 +6518,15 @@
+@@ -6642,15 +6640,15 @@
fs_give((void **)&q);
}
@@ -989,7 +1162,7 @@
retval = 1;
}
-@@ -6538,11 +6537,11 @@
+@@ -6661,11 +6659,11 @@
set_variable(V_PERSONAL_PRINT_CATEGORY,
comatose(ps->printer_category), 0);
q_status_message1(SM_ORDER,0,3,
@@ -1003,7 +1176,7 @@
retval = 1;
}
-@@ -6557,11 +6556,11 @@
+@@ -6680,11 +6678,11 @@
set_variable(V_PERSONAL_PRINT_CATEGORY,
comatose(ps->printer_category), 0);
q_status_message1(SM_ORDER,0,3,
@@ -1017,7 +1190,7 @@
retval = 1;
}
-@@ -6611,7 +6610,7 @@
+@@ -6734,23 +6732,23 @@
switch(cmd){
case MC_ADD: /* add to list */
sval[0] = '\0';
@@ -1025,8 +1198,28 @@
+ if(!fixed_var((*cl)->var, "新增", NULL)){
if((*cl)->var->user_val.l && (*cl)->value){
- strcpy(prompt, "Enter printer name : ");
-@@ -6643,17 +6642,17 @@
+- strcpy(prompt, "Enter printer name : ");
++ strcpy(prompt, "輸入印表機名稱:");
+ }
+ else if(!(*cl)->var->user_val.l && (*cl)->var->current_val.l){
+ /* Add to list which doesn't exist, but default does exist */
+ ekey[0].ch = 'r';
+ ekey[0].rval = 'r';
+ ekey[0].name = "R";
+- ekey[0].label = "Replace";
++ ekey[0].label = "取代";
+ ekey[1].ch = 'a';
+ ekey[1].rval = 'a';
+ ekey[1].name = "A";
+- ekey[1].label = "Add To";
++ ekey[1].label = "新增";
+ ekey[2].ch = -1;
+- strcpy(prompt, "Replace or Add To default value ? ");
++ strcpy(prompt, "取代或新增至預設值?");
+ switch(i = radio_buttons(prompt, -FOOTER_ROWS(ps), ekey, 'a',
+ 'x', h_config_replace_add, RB_NORM)){
+ case 'a':
+@@ -6766,17 +6764,17 @@
ltmp[k + 1] = ltmp[k] = NULL;
add_text:
@@ -1047,7 +1240,7 @@
break;
}
-@@ -6661,7 +6660,7 @@
+@@ -6784,7 +6782,7 @@
break;
}
else
@@ -1056,7 +1249,7 @@
ps->mangled_footer = 1;
help = NO_HELP;
-@@ -6673,7 +6672,7 @@
+@@ -6796,7 +6794,7 @@
ekey[0].ch = ctrl('W');
ekey[0].rval = 5;
ekey[0].name = "^W";
@@ -1065,8 +1258,8 @@
ekey[1].ch = -1;
}
else
-@@ -6690,7 +6689,7 @@
- removing_trailing_white_space(name);
+@@ -6812,7 +6810,7 @@
+ removing_leading_and_trailing_white_space(name);
}
else if(i == 1){
- q_status_message(SM_ORDER,0,3,"Add cancelled");
@@ -1074,21 +1267,21 @@
}
else if(i == 3){
help = (help == NO_HELP) ? h_config_insert_after : NO_HELP;
-@@ -6744,7 +6743,7 @@
- * Don't allow input of multiple entries at once.
- */
- q_status_message(SM_ORDER,3,5,
-- "No commas allowed in command");
-+ "命令中不可有逗號");
- i = 2;
- continue;
- }
-@@ -6759,10 +6758,10 @@
+@@ -6830,7 +6828,7 @@
+ #ifdef OS2
+ strcpy(prompt, "Enter port or |command : ");
+ #else
+- strcpy(prompt, "Enter command for printer : ");
++ strcpy(prompt, "輸入給印表機的命令:");
+ #endif
+ while(i != 0 && i != 1){
+ oeflags = OE_APPEND_CURRENT;
+@@ -6880,10 +6878,10 @@
}
else
q_status_message1(SM_ORDER, 0, 3,
- "Can't add %s to list", empty_val);
-+ "無法新增 %s 至列表中", empty_val);
++ "無法將 %s 新增至列表中", empty_val);
}
else if(i == 1){
- q_status_message(SM_ORDER,0,3,"Add cancelled");
@@ -1096,14 +1289,7 @@
}
else if(i == 3){
help = help == NO_HELP ? h_config_print_cmd : NO_HELP;
-@@ -6800,19 +6799,19 @@
- }
- }
- else if(!(*cl)->var->user_val.l){
-- q_status_message(SM_ORDER, 0, 3, "No set value to delete");
-+ q_status_message(SM_ORDER, 0, 3, "沒有任何設定值遭刪除");
- }
- else{
+@@ -6927,13 +6925,13 @@
if((*cl)->var->is_fixed){
parse_printer((*cl)->var->user_val.l[(*cl)->varmem],
&nick, &p, NULL, NULL, NULL, NULL);
@@ -1119,7 +1305,7 @@
int2string((*cl)->varmem + 1));
ps->mangled_footer = 1;
-@@ -6822,7 +6821,7 @@
+@@ -6943,7 +6941,7 @@
config_del_list_item(cl, &newval);
}
else
@@ -1128,7 +1314,7 @@
}
break;
-@@ -6833,7 +6832,7 @@
+@@ -6954,7 +6952,7 @@
&& !strucmp(ps->VAR_PRINTER,(*cl)->var->current_val.l[(*cl)->varmem]))
changing_selected = 1;
@@ -1137,7 +1323,7 @@
break;
else if(!(*cl)->var->user_val.l && (*cl)->var->current_val.l)
goto replace_text;
-@@ -6845,22 +6844,22 @@
+@@ -6966,22 +6964,22 @@
ekey[0].ch = 'n';
ekey[0].rval = 'n';
ekey[0].name = "N";
@@ -1165,7 +1351,7 @@
break;
}
else if(i == 'c'){
-@@ -6869,7 +6868,7 @@
+@@ -6990,7 +6988,7 @@
parse_printer((*cl)->var->user_val.l[(*cl)->varmem],
NULL, &p, NULL, NULL, NULL, &all_but_cmd);
@@ -1174,7 +1360,7 @@
strcpy(sval, p ? p : "");
fs_give((void **)&p);
-@@ -6908,12 +6907,12 @@
+@@ -7028,12 +7026,12 @@
* Don't allow input of multiple entries at once.
*/
q_status_message(SM_ORDER,3,5,
@@ -1189,7 +1375,7 @@
}
else if(i == 3){
help = help == NO_HELP ? h_config_change : NO_HELP;
-@@ -6932,7 +6931,7 @@
+@@ -7052,7 +7050,7 @@
parse_printer((*cl)->var->user_val.l[(*cl)->varmem],
&p, NULL, NULL, NULL, &all_but_nick, NULL);
@@ -1198,7 +1384,7 @@
strcpy(name, p ? p : "");
fs_give((void **)&p);
-@@ -6962,7 +6961,7 @@
+@@ -7081,7 +7079,7 @@
newval = &(*cl)->value;
}
else if(i == 1){
@@ -1207,7 +1393,7 @@
}
else if(i == 3){
help = help == NO_HELP ? h_config_change : NO_HELP;
-@@ -6983,18 +6982,18 @@
+@@ -7102,18 +7100,18 @@
ekey[0].ch = 'i';
ekey[0].rval = 'i';
ekey[0].name = "I";
@@ -1230,7 +1416,7 @@
break;
}
else{
-@@ -7003,8 +7002,8 @@
+@@ -7122,8 +7120,8 @@
parse_printer((*cl)->var->user_val.l[(*cl)->varmem],
&nick, &p, &init, &trailer, NULL, NULL);
@@ -1241,7 +1427,7 @@
strcpy(sval, (j == 'i') ? init : trailer);
tmp = string_to_cstring(sval);
-@@ -7059,7 +7058,7 @@
+@@ -7177,7 +7175,7 @@
newval = &(*cl)->value;
}
else if(i == 1){
@@ -1250,7 +1436,7 @@
}
else if(i == 3){
help=(help == NO_HELP)?h_config_print_init:NO_HELP;
-@@ -7137,18 +7136,18 @@
+@@ -7255,18 +7253,18 @@
case MC_DELETE :
if((*cl)->d.c.ct->use & CNTXT_INCMNG)
@@ -1273,7 +1459,7 @@
context_select_edit(ps, cl);
ps->mangled_screen = 1;
}
-@@ -7156,7 +7155,7 @@
+@@ -7274,7 +7272,7 @@
break;
case MC_ADD :
@@ -1282,7 +1468,7 @@
context_select_add(ps, cl);
ps->mangled_screen = 1;
}
-@@ -7165,9 +7164,9 @@
+@@ -7283,9 +7281,9 @@
case MC_SHUFFLE :
if((*cl)->d.c.ct->use & CNTXT_INCMNG)
@@ -1294,7 +1480,7 @@
context_select_shuffle(ps, cl);
break;
-@@ -7234,7 +7233,7 @@
+@@ -7352,7 +7350,7 @@
struct key_menu *km;
CONT_SCR_S *cs;
@@ -1303,16 +1489,16 @@
/* create a corresponding new CONF_S */
new_ctxt = new_context(raw_ctxt, NULL);
-@@ -7313,7 +7312,7 @@
+@@ -7416,7 +7414,7 @@
/* Tell the user it was a huge success... */
q_status_message(SM_ORDER, 0, 3,
-- "New collection added! Use \"$\" to adjust order.");
+- "New collection added. Use \"$\" to adjust order.");
+ "新的總集加入了!請用 \"$\" 調整順序。");
}
}
-@@ -7332,11 +7331,11 @@
+@@ -7435,11 +7433,11 @@
if(!((*cl)->var->user_val.l && (*cl)->var->user_val.l[0])){
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -1326,14 +1512,14 @@
old_cl->value);
if(want_to(tmp, 'n', 'n', NO_HELP, WT_FLUSH_IN) == 'y'){
/* Remove from var list */
-@@ -7448,12 +7447,12 @@
+@@ -7551,12 +7549,12 @@
ps->mangled_body = 1;
q_status_message(SM_ORDER, 0, 3,
(old_cl == *cl)
- ? "Last collection deleted. Using default."
- : "Collection deleted");
+ ? "最後一個總集已被刪除。使用預設值。"
-+ : "褻陘w被刪除");
++ : "總集已被刪除");
}
else
@@ -1342,7 +1528,7 @@
}
-@@ -7475,7 +7474,7 @@
+@@ -7578,7 +7576,7 @@
if(p = strstr(tpath, "%s"))
*p = '\0';
@@ -1351,7 +1537,7 @@
(*cl)->d.c.ct->server, tpath,
(*cl)->d.c.ct->dir->view.user)){
-@@ -7545,7 +7544,7 @@
+@@ -7648,7 +7646,7 @@
set_current_val((*cl)->var, TRUE, FALSE);
@@ -1360,7 +1546,24 @@
}
}
-@@ -7587,7 +7586,7 @@
+@@ -7670,14 +7668,14 @@
+ ekey[n].ch = 'u';
+ ekey[n].rval = 'u';
+ ekey[n].name = "U";
+- ekey[n++].label = "Up";
++ ekey[n++].label = "上";
+ }
+
+ if((*cl)->d.c.ct->next && !((*cl)->d.c.ct->use & CNTXT_INCMNG)){
+ ekey[n].ch = 'd';
+ ekey[n].rval = 'd';
+ ekey[n].name = "D";
+- ekey[n++].label = "Down";
++ ekey[n++].label = "下";
+ }
+
+ if(n){
+@@ -7690,7 +7688,7 @@
if((cmd = radio_buttons(prompt, -FOOTER_ROWS(ps), ekey,
(n == 1) ? 'd' : 0, 'x',
NO_HELP, RB_NORM)) == 'x'){
@@ -1369,7 +1572,7 @@
}
else if((cmd == 'u' && (ctmp = context_select_prev(*cl)))
|| (cmd == 'd' && (ctmp = context_select_next(*cl)))){
-@@ -7686,7 +7685,7 @@
+@@ -7789,7 +7787,7 @@
}
}
else
@@ -1378,7 +1581,7 @@
}
-@@ -8148,7 +8147,7 @@
+@@ -8254,7 +8252,7 @@
if(cl->var->current_val.l){
int i, l, l2;
@@ -1387,7 +1590,7 @@
for(i = 0; cl->var->current_val.l[i]; i++){
if(i)
*p++ = ',';
-@@ -8180,7 +8179,7 @@
+@@ -8286,7 +8284,7 @@
sprintf(tmp, cl->var->is_fixed
? "<%s%s%s%s>%*s" : "<%s%s%s%s>%*s",
cl->var->is_fixed ? fixed_val : no_val,
@@ -1396,7 +1599,7 @@
(cl->var->current_val.p) ? cl->var->current_val.p : "",
(cl->var->current_val.p) ? "\"" : "",
max(0, ps->ttyo->screen_cols - cl->valoffset - 13
-@@ -8322,7 +8321,7 @@
+@@ -8428,7 +8426,7 @@
p = (struncmp(*vp, "no-", 3)) ? *vp : *vp + 3;
if(!strucmp(p, f->name) || (og && !strucmp(p, "old-growth"))){
q_status_message(SM_ORDER, 3, 3,
@@ -1405,16 +1608,16 @@
return;
}
}
-@@ -8360,7 +8359,7 @@
- (void *)(F_ON(f->value,ps) ? 1 : 0));
- else if(f->value == F_ENABLE_INCOMING && F_ON(f->value, ps)){
- q_status_message(SM_ORDER | SM_DING, 3, 4,
-- "Folder List changes will take effect your next pine session.");
-+ "資料匣列表的改變將在下次啟動 pine 時生效。");
- }
- else if(f->value == F_PRESERVE_START_STOP){
- /* toggle raw mode settings to make tty driver aware of new setting */
-@@ -8529,8 +8528,8 @@
+@@ -8477,7 +8475,7 @@
+
+ case F_ENABLE_INCOMING :
+ q_status_message(SM_ORDER | SM_DING, 3, 4,
+- "Folder List changes will take effect your next pine session.");
++ "資料匣列表的改變將在下次啟動 pine 時生效。");
+
+ break;
+
+@@ -8659,8 +8657,8 @@
{
if(v && v->is_fixed){
q_status_message2(SM_ORDER, 3, 3,
@@ -1425,7 +1628,7 @@
return(1);
}
-@@ -8829,7 +8828,7 @@
+@@ -8963,7 +8961,7 @@
&& var->is_list
&& !var->user_val.l
&& var->current_val.l)))
@@ -1434,25 +1637,25 @@
if(var == &ps->vars[V_USER_DOMAIN]){
char *p, *q;
-@@ -8840,7 +8839,7 @@
+@@ -8974,7 +8972,7 @@
if(*(++p)){
if(!revert)
q_status_message2(SM_ORDER, 3, 5,
- "User-domain (%s) cannot contain \"@\"; using %s",
-+ "User-domain (%s) 不可包括 \"@\"; 使用 %s",
++ "User-domain (%s) 不可包括 \"@\";使用 %s",
ps->VAR_USER_DOMAIN, p);
q = ps->VAR_USER_DOMAIN;
while((*q++ = *p++) != '\0')
-@@ -8849,7 +8848,7 @@
+@@ -8983,7 +8981,7 @@
else{
if(!revert)
q_status_message1(SM_ORDER, 3, 5,
- "User-domain (%s) cannot contain \"@\"; deleting",
-+ "User-domain (%s) 不可包括 \"@\"; 刪除中",
++ "User-domain (%s) 不可包括 \"@\";刪除中",
ps->VAR_USER_DOMAIN);
fs_give((void **)&ps->USR_USER_DOMAIN);
set_current_val(&ps->vars[V_USER_DOMAIN], TRUE, TRUE);
-@@ -8909,7 +8908,7 @@
+@@ -9043,7 +9041,7 @@
else if(var == &ps->vars[V_INIT_CMD_LIST]){
if(!revert)
q_status_message(SM_ASYNC, 0, 3,
@@ -1461,7 +1664,7 @@
}
else if(var == &ps->vars[V_VIEW_HEADERS]){
ps->view_all_except = 0;
-@@ -8968,10 +8967,10 @@
+@@ -9115,10 +9113,10 @@
}
else if(timeo == 0L && !revert){
q_status_message(SM_ORDER, 4, 6,
@@ -1474,3 +1677,148 @@
}
}
#if defined(DOS) || defined(OS2)
+@@ -9431,10 +9429,10 @@
+ static struct key role_select_keys[] =
+ {HELP_MENU,
+ NULL_MENU,
+- {"E", "Exit", {MC_EXIT,1,{'e'}}, KS_EXITMODE},
++ {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE},
+ NULL_MENU,
+- {"P", "PrevRole", {MC_PREVITEM, 1, {'p'}}, KS_NONE},
+- {"N", "NextRole", {MC_NEXTITEM, 2, {'n', TAB}}, KS_NONE},
++ {"P", "前一角色", {MC_PREVITEM, 1, {'p'}}, KS_NONE},
++ {"N", "次一角色", {MC_NEXTITEM, 2, {'n', TAB}}, KS_NONE},
+ PREVPAGE_MENU,
+ NEXTPAGE_MENU,
+ NULL_MENU,
+@@ -9475,7 +9473,7 @@
+ new_confline(&ctmp);
+ first_line = ctmp;
+
+- ctmp->value = cpystr("Default Role");
++ ctmp->value = cpystr("預設角色");
+ ctmp->d.r.selected = &sel_pat;
+ ctmp->d.r.pat = &local_pat;
+ ctmp->d.r.handle = pattern_h;
+@@ -9493,7 +9491,7 @@
+ menu_add_binding(ctmp->keymenu, ctrl('M'), MC_CHOICE);
+ }
+ else{
+- menu_init_binding(ctmp->keymenu, 'S', MC_CHOICE, "S", "[Select]",
++ menu_init_binding(ctmp->keymenu, 'S', MC_CHOICE, "S", "[選擇]",
+ DEFAULT_KEY);
+ menu_add_binding(ctmp->keymenu, ctrl('J'), MC_CHOICE);
+ menu_add_binding(ctmp->keymenu, ctrl('M'), MC_CHOICE);
+@@ -9516,7 +9514,7 @@
+ ctmp->valoffset = 4;
+ }
+
+- (void)conf_scroll_screen(ps, &screen, first_line, "SELECT ROLE",
++ (void)conf_scroll_screen(ps, &screen, first_line, "選擇角色",
+ "roles ", 0);
+
+ if(sel_pat){
+@@ -9617,23 +9615,23 @@
+ static struct key role_config_keys[] =
+ {HELP_MENU,
+ OTHER_MENU,
+- {"E", "Exit Setup", {MC_EXIT,1,{'e'}}, KS_EXITMODE},
+- {"C", "[Change]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE},
+- {"P", "PrevRole", {MC_PREVITEM, 1, {'p'}}, KS_NONE},
+- {"N", "NextRole", {MC_NEXTITEM, 2, {'n', TAB}}, KS_NONE},
++ {"E", "離開", {MC_EXIT,1,{'e'}}, KS_EXITMODE},
++ {"C", "[修改]", {MC_EDIT,3,{'c',ctrl('M'),ctrl('J')}}, KS_NONE},
++ {"P", "前一角色", {MC_PREVITEM, 1, {'p'}}, KS_NONE},
++ {"N", "次一角色", {MC_NEXTITEM, 2, {'n', TAB}}, KS_NONE},
+ PREVPAGE_MENU,
+ NEXTPAGE_MENU,
+- {"A", "Add Role", {MC_ADD,1,{'a'}}, KS_NONE},
+- {"D", "Del Role", {MC_DELETE,1,{'d'}}, KS_NONE},
+- {"$", "Shuffle", {MC_SHUFFLE,1,{'$'}}, KS_NONE},
++ {"A", "新增角色", {MC_ADD,1,{'a'}}, KS_NONE},
++ {"D", "刪除角色", {MC_DELETE,1,{'d'}}, KS_NONE},
++ {"$", "重新整理", {MC_SHUFFLE,1,{'$'}}, KS_NONE},
+ WHEREIS_MENU,
+
+ HELP_MENU,
+ OTHER_MENU,
+ NULL_MENU,
+ NULL_MENU,
+- {"I", "IncludeFile", {MC_ADDFILE,1,{'i'}}, KS_NONE},
+- {"X", "eXcludeFile", {MC_DELFILE,1,{'x'}}, KS_NONE},
++ {"I", "含括檔案", {MC_ADDFILE,1,{'i'}}, KS_NONE},
++ {"X", "排除檔案", {MC_DELFILE,1,{'x'}}, KS_NONE},
+ NULL_MENU,
+ NULL_MENU,
+ NULL_MENU,
+@@ -9889,7 +9887,7 @@
+ case MC_DELETE :
+ if(first_one)
+ q_status_message(SM_ORDER|SM_DING, 0, 3,
+- "Nothing to Delete, use Add");
++ "沒有可供刪除的項目,請用新增");
+ else
+ rv = role_config_del(ps, cl);
+
+@@ -9910,14 +9908,14 @@
+ case MC_SHUFFLE :
+ if(first_one)
+ q_status_message(SM_ORDER|SM_DING, 0, 3,
+- "Nothing to Shuffle, use Add");
++ "沒有可供刪除的項目,請用新增");
+ else
+ rv = role_config_shuffle(ps, cl);
+
+ break;
+
+ case MC_EXIT :
+- rv = screen_exit_cmd(flags, "Role Configuration");
++ rv = screen_exit_cmd(flags, "角色設定");
+ break;
+
+ case MC_ADDFILE :
+@@ -10158,7 +10156,7 @@
+ delete_a_role(cl);
+ }
+ else
+- q_status_message(SM_ORDER, 0, 3, "Role not deleted");
++ q_status_message(SM_ORDER, 0, 3, "角色未被刪除");
+
+ return(rv);
+ }
+@@ -10724,7 +10722,7 @@
+ free_patline(&cur_patline);
+ }
+ else
+- q_status_message(SM_ORDER, 0, 3, "Role file not removed");
++ q_status_message(SM_ORDER, 0, 3, "角色檔未被移除");
+
+ return(rv);
+ }
+@@ -11084,7 +11082,7 @@
+
+
+ struct variable *role_rule_ptr;
+-#define ALT_ROLE "Alternate Role"
++#define ALT_ROLE "替代角色"
+
+ CONF_S *inick_confs[5];
+ #define INICK_INICK_CONF 0
+@@ -11216,7 +11214,7 @@
+ def->action->role->inherit_nick &&
+ def->action->role->inherit_nick[0])
+ ? cpystr(def->action->role->inherit_nick) : NULL;
+- inick_var.global_val.p = cpystr("Default Role");
++ inick_var.global_val.p = cpystr("預設角色");
+
+ from_act_var.name = cpystr("Set From");
+ from_act_var.is_used = 1;
+@@ -12115,7 +12113,7 @@
+ if(file[len=(strlen(file)-1)] == '|')
+ file[len] = '\0';
+
+- sprintf(title, "%s EDITOR", sig ? "SIGNATURE" : "TEMPLATE");
++ sprintf(title, "%s編輯器", sig ? "簽名檔" : "模板");
+ err = signature_edit(file, title);
+ }
+
diff --git a/chinese/pine4/files/patch-bg b/chinese/pine4/files/patch-bg
index ba61cd7c282a..3a9b70ef8792 100644
--- a/chinese/pine4/files/patch-bg
+++ b/chinese/pine4/files/patch-bg
@@ -1,6 +1,6 @@
---- pine/pine.c.orig Wed Jul 22 06:02:36 1998
-+++ pine/pine.c Tue Aug 4 12:42:20 1998
-@@ -107,12 +107,12 @@
+--- pine/pine.c.orig Sat Jan 30 01:59:01 1999
++++ pine/pine.c Tue Feb 23 15:50:13 1999
+@@ -114,12 +114,12 @@
OTHER_MENU,
NULL_MENU,
NULL_MENU,
@@ -17,7 +17,7 @@
NULL_MENU,
NULL_MENU,
-@@ -122,10 +122,10 @@
+@@ -129,11 +129,11 @@
COMPOSE_MENU,
LISTFLD_MENU,
GOTO_MENU,
@@ -25,14 +25,16 @@
- {"J","Journal",{MC_JOURNAL,1,{'j'}},KS_REVIEW},
- {"S","Setup",{MC_SETUP,1,{'s'}},KS_NONE},
- {"A","AddrBook",{MC_ADDRBOOK,1,{'a'}},KS_ADDRBOOK},
+- {"#","Role",{MC_ROLE,1,{'#'}},KS_NONE},
+ {"I","索引",{MC_INDEX,1,{'i'}},KS_FLDRINDEX},
+ {"J","日誌",{MC_JOURNAL,1,{'j'}},KS_REVIEW},
+ {"S","設定",{MC_SETUP,1,{'s'}},KS_NONE},
+ {"A","地址簿",{MC_ADDRBOOK,1,{'a'}},KS_ADDRBOOK},
- NULL_MENU,
++ {"#","角色",{MC_ROLE,1,{'#'}},KS_NONE},
NULL_MENU};
INST_KEY_MENU(main_keymenu, main_keys);
-@@ -511,7 +511,7 @@
+ #define MAIN_HELP_KEY 0
+@@ -528,7 +528,7 @@
static struct key simple_file_keys[] =
{HELP_MENU,
NULL_MENU,
@@ -41,7 +43,7 @@
NULL_MENU,
NULL_MENU,
NULL_MENU,
-@@ -520,15 +520,15 @@
+@@ -537,15 +537,15 @@
PRYNTTXT_MENU,
WHEREIS_MENU,
FWDEMAIL_MENU,
@@ -60,7 +62,7 @@
sargs.bar.style = FileTextPercent;
sargs.keys.menu = &simple_file_keymenu;
setbitmap(sargs.keys.bitmap);
-@@ -709,7 +709,7 @@
+@@ -761,7 +761,7 @@
if(!pine_state->VAR_INBOX_PATH || !pine_state->VAR_INBOX_PATH[0]
|| strucmp(pine_state->VAR_INBOX_PATH, "inbox") == 0){
HelpType help = NO_HELP;
@@ -69,7 +71,7 @@
{-1, 0, NULL, NULL}};
pine_state->mangled_footer = 1;
-@@ -719,7 +719,7 @@
+@@ -771,7 +771,7 @@
rv = optionally_enter(int_mail, -FOOTER_ROWS(pine_state),
0, MAXPATH,
@@ -78,7 +80,7 @@
/* ekey */ NULL, help, &flags);
if(rv == 3){
help = (help == NO_HELP) ? h_sticky_inbox : NO_HELP;
-@@ -731,7 +731,7 @@
+@@ -783,7 +783,7 @@
}
if(rv == 1){
@@ -87,7 +89,7 @@
rv = 0; /* reset rv */
}
else if(rv == 2){
-@@ -750,7 +750,7 @@
+@@ -802,7 +802,7 @@
removing_leading_white_space(int_mail);
if((!pine_state->VAR_INBOX_PATH
|| strucmp(pine_state->VAR_INBOX_PATH, "inbox") == 0)
@@ -96,7 +98,7 @@
'y', 'n', NO_HELP, WT_NORM) == 'y'){
set_variable(V_INBOX_PATH, int_mail, 1);
}
-@@ -895,25 +895,25 @@
+@@ -949,25 +949,25 @@
*news_addition;
int key_index; /* index into keymenu array for this cmd */
} mkeys[] = {
@@ -130,7 +132,7 @@
NULL, MAIN_QUIT_KEY}
};
-@@ -1206,7 +1206,7 @@
+@@ -1295,7 +1295,7 @@
pine_state->mangled_footer = 1;
}
else{
@@ -139,7 +141,7 @@
pine_state->mangled_screen = 1;
}
-@@ -1234,7 +1234,7 @@
+@@ -1323,7 +1323,7 @@
just_a_navigate_cmd++;
}
else
@@ -148,7 +150,7 @@
break;
-@@ -1250,14 +1250,14 @@
+@@ -1339,14 +1339,14 @@
just_a_navigate_cmd++;
}
else
@@ -165,7 +167,7 @@
pine_state->mangled_screen = 1;
break;
-@@ -1486,7 +1486,7 @@
+@@ -1603,7 +1603,7 @@
/* paint the titlebar if needed */
if(ps->mangled_header){
@@ -174,7 +176,7 @@
ps->cur_folder, ps->msgmap, 1, FolderName, 0, 0);
ps->mangled_header = 0;
}
-@@ -1651,13 +1651,13 @@
+@@ -1772,14 +1772,14 @@
{
char prompt[80];
char letters[20];
@@ -185,6 +187,7 @@
- char *sigedit = "Signature";
- char *abooks = "AddressBooks";
- char *clctns = "collectionList";
+- char *roles = "Roles";
+ char *printer = "印表機";
+ char *passwd = "設定新密碼";
+ char *config = "環境設定";
@@ -192,10 +195,11 @@
+ char *sigedit = "編輯簽名檔";
+ char *abooks = "地址簿";
+ char *clctns = "總集列表";
++ char *roles = "角色";
#ifdef ENABLE_LDAP
char *dir = "Directory";
#endif
-@@ -1735,13 +1735,13 @@
+@@ -1864,13 +1864,13 @@
}
sprintf(prompt,
@@ -212,7 +216,7 @@
s = 'e';
}
-@@ -1854,14 +1854,14 @@
+@@ -1996,14 +1996,14 @@
HELP_MENU,
NULL_MENU,
{"E",NULL,{MC_EXIT,1,{'e',ctrl('M'),ctrl('J')}},KS_NONE},
@@ -229,7 +233,7 @@
NULL_MENU};
INST_KEY_MENU(nuov_keymenu, nuov_keys);
#define NUOV_EXIT 2
-@@ -1950,13 +1950,13 @@
+@@ -2100,13 +2100,13 @@
memset(&sargs, 0, sizeof(SCROLL_S));
sargs.text.text = so_text(store);
sargs.text.src = CharStar;
@@ -244,9 +248,9 @@
- sargs.help.title = "MAIN PINE HELP";
+ sargs.help.title = "PINE 的主要輔助說明";
sargs.resize_exit = 1;
- sargs.force_h = 1;
sargs.keys.menu = &km;
-@@ -1967,11 +1967,11 @@
+ km = nuov_keymenu;
+@@ -2116,11 +2116,11 @@
setbitmap(sargs.keys.bitmap);
if(ps->phone_home){
@@ -260,7 +264,7 @@
km.keys[NUOV_EXIT].bind.nch = 3;
clrbitn(NUOV_VIEW, sargs.keys.bitmap);
}
-@@ -2029,7 +2029,7 @@
+@@ -2201,7 +2201,7 @@
break;
case MC_RELNOTES :
@@ -269,7 +273,7 @@
ps_global->mangled_screen = 1;
break;
-@@ -2148,7 +2148,7 @@
+@@ -2320,7 +2320,7 @@
dprint(1, (debugfile, "\n\n ---- QUIT SCREEN ----\n"));
if(!pine_state->nr_mode && F_OFF(F_QUIT_WO_CONFIRM,pine_state)
diff --git a/chinese/pine4/files/patch-bi b/chinese/pine4/files/patch-bi
index 4c9b6fd6d5e7..094a4c68a179 100644
--- a/chinese/pine4/files/patch-bi
+++ b/chinese/pine4/files/patch-bi
@@ -1,6 +1,6 @@
---- pine/reply.c.orig Wed Jul 15 08:40:00 1998
-+++ pine/reply.c Tue Aug 4 12:42:21 1998
-@@ -88,9 +88,9 @@
+--- pine/reply.c.orig Thu Jan 28 06:32:10 1999
++++ pine/reply.c Tue Feb 23 15:55:36 1999
+@@ -107,9 +107,9 @@
/*
* Little defs to keep the code a bit neater...
*/
@@ -10,19 +10,28 @@
+#define FRM_PMT "使用 \"Reply-To:\" 地址代替 \"From:\" 地址"
+#define ALL_PMT "回覆給所有的收信者"
+#define NEWS_PMT "回覆至新聞組群,回函給作者或兩者皆要?"
+ #define SIGDASHES "-- "
- /*
- * standard type of storage object used for body parts...
-@@ -411,7 +411,7 @@
+
+@@ -293,7 +293,7 @@
+ else{ /* cancel reply */
+ role = NULL;
+ close_patterns(&pattern_h);
+- cmd_cancelled("Reply");
++ cmd_cancelled("回覆");
+ goto done_early;
+ }
+
+@@ -558,7 +558,7 @@
#endif
/* partially formatted outgoing message */
- pine_send(outgoing, &body, "COMPOSE MESSAGE REPLY",
+ pine_send(outgoing, &body, "編輯信件回函",
- fcc.tptr, &reply, NULL, NULL, NULL, 0);
+ role, fcc.tptr, &reply, redraft_pos, NULL, NULL, 0);
done:
pine_free_body(&body);
-@@ -485,7 +485,7 @@
+@@ -636,7 +636,7 @@
(ADDRESS *) NULL, env->from, 0);
if(ret == 'x') {
@@ -31,7 +40,7 @@
return(0);
}
-@@ -534,7 +534,7 @@
+@@ -685,7 +685,7 @@
|| (*saved_cc || *saved_resent))){
*flags &= ~RSF_QUERY_REPLY_ALL;
if((ret=want_to(ALL_PMT,'n','x',NO_HELP,WT_SEQ_SENSITIVE)) == 'x'){
@@ -40,7 +49,7 @@
return(0);
}
else if(ret == 'y')
-@@ -1099,8 +1099,8 @@
+@@ -1406,8 +1406,8 @@
{
int ret, edited = 0;
static ESCKEY_S rtq_opts[] = {
@@ -51,7 +60,7 @@
{-1, 0, NULL, NULL}, /* may be overridden below */
{-1, 0, NULL, NULL}
};
-@@ -1110,19 +1110,18 @@
+@@ -1417,19 +1417,18 @@
return(1);
while(1){
@@ -77,7 +86,7 @@
}
else
rtq_opts[2].ch = -1;
-@@ -1133,7 +1132,7 @@
+@@ -1440,7 +1439,7 @@
rtq_opts, edited ? 'y' : 'n',
'x', NO_HELP, RB_SEQ_SENSITIVE)){
case 'x':
@@ -86,7 +95,7 @@
return(-1);
case 'r':
-@@ -1152,7 +1151,7 @@
+@@ -1459,7 +1458,7 @@
switch(optionally_enter(buf, ps->ttyo->screen_rows > 4
? -FOOTER_ROWS(ps_global) : -1,
@@ -95,7 +104,7 @@
NULL, NO_HELP, &flags)){
case 0: /* entry successful, continue */
if(flags & OE_USER_MODIFIED){
-@@ -1165,7 +1164,7 @@
+@@ -1472,7 +1471,7 @@
break;
case 1:
@@ -104,7 +113,7 @@
case -1:
return(-1);
-@@ -1518,9 +1517,9 @@
+@@ -2476,9 +2475,9 @@
ENVELOPE *env, *outgoing;
{
int ret = 1;
@@ -117,7 +126,7 @@
{-1, 0, NULL, NULL} };
if(env->newsgroups && *env->newsgroups && !reply_poster_followup(env))
-@@ -1544,7 +1543,7 @@
+@@ -2502,7 +2501,7 @@
case 'x' : /* cancel or unknown response */
default :
@@ -126,7 +135,7 @@
ret = 0;
break;
}
-@@ -1552,7 +1551,7 @@
+@@ -2510,7 +2509,7 @@
if(ret > 1){
if(env->followup_to){
q_status_message(SM_ORDER, 2, 3,
@@ -135,21 +144,39 @@
outgoing->newsgroups = cpystr(env->followup_to);
}
else if(!outgoing->newsgroups)
-@@ -1710,7 +1709,7 @@
- * up...
- */
+@@ -3148,7 +3147,7 @@
+ : 0;
+
if(ret == 'x'){
-- q_status_message(SM_ORDER, 0, 3, "Forward message cancelled");
-+ q_status_message(SM_ORDER, 0, 3, "取消信件轉寄");
- goto clean_early;
+- cmd_cancelled("Forward");
++ cmd_cancelled("轉寄");
+ so_give((STORE_S **)&msgtext);
+ goto clean;
}
- else if(ret == 'y'){ /* attach message[s]!!! */
-@@ -1842,7 +1841,7 @@
+@@ -3163,7 +3162,7 @@
+ else{ /* cancel reply */
+ role = NULL;
+ close_patterns(&pattern_h);
+- cmd_cancelled("Forward");
++ cmd_cancelled("轉寄");
+ so_give((STORE_S **)&msgtext);
+ goto clean;
+ }
+@@ -3360,7 +3359,7 @@
pine_simple_send(outgoing, &body, NULL, NULL, NULL, 1);
else /* partially formatted outgoing message */
pine_send(outgoing, &body,
- ps->nr_mode ? "SEND MESSAGE" : "FORWARD MESSAGE",
+ ps->nr_mode ? "送出信件" : "轉寄信件",
- NULL, NULL, NULL, NULL, NULL, FALSE);
+ role, NULL, NULL, redraft_pos, NULL, NULL, FALSE);
clean:
+@@ -3383,7 +3382,7 @@
+ mail_gc(ps->mail_stream, GC_TEXTS);
+ #endif
+ q_status_message(SM_ORDER | SM_DING, 4, 5,
+- "Error fetching message contents. Can't forward message.");
++ "擷取信件內容時發生錯誤。無法轉寄信件。");
+ goto clean;
+ }
+
diff --git a/chinese/pine4/files/patch-bj b/chinese/pine4/files/patch-bj
index db53194e49f4..3613e0d2dc6c 100644
--- a/chinese/pine4/files/patch-bj
+++ b/chinese/pine4/files/patch-bj
@@ -1,6 +1,6 @@
---- pine/screen.c.orig Fri Jun 5 04:09:17 1998
-+++ pine/screen.c Tue Aug 4 12:42:21 1998
-@@ -433,7 +433,7 @@
+--- pine/screen.c.orig Wed Jan 13 10:51:51 1999
++++ pine/screen.c Tue Feb 23 15:57:08 1999
+@@ -435,7 +435,7 @@
static struct key cancel_keys[] =
@@ -9,7 +9,7 @@
{NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE},
{NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE},
{NULL,NULL,KS_NONE}, {NULL,NULL,KS_NONE},
-@@ -1124,10 +1124,10 @@
+@@ -1128,10 +1128,10 @@
as.page_column = -1;
is_context = strlen(as.context_name);
sprintf(version, "PINE %s", pine_version);
@@ -22,7 +22,7 @@
ss_len = strlen(ss_string);
tit_len = strlen(as.title); /* fixed title field width */
-@@ -1144,17 +1144,17 @@
+@@ -1148,17 +1148,17 @@
/*
* set location field's length and value based on requested style
*/
@@ -44,7 +44,7 @@
break;
case MessageNumber : /* "<loc_label> xxx of xxx DEL" */
num_len = digit_count(mn_get_total(as.msgmap));
-@@ -1162,7 +1162,7 @@
+@@ -1166,7 +1166,7 @@
as.cur_mess_col = sc - (2 * num_len) - 10;
as.del_column = as.cur_mess_col + num_len
+ digit_count(as.current_msg) + 5;
@@ -53,7 +53,7 @@
strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)),
strcpy(tmp_20k_buf + 1500, comatose(mn_get_total(as.msgmap))),
BAR_STATUS(as.msg_state));
-@@ -1174,7 +1174,7 @@
+@@ -1178,7 +1178,7 @@
as.percent_column = as.cur_mess_col + num_len
+ digit_count(as.current_msg) + 7;
as.del_column = as.percent_column + 4;
@@ -62,7 +62,7 @@
strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)),
strcpy(tmp_20k_buf + 1500, comatose(mn_get_total(as.msgmap))),
percentage(as.current_line, as.total_lines, 1),
-@@ -1185,7 +1185,7 @@
+@@ -1189,7 +1189,7 @@
case FileTextPercent :
as.page_column = sc - (14 + 2*(num_len = digit_count(as.total_lines)));
loc_len = 17 + 2*num_len;
@@ -71,7 +71,7 @@
num_len, as.current_line,
num_len, as.total_lines,
percentage(as.current_line, as.total_lines, 1));
-@@ -1259,7 +1259,7 @@
+@@ -1264,7 +1264,7 @@
ss_string);
}
else{
@@ -80,25 +80,25 @@
if(fold_len + ss_len + 8 < avail) /* all of folder fit? */
sprintf(fold_tmp, fmt, as.folder_name, ss_string);
else if((fold_len/2) + ss_len + 8 < avail)
-@@ -1307,7 +1307,7 @@
- as.current_msg = mn_get_cur(as.msgmap);
-
- if(as.style == MsgTextPercent){
-- PutLine5(0, as.cur_mess_col, "%s of %s %s %s%s",
-+ PutLine5(0, as.cur_mess_col, "%s 之 %s %s %s%s",
- strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)),
- strcpy(tmp_20k_buf + 1500,
- comatose(mn_get_total(as.msgmap))),
-@@ -1317,7 +1317,7 @@
- as.del_column += delta;
- as.percent_column += delta;
- } else {
-- PutLine4(0, as.cur_mess_col, "%s of %s %s%s",
-+ PutLine4(0, as.cur_mess_col, "%s 之 %s %s%s",
- strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)),
- strcpy(tmp_20k_buf + 1500,
- comatose(mn_get_total(as.msgmap))),
-@@ -1420,7 +1420,7 @@
+@@ -1313,7 +1313,7 @@
+ StartInverse();
+ if(delta) {
+ if(as.style == MsgTextPercent){
+- PutLine5(0, as.cur_mess_col, "%s of %s %s %s%s",
++ PutLine5(0, as.cur_mess_col, "%s 之 %s %s %s%s",
+ strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)),
+ strcpy(tmp_20k_buf + 1500,
+ comatose(mn_get_total(as.msgmap))),
+@@ -1324,7 +1324,7 @@
+ as.percent_column += delta;
+ }
+ else{
+- PutLine4(0, as.cur_mess_col, "%s of %s %s%s",
++ PutLine4(0, as.cur_mess_col, "%s 之 %s %s%s",
+ strcpy(tmp_20k_buf + 1000, comatose(as.current_msg)),
+ strcpy(tmp_20k_buf + 1500,
+ comatose(mn_get_total(as.msgmap))),
+@@ -1426,7 +1426,7 @@
as.current_line = new_line_number;
diff --git a/chinese/pine4/files/patch-bk b/chinese/pine4/files/patch-bk
index 7d218d7a14e9..d0cee7d33002 100644
--- a/chinese/pine4/files/patch-bk
+++ b/chinese/pine4/files/patch-bk
@@ -1,6 +1,6 @@
---- 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 @@
+--- pine/send.c.orig Fri Feb 5 02:17:39 1999
++++ pine/send.c Wed Feb 24 21:36:10 1999
+@@ -222,17 +222,17 @@
* Various useful strings
*/
#define INTRPT_PMT \
@@ -18,14 +18,22 @@
#define POST_PMT \
- "Posted message may go to thousands of readers. Really post"
+ "這篇文章可能被數以千計的讀者閱\讀,確定要刊登嗎"
- #define INTR_DEL_FAIL \
- "Undelete messages to remain postponed, and then continue message"
--#define INTR_DEL_PMT "Deleted messages will be removed from folder. Delete"
-+#define INTR_DEL_PMT "刪除的信件將被移出檔案匣。確定刪除嗎"
+ #define INTR_DEL_PMT \
+- "Deleted messages will be removed from folder after use. Proceed"
++ "刪除的信件於 Pine 使用後將被移出檔案匣。確定刪除嗎"
#if defined(DOS) || defined(OS2)
#define POST_PERM_GRIPE \
-@@ -382,14 +382,14 @@
+@@ -277,7 +277,7 @@
+ #define REDRAFT_PPND 0x01
+ #define REDRAFT_DEL 0x02
+
+-#define COMPOSE_MAIL_TITLE "COMPOSE MESSAGE"
++#define COMPOSE_MAIL_TITLE "編輯信件"
+
+ /*
+ * Phone home hash controls
+@@ -443,14 +443,14 @@
mail_close(stream);
if(ret == 'x'){
q_status_message(SM_ORDER, 0, 3,
@@ -42,7 +50,7 @@
file_path);
if(stream)
mail_close(stream);
-@@ -469,14 +469,14 @@
+@@ -532,14 +532,14 @@
if(ret == 'x'){
q_status_message(SM_ORDER, 0, 3,
@@ -59,7 +67,7 @@
if(stream)
mail_close(stream);
}
-@@ -562,7 +562,7 @@
+@@ -627,7 +627,7 @@
if(ret == 'x'){
q_status_message(SM_ORDER, 0, 3,
@@ -68,7 +76,7 @@
done++;
}
}
-@@ -572,7 +572,7 @@
+@@ -637,7 +637,7 @@
}
else{
q_status_message1(SM_ORDER | SM_DING, 3, 3,
@@ -77,34 +85,59 @@
if(stream)
mail_close(stream);
}
-@@ -646,7 +646,7 @@
- fs_give((void **)&tmp_fcc);
- }
+@@ -677,7 +677,7 @@
+ else{ /* cancel reply */
+ role = NULL;
+ close_patterns(&pattern_h);
+- cmd_cancelled("Composition");
++ cmd_cancelled("編輯文章");
+ return;
+ }
+
+@@ -685,7 +685,7 @@
+ }
-- pine_send(outgoing, &body, "COMPOSE MESSAGE", fcc,
-+ pine_send(outgoing, &body, "編輯信件", fcc,
- reply, redraft_pos, lcc, custom, fcc_is_sticky);
+ if(role)
+- q_status_message1(SM_ORDER, 3, 4, "Composing using role \"%s\"",
++ q_status_message1(SM_ORDER, 3, 4, "以 \"%s\" 的角色編輯",
+ role->nick);
- if(reply){
-@@ -713,7 +713,7 @@
+ /*
+@@ -830,8 +830,8 @@
*/
if(!stream->nmsgs){
- q_status_message(SM_ORDER | SM_DING, 3, 5,
-- "Empty folder. No messages really postponed!");
-+ "空的信件匣。沒有信件真正被暫緩!");
- return(redraft_cleanup(stream, TRUE));
+ q_status_message1(SM_ORDER | SM_DING, 3, 5,
+- "Empty folder! No messages really %s!",
+- (REDRAFT_PPND&flags) ? "postponed" : "interrupted");
++ "空的信件匣。沒有信件真正被%s!",
++ (REDRAFT_PPND&flags) ? "暫緩" : "中斷");
+ return(redraft_cleanup(stream, FALSE, flags));
}
else if(stream == ps_global->mail_stream){
-@@ -749,7 +749,7 @@
+@@ -857,10 +857,10 @@
+ if(count_flagged(stream, F_DEL)
+ && want_to(INTR_DEL_PMT, 'n', 0, NO_HELP, WT_NORM) == 'n'){
+ q_status_message1(SM_ORDER, 3, 3,
+- "Undelete %s, and then continue message",
++ "自%s復原刪除,並繼續該信件",
+ (REDRAFT_PPND&flags)
+- ? "messages to remain postponed"
+- : "form letters you want to keep");
++ ? "繼續暫緩的信件中"
++ : "您想保留的信件中");
+ continue;
+ }
+
+@@ -871,7 +871,7 @@
mn_give(&msgmap);
if(rv){
- q_status_message(SM_ORDER, 0, 3, "Composition cancelled");
+ q_status_message(SM_ORDER, 0, 3, "取消編輯");
- (void) redraft_cleanup(stream, FALSE);
+ (void) redraft_cleanup(stream, FALSE, flags);
return(0); /* special case */
}
-@@ -992,7 +992,7 @@
+@@ -1145,7 +1145,7 @@
if(b->type == TYPEMULTIPART){
if(strucmp(b->subtype, "mixed")){
q_status_message1(SM_INFO, 3, 4,
@@ -113,16 +146,16 @@
b->subtype);
fs_give((void **)&b->subtype);
b->subtype = cpystr("mixed");
-@@ -1000,7 +1000,7 @@
+@@ -1153,7 +1153,7 @@
}
else{
q_status_message2(SM_ORDER | SM_DING, 3, 4,
- "Unable to resume type %s/%s message",
+ "無法繼續形態為 %s/%s 的信件",
body_types[b->type], b->subtype);
- return(redraft_cleanup(stream, TRUE));
+ return(redraft_cleanup(stream, TRUE, flags));
}
-@@ -1014,7 +1014,7 @@
+@@ -1167,7 +1167,7 @@
set_mime_type_by_grope(&part->body, NULL);
if(part->body.type != TYPETEXT){
q_status_message2(SM_ORDER | SM_DING, 3, 4,
@@ -130,17 +163,21 @@
+ "無法繼續;第一部份非純文字:%s/%s",
body_types[part->body.type],
part->body.subtype);
- return(redraft_cleanup(stream, TRUE));
-@@ -1075,7 +1075,7 @@
+ return(redraft_cleanup(stream, TRUE, flags));
+@@ -1229,9 +1229,9 @@
if(stream == ps_global->mail_stream){
- q_status_message1(SM_ORDER, 3, 7,
-- "No more postponed messages, returning to \"%s\"",
-+ "沒有遭暫緩的信件了,回到 \"%s\"",
+ q_status_message2(SM_ORDER, 3, 7,
+- "No more %s, returning to \"%s\"",
+- (REDRAFT_PPND&flags) ? "postponed messages"
+- : "form letters",
++ "沒有%s了,回到 \"%s\"",
++ (REDRAFT_PPND&flags) ? "遭暫緩的信件"
++ : " form letter ",
ps_global->inbox_name);
do_broach_folder(ps_global->inbox_name,
ps_global->context_list);
-@@ -1096,7 +1096,7 @@
+@@ -1252,7 +1252,7 @@
if(!(rv = mail_delete(stream, mbox)))
q_status_message1(SM_ORDER|SM_DING, 3, 3,
@@ -149,7 +186,7 @@
fs_give((void **) &mbox);
success = rv > 0L;
-@@ -1119,7 +1119,7 @@
+@@ -1275,7 +1275,7 @@
{
if(background_posting(FALSE)){
q_status_message1(SM_ORDER, 0, 3,
@@ -158,7 +195,7 @@
type);
return(failure);
}
-@@ -1342,7 +1342,7 @@
+@@ -1498,7 +1498,7 @@
if(rc == 1 || (rc == 0 && !answer)) {
q_status_message(SM_ORDER, 3, 4,
@@ -167,7 +204,7 @@
return(0);
}
-@@ -1431,7 +1431,7 @@
+@@ -1587,7 +1587,7 @@
if(rc == 1 || (rc == 0 && !answer)) {
q_status_message(SM_ORDER, 3, 4,
@@ -176,7 +213,7 @@
return(0);
}
-@@ -1487,7 +1487,7 @@
+@@ -1643,7 +1643,7 @@
if(rc == 1 || (rc == 0 && answer[0] == '\0')) {
q_status_message(SM_ORDER, 3, 4,
@@ -185,57 +222,57 @@
return(0);
}
-@@ -1514,31 +1514,31 @@
+@@ -1670,31 +1670,31 @@
*/
static struct headerentry he_template[]={
{"From : ", "From", h_composer_from, 10, 0, NULL,
-- build_address, NULL, NULL, addr_book_compose, "To AddrBk",
-+ build_address, NULL, NULL, addr_book_compose, "地址簿",
+- build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL,
++ build_address, NULL, NULL, addr_book_compose, "地址簿", NULL,
0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK},
{"Reply-To: ", "Reply To", h_composer_reply_to, 10, 0, NULL,
-- build_address, NULL, NULL, addr_book_compose, "To AddrBk",
-+ build_address, NULL, NULL, addr_book_compose, "地址簿",
+- build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL,
++ build_address, NULL, NULL, addr_book_compose, "地址簿", NULL,
0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK},
{"To : ", "To", h_composer_to, 10, 0, NULL,
-- build_address, NULL, NULL, addr_book_compose, "To AddrBk",
-+ build_address, NULL, NULL, addr_book_compose, "地址簿",
+- build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL,
++ build_address, NULL, NULL, addr_book_compose, "地址簿", NULL,
0, 1, 0, 0, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK},
{"Cc : ", "Cc", h_composer_cc, 10, 0, NULL,
-- build_address, NULL, NULL, addr_book_compose, "To AddrBk",
-+ build_address, NULL, NULL, addr_book_compose, "地址簿",
+- build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL,
++ build_address, NULL, NULL, addr_book_compose, "地址簿", NULL,
0, 1, 0, 0, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK},
{"Bcc : ", "Bcc", h_composer_bcc, 10, 0, NULL,
-- build_address, NULL, NULL, addr_book_compose, "To AddrBk",
-+ build_address, NULL, NULL, addr_book_compose, "地址簿",
+- build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL,
++ build_address, NULL, NULL, addr_book_compose, "地址簿", NULL,
0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_TOADDRBOOK},
{"Newsgrps: ", "Newsgroups", h_composer_news, 10, 0, NULL,
-- news_build, NULL, NULL, news_group_selector, "To NwsGrps",
-+ news_build, NULL, NULL, news_group_selector, "新聞組群列表",
+- news_build, NULL, NULL, news_group_selector, "To NwsGrps", NULL,
++ news_build, NULL, NULL, news_group_selector, "新聞組群列表", NULL,
0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_NONE},
{"Fcc : ", "Fcc", h_composer_fcc, 10, 0, NULL,
-- NULL, NULL, NULL, folders_for_fcc, "To Fldrs",
-+ NULL, NULL, NULL, folders_for_fcc, "資料匣列表",
+- NULL, NULL, NULL, folders_for_fcc, "To Fldrs", NULL,
++ NULL, NULL, NULL, folders_for_fcc, "資料匣列表", NULL,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, KS_NONE},
{"Lcc : ", "Lcc", h_composer_lcc, 10, 0, NULL,
-- build_addr_lcc, NULL, NULL, addr_book_compose_lcc,"To AddrBk",
-+ build_addr_lcc, NULL, NULL, addr_book_compose_lcc,"地址簿",
+- build_addr_lcc, NULL, NULL, addr_book_compose_lcc,"To AddrBk", NULL,
++ build_addr_lcc, NULL, NULL, addr_book_compose_lcc,"地址簿", NULL,
0, 1, 0, 1, 0, 1, 0, 0, 0, 0, KS_NONE},
{"Attchmnt: ", "Attchmnt", h_composer_attachment, 10, 0, NULL,
-- NULL, NULL, NULL, NULL, "To Files",
-+ NULL, NULL, NULL, NULL, "檔案列表",
+- NULL, NULL, NULL, NULL, "To Files", NULL,
++ NULL, NULL, NULL, NULL, "檔案列表", NULL,
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,
-@@ -1573,7 +1573,7 @@
+ valid_subject, NULL, NULL, NULL, NULL, NULL,
+@@ -1729,7 +1729,7 @@
static struct headerentry he_custom_addr_templ={
NULL, NULL, h_composer_custom_addr,10, 0, NULL,
-- build_address, NULL, NULL, addr_book_compose, "To AddrBk",
-+ build_address, NULL, NULL, addr_book_compose, "地址簿",
+- build_address, NULL, NULL, addr_book_compose, "To AddrBk", NULL,
++ build_address, NULL, NULL, addr_book_compose, "地址簿", NULL,
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,
-@@ -1856,7 +1856,7 @@
+@@ -2012,7 +2012,7 @@
default:
q_status_message1(SM_ORDER,3,3,
@@ -244,7 +281,7 @@
break;
}
}
-@@ -1866,7 +1866,7 @@
+@@ -2022,7 +2022,7 @@
ekey[0].ch = ctrl('T');
ekey[0].rval = 2;
ekey[0].name = "^T";
@@ -253,7 +290,7 @@
ekey[1].ch = -1;
/*----------------------------------------------------------------------
-@@ -1977,12 +1977,12 @@
+@@ -2133,12 +2133,12 @@
opts[i].ch = 'y';
opts[i].rval = 'y';
opts[i].name = "Y";
@@ -268,7 +305,7 @@
verbose_requested = 0;
if(F_ON(F_VERBOSE_POST, ps_global)){
-@@ -2029,7 +2029,7 @@
+@@ -2185,7 +2185,7 @@
dsn_show = (dsn_requested & DSN_SHOW);
sprintf(tmp_20k_buf,
"%s%s%s%s%s%sto \"%s\" ? ",
@@ -277,16 +314,16 @@
(verbose_requested || dsn_show)
? "(" : "",
(verbose_requested)
-@@ -2166,7 +2166,7 @@
+@@ -2323,7 +2323,7 @@
if(!(outgoing->to || outgoing->cc || outgoing->bcc
- || local_so)){
+ || lmc.so)){
q_status_message(SM_ORDER, 3, 5,
- "No recipients specified!");
+ "尚未指定收件人!");
continue;
}
-@@ -2191,7 +2191,7 @@
+@@ -2348,7 +2348,7 @@
}
else if(result == 0){
q_status_message(SM_ORDER,3,5,
@@ -295,7 +332,7 @@
retval = -1;
dprint(1,
(debugfile, "explicit fcc write failed!\n"));
-@@ -2209,7 +2209,7 @@
+@@ -2366,7 +2366,7 @@
}
}
else{
@@ -304,7 +341,7 @@
retval = -1;
}
}
-@@ -2237,7 +2237,7 @@
+@@ -2394,7 +2394,7 @@
break;
case 1:
@@ -313,7 +350,7 @@
done++;
retval = -1;
break;
-@@ -2488,7 +2488,7 @@
+@@ -2656,7 +2656,7 @@
break;
case 'x': /* ^C */
@@ -322,7 +359,7 @@
dprint(4, (debugfile, "=== send: cancelled\n"));
pbuf = save_previous_pbuf;
return;
-@@ -2879,7 +2879,7 @@
+@@ -3065,7 +3065,7 @@
default:
q_status_message1(SM_ORDER,3,7,
@@ -331,8 +368,8 @@
(void *)pf->type);
break;
}
-@@ -2906,7 +2906,7 @@
- #endif
+@@ -3092,7 +3092,7 @@
+ !(role && role->from))){
if(pf->canedit || !he->rich_header)
q_status_message(SM_ORDER, 3, 3,
- "Not allowed to change header \"From\"");
@@ -340,7 +377,7 @@
memset(he, 0, (size_t)sizeof(*he));
pf->he = NULL;
-@@ -3254,7 +3254,7 @@
+@@ -3438,7 +3438,7 @@
? "CANCEL" : "HUH?"));
if((editor_result & COMP_CANCEL)
&& F_ON(F_QUELL_DEAD_LETTER, ps_global)){
@@ -349,7 +386,7 @@
break;
}
-@@ -3278,7 +3278,7 @@
+@@ -3462,7 +3462,7 @@
&& (check_addresses(&header) == CA_BAD)){
/*--- Addresses didn't check out---*/
q_status_message(SM_ORDER, 7, 7,
@@ -358,8 +395,8 @@
continue;
}
-@@ -3336,7 +3336,7 @@
- if(!so_puts(local_so, tmp_20k_buf)){
+@@ -3521,7 +3521,7 @@
+ if(!so_puts(lmc.so, tmp_20k_buf)){
if(editor_result & COMP_CANCEL)
q_status_message2(SM_ORDER | SM_DING, 3, 3,
- "Can't write \"%s\": %s",
@@ -367,7 +404,7 @@
folder, error_description(errno));
else
dprint(1, (debugfile, "* * * CAN'T WRITE %s: %s\n",
-@@ -3349,7 +3349,7 @@
+@@ -3534,7 +3534,7 @@
if(!ps_global->VAR_POSTPONED_FOLDER
|| !ps_global->VAR_POSTPONED_FOLDER[0]){
q_status_message(SM_ORDER | SM_DING, 3, 3,
@@ -376,7 +413,7 @@
continue;
}
-@@ -3379,7 +3379,7 @@
+@@ -3564,7 +3564,7 @@
}
else{
strcpy(folder, ps_global->VAR_POSTPONED_FOLDER);
@@ -384,8 +421,8 @@
+ strcpy(label, "暫緩信件");
}
- local_so = open_fcc(folder,&fcc_cntxt, 1, NULL, NULL);
-@@ -3521,10 +3521,10 @@
+ lmc.so = open_fcc(folder,&fcc_cntxt, 1, NULL, NULL);
+@@ -3706,10 +3706,10 @@
&& ps_global->VAR_FORM_FOLDER[0]
&& !strcmp(folder, ps_global->VAR_FORM_FOLDER))
q_status_message(SM_ORDER, 0, 3,
@@ -398,7 +435,7 @@
break; /* postpone went OK, get out of here */
}
-@@ -3534,15 +3534,15 @@
+@@ -3719,15 +3719,15 @@
if(fcc_result && folder)
lc = last_cmpnt(folder);
@@ -417,7 +454,7 @@
body_start = 1;
continue; /* postpone failed, jump back in to composer */
}
-@@ -3558,14 +3558,14 @@
+@@ -3743,7 +3743,7 @@
/* --- If posting, confirm with user ----*/
if(outgoing->newsgroups && *outgoing->newsgroups
&& want_to(POST_PMT, 'n', 'n', NO_HELP, WT_NORM) == 'n'){
@@ -426,17 +463,25 @@
dprint(4, (debugfile, "no post, continuing\n"));
continue;
}
-
- if(!(outgoing->to || outgoing->cc || outgoing->bcc || lcc_addr
- || outgoing->newsgroups || (fcc && fcc[0]))){
-- q_status_message(SM_ORDER, 3, 4, "No recipients specified!");
-+ q_status_message(SM_ORDER, 3, 4, "尚未指定收件者!");
- dprint(4, (debugfile, "no recip, continuing\n"));
- continue;
- }
-@@ -3607,8 +3607,8 @@
+@@ -3752,13 +3752,13 @@
+ || outgoing->newsgroups)){
+ if(fcc && fcc[0]){
+ if(F_OFF(F_AUTO_FCC_ONLY, ps_global) &&
+- want_to("No recipients, really copy only to Fcc ",
++ want_to("尚未指定收件者,真的僅複製到 Fcc 中嗎",
+ 'n', 'n', h_send_fcc_only, WT_NORM) != 'y')
+ continue;
+ }
+ else{
+ q_status_message(SM_ORDER, 3, 4,
+- "No recipients specified!");
++ "尚未指定收件者!");
+ dprint(4, (debugfile, "no recip, continuing\n"));
+ continue;
+ }
+@@ -3802,8 +3802,8 @@
&& !filter_message_text(sending_filter_requested, outgoing,
- *body, &orig_so)){
+ *body, &orig_so, &header)){
q_status_message1(SM_ORDER, 3, 3,
- "Problem filtering! Nothing sent%s.",
- fcc ? " or saved to fcc" : "");
@@ -445,7 +490,7 @@
continue;
}
-@@ -3699,7 +3699,7 @@
+@@ -3894,7 +3894,7 @@
}
else if(!(result & (P_MAIL_BITS | P_NEWS_BITS))){
q_status_message(SM_ORDER, 3, 5,
@@ -454,7 +499,7 @@
dprint(1, (debugfile,
"explicit fcc write failed!\n"));
result |= P_FCC_LOSE;
-@@ -3766,7 +3766,7 @@
+@@ -3961,7 +3961,7 @@
}
else if(!(result & (P_MAIL_BITS | P_NEWS_BITS))){
q_status_message(SM_ORDER,3,5,
@@ -463,7 +508,7 @@
dprint(1, (debugfile, "explicit fcc write failed!\n"));
result |= P_FCC_LOSE;
}
-@@ -3852,8 +3852,8 @@
+@@ -4048,8 +4048,8 @@
postpone_prompt()
{
int ret = 1;
@@ -474,7 +519,7 @@
{-1, 0, NULL, NULL} };
return(radio_buttons(PSTPN_FORM_PMT, -FOOTER_ROWS(ps_global),
-@@ -4005,23 +4005,23 @@
+@@ -4201,23 +4201,23 @@
char *buf;
int *goodorbad;
{
@@ -506,7 +551,7 @@
(result & P_FCC_WIN) ? "\"" : "",
(result & P_FCC_WIN) ? fcc_name : "",
(result & P_FCC_WIN) ? "\"" : "");
-@@ -4060,7 +4060,7 @@
+@@ -4256,7 +4256,7 @@
|| (F_ON(F_COMPOSE_REJECTS_UNQUAL, ps_global)
&& a->host[0] == '@'))){
q_status_message2(SM_ORDER, 4, 7,
@@ -515,7 +560,7 @@
a->mailbox,
(a->host[0] == '.')
? a->host
-@@ -4070,7 +4070,7 @@
+@@ -4266,7 +4266,7 @@
else if(ps_global->restricted
&& !address_is_us(*pf->addr, ps_global)){
q_status_message(SM_ORDER, 3, 3,
@@ -524,7 +569,7 @@
return(CA_BAD);
}
else if(a->mailbox && strucmp(a->mailbox, "mailer-daemon") == 0
-@@ -4220,7 +4220,7 @@
+@@ -4417,7 +4417,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 +578,7 @@
flush_status_messages(0);
return(0L);
}
-@@ -4235,7 +4235,7 @@
+@@ -4432,7 +4432,7 @@
/* actually write message text */
if(!format_message(mn_m2raw(ps_global->msgmap, n), e, b,
FM_NEW_MESS | FM_DISPLAY, f)){
@@ -542,7 +587,7 @@
flush_status_messages(0);
rv = 0L;
}
-@@ -4348,12 +4348,12 @@
+@@ -4545,12 +4545,12 @@
opts[i].ch = 'y';
opts[i].rval = 'y';
opts[i].name = "Y";
@@ -557,7 +602,7 @@
if(filters){
/* set global_filter_pointer to desired filter or NULL if none */
-@@ -4361,12 +4361,12 @@
+@@ -4558,12 +4558,12 @@
opts[i].ch = ctrl('P');
opts[i].rval = 10;
opts[i].name = "^P";
@@ -572,36 +617,50 @@
if(F_ON(F_FIRST_SEND_FILTER_DFLT, ps_global))
filters = filters->next;
-@@ -4436,23 +4436,23 @@
- p = NULL;
+@@ -4647,11 +4647,11 @@
+ lparen = 0;
dsn_show = (dsn_requested & DSN_SHOW);
-- sprintf(tmp_20k_buf, "Send message%s%s%s%s%s%s%s%s%s%s%s%s? ",
-+ sprintf(tmp_20k_buf, "送出信件%s%s%s%s%s%s%s%s%s%s%s%s? ",
- (filters || verbose_requested || background_requested
- || dsn_show)
- ? " (" : "",
-- (filters && filters->filter) ? "filtered thru \"" : "",
-+ (filters && filters->filter) ? "經由過濾器 \"" : "",
- (filters)
- ? (filters->filter
- ? filters->filter
-- : "unfiltered")
-+ : "未經過濾")
- : "",
- (filters && filters->filter) ? "\"" : "",
- (filters && (verbose_requested || background_requested))
- ? " " : "",
- (verbose_requested || background_requested)
- ? "in " : "",
-- (verbose_requested) ? "verbose " : "",
-- (background_requested) ? "background " : "",
-+ (verbose_requested) ? "顯示細節 " : "",
-+ (background_requested) ? "背景送出 " : "",
- (verbose_requested || background_requested)
- ? "mode" : "",
- (dsn_show
-@@ -4467,11 +4467,11 @@
+- strcpy(tmp_20k_buf, "Send message");
+- optp = &tmp_20k_buf[12];
++ strcpy(tmp_20k_buf, "送出信件");
++ optp = &tmp_20k_buf[8];
+
+ if(F_ON(F_NO_FCC_ATTACH, ps_global) && !lmc.text_only)
+- sstrcpy(&optp, " and Fcc Atmts");
++ sstrcpy(&optp, " 與 Fcc 附件?");
+
+ if(filters){
+ if(!lparen){
+@@ -4663,12 +4663,12 @@
+ *optp++ = ' ';
+
+ if(filters->filter){
+- sstrcpy(&optp, "filtered thru \"");
++ sstrcpy(&optp, "經由過濾器 \"");
+ sstrcpy(&optp, filters->filter);
+ *optp++ = '\"';
+ }
+ else
+- sstrcpy(&optp, "unfiltered");
++ sstrcpy(&optp, "未經過濾");
+ }
+
+ if(verbose_requested || background_requested){
+@@ -4682,10 +4682,10 @@
+
+ sstrcpy(&optp, "in ");
+ if(verbose_requested)
+- sstrcpy(&optp, "verbose ");
++ sstrcpy(&optp, "顯示細節 ");
+
+ if(background_requested)
+- sstrcpy(&optp, "background ");
++ sstrcpy(&optp, "背景送出 ");
+
+ sstrcpy(&optp, "mode");
+ }
+@@ -4727,11 +4727,11 @@
*p = ' ';
if(verbose_label)
@@ -613,9 +672,9 @@
- ? "Foreground" : "Background";
+ ? "前景" : "背景";
- if(F_ON(F_DSN, ps_global)){
- if(dsn_requested & DSN_SHOW){
-@@ -4495,11 +4495,11 @@
+ if(fcc_label)
+ opts[fcc_label].label = lmc.text_only ? "Fcc Attchmnts"
+@@ -4763,11 +4763,11 @@
break;
}
else if(rv == 'n'){ /* Declined! */
@@ -628,8 +687,8 @@
+ rstr = "取消送件";
break;
}
- else if(rv == 10) /* PREVIOUS filter */
-@@ -4681,7 +4681,7 @@
+ else if(rv == 10){ /* PREVIOUS filter */
+@@ -4954,7 +4954,7 @@
if(body->type != TYPEOTHER){
rv = 1;
q_status_message3(SM_ORDER, 0, 3,
@@ -638,7 +697,7 @@
body_types[body->type],
body->subtype ? body->subtype : rfc822_default_subtype(body->type));
}
-@@ -4730,7 +4730,7 @@
+@@ -5003,7 +5003,7 @@
(void) close_system_pipe(&syspipe);
if((l = name_file_size(fname)) < 0L){
q_status_message2(SM_ORDER | SM_DING, 3, 4,
@@ -647,7 +706,7 @@
fnp = error_description(errno));
dprint(1, (debugfile,
"!!! Upload cmd \"%s\" failed for \"%s\": %s\n",
-@@ -4742,7 +4742,7 @@
+@@ -5015,7 +5015,7 @@
return(l >= 0);
}
else
@@ -656,7 +715,7 @@
return(0);
}
-@@ -4795,7 +4795,7 @@
+@@ -5068,7 +5068,7 @@
else if(reply->flags == REPLY_MSGNO)
return;
@@ -665,16 +724,16 @@
if(!stream){
if(stream = mail_open(NULL, reply->mailbox, OP_SILENT)){
ourstream++;
-@@ -4873,7 +4873,7 @@
+@@ -5164,7 +5164,7 @@
so_give(&tmpf_so);
}
else
- errstr = "Can't create space for filter temporary file.";
+ errstr = "無法建立過濾器的暫存檔。";
}
-
- if(!errstr){
-@@ -4897,13 +4897,13 @@
+ else if(include_hdrs){
+ /*
+@@ -5222,13 +5222,13 @@
so_give(&tmpf_so);
}
else
@@ -691,7 +750,7 @@
}
else
errstr = gf_filter(cmd, key ? filter_session_key() : NULL,
-@@ -4914,7 +4914,7 @@
+@@ -5242,7 +5242,7 @@
if(errstr){
int ch;
@@ -700,7 +759,7 @@
fflush(stdout);
while((ch = read_char(300)) != ctrl('M')
&& ch != NO_OP_IDLE)
-@@ -5007,7 +5007,7 @@
+@@ -5338,7 +5338,7 @@
if(tmp_so)
so_give(&tmp_so);
@@ -709,7 +768,7 @@
errstr);
dprint(1, (debugfile, "Filter FAILED: %s\n", errstr));
}
-@@ -5092,11 +5092,11 @@
+@@ -5423,11 +5423,11 @@
loser = pine_simple_send(outgoing, &body, NULL, NULL, NULL, 0);
@@ -723,7 +782,7 @@
mail_free_envelope(&outgoing);
pine_free_body(&body);
-@@ -5180,7 +5180,7 @@
+@@ -5511,7 +5511,7 @@
if(!pf){
q_status_message(SM_ORDER,3,3,
@@ -732,7 +791,7 @@
return(0);
}
-@@ -5189,7 +5189,7 @@
+@@ -5520,7 +5520,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 +800,7 @@
send_bytes_to_send ? sent_percent : NULL, 1);
/* try posting via local "<mta> <-t>" if specified */
-@@ -5374,7 +5374,7 @@
+@@ -5705,7 +5705,7 @@
struct headerentry *last_he = NULL;
sprintf(error_buf,
@@ -750,7 +809,7 @@
(sending_stream && sending_stream->reply) ? ": ": ".",
(sending_stream && sending_stream->reply)
? sending_stream->reply : "");
-@@ -5447,7 +5447,7 @@
+@@ -5778,7 +5778,7 @@
TIME_STAMP("smtp done", 1);
}
else if(!error_mess)
@@ -759,16 +818,16 @@
ps_global->c_client_error);
if(verbose_file){
-@@ -5455,7 +5455,7 @@
+@@ -5786,7 +5786,7 @@
TIME_STAMP("verbose start", 1);
fclose(verbose_send_output);
verbose_send_output = NULL;
- q_status_message(SM_ORDER, 0, 3, "Verbose SMTP output received");
+ q_status_message(SM_ORDER, 0, 3, "收到詳細的 SMTP 輸出訊息");
- display_output_file(verbose_file, "Verbose SMTP Interaction",NULL, 1);
+ display_output_file(verbose_file, "Verbose SMTP Interaction",
+ NULL, DOF_BRIEF);
TIME_STAMP("verbose end", 1);
- }
-@@ -5544,12 +5544,12 @@
+@@ -5876,12 +5876,12 @@
if(folder_index(fcc, *fcc_cntxt, FI_FOLDER) < 0){
if(ps_global->context_list->next)
sprintf(tmp_20k_buf,
@@ -783,7 +842,7 @@
strsquish(tmp_20k_buf + 500, fcc, 40));
if(force || want_to(tmp_20k_buf,'y','n',NO_HELP,WT_NORM) == 'y'){
-@@ -5586,7 +5586,7 @@
+@@ -5918,7 +5918,7 @@
ok++;
}
else{
@@ -792,7 +851,7 @@
strsquish(tmp_20k_buf + 500, fcc, 40));
if(force || want_to(tmp_20k_buf,'y','n',NO_HELP,WT_NORM) == 'y'){
/*
-@@ -5620,8 +5620,8 @@
+@@ -5952,8 +5952,8 @@
if(ok == 0){
if(ps_global->mm_log_error){
@@ -803,7 +862,7 @@
l1 = strlen(s1);
l2 = strlen(s2);
-@@ -5639,10 +5639,10 @@
+@@ -5971,10 +5971,10 @@
}
else
@@ -816,7 +875,7 @@
q_status_message(SM_ORDER | SM_DING, 3, 3, errstr);
}
-@@ -5690,7 +5690,7 @@
+@@ -6022,7 +6022,7 @@
if(label && *label){
char msg_buf[80];
@@ -825,7 +884,7 @@
we_cancel = busy_alarm(1, msg_buf, NULL, 1);
}
else
-@@ -5726,7 +5726,7 @@
+@@ -6058,7 +6058,7 @@
we_cancel = 0;
q_status_message1(SM_ORDER | SM_DING, 3, 5,
@@ -834,7 +893,7 @@
dprint(1, (debugfile, "ERROR appending %s in \"%s\"",
fcc, cntxt ? cntxt->context : "NULL"));
return(0);
-@@ -6209,7 +6209,7 @@
+@@ -6548,7 +6548,7 @@
if((file_contents = (void *)so_get(FileStar, pa->filename,
READ_ACCESS)) == NULL){
q_status_message2(SM_ORDER | SM_DING, 3, 4,
@@ -843,7 +902,7 @@
error_description(errno), pa->filename);
display_message('x');
continue;
-@@ -6736,13 +6736,17 @@
+@@ -7083,13 +7083,17 @@
body->subtype = cpystr("octet-stream");
}
@@ -868,9 +927,9 @@
}
}
-@@ -6912,6 +6916,9 @@
- value = rfc1522_encode(tmp_20k_buf, (unsigned char *) text,
- ps_global->VAR_CHAR_SET);
+@@ -7260,6 +7264,9 @@
+ ps_global->VAR_CHAR_SET,
+ encode_whole_header(field, header));
+ if (!strcmp(field, "Subject"))
+ value = text;
@@ -878,7 +937,7 @@
if(value && value == text){ /* no encoding was done, have to fold */
int fold_by, len;
char *actual_field;
-@@ -7254,7 +7261,7 @@
+@@ -7713,7 +7720,7 @@
break;
default:
@@ -887,7 +946,7 @@
break;
}
}
-@@ -7573,7 +7580,8 @@
+@@ -8034,7 +8041,8 @@
switch (body->encoding) { /* all else needs filtering */
case ENC8BIT: /* encode 8BIT into QUOTED-PRINTABLE */
@@ -897,7 +956,7 @@
break;
case ENCBINARY: /* encode binary into BASE64 */
-@@ -7587,7 +7595,7 @@
+@@ -8048,7 +8056,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 +965,7 @@
display_message('x');
}
-@@ -7656,7 +7664,7 @@
+@@ -8136,7 +8144,7 @@
&& !(so_puts(so, "Content-Transfer-Encoding: ")
&& so_puts(so, body_encodings[(body->encoding==ENCBINARY)
? ENCBASE64
@@ -915,7 +974,7 @@
? ENCQUOTEDPRINTABLE
: (body->encoding <= ENCMAX)
? body->encoding
-@@ -8279,7 +8287,7 @@
+@@ -8801,7 +8809,7 @@
|| (forbid = pine_header_forbidden(name))){
if(forbid)
q_status_message1(SM_ORDER, 3, 3,
@@ -924,7 +983,7 @@
*t = save;
continue;
-@@ -8396,7 +8404,7 @@
+@@ -8947,7 +8955,7 @@
if(ps_global->post){
if(gripe)
q_status_message(SM_ORDER|SM_DING, 3, 3,
diff --git a/chinese/pine4/pkg-descr b/chinese/pine4/pkg-descr
index ce866efdaf88..77f4989c58c9 100644
--- a/chinese/pine4/pkg-descr
+++ b/chinese/pine4/pkg-descr
@@ -16,8 +16,8 @@ Also included in dot.pinerc.pgp.sample are example entries needed to
add to your .pinerc to activate the pgp add on scripts pgpdecode,
pgpencode, and pgpsign.
-dot.pinerc.sample is an example configuration file can be put into your home
-directory as .pinerc.
+dot.pinerc.sample is an example configuration file(include PGP support) can be
+put into your home directory as .pinerc.
Pine on WWW: http://www.washington.edu/pine/
@@ -27,7 +27,7 @@ which is maintained by:
- Adrian Penisoara (Ady)
pine@freebsd.ady.ro
-zh-pine 4.04 ports for FreeBSD is maintained by:
+zh-pine 4.10 ports for FreeBSD is maintained by:
- - Liang Tai Hwa
+ - Tai-hwa Liang
avatar@www.mmlab.cse.yzu.edu.tw