summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorRenato Botelho <garga@FreeBSD.org>2013-01-28 11:28:35 -0200
committerRenato Botelho <garga@FreeBSD.org>2013-01-28 11:28:35 -0200
commita2219caf9ca5a87809a35707805660d68adfd484 (patch)
treefa8785b70f5763d3512af7b04c97cb8118d9b79d /etc
parentc848008b51f3659fe2a9eb147f047ae62c3e9f7d (diff)
downloadpfsense-a2219caf9ca5a87809a35707805660d68adfd484.zip
pfsense-a2219caf9ca5a87809a35707805660d68adfd484.tar.gz
Add option filter to return_dir_as_array()
- Add a 2nd parameter, default empty, that allows to pass a regex to filter files it'll return - While I'm here, simplify code removinf $canadd var
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/util.inc15
1 files changed, 8 insertions, 7 deletions
diff --git a/etc/inc/util.inc b/etc/inc/util.inc
index 0cc2692..988ddff 100644
--- a/etc/inc/util.inc
+++ b/etc/inc/util.inc
@@ -1331,23 +1331,24 @@ function update_filter_reload_status($text) {
file_put_contents("{$g['varrun_path']}/filter_reload_status", $text);
}
-/****f* util/return_dir_as_array
+/****** util/return_dir_as_array
* NAME
* return_dir_as_array - Return a directory's contents as an array.
* INPUTS
- * $dir - string containing the path to the desired directory.
+ * $dir - string containing the path to the desired directory.
+ * $filter_regex - string containing a regular expression to filter file names. Default empty.
* RESULT
* $dir_array - array containing the directory's contents. This array will be empty if the path specified is invalid.
******/
-function return_dir_as_array($dir) {
+function return_dir_as_array($dir, $filter_regex = '') {
$dir_array = array();
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
- $canadd = 0;
- if($file == ".") $canadd = 1;
- if($file == "..") $canadd = 1;
- if($canadd == 0)
+ if (($file == ".") || ($file == ".."))
+ continue;
+
+ if (empty($filter_regex) || preg_match($filter_regex, $file))
array_push($dir_array, $file);
}
closedir($dh);
OpenPOWER on IntegriCloud