r2pipe 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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