about summary refs log tree commit diff
path: root/src/libstd/unstable/dynamic_lib.rs
diff options
context:
space:
mode:
authorFlorian Hahn <flo@fhahn.com>2013-12-12 22:27:26 +0100
committerFlorian Hahn <flo@fhahn.com>2014-01-22 19:20:47 +0100
commit2eb4f05850e25863f05a56b60931e9eb03944b56 (patch)
treedbbb1b2aeb64ff54abf331d7be7bb9ce6615c9e0 /src/libstd/unstable/dynamic_lib.rs
parent750d48b0ad1854b389ce1c209484f9146dc7aba0 (diff)
Replace C types with Rust types in libstd, closes #7313
Diffstat (limited to 'src/libstd/unstable/dynamic_lib.rs')
-rw-r--r--src/libstd/unstable/dynamic_lib.rs39
1 files changed, 19 insertions, 20 deletions
diff --git a/src/libstd/unstable/dynamic_lib.rs b/src/libstd/unstable/dynamic_lib.rs
index 24568fe13e5..8529b69c6eb 100644
--- a/src/libstd/unstable/dynamic_lib.rs
+++ b/src/libstd/unstable/dynamic_lib.rs
@@ -18,12 +18,11 @@ A simple wrapper over the platform's dynamic library facilities
 use c_str::ToCStr;
 use cast;
 use path;
-use libc;
 use ops::*;
 use option::*;
 use result::*;
 
-pub struct DynamicLibrary { priv handle: *libc::c_void }
+pub struct DynamicLibrary { priv handle: *u8}
 
 impl Drop for DynamicLibrary {
     fn drop(&mut self) {
@@ -142,14 +141,14 @@ pub mod dl {
     use str;
     use result::*;
 
-    pub unsafe fn open_external(filename: &path::Path) -> *libc::c_void {
+    pub unsafe fn open_external(filename: &path::Path) -> *u8 {
         filename.with_c_str(|raw_name| {
-            dlopen(raw_name, Lazy as libc::c_int)
+            dlopen(raw_name, Lazy as libc::c_int) as *u8
         })
     }
 
-    pub unsafe fn open_internal() -> *libc::c_void {
-        dlopen(ptr::null(), Lazy as libc::c_int)
+    pub unsafe fn open_internal() -> *u8 {
+        dlopen(ptr::null(), Lazy as libc::c_int) as *u8
     }
 
     pub fn check_for_errors_in<T>(f: || -> T) -> Result<T, ~str> {
@@ -174,11 +173,11 @@ pub mod dl {
         }
     }
 
-    pub unsafe fn symbol(handle: *libc::c_void, symbol: *libc::c_char) -> *libc::c_void {
-        dlsym(handle, symbol)
+    pub unsafe fn symbol(handle: *u8, symbol: *libc::c_char) -> *u8 {
+        dlsym(handle as *libc::c_void, symbol) as *u8
     }
-    pub unsafe fn close(handle: *libc::c_void) {
-        dlclose(handle); ()
+    pub unsafe fn close(handle: *u8) {
+        dlclose(handle as *libc::c_void); ()
     }
 
     pub enum RTLD {
@@ -206,16 +205,16 @@ pub mod dl {
     use ptr;
     use result::{Ok, Err, Result};
 
-    pub unsafe fn open_external(filename: &path::Path) -> *libc::c_void {
+    pub unsafe fn open_external(filename: &path::Path) -> *u8 {
         os::win32::as_utf16_p(filename.as_str().unwrap(), |raw_name| {
-            LoadLibraryW(raw_name)
+            LoadLibraryW(raw_name as *libc::c_void) as *u8
         })
     }
 
-    pub unsafe fn open_internal() -> *libc::c_void {
+    pub unsafe fn open_internal() -> *u8 {
         let handle = ptr::null();
         GetModuleHandleExW(0 as libc::DWORD, ptr::null(), &handle as **libc::c_void);
-        handle
+        handle as *u8
     }
 
     pub fn check_for_errors_in<T>(f: || -> T) -> Result<T, ~str> {
@@ -233,17 +232,17 @@ pub mod dl {
         }
     }
 
-    pub unsafe fn symbol(handle: *libc::c_void, symbol: *libc::c_char) -> *libc::c_void {
-        GetProcAddress(handle, symbol)
+    pub unsafe fn symbol(handle: *u8, symbol: *libc::c_char) -> *u8 {
+        GetProcAddress(handle as *libc::c_void, symbol) as *u8
     }
-    pub unsafe fn close(handle: *libc::c_void) {
-        FreeLibrary(handle); ()
+    pub unsafe fn close(handle: *u8) {
+        FreeLibrary(handle as *libc::c_void); ()
     }
 
     #[link_name = "kernel32"]
     extern "system" {
-        fn SetLastError(error: u32);
-        fn LoadLibraryW(name: *u16) -> *libc::c_void;
+        fn SetLastError(error: libc::size_t);
+        fn LoadLibraryW(name: *libc::c_void) -> *libc::c_void;
         fn GetModuleHandleExW(dwFlags: libc::DWORD, name: *u16,
                               handle: **libc::c_void) -> *libc::c_void;
         fn GetProcAddress(handle: *libc::c_void, name: *libc::c_char) -> *libc::c_void;