Command line interface now works.

This commit is contained in:
Martin Mares 1999-11-17 12:00:21 +00:00
parent ea9bb932a3
commit ffb59d243a
4 changed files with 7 additions and 2 deletions

View file

@ -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:

View file

@ -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, `')

View file

@ -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);
} }

View file

@ -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 */