fargs
struct fusefs_args fargs;
memset(&fargs, 0, sizeof(fargs));
fargs.fd = fc->fd;
fargs.max_read = opts.max_read;
fargs.allow_other = opts.allow_other;
if (mount(MOUNT_FUSEFS, mnt_dir, mnt_flags, &fargs)) {
fuse_lowlevel_new(struct fuse_args *fargs,
if (fuse_opt_parse(fargs, NULL, fuse_ll_opts, ifuse_ll_opt_proc) == -1) {
rsync_client(const struct opts *opts, int fd, const struct fargs *f)
char **fargs_cmdline(struct sess *, const struct fargs *, size_t *);
int rsync_client(const struct opts *, int, const struct fargs *);
int rsync_connect(const struct opts *, int *, const struct fargs *);
int rsync_socket(const struct opts *, int, const struct fargs *);
fargs_cmdline(struct sess *sess, const struct fargs *f, size_t *skip)
struct fargs *fargs;
fargs = fargs_parse(argc, argv, &opts);
assert(fargs != NULL);
fargs->sink, opts.basedir[i]) == -1)
err(ERR_FILE_IO, "%s: asprintf", fargs->sink);
if (fargs->remote && opts.ssh_prog == NULL) {
assert(fargs->mode == FARGS_RECEIVER);
if ((rc = rsync_connect(&opts, &sd, fargs)) == 0) {
rc = rsync_socket(&opts, sd, fargs);
args = fargs_cmdline(&sess, fargs, NULL);
if (!fargs->remote)
rc = rsync_client(&opts, fds[0], fargs);
rc = rsync_socket(&opts, fds[0], fargs);
static struct fargs *
struct fargs *f = NULL;
if ((f = calloc(1, sizeof(struct fargs))) == NULL)
rsync_connect(const struct opts *opts, int *sd, const struct fargs *f)
rsync_socket(const struct opts *opts, int sd, const struct fargs *f)