(ctx context.Context, conf deviceConfig)
| 99 | } |
| 100 | |
| 101 | func createDevice(ctx context.Context, conf deviceConfig) error { |
| 102 | var ( |
| 103 | fs = GetFS(ctx) |
| 104 | dir = filepath.Dir(conf.path) |
| 105 | ) |
| 106 | |
| 107 | err := fs.MkdirAll(dir, 0o700) |
| 108 | if err != nil { |
| 109 | return xerrors.Errorf("ensure parent dir: %w", err) |
| 110 | } |
| 111 | |
| 112 | //nolint:gosec |
| 113 | err = fs.Mknod(conf.path, conf.ftype|conf.mode, int(conf.dev)) |
| 114 | if err != nil { |
| 115 | return xerrors.Errorf("mknod %s c %d %d: %w", conf.path, conf.major, conf.minor, err) |
| 116 | } |
| 117 | |
| 118 | err = fs.Chmod(conf.path, os.FileMode(conf.mode)) |
| 119 | if err != nil { |
| 120 | return xerrors.Errorf("chown %v %q: %w", conf.mode, conf.path, err) |
| 121 | } |
| 122 | |
| 123 | return nil |
| 124 | } |
| 125 | |
| 126 | func dev(major, minor uint) uint { |
| 127 | // This is lifted from the Linux kernel's makedev function. |
no test coverage detected