diff options
author | Vincent Petry <pvince81@owncloud.com> | 2016-04-29 10:43:07 +0200 |
---|---|---|
committer | Vincent Petry <pvince81@owncloud.com> | 2016-04-29 16:18:59 +0200 |
commit | 61203eee0422bbb839356bfbfe196ef794fd91b3 (patch) | |
tree | b6a31475da14eea21810c8031193eb6726cba8c6 /apps | |
parent | daf5f793a472b03e67e7f96b29367b544694645d (diff) | |
download | nextcloud-server-61203eee0422bbb839356bfbfe196ef794fd91b3.tar.gz nextcloud-server-61203eee0422bbb839356bfbfe196ef794fd91b3.zip |
Add files:scan warning when NFD or incompatible encoding found
Diffstat (limited to 'apps')
-rw-r--r-- | apps/files/command/scan.php | 19 |
1 files changed, 18 insertions, 1 deletions
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("\t<error>Entry \"" . $fullPath . '" will not be accessible due to incompatible encoding</error>'); + } + } + 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("<error>Home storage for user $user not writable</error>"); $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('<error>Exception while scanning: ' . $e->getMessage() . "\n" . $e->getTraceAsString() . '</error>'); + } return; } } |