28 lines
500 B
Go
28 lines
500 B
Go
package tape
|
|
|
|
import "os"
|
|
|
|
func OpenTapeReadOnly(drive string) (f *os.File, isRegular bool, err error) {
|
|
fileDescription, err := os.Stat(drive)
|
|
if err != nil {
|
|
return nil, false, err
|
|
}
|
|
|
|
isRegular = fileDescription.Mode().IsRegular()
|
|
if isRegular {
|
|
f, err = os.Open(drive)
|
|
if err != nil {
|
|
return f, isRegular, err
|
|
}
|
|
|
|
return f, isRegular, nil
|
|
}
|
|
|
|
f, err = os.OpenFile(drive, os.O_RDONLY, os.ModeCharDevice)
|
|
if err != nil {
|
|
return f, isRegular, err
|
|
}
|
|
|
|
return f, isRegular, nil
|
|
}
|