The following commit has been merged in the master branch:
commit 9b9cab58749217101ab16504a77efb301812cfbf
Merge: 8b38cf44daee3b0f92591baa97f36d722be99280 
f235b1976ee6dd7aa2be7e75c870784c424e3de3
Author: Enrico Weigelt, metux IT service <weig...@metux.de>
Date:   Mon Feb 2 22:39:12 2009 +0100

    manually merged 234_remove_g_string

diff --combined ChangeLog
index 174e3aa,abbe625..832520c
--- a/ChangeLog
+++ b/ChangeLog
@@@ -1,33 -1,14 +1,34 @@@
 -2009-01-31 Enrico Weigelt, metux ITS <weig...@metux.de>
 +2009-02-01 Enrico Weigelt, metux ITS <weig...@metux.de>
  
 +      * src/util.c: fixed name_trunc() on NULL or empty parameters
 +      * src/achown.c: fixed unitialized var in init_chown_advanced()
 +        (patch from andrew_b)
 +      * replaced gboolean by bool (from mhl/types.h)
 +
 +2009-01-31 Enrico Weigelt, metux ITS <weig...@metux.de>, Patrick Winnertz 
<win...@debian.org>, Slava Zanko <slavaza...@gmail.com>, Sergei Trofimovich  
<sly...@inbox.ru>
 +
 +      * edit/editcmd.c, mhl/escape.h, mhl/string.h, mhl/types.h, 
src/Makefile.am,
 +      * src/boxes.c, src/command.c, src/complete.c, src/complete.h, 
src/file.c,
 +      * src/find.c, src/main.c, src/panelize.c, src/util.c, src/utilunix.c,
 +      * src/widget.c, src/widget.h, src/wtools.c, vfs/fish.c:
 +        fixed shell escaping issues in commandline completion engine
        * replaced buggy concat_dir_and_file() by mhl_str_dir_plus_file() (in 
mhl/string.h)
 +      * replaced g_snprintf() by snprintf()
+       * replaced GString stuff by static buffers
  
  2009-01-30 Enrico Weigelt, metux ITS <weig...@metux.de>
  
        * src/Makefile.am, edit/Makefile.am vfs/Makefile.am: fixed #208
          (out-of-tree builds)
 +      * syntax/Syntax, syntax/Makefile.am, syntax/vhdl.syntax: added VHDL 
