FileInfo: regularize the types of some fields.
Uid, Gid become int.
File size info becomes int64.
Times become int64.
R=rsc, cw
CC=golang-dev
https://golang.org/cl/968042
diff --git a/src/pkg/archive/tar/common.go b/src/pkg/archive/tar/common.go
index 4d399e5..5b781ff 100644
--- a/src/pkg/archive/tar/common.go
+++ b/src/pkg/archive/tar/common.go
@@ -33,8 +33,8 @@
type Header struct {
Name string
Mode int64
- Uid int64
- Gid int64
+ Uid int
+ Gid int
Size int64
Mtime int64
Typeflag byte
diff --git a/src/pkg/archive/tar/reader.go b/src/pkg/archive/tar/reader.go
index 7de559d..35a15f7 100644
--- a/src/pkg/archive/tar/reader.go
+++ b/src/pkg/archive/tar/reader.go
@@ -142,8 +142,8 @@
hdr.Name = cString(s.next(100))
hdr.Mode = tr.octal(s.next(8))
- hdr.Uid = tr.octal(s.next(8))
- hdr.Gid = tr.octal(s.next(8))
+ hdr.Uid = int(tr.octal(s.next(8)))
+ hdr.Gid = int(tr.octal(s.next(8)))
hdr.Size = tr.octal(s.next(12))
hdr.Mtime = tr.octal(s.next(12))
s.next(8) // chksum
diff --git a/src/pkg/archive/tar/writer.go b/src/pkg/archive/tar/writer.go
index 7f200c4..1f2656d 100644
--- a/src/pkg/archive/tar/writer.go
+++ b/src/pkg/archive/tar/writer.go
@@ -130,8 +130,8 @@
copy(s.next(100), []byte(hdr.Name))
tw.octal(s.next(8), hdr.Mode) // 100:108
- tw.numeric(s.next(8), hdr.Uid) // 108:116
- tw.numeric(s.next(8), hdr.Gid) // 116:124
+ tw.numeric(s.next(8), int64(hdr.Uid)) // 108:116
+ tw.numeric(s.next(8), int64(hdr.Gid)) // 116:124
tw.numeric(s.next(12), hdr.Size) // 124:136
tw.numeric(s.next(12), hdr.Mtime) // 136:148
s.next(8) // chksum (148:156)
diff --git a/src/pkg/io/ioutil/ioutil.go b/src/pkg/io/ioutil/ioutil.go
index 0f5a3a2..d338693 100644
--- a/src/pkg/io/ioutil/ioutil.go
+++ b/src/pkg/io/ioutil/ioutil.go
@@ -30,7 +30,7 @@
// It's a good but not certain bet that FileInfo will tell us exactly how much to
// read, so let's try it but be prepared for the answer to be wrong.
fi, err := f.Stat()
- var n uint64
+ var n int64
if err == nil && fi.Size < 2e9 { // Don't preallocate a huge buffer, just in case.
n = fi.Size
}
diff --git a/src/pkg/io/ioutil/ioutil_test.go b/src/pkg/io/ioutil/ioutil_test.go
index cc6075f..ecbf41c 100644
--- a/src/pkg/io/ioutil/ioutil_test.go
+++ b/src/pkg/io/ioutil/ioutil_test.go
@@ -10,7 +10,7 @@
"testing"
)
-func checkSize(t *testing.T, path string, size uint64) {
+func checkSize(t *testing.T, path string, size int64) {
dir, err := os.Stat(path)
if err != nil {
t.Fatalf("Stat %q (looking for size %d): %s", path, size, err)
@@ -33,7 +33,7 @@
t.Fatalf("ReadFile %s: %v", filename, err)
}
- checkSize(t, filename, uint64(len(contents)))
+ checkSize(t, filename, int64(len(contents)))
}
func TestWriteFile(t *testing.T) {
diff --git a/src/pkg/os/os_test.go b/src/pkg/os/os_test.go
index d8208bf..f4ccb52 100644
--- a/src/pkg/os/os_test.go
+++ b/src/pkg/os/os_test.go
@@ -33,7 +33,7 @@
"passwd",
}
-func size(name string, t *testing.T) uint64 {
+func size(name string, t *testing.T) int64 {
file, err := Open(name, O_RDONLY, 0)
defer file.Close()
if err != nil {
@@ -51,7 +51,7 @@
t.Fatal("read failed:", err)
}
}
- return uint64(len)
+ return int64(len)
}
func TestStat(t *testing.T) {
@@ -394,10 +394,10 @@
if err != nil {
t.Fatalf("Stat %q (looking for uid/gid %d/%d): %s", path, uid, gid, err)
}
- if dir.Uid != uint32(uid) {
+ if dir.Uid != uid {
t.Errorf("Stat %q: uid %d want %d", path, dir.Uid, uid)
}
- if dir.Gid != uint32(gid) {
+ if dir.Gid != gid {
t.Errorf("Stat %q: gid %d want %d", path, dir.Gid, gid)
}
}
@@ -427,7 +427,7 @@
if err = Chown(Path, -1, gid); err != nil {
t.Fatalf("chown %s -1 %d: %s", Path, gid, err)
}
- checkUidGid(t, Path, int(dir.Uid), gid)
+ checkUidGid(t, Path, dir.Uid, gid)
// Then try all the auxiliary groups.
groups, err := Getgroups()
@@ -439,17 +439,17 @@
if err = Chown(Path, -1, g); err != nil {
t.Fatalf("chown %s -1 %d: %s", Path, g, err)
}
- checkUidGid(t, Path, int(dir.Uid), g)
+ checkUidGid(t, Path, dir.Uid, g)
// change back to gid to test fd.Chown
if err = fd.Chown(-1, gid); err != nil {
t.Fatalf("fchown %s -1 %d: %s", Path, gid, err)
}
- checkUidGid(t, Path, int(dir.Uid), gid)
+ checkUidGid(t, Path, dir.Uid, gid)
}
}
-func checkSize(t *testing.T, path string, size uint64) {
+func checkSize(t *testing.T, path string, size int64) {
dir, err := Stat(path)
if err != nil {
t.Fatalf("Stat %q (looking for size %d): %s", path, size, err)
diff --git a/src/pkg/os/stat_darwin.go b/src/pkg/os/stat_darwin.go
index 5ab2c39..8f4e6ba 100644
--- a/src/pkg/os/stat_darwin.go
+++ b/src/pkg/os/stat_darwin.go
@@ -15,15 +15,15 @@
fi.Ino = stat.Ino
fi.Nlink = uint64(stat.Nlink)
fi.Mode = uint32(stat.Mode)
- fi.Uid = stat.Uid
- fi.Gid = stat.Gid
+ fi.Uid = int(stat.Uid)
+ fi.Gid = int(stat.Gid)
fi.Rdev = uint64(stat.Rdev)
- fi.Size = uint64(stat.Size)
- fi.Blksize = uint64(stat.Blksize)
- fi.Blocks = uint64(stat.Blocks)
- fi.Atime_ns = uint64(syscall.TimespecToNsec(stat.Atimespec))
- fi.Mtime_ns = uint64(syscall.TimespecToNsec(stat.Mtimespec))
- fi.Ctime_ns = uint64(syscall.TimespecToNsec(stat.Ctimespec))
+ fi.Size = stat.Size
+ fi.Blksize = int64(stat.Blksize)
+ fi.Blocks = stat.Blocks
+ fi.Atime_ns = syscall.TimespecToNsec(stat.Atimespec)
+ fi.Mtime_ns = syscall.TimespecToNsec(stat.Mtimespec)
+ fi.Ctime_ns = syscall.TimespecToNsec(stat.Ctimespec)
for i := len(name) - 1; i >= 0; i-- {
if name[i] == '/' {
name = name[i+1:]
diff --git a/src/pkg/os/stat_freebsd.go b/src/pkg/os/stat_freebsd.go
index dd33d8c..0646b29 100644
--- a/src/pkg/os/stat_freebsd.go
+++ b/src/pkg/os/stat_freebsd.go
@@ -15,15 +15,15 @@
fi.Ino = uint64(stat.Ino)
fi.Nlink = uint64(stat.Nlink)
fi.Mode = uint32(stat.Mode)
- fi.Uid = stat.Uid
- fi.Gid = stat.Gid
+ fi.Uid = int(stat.Uid)
+ fi.Gid = int(stat.Gid)
fi.Rdev = uint64(stat.Rdev)
fi.Size = uint64(stat.Size)
- fi.Blksize = uint64(stat.Blksize)
- fi.Blocks = uint64(stat.Blocks)
- fi.Atime_ns = uint64(syscall.TimespecToNsec(stat.Atimespec))
- fi.Mtime_ns = uint64(syscall.TimespecToNsec(stat.Mtimespec))
- fi.Ctime_ns = uint64(syscall.TimespecToNsec(stat.Ctimespec))
+ fi.Blksize = int64(stat.Blksize)
+ fi.Blocks = stat.Blocks
+ fi.Atime_ns = syscall.TimespecToNsec(stat.Atimespec)
+ fi.Mtime_ns = syscall.TimespecToNsec(stat.Mtimespec)
+ fi.Ctime_ns = syscall.TimespecToNsec(stat.Ctimespec)
for i := len(name) - 1; i >= 0; i-- {
if name[i] == '/' {
name = name[i+1:]
diff --git a/src/pkg/os/stat_linux.go b/src/pkg/os/stat_linux.go
index 5d3b9ee..ebfa172 100644
--- a/src/pkg/os/stat_linux.go
+++ b/src/pkg/os/stat_linux.go
@@ -12,18 +12,18 @@
func fileInfoFromStat(name string, fi *FileInfo, lstat, stat *syscall.Stat_t) *FileInfo {
fi.Dev = stat.Dev
- fi.Ino = uint64(stat.Ino)
+ fi.Ino = stat.Ino
fi.Nlink = uint64(stat.Nlink)
fi.Mode = stat.Mode
- fi.Uid = stat.Uid
- fi.Gid = stat.Gid
+ fi.Uid = int(stat.Uid)
+ fi.Gid = int(stat.Gid)
fi.Rdev = stat.Rdev
- fi.Size = uint64(stat.Size)
- fi.Blksize = uint64(stat.Blksize)
- fi.Blocks = uint64(stat.Blocks)
- fi.Atime_ns = uint64(syscall.TimespecToNsec(stat.Atim))
- fi.Mtime_ns = uint64(syscall.TimespecToNsec(stat.Mtim))
- fi.Ctime_ns = uint64(syscall.TimespecToNsec(stat.Ctim))
+ fi.Size = stat.Size
+ fi.Blksize = int64(stat.Blksize)
+ fi.Blocks = stat.Blocks
+ fi.Atime_ns = syscall.TimespecToNsec(stat.Atim)
+ fi.Mtime_ns = syscall.TimespecToNsec(stat.Mtim)
+ fi.Ctime_ns = syscall.TimespecToNsec(stat.Ctim)
for i := len(name) - 1; i >= 0; i-- {
if name[i] == '/' {
name = name[i+1:]
diff --git a/src/pkg/os/stat_mingw.go b/src/pkg/os/stat_mingw.go
index f211275..1d8d9b9 100644
--- a/src/pkg/os/stat_mingw.go
+++ b/src/pkg/os/stat_mingw.go
@@ -18,7 +18,7 @@
} else {
fi.Mode = fi.Mode | 0666
}
- fi.Size = uint64(stat.Windata.FileSizeHigh)<<32 + uint64(stat.Windata.FileSizeLow)
+ fi.Size = int64(stat.Windata.FileSizeHigh)<<32 + uint64(stat.Windata.FileSizeLow)
fi.Name = string(syscall.UTF16ToString(stat.Windata.FileName[0:]))
fi.FollowedSymlink = false
// TODO(brainman): use CreationTime LastAccessTime LastWriteTime to prime following Dir fields
diff --git a/src/pkg/os/types.go b/src/pkg/os/types.go
index 4194ea1..0e76e90 100644
--- a/src/pkg/os/types.go
+++ b/src/pkg/os/types.go
@@ -18,15 +18,15 @@
Ino uint64 // inode number.
Nlink uint64 // number of hard links.
Mode uint32 // permission and mode bits.
- Uid uint32 // user id of owner.
- Gid uint32 // group id of owner.
+ Uid int // user id of owner.
+ Gid int // group id of owner.
Rdev uint64 // device type for special file.
- Size uint64 // length in bytes.
- Blksize uint64 // size of blocks, in bytes.
- Blocks uint64 // number of blocks allocated for file.
- Atime_ns uint64 // access time; nanoseconds since epoch.
- Mtime_ns uint64 // modified time; nanoseconds since epoch.
- Ctime_ns uint64 // status change time; nanoseconds since epoch.
+ Size int64 // length in bytes.
+ Blksize int64 // size of blocks, in bytes.
+ Blocks int64 // number of blocks allocated for file.
+ Atime_ns int64 // access time; nanoseconds since epoch.
+ Mtime_ns int64 // modified time; nanoseconds since epoch.
+ Ctime_ns int64 // status change time; nanoseconds since epoch.
Name string // name of file as presented to Open.
FollowedSymlink bool // followed a symlink to get this information
}