ragweed 0.2.7 → 0.2.8
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.
- data/VERSION +1 -1
- data/lib/ragweed/wraposx/wraposx.rb +5 -4
- data/lib/ragweed/wraptux/wraptux.rb +17 -0
- data/ragweed.gemspec +2 -2
- metadata +4 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.8
|
@@ -348,13 +348,14 @@ module Ragweed::Wraposx
|
|
348
348
|
def execv(path, *args)
|
349
349
|
FFI.errno = 0
|
350
350
|
args.flatten!
|
351
|
-
argv = FFI::MemoryPointer.new(:pointer, args.size +
|
351
|
+
argv = FFI::MemoryPointer.new(:pointer, args.size + 2)
|
352
|
+
argv[0].put_pointer(0, FFI::MemoryPointer.from_string(path.to_s))
|
352
353
|
args.each_with_index do |arg, i|
|
353
|
-
argv[i].put_pointer(0, FFI::MemoryPointer.from_string(arg.to_s))
|
354
|
+
argv[i + 1].put_pointer(0, FFI::MemoryPointer.from_string(arg.to_s))
|
354
355
|
end
|
355
|
-
argv[args.size].put_pointer(0, nil)
|
356
|
+
argv[args.size + 1].put_pointer(0, nil)
|
356
357
|
|
357
|
-
|
358
|
+
Libc.execv(path, argv)
|
358
359
|
# if this ever returns, there's been an error
|
359
360
|
raise SystemCallError(:execv, FFI.errno)
|
360
361
|
end
|
@@ -10,6 +10,7 @@ module Ragweed::Wraptux
|
|
10
10
|
attach_function 'kill', [ :int, :int ], :int
|
11
11
|
attach_function 'malloc', [ :size_t ], :pointer
|
12
12
|
attach_function 'free', [ :pointer ], :void
|
13
|
+
attach_function 'execv', [ :pointer, :pointer ], :int
|
13
14
|
end
|
14
15
|
|
15
16
|
class PTRegs < FFI::Struct
|
@@ -68,5 +69,21 @@ module Ragweed::Wraptux
|
|
68
69
|
#raise SystemCallError.new "ptrace", FFI.errno if r == -1 and !FFI.errno.zero?
|
69
70
|
r
|
70
71
|
end
|
72
|
+
|
73
|
+
# int execv(const char *path, char *const argv[]);
|
74
|
+
def execv(path, *args)
|
75
|
+
FFI.errno = 0
|
76
|
+
args.flatten!
|
77
|
+
argv = FFI::MemoryPointer.new(:pointer, args.size + 2)
|
78
|
+
argv[0].put_pointer(0, FFI::MemoryPointer.from_string(path.to_s))
|
79
|
+
args.each_with_index do |arg, i|
|
80
|
+
argv[i + 1].put_pointer(0, FFI::MemoryPointer.from_string(arg.to_s))
|
81
|
+
end
|
82
|
+
argv[args.size + 1].put_pointer(0, nil)
|
83
|
+
|
84
|
+
Libc.execv(path, argv)
|
85
|
+
# if this returns, an error has occured
|
86
|
+
raise SystemCallError :execv, FFI.errno
|
87
|
+
end
|
71
88
|
end
|
72
89
|
end
|
data/ragweed.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ragweed}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.8"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{tduehr}, %q{struct}, %q{tqbf}]
|
12
|
-
s.date = %q{2011-12-
|
12
|
+
s.date = %q{2011-12-12}
|
13
13
|
s.description = %q{General debugging tool written in Ruby for OSX/Win32/Linux}
|
14
14
|
s.email = %q{td@matasano.com}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ragweed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 2
|
9
|
-
-
|
10
|
-
version: 0.2.
|
9
|
+
- 8
|
10
|
+
version: 0.2.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- tduehr
|
@@ -17,7 +17,7 @@ autorequire:
|
|
17
17
|
bindir: bin
|
18
18
|
cert_chain: []
|
19
19
|
|
20
|
-
date: 2011-12-
|
20
|
+
date: 2011-12-12 00:00:00 Z
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
23
23
|
name: ffi
|