Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Merge branch 'pqiv-rifle' of https://github.com/noctuid/ranger | hut | 2016-03-25 | 1 | -0/+1 |
|\ | |||||
| * | Add pqiv to rifle.conf as image viewer | noctuid | 2016-03-20 | 1 | -0/+1 |
| | | |||||
* | | Add %confdir macro | Ciro Santilli | 2016-03-21 | 2 | -0/+3 |
|/ | |||||
* | Merge branch 'color256' of https://github.com/lverweijen/ranger | hut | 2016-03-20 | 1 | -2/+9 |
|\ | |||||
| * | Support 256 colours if available | lverweijen | 2016-03-08 | 1 | -2/+9 |
| | | |||||
* | | Merge branch 'pqiv' of https://github.com/noctuid/ranger | hut | 2016-03-20 | 1 | -1/+7 |
|\ \ | |||||
| * | | open_all_images support for pqiv | noctuid | 2016-03-20 | 1 | -1/+7 |
| |/ | |||||
* / | Added toggle mode for cut/copy actions. | The Flying Rapist | 2016-03-20 | 2 | -1/+5 |
|/ | |||||
* | adding ability to clear folder filter upon navigating from it. optional and ↵ | Vitaly Belman | 2016-03-06 | 3 | -0/+9 |
| | | | | false by default. | ||||
* | Merge branch 'master' of https://github.com/nfnty/ranger | hut | 2016-02-29 | 4 | -5/+28 |
|\ | |||||
| * | VCS: pause thread during ui.suspend() | nfnty | 2016-02-29 | 4 | -5/+28 |
| | | |||||
* | | Merge branch 'master' of https://github.com/nfnty/ranger | hut | 2016-02-28 | 16 | -1546/+1073 |
|\| | |||||
| * | VCS: statusbar: Fix date format | nfnty | 2016-02-25 | 1 | -5/+6 |
| | | |||||
| * | VCS: Lazily initialize UI.vcsthread | nfnty | 2016-02-25 | 1 | -4/+8 |
| | | |||||
| * | VCS: Fix reinitialization on repodir deletion | nfnty | 2016-02-10 | 1 | -31/+29 |
| | | |||||
| * | VCS: Fix has_vcschild directory load | nfnty | 2016-02-10 | 1 | -3/+8 |
| | | |||||
| * | VCS: Rename fileobj to fsobj, remove _hindered | nfnty | 2016-02-09 | 2 | -41/+34 |
| | | |||||
| * | VCS: Fix link handling | nfnty | 2016-02-09 | 2 | -38/+33 |
| | | |||||
| * | VCS: Process queue more efficiently | nfnty | 2016-02-09 | 2 | -32/+62 |
| | | |||||
| * | VCS: Split Vcs root into VcsRoot | nfnty | 2016-02-08 | 1 | -61/+84 |
| | | |||||
| * | VCS: hg: Disable remote status due to performance issues | nfnty | 2016-02-08 | 2 | -28/+13 |
| | | |||||
| * | VCS: Fix root updating | nfnty | 2016-02-08 | 1 | -13/+11 |
| | | |||||
| * | VCS: hg: Use json template | nfnty | 2016-02-08 | 1 | -32/+20 |
| | | |||||
| * | VCS: Disable background updating due to lock issues | nfnty | 2016-02-08 | 2 | -57/+11 |
| | | |||||
| * | VCS: Implement Subversion | nfnty | 2016-02-08 | 2 | -105/+109 |
| | | |||||
| * | VCS: Rename _vcs to _run | nfnty | 2016-02-08 | 4 | -44/+36 |
| | | |||||
| * | VCS: hg: Fix statuses | nfnty | 2016-02-08 | 1 | -2/+2 |
| | | |||||
| * | VCS: Reorder imports | nfnty | 2016-02-08 | 5 | -8/+9 |
| | | |||||
| * | VCS: Add date to statusbar | nfnty | 2016-02-08 | 3 | -2/+7 |
| | | |||||
| * | VCS: Fix output handling | nfnty | 2016-02-08 | 3 | -35/+58 |
| | | |||||
| * | VCS: Implement Mercurial | nfnty | 2016-02-08 | 1 | -87/+111 |
| | | |||||
| * | VCS: Improve null handling | nfnty | 2016-02-08 | 2 | -5/+6 |
| | | |||||
| * | VCS: Minor fixes | nfnty | 2016-02-08 | 6 | -23/+25 |
| | | |||||
| * | VCS: pylint and flake8 compliancy | nfnty | 2016-02-08 | 4 | -20/+16 |
| | | |||||
| * | VCS: Refactor VcsThread.run() | nfnty | 2016-02-08 | 1 | -79/+90 |
| | | |||||
| * | VCS: Fix browsercolumn | nfnty | 2016-02-08 | 3 | -24/+33 |
| | | |||||
| * | VCS: Initialize roots in VcsThread | nfnty | 2016-02-08 | 3 | -81/+134 |
| | | |||||
| * | VCS: Fix python2 compatibility | nfnty | 2016-02-08 | 1 | -10/+13 |
| | | |||||
| * | VCS: Move remotestatus to FileSystemObject | nfnty | 2016-02-08 | 6 | -44/+42 |
| | | |||||
| * | VCS: Improve repodir detection | nfnty | 2016-02-08 | 1 | -7/+18 |
| | | |||||
| * | VCS: _vcs remove args parameter | nfnty | 2016-02-08 | 3 | -10/+7 |
| | | |||||
| * | VCS: Implement GNU Bazaar: Disable data_status_remote for performance | nfnty | 2016-02-08 | 1 | -15/+1 |
| | | |||||
| * | VCS: Implement GNU Bazaar | nfnty | 2016-02-08 | 2 | -75/+145 |
| | | |||||
| * | VCS: Refactor _vcs | nfnty | 2016-02-08 | 2 | -53/+51 |
| | | |||||
| * | VCS: Update comments, Minor fixes | nfnty | 2016-02-08 | 12 | -153/+147 |
| | | |||||
| * | VCS: Major cleanup | nfnty | 2016-02-08 | 7 | -712/+100 |
| | | |||||
| * | VCS: Delay a minimum of 1 second | nfnty | pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */== code
# instruction effective address register displacement immediate
# . op subop mod rm32 base index scale r32
# . 1-3 bytes 3 bits 2 bits 3 bits 3 bits 3 bits 2 bits 2 bits 0/1/2/4 bytes 0/1/2/4 bytes
# print 'n' in hex in 'width' bytes in lower-endian order, with a space after every byte
emit-hex: # out: (addr buffered-file), n: int, width: int
# . prologue
55/push-ebp
89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp
# . save registers
50/push-eax
51/push-ecx
52/push-edx
53/push-ebx
57/push-edi
# edi = out
8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 7/r32/edi 8/disp8 . # copy *(ebp+8) to edi
# ebx = n
8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 3/r32/ebx 0xc/disp8 . # copy *(ebp+12) to ebx
# edx = width
8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 2/r32/edx 0x10/disp8 . # copy *(ebp+16) to edx
# var curr/ecx: int = 0
31/xor 3/mod/direct 1/rm32/ecx . . . 1/r32/ecx . . # clear ecx
$emit-hex:loop:
# if (curr >= width) break
39/compare 3/mod/direct 1/rm32/ecx . . . 2/r32/edx . . # compare ecx with edx
7d/jump-if->= $emit-hex:end/disp8
# print-byte-buffered(out, ebx) # only BL used
# . . push args
53/push-ebx
57/push-edi
# . . call
e8/call print-byte-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# write-byte-buffered(out, ' ')
# . . push args
68/push 0x20/imm32/space
57/push-edi
# . . call
e8/call write-byte-buffered/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp
# ebx = ebx >> 8
c1/shift 5/subop/logic-right 3/mod/direct 3/rm32/ebx . . . . . 8/imm8 # shift ebx right by 8 bits, while padding zeroes
$emit-hex:continue:
# ++curr
41/increment-ecx
eb/jump $emit-hex:loop/disp8
$emit-hex:end:
# . restore registers
5f/pop-to-edi
5b/pop-to-ebx
5a/pop-to-edx
59/pop-to-ecx
58/pop-to-eax
# . epilogue
89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp
5d/pop-to-ebp
c3/return
test-emit-hex-single-byte:
# setup
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# emit-hex(_test-output-buffered-file, 0xab, 1)
# . . push args
68/push 1/imm32
68/push 0xab/imm32
68/push _test-output-buffered-file/imm32
# . . call
e8/call emit-hex/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# check-ints-equal(*_test-output-stream->data, 'ab ', msg)
# . . push args
68/push "F - test-emit-hex-single-byte"/imm32
68/push 0x206261/imm32
# . . push *_test-output-stream->data
b8/copy-to-eax _test-output-stream/imm32
ff 6/subop/push 1/mod/*+disp8 0/rm32/eax . . . . 0xc/disp8 . # push *(eax+12)
# . . call
e8/call check-ints-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . end
c3/return
test-emit-hex-multiple-byte:
# setup
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# emit-hex(_test-output-buffered-file, 0x1234, 2)
# . . push args
68/push 2/imm32
68/push 0x1234/imm32
68/push _test-output-buffered-file/imm32
# . . call
e8/call emit-hex/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# check-stream-equal(_test-output-stream, "34 12 ", msg)
# . . push args
68/push "F - test-emit-hex-multiple-byte/1"/imm32
68/push "34 12 "/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . end
c3/return
test-emit-hex-zero-pad:
# setup
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# emit-hex(_test-output-buffered-file, 0xab, 2)
# . . push args
68/push 2/imm32
68/push 0xab/imm32
68/push _test-output-buffered-file/imm32
# . . call
e8/call emit-hex/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# check(_test-output-stream->data == 'ab 00 ')
# . . push args
68/push "F - test-emit-hex-zero-pad/1"/imm32
68/push "ab 00 "/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . end
c3/return
test-emit-hex-negative:
# setup
# . clear-stream(_test-output-stream)
# . . push args
68/push _test-output-stream/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# . clear-stream($_test-output-buffered-file->buffer)
# . . push args
68/push $_test-output-buffered-file->buffer/imm32
# . . call
e8/call clear-stream/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# emit-hex(_test-output-buffered-file, -1, 2)
# . . push args
68/push 2/imm32
68/push -1/imm32
68/push _test-output-buffered-file/imm32
# . . call
e8/call emit-hex/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# flush(_test-output-buffered-file)
# . . push args
68/push _test-output-buffered-file/imm32
# . . call
e8/call flush/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp
# check-stream-equal(_test-output-stream == "ff ff ")
# . . push args
68/push "F - test-emit-hex-negative/1"/imm32
68/push "ff ff "/imm32
68/push _test-output-stream/imm32
# . . call
e8/call check-stream-equal/disp32
# . . discard args
81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp
# . end
c3/return
# . . vim:nowrap:textwidth=0
|