#!/bin/sh # make-backup-file-name -- print the next numbered emacs-style backup file # name for a given file on disk # Author: Noah Friedman # Created: 1994-01-14 # Public domain # $Id: make-backup-file-name,v 1.3 2018/10/12 05:59:44 friedman Exp $ # Commentary: # Usage: make-backup-file-name [filename] # # Return the next emacs-style backup file name for a given file on disk, # based on the VERSION_CONTROL environment variable. # `t' or `numbered' means make numeric backup versions unconditionally. # `nil' or `existing' means make them for files that have some already. # `never' or `simple' means do not make them. # Code: name=$1 case $VERSION_CONTROL in never | simple ) result=$name~ ;; * ) highest=`for f in "$1".~*~ ; do echo "$f"; done | sed -ne '/.*\.~\([0-9][0-9]*\)~$/{s//\1/p;}' | sort -rn | sed -e 1q` case $highest in '' ) highest=0 ;; esac case $VERSION_CONTROL in nil | existing ) case $highest in 0 ) result=$name~ ;; esac ;; t | numbered | * ) next=`expr $highest + 1` result=$name.~$next~ ;; esac ;; esac echo "$result" # make-backup-file-name ends here