func bootTime()

in providers/aix/boottime_aix_ppc64.go [57:78]


func bootTime(filename string) (time.Time, error) {
	// Get boot time from /etc/utmp
	file, err := os.Open(filename)
	if err != nil {
		return time.Time{}, fmt.Errorf("failed to get host uptime: cannot open /etc/utmp: %w", err)
	}

	defer file.Close()

	for {
		var utmp utmp
		if err := binary.Read(file, binary.BigEndian, &utmp); err != nil {
			break
		}

		if utmp.Type == typeBootTime {
			return time.Unix(utmp.Time, 0), nil
		}
	}

	return time.Time{}, fmt.Errorf("failed to get host uptime: no utmp record: %w", err)
}