package system import ( "fmt" "io" "os" "strings" "golang.org/x/sys/unix" ) func CopyFilePreferClone(sourcePath, targetPath string) error { source, err := os.Open(sourcePath) if err != nil { return err } defer source.Close() info, err := source.Stat() if err != nil { return err } target, err := os.OpenFile(targetPath, os.O_CREATE|os.O_EXCL|os.O_WRONLY, info.Mode().Perm()) if err != nil { return err } defer target.Close() if err := unix.IoctlFileClone(int(target.Fd()), int(source.Fd())); err == nil { return nil } if _, err := source.Seek(0, io.SeekStart); err != nil { return err } if _, err := target.Seek(0, io.SeekStart); err != nil { return err } if _, err := io.Copy(target, source); err != nil { return err } if err := target.Sync(); err != nil { return err } if err := target.Chmod(info.Mode().Perm()); err != nil { return err } return nil } func ReadNormalizedLines(path string) ([]string, error) { data, err := os.ReadFile(path) if err != nil { return nil, err } var out []string for _, line := range strings.Split(string(data), "\n") { if strings.HasSuffix(line, "\r") { line = strings.TrimSuffix(line, "\r") } if idx := strings.Index(line, "#"); idx >= 0 { line = line[:idx] } line = strings.TrimSpace(line) if line == "" { continue } out = append(out, line) } if len(out) == 0 { return nil, fmt.Errorf("file has no entries: %s", path) } return out, nil }