1 /* $OpenBSD: fuse-opt-match.c,v 1.5 2018/07/20 12:05:08 helg Exp $ */ 2 /* 3 * Copyright (c) 2017 Helg Bredow <xx404@msn.com> 4 * 5 * Permission to use, copy, modify, and distribute this software for any 6 * purpose with or without fee is hereby granted, provided that the above 7 * copyright notice and this permission notice appear in all copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 */ 17 18 #include <assert.h> 19 #include <stddef.h> 20 #include <fuse_opt.h> 21 22 static const struct fuse_opt emptyopts[] = { 23 FUSE_OPT_END 24 }; 25 26 static const struct fuse_opt opts[] = { 27 FUSE_OPT_KEY("-p ", FUSE_OPT_KEY_DISCARD), 28 FUSE_OPT_KEY("-C", FUSE_OPT_KEY_DISCARD), 29 FUSE_OPT_KEY("-V", FUSE_OPT_KEY_DISCARD), 30 FUSE_OPT_KEY("--version", FUSE_OPT_KEY_DISCARD), 31 FUSE_OPT_KEY("-h", FUSE_OPT_KEY_DISCARD), 32 FUSE_OPT_KEY("const=false", FUSE_OPT_KEY_DISCARD), 33 FUSE_OPT_KEY("cache=no", FUSE_OPT_KEY_DISCARD), 34 FUSE_OPT_KEY("cache=yes", FUSE_OPT_KEY_DISCARD), 35 FUSE_OPT_KEY("debug", FUSE_OPT_KEY_DISCARD), 36 FUSE_OPT_KEY("ro", FUSE_OPT_KEY_DISCARD), 37 FUSE_OPT_KEY("--foo=", FUSE_OPT_KEY_DISCARD), 38 FUSE_OPT_KEY("bars=%s", FUSE_OPT_KEY_DISCARD), 39 FUSE_OPT_KEY("--fool=%lu", FUSE_OPT_KEY_DISCARD), 40 FUSE_OPT_KEY("-x ", FUSE_OPT_KEY_DISCARD), 41 FUSE_OPT_KEY("-n %u", FUSE_OPT_KEY_DISCARD), 42 FUSE_OPT_KEY("-P", FUSE_OPT_KEY_DISCARD), 43 FUSE_OPT_END 44 }; 45 46 int 47 main(void) 48 { 49 assert(fuse_opt_match(emptyopts, "debug") == 0); 50 51 assert(fuse_opt_match(opts, NULL) == 0); 52 assert(fuse_opt_match(opts, "-p ") == 1); 53 assert(fuse_opt_match(opts, "-C") == 1); 54 assert(fuse_opt_match(opts, "-c") == 0); 55 assert(fuse_opt_match(opts, "-V") == 1); 56 assert(fuse_opt_match(opts, "--version") == 1); 57 assert(fuse_opt_match(opts, "-h") == 1); 58 assert(fuse_opt_match(opts, "const=false") == 1); 59 assert(fuse_opt_match(opts, "const=falsefalse") == 0); 60 assert(fuse_opt_match(opts, "cache=no") == 1); 61 assert(fuse_opt_match(opts, "cache=yes") == 1); 62 assert(fuse_opt_match(opts, "debug") == 1); 63 assert(fuse_opt_match(opts, "ro") == 1); 64 assert(fuse_opt_match(opts, "ro_fallback") == 0); 65 assert(fuse_opt_match(opts, "--foo=bar") == 1); 66 assert(fuse_opt_match(opts, "bars=foo") == 1); 67 assert(fuse_opt_match(opts, "--fool=bool") == 1); 68 assert(fuse_opt_match(opts, "--fool=1") == 1); 69 assert(fuse_opt_match(opts, "-x bar") == 1); 70 assert(fuse_opt_match(opts, "-xbar") == 1); 71 assert(fuse_opt_match(opts, "-n 100") == 1); 72 assert(fuse_opt_match(opts, "-n100") == 1); 73 assert(fuse_opt_match(opts, "-P") == 1); 74 75 return (0); 76 } 77