REBOL [
title: "Diff directorie"
file: %diff-directories.r
date: 03/12/2010
author: "nicolas"
purpose: {
Give a directory in parameter, 
=> first launch return a block with the content of the directory
=> next launch, compare content of the directory with save data in a file named old-lst.txt and return new files and file that has changed
}
]

diff-directories: func [dir [file!] /date /full /local new-lst old-lst file diff diff-lst] [
	diff-lst: []
	new-lst: read dir
	forall new-lst [new-lst: back insert next new-lst get-modes dir/(new-lst/1) 'modification-date]
	old-lst: any [all [exists? fic: %old-lst.txt load fic] make block! 20]
	save %old-lst.txt new-lst
	if 0 < length? old-lst [
		if any [date full] [
			forskip new-lst 2 [
				file: pick new-lst 1
				new-date: select new-lst file
				old-date: select old-lst file
				if any [not new-date not old-date 0:00 < diff: difference new-date old-date][append diff-lst file]
			]
		]
	]	
	if not date [
		new-lst: extract new-lst 2
		either 0 < length? old-lst [
			old-lst: extract old-lst 2
			diff: difference new-lst old-lst
			append diff-lst diff
		][append diff-lst new-lst]
	]
	return copy diff-lst
]