Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Message from discussion Patch: Elm ME+ 2.5 PLalpha22 -> Elm ME+ 2.5 PLalpha23 [2/2]
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Kari Hurtta  
View profile  
 More options Apr 1 2010, 1:52 pm
Newsgroups: alt.sources, comp.mail.elm
Followup-To: comp.mail.elm, alt.sources.d
From: Kari Hurtta <hur...@Hurtta06k.keh.iki.fi>
Date: 01 Apr 2010 20:52:04 +0300
Local: Thurs, Apr 1 2010 1:52 pm
Subject: Patch: Elm ME+ 2.5 PLalpha22 -> Elm ME+ 2.5 PLalpha23 [2/2]
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);


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.