int main(int argc, char **argv) { struct fuse_args args = FUSE_ARGS_INIT(argc, argv); struct cusexmp_param param = { 0, 0, NULL, 0 }; char dev_name[128] = "DEVNAME="; const char *dev_info_argv[] = { dev_name }; struct cuse_info ci; if (fuse_opt_parse(&args, ¶m, cusexmp_opts, cusexmp_process_arg)) { printf("failed to parse option\n"); return 1; } if (!param.is_help) { if (!param.dev_name) { fprintf(stderr, "Error: device name missing\n"); return 1; } strncat(dev_name, param.dev_name, sizeof(dev_name) - 9); } memset(&ci, 0, sizeof(ci)); ci.dev_major = param.major; ci.dev_minor = param.minor; ci.dev_info_argc = 1; ci.dev_info_argv = dev_info_argv; ci.flags = CUSE_UNRESTRICTED_IOCTL; return cuse_lowlevel_main(args.argc, args.argv, &ci, &cusexmp_clop, NULL); }
int runfuse(int argc, const char* const* argv) { struct fuse_args fua = FUSE_ARGS_INIT(argc, (char**) argv); struct cuse_info info; const char *iav[] = { "DEVNAME=jrandom",NULL }; vzero(info); info.dev_info_argc = 1; info.dev_info_argv = iav; info.flags = CUSE_UNRESTRICTED_IOCTL; return cuse_lowlevel_main(fua.argc, fua.argv, &info, GET_RNDEV_OPS(), NULL); }