Ticket #2078: 2078-src-charsets.c-getting-rid-of-errbuf_255.patch

File 2078-src-charsets.c-getting-rid-of-errbuf_255.patch, 5.9 KB (added by vit_r, 14 years ago)

src-charsets.c-getting-rid-of-errbuf_255

  • src/boxes.c

    From 1305fa0d410ecc66a1956056cb9fc6b831d5b775 Mon Sep 17 00:00:00 2001
    From: Vit Rosin <vit_r@list.ru>
    Date: Tue, 2 Mar 2010 20:48:39 +0000
    Subject: [PATCH]  src/charsets.c getting rid of errbuf_255
    
    ---
     src/boxes.c       |   10 ++++++----
     src/charsets.c    |   20 +++++++-------------
     src/charsets.h    |    2 +-
     src/screen.c      |   21 +++++++++++----------
     src/selcodepage.c |   10 ++++++----
     src/setup.c       |   11 ++++++++++-
     6 files changed, 41 insertions(+), 33 deletions(-)
    
    diff --git a/src/boxes.c b/src/boxes.c
    index 61fca68..cfaad50 100644
    a b display_bits_box (void) 
    623623    run_dlg (dbits_dlg); 
    624624 
    625625    if (dbits_dlg->ret_value == B_ENTER) { 
    626         const char *errmsg; 
     626        char *errmsg = NULL; 
     627 
    627628        display_codepage = new_display_codepage; 
    628         errmsg = 
    629             init_translation_table (source_codepage, display_codepage); 
    630         if (errmsg) 
     629        errmsg = init_translation_table (source_codepage, display_codepage); 
     630        if (errmsg != NULL) { 
    631631            message (D_ERROR, MSG_ERROR, "%s", errmsg); 
     632            g_free (errmsg); 
     633        } 
    632634#ifdef HAVE_SLANG 
    633635        tty_display_8bit (display_codepage != 0 && display_codepage != 1); 
    634636#else 
  • src/charsets.c

    diff --git a/src/charsets.c b/src/charsets.c
    index b290e72..a1bcd5d 100644
    a b translate_character (GIConv cd, char c) 
    177177    return ch; 
    178178} 
    179179 
    180 char errbuf[255]; 
    181  
    182180/* 
    183181 * FIXME: This assumes that ASCII is always the first encoding 
    184182 * in mc.charsets 
    185183 */ 
    186184#define CP_ASCII 0 
    187185 
    188 const char * 
     186char * 
    189187init_translation_table (int cpsource, int cpdisplay) 
    190188{ 
    191189    int i; 
    init_translation_table (int cpsource, int cpdisplay) 
    212210    /* display <- inpit table */ 
    213211 
    214212    cd = g_iconv_open (cp_display, cp_source); 
    215     if (cd == INVALID_CONV) { 
    216         g_snprintf (errbuf, sizeof (errbuf), 
    217                     _("Cannot translate from %s to %s"), cp_source, cp_display); 
    218         return errbuf; 
    219     } 
     213    if (cd == INVALID_CONV) 
     214        return g_strdup_printf (_("Cannot translate from %s to %s"),  
     215                                cp_source, cp_display); 
    220216 
    221217    for (i = 128; i <= 255; ++i) 
    222218        conv_displ[i] = translate_character (cd, i); 
    init_translation_table (int cpsource, int cpdisplay) 
    226222    /* inpit <- display table */ 
    227223 
    228224    cd = g_iconv_open (cp_source, cp_display); 
    229     if (cd == INVALID_CONV) { 
    230         g_snprintf (errbuf, sizeof (errbuf), 
    231                     _("Cannot translate from %s to %s"), cp_display, cp_source); 
    232         return errbuf; 
    233     } 
     225    if (cd == INVALID_CONV) 
     226        return g_strdup_printf (_("Cannot translate from %s to %s"),  
     227                                cp_display, cp_source); 
    234228 
    235229    for (i = 128; i <= 255; ++i) { 
    236230        unsigned char ch; 
  • src/charsets.h

    diff --git a/src/charsets.h b/src/charsets.h
    index 98186b8..087a5bb 100644
    a b const char *get_codepage_id (const int n); 
    2828int get_codepage_index (const char *id); 
    2929int load_codepages_list (void); 
    3030void free_codepages_list (void); 
    31 const char *init_translation_table (int cpsource, int cpdisplay); 
     31char *init_translation_table (int cpsource, int cpdisplay); 
    3232void convert_to_display (char *str); 
    3333void convert_from_input (char *str); 
    3434void convert_string (unsigned char *str); 
  • src/screen.c

    diff --git a/src/screen.c b/src/screen.c
    index e158312..24ffbf9 100644
    a b void 
    33923392set_panel_encoding (WPanel * panel) 
    33933393{ 
    33943394    const char *encoding = NULL; 
    3395     char *cd_path; 
     3395    char *cd_path = NULL; 
    33963396#ifdef HAVE_CHARSET 
    3397     const char *errmsg; 
    33983397    int r; 
    33993398 
    34003399    r = select_charset (-1, -1, default_source_codepage, FALSE); 
    set_panel_encoding (WPanel * panel) 
    34053404    if (r == SELECT_CHARSET_NO_TRANSLATE) 
    34063405    { 
    34073406        /* No translation */ 
    3408         errmsg = init_translation_table (display_codepage, display_codepage); 
     3407        init_translation_table (display_codepage, display_codepage); 
    34093408        cd_path = remove_encoding_from_path (panel->cwd); 
    34103409        do_panel_cd (panel, cd_path, 0); 
    34113410        g_free (cd_path); 
    34123411        return; 
    34133412    } 
    3414  
    34153413    source_codepage = r; 
    3416  
    3417     errmsg = init_translation_table (source_codepage, display_codepage); 
    3418     if (errmsg) 
    34193414    { 
    3420         message (D_ERROR, MSG_ERROR, "%s", errmsg); 
    3421         return; 
    3422     } 
     3415        char *errmsg = NULL; 
    34233416 
     3417        errmsg = init_translation_table (source_codepage, display_codepage); 
     3418        if (errmsg != NULL) 
     3419        { 
     3420            message (D_ERROR, MSG_ERROR, "%s", errmsg); 
     3421            g_free (errmsg); 
     3422            return; 
     3423        } 
     3424    } 
    34243425    encoding = get_codepage_id (source_codepage); 
    34253426#endif 
    34263427    if (encoding != NULL) 
  • src/selcodepage.c

    diff --git a/src/selcodepage.c b/src/selcodepage.c
    index 69f75b3..56e8d5c 100644
    a b select_charset (int center_y, int center_x, int current_charset, gboolean seldis 
    115115gboolean 
    116116do_set_codepage (int codepage) 
    117117{ 
    118     const char *errmsg = NULL; 
     118    char *errmsg = NULL; 
    119119 
    120120    source_codepage = codepage; 
    121121    errmsg = init_translation_table (codepage == SELECT_CHARSET_NO_TRANSLATE ? 
    122122                                        display_codepage : source_codepage, 
    123123                                        display_codepage); 
    124     if (errmsg != NULL) 
     124    if (errmsg != NULL) { 
    125125        message (D_ERROR, MSG_ERROR, "%s", errmsg); 
    126  
    127     return (errmsg == NULL); 
     126        g_free (errmsg); 
     127        return FALSE; 
     128    } 
     129    return TRUE; 
    128130} 
    129131 
    130132/* Show menu selecting codepage */ 
  • src/setup.c

    diff --git a/src/setup.c b/src/setup.c
    index 78dfb1b..178c47d 100644
    a b load_setup (void) 
    867867    if ((autodetect_codeset[0] != '\0') && (strcmp (autodetect_codeset, "off"))) 
    868868        is_autodetect_codeset_enabled = TRUE; 
    869869 
    870     init_translation_table (source_codepage, display_codepage); 
     870    { 
     871        char *errmsg = NULL; 
     872 
     873        errmsg = init_translation_table (source_codepage, display_codepage); 
     874        if (errmsg != NULL) { 
     875            message (D_ERROR, MSG_ERROR, "%s", errmsg); 
     876            g_free (errmsg); 
     877        } 
     878    } 
     879 
    871880    if (get_codepage_id (display_codepage)) 
    872881        utf8_display = str_isutf8 (get_codepage_id (display_codepage)); 
    873882#endif /* HAVE_CHARSET */