You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: permissions_linux.go
    path of file: ./repos/sliver/vendor/tailscale.com/doctor/permissions
    
    the code of the file until where you have to start completion: // Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause

//go:build linux

package permissions

import (
	"fmt"
	"strings"
	"unsafe"

	"golang.org/x/sys/unix"
	"tailscale.com/types/logger"
)

func permissionsImpl(logf logger.Logf) error {
	// NOTE: getresuid and getresgid never fail unless passed an
	// invalid address.
	var ruid, euid, suid uint64
	unix.Syscall(unix.SYS_GETRESUID,
		uintptr(unsafe.Pointer(&ruid)),
		uintptr(unsafe.Pointer(&euid)),
		uintptr(unsafe.Pointer(&suid)),
	)

	var rgid, egid, sgid uint64
	unix.Syscall(unix.SYS_GETRESGID,
		uintptr(unsafe.Pointer(&rgid)),
		uintptr(unsafe.Pointer(&egid)),
		uintptr(unsafe.Pointer(&sgid)),
	)

	groups, _ := unix.Getgroups()

	var buf strings.Builder
	fmt.Fprintf(&buf, "ruid=%s euid=%s suid=%s rgid=%s egid=%s sgid=%s groups=%s",
		formatUserID(ruid), formatUserID(euid), formatUserID(suid),
		formatGroupID(rgid), formatGroupID(egid), formatGroupID(sgid),
		formatGroups(groups),
	)

	// Get process capabilities
	var (
		capHeader = unix.CapUserHeader{
			Version: unix.LINUX_CAPABILITY_VERSION_3,
			Pid:     0, // 0 means 'ourselves'
		}
		capData unix.CapUserData
	)

	if err := unix.Capget(&capHeader, &capDat
    
func permissionsImpl(logf logger.Logf) error {
	// NOTE: getresuid and getresgid never fail unless passed an
	// invalid address.
	var ruid, euid, suid uint64
	unix.Syscall(unix.SYS_GETRESUID,
		uintptr(unsafe.Pointer(&ruid)),
		uintptr(unsafe.Pointer(&euid)),
		uintptr(unsafe.Pointer(&suid)),
	)

	var rgid, egid, sgid uint64
	unix.Syscall(unix.SYS_GETRESGID,
		uintptr(unsafe.Pointer(&rgid)),
		uintptr(unsafe.Pointer(&egid)),
		uintptr(unsafe.Pointer(&sgid)),
	)

	groups, _ := unix.Getgroups()

	var buf strings.Builder
	fmt.Fprintf(&buf, "ruid=%s euid=%s suid=%s rgid=%s egid=%s sgid=%s groups=%s",
		formatUserID(ruid), formatUserID(euid), formatUserID(suid),
		formatGroupID(rgid), formatGroupID(egid), formatGroupID(sgid),
		formatGroups(groups),
	)

	// Get process capabilities
	var (
		capHeader = unix.CapUserHeader{
			Version: unix.LINUX_CAPABILITY_VERSION_3,
			Pid:     0, // 0 means 'ourselves'
		}
		capData unix.CapUserData
	)

	if err := unix.Capget(&capHeader, &capData); err != nil {
		fmt.Fprintf(&buf, " caperr=%v", err)
	} else {
		fmt.Fprintf(&buf, " cap_effective=%08x cap_permitted=%08x cap_inheritable=%08x",
			capData.Effective, capData.Permitted, capData.Inheritable,
		)
	}

	logf("%s", buf.String())
	return nil
}