Browse Source

Escape cmdline arguments that have spaces in them

`borg info` command shows the command line that was used to create the archive.
If the command line has arguments with spaces in them the printed command will
not work. This commit will escape these arguments by enclosing it to quotation
marks.
Lauri Niskanen 9 years ago
parent
commit
d0c56a9a69
1 changed files with 4 additions and 1 deletions
  1. 4 1
      borg/archiver.py

+ 4 - 1
borg/archiver.py

@@ -725,6 +725,9 @@ class Archiver:
     @with_archive
     @with_archive
     def do_info(self, args, repository, manifest, key, archive, cache):
     def do_info(self, args, repository, manifest, key, archive, cache):
         """Show archive details such as disk space used"""
         """Show archive details such as disk space used"""
+        def format_cmdline(cmdline):
+            return remove_surrogates(' '.join(shlex.quote(x) for x in cmdline))
+
         stats = archive.calc_stats(cache)
         stats = archive.calc_stats(cache)
         print('Name:', archive.name)
         print('Name:', archive.name)
         print('Fingerprint: %s' % hexlify(archive.id).decode('ascii'))
         print('Fingerprint: %s' % hexlify(archive.id).decode('ascii'))
@@ -732,7 +735,7 @@ class Archiver:
         print('Username:', archive.metadata[b'username'])
         print('Username:', archive.metadata[b'username'])
         print('Time (start): %s' % format_time(to_localtime(archive.ts)))
         print('Time (start): %s' % format_time(to_localtime(archive.ts)))
         print('Time (end):   %s' % format_time(to_localtime(archive.ts_end)))
         print('Time (end):   %s' % format_time(to_localtime(archive.ts_end)))
-        print('Command line:', remove_surrogates(' '.join(archive.metadata[b'cmdline'])))
+        print('Command line:', format_cmdline(archive.metadata[b'cmdline']))
         print('Number of files: %d' % stats.nfiles)
         print('Number of files: %d' % stats.nfiles)
         print()
         print()
         print(str(stats))
         print(str(stats))