int main(int argc, char * const *argv) { int i; if (argc != 2) { fprintf(stderr, "vsl_glob_test <tagname/glob>\n"); exit(1); } i = VSL_Name2Tag(argv[1], -1); printf("VSL_Name2Tag returns %d", i); if (i >= 0) printf(" (%s)", VSL_tags[i]); printf("\n"); printf("VSL_Glob2Tags:\n"); i = VSL_Glob2Tags(argv[1], -1, cb, NULL); printf("VSL_Glob2Tags returns %d\n", i); printf("VSL_List2Tags:\n"); i = VSL_List2Tags(argv[1], -1, cb, NULL); printf("VSL_List2Tags returns %d\n", i); return (0); }
static int vsl_IX_arg(struct VSL_data *vsl, int opt, const char *arg) { int i, l, off; const char *b, *e, *err; vre_t *vre; struct vslf *vslf; struct vbitmap *tags = NULL; CHECK_OBJ_NOTNULL(vsl, VSL_MAGIC); vsl->flags |= F_SEEN_ixIX; b = arg; e = strchr(b, ':'); if (e) { tags = vbit_init(SLT__MAX); AN(tags); l = e - b; i = VSL_List2Tags(b, l, vsl_vbm_bitset, tags); if (i < 0) vbit_destroy(tags); if (i == -1) return (vsl_diag(vsl, "-%c: \"%*.*s\" matches zero tags", (char)opt, l, l, b)); else if (i == -2) return (vsl_diag(vsl, "-%c: \"%*.*s\" is ambiguous", (char)opt, l, l, b)); else if (i <= -3) return (vsl_diag(vsl, "-%c: Syntax error in \"%*.*s\"", (char)opt, l, l, b)); b = e + 1; } vre = VRE_compile(b, vsl->C_opt ? VRE_CASELESS : 0, &err, &off); if (vre == NULL) { if (tags) vbit_destroy(tags); return (vsl_diag(vsl, "-%c: Regex error at position %d (%s)\n", (char)opt, off, err)); } ALLOC_OBJ(vslf, VSLF_MAGIC); AN(vslf); vslf->tags = tags; vslf->vre = vre; if (opt == 'I') VTAILQ_INSERT_TAIL(&vsl->vslf_select, vslf, list); else { assert(opt == 'X'); VTAILQ_INSERT_TAIL(&vsl->vslf_suppress, vslf, list); } return (1); }
static int vsl_ix_arg(struct VSL_data *vsl, int opt, const char *arg) { int i; CHECK_OBJ_NOTNULL(vsl, VSL_MAGIC); vsl->flags |= F_SEEN_ixIX; i = VSL_List2Tags(arg, -1, opt == 'x' ? vsl_vbm_bitset : vsl_vbm_bitclr, vsl->vbm_supress); if (i == -1) return (vsl_diag(vsl, "-%c: \"%s\" matches zero tags", (char)opt, arg)); else if (i == -2) return (vsl_diag(vsl, "-%c: \"%s\" is ambiguous", (char)opt, arg)); else if (i == -3) return (vsl_diag(vsl, "-%c: Syntax error in \"%s\"", (char)opt, arg)); return (1); }