(enter): use GString instead of hand-made memory (re)allocation.

Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
This commit is contained in:
Andrew Borodin 2012-11-02 13:44:47 +04:00
parent 1d3132c08f
commit 7c415f2ec5

View File

@ -258,8 +258,8 @@ enter (WInput * lc_cmdline)
}
else
{
char *command, *s;
size_t i, j, cmd_len;
GString *command;
size_t i;
if (!vfs_current_is_local ())
{
@ -275,30 +275,25 @@ enter (WInput * lc_cmdline)
return MSG_NOT_HANDLED;
}
#endif
cmd_len = strlen (cmd);
command = g_malloc (cmd_len + 1);
command[0] = 0;
for (i = j = 0; i < cmd_len; i++)
command = g_string_sized_new (32);
for (i = 0; cmd[i] != '\0'; i++)
{
if (cmd[i] == '%')
{
i++;
s = expand_format (NULL, cmd[i], TRUE);
command = g_realloc (command, j + strlen (s) + cmd_len - i + 1);
strcpy (command + j, s);
g_free (s);
j = strlen (command);
}
if (cmd[i] != '%')
g_string_append_c (command, cmd[i]);
else
{
command[j] = cmd[i];
j++;
char *s;
s = expand_format (NULL, cmd[++i], TRUE);
g_string_append (command, s);
g_free (s);
}
command[j] = 0;
}
input_clean (lc_cmdline);
shell_execute (command, 0);
g_free (command);
shell_execute (command->str, 0);
g_string_free (command, TRUE);
#ifdef ENABLE_SUBSHELL
if ((quit & SUBSHELL_EXIT) != 0)