1
0
mirror of https://github.com/golang/go synced 2024-11-22 00:34:40 -07:00

gofix: don't rewrite O_APPEND opens

R=r, rog
CC=golang-dev
https://golang.org/cl/4364041
This commit is contained in:
Russ Cox 2011-04-05 11:12:02 -04:00
parent 7098f3d442
commit de3aac609c
5 changed files with 16 additions and 4 deletions

View File

@ -49,7 +49,7 @@ func runLog(envv []string, logfile, dir string, argv ...string) (output string,
b := new(bytes.Buffer) b := new(bytes.Buffer)
var w io.Writer = b var w io.Writer = b
if logfile != "" { if logfile != "" {
f, err := os.Create(logfile) f, err := os.OpenFile(logfile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
if err != nil { if err != nil {
return return
} }

View File

@ -70,6 +70,7 @@ func osopen(f *ast.File) bool {
func isCreateFlag(flag ast.Expr) bool { func isCreateFlag(flag ast.Expr) bool {
foundCreate := false foundCreate := false
foundTrunc := false foundTrunc := false
foundAppend := false
// OR'ing of flags: is O_CREATE on? + or | would be fine; we just look for os.O_CREATE // OR'ing of flags: is O_CREATE on? + or | would be fine; we just look for os.O_CREATE
// and don't worry about the actual opeator. // and don't worry about the actual opeator.
p := flag.Pos() p := flag.Pos()
@ -85,12 +86,21 @@ func isCreateFlag(flag ast.Expr) bool {
if isPkgDot(lhs, "os", "O_TRUNC") { if isPkgDot(lhs, "os", "O_TRUNC") {
foundTrunc = true foundTrunc = true
} }
if isPkgDot(lhs, "os", "O_APPEND") {
foundAppend = true
}
if !isBinary { if !isBinary {
break break
} }
flag = expr.X flag = expr.X
} }
if foundCreate && !foundTrunc { if !foundCreate {
return false
}
if foundAppend {
return false
}
if !foundTrunc {
warn(p, "rewrote os.Open with O_CREATE but not O_TRUNC to os.Create") warn(p, "rewrote os.Open with O_CREATE but not O_TRUNC to os.Create")
} }
return foundCreate return foundCreate

View File

@ -27,6 +27,7 @@ func f() {
os.Open(a, os.O_CREATE, 0666) os.Open(a, os.O_CREATE, 0666)
os.Open(a, os.O_CREATE|os.O_TRUNC, 0664) os.Open(a, os.O_CREATE|os.O_TRUNC, 0664)
os.Open(a, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) os.Open(a, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
os.Open(a, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
_ = os.O_CREAT _ = os.O_CREAT
} }
`, `,
@ -46,6 +47,7 @@ func f() {
os.Create(a) os.Create(a)
os.Create(a) os.Create(a)
os.Create(a) os.Create(a)
os.OpenFile(a, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
_ = os.O_CREATE _ = os.O_CREATE
} }
`, `,

View File

@ -120,7 +120,7 @@ func logPackage(pkg string) {
if installedPkgs[pkg] { if installedPkgs[pkg] {
return return
} }
fout, err := os.Create(logfile) fout, err := os.OpenFile(logfile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
if err != nil { if err != nil {
fmt.Fprintf(os.Stderr, "%s: %s\n", argv0, err) fmt.Fprintf(os.Stderr, "%s: %s\n", argv0, err)
return return

View File

@ -59,7 +59,7 @@ func main() {
certOut.Close() certOut.Close()
log.Print("written cert.pem\n") log.Print("written cert.pem\n")
keyOut, err := os.OpenFile("key.pem", os.O_WRONLY|os.O_CREAT, 0600) keyOut, err := os.OpenFile("key.pem", os.O_WRONLY|os.O_CREAT|os.O_TRUNC, 0600)
if err != nil { if err != nil {
log.Print("failed to open key.pem for writing:", err) log.Print("failed to open key.pem for writing:", err)
return return