Add openbsd and dragonfly support to shm

This commit is contained in:
Kovid Goyal 2022-12-20 20:53:52 +05:30
parent 7e161ea94b
commit 6ace082bc2
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
6 changed files with 47 additions and 43 deletions

View File

@ -1,5 +1,5 @@
// License: GPLv3 Copyright: 2022, Kovid Goyal, <kovid at kovidgoyal.net>
//go:build linux || netbsd
//go:build linux || netbsd || openbsd || dragonfly
package shm
@ -12,6 +12,7 @@ import (
var _ = fmt.Print
func create_temp(pattern string, size uint64) (MMap, error) {
pattern = modify_pattern(pattern)
ans, err := os.CreateTemp(SHM_DIR, pattern)
if err != nil {
return nil, err

View File

@ -1,40 +0,0 @@
// License: GPLv3 Copyright: 2022, Kovid Goyal, <kovid at kovidgoyal.net>
package shm
import (
"fmt"
"os"
"path/filepath"
)
var _ = fmt.Print
const SHM_DIR = "/tmp"
func create_temp(pattern string) (*os.File, error) {
ans, err := os.CreateTemp(SHM_DIR, pattern)
if err != nil {
return nil, err
}
return ans, nil
}
func Open(name string) (*os.File, error) {
if !filepath.IsAbs(name) {
name = filepath.Join(SHM_DIR, name)
}
ans, err := os.OpenFile(name, os.O_RDONLY, 0)
if err != nil {
return nil, err
}
return ans, nil
}
func Unlink(name string) error {
if !filepath.IsAbs(name) {
name = filepath.Join(SHM_DIR, name)
}
return os.Remove(name)
}

View File

@ -0,0 +1,16 @@
// License: GPLv3 Copyright: 2022, Kovid Goyal, <kovid at kovidgoyal.net>
package shm
import (
"fmt"
)
var _ = fmt.Print
// https://www.dragonflybsd.org/cgi/web-man?command=shm_open&section=3
const SHM_DIR = "/var/run/shm"
func modify_pattern(pattern string) string {
return pattern
}

View File

@ -9,4 +9,7 @@ import (
var _ = fmt.Print
const SHM_DIR = "/dev/shm"
const SHM_NAME_MAX = 1023
func modify_pattern(pattern string) string {
return pattern
}

View File

@ -9,4 +9,7 @@ import (
var _ = fmt.Print
const SHM_DIR = "/var/shm"
const SHM_NAME_MAX = 1023
func modify_pattern(pattern string) string {
return pattern
}

View File

@ -0,0 +1,21 @@
// License: GPLv3 Copyright: 2022, Kovid Goyal, <kovid at kovidgoyal.net>
package shm
import (
"fmt"
)
var _ = fmt.Print
const SHM_DIR = "/tmp"
func modify_pattern(pattern string) string {
// https://github.com/openbsd/src/blob/master/lib/libc/gen/shm_open.c
if strings.Contains(pattern, "*") {
pattern += ".shm"
} else {
pattern += "*.shm"
}
return pattern
}