X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=js.go;h=1f2ec3985a463333781e738b291bcc00ab4d5e70;hb=7648b1c670d38b62b6328824ceecd50303945fdf;hp=e80736ffd47054f91149b06198aa1f4eceff30e5;hpb=191699e763a53813c1edddb0c69e28a58d35901d;p=goredo.git diff --git a/js.go b/js.go index e80736f..1f2ec39 100644 --- a/js.go +++ b/js.go @@ -24,11 +24,9 @@ import ( "fmt" "log" "os" - "os/signal" "regexp" "strconv" "sync" - "syscall" ) const ( @@ -69,9 +67,18 @@ var ( jsTokens map[byte]int jsTokensM sync.Mutex - flagJobs = flag.Int("j", -1, fmt.Sprintf("number of parallel jobs (0=inf, <0=1) (%s)", EnvJobs)) + flagJobs *int ) +func init() { + cmdName := CmdName() + if !(cmdName == CmdNameRedo || cmdName == CmdNameRedoIfchange) { + return + } + flagJobs = flag.Int("j", -1, + fmt.Sprintf("number of parallel jobs (0=inf, <0=1) (%s)", EnvJobs)) +} + func jsStart(jobsEnv string) { jobs := uint64(1) var err error @@ -161,20 +168,6 @@ func jsInit() { jsTokens[jsToken]++ jsRelease("ifchange entered", jsToken) } - - killed := make(chan os.Signal, 0) - signal.Notify(killed, syscall.SIGTERM, syscall.SIGINT) - go func() { - <-killed - jsTokensM.Lock() - for token, i := range jsTokens { - for ; i > 0; i-- { - jsReleaseNoLock(token) - } - } - jsTokensM.Unlock() - os.Exit(1) - }() } func jsReleaseNoLock(token byte) { @@ -194,6 +187,16 @@ func jsRelease(ctx string, token byte) { jsTokensM.Unlock() } +func jsReleaseAll() { + jsTokensM.Lock() + for token, i := range jsTokens { + for ; i > 0; i-- { + jsReleaseNoLock(token) + } + } + jsTokensM.Unlock() +} + func jsAcquire(ctx string) byte { if JSR == nil { return BMakeGoodToken