syntax (#193)
 +      * replaced calls to g_strdup() by mhl_str_dup()
 +
 +2009-01-30 Enrico Weigelt, metux ITS <weig...@metux.de>
 +
 +      * replaced calls to g_free() by mhl_mem_free()
  
  2009-01-29 Mikhail S. Pobolovets <styx...@gmail.com>
 +
        * lib/mc.ext.in: update for OpenOffice and StarOffice viewer.
          odt2txt is now used
  
@@@ -37,10 -18,8 +38,10 @@@
          This solves "strange" rename cases, when copying/moving is performed 
into
          deleted directory.
  
 -2009-01-27 Enrico Weigelt, metux IT service <weig...@metux.de>
 +2009-01-27 Enrico Weigelt, metux ITS <weig...@metux.de>
  
 +      * mhl/escape.h, src/complete.c, vfs/fish.c: introduced new type 
 +        SHELL_ESCAPED_STR for more type safety
        * mhl/escape.h, mhl/string.h: fixed comments to use /* ... */
  
  2009-01-27 Sergei Trofimovich  <sly...@inbox.ru>
@@@ -68,7 -47,7 +69,7 @@@
        * src/cmd.c src/option.c src/setup.c src/main.h: Automatic new 
directory(Mkdir, F7)
          name filling. Can be configured (on|off) in 'Configure options'
  
 -2009-01-25 Enrico Weigelt <weig...@metux.de>
 +2009-01-25 Enrico Weigelt, metux ITS <weig...@metux.de>
  
        * edit/editcmd.c, src/cmd.c, src/ext.c, src/history.h:
        * src/hotlist.c, src/panelize.c, src/tree.c, src/user.c: 
@@@ -77,11 -56,9 +78,11 @@@
          translated strings. This breaks now once every history file
          but afterwards this will be stable
  
 -2009-01-24 Enrico Weigelt <weig...@metux.de>
 +2009-01-24 Enrico Weigelt, metux ITS <weig...@metux.de>
  
        * src/cmd.c: fixed bug #35 (do_view_cmd is now calling repaint_screen())
 +      * syntax/Syntax, syntax/nemerle.syntax: Added syntax rules 
 +        for Nemerle source files
  
  2009-01-24 Patrick Winnertz <win...@debian.org>
  
@@@ -89,6 -66,11 +90,6 @@@
          - prevent . to match a newline (\n)
          - match from start of line and not from cursor position
  
 -2009-01-24  Enrico Weigelt, metux IT service <weig...@metux.de>
 -
 -      * syntax/Syntax, syntax/nemerle.syntax: Added syntax rules 
 -        for Nemerle source files
 -
  2009-01-19 Patrick Winnertz <win...@debian.org>
  
        * edit/edit.h: Add two more ints
@@@ -103,7 -85,7 +104,7 @@@
        * src/main.c: Removed unused function do_mc_filename_rename
        * src/util.c: Removed unused struct whentm
  
 -2009-01-16 Enrico Weigelt, metux IT service <weig...@metux.de>
 +2009-01-16 Enrico Weigelt, metux ITS <weig...@metux.de>
  
        * src/subshell: setting subshell pty to close-on-exec 
          (taken from mandriva patches)
@@@ -141,6 -123,9 +142,6 @@@
        * syntax/Makefile.am syntax/Syntax syntax/haskell.syntax:
        added syntax definition for Haskell (taken from rhclub-tree)
        * syntax: added ebuild Syntax defition (taken from rhclub-tree)
 -
 -2009-01-10  Enrico Weigelt, metux ITS <weig...@metux.de>
 -
        * edit/editcmd.c:
        * src/achown.c src/background.c src/boxes.c src/chmod.c:
        * src/chown.c src/cmd.c src/command.c src/dir.c src/execute.c:
diff --combined edit/edit.c
index 82cca0d,1f8d851..36284df
--- a/edit/edit.c
+++ b/edit/edit.c
@@@ -22,7 -22,6 +22,7 @@@
  */
  
  #include <config.h>
 +
  #include <stdio.h>
  #include <stdarg.h>
  #include <sys/types.h>
@@@ -33,7 -32,6 +33,7 @@@
  #include <sys/stat.h>
  #include <stdlib.h>
  
 +#include <mhl/memory.h>
  #include <mhl/string.h>
  
  #include "../src/global.h"
@@@ -153,10 -151,9 +153,9 @@@ edit_load_file_fast (WEdit *edit, cons
      buf2 = edit->curs2 >> S_EDIT_BUF_SIZE;
  
      if ((file = mc_open (filename, O_RDONLY | O_BINARY)) == -1) {
-       GString *errmsg = g_string_new(NULL);
-       g_string_sprintf(errmsg, _(" Cannot open %s for reading "), filename);
-       edit_error_dialog (_("Error"), get_sys_error (errmsg->str));
-       g_string_free (errmsg, TRUE);
+       char errmsg[8192];
+       snprintf(errmsg, sizeof(errmsg), _(" Cannot open %s for reading "), 
filename);
+       edit_error_dialog (_("Error"), get_sys_error (errmsg));
        return 1;
      }
  
@@@ -219,7 -216,7 +218,7 @@@ edit_get_filter (const char *filename
      l = strlen (quoted_name);
      p = g_malloc (strlen (all_filters[i].read) + l + 2);
      sprintf (p, all_filters[i].read, quoted_name);
 -    g_free (quoted_name);
 +    mhl_mem_free (quoted_name);
      return p;
  }
  
@@@ -235,7 -232,7 +234,7 @@@ edit_get_write_filter (const char *writ
      l = strlen (writename);
      p = g_malloc (strlen (all_filters[i].write) + l + 2);
      sprintf (p, all_filters[i].write, writename);
 -    g_free (writename);
 +    mhl_mem_free (writename);
      return p;
  }
  
@@@ -275,22 -272,20 +274,20 @@@ edit_insert_file (WEdit *edit, const ch
            edit_insert_stream (edit, f);
            edit_cursor_move (edit, current - edit->curs1);
            if (pclose (f) > 0) {
-               GString *errmsg = g_string_new (NULL);
-               g_string_sprintf (errmsg, _(" Error reading from pipe: %s "), 
p);
-               edit_error_dialog (_("Error"), errmsg->str);
-               g_string_free (errmsg, TRUE);
+               char errmsg[8192];
+               snprintf(errmsg, sizeof(errmsg), _(" Error reading from pipe: 
%s "), p);
+               edit_error_dialog (_("Error"), errmsg);
 -              g_free (p);
 +              mhl_mem_free (p);
                return 0;
            }
        } else {
-           GString *errmsg = g_string_new (NULL);
-           g_string_sprintf (errmsg, _(" Cannot open pipe for reading: %s "), 
p);
-           edit_error_dialog (_("Error"), errmsg->str);
-           g_string_free (errmsg, TRUE);
+           char errmsg[8192];
+           snprintf(errmsg, sizeof(errmsg), _(" Cannot open pipe for reading: 
%s "), p);
+           edit_error_dialog (_("Error"), errmsg);
 -          g_free (p);
 +          mhl_mem_free (p);
            return 0;
        }
 -      g_free (p);
 +      mhl_mem_free (p);
      } else {
        int i, file, blocklen;
        long current = edit->curs1;
@@@ -303,7 -298,7 +300,7 @@@
                edit_insert (edit, buf[i]);
        }
        edit_cursor_move (edit, current - edit->curs1);
 -      g_free (buf);
 +      mhl_mem_free (buf);
        mc_close (file);
        if (blocklen)
            return 0;
@@@ -316,7 -311,8 +313,8 @@@ static in
  check_file_access (WEdit *edit, const char *filename, struct stat *st)
  {
      int file;
-     GString *errmsg = (GString *) 0;
+     char errmsg[8192];
+     errmsg[0] = 0;
  
      /* Try opening an existing file */
      file = mc_open (filename, O_NONBLOCK | O_RDONLY | O_BINARY, 0666);
@@@ -331,8 -327,7 +329,7 @@@
                     O_NONBLOCK | O_RDONLY | O_BINARY | O_CREAT | O_EXCL,
                     0666);
        if (file < 0) {
-           g_string_sprintf (errmsg = g_string_new (NULL),
-               _(" Cannot open %s for reading "), filename);
+           snprintf (errmsg, sizeof(errmsg), _(" Cannot open %s for reading 
"), filename);
            goto cleanup;
        } else {
            /* New file, delete it if it's not modified or saved */
@@@ -342,15 -337,13 +339,13 @@@
  
      /* Check what we have opened */
      if (mc_fstat (file, st) < 0) {
-       g_string_sprintf (errmsg = g_string_new (NULL),
-           _(" Cannot get size/permissions for %s "), filename);
+       snprintf (errmsg, sizeof(errmsg), _(" Cannot get size/permissions for 
%s "), filename);
        goto cleanup;
      }
  
      /* We want to open regular files only */
      if (!S_ISREG (st->st_mode)) {
-       g_string_sprintf (errmsg = g_string_new (NULL),
-           _(" %s is not a regular file "), filename);
+       snprintf (errmsg, sizeof(errmsg), _(" %s is not a regular file "), 
filename);
        goto cleanup;
      }
  
@@@ -363,16 -356,14 +358,14 @@@
      }
  
      if (st->st_size >= SIZE_LIMIT) {
-         g_string_sprintf (errmsg = g_string_new (NULL),
-           _(" File %s is too large "), filename);
+       snprintf (errmsg, sizeof(errmsg), _(" File %s is too large "), 
filename);
        goto cleanup;
      }
  
  cleanup:
      (void) mc_close (file);
-     if (errmsg) {
-       edit_error_dialog (_("Error"), errmsg->str);
-       g_string_free (errmsg, TRUE);
+     if (errmsg[0]) {
+       edit_error_dialog (_("Error"), errmsg);
        return 1;
      }
      return 0;
@@@ -450,7 -441,7 +443,7 @@@ edit_load_position (WEdit *edit
  
      filename = vfs_canon (edit->filename);
      load_file_position (filename, &line, &column);
 -    g_free (filename);
 +    mhl_mem_free (filename);
  
      edit_move_to_line (edit, line - 1);
      edit->prev_col = column;
@@@ -469,7 -460,7 +462,7 @@@ edit_save_position (WEdit *edit
  
      filename = vfs_canon (edit->filename);
      save_file_position (filename, edit->curs_line + 1, edit->curs_col);
 -    g_free (filename);
 +    mhl_mem_free (filename);
  }
  
  /* Clean the WEdit stricture except the widget part */
@@@ -543,7 -534,7 +536,7 @@@ edit_init (WEdit *edit, int lines, int 
      if (edit_load_file (edit)) {
        /* edit_load_file already gives an error message */
        if (to_free)
 -          g_free (edit);
 +          mhl_mem_free (edit);
        return 0;
      }
      edit->loading_done = 1;
@@@ -594,13 -585,13 +587,13 @@@ edit_clean (WEdit *edit
      edit_free_syntax_rules (edit);
      book_mark_flush (edit, -1);
      for (; j <= MAXBUFF; j++) {
 -      g_free (edit->buffers1[j]);
 -      g_free (edit->buffers2[j]);
 +      mhl_mem_free (edit->buffers1[j]);
 +      mhl_mem_free (edit->buffers2[j]);
      }
  
 -    g_free (edit->undo_stack);
 -    g_free (edit->filename);
 -    g_free (edit->dir);
 +    mhl_mem_free (edit->undo_stack);
 +    mhl_mem_free (edit->filename);
 +    mhl_mem_free (edit->dir);
  
      edit_purge_widget (edit);
  
@@@ -640,12 -631,12 +633,12 @@@ edit_reload (WEdit *edit, const char *f
      e = g_malloc0 (sizeof (WEdit));
      e->widget = edit->widget;
      if (!edit_init (e, lines, columns, filename, 0)) {
 -      g_free (e);
 +      mhl_mem_free (e);
        return 0;
      }
      edit_clean (edit);
      memcpy (edit, e, sizeof (WEdit));
 -    g_free (e);
 +    mhl_mem_free (e);
      return 1;
  }
  
@@@ -931,7 -922,7 +924,7 @@@ int edit_delete (WEdit * edit
      p = edit->buffers2[(edit->curs2 - 1) >> S_EDIT_BUF_SIZE][EDIT_BUF_SIZE - 
((edit->curs2 - 1) & M_EDIT_BUF_SIZE) - 1];
  
      if (!(edit->curs2 & M_EDIT_BUF_SIZE)) {
 -      g_free (edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE]);
 +      mhl_mem_free (edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE]);
        edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] = NULL;
      }
      edit->last_byte--;
@@@ -968,7 -959,7 +961,7 @@@ edit_backspace (WEdit * edit
  
      p = *(edit->buffers1[(edit->curs1 - 1) >> S_EDIT_BUF_SIZE] + 
((edit->curs1 - 1) & M_EDIT_BUF_SIZE));
      if (!((edit->curs1 - 1) & M_EDIT_BUF_SIZE)) {
 -      g_free (edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE]);
 +      mhl_mem_free (edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE]);
        edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] = NULL;
      }
      edit->last_byte--;
@@@ -1053,7 -1044,7 +1046,7 @@@ edit_move_backward_lots (WEdit *edit, l
            edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] =
                g_malloc (EDIT_BUF_SIZE);
      } else {
 -      g_free (p);
 +      mhl_mem_free (p);
      }
  
      s = edit->curs1 & M_EDIT_BUF_SIZE;
@@@ -1091,7 -1082,7 +1084,7 @@@
                edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] =
                    g_malloc (EDIT_BUF_SIZE);
        } else {
 -          g_free (p);
 +          mhl_mem_free (p);
        }
      }
      return edit_get_byte (edit, edit->curs1);
@@@ -1127,7 -1118,7 +1120,7 @@@ void edit_cursor_move (WEdit * edit, lo
            edit->curs2++;
            c = edit->buffers1[(edit->curs1 - 1) >> 
S_EDIT_BUF_SIZE][(edit->curs1 - 1) & M_EDIT_BUF_SIZE];
            if (!((edit->curs1 - 1) & M_EDIT_BUF_SIZE)) {
 -              g_free (edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE]);
 +              mhl_mem_free (edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE]);
                edit->buffers1[edit->curs1 >> S_EDIT_BUF_SIZE] = NULL;
            }
            edit->curs1--;
@@@ -1151,7 -1142,7 +1144,7 @@@
            edit->curs1++;
            c = edit->buffers2[(edit->curs2 - 1) >> 
S_EDIT_BUF_SIZE][EDIT_BUF_SIZE - ((edit->curs2 - 1) & M_EDIT_BUF_SIZE) - 1];
            if (!(edit->curs2 & M_EDIT_BUF_SIZE)) {
 -              g_free (edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE]);
 +              mhl_mem_free (edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE]);
                edit->buffers2[edit->curs2 >> S_EDIT_BUF_SIZE] = 0;
            }
            edit->curs2--;
@@@ -2701,5 -2692,5 +2694,5 @@@ user_menu (WEdit * edit
      edit->force |= REDRAW_COMPLETELY;
  
  cleanup:
 -    g_free (block_file);
 +    mhl_mem_free (block_file);
  }
diff --combined edit/editcmd.c
index 2f246e7,ec9a931..518dc54
--- a/edit/editcmd.c
+++ b/edit/editcmd.c
@@@ -37,7 -37,6 +37,7 @@@
  #include <sys/stat.h>
  #include <stdlib.h>
  
 +#include <mhl/memory.h>
  #include <mhl/string.h>
  
  #include "../src/global.h"
@@@ -167,7 -166,7 +167,7 @@@ catstrs (const char *first,...
      len++;
  
      i = (i + 1) % 16;
 -    g_free (stacked[i]);
 +    mhl_mem_free (stacked[i]);
  
      stacked[i] = g_malloc (len);
      va_end (ap);
@@@ -186,7 -185,7 +186,7 @@@ void freestrs(void
      size_t i;
  
      for (i = 0; i < sizeof(stacked) / sizeof(stacked[0]); i++) {
 -      g_free (stacked[i]);
 +      mhl_mem_free (stacked[i]);
        stacked[i] = NULL;
      }
  }
@@@ -238,7 -237,7 +238,7 @@@ edit_save_file (WEdit *edit, const cha
      if (*filename != PATH_SEP && edit->dir) {
        savename = mhl_str_dir_plus_file (edit->dir, filename);
        filename = catstrs (savename, (char *) NULL);
 -      g_free (savename);
 +      mhl_mem_free (savename);
      }
  
      this_save_mode = option_save_mode;
@@@ -298,14 -297,14 +298,14 @@@
        const char *slashpos;
        slashpos = strrchr (filename, PATH_SEP);
        if (slashpos) {
 -          savedir = g_strdup (filename);
 +          savedir = mhl_str_dup (filename);
            savedir[slashpos - filename + 1] = '\0';
        } else
 -          savedir = g_strdup (".");
 +          savedir = mhl_str_dup (".");
        saveprefix = mhl_str_dir_plus_file (savedir, "cooledit");
 -      g_free (savedir);
 +      mhl_mem_free (savedir);
        fd = mc_mkstemps (&savename, saveprefix, NULL);
 -      g_free (saveprefix);
 +      mhl_mem_free (saveprefix);
        if (!savename)
            return 0;
        /* FIXME:
@@@ -315,7 -314,7 +315,7 @@@
         */
        close (fd);
      } else
 -      savename = g_strdup (filename);
 +      savename = mhl_str_dup (filename);
  
      mc_chown (savename, edit->stat1.st_uid, edit->stat1.st_gid);
      mc_chmod (savename, edit->stat1.st_mode);
@@@ -341,7 -340,7 +341,7 @@@
                edit_error_dialog (_("Error"),
                                   catstrs (_(" Error writing to pipe: "),
                                            p, " ", (char *) NULL));
 -              g_free (p);
 +              mhl_mem_free (p);
                goto error_save;
            }
  #endif
@@@ -351,10 -350,10 +351,10 @@@
                                              (_
                                               (" Cannot open pipe for writing: 
"),
                                               p, " ", (char *) NULL)));
 -          g_free (p);
 +          mhl_mem_free (p);
            goto error_save;
        }
 -      g_free (p);
 +      mhl_mem_free (p);
      } else {
        long buf;
        buf = 0;
@@@ -415,14 -414,14 +415,14 @@@
      if (this_save_mode != EDIT_QUICK_SAVE)
        if (mc_rename (savename, filename) == -1)
            goto error_save;
 -    g_free (savename);
 +    mhl_mem_free (savename);
      return 1;
    error_save:
  /*  FIXME: Is this safe ?
   *  if (this_save_mode != EDIT_QUICK_SAVE)
   *    mc_unlink (savename);
   */
 -    g_free (savename);
 +    mhl_mem_free (savename);
      return 0;
  }
  
