Command line interface now works.
This commit is contained in:
parent
ea9bb932a3
commit
ffb59d243a
4 changed files with 7 additions and 2 deletions
|
@ -58,7 +58,7 @@ CF_GRAMMAR
|
||||||
/* Basic config file structure */
|
/* Basic config file structure */
|
||||||
|
|
||||||
config: conf_entries END { return 0; }
|
config: conf_entries END { return 0; }
|
||||||
| CLI_MARKER cli_cmd END { return 0; }
|
| CLI_MARKER cli_cmd { return 0; }
|
||||||
;
|
;
|
||||||
|
|
||||||
conf_entries:
|
conf_entries:
|
||||||
|
|
|
@ -42,7 +42,8 @@ m4_define(CF_ADDTO, `m4_define([[CF_rule_$1]],m4_ifdef([[CF_rule_$1]],CF_rule_$1
|
||||||
m4_define(CF_CLI, `m4_define([[CF_cmd]], cmd_[[]]m4_translit($1, [[ ]], _))DNL
|
m4_define(CF_CLI, `m4_define([[CF_cmd]], cmd_[[]]m4_translit($1, [[ ]], _))DNL
|
||||||
m4_divert(2)CF_KEYWORDS(m4_translit($1, [[ ]], [[,]]))
|
m4_divert(2)CF_KEYWORDS(m4_translit($1, [[ ]], [[,]]))
|
||||||
m4_divert(3)CF_ADDTO(cli_cmd, CF_cmd)
|
m4_divert(3)CF_ADDTO(cli_cmd, CF_cmd)
|
||||||
CF_cmd: $1 ')
|
CF_cmd: $1 $2 END')
|
||||||
|
m4_define(CF_CLI_HELP, `')
|
||||||
|
|
||||||
# ENUM declarations are ignored
|
# ENUM declarations are ignored
|
||||||
m4_define(CF_ENUM, `')
|
m4_define(CF_ENUM, `')
|
||||||
|
|
|
@ -171,6 +171,7 @@ cli_new(void *priv)
|
||||||
c->event->data = c;
|
c->event->data = c;
|
||||||
c->tx_buf = c->tx_pos = c->tx_write = NULL;
|
c->tx_buf = c->tx_pos = c->tx_write = NULL;
|
||||||
c->cont = cli_hello;
|
c->cont = cli_hello;
|
||||||
|
c->cleanup = NULL;
|
||||||
c->last_reply = 0;
|
c->last_reply = 0;
|
||||||
c->parser_pool = lp_new(c->pool, 4096);
|
c->parser_pool = lp_new(c->pool, 4096);
|
||||||
ev_schedule(c->event);
|
ev_schedule(c->event);
|
||||||
|
@ -194,6 +195,8 @@ cli_written(cli *c)
|
||||||
void
|
void
|
||||||
cli_free(cli *c)
|
cli_free(cli *c)
|
||||||
{
|
{
|
||||||
|
if (c->cleanup)
|
||||||
|
c->cleanup(c);
|
||||||
rfree(c->pool);
|
rfree(c->pool);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ typedef struct cli {
|
||||||
struct cli_out *tx_buf, *tx_pos, *tx_write;
|
struct cli_out *tx_buf, *tx_pos, *tx_write;
|
||||||
event *event;
|
event *event;
|
||||||
void (*cont)(struct cli *c);
|
void (*cont)(struct cli *c);
|
||||||
|
void (*cleanup)(struct cli *c);
|
||||||
void *rover; /* Private to continuation routine */
|
void *rover; /* Private to continuation routine */
|
||||||
int last_reply;
|
int last_reply;
|
||||||
struct linpool *parser_pool; /* Pool used during parsing */
|
struct linpool *parser_pool; /* Pool used during parsing */
|
||||||
|
|
Loading…
Reference in a new issue