summary refs log tree commit diff stats
path: root/ranger.rb
stat options
Period:
Authors:

Commits per author per week (path 'ranger.rb')

AuthorW44 2024W45 2024W46 2024W47 2024Total
Total00000
> ^
c8c92966 ^
b68d28c1 ^
c8c92966 ^
dd6b4723 ^
76791a70 ^
d4598be6 ^
76791a70 ^
8f2f1767 ^

ab41c776 ^
d906b0dd ^
d1a1173d ^

8f2f1767 ^
ab41c776 ^
d906b0dd ^
d1a1173d ^



39e5b4c6 ^
d1a1173d ^


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

                                                                 
 
                                                                         
 
                                                     
                                                           
                                                               
                                               

                                                        
 
                        

                                                        
 
 
                      



                                       
                                                                        


                                  
# This file is part of ranger, the console file manager.
# License: GNU GPL version 3, see the file "AUTHORS" for details.

"""Functions to escape metacharacters of arguments for shell commands."""

META_CHARS = (' ', "'", '"', '`', '&', '|', ';', '#',
              '$', '!', '(', ')', '[', ']', '<', '>', '\t')
UNESCAPABLE = set(map(chr, list(range(9)) + list(range(10, 32))
                      + list(range(127, 256))))
META_DICT = dict([(mc, '\\' + mc) for mc in META_CHARS])


def shell_quote(string):
    """Escapes by quoting"""
    return "'" + str(string).replace("'", "'\\''") + "'"


def shell_escape(arg):
    """Escapes by adding backslashes"""
    arg = str(arg)
    if UNESCAPABLE & set(arg):
        return shell_quote(arg)
    arg = arg.replace('\\', '\\\\')  # make sure this comes at the start
    for k, v in META_DICT.items():
        arg = arg.replace(k, v)
    return arg