@@@ -493,7 -492,7 +493,7 @@@ void menu_save_mode_cmd (void
        return;
      option_save_mode = save_mode_new;
  
 -    g_free (option_backup_ext);
 +    mhl_mem_free (option_backup_ext);
      option_backup_ext = str_result;
      str_result = NULL;
  }
@@@ -501,13 -500,13 +501,13 @@@
  void
  edit_set_filename (WEdit *edit, const char *f)
  {
 -    g_free (edit->filename);
 +    mhl_mem_free (edit->filename);
      if (!f)
        f = "";
 -    edit->filename = g_strdup (f);
 +    edit->filename = mhl_str_dup (f);
      if (edit->dir == NULL && *f != PATH_SEP)
  #ifdef USE_VFS
 -      edit->dir = g_strdup (vfs_get_current_dir ());
 +      edit->dir = mhl_str_dup (vfs_get_current_dir ());
  #else
        edit->dir = g_get_current_dir ();
  #endif
@@@ -530,7 -529,7 +530,7 @@@ edit_save_as_cmd (WEdit *edit
  
      if (exp) {
        if (!*exp) {
 -          g_free (exp);
 +          mhl_mem_free (exp);
            edit->force |= REDRAW_COMPLETELY;
            return 0;
        } else {
@@@ -547,7 -546,7 +547,7 @@@
                         _(" A file already exists with this name. "),
                         _("&Overwrite"), _("&Cancel"))) {
                        edit->force |= REDRAW_COMPLETELY;
 -                      g_free (exp);
 +                      mhl_mem_free (exp);
                        return 0;
                    }
                }
@@@ -573,7 -572,7 +573,7 @@@
                }
  
                edit_set_filename (edit, exp);
 -              g_free (exp);
 +              mhl_mem_free (exp);
                edit->modified = 0;
                edit->delete_file = 0;
                if (different_filename)
