On 5/12/06, Aaron Griffin <aaronmgriffin@gmail.com>
wrote:> Hey all, bug report time. I started tracking this down, but am at a
> bit of a loss for time, so I figured I'd report over this list to see
> if anyone else has the time to fix this or at least find the error.
>
> When calling nfsmount on it's own, say "nfsmount 1.2.3.4:/home/nfs
> /root" it works just fine, however, when calling nfsmount_main from
> within kinit (via nfsroot=), things get wonky.
>
> I have verified that argc is 3 and argv[1] ==
"1.2.3.4:/home/nfs",
> argv[2] == "/root", however, optind seems off-by-one. After
leaving
> the getopt loop, optind is 2, which causes the server check to fail (
> strchr("/root".':') ). I do not know where or how optind
is thrown
> off, and have gotten to this point, but do not have the time to go
> farther.
>
> If anyone has any ideas, please let me know. I may have more time to
> test in a few days if this is still unresolved.
Follow up:
getopt is called once in the ip-config code, which leaves optind at
the end value (2 in this case) when getopt is called in the nfsmount
code. I would assume that klibc's getopt should reset optind in this
case, but if not, setting it to 1 before the nfsmount loop, while
hackish, works here.
I don't consider myself skilled enough to punch holes in your getopt
implementation, so do with this as you will - consider it a bug
report.
Aaron Griffin