Example #1
0
static int fuse_helper_opt_proc(void *data, const char *arg, int key,
                                struct fuse_args *outargs)
{
    struct helper_opts *hopts = data;

    switch (key) {
    case KEY_HELP:
        usage(outargs->argv[0]);
        /* fall through */

    case KEY_HELP_NOHEADER:
        helper_help();
        return fuse_opt_add_arg(outargs, "-h");

    case KEY_VERSION:
        helper_version();
        return 1;

    case FUSE_OPT_KEY_NONOPT:
        if (!hopts->mountpoint) {
            char mountpoint[PATH_MAX];
            if (realpath(arg, mountpoint) == NULL) {
                fprintf(stderr, "fuse: bad mount point `%s': %s\n", arg, strerror(errno));
                return -1;
            }
            return fuse_opt_add_opt(&hopts->mountpoint, mountpoint);
        } else {
            fprintf(stderr, "fuse: invalid argument `%s'\n", arg);
            return -1;
        }

    default:
        return 1;
    }
}
Example #2
0
static int fuse_helper_opt_proc(void *data, const char *arg, int key,
				struct fuse_args *outargs)
{
	struct helper_opts *hopts = data;

	switch (key) {
	case KEY_HELP:
		usage(outargs->argv[0]);
		/* fall through */

	case KEY_HELP_NOHEADER:
		helper_help();
		return fuse_opt_add_arg(outargs, "-h");

	case KEY_VERSION:
		helper_version();
		return 1;

	case FUSE_OPT_KEY_NONOPT:
		if (!hopts->mountpoint) {
			char mountpoint[PATH_MAX];
			if (realpath(arg, mountpoint) == NULL) {
				fprintf(stderr,
					"fuse: bad mount point `%s': %s\n",
					arg, strerror(errno));
				return -1;
			}
#ifdef __APPLE__
			else {
				struct stat sb;
				if (stat(mountpoint, &sb) != 0) {
					fprintf(stderr,
						"fuse: failed to stat mount point `%s': %s\n",
						mountpoint, strerror(errno));
					return -1;
				}
				if ((sb.st_mode & S_IFMT) != S_IFDIR) {
					fprintf(stderr,
						"fuse: mount point is not a directory `%s'\n",
						mountpoint);
					return -1;
				}
			}
#endif
			return fuse_opt_add_opt(&hopts->mountpoint, mountpoint);
		} else {
			fprintf(stderr, "fuse: invalid argument `%s'\n", arg);
			return -1;
		}

	default:
		return 1;
	}
}