diff options
author | Morris Jobke <hey@morrisjobke.de> | 2016-05-02 09:41:12 +0200 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2016-05-02 09:41:12 +0200 |
commit | 6b12f96b14ef4c560ae9be436caf2619739d74ae (patch) | |
tree | 8e147ec99cd933595acb0ee77ca86e8c097338e5 /apps/files | |
parent | a323111bd1285f74aa405c240be86b5de5d0c502 (diff) | |
parent | 4326d73ff6dc4514163dbbe4164342cef8deba0a (diff) | |
download | nextcloud-server-6b12f96b14ef4c560ae9be436caf2619739d74ae.tar.gz nextcloud-server-6b12f96b14ef4c560ae9be436caf2619739d74ae.zip |
Merge pull request #24341 from owncloud/scan-nfd-showwarning
Add files:scan warning when NFD or incompatible encoding found
Diffstat (limited to 'apps/files')
-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; } } |