1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-03 08:13:14 +02:00

Fixed bug with alias when there's no $x and user args after alias command

This commit is contained in:
Sebastien Helleu
2006-10-12 07:51:55 +00:00
parent 5d70f20c27
commit 14751f721d
2 changed files with 26 additions and 4 deletions
+13 -2
View File
@@ -223,12 +223,13 @@ char *
alias_replace_args (char *alias_args, char *user_args)
{
char **argv, *start, *pos, *res;
int argc, length_res;
int argc, length_res, args_count;
argv = explode_string (user_args, " ", 0, &argc);
res = NULL;
length_res = 0;
args_count = 0;
start = alias_args;
pos = start;
while (pos && pos[0])
@@ -248,6 +249,7 @@ alias_replace_args (char *alias_args, char *user_args)
{
if (pos[1] == '*')
{
args_count++;
pos[0] = '\0';
alias_add_word (&res, &length_res, start);
alias_add_word (&res, &length_res, user_args);
@@ -259,6 +261,7 @@ alias_replace_args (char *alias_args, char *user_args)
{
if ((pos[1] >= '1') && (pos[1] <= '9'))
{
args_count++;
pos[0] = '\0';
alias_add_word (&res, &length_res, start);
if (pos[1] - '0' <= argc)
@@ -275,11 +278,19 @@ alias_replace_args (char *alias_args, char *user_args)
pos++;
}
}
if (start < pos)
alias_add_word (&res, &length_res, start);
if ((args_count == 0) && user_args && user_args[0])
{
alias_add_word (&res, &length_res, " ");
alias_add_word (&res, &length_res, user_args);
}
if (argv)
free_exploded_string (argv);
return res;
}
+13 -2
View File
@@ -223,12 +223,13 @@ char *
alias_replace_args (char *alias_args, char *user_args)
{
char **argv, *start, *pos, *res;
int argc, length_res;
int argc, length_res, args_count;
argv = explode_string (user_args, " ", 0, &argc);
res = NULL;
length_res = 0;
args_count = 0;
start = alias_args;
pos = start;
while (pos && pos[0])
@@ -248,6 +249,7 @@ alias_replace_args (char *alias_args, char *user_args)
{
if (pos[1] == '*')
{
args_count++;
pos[0] = '\0';
alias_add_word (&res, &length_res, start);
alias_add_word (&res, &length_res, user_args);
@@ -259,6 +261,7 @@ alias_replace_args (char *alias_args, char *user_args)
{
if ((pos[1] >= '1') && (pos[1] <= '9'))
{
args_count++;
pos[0] = '\0';
alias_add_word (&res, &length_res, start);
if (pos[1] - '0' <= argc)
@@ -275,11 +278,19 @@ alias_replace_args (char *alias_args, char *user_args)
pos++;
}
}
if (start < pos)
alias_add_word (&res, &length_res, start);
if ((args_count == 0) && user_args && user_args[0])
{
alias_add_word (&res, &length_res, " ");
alias_add_word (&res, &length_res, user_args);
}
if (argv)
free_exploded_string (argv);
return res;
}