summaryrefslogtreecommitdiffstats
path: root/build-aux/move-if-change
blob: 03dd02ef85f3b6cfabffbacd65b7445724bf194c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh
# Like mv $1 $2, but if the files are the same, just delete $1.
# Status is zero if successful, nonzero otherwise.
#
# Copyright (C) 2011 Free Software Foundation, Inc.
# License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
# This is free software: you are free to change and redistribute it.
# There is NO WARRANTY, to the extent permitted by law."

if test -r "$2" && cmp -- "$1" "$2" >/dev/null; then
  rm -f -- "$1"
else
  if mv -f -- "$1" "$2"; then :; else
    # Ignore failure due to a concurrent move-if-change.
    test -r "$2" && cmp -- "$1" "$2" >/dev/null && rm -f -- "$1"
  fi
fi