@@ -6,94 +6,96 @@ extern crate libc;
66#[ cfg( unix) ]
77mod t {
88
9- use libc:: { self , c_uchar, c_uint, c_void, cmsghdr, msghdr} ;
10- use std:: mem;
9+ use libc:: { self , c_uchar, c_uint, c_void, cmsghdr, msghdr} ;
10+ use std:: mem;
1111
12- extern {
13- pub fn cmsg_firsthdr ( msgh : * const msghdr ) -> * mut cmsghdr ;
14- pub fn cmsg_nxthdr ( mhdr : * const msghdr ,
15- cmsg : * const cmsghdr ) -> * mut cmsghdr ;
16- pub fn cmsg_space ( length : c_uint ) -> usize ;
17- pub fn cmsg_len ( length : c_uint ) -> usize ;
18- pub fn cmsg_data ( cmsg : * const cmsghdr ) -> * mut c_uchar ;
19- }
12+ extern "C" {
13+ pub fn cmsg_firsthdr ( msgh : * const msghdr ) -> * mut cmsghdr ;
14+ pub fn cmsg_nxthdr (
15+ mhdr : * const msghdr ,
16+ cmsg : * const cmsghdr ,
17+ ) -> * mut cmsghdr ;
18+ pub fn cmsg_space ( length : c_uint ) -> usize ;
19+ pub fn cmsg_len ( length : c_uint ) -> usize ;
20+ pub fn cmsg_data ( cmsg : * const cmsghdr ) -> * mut c_uchar ;
21+ }
2022
21- #[ test]
22- fn test_cmsg_data ( ) {
23- for l in 0 ..128 {
24- let pcmsghdr = l as * const cmsghdr ;
25- unsafe {
26- assert_eq ! ( libc:: CMSG_DATA ( pcmsghdr) , cmsg_data( pcmsghdr) ) ;
23+ #[ test]
24+ fn test_cmsg_data ( ) {
25+ for l in 0 ..128 {
26+ let pcmsghdr = l as * const cmsghdr ;
27+ unsafe {
28+ assert_eq ! ( libc:: CMSG_DATA ( pcmsghdr) , cmsg_data( pcmsghdr) ) ;
29+ }
2730 }
2831 }
29- }
3032
31- #[ test]
32- fn test_cmsg_firsthdr ( ) {
33- let mut mhdr: msghdr = unsafe { mem:: zeroed ( ) } ;
34- mhdr. msg_control = 0xdeadbeef as * mut c_void ;
35- let pmhdr = & mhdr as * const msghdr ;
36- for l in 0 ..128 {
37- mhdr. msg_controllen = l;
38- unsafe {
39- assert_eq ! ( libc:: CMSG_FIRSTHDR ( pmhdr) , cmsg_firsthdr( pmhdr) ) ;
33+ #[ test]
34+ fn test_cmsg_firsthdr ( ) {
35+ let mut mhdr: msghdr = unsafe { mem:: zeroed ( ) } ;
36+ mhdr. msg_control = 0xdeadbeef as * mut c_void ;
37+ let pmhdr = & mhdr as * const msghdr ;
38+ for l in 0 ..128 {
39+ mhdr. msg_controllen = l;
40+ unsafe {
41+ assert_eq ! ( libc:: CMSG_FIRSTHDR ( pmhdr) , cmsg_firsthdr( pmhdr) ) ;
42+ }
4043 }
4144 }
42- }
4345
44- #[ test]
45- fn test_cmsg_len ( ) {
46- for l in 0 ..128 {
47- unsafe {
48- assert_eq ! ( libc:: CMSG_LEN ( l) as usize , cmsg_len( l) ) ;
46+ #[ test]
47+ fn test_cmsg_len ( ) {
48+ for l in 0 ..128 {
49+ unsafe {
50+ assert_eq ! ( libc:: CMSG_LEN ( l) as usize , cmsg_len( l) ) ;
51+ }
4952 }
5053 }
51- }
52-
53- // Skip on sparc64
54- // https://github.com/rust-lang/libc/issues/1239
55- #[ cfg( not( target_arch = "sparc64" ) ) ]
56- #[ test]
57- fn test_cmsg_nxthdr ( ) {
58- use std:: ptr;
5954
60- let mut buffer = [ 0u8 ; 256 ] ;
61- let mut mhdr: msghdr = unsafe { mem:: zeroed ( ) } ;
62- let pmhdr = & mhdr as * const msghdr ;
63- for start_ofs in 0 ..64 {
64- let pcmsghdr = & mut buffer[ start_ofs] as * mut u8 as * mut cmsghdr ;
65- mhdr. msg_control = pcmsghdr as * mut c_void ;
66- mhdr. msg_controllen = ( 160 - start_ofs) as _ ;
67- for cmsg_len in 0 ..64 {
68- for next_cmsg_len in 0 ..32 {
69- for i in buffer[ start_ofs..] . iter_mut ( ) {
70- * i = 0 ;
71- }
72- unsafe {
73- ( * pcmsghdr) . cmsg_len = cmsg_len;
74- let libc_next = libc:: CMSG_NXTHDR ( pmhdr, pcmsghdr) ;
75- let next = cmsg_nxthdr ( pmhdr, pcmsghdr) ;
76- assert_eq ! ( libc_next, next) ;
55+ // Skip on sparc64
56+ // https://github.com/rust-lang/libc/issues/1239
57+ #[ cfg( not( target_arch = "sparc64" ) ) ]
58+ #[ test]
59+ fn test_cmsg_nxthdr ( ) {
60+ use std:: ptr;
7761
78- if libc_next != ptr:: null_mut ( ) {
79- ( * libc_next) . cmsg_len = next_cmsg_len;
62+ let mut buffer = [ 0u8 ; 256 ] ;
63+ let mut mhdr: msghdr = unsafe { mem:: zeroed ( ) } ;
64+ let pmhdr = & mhdr as * const msghdr ;
65+ for start_ofs in 0 ..64 {
66+ let pcmsghdr = & mut buffer[ start_ofs] as * mut u8 as * mut cmsghdr ;
67+ mhdr. msg_control = pcmsghdr as * mut c_void ;
68+ mhdr. msg_controllen = ( 160 - start_ofs) as _ ;
69+ for cmsg_len in 0 ..64 {
70+ for next_cmsg_len in 0 ..32 {
71+ for i in buffer[ start_ofs..] . iter_mut ( ) {
72+ * i = 0 ;
73+ }
74+ unsafe {
75+ ( * pcmsghdr) . cmsg_len = cmsg_len;
8076 let libc_next = libc:: CMSG_NXTHDR ( pmhdr, pcmsghdr) ;
8177 let next = cmsg_nxthdr ( pmhdr, pcmsghdr) ;
8278 assert_eq ! ( libc_next, next) ;
79+
80+ if libc_next != ptr:: null_mut ( ) {
81+ ( * libc_next) . cmsg_len = next_cmsg_len;
82+ let libc_next = libc:: CMSG_NXTHDR ( pmhdr, pcmsghdr) ;
83+ let next = cmsg_nxthdr ( pmhdr, pcmsghdr) ;
84+ assert_eq ! ( libc_next, next) ;
85+ }
8386 }
8487 }
8588 }
8689 }
8790 }
88- }
8991
90- #[ test]
91- fn test_cmsg_space ( ) {
92- unsafe {
93- for l in 0 ..128 {
94- assert_eq ! ( libc:: CMSG_SPACE ( l) as usize , cmsg_space( l) ) ;
92+ #[ test]
93+ fn test_cmsg_space ( ) {
94+ unsafe {
95+ for l in 0 ..128 {
96+ assert_eq ! ( libc:: CMSG_SPACE ( l) as usize , cmsg_space( l) ) ;
97+ }
9598 }
9699 }
97- }
98100
99101}
0 commit comments