Skip to content

Commit

Permalink
Merge pull request #169 from dcormier/dc/guid
Browse files Browse the repository at this point in the history
Allow guid package to be used on non-Windows GOOS targets
  • Loading branch information
katiewasnothere authored Oct 26, 2021
2 parents 6c24dfa + 892f784 commit 60c1574
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 9 deletions.
9 changes: 0 additions & 9 deletions pkg/guid/guid.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ import (
"encoding/binary"
"fmt"
"strconv"

"golang.org/x/sys/windows"
)

// Variant specifies which GUID variant (or "type") of the GUID. It determines
Expand All @@ -41,13 +39,6 @@ type Version uint8
var _ = (encoding.TextMarshaler)(GUID{})
var _ = (encoding.TextUnmarshaler)(&GUID{})

// GUID represents a GUID/UUID. It has the same structure as
// golang.org/x/sys/windows.GUID so that it can be used with functions expecting
// that type. It is defined as its own type so that stringification and
// marshaling can be supported. The representation matches that used by native
// Windows code.
type GUID windows.GUID

// NewV4 returns a new version 4 (pseudorandom) GUID, as defined by RFC 4122.
func NewV4() (GUID, error) {
var b [16]byte
Expand Down
15 changes: 15 additions & 0 deletions pkg/guid/guid_nonwindows.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// +build !windows

package guid

// GUID represents a GUID/UUID. It has the same structure as
// golang.org/x/sys/windows.GUID so that it can be used with functions expecting
// that type. It is defined as its own type as that is only available to builds
// targeted at `windows`. The representation matches that used by native Windows
// code.
type GUID struct {
Data1 uint32
Data2 uint16
Data3 uint16
Data4 [8]byte
}
10 changes: 10 additions & 0 deletions pkg/guid/guid_windows.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package guid

import "golang.org/x/sys/windows"

// GUID represents a GUID/UUID. It has the same structure as
// golang.org/x/sys/windows.GUID so that it can be used with functions expecting
// that type. It is defined as its own type so that stringification and
// marshaling can be supported. The representation matches that used by native
// Windows code.
type GUID windows.GUID

0 comments on commit 60c1574

Please sign in to comment.