r2pipe 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/r2pipe.rb +31 -19
  3. data/lib/r2pipe/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5815400a10873eee220bb59709c3b33c0b507bc3
4
- data.tar.gz: a3d828c7554e137e3091f923b1e348c0b9d8ae3b
3
+ metadata.gz: e1e048fe24dc8e38356d453a75803a4906b2dffc
4
+ data.tar.gz: 283e2241a8fb7267b63e1ab956818221fceb9758
5
5
  SHA512:
6
- metadata.gz: 6cc2d21f5ad3b466fd382b3da39f8b2599ae9544c661a9e92b4dce62e830a173db6ef263bc9bd3d27d243f0ed91ca6c3c94f62904127bdf55a07bed2c535ccad
7
- data.tar.gz: 36fd14b1bea6bd8e46de3cd26e640a896f3e9f4c7be4e111bd7fff5713c9c1c511d5fbdf3196db9d96fda31f7721fd1db532df15bb6f3cd7a839082fd7991720
6
+ metadata.gz: a8e12867c675f1c80c7b69f18a8b3eb72265620a665f8b08326ed82c4d475818e98c99deb7056ddce4f8e89d415be863b25206e856e81a9c778fc3096a4b001c
7
+ data.tar.gz: dcf8a38e152ac7c71310e3a97b64226010c66936fbe5fcfc107e2db0ae9e9b1c90d3c9837bb57e88dcfa5334e401915502e428c8cccb9d169759b5d4f5ac8caa
@@ -10,22 +10,13 @@ require 'shellwords'
10
10
  class R2Pipe
11
11
  def initialize(file = nil)
12
12
  @file = file
13
- if file == nil
14
- fdIn = ENV['R2PIPE_IN'].to_i
15
- fdOut = ENV['R2PIPE_OUT'].to_i
16
- if fdIn < 1 or fdOut < 1
17
- raise 'Cannot find R2PIPE_IN and R2PIPE_OUT environment variables'
18
- end
19
- @read = IO.new(fdIn, 'r')
20
- @write = IO.new(fdOut, 'w')
13
+ if file.nil?
14
+ fd_in, fd_out = getfds
15
+ @read = IO.new(fd_in, 'r')
16
+ @write = IO.new(fd_out, 'w')
21
17
  @pid = -1
22
18
  else
23
- exec = "radare2 -q0 #{Shellwords.shellescape file} 2>/dev/null"
24
- write, read, wait_thr = Open3.popen2(exec)
25
- @read = read
26
- @write = write
27
- @pid = wait_thr.pid
28
- @read.gets("\0")
19
+ execute file
29
20
  end
30
21
  end
31
22
 
@@ -43,14 +34,35 @@ class R2Pipe
43
34
  cmd('q!')
44
35
  @read.close
45
36
  @write.close
46
- if @pid != -1
47
- ::Process.wait @pid
48
- end
37
+ return if @pid == -1
38
+
39
+ ::Process.wait @pid
49
40
  end
50
41
 
51
42
  def json(str)
52
- if str != nil
53
- JSON.parse str.sub("\n", '').sub("\r", '')
43
+ return if str.nil?
44
+
45
+ JSON.parse str.sub("\n", '').sub("\r", '')
46
+ end
47
+
48
+ private
49
+
50
+ def getfds
51
+ fd_in = ENV['R2PIPE_IN'].to_i
52
+ fd_out = ENV['R2PIPE_OUT'].to_i
53
+ if fd_in < 1 || fd_out < 1
54
+ raise 'Cannot find R2PIPE_IN and R2PIPE_OUT environment variables'
54
55
  end
56
+
57
+ [fd_in, fd_out]
58
+ end
59
+
60
+ def execute(file)
61
+ exec = "radare2 -q0 #{Shellwords.shellescape file} 2>/dev/null"
62
+ write, read, wait_thr = Open3.popen2(exec)
63
+ @read = read
64
+ @write = write
65
+ @pid = wait_thr.pid
66
+ @read.gets("\0")
55
67
  end
56
68
  end
@@ -1,3 +1,3 @@
1
1
  module R2pipe
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: r2pipe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeffrey Crowell
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-11-02 00:00:00.000000000 Z
12
+ date: 2018-11-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler