diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2019-11-13 20:19:54 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-13 20:19:54 +0100 |
commit | 225f22b9d5dfd0d1582a56530142fe8ffb960a91 (patch) | |
tree | 4dcc994bb1e48602e5be5f42b7599abdc0cc7937 /vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go | |
parent | 15220af08ce2346686e54851a6d498ec573e950c (diff) | |
parent | 6003033adae775f1d725b05231a246a4462ae669 (diff) | |
download | podman-225f22b9d5dfd0d1582a56530142fe8ffb960a91.tar.gz podman-225f22b9d5dfd0d1582a56530142fe8ffb960a91.tar.bz2 podman-225f22b9d5dfd0d1582a56530142fe8ffb960a91.zip |
Merge pull request #4506 from TomSweeneyRedHat/dev/tsweeney/bump_buildah1.11.5
Bump to Buildah v1.11.5
Diffstat (limited to 'vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go')
-rw-r--r-- | vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go b/vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go new file mode 100644 index 000000000..68b37c4b3 --- /dev/null +++ b/vendor/github.com/prometheus/procfs/internal/util/sysreadfile.go @@ -0,0 +1,45 @@ +// Copyright 2018 The Prometheus Authors +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// +build linux,!appengine + +package util + +import ( + "bytes" + "os" + "syscall" +) + +// SysReadFile is a simplified ioutil.ReadFile that invokes syscall.Read directly. +// https://github.com/prometheus/node_exporter/pull/728/files +func SysReadFile(file string) (string, error) { + f, err := os.Open(file) + if err != nil { + return "", err + } + defer f.Close() + + // On some machines, hwmon drivers are broken and return EAGAIN. This causes + // Go's ioutil.ReadFile implementation to poll forever. + // + // Since we either want to read data or bail immediately, do the simplest + // possible read using syscall directly. + b := make([]byte, 128) + n, err := syscall.Read(int(f.Fd()), b) + if err != nil { + return "", err + } + + return string(bytes.TrimSpace(b[:n])), nil +} |