@@@ -589,7 -588,7 +589,7 @@@
                /* Failed, so maintain modify (not save) lock */
                if (save_lock)
                    edit_unlock_file (exp);
 -              g_free (exp);
 +              mhl_mem_free (exp);
                edit->force |= REDRAW_COMPLETELY;
                return 0;
            }
@@@ -627,7 -626,7 +627,7 @@@ edit_raw_key_query (const char *heading
                    NULL, heading,
                    DLG_CENTER | DLG_TRYUP | DLG_WANT_TAB);
      add_widget (raw_dlg,
 -              input_new (3 - cancel, w - 5, INPUT_COLOR, 2, "", 0));
 +              input_new (3 - cancel, w - 5, INPUT_COLOR, 2, "", 0, 
INPUT_COMPLETE_DEFAULT));
      add_widget (raw_dlg, label_new (3 - cancel, 2, query));
      if (cancel)
        add_widget (raw_dlg,
@@@ -878,16 -877,16 +878,16 @@@ static in
  edit_load_file_from_filename (WEdit * edit, char *exp)
  {
      int prev_locked = edit->locked;
 -    char *prev_filename = g_strdup (edit->filename);
 +    char *prev_filename = mhl_str_dup (edit->filename);
  
      if (!edit_reload (edit, exp)) {
 -      g_free (prev_filename);
 +      mhl_mem_free (prev_filename);
        return 1;
      }
  
      if (prev_locked)
        edit_unlock_file (prev_filename);
 -    g_free (prev_filename);
 +    mhl_mem_free (prev_filename);
      return 0;
  }
  
@@@ -913,7 -912,7 +913,7 @@@ edit_load_cmd (WEdit *edit
      if (exp) {
        if (*exp)
            edit_load_file_from_filename (edit, exp);
 -      g_free (exp);
 +      mhl_mem_free (exp);
      }
      edit->force |= REDRAW_COMPLETELY;
      return 0;
@@@ -1014,7 -1013,7 +1014,7 @@@ edit_block_copy_cmd (WEdit *edit
            edit_insert_ahead (edit, copy_buf[size]);
      }
  
 -    g_free (copy_buf);
 +    mhl_mem_free (copy_buf);
      edit_scroll_screen_over_cursor (edit);
  
      if (column_highlighting) {
@@@ -1115,7 -1114,7 +1115,7 @@@ edit_block_move_cmd (WEdit *edit
                          edit->curs1 + end_mark - start_mark, 0, 0);
      }
      edit_scroll_screen_over_cursor (edit);
 -    g_free (copy_buf);
 +    mhl_mem_free (copy_buf);
      edit->force |= REDRAW_PAGE;
  }
  
@@@ -1236,14 -1235,16 +1236,16 @@@ edit_replace_prompt (WEdit * edit, cha
         0, 0, 0, 0, 0},
         NULL_QuickWidget};
  
-     GString *label_text = g_string_new (_(" Replace with: "));
-     if (*replace_text) {
-         size_t label_len;
-       label_len = label_text->len;
-         g_string_append (label_text, replace_text);
-         convert_to_display (label_text->str + label_len);
+     const char* label_nls = _(" Replace with: ");
+     char label_text[8192];
+     if (*replace_text)
+     {
+       size_t label_len = strlen(label_nls);
+       snprintf(label_text, sizeof(label_text), "%s%s", label_nls, 
replace_text);
+       convert_to_display((&label_text)+label_len);
      }
-     quick_widgets[5].text = label_text->str;
+ 
+     quick_widgets[5].text = label_text;
  
      {
        int retval;
@@@ -1262,7 -1263,6 +1264,6 @@@
  
        Quick_input.ypos = ypos;
        retval = quick_dialog (&Quick_input);
-       g_string_free (label_text, TRUE);
        return retval;
      }
  }
