#!/bin/bash

# script extending find
# adding options:
# -mafter time_spec : specify time after file has been modified
# -mbefore time_spec : specify time on or before file has been modified
# time_spec can be anything the "touch -d time_spec" command accepts
# Author: Arnoud Witt
# date: 2006-02-07

this=`basename $0`

afile=`tempfile`
bfile=`tempfile`

trap "rm -rf $afile $bfile" EXIT

function error()
{
	msg="$*"
	echo "$this: $msg" >&2
	exit 1
}

# main
declare -a args
declare -i x=0
mafter=0
mbefore=0
skiparg=0

for arg
do
	if [[ $mafter -eq 1 ]]
	then
		mafter=0
		skiparg=1
		if touch -d"$arg" $afile
		then
			args[$((x++))]="-newer"
			args[$((x++))]="$afile"
		else
			error "subcommand failed"
		fi
	fi
	
	if [[ $mbefore -eq 1 ]]
	then
		mbefore=0
		skiparg=1
		if touch -d"$arg" $bfile
		then
			args[$((x++))]="-not"
			args[$((x++))]="-newer"
			args[$((x++))]="$bfile"
		else
			error "subcommand failed"
		fi
	fi
	
	if [[ $skiparg -ne 1 ]]
	then
		case $arg in
			-mafter) mafter=1
			;;
			-mbefore) mbefore=1
			;;
			*) args[$((x++))]=$arg
			;;
		esac
	else
		skiparg=0
	fi
done

find "${args[@]}"
