mirror of
https://github.com/rwinkhart/go-winio.git
synced 2026-09-06 09:07:18 -04:00
Make local mksyscall_windows.go forks less forked
At this point points of difference between the three local mksyscall_windows.go implementations and golang.org/x/sys/windows/mkwinsyscall v0.0.0-20210104204734-6f8348627aad are: - pkg/etw: Deduplicates imported functions due to multiple calling APIs - pkg/security and vhd: Forced UTF-16 mode, not checking A/W suffix. I also removed cosmetic differences between these two implementations. `go generate` reports no changes with these updates. Signed-off-by: Paul "TBBle" Hampson <Paul.Hampson@Pobox.com>
This commit is contained in:
@@ -2,6 +2,8 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
|
// Hard-coding unicode mode for VHD library.
|
||||||
|
|
||||||
// +build ignore
|
// +build ignore
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -72,7 +74,6 @@ var (
|
|||||||
filename = flag.String("output", "", "output file name (standard output if omitted)")
|
filename = flag.String("output", "", "output file name (standard output if omitted)")
|
||||||
printTraceFlag = flag.Bool("trace", false, "generate print statement after every syscall")
|
printTraceFlag = flag.Bool("trace", false, "generate print statement after every syscall")
|
||||||
systemDLL = flag.Bool("systemdll", true, "whether all DLLs should be loaded from the Windows system directory")
|
systemDLL = flag.Bool("systemdll", true, "whether all DLLs should be loaded from the Windows system directory")
|
||||||
winio = flag.Bool("winio", false, "import go-winio")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func trim(s string) string {
|
func trim(s string) string {
|
||||||
@@ -321,12 +322,6 @@ func (r *Rets) SetErrorCode() string {
|
|||||||
const code = `if r0 != 0 {
|
const code = `if r0 != 0 {
|
||||||
%s = %sErrno(r0)
|
%s = %sErrno(r0)
|
||||||
}`
|
}`
|
||||||
const hrCode = `if int32(r0) < 0 {
|
|
||||||
if r0&0x1fff0000 == 0x00070000 {
|
|
||||||
r0 &= 0xffff
|
|
||||||
}
|
|
||||||
%s = %sErrno(r0)
|
|
||||||
}`
|
|
||||||
if r.Name == "" && !r.ReturnsError {
|
if r.Name == "" && !r.ReturnsError {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
@@ -334,12 +329,8 @@ func (r *Rets) SetErrorCode() string {
|
|||||||
return r.useLongHandleErrorCode("r1")
|
return r.useLongHandleErrorCode("r1")
|
||||||
}
|
}
|
||||||
if r.Type == "error" {
|
if r.Type == "error" {
|
||||||
if r.Name == "hr" {
|
|
||||||
return fmt.Sprintf(hrCode, r.Name, syscalldot())
|
|
||||||
} else {
|
|
||||||
return fmt.Sprintf(code, r.Name, syscalldot())
|
return fmt.Sprintf(code, r.Name, syscalldot())
|
||||||
}
|
}
|
||||||
}
|
|
||||||
s := ""
|
s := ""
|
||||||
switch {
|
switch {
|
||||||
case r.Type[0] == '*':
|
case r.Type[0] == '*':
|
||||||
@@ -639,18 +630,6 @@ func (f *Fn) HasStringParam() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
var uniqDllFuncName = make(map[string]bool)
|
|
||||||
|
|
||||||
// IsNotDuplicate is true if f is not a duplicated function
|
|
||||||
func (f *Fn) IsNotDuplicate() bool {
|
|
||||||
funcName := f.DLLFuncName()
|
|
||||||
if uniqDllFuncName[funcName] == false {
|
|
||||||
uniqDllFuncName[funcName] = true
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// HelperName returns name of function f helper.
|
// HelperName returns name of function f helper.
|
||||||
func (f *Fn) HelperName() string {
|
func (f *Fn) HelperName() string {
|
||||||
if !f.HasStringParam() {
|
if !f.HasStringParam() {
|
||||||
@@ -817,9 +796,6 @@ func (src *Source) Generate(w io.Writer) error {
|
|||||||
src.ExternalImport("golang.org/x/sys/windows")
|
src.ExternalImport("golang.org/x/sys/windows")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if *winio {
|
|
||||||
src.ExternalImport("github.com/Microsoft/go-winio")
|
|
||||||
}
|
|
||||||
if packageName != "syscall" {
|
if packageName != "syscall" {
|
||||||
src.Import("syscall")
|
src.Import("syscall")
|
||||||
}
|
}
|
||||||
@@ -831,9 +807,6 @@ func (src *Source) Generate(w io.Writer) error {
|
|||||||
if !*systemDLL {
|
if !*systemDLL {
|
||||||
return syscalldot() + "NewLazyDLL(" + arg + ")"
|
return syscalldot() + "NewLazyDLL(" + arg + ")"
|
||||||
}
|
}
|
||||||
if strings.HasPrefix(dll, "api_") || strings.HasPrefix(dll, "ext_") {
|
|
||||||
arg = strings.Replace(arg, "_", "-", -1)
|
|
||||||
}
|
|
||||||
switch pkgtype {
|
switch pkgtype {
|
||||||
case pkgStd:
|
case pkgStd:
|
||||||
return syscalldot() + "NewLazyDLL(sysdll.Add(" + arg + "))"
|
return syscalldot() + "NewLazyDLL(sysdll.Add(" + arg + "))"
|
||||||
@@ -944,7 +917,7 @@ var (
|
|||||||
{{define "dlls"}}{{range .DLLs}} mod{{.}} = {{newlazydll .}}
|
{{define "dlls"}}{{range .DLLs}} mod{{.}} = {{newlazydll .}}
|
||||||
{{end}}{{end}}
|
{{end}}{{end}}
|
||||||
|
|
||||||
{{define "funcnames"}}{{range .Funcs}}{{if .IsNotDuplicate}} proc{{.DLLFuncName}} = mod{{.DLLName}}.NewProc("{{.DLLFuncName}}"){{end}}
|
{{define "funcnames"}}{{range .Funcs}} proc{{.DLLFuncName}} = mod{{.DLLName}}.NewProc("{{.DLLFuncName}}")
|
||||||
{{end}}{{end}}
|
{{end}}{{end}}
|
||||||
|
|
||||||
{{define "helperbody"}}
|
{{define "helperbody"}}
|
||||||
|
|||||||
@@ -599,7 +599,7 @@ func (p *Fn) MaybeAbsent() string {
|
|||||||
|
|
||||||
// IsUTF16 is true, if f is W (utf16) function. It is false
|
// IsUTF16 is true, if f is W (utf16) function. It is false
|
||||||
// for all A (ascii) functions.
|
// for all A (ascii) functions.
|
||||||
func (f *Fn) IsUTF16() bool {
|
func (_ *Fn) IsUTF16() bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user