diff options
Diffstat (limited to 'mgmt_parser.rl')
-rw-r--r-- | mgmt_parser.rl | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/mgmt_parser.rl b/mgmt_parser.rl index e183cc3..d8342a1 100644 --- a/mgmt_parser.rl +++ b/mgmt_parser.rl @@ -11,15 +11,15 @@ */ static void set_prio_fsck(struct mog_mgmt *mgmt) { - if (mgmt->svc->mgmt_fd >= 0) + if (mgmt->svc->mgmt_mfd) mgmt->prio = MOG_PRIO_FSCK; } %%{ machine mgmt_parser; + include path_parser "path_parser.rl"; eor = '\r'?'\n'; - path = "/"[a-zA-Z0-9/\.\-]*; reason = ' '("fsck" @ { set_prio_fsck(mgmt); } | [a-zA-Z0-9_]+); invalid_line := ( [ \t]* @@ -32,7 +32,7 @@ static void set_prio_fsck(struct mog_mgmt *mgmt) fbreak; }; size = ( - "size "(path) > { mgmt->mark[0] = fpc - buf; } + "size "(mog_path) > { mgmt->mark[0] = fpc - buf; } eor > { mgmt->mark[1] = fpc - buf; } @ { mog_mgmt_fn_size(mgmt, buf); fbreak; } ); @@ -43,7 +43,7 @@ static void set_prio_fsck(struct mog_mgmt *mgmt) "SHA-1" @ { mgmt->alg = GC_SHA1; } ) " " - (path) > { mgmt->mark[0] = fpc - buf; } + (mog_path) > { mgmt->mark[0] = fpc - buf; } ( reason? eor) > { mgmt->mark[1] = fpc - buf; } @ { mog_mgmt_fn_digest(mgmt, buf); fbreak; } ); @@ -99,7 +99,8 @@ mog_mgmt_parse(struct mog_mgmt *mgmt, char *buf, size_t len) char *p, *pe, *eof = NULL; int cs = mgmt->cs; int really_done = 0; - size_t off = mgmt->offset; + size_t off = mgmt->buf_off; + uint32_t *mog_devid = &mgmt->mog_devid; assert(mgmt->wbuf == NULL && "unwritten data in buffer"); assert(off <= len && "mgmt offset past end of buffer"); @@ -116,13 +117,13 @@ mog_mgmt_parse(struct mog_mgmt *mgmt, char *buf, size_t len) cs = mgmt_parser_first_final; mgmt->cs = cs; - mgmt->offset = p - buf; + mgmt->buf_off = p - buf; if (cs == mgmt_parser_error) return MOG_PARSER_ERROR; assert(p <= pe && "buffer overflow after mgmt parse"); - assert(mgmt->offset <= len && "offset longer than len"); + assert(mgmt->buf_off <= len && "offset longer than len"); if (mgmt->cs == mgmt_parser_first_final) return MOG_PARSER_DONE; return MOG_PARSER_CONTINUE; |