import (
"bufio"
- "bytes"
"crypto/rand"
"encoding/hex"
"errors"
func (e *RunError) Name() string {
var name string
if e.DoFile == "" {
- name = e.Tgt.String()
+ name = e.Tgt.rel
} else {
name = fmt.Sprintf("%s (%s)", e.Tgt, e.DoFile)
}
}
func isModified(depInfo *DepInfo, tgt *Tgt) (
- modified bool, ourInode *Inode, hshPrev []byte, err error,
+ modified bool, ourInode *Inode, hshPrev Hash, err error,
) {
if depInfo == nil {
return
doFile = NewTgt(path.Join(ups...))
if strings.HasPrefix(doFile.t, "default.") {
basename = basename[:len(basename)-(len(doFile.t)-len("default.")-len(".do"))-1]
- runErr.DoFile = doFile.String()
+ runErr.DoFile = doFile.rel
}
}
- if err = depWrite(fdDep, tgt.h, doFile, nil); err != nil {
+ if err = depWrite(fdDep, tgt.h, doFile, ""); err != nil {
cleanup()
return TgtError{tgt, ErrLine(err)}
}
// Prepare command line
var cmdName string
var args []string
- if err = unix.Access(doFile.String(), unix.X_OK); err == nil {
+ if err = unix.Access(doFile.rel, unix.X_OK); err == nil {
cmdName = doFile.t
args = make([]string, 0, 3)
} else {
errs <- runErr
return
}
- if err != nil {
- runErr.Err = err
- errs <- runErr
- return
- }
if !inode.Equals(inodePrev) {
runErr.Err = Err1WasTouched
errs <- runErr
goto Finish
}
} else {
- var hsh []byte
- if hshPrev != nil {
+ var hsh Hash
+ if hshPrev != "" {
_, err = fd.Seek(0, io.SeekStart)
if err != nil {
err = ErrLine(err)
err = ErrLine(err)
goto Finish
}
- if bytes.Equal(hsh, hshPrev) {
+ if hsh == hshPrev {
tracef(CDebug, "%s has same hash, not renaming", tgt)
err = ErrLine(os.Remove(fd.Name()))
if err != nil {