updated: [9b9cab5] manually merged 234_remove_g_string

Enrico Weigelt, metux IT service weigelt at metux.de
Mon Feb 2 21:42:44 UTC 2009


The following commit has been merged in the master branch:
commit 9b9cab58749217101ab16504a77efb301812cfbf
Merge: 8b38cf44daee3b0f92591baa97f36d722be99280 f235b1976ee6dd7aa2be7e75c870784c424e3de3
Author: Enrico Weigelt, metux IT service <weigelt at 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 <weigelt at metux.de>
 +2009-02-01 Enrico Weigelt, metux ITS <weigelt at 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 <weigelt at metux.de>, Patrick Winnertz <winnie at debian.org>, Slava Zanko <slavazanko at gmail.com>, Sergei Trofimovich  <slyfox at 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 <weigelt at 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 <weigelt at metux.de>
 +
 +	* replaced calls to g_free() by mhl_mem_free()
  
  2009-01-29 Mikhail S. Pobolovets <styx.mp at 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 <weigelt at metux.de>
 +2009-01-27 Enrico Weigelt, metux ITS <weigelt at 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  <slyfox at 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 <weigelt at metux.de>
 +2009-01-25 Enrico Weigelt, metux ITS <weigelt at 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 <weigelt at metux.de>
 +2009-01-24 Enrico Weigelt, metux ITS <weigelt at 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 <winnie at 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 <weigelt at metux.de>
 -
 -	* syntax/Syntax, syntax/nemerle.syntax: Added syntax rules 
 -	  for Nemerle source files
 -
  2009-01-19 Patrick Winnertz <winnie at 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 <weigelt at metux.de>
 +2009-01-16 Enrico Weigelt, metux ITS <weigelt at 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 <weigelt at 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



More information about the mc-devel mailing list