| // Package pq is a pure Go Postgres driver for the database/sql package. |
| package pq |
| |
| import ( |
| "path/filepath" |
| "syscall" |
| ) |
| |
| // Perform Windows user name lookup identically to libpq. |
| // |
| // The PostgreSQL code makes use of the legacy Win32 function |
| // GetUserName, and that function has not been imported into stock Go. |
| // GetUserNameEx is available though, the difference being that a |
| // wider range of names are available. To get the output to be the |
| // same as GetUserName, only the base (or last) component of the |
| // result is returned. |
| func userCurrent() (string, error) { |
| pw_name := make([]uint16, 128) |
| pwname_size := uint32(len(pw_name)) - 1 |
| err := syscall.GetUserNameEx(syscall.NameSamCompatible, &pw_name[0], &pwname_size) |
| if err != nil { |
| return "", ErrCouldNotDetectUsername |
| } |
| s := syscall.UTF16ToString(pw_name) |
| u := filepath.Base(s) |
| return u, nil |
| } |