From 61203eee0422bbb839356bfbfe196ef794fd91b3 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Fri, 29 Apr 2016 10:43:07 +0200 Subject: Add files:scan warning when NFD or incompatible encoding found --- apps/files/command/scan.php | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'apps') diff --git a/apps/files/command/scan.php b/apps/files/command/scan.php index f607b3e1af1..1ae04c585bb 100644 --- a/apps/files/command/scan.php +++ b/apps/files/command/scan.php @@ -89,6 +89,15 @@ class Scan extends Base { ); } + public function checkScanWarning($fullPath, OutputInterface $output) { + $normalizedPath = basename(\OC\Files\Filesystem::normalizePath($fullPath)); + $path = basename($fullPath); + + if ($normalizedPath !== $path) { + $output->writeln("\tEntry \"" . $fullPath . '" will not be accessible due to incompatible encoding'); + } + } + protected function scanFiles($user, $path, $verbose, OutputInterface $output) { $scanner = new \OC\Files\Utils\Scanner($user, \OC::$server->getDatabaseConnection(), \OC::$server->getLogger()); # check on each file/folder if there was a user interrupt (ctrl-c) and throw an exception @@ -126,6 +135,12 @@ class Scan extends Base { } }); } + $scanner->listen('\OC\Files\Utils\Scanner', 'scanFile', function($path) use ($output) { + $this->checkScanWarning($path, $output); + }); + $scanner->listen('\OC\Files\Utils\Scanner', 'scanFolder', function($path) use ($output) { + $this->checkScanWarning($path, $output); + }); try { $scanner->scan($path); @@ -133,7 +148,9 @@ class Scan extends Base { $output->writeln("Home storage for user $user not writable"); $output->writeln("Make sure you're running the scan command only as the user the web server runs as"); } catch (\Exception $e) { - # exit the function if ctrl-c has been pressed + if ($e->getMessage() !== 'ctrl-c') { + $output->writeln('Exception while scanning: ' . $e->getMessage() . "\n" . $e->getTraceAsString() . ''); + } return; } } -- cgit v1.2.3