Archive-name: elmME+2.5/PLalpha23.2
Elm ME+ 2.5 PLalpha23
Before applying patch catenate parts 1 - 2 first.
Also it should be possible to apply parts 1 - 2
individually.
Part 0 do not include patch.
This patch is agaist Elm ME+ 2.5 PLalpha22
====================================== ( part 2/2 ) =========
Index: elmME+.2.5.alpha23-cvs/src/mime_encode.c
*** elmME+.2.5.alpha22-cvs/src/mime_encode.c 2009-10-21 07:22:18.000000000 +0300
--- elmME+.2.5.alpha23-cvs/src/mime_encode.c 2009-11-22 10:32:29.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: mime_encode.c,v 2.6 2009-10-21 04:22:18 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.6 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: mime_encode.c,v 2.7 2009-11-22 08:32:29 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.7 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
***************
*** 46,52 ****
}
void add_parameter(opts,name,value,size,quoted)
! char *opts, *name, *value;
int size, quoted;
{
int len = strlen(opts);
--- 46,53 ----
}
void add_parameter(opts,name,value,size,quoted)
! char *opts;
! const char *name, *value;
int size, quoted;
{
int len = strlen(opts);
***************
*** 635,646 ****
print_EOLN(mailer, ptr->encoding_top);
} else if (1 == ptr->top_parts_count) {
if (MIME_TYPE_TEXT == get_major_type_code(ptr->top_parts[0].TYPE) &&
0 == istrcmp("Plain",get_subtype_name(ptr->top_parts[0].TYPE)) &&
ptr->top_parts[0].result_charset &&
! ptr->top_parts[0].result_charset->MIME_name &&
! 0 == istrcmp("US-ASCII",
! ptr->top_parts[0].result_charset->MIME_name) &&
(ENCODING_NONE == ptr->top_parts[0].encoding_part ||
ENCODING_7BIT == ptr->top_parts[0].encoding_part) &&
!send_mime_plain) {
--- 636,649 ----
print_EOLN(mailer, ptr->encoding_top);
} else if (1 == ptr->top_parts_count) {
+ const char *MIME_name_p = NULL;
+
if (MIME_TYPE_TEXT == get_major_type_code(ptr->top_parts[0].TYPE) &&
0 == istrcmp("Plain",get_subtype_name(ptr->top_parts[0].TYPE)) &&
ptr->top_parts[0].result_charset &&
! (MIME_name_p =
! get_charset_MIME_name(ptr->top_parts[0].result_charset)) &&
! 0 == istrcmp("US-ASCII", MIME_name_p) &&
(ENCODING_NONE == ptr->top_parts[0].encoding_part ||
ENCODING_7BIT == ptr->top_parts[0].encoding_part) &&
!send_mime_plain) {
Index: elmME+.2.5.alpha23-cvs/src/pgp.c
*** elmME+.2.5.alpha22-cvs/src/pgp.c 2009-10-21 07:22:18.000000000 +0300
--- elmME+.2.5.alpha23-cvs/src/pgp.c 2010-03-18 19:02:40.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: pgp.c,v 2.2 2009-10-21 04:22:18 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.2 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: pgp.c,v 2.3 2010-03-18 17:02:40 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.3 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
***************
*** 771,777 ****
if ((opts & PGP_SIGNED_MESSAGE) && pgp_keeppass &&
pgp_goodPassphrase(v)) {
usepgppass = TRUE;
! pipe(fd);
}
close_fd = -1;
--- 771,780 ----
if ((opts & PGP_SIGNED_MESSAGE) && pgp_keeppass &&
pgp_goodPassphrase(v)) {
usepgppass = TRUE;
! if (-1 == pipe(fd)) {
! DPRINT(Debug,27,(&Debug,"pipe failed\n"));
! usepgppass = FALSE;
! }
}
close_fd = -1;
***************
*** 988,997 ****
if (ret) {
if (usepgppass) {
! write(fd[1], pgp_passphrase[v], strlen(pgp_passphrase[v]));
! write(fd[1], "\n", 1); /* pgp expects this as a line terminator! */
! close(fd[1]);
}
ret = wait_end(&RS,&exit_code);
Raw(ON);
} else {
--- 991,1010 ----
if (ret) {
if (usepgppass) {
! int ok = 1;
! if (-1 == write(fd[1], pgp_passphrase[v],
! strlen(pgp_passphrase[v])))
! ok = 0;
! if (-1 == write(fd[1], "\n", 1)) /* pgp expects this as a line terminator! */
! ok = 0;
! if (-1 == close(fd[1]))
! ok = 0;
!
! if (!ok) {
! DPRINT(Debug,27,(&Debug,"writing of passphrase failed\n"));
! }
}
+
ret = wait_end(&RS,&exit_code);
Raw(ON);
} else {
Index: elmME+.2.5.alpha23-cvs/src/screen/curses.c
*** elmME+.2.5.alpha22-cvs/src/screen/curses.c 2009-10-25 13:36:14.000000000 +0200
--- elmME+.2.5.alpha23-cvs/src/screen/curses.c 2009-11-22 15:26:56.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: curses.c,v 2.5 2009-10-25 11:36:14 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.5 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: curses.c,v 2.7 2009-11-22 13:26:56 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.7 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
***************
*** 1027,1044 ****
charset_t stored_display;
{
int sw = -1;
! if (S->string_type == display_charset)
*buffer = dup_string(S);
else if (target_display_charset == display_charset &&
! S->string_type == system_charset) {
sw = 1; /* Arrange return to back to display charset */
*buffer = dup_string(S);
switch_display_charset(0); /* Print using system charset */
} else if (allow_charset_switching &&
! 0 != (charset_properties(S->string_type) & CS_printable) &&
stored_display &&
! set_display_charset(S->string_type,1)) {
sw = 2; /* Arrange return to correct display charset */
*buffer = dup_string(S);
} else
--- 1027,1045 ----
charset_t stored_display;
{
int sw = -1;
+ charset_t S_cs = get_string_type(S);
! if (S_cs == display_charset)
*buffer = dup_string(S);
else if (target_display_charset == display_charset &&
! S_cs == system_charset) {
sw = 1; /* Arrange return to back to display charset */
*buffer = dup_string(S);
switch_display_charset(0); /* Print using system charset */
} else if (allow_charset_switching &&
! 0 != (charset_properties(S_cs) & CS_printable) &&
stored_display &&
! set_display_charset(S_cs,1)) {
sw = 2; /* Arrange return to correct display charset */
*buffer = dup_string(S);
} else
***************
*** 1075,1093 ****
sw = preinit_output(S,&buffer, stored_display);
! DPRINT(Debug,35,(&Debug,
! "curses_printable_clip: S=%S cs=%s -- using %s\n",
! S,
! S->string_type->MIME_name ?
! S->string_type->MIME_name :
! "<no MIME name>",
! buffer->string_type->MIME_name ?
! buffer->string_type->MIME_name : "<no MIME name>"));
DPRINT(Debug,35,(&Debug, "curses_printable_clip: len=%d max_visible=%d pos=%d\n",
len,max_visible,*pos));
if (last_display_state &&
! 0 != (CS_printable_len & charset_properties(buffer->string_type))) {
int l1;
struct cs_printable_len PRINTABLE_LEN;
--- 1076,1097 ----
sw = preinit_output(S,&buffer, stored_display);
! {
! const char * MIME_name_S = get_string_MIME_name(S);
! const char * MIME_name_b = get_string_MIME_name(buffer);
!
! DPRINT(Debug,35,(&Debug,
! "curses_printable_clip: S=%S cs=%s -- using %s\n",
! S,
! MIME_name_S ? MIME_name_S : "<no MIME name>",
! MIME_name_b ? MIME_name_b : "<no MIME name>"));
! }
DPRINT(Debug,35,(&Debug, "curses_printable_clip: len=%d max_visible=%d pos=%d\n",
len,max_visible,*pos));
if (last_display_state &&
! 0 != (CS_printable_len &
! charset_properties(get_string_type(buffer)))) {
int l1;
struct cs_printable_len PRINTABLE_LEN;
***************
*** 1140,1162 ****
charset_t stored_display = target_display_charset;
int sw = -1;
int buffer_len;
!
!
!
sw = preinit_output(S,&buffer, stored_display);
buffer_len = string_len(buffer);
- DPRINT(Debug,40,(&Debug,
- "PutLineS: S=%S cs=%s -- using %s\n",
- S,
- S->string_type->MIME_name ?
- S->string_type->MIME_name :
- "<no MIME name>",
- buffer->string_type->MIME_name ?
- buffer->string_type->MIME_name : "<no MIME name>"));
-
while (idx < buffer_len) {
char * s = NULL, *s1;
uint16 ch;
--- 1144,1167 ----
charset_t stored_display = target_display_charset;
int sw = -1;
int buffer_len;
! charset_t cs_buffer;
sw = preinit_output(S,&buffer, stored_display);
buffer_len = string_len(buffer);
+ cs_buffer = get_string_type(buffer);
+
+ {
+ const char * MIME_name_S = get_string_MIME_name(S);
+ const char * MIME_name_b = get_string_MIME_name(buffer);
+
+ DPRINT(Debug,40,(&Debug,
+ "PutLineS: S=%S cs=%s -- using %s\n",
+ S,
+ MIME_name_S ? MIME_name_S : "<no MIME name>",
+ MIME_name_b ? MIME_name_b : "<no MIME name>"));
+ }
while (idx < buffer_len) {
char * s = NULL, *s1;
uint16 ch;
***************
*** 1167,1172 ****
--- 1172,1178 ----
struct cs_printable_len PRINTABLE_LEN;
struct cs_printable_len *printable_len = NULL;
struct string * handled = NULL;
+
int tmp_mode = CUR_modes;
***************
*** 1194,1201 ****
}
if (last_display_state &&
! 0 != (CS_printable_len &
! charset_properties(buffer->string_type))) {
PRINTABLE_LEN.max_len = CUR_columns-CUR_col;
PRINTABLE_LEN.ret_len = 0;
--- 1200,1206 ----
}
if (last_display_state &&
! 0 != (CS_printable_len & charset_properties(cs_buffer))) {
PRINTABLE_LEN.max_len = CUR_columns-CUR_col;
PRINTABLE_LEN.ret_len = 0;
***************
*** 1211,1217 ****
case UNICODE_NO_BREAK_SPACE:
! handled = new_string(buffer->string_type);
vector[0] = 0x0020 /* space */;
add_unicode_to_string(handled,1,vector);
--- 1216,1222 ----
case UNICODE_NO_BREAK_SPACE:
! handled = new_string(cs_buffer);
vector[0] = 0x0020 /* space */;
add_unicode_to_string(handled,1,vector);
***************
*** 1224,1230 ****
case UNICODE_SOFT_HYPHEN:
! handled = new_string(buffer->string_type);
ch1 = 0;
if (idx+1 < buffer_len)
--- 1229,1235 ----
case UNICODE_SOFT_HYPHEN:
! handled = new_string(cs_buffer);
ch1 = 0;
if (idx+1 < buffer_len)
***************
*** 1247,1258 ****
case UNICODE_BAD_CHAR: /* REPLACEMENT CHARACTER */
if (0 == (CS_universal_set &
! charset_properties(buffer->string_type))) {
/* Show bold question mark instead */
cur_changemode(&tmp_mode,pg_BOLD,pg_STANDOUT);
! handled = new_string(buffer->string_type);
vector[0] = 0x003F /* ? */;
add_unicode_to_string(handled,1,vector);
--- 1252,1263 ----
case UNICODE_BAD_CHAR: /* REPLACEMENT CHARACTER */
if (0 == (CS_universal_set &
! charset_properties(cs_buffer))) {
/* Show bold question mark instead */
cur_changemode(&tmp_mode,pg_BOLD,pg_STANDOUT);
! handled = new_string(cs_buffer);
vector[0] = 0x003F /* ? */;
add_unicode_to_string(handled,1,vector);
***************
*** 1541,1548 ****
int is_utf8_charset(cs)
charset_t cs;
{
! if ((!cs->MIME_name ||
! 0 != istrcmp(cs->MIME_name,"UTF-8")) &&
& cs_utf8 != cs->charset_type)
return 0;
--- 1546,1554 ----
int is_utf8_charset(cs)
charset_t cs;
{
! const char * MIME_name = get_charset_MIME_name(cs);
!
! if ((!MIME_name || 0 != istrcmp(MIME_name,"UTF-8")) &&
& cs_utf8 != cs->charset_type)
return 0;
Index: elmME+.2.5.alpha23-cvs/src/screen/curs_input.c
*** elmME+.2.5.alpha22-cvs/src/screen/curs_input.c 2009-09-05 13:25:59.000000000 +0300
--- elmME+.2.5.alpha23-cvs/src/screen/curs_input.c 2009-11-22 10:32:29.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: curs_input.c,v 2.1 2009-09-05 10:25:59 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.1 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: curs_input.c,v 2.2 2009-11-22 08:32:29 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.2 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
***************
*** 153,176 ****
charset_t cs;
{
if (last_state && last_state->charset != cs) {
DPRINT(Debug,4,(&Debug,
"Keyboard input charset is changed -- was %s\n",
! last_state->charset->MIME_name ?
! last_state->charset->MIME_name :
! "<no MIME name>"));
free_state(&last_state);
}
if (!last_state) {
last_state = new_state(cs);
DPRINT(Debug,4,(&Debug,
"Keyboard input charset is %s\n",
! last_state->charset->MIME_name ?
! last_state->charset->MIME_name :
! "<no MIME name>"));
}
-
}
--- 153,177 ----
charset_t cs;
{
if (last_state && last_state->charset != cs) {
+ const char * MIME_name = get_charset_MIME_name(last_state->charset);
+
DPRINT(Debug,4,(&Debug,
"Keyboard input charset is changed -- was %s\n",
! MIME_name ? MIME_name : "<no MIME name>"));
free_state(&last_state);
}
if (!last_state) {
+ const char * MIME_name;
+
last_state = new_state(cs);
+ MIME_name = get_charset_MIME_name(last_state->charset);
+
DPRINT(Debug,4,(&Debug,
"Keyboard input charset is %s\n",
! MIME_name ? MIME_name : "<no MIME name>"));
}
}
***************
*** 240,250 ****
set_last_state(system_charset);
if (state_ready(last_state)) {
DPRINT(Debug,4,(&Debug,
"cur_ReadCh2: starting reading new character (set %s)\n",
! last_state->charset->MIME_name ?
! last_state->charset->MIME_name :
! "<no MIME name>"));
reset_state(last_state,0);
}
last_state->caller_flags = 0;
--- 241,251 ----
set_last_state(system_charset);
if (state_ready(last_state)) {
+ const char * MIME_name = get_charset_MIME_name(last_state->charset);
+
DPRINT(Debug,4,(&Debug,
"cur_ReadCh2: starting reading new character (set %s)\n",
! MIME_name ? MIME_name : "<no MIME name>"));
reset_state(last_state,0);
}
last_state->caller_flags = 0;
Index: elmME+.2.5.alpha23-cvs/src/screen/termcharset.c
*** elmME+.2.5.alpha22-cvs/src/screen/termcharset.c 2009-10-21 07:22:19.000000000 +0300
--- elmME+.2.5.alpha23-cvs/src/screen/termcharset.c 2009-11-22 10:32:29.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: termcharset.c,v 2.1 2009-10-21 04:22:19 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.1 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI> (was hurtta+...@ozone.FMI.FI)
* or Kari Hurtta <e...@elmme-mailer.org>
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: termcharset.c,v 2.2 2009-11-22 08:32:29 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.2 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI> (was hurtta+...@ozone.FMI.FI)
* or Kari Hurtta <e...@elmme-mailer.org>
***************
*** 35,44 ****
SIGDPRINT(Debug,4,(&Debug,
"Possible sets:"));
for (i = 0; i < n; i++) {
SIGDPRINT(Debug,4,(&Debug,
" %s%c",
! storage[i]->MIME_name ? storage[i]->MIME_name :
! "<no MIME name>",
i < n-1 ? ',' : '\n'));
}
--- 35,45 ----
SIGDPRINT(Debug,4,(&Debug,
"Possible sets:"));
for (i = 0; i < n; i++) {
+ const char * MIME_name = get_charset_MIME_name(storage[i]);
+
SIGDPRINT(Debug,4,(&Debug,
" %s%c",
! MIME_name ? MIME_name : "<no MIME name>",
i < n-1 ? ',' : '\n'));
}
***************
*** 50,64 ****
charset_t set;
int silent;
{
if (!terminal_can_switch_to(terminal_type,set,silent))
return 0;
target_display_charset = set;
SIGDPRINT(Debug,4,(&Debug,
"set_display_charset: Initializes target_display_charset to %s\n",
! target_display_charset->MIME_name ?
! target_display_charset->MIME_name : ""));
switch_display_charset(1);
--- 51,68 ----
charset_t set;
int silent;
{
+ const char * MIME_name = NULL;
+
if (!terminal_can_switch_to(terminal_type,set,silent))
return 0;
target_display_charset = set;
+ MIME_name = get_charset_MIME_name(target_display_charset);
+
SIGDPRINT(Debug,4,(&Debug,
"set_display_charset: Initializes target_display_charset to %s\n",
! MIME_name ? MIME_name : ""));
switch_display_charset(1);
***************
*** 89,94 ****
--- 93,100 ----
if (str) {
+ const char * MIME_name = get_charset_MIME_name(system_charset);
+
/* NOTE: Extra initialization is returned only for type
ISO2022/DW
*/
***************
*** 97,104 ****
DPRINT(Debug,4,(&Debug,
"init_system_charset: Extra initialization for %s (",
! system_charset->MIME_name ?
! system_charset->MIME_name : "<no MIME name>"));
for (i = 0; str[i]; i++) {
DPRINT(Debug,4,(&Debug,
"%s%02X",
--- 103,109 ----
DPRINT(Debug,4,(&Debug,
"init_system_charset: Extra initialization for %s (",
! MIME_name ? MIME_name : "<no MIME name>"));
for (i = 0; str[i]; i++) {
DPRINT(Debug,4,(&Debug,
"%s%02X",
***************
*** 131,141 ****
to_display));
if (!target_display_charset) {
target_display_charset = display_charset;
SIGDPRINT(Debug,4,(&Debug,
"switch_display_charset: Initializes target_display_charset to %s\n",
! target_display_charset->MIME_name ?
! target_display_charset->MIME_name : ""));
}
if (!last_display_state) {
--- 136,149 ----
to_display));
if (!target_display_charset) {
+ const char * MIME_name = NULL;
+
target_display_charset = display_charset;
+ MIME_name = get_charset_MIME_name(target_display_charset);
+
SIGDPRINT(Debug,4,(&Debug,
"switch_display_charset: Initializes target_display_charset to %s\n",
! MIME_name ? MIME_name : ""));
}
if (!last_display_state) {
***************
*** 158,168 ****
buffer, sizeof buffer, 1);
if (str) {
int i;
SIGDPRINT(Debug,4,(&Debug,
"Setting display charset to %s (",
! t->MIME_name ? t->MIME_name : "<no MIME name>"));
for (i = 0; str[i]; i++) {
SIGDPRINT(Debug,4,(&Debug,
"%s%02X",
--- 166,177 ----
buffer, sizeof buffer, 1);
if (str) {
+ const char *MIME_name = get_charset_MIME_name(t);
int i;
SIGDPRINT(Debug,4,(&Debug,
"Setting display charset to %s (",
! MIME_name ? MIME_name : "<no MIME name>"));
for (i = 0; str[i]; i++) {
SIGDPRINT(Debug,4,(&Debug,
"%s%02X",
***************
*** 178,187 ****
display_charset = t;
} else {
SIGDPRINT(Debug,4,(&Debug,
"No way to set terminal %s to charset %s\n",
terminal_type,
! t->MIME_name ? t->MIME_name : "<no MIME name>"));
}
}
--- 187,198 ----
display_charset = t;
} else {
+ const char *MIME_name = get_charset_MIME_name(t);
+
SIGDPRINT(Debug,4,(&Debug,
"No way to set terminal %s to charset %s\n",
terminal_type,
! MIME_name ? MIME_name : "<no MIME name>"));
}
}
Index: elmME+.2.5.alpha23-cvs/src/showmsg.c
*** elmME+.2.5.alpha22-cvs/src/showmsg.c 2008-05-21 21:14:49.000000000 +0300
--- elmME+.2.5.alpha23-cvs/src/showmsg.c 2009-11-22 10:32:29.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: showmsg.c,v 2.7 2008-05-21 18:14:49 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.7 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: showmsg.c,v 2.8 2009-11-22 08:32:29 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.8 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
***************
*** 46,51 ****
--- 46,53 ----
int mc,i;
int delay_redraw = 0;
int line;
+ const char * MIME_name_o = NULL;
+ const char * MIME_name_d = get_charset_MIME_name(display_charset);
mc = get_message_count(mailbox);
for (i=0; i < mc; i++) {
***************
*** 55,66 ****
}
if (!tagged && chdr && chdr->override_charset &&
! chdr->override_charset->MIME_name)
! strfcpy(override_charset,chdr->override_charset->MIME_name,
! sizeof override_charset);
! else if (display_charset->MIME_name)
! strfcpy(override_charset,display_charset->MIME_name,
! sizeof override_charset);
else
strfcpy(override_charset,"none", sizeof override_charset);
--- 57,66 ----
}
if (!tagged && chdr && chdr->override_charset &&
! (MIME_name_o = get_charset_MIME_name(chdr->override_charset)))
! strfcpy(override_charset,MIME_name_o, sizeof override_charset);
! else if (MIME_name_d)
! strfcpy(override_charset,MIME_name_d, sizeof override_charset);
else
strfcpy(override_charset,"none", sizeof override_charset);
Index: elmME+.2.5.alpha23-cvs/src/syscall.c
*** elmME+.2.5.alpha22-cvs/src/syscall.c 2009-10-21 07:22:18.000000000 +0300
--- elmME+.2.5.alpha23-cvs/src/syscall.c 2010-03-18 19:02:40.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: syscall.c,v 2.2 2009-10-21 04:22:18 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.2 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: syscall.c,v 2.3 2010-03-18 17:02:40 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.3 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
***************
*** 309,315 ****
close(pfd[1]);
}
else if (pid == 0) {
!
/*
* Set group and user back to their original values.
--- 309,315 ----
close(pfd[1]);
}
else if (pid == 0) {
! int r;
/*
* Set group and user back to their original values.
***************
*** 317,334 ****
*/
if (-1 == setgid(groupid)) {
int err = errno;
fprintf(stderr,"system_call: setgid(%d) FAILED: %s\n",
groupid,strerror(err));
fflush(stderr);
! write(pfd[1], "", 1);
_exit(127);
}
if (-1 == setuid(userid)) {
int err = errno;
fprintf(stderr,"system_call: setuid(%d) FAILED: %s\n",
userid,strerror(err));
fflush(stderr);
! write(pfd[1], "", 1);
_exit(127);
}
--- 317,336 ----
*/
if (-1 == setgid(groupid)) {
int err = errno;
+ int r;
fprintf(stderr,"system_call: setgid(%d) FAILED: %s\n",
groupid,strerror(err));
fflush(stderr);
! r = write(pfd[1], "", 1);
_exit(127);
}
if (-1 == setuid(userid)) {
int err = errno;
+ int r;
fprintf(stderr,"system_call: setuid(%d) FAILED: %s\n",
userid,strerror(err));
fflush(stderr);
! r = write(pfd[1], "", 1);
_exit(127);
}
***************
*** 351,357 ****
/* If exec fails, we write a byte to the pipe before exiting. */
perror(sh);
! write(pfd[1], "", 1);
_exit(127);
}
else {
--- 353,359 ----
/* If exec fails, we write a byte to the pipe before exiting. */
perror(sh);
! r = write(pfd[1], "", 1);
_exit(127);
}
else {
Index: elmME+.2.5.alpha23-cvs/src/url/mailto.c
*** elmME+.2.5.alpha22-cvs/src/url/mailto.c 2009-10-21 07:22:19.000000000 +0300
--- elmME+.2.5.alpha23-cvs/src/url/mailto.c 2009-11-22 15:26:56.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: mailto.c,v 2.2 2009-10-21 04:22:19 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.2 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI>
* or Kari Hurtta <e...@elmme-mailer.org>
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: mailto.c,v 2.3 2009-11-22 13:26:56 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.3 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI>
* or Kari Hurtta <e...@elmme-mailer.org>
***************
*** 668,674 ****
url->u.mailto->hdrs[i].header_name,
us2s(stream),
1,
! decoded->string_type,
0)) {
lib_error(CATGETS(elm_msg_cat, MeSet,
--- 668,674 ----
url->u.mailto->hdrs[i].header_name,
us2s(stream),
1,
! get_string_type(decoded),
0)) {
lib_error(CATGETS(elm_msg_cat, MeSet,
Index: elmME+.2.5.alpha23-cvs/src/url/url_element.c
*** elmME+.2.5.alpha22-cvs/src/url/url_element.c 2009-10-21 07:22:19.000000000 +0300
--- elmME+.2.5.alpha23-cvs/src/url/url_element.c 2009-11-22 15:26:56.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: url_element.c,v 2.1 2009-10-21 04:22:19 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.1 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI>
* or Kari Hurtta <e...@elmme-mailer.org>
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: url_element.c,v 2.2 2009-11-22 13:26:56 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.2 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI>
* or Kari Hurtta <e...@elmme-mailer.org>
***************
*** 61,67 ****
struct header_errors **header_error;
{
charset_t utf8 = MIME_name_to_charset("UTF-8",0);
! struct string * ret0 = new_string(raw->string_type);
struct string * ret = new_string(RAW_BUFFER);
int ret0_ok = 1;
struct string * ret1 = NULL;
--- 61,67 ----
struct header_errors **header_error;
{
charset_t utf8 = MIME_name_to_charset("UTF-8",0);
! struct string * ret0 = new_string(get_string_type(raw));
struct string * ret = new_string(RAW_BUFFER);
int ret0_ok = 1;
struct string * ret1 = NULL;
***************
*** 257,263 ****
panic("CHARSET PANIC",__FILE__,__LINE__,"parsed_to_raw",
"UTF-8 not found",0);
! if (RAW_BUFFER != P->string_type)
P = convert_string(utf8,parsed,0);
/* RFC 1738 unsafe characters:
--- 257,263 ----
panic("CHARSET PANIC",__FILE__,__LINE__,"parsed_to_raw",
"UTF-8 not found",0);
! if (RAW_BUFFER != get_string_type(P))
P = convert_string(utf8,parsed,0);
/* RFC 1738 unsafe characters:
Index: elmME+.2.5.alpha23-cvs/utils/answer.c
*** elmME+.2.5.alpha22-cvs/utils/answer.c 2009-10-21 07:22:19.000000000 +0300
--- elmME+.2.5.alpha23-cvs/utils/answer.c 2010-03-18 19:02:41.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: answer.c,v 2.3 2009-10-21 04:22:19 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.3 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: answer.c,v 2.4 2010-03-18 17:02:41 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.4 $ $State: Exp $
*
* Modified by: Kari Hurtta <hurtta+...@posti.FMI.FI>
* (was hurtta+...@ozone.FMI.FI)
***************
*** 271,277 ****
sizeof buffer);
printf("\n%s",buffer);
fflush(stdout);
! fgets(in_line, SLEN, stdin);
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
--- 271,279 ----
sizeof buffer);
printf("\n%s",buffer);
fflush(stdout);
! if (NULL == fgets(in_line, SLEN, stdin)) {
! goto fail;
! }
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
***************
*** 280,286 ****
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! fgets(in_line, SLEN, stdin);
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
--- 282,290 ----
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! if (NULL == fgets(in_line, SLEN, stdin)) {
! goto fail;
! }
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
***************
*** 289,295 ****
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! fgets(in_line, SLEN, stdin);
if (strlen(in_line) > 1)
fprintf(fd,"%s%s\n",buffer,in_line);
--- 293,301 ----
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! if (NULL == fgets(in_line, SLEN, stdin)) {
! goto fail;
! }
if (strlen(in_line) > 1)
fprintf(fd,"%s%s\n",buffer,in_line);
***************
*** 298,304 ****
sizeof buffer);
printf("\n%s",buffer);
fflush(stdout);
! fgets(in_line, SLEN, stdin);
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
--- 304,312 ----
sizeof buffer);
printf("\n%s",buffer);
fflush(stdout);
! if (NULL == fgets(in_line, SLEN, stdin)) {
! goto fail;
! }
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
***************
*** 308,314 ****
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! fgets(in_line, SLEN, stdin);
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
--- 316,324 ----
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! if (NULL == fgets(in_line, SLEN, stdin)) {
! goto fail;
! }
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
***************
*** 318,324 ****
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! fgets(in_line, SLEN, stdin);
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
--- 328,336 ----
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! if (NULL == fgets(in_line, SLEN, stdin)) {
! goto fail;
! }
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
***************
*** 328,334 ****
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! fgets(in_line, SLEN, stdin);
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
--- 340,348 ----
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! if (NULL == fgets(in_line, SLEN, stdin)) {
! goto fail;
! }
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
***************
*** 337,343 ****
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! fgets(in_line, SLEN, stdin);
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
--- 351,359 ----
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! if (NULL == fgets(in_line, SLEN, stdin)) {
! goto fail;
! }
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
***************
*** 347,353 ****
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! fgets(in_line, SLEN, stdin);
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
--- 363,371 ----
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! if (NULL == fgets(in_line, SLEN, stdin)) {
! goto fail;
! }
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
***************
*** 356,362 ****
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! fgets(in_line, SLEN, stdin);
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
}
--- 374,382 ----
sizeof buffer);
printf("%s",buffer);
fflush(stdout);
! if (NULL == fgets(in_line, SLEN, stdin)) {
! goto fail;
! }
if (strlen(in_line) > 1)
fprintf(fd,"%s%s",buffer,in_line);
}
***************
*** 476,486 ****
}
fclose(fd);
no_addr:
free_addr_list(&addr_list);
! }
}
static int translate(fullname, name, namesize)
--- 496,507 ----
}
+ fail:
fclose(fd);
no_addr:
free_addr_list(&addr_list);
! }
}
static int translate(fullname, name, namesize)
Index: elmME+.2.5.alpha23-cvs/utils/elmlibregister.c
*** elmME+.2.5.alpha22-cvs/utils/elmlibregister.c 2009-10-21 07:22:19.000000000 +0300
--- elmME+.2.5.alpha23-cvs/utils/elmlibregister.c 2010-03-18 19:02:41.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: elmlibregister.c,v 2.1 2009-10-21 04:22:19 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.1 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI> (was hurtta+...@ozone.FMI.FI)
* or Kari Hurtta <e...@elmme-mailer.org>
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: elmlibregister.c,v 2.2 2010-03-18 17:02:41 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.2 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI> (was hurtta+...@ozone.FMI.FI)
* or Kari Hurtta <e...@elmme-mailer.org>
***************
*** 28,36 ****
#include "reghelper.h"
- #if 0
DEBUG_VAR(Debug,__FILE__,"util");
- #endif
extern char *optarg;
extern int optind;
--- 28,34 ----
***************
*** 241,247 ****
#ifdef FTRUNCATE
/* Not really necessary */
! ftruncate(fileno(elmrc_changes_F),0);
#endif
print_history_changed(elmrc_changes_F,recorder);
--- 239,247 ----
#ifdef FTRUNCATE
/* Not really necessary */
! if (-1 == ftruncate(fileno(elmrc_changes_F),0)) {
! DPRINT(Debug,27,(&Debug,"ftruncate of %s failed\n",elmrc_changes));
! }
#endif
print_history_changed(elmrc_changes_F,recorder);
Index: elmME+.2.5.alpha23-cvs/utils/elmrc-write.c
*** elmME+.2.5.alpha22-cvs/utils/elmrc-write.c 2009-10-21 07:22:19.000000000 +0300
--- elmME+.2.5.alpha23-cvs/utils/elmrc-write.c 2010-03-18 19:02:41.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: elmrc-write.c,v 2.1 2009-10-21 04:22:19 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.1 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI> (was hurtta+...@ozone.FMI.FI)
* or Kari Hurtta <e...@elmme-mailer.org>
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: elmrc-write.c,v 2.2 2010-03-18 17:02:41 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.2 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI> (was hurtta+...@ozone.FMI.FI)
* or Kari Hurtta <e...@elmme-mailer.org>
***************
*** 26,34 ****
#include "reghelper.h"
- #if 0
DEBUG_VAR(Debug,__FILE__,"util");
- #endif
extern char *optarg;
extern int optind;
--- 26,32 ----
***************
*** 274,280 ****
#ifdef FTRUNCATE
/* Not really necessary */
! ftruncate(fileno(elmrc_changes_F),0);
#endif
print_history_changed(elmrc_changes_F,recorder);
--- 272,280 ----
#ifdef FTRUNCATE
/* Not really necessary */
! if (-1 == ftruncate(fileno(elmrc_changes_F),0)) {
! DPRINT(Debug,27,(&Debug,"ftruncate of %s failed\n",elmrc_changes));
! }
#endif
print_history_changed(elmrc_changes_F,recorder);
Index: elmME+.2.5.alpha23-cvs/utils/elmregister.c
*** elmME+.2.5.alpha22-cvs/utils/elmregister.c 2009-10-21 07:22:19.000000000 +0300
--- elmME+.2.5.alpha23-cvs/utils/elmregister.c 2009-11-03 08:20:59.000000000 +0200
***************
*** 1,7 ****
! static char rcsid[] = "@(#)$Id: elmregister.c,v 2.6 2009-10-21 04:22:19 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.6 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI> (was hurtta+...@ozone.FMI.FI)
* or Kari Hurtta <e...@elmme-mailer.org>
--- 1,7 ----
! static char rcsid[] = "@(#)$Id: elmregister.c,v 2.8 2009-11-03 06:20:59 hurtta Exp $";
/************************************************************************** ****
! * The Elm (ME+) Mail System - $Revision: 2.8 $ $State: Exp $
*
* Author: Kari Hurtta <hurtta+...@posti.FMI.FI> (was hurtta+...@ozone.FMI.FI)
* or Kari Hurtta <e...@elmme-mailer.org>
***************
*** 1223,1231 ****
--- 1223,1240 ----
"%s: Directory %s created\n",
program_name,Z);
} else if (errno != EEXIST) {
+ int err = errno;
fprintf(stderr,
"%s: Failed to create %s directory\n",
program_name,Z);
+
+ if ((err == EPERM || err == EACCES) && geteuid() != 0 &&
+ 0 == strcmp(installer_root,"/")) {
+ fprintf(stderr,
+ "%s: Superuser privilege required.\n",
+ program_name);
+ }
+
exit(1);
}
free(Z);
***************
*** 1235,1243 ****
--- 1244,1261 ----
t = open(LI.filename,O_RDWR|O_CREAT,0644);
if (t < 0) {
+ int err = errno;
fprintf(stderr,
"%s: Failed to create or open file %s on %s: %s\n",
program_name,filelist,installer_root, LI.filename);
+
+ if ((err == EPERM || err == EACCES) && geteuid() != 0 &&
+ 0 == strcmp(installer_root,"/")) {
+ fprintf(stderr,
+ "%s: Superuser privilege required.\n",
+ program_name);
+ }
+
return 1; /* FAILURE */
}
***************
*** 4373,4389 ****
"%s: Directory %s created\n",
program_name,ETCHOME);
} else if (errno != EEXIST) {
fprintf(stderr,
! "%s: Failed to create %s directory\n",
! program_name,ETCHOME);
! return 1; /* FAILURE */
}
t = open(LI_target.filename,O_RDWR|O_CREAT,0644);
if (t < 0) {
fprintf(stderr,
"%s: Failed to open file %s on target (/): %s\n",
program_name,filelist,LI_target.filename);
fclose(LI_source.file);
--- 4391,4425 ----
"%s: Directory %s created\n",
program_name,ETCHOME);
} else if (errno != EEXIST) {
+ int err = errno;
+
+ fprintf(stderr,
+ "%s: Failed to create %s directory\n",
+ program_name,ETCHOME);
+
+ if ((err == EPERM || err == EACCES) && geteuid() != 0) {
fprintf(stderr,
! "%s: Superuser privilege required.\n",
! program_name);
! }
!
! return 1; /* FAILURE */
}
t = open(LI_target.filename,O_RDWR|O_CREAT,0644);
if (t < 0) {
+ int err = errno;
+
fprintf(stderr,
"%s: Failed to open file %s on target (/): %s\n",
program_name,filelist,LI_target.filename);
+
+
+ if ((err == EPERM || err == EACCES) && geteuid() != 0) {
+ fprintf(stderr,
+ "%s: Superuser privilege required.\n",
+ program_name);
+ }
fclose(LI_source.file);