...

Source file src/github.com/lib/pq/user_windows.go

Documentation: github.com/lib/pq

     1  // Package pq is a pure Go Postgres driver for the database/sql package.
     2  package pq
     3  
     4  import (
     5  	"path/filepath"
     6  	"syscall"
     7  )
     8  
     9  // Perform Windows user name lookup identically to libpq.
    10  //
    11  // The PostgreSQL code makes use of the legacy Win32 function
    12  // GetUserName, and that function has not been imported into stock Go.
    13  // GetUserNameEx is available though, the difference being that a
    14  // wider range of names are available.  To get the output to be the
    15  // same as GetUserName, only the base (or last) component of the
    16  // result is returned.
    17  func userCurrent() (string, error) {
    18  	pw_name := make([]uint16, 128)
    19  	pwname_size := uint32(len(pw_name)) - 1
    20  	err := syscall.GetUserNameEx(syscall.NameSamCompatible, &pw_name[0], &pwname_size)
    21  	if err != nil {
    22  		return "", ErrCouldNotDetectUsername
    23  	}
    24  	s := syscall.UTF16ToString(pw_name)
    25  	u := filepath.Base(s)
    26  	return u, nil
    27  }
    28  

View as plain text