diff -r f4bf4f146b1f src/cmd/godoc/main.go --- a/src/cmd/godoc/main.go Mon Feb 14 11:47:19 2011 -0800 +++ b/src/cmd/godoc/main.go Mon Feb 14 14:56:22 2011 -0700 @@ -336,17 +336,22 @@ // if there are multiple packages in a directory. info := pkgHandler.getPageInfo(abspath, relpath, "", mode) - if info.Err != nil || info.PAst == nil && info.PDoc == nil && info.Dirs == nil { - // try again, this time assume it's a command - if !pathutil.IsAbs(path) { - abspath = absolutePath(path, cmdHandler.fsRoot) + if info.Err != nil { + if info.PAst == nil && info.PDoc == nil && info.Dirs == nil { + // try again, this time assume it's a command + if !pathutil.IsAbs(path) { + abspath = absolutePath(path, cmdHandler.fsRoot) + } + ninfo := cmdHandler.getPageInfo(abspath, relpath, "", mode) + if ninfo.Err != nil { + log.Fatalf("unable to locate package or command: %v; %v", info.Err, ninfo.Err) + } + info = ninfo + goto Found } - info = cmdHandler.getPageInfo(abspath, relpath, "", mode) - } - if info.Err != nil { log.Fatalf("%v", info.Err) } - +Found: // If we have more than one argument, use the remaining arguments for filtering if flag.NArg() > 1 { args := flag.Args()[1:]