@@@ -1451,7 -1451,7 +1452,7 @@@ string_regexp_search (char *pattern, ch
        || old_type != match_type || old_icase != icase) {
        if (old_pattern) {
            regfree (&r);
 -          g_free (old_pattern);
 +          mhl_mem_free (old_pattern);
            old_pattern = 0;
        }
        if (regcomp (&r, pattern, REG_EXTENDED | (icase ? REG_ICASE : 0) |
@@@ -1459,7 -1459,7 +1460,7 @@@
            *found_len = 0;
            return -3;
        }
 -      old_pattern = g_strdup (pattern);
 +      old_pattern = mhl_str_dup (pattern);
        old_type = match_type;
        old_icase = icase;
      }
@@@ -1827,9 -1827,9 +1828,9 @@@ edit_replace_cmd (WEdit *edit, int agai
      int argord[NUM_REPL_ARGS];
  
      if (!edit) {
 -      g_free (saved1), saved1 = NULL;
 -      g_free (saved2), saved2 = NULL;
 -      g_free (saved3), saved3 = NULL;
 +      mhl_mem_free (saved1), saved1 = NULL;
 +      mhl_mem_free (saved2), saved2 = NULL;
 +      mhl_mem_free (saved3), saved3 = NULL;
        return;
      }
  
@@@ -1841,13 -1841,13 +1842,13 @@@
        again = 0;
  
      if (again) {
 -      input1 = g_strdup (saved1 ? saved1 : "");
 -      input2 = g_strdup (saved2 ? saved2 : "");
 -      input3 = g_strdup (saved3 ? saved3 : "");
 +      input1 = mhl_str_dup (saved1 ? saved1 : "");
 +      input2 = mhl_str_dup (saved2 ? saved2 : "");
 +      input3 = mhl_str_dup (saved3 ? saved3 : "");
      } else {
 -      char *disp1 = g_strdup (saved1 ? saved1 : "");
 -      char *disp2 = g_strdup (saved2 ? saved2 : "");
 -      char *disp3 = g_strdup (saved3 ? saved3 : "");
 +      char *disp1 = mhl_str_dup (saved1 ? saved1 : "");
 +      char *disp2 = mhl_str_dup (saved2 ? saved2 : "");
 +      char *disp3 = mhl_str_dup (saved3 ? saved3 : "");
  
        convert_to_display (disp1);
        convert_to_display (disp2);
@@@ -1857,9 -1857,9 +1858,9 @@@
        edit_replace_dialog (edit, disp1, disp2, disp3, &input1, &input2,
                             &input3);
  
 -      g_free (disp1);
 -      g_free (disp2);
 -      g_free (disp3);
 +      mhl_mem_free (disp1);
 +      mhl_mem_free (disp2);
 +      mhl_mem_free (disp3);
  
        convert_from_input (input1);
        convert_from_input (input2);
@@@ -1871,9 -1871,10 +1872,9 @@@
            goto cleanup;
        }
  
 -      g_free (saved1), saved1 = g_strdup (input1);
 -      g_free (saved2), saved2 = g_strdup (input2);
 -      g_free (saved3), saved3 = g_strdup (input3);
 -
 +      mhl_mem_free (saved1), saved1 = mhl_str_dup (input1);
 +      mhl_mem_free (saved2), saved2 = mhl_str_dup (input2);
 +      mhl_mem_free (saved3), saved3 = mhl_str_dup (input3);
      }
  
      {
@@@ -2064,9 -2065,9 +2065,9 @@@
      edit->force = REDRAW_COMPLETELY;
      edit_scroll_screen_over_cursor (edit);
    cleanup:
 -    g_free (input1);
 -    g_free (input2);
 -    g_free (input3);
 +    mhl_mem_free (input1);
 +    mhl_mem_free (input2);
 +    mhl_mem_free (input3);
  }
  
  
@@@ -2078,7 -2079,7 +2079,7 @@@ void edit_search_cmd (WEdit * edit, in
      char *exp = "";
  
      if (!edit) {
 -      g_free (old);
 +      mhl_mem_free (old);
        old = NULL;
        return;
      }
@@@ -2087,7 -2088,7 +2088,7 @@@
      if (again) {              /*ctrl-hotkey for search again. */
        if (!old)
            return;
 -      exp = g_strdup (old);
 +      exp = mhl_str_dup (old);
      } else {
  
  #ifdef HAVE_CHARSET
@@@ -2108,8 -2109,8 +2109,8 @@@
      if (exp) {
        if (*exp) {
            int len = 0;
 -          g_free (old);
 -          old = g_strdup (exp);
 +          mhl_mem_free (old);
 +          old = mhl_str_dup (exp);
  
            if (search_create_bookmark) {
                int found = 0, books = 0;
@@@ -2165,7 -2166,7 +2166,7 @@@
                }
            }
        }
 -      g_free (exp);
 +      mhl_mem_free (exp);
      }
      edit->force |= REDRAW_COMPLETELY;
      edit_scroll_screen_over_cursor (edit);
@@@ -2204,7 -2205,7 +2205,7 @@@ edit_ok_to_exit (WEdit *edit
  
  #define TEMP_BUF_LEN 1024
  
 -/* Return a null terminated length of text. Result must be g_free'd */
 +/* Return a null terminated length of text. Result must be mhl_mem_free'd */
  static unsigned char *
  edit_get_block (WEdit *edit, long start, long finish, int *l)
  {
@@@ -2257,7 -2258,7 +2258,7 @@@ edit_save_block (WEdit * edit, const ch
            p += r;
            len -= r;
        }
 -      g_free (block);
 +      mhl_mem_free (block);
      } else {
        unsigned char *buf;
        int i = start, end;
@@@ -2270,7 -2271,7 +2271,7 @@@
            len -= mc_write (file, (char *) buf, end - start);
            start = end;
        }
 -      g_free (buf);
 +      mhl_mem_free (buf);
      }
      mc_close (file);
      if (len)
@@@ -2337,20 -2338,20 +2338,20 @@@ edit_goto_cmd (WEdit *edit
      char *error;
      char s[32];
  
 -    g_snprintf (s, sizeof (s), "%ld", line);
 +    snprintf (s, sizeof (s), "%ld", line);
      f = input_dialog (_(" Goto line "), _(" Enter line: "), 
MC_HISTORY_EDIT_GOTO_LINE,
                      line ? s : "");
      if (!f)
        return;
  
      if (!*f) {
 -      g_free (f);
 +      mhl_mem_free (f);
        return;
      }
  
      l = strtol (f, &error, 0);
      if (*error) {
 -      g_free (f);
 +      mhl_mem_free (f);
        return;
      }
  
@@@ -2360,7 -2361,7 +2361,7 @@@
      edit_move_display (edit, l - edit->num_widget_lines / 2 - 1);
      edit_move_to_line (edit, l - 1);
      edit->force |= REDRAW_COMPLETELY;
 -    g_free (f);
 +    mhl_mem_free (f);
  }
  
  
@@@ -2379,15 -2380,15 +2380,15 @@@ edit_save_block_cmd (WEdit *edit
      edit_push_action (edit, KEY_PRESS + edit->start_display);
      if (exp) {
        if (!*exp) {
 -          g_free (exp);
 +          mhl_mem_free (exp);
            return 0;
        } else {
            if (edit_save_block (edit, exp, start_mark, end_mark)) {
 -              g_free (exp);
 +              mhl_mem_free (exp);
                edit->force |= REDRAW_COMPLETELY;
                return 1;
            } else {
 -              g_free (exp);
 +              mhl_mem_free (exp);
                edit_error_dialog (_(" Save Block "),
                                   get_sys_error (_
                                                  (" Cannot save file. ")));
@@@ -2409,15 -2410,15 +2410,15 @@@ edit_insert_file_cmd (WEdit *edit
      edit_push_action (edit, KEY_PRESS + edit->start_display);
      if (exp) {
        if (!*exp) {
 -          g_free (exp);
 +          mhl_mem_free (exp);
            return 0;
        } else {
            if (edit_insert_file (edit, exp)) {
 -              g_free (exp);
 +              mhl_mem_free (exp);
                edit->force |= REDRAW_COMPLETELY;
                return 1;
            } else {
 -              g_free (exp);
 +              mhl_mem_free (exp);
                edit_error_dialog (_(" Insert File "),
                                   get_sys_error (_
                                                  (" Cannot insert file. ")));
@@@ -2448,7 -2449,7 +2449,7 @@@ int edit_sort_cmd (WEdit * edit
  
      if (!exp)
        return 1;
 -    g_free (old);
 +    mhl_mem_free (old);
      old = exp;
  
      e = system (catstrs (" sort ", exp, " ", home_dir, PATH_SEP_STR 
BLOCK_FILE, " > ", home_dir, PATH_SEP_STR TEMP_FILE, (char *) NULL));
@@@ -2492,7 -2493,7 +2493,7 @@@ edit_ext_cmd (WEdit *edit
        return 1;
  
      e = system (catstrs (exp, " > ", home_dir, PATH_SEP_STR TEMP_FILE, (char 
*) NULL));
 -    g_free (exp);
 +    mhl_mem_free (exp);
  
      if (e) {
        edit_error_dialog (_("External command"),
@@@ -2588,7 -2589,7 +2589,7 @@@ edit_block_process_cmd (WEdit *edit, co
        system (catstrs (" ", home_dir, PATH_SEP_STR EDIT_DIR, shell_cmd, " ",
                         quoted_name, (char *) NULL));
      }
 -    g_free (quoted_name);
 +    mhl_mem_free (quoted_name);
      close_error_pipe (D_NORMAL, NULL);
  
      edit_refresh_cmd (edit);
@@@ -2629,13 -2630,13 +2630,13 @@@ static void pipe_mail (WEdit *edit, cha
      subject = name_quote (subject, 0);
      cc = name_quote (cc, 0);
      s = g_strconcat ("mail -s ", subject, *cc ? " -c " : "" , cc, " ",  to, 
(char *) NULL);
 -    g_free (to);
 -    g_free (subject);
 -    g_free (cc);
 +    mhl_mem_free (to);
 +    mhl_mem_free (subject);
 +    mhl_mem_free (cc);
  
      if (s) {
        p = popen (s, "w");
 -      g_free (s);
 +      mhl_mem_free (s);
      }
  
      if (p) {
@@@ -2694,9 -2695,9 +2695,9 @@@ void edit_mail_dialog (WEdit * edit
      Quick_input.widgets = quick_widgets;
  
      if (quick_dialog (&Quick_input) != B_CANCEL) {
 -      g_free (mail_cc_last);
 -      g_free (mail_subject_last);
 -      g_free (mail_to_last);
 +      mhl_mem_free (mail_cc_last);
 +      mhl_mem_free (mail_subject_last);
 +      mhl_mem_free (mail_to_last);
        mail_cc_last = tmail_cc;
        mail_subject_last = tmail_subject;
        mail_to_last = tmail_to;
@@@ -2938,10 -2939,10 +2939,10 @@@ edit_complete_word_cmd (WEdit *edit
        }
      }
  
 -    g_free (match_expr);
 +    mhl_mem_free (match_expr);
      /* release memory before return */
      for (i = 0; i < num_compl; i++)
 -      g_free (compl[i].text);
 +      mhl_mem_free (compl[i].text);
  
      /* restore search parameters */
      edit_set_search_parameters (old_rs, old_rb, old_rr, old_rw, old_rc);
diff --combined edit/syntax.c
index 479f3c5,4aa62f8..5de3aaf
--- a/edit/syntax.c
+++ b/edit/syntax.c
@@@ -32,7 -32,6 +32,7 @@@
  #include <sys/stat.h>
  #include <stdlib.h>
  
 +#include <mhl/memory.h>
  #include <mhl/string.h>
  
  #include "../src/global.h"
@@@ -104,6 -103,8 +104,6 @@@ int option_syntax_highlighting = 1
  int option_auto_syntax = 1;
  char *option_syntax_type = NULL;
  
 -#define syntax_g_free(x) do {g_free(x); (x)=0;} while (0)
 -
  static gint
  mc_defines_destroy (gpointer key, gpointer value, gpointer data)
  {
@@@ -111,10 -112,10 +111,10 @@@
  
      (void) data;
  
 -    g_free (key);
 +    mhl_mem_free (key);
      while (*values)
 -      g_free (*values++);
 -    g_free (value);
 +      mhl_mem_free (*values++);
 +    mhl_mem_free (value);
  
      return FALSE;
  }
@@@ -471,7 -472,7 +471,7 @@@ static struct syntax_rule edit_get_rul
                break;
            }
            s = edit->syntax_marker->next;
 -          syntax_g_free (edit->syntax_marker);
 +          MHL_PTR_FREE (edit->syntax_marker);
            edit->syntax_marker = s;
        }
      }
@@@ -505,10 -506,14 +505,14 @@@ void edit_get_syntax_color (WEdit * edi
   */
  static int read_one_line (char **line, FILE * f)
  {
-     GString *p = g_string_new ("");
-     int c, r = 0;
+     char buffer[8192];
+     int index = 0, c, r = 0;
+     buffer[0] = 0;
  
      for (;;) {
+       if (index >= (sizeof(buffer)-1))
+           break;
+ 
        c = fgetc (f);
        if (c == EOF) {
            if (ferror (f)) {
@@@ -530,13 -535,11 +534,11 @@@
        if (c == '\n')
            break;
  
-       g_string_append_c (p, c);
+       buffer[index] = c;
+       index++;
      }
      if (r != 0) {
-       *line = p->str;
-       g_string_free (p, FALSE);
-     } else {
-       g_string_free (p, TRUE);
+       *line = mhl_str_dup(buffer);
      }
      return r;
  }
@@@ -666,19 -669,19 +668,19 @@@ static FILE *open_include_file (const c
  {
      FILE *f;
  
 -    syntax_g_free (error_file_name);
 -    error_file_name = g_strdup (filename);
 +    MHL_PTR_FREE (error_file_name);
 +    error_file_name = mhl_str_dup (filename);
      if (*filename == PATH_SEP)
        return fopen (filename, "r");
  
 -    g_free (error_file_name);
 +    mhl_mem_free (error_file_name);
      error_file_name = g_strconcat (home_dir, PATH_SEP_STR EDIT_DIR 
PATH_SEP_STR,
                                   filename, (char *) NULL);
      f = fopen (error_file_name, "r");
      if (f)
        return f;
  
 -    g_free (error_file_name);
 +    mhl_mem_free (error_file_name);
      error_file_name = g_strconcat (mc_home, PATH_SEP_STR "syntax" 
PATH_SEP_STR,
                                   filename, (char *) NULL);
      return fopen (error_file_name, "r");
@@@ -725,8 -728,8 +727,8 @@@ edit_read_syntax_rules (WEdit *edit, FI
                f = g;
                g = 0;
                line = save_line + 1;
 -              syntax_g_free (error_file_name);
 -              syntax_g_free (l);
 +              MHL_PTR_FREE (error_file_name);
 +              MHL_PTR_FREE (l);
                if (!read_one_line (&l, f))
                    break;
            } else {
@@@ -745,7 -748,7 +747,7 @@@
            g = f;
            f = open_include_file (args[1]);
            if (!f) {
 -              syntax_g_free (error_file_name);
 +              MHL_PTR_FREE (error_file_name);
                result = line;
                break;
            }
@@@ -773,8 -776,8 +775,8 @@@
                }
                a++;
                c = r[0] = g_malloc0 (sizeof (struct context_rule));
 -              c->left = g_strdup (" ");
 -              c->right = g_strdup (" ");
 +              c->left = mhl_str_dup (" ");
 +              c->right = mhl_str_dup (" ");
                num_contexts = 0;
            } else {
                /* Terminate previous context.  */
@@@ -787,14 -790,14 +789,14 @@@
                check_a;
                if (!strcmp (*a, "whole")) {
                    a++;
 -                  c->whole_word_chars_left = g_strdup (whole_left);
 -                  c->whole_word_chars_right = g_strdup (whole_right);
 +                  c->whole_word_chars_left = mhl_str_dup (whole_left);
 +                  c->whole_word_chars_right = mhl_str_dup (whole_right);
                } else if (!strcmp (*a, "wholeleft")) {
                    a++;
 -                  c->whole_word_chars_left = g_strdup (whole_left);
 +                  c->whole_word_chars_left = mhl_str_dup (whole_left);
                } else if (!strcmp (*a, "wholeright")) {
                    a++;
 -                  c->whole_word_chars_right = g_strdup (whole_right);
 +                  c->whole_word_chars_right = mhl_str_dup (whole_right);
                }
                check_a;
                if (!strcmp (*a, "linestart")) {
@@@ -802,14 -805,14 +804,14 @@@
                    c->line_start_left = 1;
                }
                check_a;
 -              c->left = g_strdup (*a++);
 +              c->left = mhl_str_dup (*a++);
                check_a;
                if (!strcmp (*a, "linestart")) {
                    a++;
                    c->line_start_right = 1;
                }
                check_a;
 -              c->right = g_strdup (*a++);
 +              c->right = mhl_str_dup (*a++);
                c->first_left = *c->left;
                c->first_right = *c->right;
            }
@@@ -826,7 -829,7 +828,7 @@@
            g_strlcpy (last_fg, fg ? fg : "", sizeof (last_fg));
            g_strlcpy (last_bg, bg ? bg : "", sizeof (last_bg));
            c->keyword[0]->color = this_try_alloc_color_pair (fg, bg);
 -          c->keyword[0]->keyword = g_strdup (" ");
 +          c->keyword[0]->keyword = mhl_str_dup (" ");
            check_not_a;
  
            alloc_words_per_context = MAX_WORDS_PER_CONTEXT;
@@@ -852,14 -855,14 +854,14 @@@
            k = r[num_contexts - 1]->keyword[num_words] = g_malloc0 (sizeof 
(struct key_word));
            if (!strcmp (*a, "whole")) {
                a++;
 -              k->whole_word_chars_left = g_strdup (whole_left);
 -              k->whole_word_chars_right = g_strdup (whole_right);
 +              k->whole_word_chars_left = mhl_str_dup (whole_left);
 +              k->whole_word_chars_right = mhl_str_dup (whole_right);
            } else if (!strcmp (*a, "wholeleft")) {
                a++;
 -              k->whole_word_chars_left = g_strdup (whole_left);
 +              k->whole_word_chars_left = mhl_str_dup (whole_left);
            } else if (!strcmp (*a, "wholeright")) {
                a++;
 -              k->whole_word_chars_right = g_strdup (whole_right);
 +              k->whole_word_chars_right = mhl_str_dup (whole_right);
            }
            check_a;
            if (!strcmp (*a, "linestart")) {
@@@ -870,7 -873,7 +872,7 @@@
            if (!strcmp (*a, "whole")) {
                break_a;
            }
 -          k->keyword = g_strdup (*a++);
 +          k->keyword = mhl_str_dup (*a++);
            k->first = *k->keyword;
            subst_defines (edit->defines, a, &args[1024]);
            fg = *a;
@@@ -910,22 -913,22 +912,22 @@@
            if ((argv = g_tree_lookup (edit->defines, key))) {
                mc_defines_destroy (NULL, argv, NULL);
            } else {
 -              key = g_strdup (key);
 +              key = mhl_str_dup (key);
            }
            argv = g_new (char *, argc - 1);
            g_tree_insert (edit->defines, key, argv);
            while (*a) {
 -              *argv++ = g_strdup (*a++);
 +              *argv++ = mhl_str_dup (*a++);
            };
            *argv = NULL;
        } else {                /* anything else is an error */
            break_a;
        }
        free_args (args);
 -      syntax_g_free (l);
 +      MHL_PTR_FREE (l);
      }
      free_args (args);
 -    syntax_g_free (l);
 +    MHL_PTR_FREE (l);
  
      /* Terminate context array.  */
      if (num_contexts > 0) {
@@@ -934,7 -937,7 +936,7 @@@
      }
  
      if (!edit->rules[0])
 -      syntax_g_free (edit->rules);
 +      MHL_PTR_FREE (edit->rules);
  
      if (result)
        return result;
@@@ -955,10 -958,10 +957,10 @@@
            for (j = 1; c->keyword[j]; j++)
                *p++ = c->keyword[j]->first;
            *p = '\0';
 -          c->keyword_first_chars = g_strdup (first_chars);
 +          c->keyword_first_chars = mhl_str_dup (first_chars);
        }
  
 -      g_free (first_chars);
 +      mhl_mem_free (first_chars);
      }
  
      return result;
@@@ -976,34 -979,34 +978,34 @@@ void edit_free_syntax_rules (WEdit * ed
        return;
  
      edit_get_rule (edit, -1);
 -    syntax_g_free (edit->syntax_type);
 +    MHL_PTR_FREE (edit->syntax_type);
      edit->syntax_type = 0;
  
      for (i = 0; edit->rules[i]; i++) {
        if (edit->rules[i]->keyword) {
            for (j = 0; edit->rules[i]->keyword[j]; j++) {
 -              syntax_g_free (edit->rules[i]->keyword[j]->keyword);
 -              syntax_g_free 
(edit->rules[i]->keyword[j]->whole_word_chars_left);
 -              syntax_g_free 
(edit->rules[i]->keyword[j]->whole_word_chars_right);
 -              syntax_g_free (edit->rules[i]->keyword[j]);
 +              MHL_PTR_FREE (edit->rules[i]->keyword[j]->keyword);
 +              MHL_PTR_FREE 
(edit->rules[i]->keyword[j]->whole_word_chars_left);
 +              MHL_PTR_FREE 
(edit->rules[i]->keyword[j]->whole_word_chars_right);
 +              MHL_PTR_FREE (edit->rules[i]->keyword[j]);
            }
        }
 -      syntax_g_free (edit->rules[i]->left);
 -      syntax_g_free (edit->rules[i]->right);
 -      syntax_g_free (edit->rules[i]->whole_word_chars_left);
 -      syntax_g_free (edit->rules[i]->whole_word_chars_right);
 -      syntax_g_free (edit->rules[i]->keyword);
 -      syntax_g_free (edit->rules[i]->keyword_first_chars);
 -      syntax_g_free (edit->rules[i]);
 +      MHL_PTR_FREE (edit->rules[i]->left);
 +      MHL_PTR_FREE (edit->rules[i]->right);
 +      MHL_PTR_FREE (edit->rules[i]->whole_word_chars_left);
 +      MHL_PTR_FREE (edit->rules[i]->whole_word_chars_right);
 +      MHL_PTR_FREE (edit->rules[i]->keyword);
 +      MHL_PTR_FREE (edit->rules[i]->keyword_first_chars);
 +      MHL_PTR_FREE (edit->rules[i]);
      }
  
      while (edit->syntax_marker) {
        struct _syntax_marker *s = edit->syntax_marker->next;
 -      syntax_g_free (edit->syntax_marker);
 +      MHL_PTR_FREE (edit->syntax_marker);
        edit->syntax_marker = s;
      }
  
 -    syntax_g_free (edit->rules);
 +    MHL_PTR_FREE (edit->rules);
  }
  
  /* returns -1 on file error, line number on error in file syntax */
@@@ -1028,7 -1031,7 +1030,7 @@@ edit_read_syntax_file (WEdit * edit, ch
      if (!f){
        lib_file = mhl_str_dir_plus_file (mc_home, "syntax" PATH_SEP_STR 
"Syntax");
        f = fopen (lib_file, "r");
 -      g_free (lib_file);
 +      mhl_mem_free (lib_file);
        if (!f)
            return -1;
      }
@@@ -1036,7 -1039,7 +1038,7 @@@
      args[0] = 0;
      for (;;) {
        line++;
 -      syntax_g_free (l);
 +      MHL_PTR_FREE (l);
        if (!read_one_line (&l, f))
            break;
        (void)get_args (l, args, 1023); /* Final NULL */
@@@ -1076,7 -1079,7 +1078,7 @@@
                else
                    abort ();
            }
 -          (*pnames)[count++] = g_strdup (args[2]);
 +          (*pnames)[count++] = mhl_str_dup (args[2]);
            (*pnames)[count] = NULL;
        } else if (type) {
  
@@@ -1117,8 -1120,9 +1119,8 @@@
                    else
                        result = line_error;
                } else {
 -                  syntax_g_free (edit->syntax_type);
 -                  edit->syntax_type = g_strdup (syntax_type);
 -
 +                  MHL_PTR_FREE (edit->syntax_type);
 +                  edit->syntax_type = mhl_str_dup (syntax_type);
  /* if there are no rules then turn off syntax highlighting for speed */
                    if (!g && !edit->rules[1])
                        if (!edit->rules[0]->keyword[1] && 
!edit->rules[0]->spelling) {
@@@ -1135,7 -1139,7 +1137,7 @@@
            }
        }
      }
 -    syntax_g_free (l);
 +    MHL_PTR_FREE (l);
      fclose (f);
      return result;
  }
@@@ -1200,9 -1204,9 +1202,9 @@@ edit_load_syntax (WEdit *edit, char ***
        message (D_ERROR, _(" Load syntax file "),
                 _(" Error in file %s on line %d "),
                 error_file_name ? error_file_name : f, r);
 -      syntax_g_free (error_file_name);
 +      MHL_PTR_FREE (error_file_name);
      } else {
        /* succeeded */
      }
 -    g_free (f);
 +    mhl_mem_free (f);
  }
diff --combined src/utilunix.c
index 5dfa18e,cd3c7cc..4cf70dc
--- a/src/utilunix.c
+++ b/src/utilunix.c
@@@ -41,10 -41,6 +41,10 @@@
  #endif
  #include <unistd.h>
  
 +#include <mhl/types.h>
 +#include <mhl/memory.h>
 +#include <mhl/string.h>
 +
  #include "global.h"
  #include "execute.h"
  #include "wtools.h"           /* message() */
@@@ -75,8 -71,8 +75,8 @@@ static char *i_cache_match (int id, int
  static void i_cache_add (int id, int_cache *cache, int size, char *text,
                         int *last)
  {
 -    g_free (cache [*last].string);
 -    cache [*last].string = g_strdup (text);
 +    mhl_mem_free (cache [*last].string);
 +    cache [*last].string = mhl_str_dup (text);
      cache [*last].index = id;
      *last = ((*last)+1) % size;
  }
@@@ -97,7 -93,7 +97,7 @@@ char *get_owner (int uid
        return pwd->pw_name;
      }
      else {
 -      g_snprintf (ibuf, sizeof (ibuf), "%d", uid);
 +      snprintf (ibuf, sizeof (ibuf), "%d", uid);
        return ibuf;
      }
  }
@@@ -117,7 -113,7 +117,7 @@@ char *get_group (int gid
        i_cache_add (gid, gid_cache, GID_CACHE_SIZE, grp->gr_name, &gid_last);
        return grp->gr_name;
      } else {
 -      g_snprintf (gbuf, sizeof (gbuf), "%d", gid);
 +      snprintf (gbuf, sizeof (gbuf), "%d", gid);
        return gbuf;
      }
  }
@@@ -190,7 -186,7 +190,7 @@@ tilde_expand (const char *directory
      char *name;
  
      if (*directory != '~')
 -      return g_strdup (directory);
 +      return mhl_str_dup (directory);
  
      p = directory + 1;
  
@@@ -206,13 -202,13 +206,13 @@@
            name = g_strndup (p, q - p);
            passwd = getpwnam (name);
            q++;
 -          g_free (name);
 +          mhl_mem_free (name);
        }
      }
  
      /* If we can't figure the user name, leave tilde unexpanded */
      if (!passwd)
 -      return g_strdup (directory);
 +      return mhl_str_dup (directory);
  
      return g_strconcat (passwd->pw_dir, PATH_SEP_STR, q, (char *) NULL);
  }
@@@ -258,10 -254,10 +258,10 @@@ mc_tmpdir (void
      pwd = getpwuid (getuid ());
  
      if (pwd)
 -      g_snprintf (buffer, sizeof (buffer), "%s/mc-%s", sys_tmp,
 +      snprintf (buffer, sizeof (buffer), "%s/mc-%s", sys_tmp,
                pwd->pw_name);
      else
 -      g_snprintf (buffer, sizeof (buffer), "%s/mc-%lu", sys_tmp,
 +      snprintf (buffer, sizeof (buffer), "%s/mc-%lu", sys_tmp,
                (unsigned long) getuid ());
  
      canonicalize_pathname (buffer);
@@@ -296,7 -292,7 +296,7 @@@
        /* Test if sys_tmp is suitable for temporary files */
        fallback_prefix = g_strdup_printf ("%s/mctest", sys_tmp);
        test_fd = mc_mkstemps (&test_fn, fallback_prefix, NULL);
 -      g_free (fallback_prefix);
 +      mhl_mem_free (fallback_prefix);
        if (test_fd != -1) {
            close (test_fd);
            test_fd = open (test_fn, O_RDONLY);
@@@ -310,11 -306,11 +310,11 @@@
        if (fallback_ok) {
            fprintf (stderr, _("Temporary files will be created in %s\n"),
                     sys_tmp);
 -          g_snprintf (buffer, sizeof (buffer), "%s", sys_tmp);
 +          snprintf (buffer, sizeof (buffer), "%s", sys_tmp);
            error = NULL;
        } else {
            fprintf (stderr, _("Temporary files will not be created\n"));
 -          g_snprintf (buffer, sizeof (buffer), "%s", "/dev/null/");
 +          snprintf (buffer, sizeof (buffer), "%s", "/dev/null/");
        }
  
        fprintf (stderr, "%s\n", _("Press any key to continue..."));
@@@ -430,7 -426,7 +430,7 @@@ canonicalize_pathname (char *path
        if (p[0] == PATH_SEP && p[1] == PATH_SEP) {
            s = p + 1;
            while (*(++s) == PATH_SEP);
 -          strcpy (p + 1, s);
 +          mhl_strmove (p + 1, s);
        }
        p++;
      }
@@@ -439,7 -435,7 +439,7 @@@
      p = lpath;
      while (*p) {
        if (p[0] == PATH_SEP && p[1] == '.' && p[2] == PATH_SEP)
 -          strcpy (p, p + 2);
 +          mhl_strmove (p, p + 2);
        else
            p++;
      }
@@@ -455,7 -451,7 +455,7 @@@
            lpath[1] = 0;
            return;
        } else {
 -          strcpy (lpath, lpath + 2);
 +          mhl_strmove (lpath, lpath + 2);
        }
      }
  
@@@ -501,10 -497,10 +501,10 @@@
        if (p[3] != 0) {
            if (s == lpath && *s == PATH_SEP) {
                /* "/../foo" -> "/foo" */
 -              strcpy (s + 1, p + 4);
 +              mhl_strmove (s + 1, p + 4);
            } else {
                /* "token/../foo" -> "foo" */
 -              strcpy (s, p + 4);
 +              mhl_strmove (s, p + 4);
            }
            p = (s > lpath) ? s - 1 : s;
            continue;
@@@ -590,7 -586,7 +590,7 @@@ putenv (char *string
                       size * sizeof (char *));
        new_environ[size] = (char *) string;
        new_environ[size + 1] = NULL;
--      g_free ((void *) last_environ);
++      mhl_mem_free ((void *) last_environ);
        last_environ = new_environ;
        __environ = new_environ;
      }
@@@ -723,7 -719,7 +723,7 @@@ mc_realpath (const char *path, char res
  /* Return the index of the permissions triplet */
  int
  get_user_permissions (struct stat *st) {
 -    static gboolean initialized = FALSE;
 +    static bool initialized = FALSE;
      static gid_t *groups;
      static int ngroups;
      static uid_t uid;

-- 
Midnight Commander Development
_______________________________________________
Mc-devel mailing list
http://mail.gnome.org/mailman/listinfo/mc-devel

Reply via email to