mirror of
https://github.com/golang/go
synced 2024-11-26 03:47:57 -07:00
- make godoc restart feature work properly
R=rsc DELTA=11 (10 added, 0 deleted, 1 changed) OCL=29007 CL=29009
This commit is contained in:
parent
89df071165
commit
7ff2536633
@ -58,6 +58,7 @@ var (
|
|||||||
verbose = flag.Bool("v", false, "verbose mode");
|
verbose = flag.Bool("v", false, "verbose mode");
|
||||||
|
|
||||||
// file system roots
|
// file system roots
|
||||||
|
launchdir string; // directory from which godoc was launched
|
||||||
goroot string;
|
goroot string;
|
||||||
pkgroot = flag.String("pkgroot", "src/lib", "root package source directory (if unrooted, relative to goroot)");
|
pkgroot = flag.String("pkgroot", "src/lib", "root package source directory (if unrooted, relative to goroot)");
|
||||||
tmplroot = flag.String("tmplroot", "usr/gri/pretty", "root template directory (if unrooted, relative to goroot)");
|
tmplroot = flag.String("tmplroot", "usr/gri/pretty", "root template directory (if unrooted, relative to goroot)");
|
||||||
@ -585,7 +586,10 @@ func loggingHandler(h http.Handler) http.Handler {
|
|||||||
|
|
||||||
|
|
||||||
func restartGodoc(c *http.Conn, r *http.Request) {
|
func restartGodoc(c *http.Conn, r *http.Request) {
|
||||||
binary := os.Args[0]; // TODO currently requires absolute paths because of chdir in the beginning
|
binary := os.Args[0];
|
||||||
|
if len(binary) > 0 || binary[0] != '/' {
|
||||||
|
binary = pathutil.Join(launchdir, binary);
|
||||||
|
}
|
||||||
pid, err := os.ForkExec(binary, os.Args, os.Environ(), "", []*os.File{os.Stdin, os.Stdout, os.Stderr});
|
pid, err := os.ForkExec(binary, os.Args, os.Environ(), "", []*os.File{os.Stdin, os.Stdout, os.Stderr});
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Stderrf("os.ForkExec(%s): %v", binary, err);
|
log.Stderrf("os.ForkExec(%s): %v", binary, err);
|
||||||
@ -621,6 +625,12 @@ func main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var err os.Error;
|
||||||
|
if launchdir, err = os.Getwd(); err != nil {
|
||||||
|
log.Stderrf("unable to determine current working directory - restart may fail");
|
||||||
|
launchdir = "";
|
||||||
|
}
|
||||||
|
|
||||||
if err := os.Chdir(goroot); err != nil {
|
if err := os.Chdir(goroot); err != nil {
|
||||||
log.Exitf("chdir %s: %v", goroot, err);
|
log.Exitf("chdir %s: %v", goroot, err);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user