From: D.Edmons <dem...@co...> - 2007-05-18 15:35:15
|
David, In that case, can't you just type them on the command line and pass to fuse_main() argv directly? That doesn't work for me because I have to open the disk which contains the FS. So my command line is: ./rtfuse /dev/sdb ~/mnt -d -o fsname=/dev/sdb -o use_ino (before I recoded) ./rtfuse /dev/sdb ~/mnt -d (after I recoded) where you would have ./myfs ~/mnt -o arg1=alice -o arg2=bob -o arg3=ted -d I suspect if you want to do ./myfs ~/mnt -o args=alice,bob,ted then you'll have to manipulate the argv stack in you main() to parse it yourself. Have you tried to do: ./myfs ~/mnt -o arg1=alice,arg2=bob,arg3=ted I'm not at all sure it'd work, but glancing at fuse/lib/opt.c suggests that it's worth a try. Dale David Sklar wrote: > Hi, Dale. I am not sure we are trying to accomplish the same thing -- > I want to invoke my fs with a command like "myfs -o > arg=alice,bob,charlie" or "myfs -o arg=alice -o arg=bob -o > arg=charlie" -- so everything is coming from the command line, not > being manipulated inside main(). Does that make sense? > > David > > > On 5/18/07, D.Edmons <dem...@co...> wrote: > >> David, >> >> I'm just trying to get the write portion of my FS going and >> I worked on the same issue yesterday. I did something like >> the following: >> >> main() { >> char ctmp[80], *rtargv[20]; // some useful number >> int rtargc=0; >> >> ctmp[0]=0; >> >> /* set mount name to path like other FS's */ >> rtargv[rtargc++] = strdup("-o"); >> sprintf(ctmp, "fsname=%s", argv[1]); // or strcat(), whichever's >> your preference >> rtargv[rtargc++] = strdup(ctmp); >> >> /* set use_ino option */ >> rtargv[rtargc++] = strdup("-o"); >> rtargv[rtargc++] = strdup("use_ino"); >> >> // etc.... >> } >> >> This isn't the exact code I used, but close enough. The >> rtargv[] is the arg list I pass to fuse_main(). It differs >> from the one passed to my fuse program. >> >> Hope this helps. The are much better ways to handle >> this I'm sure; I just wanted to quickly add a couple of >> options. Treat each one individually; grouping them is >> likely your problem. >> >> >> Dale E. Edmons >> >> David Sklar wrote: >> >>> I'd like to have a command-line option for my filesystem that can >>> accept multiple values. >>> >>> I tried something like: >>> >>> struct my_arg_t { >>> char *stuff; >>> } >>> >>> #define MY_OPT(t, p, v) { t, offsetof(struct my_arg_t, p), v } >>> static struct fuse_opt my_opts[] = { >>> MY_OPT("stuff=%s", stuff, 0 ), >>> FUSE_OPT_END >>> } >>> >>> But then when I invoke my filesystem with "-o >>> stuff=alice,bob,charlie", fuse uses the commas as argument delimiters. >>> (I could switch the argument delimeter to something else, but commas >>> would be nice.) >>> >>> So then, I tried: >>> >>> #define MY_STUFF_KEY 100 >>> static struct fuse_opt my_opts[] = { >>> FUSE_OPT_KEY("stuff=%s", MY_STUFF_KEY), >>> FUSE_OPT_END >>> } >>> >>> And in my opt_proc I can successfully key off of MY_STUFF_KEY and deal >>> with the value, but then when I call fuse_main() I get an "unknown >>> option" error for the "stuff=whatever" values specified on the command >>> line. >>> >>> Is there a recommended / appropriate way to do command line options >>> that can take multiple values? >>> >>> Thanks, >>> David >>> >>> ------------------------------------------------------------------------- >>> This SF.net email is sponsored by DB2 Express >>> Download DB2 Express C - the FREE version of DB2 express and take >>> control of your XML. No limits. Just data. Click to get it now. >>> http://sourceforge.net/powerbar/db2/ >>> _______________________________________________ >>> fuse-devel mailing list >>> fus...@li... >>> https://lists.sourceforge.net/lists/listinfo/fuse-devel >>> >>> >>> >> > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > fuse-devel mailing list > fus...@li... > https://lists.sourceforge.net/lists/listinfo/fuse-devel > > |