diff options
author | Thomas Hipp <thipp@suse.de> | 2017-09-15 09:37:45 +0200 |
---|---|---|
committer | Thomas Hipp <thipp@suse.de> | 2017-09-15 10:01:36 +0200 |
commit | 651fe263818d1c4ad5ba8adf8c8485ce647dc40b (patch) | |
tree | fc73bb74bdcce03c48169ce624698bf240b55e6b /vendor/golang.org/x/sys/windows/svc/example/install.go | |
parent | 23635373aed10aab286a2436459670b686b581bb (diff) | |
download | terraform-provider-libvirt-651fe263818d1c4ad5ba8adf8c8485ce647dc40b.tar terraform-provider-libvirt-651fe263818d1c4ad5ba8adf8c8485ce647dc40b.tar.gz |
vendor: update deps
This updates all vendored packages. The Glide config has been changed to
try and stick to versions instead of commit IDs if possible.
Signed-off-by: Thomas Hipp <thipp@suse.de>
Diffstat (limited to 'vendor/golang.org/x/sys/windows/svc/example/install.go')
-rw-r--r-- | vendor/golang.org/x/sys/windows/svc/example/install.go | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/vendor/golang.org/x/sys/windows/svc/example/install.go b/vendor/golang.org/x/sys/windows/svc/example/install.go new file mode 100644 index 00000000..39cb00d2 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/svc/example/install.go @@ -0,0 +1,92 @@ +// Copyright 2012 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +package main + +import ( + "fmt" + "os" + "path/filepath" + + "golang.org/x/sys/windows/svc/eventlog" + "golang.org/x/sys/windows/svc/mgr" +) + +func exePath() (string, error) { + prog := os.Args[0] + p, err := filepath.Abs(prog) + if err != nil { + return "", err + } + fi, err := os.Stat(p) + if err == nil { + if !fi.Mode().IsDir() { + return p, nil + } + err = fmt.Errorf("%s is directory", p) + } + if filepath.Ext(p) == "" { + p += ".exe" + fi, err := os.Stat(p) + if err == nil { + if !fi.Mode().IsDir() { + return p, nil + } + err = fmt.Errorf("%s is directory", p) + } + } + return "", err +} + +func installService(name, desc string) error { + exepath, err := exePath() + if err != nil { + return err + } + m, err := mgr.Connect() + if err != nil { + return err + } + defer m.Disconnect() + s, err := m.OpenService(name) + if err == nil { + s.Close() + return fmt.Errorf("service %s already exists", name) + } + s, err = m.CreateService(name, exepath, mgr.Config{DisplayName: desc}, "is", "auto-started") + if err != nil { + return err + } + defer s.Close() + err = eventlog.InstallAsEventCreate(name, eventlog.Error|eventlog.Warning|eventlog.Info) + if err != nil { + s.Delete() + return fmt.Errorf("SetupEventLogSource() failed: %s", err) + } + return nil +} + +func removeService(name string) error { + m, err := mgr.Connect() + if err != nil { + return err + } + defer m.Disconnect() + s, err := m.OpenService(name) + if err != nil { + return fmt.Errorf("service %s is not installed", name) + } + defer s.Close() + err = s.Delete() + if err != nil { + return err + } + err = eventlog.Remove(name) + if err != nil { + return fmt.Errorf("RemoveEventLogSource() failed: %s", err) + } + return nil +} |