Lines Matching +full:cmd +full:- +full:cnt +full:- +full:name
1 /*-
43 enum cmd { enum
62 const char *name; member
72 "<name> --interpreter <path_and_arguments> \\\n"
73 "\t\t--magic <magic_bytes> [--mask <mask_bytes>] \\\n"
74 "\t\t--size <magic_size> [--offset <magic_offset>] \\\n"
75 "\t\t[--set-enabled] \\\n"
76 "\t\t[--pre-open]"
83 "<name>"
90 "<name>"
97 "<name>"
104 "<name>"
117 { "set-enabled", no_argument, NULL, 'e' },
123 { "pre-open", no_argument, NULL, 'p' },
146 error = -1; in usage()
154 fprintf(stderr, "\t%s %s %s\n\n", __progname, cmds[i].name, in usage()
171 exit(-1); in fatal()
185 uint32_t i, flags = xbe->xbe_flags; in printxbe()
187 if (xbe->xbe_version != IBE_VERSION) { in printxbe()
192 printf("name: %s\n", xbe->xbe_name); in printxbe()
193 printf("interpreter: %s\n", xbe->xbe_interpreter); in printxbe()
197 printf("magic size: %u\n", xbe->xbe_msize); in printxbe()
198 printf("magic offset: %u\n", xbe->xbe_moffset); in printxbe()
201 for(i = 0; i < xbe->xbe_msize; i++) { in printxbe()
207 printf("0x%02x ", xbe->xbe_magic[i]); in printxbe()
213 for(i = 0; i < xbe->xbe_msize; i++) { in printxbe()
219 printf("0x%02x ", xbe->xbe_mask[i]); in printxbe()
236 if (!strcasecmp(cmds[i].name, argv[0])) { in demux_cmd()
242 return (-1); in demux_cmd()
249 size_t cnt = 0; in strlit2bin_cpy() local
262 *d = (c - (isdigit(c) ? '0' : ('A' - 10))) << 4; in strlit2bin_cpy()
264 *d++ |= c - (isdigit(c) ? '0' : ('A' - 10)); in strlit2bin_cpy()
268 return (-1); in strlit2bin_cpy()
273 if (++cnt > size) in strlit2bin_cpy()
274 return (-1); in strlit2bin_cpy()
277 return (cnt); in strlit2bin_cpy()
292 strlcpy(&xbe->xbe_name[0], argv[0], IBE_NAME_MAX); in add_cmd()
295 != -1) { in add_cmd()
299 getoptstr(xbe->xbe_interpreter, IBE_INTERP_LEN_MAX, in add_cmd()
311 xbe->xbe_flags |= IBF_USE_MASK; in add_cmd()
315 xbe->xbe_flags |= IBF_ENABLED; in add_cmd()
319 xbe->xbe_moffset = atol(optarg); in add_cmd()
323 xbe->xbe_msize = atol(optarg); in add_cmd()
324 if (xbe->xbe_msize == 0 || in add_cmd()
325 xbe->xbe_msize > IBE_MAGIC_MAX) in add_cmd()
326 usage("Error: Not valid '--size' value. " in add_cmd()
328 xbe->xbe_msize); in add_cmd()
332 xbe->xbe_flags |= IBF_PRE_OPEN; in add_cmd()
340 if (xbe->xbe_msize == 0) { in add_cmd()
345 usage("Error: Missing '--size' argument"); in add_cmd()
349 if (xbe->xbe_msize == 0) { in add_cmd()
356 sz = strlit2bin_cpy(xbe->xbe_magic, magic, IBE_MAGIC_MAX); in add_cmd()
358 if (sz == -1 || (uint32_t)sz != xbe->xbe_msize) { in add_cmd()
364 sz = strlit2bin_cpy(xbe->xbe_mask, mask, IBE_MAGIC_MAX); in add_cmd()
366 if (sz == -1 || (uint32_t)sz != xbe->xbe_msize) in add_cmd()
375 if (!strnlen(xbe->xbe_interpreter, IBE_INTERP_LEN_MAX)) { in add_cmd()
390 strlcpy(&xbe->xbe_name[0], argv[0], IBE_NAME_MAX); in name_cmd()
406 int error = 0, cmd = -1; in main() local
413 if (modfind(KMOD_NAME) == -1) { in main()
414 if (kldload(KMOD_NAME) == -1) in main()
426 argc--, argv++; in main()
427 cmd = demux_cmd(argc, argv); in main()
428 if (cmd < 0) in main()
430 argc--, argv++; in main()
432 error = (*cmds[cmd].func)(argc, argv, &xbe_in); in main()
434 usage("Can't parse command-line for '%s' command", in main()
435 cmds[cmd].name); in main()
437 if (cmd != CMD_LIST) { in main()
442 if (cmd == CMD_LOOKUP) { in main()
448 error = sysctlbyname(cmd_sysctl_name[cmd], xbe_outp, xbe_out_szp, in main()
454 usage("Invalid interpreter name or --interpreter, " in main()
455 "--magic, --mask, or --size argument value"); in main()
475 cmds[cmd].name); in main()
485 if (cmd == CMD_LOOKUP) in main()
488 if (cmd == CMD_LIST && xbe_out_sz > 0) { in main()
494 error = sysctlbyname(cmd_sysctl_name[cmd], xbe_outp, in main()
497 if (error == -1 && errno == ENOMEM && in main()