windows-pr 1.2.1 → 1.2.2
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/CHANGES +438 -429
- data/README +5 -1
- data/lib/windows/clipboard.rb +61 -61
- data/lib/windows/com.rb +192 -192
- data/lib/windows/com/accessibility.rb +16 -16
- data/lib/windows/directory.rb +27 -27
- data/lib/windows/error.rb +498 -484
- data/lib/windows/eventlog.rb +80 -80
- data/lib/windows/filesystem.rb +15 -15
- data/lib/windows/handle.rb +23 -23
- data/lib/windows/library.rb +44 -44
- data/lib/windows/mailslot.rb +24 -24
- data/lib/windows/memory.rb +128 -128
- data/lib/windows/msvcrt/io.rb +73 -73
- data/lib/windows/msvcrt/string.rb +182 -182
- data/lib/windows/nio.rb +50 -50
- data/lib/windows/ntfs/winternl.rb +117 -110
- data/lib/windows/process.rb +176 -176
- data/lib/windows/socket.rb +86 -86
- data/lib/windows/system_info.rb +229 -229
- data/lib/windows/thread.rb +64 -64
- data/lib/windows/unicode.rb +155 -155
- data/lib/windows/wsa.rb +102 -102
- data/test/tc_msvcrt_buffer.rb +11 -7
- data/test/tc_ntfs_winternl.rb +48 -44
- data/test/tc_unicode.rb +83 -83
- data/windows-pr.gemspec +34 -34
- metadata +50 -63
data/lib/windows/msvcrt/io.rb
CHANGED
@@ -1,73 +1,73 @@
|
|
1
|
-
require 'windows/api'
|
2
|
-
|
3
|
-
# This module includes stream I/O, low level I/O, etc.
|
4
|
-
module Windows
|
5
|
-
module MSVCRT
|
6
|
-
module IO
|
7
|
-
API.auto_namespace = 'Windows::MSVCRT::IO'
|
8
|
-
API.auto_constant = true
|
9
|
-
API.auto_method = true
|
10
|
-
API.auto_unicode = false
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
S_IFMT = 0170000 # file type mask
|
15
|
-
S_IFDIR = 0040000 # directory
|
16
|
-
S_IFCHR = 0020000 # character special
|
17
|
-
S_IFIFO = 0010000 # pipe
|
18
|
-
S_IFREG = 0100000 # regular
|
19
|
-
S_IREAD = 0000400 # read permission, owner
|
20
|
-
S_IWRITE = 0000200 # write permission, owner
|
21
|
-
S_IEXEC = 0000100 # execute/search permission, owner
|
22
|
-
|
23
|
-
SH_DENYNO = 0x40 # deny none mode
|
24
|
-
SHORT_LIVED = 0x1000 # temporary file storage
|
25
|
-
|
26
|
-
API.new('clearerr', 'I', 'V', MSVCRT_DLL)
|
27
|
-
API.new('_close', 'I', 'V', MSVCRT_DLL)
|
28
|
-
API.new('fclose', 'I', 'I', MSVCRT_DLL)
|
29
|
-
API.new('_fcloseall', 'V', 'I', MSVCRT_DLL)
|
30
|
-
API.new('_fdopen', 'IP', 'I', MSVCRT_DLL)
|
31
|
-
API.new('feof', 'I', 'I', MSVCRT_DLL)
|
32
|
-
API.new('ferror', 'L', 'I', MSVCRT_DLL)
|
33
|
-
API.new('fflush', 'I', 'I', MSVCRT_DLL)
|
34
|
-
API.new('fgetc', 'L', 'I', MSVCRT_DLL)
|
35
|
-
API.new('fgetpos', 'LP', 'I', MSVCRT_DLL)
|
36
|
-
API.new('fgetwc', 'L', 'I', MSVCRT_DLL)
|
37
|
-
API.new('fgets', 'PIL', 'P', MSVCRT_DLL)
|
38
|
-
API.new('fgetws', 'PIL', 'P', MSVCRT_DLL)
|
39
|
-
API.new('_fileno', 'I', 'I', MSVCRT_DLL)
|
40
|
-
API.new('_flushall', 'V', 'I', MSVCRT_DLL)
|
41
|
-
API.new('fopen', 'PP', 'I', MSVCRT_DLL)
|
42
|
-
API.new('fputs', 'PL', 'I', MSVCRT_DLL)
|
43
|
-
API.new('fputws', 'PL', 'I', MSVCRT_DLL)
|
44
|
-
API.new('getc', 'L', 'I', MSVCRT_DLL)
|
45
|
-
API.new('getwc', 'L', 'L', MSVCRT_DLL)
|
46
|
-
API.new('_open', 'PII', 'I', MSVCRT_DLL)
|
47
|
-
API.new('_rmtmp', 'V', 'I', MSVCRT_DLL)
|
48
|
-
API.new('_setmode', 'II', 'I', MSVCRT_DLL)
|
49
|
-
API.new('_sopen', 'PIII', 'I', MSVCRT_DLL)
|
50
|
-
API.new('_tempnam', 'PP', 'P', MSVCRT_DLL)
|
51
|
-
API.new('tmpfile', 'V', 'L', MSVCRT_DLL)
|
52
|
-
API.new('tmpnam', 'P', 'P', MSVCRT_DLL)
|
53
|
-
|
54
|
-
# Wide character versions
|
55
|
-
|
56
|
-
API.new('_wopen', 'PII', 'I', MSVCRT_DLL)
|
57
|
-
API.new('_wfdopen', 'IP', 'I', MSVCRT_DLL)
|
58
|
-
API.new('_wfopen', 'PPI', 'I', MSVCRT_DLL)
|
59
|
-
API.new('_wsopen', 'PIII', 'I', MSVCRT_DLL)
|
60
|
-
API.new('_wtempnam', 'PP', 'P', MSVCRT_DLL)
|
61
|
-
API.new('_wtmpnam', 'P', 'P', MSVCRT_DLL)
|
62
|
-
|
63
|
-
# VC++ 8.0 or later
|
64
|
-
begin
|
65
|
-
API.new('_sopen_s', 'PPIII', 'L', MSVCRT_DLL)
|
66
|
-
API.new('_tmpfile_s', 'P', 'L', MSVCRT_DLL)
|
67
|
-
API.new('_wsopen_s', 'PPIII', 'L', MSVCRT_DLL)
|
68
|
-
rescue Win32::API::LoadLibraryError
|
69
|
-
# Ignore - you must check for it via 'defined?'
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|
1
|
+
require 'windows/api'
|
2
|
+
|
3
|
+
# This module includes stream I/O, low level I/O, etc.
|
4
|
+
module Windows
|
5
|
+
module MSVCRT
|
6
|
+
module IO
|
7
|
+
API.auto_namespace = 'Windows::MSVCRT::IO'
|
8
|
+
API.auto_constant = true
|
9
|
+
API.auto_method = true
|
10
|
+
API.auto_unicode = false
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
S_IFMT = 0170000 # file type mask
|
15
|
+
S_IFDIR = 0040000 # directory
|
16
|
+
S_IFCHR = 0020000 # character special
|
17
|
+
S_IFIFO = 0010000 # pipe
|
18
|
+
S_IFREG = 0100000 # regular
|
19
|
+
S_IREAD = 0000400 # read permission, owner
|
20
|
+
S_IWRITE = 0000200 # write permission, owner
|
21
|
+
S_IEXEC = 0000100 # execute/search permission, owner
|
22
|
+
|
23
|
+
SH_DENYNO = 0x40 # deny none mode
|
24
|
+
SHORT_LIVED = 0x1000 # temporary file storage
|
25
|
+
|
26
|
+
API.new('clearerr', 'I', 'V', MSVCRT_DLL)
|
27
|
+
API.new('_close', 'I', 'V', MSVCRT_DLL)
|
28
|
+
API.new('fclose', 'I', 'I', MSVCRT_DLL)
|
29
|
+
API.new('_fcloseall', 'V', 'I', MSVCRT_DLL)
|
30
|
+
API.new('_fdopen', 'IP', 'I', MSVCRT_DLL)
|
31
|
+
API.new('feof', 'I', 'I', MSVCRT_DLL)
|
32
|
+
API.new('ferror', 'L', 'I', MSVCRT_DLL)
|
33
|
+
API.new('fflush', 'I', 'I', MSVCRT_DLL)
|
34
|
+
API.new('fgetc', 'L', 'I', MSVCRT_DLL)
|
35
|
+
API.new('fgetpos', 'LP', 'I', MSVCRT_DLL)
|
36
|
+
API.new('fgetwc', 'L', 'I', MSVCRT_DLL)
|
37
|
+
API.new('fgets', 'PIL', 'P', MSVCRT_DLL)
|
38
|
+
API.new('fgetws', 'PIL', 'P', MSVCRT_DLL)
|
39
|
+
API.new('_fileno', 'I', 'I', MSVCRT_DLL)
|
40
|
+
API.new('_flushall', 'V', 'I', MSVCRT_DLL)
|
41
|
+
API.new('fopen', 'PP', 'I', MSVCRT_DLL)
|
42
|
+
API.new('fputs', 'PL', 'I', MSVCRT_DLL)
|
43
|
+
API.new('fputws', 'PL', 'I', MSVCRT_DLL)
|
44
|
+
API.new('getc', 'L', 'I', MSVCRT_DLL)
|
45
|
+
API.new('getwc', 'L', 'L', MSVCRT_DLL)
|
46
|
+
API.new('_open', 'PII', 'I', MSVCRT_DLL)
|
47
|
+
API.new('_rmtmp', 'V', 'I', MSVCRT_DLL)
|
48
|
+
API.new('_setmode', 'II', 'I', MSVCRT_DLL)
|
49
|
+
API.new('_sopen', 'PIII', 'I', MSVCRT_DLL)
|
50
|
+
API.new('_tempnam', 'PP', 'P', MSVCRT_DLL)
|
51
|
+
API.new('tmpfile', 'V', 'L', MSVCRT_DLL)
|
52
|
+
API.new('tmpnam', 'P', 'P', MSVCRT_DLL)
|
53
|
+
|
54
|
+
# Wide character versions
|
55
|
+
|
56
|
+
API.new('_wopen', 'PII', 'I', MSVCRT_DLL)
|
57
|
+
API.new('_wfdopen', 'IP', 'I', MSVCRT_DLL)
|
58
|
+
API.new('_wfopen', 'PPI', 'I', MSVCRT_DLL)
|
59
|
+
API.new('_wsopen', 'PIII', 'I', MSVCRT_DLL)
|
60
|
+
API.new('_wtempnam', 'PP', 'P', MSVCRT_DLL)
|
61
|
+
API.new('_wtmpnam', 'P', 'P', MSVCRT_DLL)
|
62
|
+
|
63
|
+
# VC++ 8.0 or later
|
64
|
+
begin
|
65
|
+
API.new('_sopen_s', 'PPIII', 'L', MSVCRT_DLL)
|
66
|
+
API.new('_tmpfile_s', 'P', 'L', MSVCRT_DLL)
|
67
|
+
API.new('_wsopen_s', 'PPIII', 'L', MSVCRT_DLL)
|
68
|
+
rescue Win32::API::LoadLibraryError
|
69
|
+
# Ignore - you must check for it via 'defined?'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
@@ -1,182 +1,182 @@
|
|
1
|
-
require 'windows/api'
|
2
|
-
|
3
|
-
module Windows
|
4
|
-
module MSVCRT
|
5
|
-
module String
|
6
|
-
API.auto_constant = false # We want multiple versions
|
7
|
-
API.auto_method = false # We need to handle 0 & nil explicitly
|
8
|
-
API.auto_unicode = false
|
9
|
-
|
10
|
-
private
|
11
|
-
|
12
|
-
Strchr = API.new('strchr', 'PI', 'P', MSVCRT_DLL)
|
13
|
-
Strcmp = API.new('strcmp', 'PP', 'I', MSVCRT_DLL)
|
14
|
-
Strcpy = API.new('strcpy', 'PL', 'L', MSVCRT_DLL)
|
15
|
-
Strcspn = API.new('strcspn', 'PP', 'L', MSVCRT_DLL)
|
16
|
-
Strlen = API.new('strlen', 'P', 'L', MSVCRT_DLL)
|
17
|
-
Strncpy = API.new('strncpy', 'PPL', 'P', MSVCRT_DLL)
|
18
|
-
Strpbrk = API.new('strpbrk', 'PP', 'P', MSVCRT_DLL)
|
19
|
-
Strrchr = API.new('strrchr', 'PI', 'P', MSVCRT_DLL)
|
20
|
-
Strrev = API.new('_strrev', 'P', 'P', MSVCRT_DLL)
|
21
|
-
Strspn = API.new('strspn', 'PP', 'L', MSVCRT_DLL)
|
22
|
-
Strstr = API.new('strstr', 'PP', 'P', MSVCRT_DLL)
|
23
|
-
Strtok = API.new('strtok', 'PP', 'P', MSVCRT_DLL)
|
24
|
-
|
25
|
-
StrcpyPL = API.new('strcpy', 'PL', 'L', MSVCRT_DLL)
|
26
|
-
StrcpyPP = API.new('strcpy', 'PP', 'L', MSVCRT_DLL)
|
27
|
-
|
28
|
-
Mbscmp = API.new('_mbscmp', 'PP', 'I', 'msvcrt')
|
29
|
-
Mbscpy = API.new('_mbscpy', 'PL', 'L', 'msvcrt')
|
30
|
-
Mbslen = API.new('_mbslen', 'P', 'L', 'msvcrt')
|
31
|
-
Mbsrev = API.new('_mbsrev', 'P', 'P', 'msvcrt')
|
32
|
-
|
33
|
-
MbscpyPL = API.new('_mbscpy', 'PL', 'L', 'msvcrt')
|
34
|
-
MbscpyPP = API.new('_mbscpy', 'PP', 'L', 'msvcrt')
|
35
|
-
|
36
|
-
Wcscmp = API.new('wcscmp', 'PP', 'I', MSVCRT_DLL)
|
37
|
-
Wcscpy = API.new('wcscpy', 'PL', 'L', MSVCRT_DLL)
|
38
|
-
Wcslen = API.new('wcslen', 'P', 'L', MSVCRT_DLL)
|
39
|
-
Wcsncpy = API.new('wcsncpy', 'PPL', 'P', MSVCRT_DLL)
|
40
|
-
Wcsrev = API.new('_wcsrev', 'P', 'P', MSVCRT_DLL)
|
41
|
-
|
42
|
-
WcscpyPL = API.new('wcscpy', 'PL', 'L', MSVCRT_DLL)
|
43
|
-
WcscpyPP = API.new('wcscpy', 'PP', 'L', MSVCRT_DLL)
|
44
|
-
|
45
|
-
begin
|
46
|
-
Strtok_s = API.new('strtok_s', 'PPI', 'P', MSVCRT_DLL)
|
47
|
-
rescue Win32::API::LoadLibraryError
|
48
|
-
# Do nothing. Not supported on your system.
|
49
|
-
end
|
50
|
-
|
51
|
-
def strchr(string, char)
|
52
|
-
return nil if string == 0 || char == 0
|
53
|
-
Strchr.call(string, char)
|
54
|
-
end
|
55
|
-
|
56
|
-
def strcmp(str1, str2)
|
57
|
-
if str1 == 0 || str2 == 0
|
58
|
-
return nil
|
59
|
-
end
|
60
|
-
Strcmp.call(str1, str2)
|
61
|
-
end
|
62
|
-
|
63
|
-
def strcpy(dest, src)
|
64
|
-
if src.is_a?(Numeric)
|
65
|
-
return nil if src == 0
|
66
|
-
StrcpyPL.call(dest, src)
|
67
|
-
else
|
68
|
-
StrcpyPP.call(dest, src)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def strlen(string)
|
73
|
-
return nil if string == 0
|
74
|
-
Strlen.call(string)
|
75
|
-
end
|
76
|
-
|
77
|
-
def strcspn(string, charset)
|
78
|
-
return nil if string == 0
|
79
|
-
Strcspn.call(string, charset)
|
80
|
-
end
|
81
|
-
|
82
|
-
def strncpy(dest, source, count)
|
83
|
-
return nil if source == 0
|
84
|
-
Strncpy.call(dest, source, count)
|
85
|
-
end
|
86
|
-
|
87
|
-
def strpbrk(string, charset)
|
88
|
-
return nil if string == 0 || charset == 0
|
89
|
-
Strpbrk.call(string, charset)
|
90
|
-
end
|
91
|
-
|
92
|
-
def strrchr(string, int)
|
93
|
-
return nil if string == 0
|
94
|
-
Strrchr.call(string, int)
|
95
|
-
end
|
96
|
-
|
97
|
-
def strrev(str)
|
98
|
-
return nil if str == 0
|
99
|
-
Strrev.call(str)
|
100
|
-
end
|
101
|
-
|
102
|
-
def strspn(string, charset)
|
103
|
-
return nil if string == 0 || charset == 0
|
104
|
-
Strspn.call(string, charset)
|
105
|
-
end
|
106
|
-
|
107
|
-
def strstr(string, search)
|
108
|
-
return nil if string == 0 || search == 0
|
109
|
-
Strstr.call(string, search)
|
110
|
-
end
|
111
|
-
|
112
|
-
def strtok(token, delimeter)
|
113
|
-
return nil if token == 0 || delimeter == 0
|
114
|
-
Strtok.call(token, delimeter)
|
115
|
-
end
|
116
|
-
|
117
|
-
if defined? Strtok_s
|
118
|
-
def strtok_s(token, delimeter, context)
|
119
|
-
return nil if [token, delimter, context].include?(0)
|
120
|
-
Strtok_s.call(token, delimeter, context)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
def mbscmp(str1, str2)
|
125
|
-
if str1 == 0 || str2 == 0
|
126
|
-
return nil
|
127
|
-
end
|
128
|
-
Mbscmp.call(str1, str2)
|
129
|
-
end
|
130
|
-
|
131
|
-
def mbscpy(dest, src)
|
132
|
-
if src.is_a?(Numeric)
|
133
|
-
return nil if src == 0
|
134
|
-
MbscpyPL.call(dest, src)
|
135
|
-
else
|
136
|
-
MbscpyPP.call(dest, src)
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
|
-
def mbslen(string)
|
141
|
-
return nil if string == 0
|
142
|
-
Mbslen.call(string)
|
143
|
-
end
|
144
|
-
|
145
|
-
def mbsrev(str)
|
146
|
-
return nil if str == 0
|
147
|
-
Mbsrev.call(str)
|
148
|
-
end
|
149
|
-
|
150
|
-
def wcscmp(str1, str2)
|
151
|
-
if str1 == 0 || str2 == 0
|
152
|
-
return nil
|
153
|
-
end
|
154
|
-
Wcscmp.call(str1, str2)
|
155
|
-
end
|
156
|
-
|
157
|
-
def wcscpy(dest, src)
|
158
|
-
if src.is_a?(Numeric)
|
159
|
-
return nil if src == 0
|
160
|
-
WcscpyPL.call(dest, src)
|
161
|
-
else
|
162
|
-
WcscpyPP.call(dest, src)
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
def wcslen(string)
|
167
|
-
return nil if string == 0
|
168
|
-
Wcslen.call(string)
|
169
|
-
end
|
170
|
-
|
171
|
-
def wcsncpy(dest, source, count)
|
172
|
-
return nil if source == 0
|
173
|
-
Wcsncpy.call(dest, source, count)
|
174
|
-
end
|
175
|
-
|
176
|
-
def wcsrev(str)
|
177
|
-
return nil if str == 0
|
178
|
-
Wcsrev.call(str)
|
179
|
-
end
|
180
|
-
end
|
181
|
-
end
|
182
|
-
end
|
1
|
+
require 'windows/api'
|
2
|
+
|
3
|
+
module Windows
|
4
|
+
module MSVCRT
|
5
|
+
module String
|
6
|
+
API.auto_constant = false # We want multiple versions
|
7
|
+
API.auto_method = false # We need to handle 0 & nil explicitly
|
8
|
+
API.auto_unicode = false
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
Strchr = API.new('strchr', 'PI', 'P', MSVCRT_DLL)
|
13
|
+
Strcmp = API.new('strcmp', 'PP', 'I', MSVCRT_DLL)
|
14
|
+
Strcpy = API.new('strcpy', 'PL', 'L', MSVCRT_DLL)
|
15
|
+
Strcspn = API.new('strcspn', 'PP', 'L', MSVCRT_DLL)
|
16
|
+
Strlen = API.new('strlen', 'P', 'L', MSVCRT_DLL)
|
17
|
+
Strncpy = API.new('strncpy', 'PPL', 'P', MSVCRT_DLL)
|
18
|
+
Strpbrk = API.new('strpbrk', 'PP', 'P', MSVCRT_DLL)
|
19
|
+
Strrchr = API.new('strrchr', 'PI', 'P', MSVCRT_DLL)
|
20
|
+
Strrev = API.new('_strrev', 'P', 'P', MSVCRT_DLL)
|
21
|
+
Strspn = API.new('strspn', 'PP', 'L', MSVCRT_DLL)
|
22
|
+
Strstr = API.new('strstr', 'PP', 'P', MSVCRT_DLL)
|
23
|
+
Strtok = API.new('strtok', 'PP', 'P', MSVCRT_DLL)
|
24
|
+
|
25
|
+
StrcpyPL = API.new('strcpy', 'PL', 'L', MSVCRT_DLL)
|
26
|
+
StrcpyPP = API.new('strcpy', 'PP', 'L', MSVCRT_DLL)
|
27
|
+
|
28
|
+
Mbscmp = API.new('_mbscmp', 'PP', 'I', 'msvcrt')
|
29
|
+
Mbscpy = API.new('_mbscpy', 'PL', 'L', 'msvcrt')
|
30
|
+
Mbslen = API.new('_mbslen', 'P', 'L', 'msvcrt')
|
31
|
+
Mbsrev = API.new('_mbsrev', 'P', 'P', 'msvcrt')
|
32
|
+
|
33
|
+
MbscpyPL = API.new('_mbscpy', 'PL', 'L', 'msvcrt')
|
34
|
+
MbscpyPP = API.new('_mbscpy', 'PP', 'L', 'msvcrt')
|
35
|
+
|
36
|
+
Wcscmp = API.new('wcscmp', 'PP', 'I', MSVCRT_DLL)
|
37
|
+
Wcscpy = API.new('wcscpy', 'PL', 'L', MSVCRT_DLL)
|
38
|
+
Wcslen = API.new('wcslen', 'P', 'L', MSVCRT_DLL)
|
39
|
+
Wcsncpy = API.new('wcsncpy', 'PPL', 'P', MSVCRT_DLL)
|
40
|
+
Wcsrev = API.new('_wcsrev', 'P', 'P', MSVCRT_DLL)
|
41
|
+
|
42
|
+
WcscpyPL = API.new('wcscpy', 'PL', 'L', MSVCRT_DLL)
|
43
|
+
WcscpyPP = API.new('wcscpy', 'PP', 'L', MSVCRT_DLL)
|
44
|
+
|
45
|
+
begin
|
46
|
+
Strtok_s = API.new('strtok_s', 'PPI', 'P', MSVCRT_DLL)
|
47
|
+
rescue Win32::API::LoadLibraryError
|
48
|
+
# Do nothing. Not supported on your system.
|
49
|
+
end
|
50
|
+
|
51
|
+
def strchr(string, char)
|
52
|
+
return nil if string == 0 || char == 0
|
53
|
+
Strchr.call(string, char)
|
54
|
+
end
|
55
|
+
|
56
|
+
def strcmp(str1, str2)
|
57
|
+
if str1 == 0 || str2 == 0
|
58
|
+
return nil
|
59
|
+
end
|
60
|
+
Strcmp.call(str1, str2)
|
61
|
+
end
|
62
|
+
|
63
|
+
def strcpy(dest, src)
|
64
|
+
if src.is_a?(Numeric)
|
65
|
+
return nil if src == 0
|
66
|
+
StrcpyPL.call(dest, src)
|
67
|
+
else
|
68
|
+
StrcpyPP.call(dest, src)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def strlen(string)
|
73
|
+
return nil if string == 0
|
74
|
+
Strlen.call(string)
|
75
|
+
end
|
76
|
+
|
77
|
+
def strcspn(string, charset)
|
78
|
+
return nil if string == 0
|
79
|
+
Strcspn.call(string, charset)
|
80
|
+
end
|
81
|
+
|
82
|
+
def strncpy(dest, source, count)
|
83
|
+
return nil if source == 0
|
84
|
+
Strncpy.call(dest, source, count)
|
85
|
+
end
|
86
|
+
|
87
|
+
def strpbrk(string, charset)
|
88
|
+
return nil if string == 0 || charset == 0
|
89
|
+
Strpbrk.call(string, charset)
|
90
|
+
end
|
91
|
+
|
92
|
+
def strrchr(string, int)
|
93
|
+
return nil if string == 0
|
94
|
+
Strrchr.call(string, int)
|
95
|
+
end
|
96
|
+
|
97
|
+
def strrev(str)
|
98
|
+
return nil if str == 0
|
99
|
+
Strrev.call(str)
|
100
|
+
end
|
101
|
+
|
102
|
+
def strspn(string, charset)
|
103
|
+
return nil if string == 0 || charset == 0
|
104
|
+
Strspn.call(string, charset)
|
105
|
+
end
|
106
|
+
|
107
|
+
def strstr(string, search)
|
108
|
+
return nil if string == 0 || search == 0
|
109
|
+
Strstr.call(string, search)
|
110
|
+
end
|
111
|
+
|
112
|
+
def strtok(token, delimeter)
|
113
|
+
return nil if token == 0 || delimeter == 0
|
114
|
+
Strtok.call(token, delimeter)
|
115
|
+
end
|
116
|
+
|
117
|
+
if defined? Strtok_s
|
118
|
+
def strtok_s(token, delimeter, context)
|
119
|
+
return nil if [token, delimter, context].include?(0)
|
120
|
+
Strtok_s.call(token, delimeter, context)
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
def mbscmp(str1, str2)
|
125
|
+
if str1 == 0 || str2 == 0
|
126
|
+
return nil
|
127
|
+
end
|
128
|
+
Mbscmp.call(str1, str2)
|
129
|
+
end
|
130
|
+
|
131
|
+
def mbscpy(dest, src)
|
132
|
+
if src.is_a?(Numeric)
|
133
|
+
return nil if src == 0
|
134
|
+
MbscpyPL.call(dest, src)
|
135
|
+
else
|
136
|
+
MbscpyPP.call(dest, src)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def mbslen(string)
|
141
|
+
return nil if string == 0
|
142
|
+
Mbslen.call(string)
|
143
|
+
end
|
144
|
+
|
145
|
+
def mbsrev(str)
|
146
|
+
return nil if str == 0
|
147
|
+
Mbsrev.call(str)
|
148
|
+
end
|
149
|
+
|
150
|
+
def wcscmp(str1, str2)
|
151
|
+
if str1 == 0 || str2 == 0
|
152
|
+
return nil
|
153
|
+
end
|
154
|
+
Wcscmp.call(str1, str2)
|
155
|
+
end
|
156
|
+
|
157
|
+
def wcscpy(dest, src)
|
158
|
+
if src.is_a?(Numeric)
|
159
|
+
return nil if src == 0
|
160
|
+
WcscpyPL.call(dest, src)
|
161
|
+
else
|
162
|
+
WcscpyPP.call(dest, src)
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def wcslen(string)
|
167
|
+
return nil if string == 0
|
168
|
+
Wcslen.call(string)
|
169
|
+
end
|
170
|
+
|
171
|
+
def wcsncpy(dest, source, count)
|
172
|
+
return nil if source == 0
|
173
|
+
Wcsncpy.call(dest, source, count)
|
174
|
+
end
|
175
|
+
|
176
|
+
def wcsrev(str)
|
177
|
+
return nil if str == 0
|
178
|
+
Wcsrev.call(str)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|