diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2021-03-22 06:49:53 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-22 06:49:53 -0700 |
commit | c1f2f75f03853a7cd04dd5e5495700e5fdffcafd (patch) | |
tree | dc7b0945cb241b1f869a6048dcc54d84a13b2509 /vendor/github.com/coreos/go-systemd/v22/activation/files_unix.go | |
parent | df1d5618dd4b46f4c24d0c196d6fbaab4e34640f (diff) | |
parent | 3b609a706d0e940a244ca7643e2afb7f3c996711 (diff) | |
download | podman-c1f2f75f03853a7cd04dd5e5495700e5fdffcafd.tar.gz podman-c1f2f75f03853a7cd04dd5e5495700e5fdffcafd.tar.bz2 podman-c1f2f75f03853a7cd04dd5e5495700e5fdffcafd.zip |
Merge pull request #9779 from containers/dependabot/go_modules/github.com/coreos/go-systemd/v22-22.3.0
Bump github.com/coreos/go-systemd/v22 from 22.1.0 to 22.3.0
Diffstat (limited to 'vendor/github.com/coreos/go-systemd/v22/activation/files_unix.go')
-rw-r--r-- | vendor/github.com/coreos/go-systemd/v22/activation/files_unix.go | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/vendor/github.com/coreos/go-systemd/v22/activation/files_unix.go b/vendor/github.com/coreos/go-systemd/v22/activation/files_unix.go new file mode 100644 index 000000000..fc7db98fb --- /dev/null +++ b/vendor/github.com/coreos/go-systemd/v22/activation/files_unix.go @@ -0,0 +1,69 @@ +// Copyright 2015 CoreOS, Inc. +// +// 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 !windows + +// Package activation implements primitives for systemd socket activation. +package activation + +import ( + "os" + "strconv" + "strings" + "syscall" +) + +const ( + // listenFdsStart corresponds to `SD_LISTEN_FDS_START`. + listenFdsStart = 3 +) + +// Files returns a slice containing a `os.File` object for each +// file descriptor passed to this process via systemd fd-passing protocol. +// +// The order of the file descriptors is preserved in the returned slice. +// `unsetEnv` is typically set to `true` in order to avoid clashes in +// fd usage and to avoid leaking environment flags to child processes. +func Files(unsetEnv bool) []*os.File { + if unsetEnv { + defer os.Unsetenv("LISTEN_PID") + defer os.Unsetenv("LISTEN_FDS") + defer os.Unsetenv("LISTEN_FDNAMES") + } + + pid, err := strconv.Atoi(os.Getenv("LISTEN_PID")) + if err != nil || pid != os.Getpid() { + return nil + } + + nfds, err := strconv.Atoi(os.Getenv("LISTEN_FDS")) + if err != nil || nfds == 0 { + return nil + } + + names := strings.Split(os.Getenv("LISTEN_FDNAMES"), ":") + + files := make([]*os.File, 0, nfds) + for fd := listenFdsStart; fd < listenFdsStart+nfds; fd++ { + syscall.CloseOnExec(fd) + name := "LISTEN_FD_" + strconv.Itoa(fd) + offset := fd - listenFdsStart + if offset < len(names) && len(names[offset]) > 0 { + name = names[offset] + } + files = append(files, os.NewFile(uintptr(fd), name)) + } + + return files +} |