diff options
author | Clint Adams <schizo@debian.org> | 2007-11-12 11:16:06 -0500 |
---|---|---|
committer | Clint Adams <schizo@debian.org> | 2007-11-12 11:16:06 -0500 |
commit | aa2159e1a3eeb0c82bee22c54a8739d578639761 (patch) | |
tree | bbe91d547c94dcd209ebcc79f879b7496f9e699f /remove-shell | |
parent | c2a1c435ef5e7d590328802ce333de410ce40cb6 (diff) | |
download | debianutils-aa2159e1a3eeb0c82bee22c54a8739d578639761.tar.gz |
import all changes from the bzr branch as a single changeset
Diffstat (limited to 'remove-shell')
-rwxr-xr-x | remove-shell | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/remove-shell b/remove-shell new file mode 100755 index 0000000..1e6b739 --- /dev/null +++ b/remove-shell @@ -0,0 +1,40 @@ +#!/bin/sh -e + +if test $# -eq 0 +then + echo usage: $0 shellname '[shellname ...]' 1>&2 + exit 1 +fi + +file=/etc/shells +# I want this to be GUARANTEED to be on the same filesystem as $file +tmpfile=${file}.tmp +otmpfile=${file}.tmp2 + +set -o noclobber + +trap "rm -f $tmpfile $otmpfile" EXIT + +if ! cat $file > $tmpfile +then + cat 1>&2 <<EOF +Either another instance of $0 is running, or it was previously interrupted. +Please examine ${tmpfile} to see if it should be moved onto ${file}. +EOF + exit 1 +fi + +# this is supposed to be reliable, not pretty +for i +do + grep -v "^${i}$" $tmpfile > $otmpfile || true + mv $otmpfile $tmpfile +done + +chmod --reference=$file $tmpfile +chown --reference=$file $tmpfile + +mv $tmpfile $file + +trap "" EXIT +exit 0 |