1*f3de9d7dShelg /* $OpenBSD: fuse-opt-match.c,v 1.5 2018/07/20 12:05:08 helg Exp $ */
24cd66a05Ssyl /*
360376174Shelg * Copyright (c) 2017 Helg Bredow <xx404@msn.com>
44cd66a05Ssyl *
54cd66a05Ssyl * Permission to use, copy, modify, and distribute this software for any
64cd66a05Ssyl * purpose with or without fee is hereby granted, provided that the above
74cd66a05Ssyl * copyright notice and this permission notice appear in all copies.
84cd66a05Ssyl *
94cd66a05Ssyl * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
104cd66a05Ssyl * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
114cd66a05Ssyl * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
124cd66a05Ssyl * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
134cd66a05Ssyl * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
144cd66a05Ssyl * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
154cd66a05Ssyl * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
164cd66a05Ssyl */
174cd66a05Ssyl
1860376174Shelg #include <assert.h>
1960376174Shelg #include <stddef.h>
204cd66a05Ssyl #include <fuse_opt.h>
214cd66a05Ssyl
2260376174Shelg static const struct fuse_opt emptyopts[] = {
234cd66a05Ssyl FUSE_OPT_END
244cd66a05Ssyl };
254cd66a05Ssyl
2660376174Shelg static const struct fuse_opt opts[] = {
2760376174Shelg FUSE_OPT_KEY("-p ", FUSE_OPT_KEY_DISCARD),
2860376174Shelg FUSE_OPT_KEY("-C", FUSE_OPT_KEY_DISCARD),
2960376174Shelg FUSE_OPT_KEY("-V", FUSE_OPT_KEY_DISCARD),
3060376174Shelg FUSE_OPT_KEY("--version", FUSE_OPT_KEY_DISCARD),
3160376174Shelg FUSE_OPT_KEY("-h", FUSE_OPT_KEY_DISCARD),
3260376174Shelg FUSE_OPT_KEY("const=false", FUSE_OPT_KEY_DISCARD),
3360376174Shelg FUSE_OPT_KEY("cache=no", FUSE_OPT_KEY_DISCARD),
3460376174Shelg FUSE_OPT_KEY("cache=yes", FUSE_OPT_KEY_DISCARD),
3560376174Shelg FUSE_OPT_KEY("debug", FUSE_OPT_KEY_DISCARD),
3660376174Shelg FUSE_OPT_KEY("ro", FUSE_OPT_KEY_DISCARD),
3760376174Shelg FUSE_OPT_KEY("--foo=", FUSE_OPT_KEY_DISCARD),
3860376174Shelg FUSE_OPT_KEY("bars=%s", FUSE_OPT_KEY_DISCARD),
3960376174Shelg FUSE_OPT_KEY("--fool=%lu", FUSE_OPT_KEY_DISCARD),
4060376174Shelg FUSE_OPT_KEY("-x ", FUSE_OPT_KEY_DISCARD),
4160376174Shelg FUSE_OPT_KEY("-n %u", FUSE_OPT_KEY_DISCARD),
4260376174Shelg FUSE_OPT_KEY("-P", FUSE_OPT_KEY_DISCARD),
434cd66a05Ssyl FUSE_OPT_END
444cd66a05Ssyl };
454cd66a05Ssyl
464cd66a05Ssyl int
main(void)4760376174Shelg main(void)
484cd66a05Ssyl {
4960376174Shelg assert(fuse_opt_match(emptyopts, "debug") == 0);
5060376174Shelg
5160376174Shelg assert(fuse_opt_match(opts, NULL) == 0);
5260376174Shelg assert(fuse_opt_match(opts, "-p ") == 1);
5360376174Shelg assert(fuse_opt_match(opts, "-C") == 1);
5460376174Shelg assert(fuse_opt_match(opts, "-c") == 0);
5560376174Shelg assert(fuse_opt_match(opts, "-V") == 1);
5660376174Shelg assert(fuse_opt_match(opts, "--version") == 1);
5760376174Shelg assert(fuse_opt_match(opts, "-h") == 1);
5860376174Shelg assert(fuse_opt_match(opts, "const=false") == 1);
5960376174Shelg assert(fuse_opt_match(opts, "const=falsefalse") == 0);
6060376174Shelg assert(fuse_opt_match(opts, "cache=no") == 1);
6160376174Shelg assert(fuse_opt_match(opts, "cache=yes") == 1);
6260376174Shelg assert(fuse_opt_match(opts, "debug") == 1);
6360376174Shelg assert(fuse_opt_match(opts, "ro") == 1);
6460376174Shelg assert(fuse_opt_match(opts, "ro_fallback") == 0);
6560376174Shelg assert(fuse_opt_match(opts, "--foo=bar") == 1);
6660376174Shelg assert(fuse_opt_match(opts, "bars=foo") == 1);
6760376174Shelg assert(fuse_opt_match(opts, "--fool=bool") == 1);
6860376174Shelg assert(fuse_opt_match(opts, "--fool=1") == 1);
6960376174Shelg assert(fuse_opt_match(opts, "-x bar") == 1);
7060376174Shelg assert(fuse_opt_match(opts, "-xbar") == 1);
7160376174Shelg assert(fuse_opt_match(opts, "-n 100") == 1);
7260376174Shelg assert(fuse_opt_match(opts, "-n100") == 1);
7360376174Shelg assert(fuse_opt_match(opts, "-P") == 1);
7460376174Shelg
754cd66a05Ssyl return (0);
764cd66a05Ssyl }
77