option.c: fixed warnings
[k8jam.git] / src / command.c
blob6d64d279ffa4b60a0302a9194c8b444ae3f5effd
1 /*
2 * Copyright 1993, 1995 Christopher Seiwald.
3 * This file is part of Jam - see jam.c for Copyright information.
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, version 3 of the License ONLY.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #include "jam.h"
19 #include "lists.h"
20 #include "parse.h"
21 #include "variable.h"
22 #include "rules.h"
23 #include "dstrings.h"
25 #include "command.h"
29 * cmd_new() - return a new CMD or 0 if too many args
31 CMD *cmd_new (RULE *rule, LIST *targets, LIST *sources, LIST *shell, int maxline) {
32 CMD *cmd = (CMD *)malloc(sizeof(CMD));
33 dstr_init(&cmd->buf);
34 cmd->rule = rule;
35 cmd->shell = shell;
36 cmd->next = 0;
37 lol_init(&cmd->args);
38 lol_add(&cmd->args, targets);
39 lol_add(&cmd->args, sources);
40 /* we don't free targets/sources/shell if bailing */
41 if (var_string(rule->actions, &cmd->buf, &cmd->args, ' ') < 0) { cmd_free(cmd); return NULL; }
42 return cmd;
47 * cmd_free() - free a CMD
49 void cmd_free (CMD *cmd) {
50 dstr_done(&cmd->buf);
51 lol_free(&cmd->args);
52 list_free(cmd->shell);
53 free(cmd);