From 24faac757d7169dd2f26a15c54fb9033bdf6b3da Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Wed, 15 Mar 2006 17:03:44 +0000
Subject: [PATCH] preg_files doit savoir gerer les liens symboliques recursifs

---
 ecrire/inc/flock.php | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/ecrire/inc/flock.php b/ecrire/inc/flock.php
index 63617ea6b5..0509a6b882 100644
--- a/ecrire/inc/flock.php
+++ b/ecrire/inc/flock.php
@@ -193,7 +193,7 @@ function creer_repertoire($base, $subdir) {
 // si $dir = 'rep/sous_rep_' au lieu de 'rep/sous_rep/' on scanne 'rep/' et on
 // applique un pattern '^rep/sous_rep_'
 //
-function preg_files($dir, $pattern=-1 /* AUTO */ ) {
+function preg_files($dir, $pattern=-1 /* AUTO */, $recurs=array()) {
 	if ($pattern == -1)
 		$pattern = "^$dir";
 	$fichiers = array();
@@ -212,9 +212,11 @@ function preg_files($dir, $pattern=-1 /* AUTO */ ) {
 				if (is_file("$dir/$f")) {
 					if (preg_match(",$pattern,i", "$dir/$f"))
 						$fichiers[] = "$dir/$f";
-				} else if (is_dir("$dir/$f")) {
+				} else if (is_dir("$dir/$f")
+				AND !in_array(realpath("$dir/$f"), $recurs)) {
+					array_push($recurs, realpath("$dir/$f"));
 					$beginning = $fichiers;
-					$end = preg_files("$dir/$f/", $pattern);
+					$end = preg_files("$dir/$f/", $pattern, $recurs);
 					$fichiers = array_merge((array)$beginning, (array)$end);
 				}
 			}
-- 
GitLab