Skip to content

Commit 3fac6f8

Browse files
committed
Revert "doc: Fix tutorial-ffi xfail-tests and update SHA1() to use size_t"
This reverts commit 50c8cbb.
1 parent c9c8d6f commit 3fac6f8

File tree

1 file changed

+16
-24
lines changed

1 file changed

+16
-24
lines changed

doc/tutorial-ffi.md

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,12 @@ argument, which it then converts to a hexadecimal string and prints to
1212
standard output. If you have the OpenSSL libraries installed, it
1313
should compile and run without any extra effort.
1414

15-
~~~~
15+
~~~~ {.xfail-test}
1616
extern mod std;
17-
use libc::size_t;
17+
use libc::c_uint;
1818
1919
extern mod crypto {
20-
fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8;
20+
fn SHA1(src: *u8, sz: c_uint, out: *u8) -> *u8;
2121
}
2222
2323
fn as_hex(data: ~[u8]) -> ~str {
@@ -29,7 +29,7 @@ fn as_hex(data: ~[u8]) -> ~str {
2929
fn sha1(data: ~str) -> ~str unsafe {
3030
let bytes = str::to_bytes(data);
3131
let hash = crypto::SHA1(vec::raw::to_ptr(bytes),
32-
vec::len(bytes) as size_t, ptr::null());
32+
vec::len(bytes) as c_uint, ptr::null());
3333
return as_hex(vec::from_buf(hash, 20));
3434
}
3535
@@ -43,11 +43,9 @@ fn main() {
4343
Before we can call the `SHA1` function defined in the OpenSSL library, we have
4444
to declare it. That is what this part of the program does:
4545

46-
~~~~
47-
# use libc::size_t;
46+
~~~~ {.xfail-test}
4847
extern mod crypto {
49-
fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8;
50-
}
48+
fn SHA1(src: *u8, sz: uint, out: *u8) -> *u8; }
5149
~~~~
5250

5351
An `extern` module declaration containing function signatures introduces the
@@ -64,11 +62,10 @@ searches for the shared library with that name, and links the library into the
6462
program. If you want the module to have a different name from the actual
6563
library, you can use the `"link_name"` attribute, like:
6664

67-
~~~~
68-
# use libc::size_t;
65+
~~~~ {.xfail-test}
6966
#[link_name = "crypto"]
7067
extern mod something {
71-
fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8;
68+
fn SHA1(src: *u8, sz: uint, out: *u8) -> *u8;
7269
}
7370
~~~~
7471

@@ -97,10 +94,9 @@ calling conventions.
9794

9895
The foreign `SHA1` function takes three arguments, and returns a pointer.
9996

100-
~~~~
101-
# use libc::size_t;
97+
~~~~ {.xfail-test}
10298
# extern mod crypto {
103-
fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8;
99+
fn SHA1(src: *u8, sz: libc::c_uint, out: *u8) -> *u8;
104100
# }
105101
~~~~
106102

@@ -112,8 +108,8 @@ probably even worse, your code will work on one platform, but break on
112108
another.
113109

114110
In this case, we declare that `SHA1` takes two `unsigned char*`
115-
arguments and one `size_t`. The Rust equivalents are `*u8`
116-
unsafe pointers and an `libc::size_t` (which, like `unsigned long`, is a
111+
arguments and one `unsigned long`. The Rust equivalents are `*u8`
112+
unsafe pointers and an `uint` (which, like `unsigned long`, is a
117113
machine-word-sized type).
118114

119115
The standard library provides various functions to create unsafe pointers,
@@ -128,16 +124,14 @@ The `sha1` function is the most obscure part of the program.
128124

129125
~~~~
130126
# pub mod crypto {
131-
# use libc::size_t;
132-
# pub fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8 { out }
127+
# pub fn SHA1(src: *u8, sz: uint, out: *u8) -> *u8 { out }
133128
# }
134-
# use libc::size_t;
135129
# fn as_hex(data: ~[u8]) -> ~str { ~"hi" }
136130
fn sha1(data: ~str) -> ~str {
137131
unsafe {
138132
let bytes = str::to_bytes(data);
139133
let hash = crypto::SHA1(vec::raw::to_ptr(bytes),
140-
vec::len(bytes) as size_t, ptr::null());
134+
vec::len(bytes), ptr::null());
141135
return as_hex(vec::from_buf(hash, 20));
142136
}
143137
}
@@ -175,16 +169,14 @@ Let's look at our `sha1` function again.
175169

176170
~~~~
177171
# pub mod crypto {
178-
# use libc::size_t;
179-
# pub fn SHA1(src: *u8, sz: size_t, out: *u8) -> *u8 { out }
172+
# pub fn SHA1(src: *u8, sz: uint, out: *u8) -> *u8 { out }
180173
# }
181-
# use libc::size_t;
182174
# fn as_hex(data: ~[u8]) -> ~str { ~"hi" }
183175
# fn x(data: ~str) -> ~str {
184176
# unsafe {
185177
let bytes = str::to_bytes(data);
186178
let hash = crypto::SHA1(vec::raw::to_ptr(bytes),
187-
vec::len(bytes) as size_t, ptr::null());
179+
vec::len(bytes), ptr::null());
188180
return as_hex(vec::from_buf(hash, 20));
189181
# }
190182
# }

0 commit comments

Comments
 (0)