uint8_t parse_expect(ParseState* ps, token_t tok) { if (parse_accept(ps, tok)) return 1; ps->error = ERR_SYNTAX; return 0; }
/* * Parse all header fields that will be needed * to handle a SUBSCRIBE request */ static int parse_hfs(struct sip_msg* _m, int accept_header_required) { if ( (parse_headers(_m, HDR_FROM | HDR_EVENT | HDR_EXPIRES | HDR_ACCEPT, 0) == -1) || (_m->from==0)||(_m->event==0)||(_m->expires==0) || (_m->accept==0) ) { paerrno = PA_PARSE_ERR; LOG(L_ERR, "parse_hfs(): Error while parsing headers\n"); return -1; } if (parse_from_header(_m) < 0) { paerrno = PA_FROM_ERR; LOG(L_ERR, "parse_hfs(): From malformed or missing\n"); return -6; } if (_m->event) { if (parse_event(_m->event) < 0) { paerrno = PA_EVENT_PARSE; LOG(L_ERR, "parse_hfs(): Error while parsing Event header field\n"); return -8; } } if (_m->expires) { if (parse_expires(_m->expires) < 0) { paerrno = PA_EXPIRES_PARSE; LOG(L_ERR, "parse_hfs(): Error while parsing Expires header field\n"); return -9; } } if (_m->accept) { if (parse_accept(_m->accept, &acc) < 0) { paerrno = PA_ACCEPT_PARSE; LOG(L_ERR, "parse_hfs(): Error while parsing Accept header field\n"); return -10; } } else if (accept_header_required) { LOG(L_ERR, "no accept header\n"); acc = DOC_XPIDF; } return 0; }
/* * -l <length> / --length <length> / --length=<length> * -a string/@func / --accept string/@func / --accept=string/@func * -e string/@func / --exclude string/@func / --exclude=string/@func * -h / --help * -v / --version * * Examples: * ./pwdgen -l 8 --accept @isgraph --exclude=xyz */ int main(int argc, char *argv[]) { int i; const char *param; for (i = 1; i < argc; ++i) { if (arg_is_length_no_param(argv[i])) { ++i; if (i == argc) { error_length_no_param(argv[i - 1]); } param = argv[i]; parse_length(param); } else if (arg_is_length_param(argv[i])) { if (argv[i][strlen(arg_length_param)] == '\0') { error_length_no_param(argv[i]); } param = &argv[i][strlen(arg_length_param)]; parse_length(param); } else if (arg_is_accept_no_param(argv[i])) { ++i; if (i == argc) { error_accept_no_param(argv[i - 1]); } param = argv[i]; parse_accept(param); } else if (arg_is_accept_param(argv[i])) { if (argv[i][strlen(arg_accept_param)] == '\0') { error_accept_no_param(argv[i]); } param = &argv[i][strlen(arg_accept_param)]; parse_accept(param); } else if (arg_is_exclude_no_param(argv[i])) { ++i; if (i == argc) { error_exclude_no_param(argv[i - 1]); } param = argv[i]; parse_exclude(param); } else if (arg_is_exclude_param(argv[i])) { if (argv[i][strlen(arg_exclude_param)] == '\0') { error_exclude_no_param(argv[i]); } param = &argv[i][strlen(arg_exclude_param)]; parse_exclude(param); } else { error_invalid_arg(argv[i]); } } if (n_accept_funcs == 0 && n_exclude_funcs == 0 && n_accept_chars == 0 && n_exclude_chars == 0) { parse_accept("@isgraph"); } rndfd = open("/dev/urandom", O_RDONLY); if (rndfd == -1) { perror("/dev/urandom"); exit(EXIT_FAILURE); } pwdgen_main(); close(rndfd); return 0; }