]> Cypherpunks.ru repositories - goredo.git/blobdiff - run.go
Explicitly check if $1 unexpectedly appears
[goredo.git] / run.go
diff --git a/run.go b/run.go
index ca8eebbcd9ca542dd7c9f31e77dfaca18eb4b7de..f356d81488c2d895ee22eee1874b549219f23169 100644 (file)
--- a/run.go
+++ b/run.go
@@ -587,6 +587,29 @@ func runScript(tgtOrig string, errs chan error, traced bool) error {
                }
 
                // Was $1 touched?
+               if fd, err := os.Open(path.Join(cwdOrig, tgt)); err == nil {
+                       errTouched := errors.New("$1 was explicitly touched")
+                       if inodePrev == nil {
+                               fd.Close()
+                               runErr.Err = errTouched
+                               errs <- runErr
+                               return
+                       } else {
+                               inode, err := inodeFromFile(fd)
+                               fd.Close()
+                               if err != nil {
+                                       runErr.Err = err
+                                       errs <- runErr
+                                       return
+                               }
+                               if !inode.Equals(inodePrev) {
+                                       runErr.Err = errTouched
+                                       errs <- runErr
+                                       return
+                               }
+                       }
+               }
+
                if inodePrev != nil {
                        if fd, err := os.Open(path.Join(cwdOrig, tgt)); err == nil {
                                inode, err := inodeFromFile(fd)