fix: Prevent nil errors on creating FileInfo structs
This commit is contained in:
@@ -136,13 +136,14 @@ func (f *File) syncWithoutLocking() error {
|
||||
return config.FileConfig{}, err
|
||||
}
|
||||
|
||||
f.info = &FileInfo{
|
||||
name: f.info.Name(),
|
||||
size: size,
|
||||
mode: f.info.Mode(),
|
||||
modTime: f.info.ModTime(),
|
||||
isDir: f.info.IsDir(),
|
||||
}
|
||||
f.info = NewFileInfo(
|
||||
f.info.Name(),
|
||||
size,
|
||||
f.info.Mode(),
|
||||
f.info.ModTime(),
|
||||
f.info.IsDir(),
|
||||
f.log,
|
||||
)
|
||||
|
||||
return config.FileConfig{
|
||||
GetFile: func() (io.ReadSeekCloser, error) {
|
||||
@@ -392,7 +393,7 @@ func (f *File) Readdir(count int) ([]os.FileInfo, error) {
|
||||
|
||||
fileInfos := []os.FileInfo{}
|
||||
for _, hdr := range hdrs {
|
||||
fileInfos = append(fileInfos, NewFileInfo(hdr, f.log))
|
||||
fileInfos = append(fileInfos, NewFileInfoFromTarHeader(hdr, f.log))
|
||||
}
|
||||
|
||||
return fileInfos, nil
|
||||
|
||||
@@ -22,6 +22,26 @@ type FileInfo struct {
|
||||
}
|
||||
|
||||
func NewFileInfo(
|
||||
name string,
|
||||
size int64,
|
||||
mode fs.FileMode,
|
||||
modTime time.Time,
|
||||
isDir bool,
|
||||
|
||||
log *logging.JSONLogger,
|
||||
) *FileInfo {
|
||||
return &FileInfo{
|
||||
name: name,
|
||||
size: size,
|
||||
mode: mode,
|
||||
modTime: modTime,
|
||||
isDir: isDir,
|
||||
|
||||
log: log,
|
||||
}
|
||||
}
|
||||
|
||||
func NewFileInfoFromTarHeader(
|
||||
hdr *tar.Header,
|
||||
|
||||
log *logging.JSONLogger,
|
||||
|
||||
@@ -285,7 +285,7 @@ func (f *FileSystem) OpenFile(name string, flag int, perm os.FileMode) (afero.Fi
|
||||
f.getFileBuffer,
|
||||
|
||||
path.Base(hdr.Name),
|
||||
NewFileInfo(hdr, f.log),
|
||||
NewFileInfoFromTarHeader(hdr, f.log),
|
||||
|
||||
f.onHeader,
|
||||
f.log,
|
||||
@@ -334,10 +334,10 @@ func (f *FileSystem) Stat(name string) (os.FileInfo, error) {
|
||||
return nil, os.ErrNotExist
|
||||
}
|
||||
|
||||
panic(err)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return NewFileInfo(hdr, f.log), nil
|
||||
return NewFileInfoFromTarHeader(hdr, f.log), nil
|
||||
}
|
||||
|
||||
func (f *FileSystem) updateMetadata(hdr *tar.Header) error {
|
||||
@@ -384,7 +384,7 @@ func (f *FileSystem) Chmod(name string, mode os.FileMode) error {
|
||||
return os.ErrNotExist
|
||||
}
|
||||
|
||||
panic(err)
|
||||
return err
|
||||
}
|
||||
|
||||
hdr.Mode = int64(mode)
|
||||
@@ -411,7 +411,7 @@ func (f *FileSystem) Chown(name string, uid, gid int) error {
|
||||
return os.ErrNotExist
|
||||
}
|
||||
|
||||
panic(err)
|
||||
return err
|
||||
}
|
||||
|
||||
hdr.Uid = uid
|
||||
@@ -439,7 +439,7 @@ func (f *FileSystem) Chtimes(name string, atime time.Time, mtime time.Time) erro
|
||||
return os.ErrNotExist
|
||||
}
|
||||
|
||||
panic(err)
|
||||
return err
|
||||
}
|
||||
|
||||
hdr.AccessTime = atime
|
||||
@@ -453,7 +453,7 @@ func (f *FileSystem) LstatIfPossible(name string) (os.FileInfo, bool, error) {
|
||||
"name": name,
|
||||
})
|
||||
|
||||
panic(ErrNotImplemented)
|
||||
return nil, false, ErrNotImplemented
|
||||
}
|
||||
|
||||
func (f *FileSystem) SymlinkIfPossible(oldname, newname string) error {
|
||||
@@ -462,7 +462,7 @@ func (f *FileSystem) SymlinkIfPossible(oldname, newname string) error {
|
||||
"newname": newname,
|
||||
})
|
||||
|
||||
panic(ErrNotImplemented)
|
||||
return ErrNotImplemented
|
||||
}
|
||||
|
||||
func (f *FileSystem) ReadlinkIfPossible(name string) (string, error) {
|
||||
@@ -470,5 +470,5 @@ func (f *FileSystem) ReadlinkIfPossible(name string) (string, error) {
|
||||
"name": name,
|
||||
})
|
||||
|
||||
panic(ErrNotImplemented)
|
||||
return "", ErrNotImplemented
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user