diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | Makefile | 51 | ||||
-rwxr-xr-x | save-time.in | 22 | ||||
-rw-r--r-- | save-time.service.in | 12 |
4 files changed, 87 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8768b74 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +save-time +save-time.service diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f91ca1a --- /dev/null +++ b/Makefile @@ -0,0 +1,51 @@ +# +# save-time - script to carry system time across reboot +# +# Copyright (c) 2016 Erich Eckner <opensource at eckner dot net> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +# USA. +# + +DESTDIR = +BINDIR = /usr/bin +CACHEDIR = /var/cache +SYSTEMDDIR = /usr/lib/systemd/system + +VERSION = 0.0 + +all: save-time save-time.service + +%: %.in + sed "s/#VERSION#/$(VERSION)/; s@#BINDIR#@$(BINDIR)@; s@#CACHEDIR#@$(CACHEDIR)@" $< > $@ + [ "$@" = "save-time" ] && chmod +x "$@" || true + +.PHONY: install dist clean + +install: all + install -D -m0755 -t $(DESTDIR)$(BINDIR) save-time + install -D -m0644 -t $(DESTDIR)$(SYSTEMDDIR) save-time.service + +clean: + rm -f save-time save-time.service + +dist: clean + git status --porcelain 2> /dev/null | grep -q "\S" && (git add .; git commit -m"neue Version: $(VERSION)") || true + ! git tag -d v$(VERSION) 2> /dev/null + git tag v$(VERSION) + git push + git push --tags + +# End of file diff --git a/save-time.in b/save-time.in new file mode 100755 index 0000000..dd634b8 --- /dev/null +++ b/save-time.in @@ -0,0 +1,22 @@ +#!/bin/bash + +# save-time version #VERSION# + +# Save the time upon shutdown for seeding system clock on next boot. +# This is intended to give roughly correct system time on machines +# without rtc, but which are powered on most of the time. + +case "$1" in + 'start') + if [ -f '#CACHEDIR#/time' ]; then + date -s@"$(cat '#CACHEDIR#/time')" + fi + ;; + 'stop') + date +%s > '#CACHEDIR#/time' + ;; + *) + >&2 echo "usage: ${0##*/} (start|stop)" + exit 1 + ;; +esac diff --git a/save-time.service.in b/save-time.service.in new file mode 100644 index 0000000..c01137f --- /dev/null +++ b/save-time.service.in @@ -0,0 +1,12 @@ +[Unit] +Description=Save time on shutdown for next boot +Before=ntpdate.service ntpd.service + +[Service] +Type=oneshot +RemainAfterExit=true +ExecStart=#BINDIR#/save-time start +ExecStop=#BINDIR#/save-time stop + +[Install] +WantedBy=multi-user.target |