83 |
char **argv = NULL; |
char **argv = NULL; |
84 |
int status = 0; |
int status = 0; |
85 |
function_t *command; |
function_t *command; |
86 |
|
int exec = 1; |
87 |
char *cmd = NULL; |
char *cmd = NULL; |
88 |
va_list ap; |
va_list ap; |
89 |
static const char *delim = "="; |
static const char *delim = "="; |
96 |
|
|
97 |
if (cmd) |
if (cmd) |
98 |
{ |
{ |
|
struct mail_command_entry entry; |
|
|
|
|
99 |
/* Ignore comments */ |
/* Ignore comments */ |
100 |
if (cmd[0] == '#') { |
if (cmd[0] == '#') |
101 |
free (cmd); |
{ |
102 |
return 0; |
free (cmd); |
103 |
} |
return 0; |
104 |
|
} |
105 |
|
|
106 |
/* Hitting return i.e. no command, is equivalent to next |
/* Hitting return i.e. no command, is equivalent to next |
107 |
according to the POSIX spec. */ |
according to the POSIX spec. */ |
108 |
if (cmd[0] == '\0') { |
if (cmd[0] == '\0') |
109 |
free (cmd); |
{ |
110 |
cmd = strdup ("next"); |
free (cmd); |
111 |
} |
cmd = strdup ("next"); |
112 |
|
} |
113 |
|
|
114 |
if (argcv_get (cmd, delim, NULL, &argc, &argv) == 0) |
if (argcv_get (cmd, delim, NULL, &argc, &argv) == 0) |
115 |
{ |
{ |
116 |
|
struct mail_command_entry entry; |
117 |
|
|
118 |
entry = util_find_entry (mail_command_table, argv[0]); |
entry = util_find_entry (mail_command_table, argv[0]); |
119 |
|
command = entry.func; |
120 |
/* Make sure we are not in any if/else */ |
/* Make sure we are not in any if/else */ |
121 |
if (! (if_cond () == 0 && (entry.flags & EF_FLOW) == 0)) |
exec = !(if_cond () == 0 && (entry.flags & EF_FLOW) == 0); |
|
command = entry.func; |
|
122 |
} |
} |
123 |
free (cmd); |
free (cmd); |
124 |
} |
} |
126 |
command = util_command_get ("quit"); |
command = util_command_get ("quit"); |
127 |
|
|
128 |
if (command != NULL) |
if (command != NULL) |
129 |
status = command (argc, argv); |
{ |
130 |
|
if (exec) |
131 |
|
status = command (argc, argv); |
132 |
|
} |
133 |
else |
else |
134 |
{ |
{ |
135 |
util_error("Unknown command: %s", argv[0]); |
util_error ("Unknown command: %s", argv[0]); |
136 |
status = 1; |
status = 1; |
137 |
} |
} |
138 |
|
|