Move url to sys crate

This commit is contained in:
Steven Fackler
2015-08-25 21:21:40 -07:00
parent 59632fcae6
commit a16dedd6d9
3 changed files with 149 additions and 149 deletions
+1
View File
@@ -12,3 +12,4 @@ pub mod number;
pub mod runloop;
pub mod set;
pub mod string;
pub mod url;
+146
View File
@@ -0,0 +1,146 @@
use base::{CFOptionFlags, CFIndex, CFAllocatorRef, Boolean, CFTypeID};
use string::CFStringRef;
#[repr(C)]
struct __CFURL;
pub type CFURLRef = *const __CFURL;
pub type CFURLBookmarkCreationOptions = CFOptionFlags;
pub type CFURLPathStyle = CFIndex;
/* typedef CF_ENUM(CFIndex, CFURLPathStyle) */
pub const kCFURLPOSIXPathStyle: CFURLPathStyle = 0;
pub const kCFURLHFSPathStyle: CFURLPathStyle = 1;
pub const kCFURLWindowsPathStyle: CFURLPathStyle = 2;
// static kCFURLBookmarkCreationPreferFileIDResolutionMask: CFURLBookmarkCreationOptions =
// (1 << 8) as u32;
// static kCFURLBookmarkCreationMinimalBookmarkMask: CFURLBookmarkCreationOptions =
// (1 << 9) as u32;
// static kCFURLBookmarkCreationSuitableForBookmarkFile: CFURLBookmarkCreationOptions =
// (1 << 10) as u32;
// static kCFURLBookmarkCreationWithSecurityScope: CFURLBookmarkCreationOptions =
// (1 << 11) as u32;
// static kCFURLBookmarkCreationSecurityScopeAllowOnlyReadAccess: CFURLBookmarkCreationOptions =
// (1 << 12) as u32;
// TODO: there are a lot of missing keys and constants. Add if you are bored or need them.
extern {
/*
* CFURL.h
*/
/* Common File System Resource Keys */
// static kCFURLAttributeModificationDateKey: CFStringRef;
// static kCFURLContentAccessDateKey: CFStringRef;
// static kCFURLContentModificationDateKey: CFStringRef;
// static kCFURLCreationDateKey: CFStringRef;
// static kCFURLCustomIconKey: CFStringRef;
// static kCFURLEffectiveIconKey: CFStringRef;
// static kCFURLFileResourceIdentifierKey: CFStringRef;
// static kCFURLFileSecurityKey: CFStringRef;
// static kCFURLHasHiddenExtensionKey: CFStringRef;
// static kCFURLIsDirectoryKey: CFStringRef;
// static kCFURLIsExecutableKey: CFStringRef;
// static kCFURLIsHiddenKey: CFStringRef;
// static kCFURLIsPackageKey: CFStringRef;
// static kCFURLIsReadableKey: CFStringRef;
// static kCFURLIsRegularFileKey: CFStringRef;
// static kCFURLIsSymbolicLinkKey: CFStringRef;
// static kCFURLIsSystemImmutableKey: CFStringRef;
// static kCFURLIsUserImmutableKey: CFStringRef;
// static kCFURLIsVolumeKey: CFStringRef;
// static kCFURLIsWritableKey: CFStringRef;
// static kCFURLLabelColorKey: CFStringRef;
// static kCFURLLabelNumberKey: CFStringRef;
// static kCFURLLinkCountKey: CFStringRef;
// static kCFURLLocalizedLabelKey: CFStringRef;
// static kCFURLLocalizedNameKey: CFStringRef;
// static kCFURLLocalizedTypeDescriptionKey: CFStringRef;
// static kCFURLNameKey: CFStringRef;
// static kCFURLParentDirectoryURLKey: CFStringRef;
// static kCFURLPreferredIOBlockSizeKey: CFStringRef;
// static kCFURLTypeIdentifierKey: CFStringRef;
// static kCFURLVolumeIdentifierKey: CFStringRef;
// static kCFURLVolumeURLKey: CFStringRef;
// static kCFURLIsExcludedFromBackupKey: CFStringRef;
// static kCFURLFileResourceTypeKey: CFStringRef;
/* Creating a CFURL */
//fn CFURLCopyAbsoluteURL
//fn CFURLCreateAbsoluteURLWithBytes
//fn CFURLCreateByResolvingBookmarkData
//fn CFURLCreateCopyAppendingPathComponent
//fn CFURLCreateCopyAppendingPathExtension
//fn CFURLCreateCopyDeletingLastPathComponent
//fn CFURLCreateCopyDeletingPathExtension
//fn CFURLCreateFilePathURL
//fn CFURLCreateFileReferenceURL
//fn CFURLCreateFromFileSystemRepresentation
//fn CFURLCreateFromFileSystemRepresentationRelativeToBase
//fn CFURLCreateFromFSRef
//fn CFURLCreateWithBytes
//fn CFURLCreateWithFileSystemPath
pub fn CFURLCreateWithFileSystemPath(allocator: CFAllocatorRef, filePath: CFStringRef, pathStyle: CFURLPathStyle, isDirectory: Boolean) -> CFURLRef;
//fn CFURLCreateWithFileSystemPathRelativeToBase
//fn CFURLCreateWithString(allocator: CFAllocatorRef, urlString: CFStringRef,
// baseURL: CFURLRef) -> CFURLRef;
/* Accessing the Parts of a URL */
//fn CFURLCanBeDecomposed
//fn CFURLCopyFileSystemPath
//fn CFURLCopyFragment
//fn CFURLCopyHostName
//fn CFURLCopyLastPathComponent
//fn CFURLCopyNetLocation
//fn CFURLCopyParameterString
//fn CFURLCopyPassword
//fn CFURLCopyPath
//fn CFURLCopyPathExtension
//fn CFURLCopyQueryString
//fn CFURLCopyResourceSpecifier
//fn CFURLCopyScheme
//fn CFURLCopyStrictPath
//fn CFURLCopyUserName
//fn CFURLGetPortNumber
//fn CFURLHasDirectoryPath
/* Converting URLs to Other Representations */
//fn CFURLCreateData(allocator: CFAllocatorRef, url: CFURLRef,
// encoding: CFStringEncoding, escapeWhitespace: bool) -> CFDataRef;
//fn CFURLCreateStringByAddingPercentEscapes
//fn CFURLCreateStringByReplacingPercentEscapes
//fn CFURLCreateStringByReplacingPercentEscapesUsingEncoding
//fn CFURLGetFileSystemRepresentation
//fn CFURLGetFSRef
pub fn CFURLGetString(anURL: CFURLRef) -> CFStringRef;
/* Getting URL Properties */
//fn CFURLGetBaseURL(anURL: CFURLRef) -> CFURLRef;
//fn CFURLGetBytes
//fn CFURLGetByteRangeForComponent
pub fn CFURLGetTypeID() -> CFTypeID;
//fn CFURLResourceIsReachable
/* Getting and Setting File System Resource Properties */
//fn CFURLClearResourcePropertyCache
//fn CFURLClearResourcePropertyCacheForKey
//fn CFURLCopyResourcePropertiesForKeys
//fn CFURLCopyResourcePropertyForKey
//fn CFURLCreateResourcePropertiesForKeysFromBookmarkData
//fn CFURLCreateResourcePropertyForKeyFromBookmarkData
//fn CFURLSetResourcePropertiesForKeys
//fn CFURLSetResourcePropertyForKey
//fn CFURLSetTemporaryResourcePropertyForKey
/* Working with Bookmark Data */
//fn CFURLCreateBookmarkData
//fn CFURLCreateBookmarkDataFromAliasRecord
//fn CFURLCreateBookmarkDataFromFile
//fn CFURLWriteBookmarkDataToFile
//fn CFURLStartAccessingSecurityScopedResource
//fn CFURLStopAccessingSecurityScopedResource
}
+2 -149
View File
@@ -14,17 +14,11 @@
use base::{TCFType};
use string::{CFString};
use core_foundation_sys::base::{CFAllocatorRef, CFIndex, CFRelease, CFOptionFlags};
use core_foundation_sys::base::{Boolean, CFTypeID, kCFAllocatorDefault};
use core_foundation_sys::string::CFStringRef;
use core_foundation_sys::base::{kCFAllocatorDefault, CFRelease};
use core_foundation_sys::url::*;
use std::fmt;
use std::mem;
#[repr(C)]
struct __CFURL;
pub type CFURLRef = *const __CFURL;
pub struct CFURL(CFURLRef);
impl Drop for CFURL {
@@ -62,147 +56,6 @@ impl CFURL {
}
}
type CFURLBookmarkCreationOptions = CFOptionFlags;
pub type CFURLPathStyle = CFIndex;
/* typedef CF_ENUM(CFIndex, CFURLPathStyle) */
pub const kCFURLPOSIXPathStyle: CFURLPathStyle = 0;
pub const kCFURLHFSPathStyle: CFURLPathStyle = 1;
pub const kCFURLWindowsPathStyle: CFURLPathStyle = 2;
// static kCFURLBookmarkCreationPreferFileIDResolutionMask: CFURLBookmarkCreationOptions =
// (1 << 8) as u32;
// static kCFURLBookmarkCreationMinimalBookmarkMask: CFURLBookmarkCreationOptions =
// (1 << 9) as u32;
// static kCFURLBookmarkCreationSuitableForBookmarkFile: CFURLBookmarkCreationOptions =
// (1 << 10) as u32;
// static kCFURLBookmarkCreationWithSecurityScope: CFURLBookmarkCreationOptions =
// (1 << 11) as u32;
// static kCFURLBookmarkCreationSecurityScopeAllowOnlyReadAccess: CFURLBookmarkCreationOptions =
// (1 << 12) as u32;
// TODO: there are a lot of missing keys and constants. Add if you are bored or need them.
#[link(name = "CoreFoundation", kind = "framework")]
extern {
/*
* CFURL.h
*/
/* Common File System Resource Keys */
// static kCFURLAttributeModificationDateKey: CFStringRef;
// static kCFURLContentAccessDateKey: CFStringRef;
// static kCFURLContentModificationDateKey: CFStringRef;
// static kCFURLCreationDateKey: CFStringRef;
// static kCFURLCustomIconKey: CFStringRef;
// static kCFURLEffectiveIconKey: CFStringRef;
// static kCFURLFileResourceIdentifierKey: CFStringRef;
// static kCFURLFileSecurityKey: CFStringRef;
// static kCFURLHasHiddenExtensionKey: CFStringRef;
// static kCFURLIsDirectoryKey: CFStringRef;
// static kCFURLIsExecutableKey: CFStringRef;
// static kCFURLIsHiddenKey: CFStringRef;
// static kCFURLIsPackageKey: CFStringRef;
// static kCFURLIsReadableKey: CFStringRef;
// static kCFURLIsRegularFileKey: CFStringRef;
// static kCFURLIsSymbolicLinkKey: CFStringRef;
// static kCFURLIsSystemImmutableKey: CFStringRef;
// static kCFURLIsUserImmutableKey: CFStringRef;
// static kCFURLIsVolumeKey: CFStringRef;
// static kCFURLIsWritableKey: CFStringRef;
// static kCFURLLabelColorKey: CFStringRef;
// static kCFURLLabelNumberKey: CFStringRef;
// static kCFURLLinkCountKey: CFStringRef;
// static kCFURLLocalizedLabelKey: CFStringRef;
// static kCFURLLocalizedNameKey: CFStringRef;
// static kCFURLLocalizedTypeDescriptionKey: CFStringRef;
// static kCFURLNameKey: CFStringRef;
// static kCFURLParentDirectoryURLKey: CFStringRef;
// static kCFURLPreferredIOBlockSizeKey: CFStringRef;
// static kCFURLTypeIdentifierKey: CFStringRef;
// static kCFURLVolumeIdentifierKey: CFStringRef;
// static kCFURLVolumeURLKey: CFStringRef;
// static kCFURLIsExcludedFromBackupKey: CFStringRef;
// static kCFURLFileResourceTypeKey: CFStringRef;
/* Creating a CFURL */
//fn CFURLCopyAbsoluteURL
//fn CFURLCreateAbsoluteURLWithBytes
//fn CFURLCreateByResolvingBookmarkData
//fn CFURLCreateCopyAppendingPathComponent
//fn CFURLCreateCopyAppendingPathExtension
//fn CFURLCreateCopyDeletingLastPathComponent
//fn CFURLCreateCopyDeletingPathExtension
//fn CFURLCreateFilePathURL
//fn CFURLCreateFileReferenceURL
//fn CFURLCreateFromFileSystemRepresentation
//fn CFURLCreateFromFileSystemRepresentationRelativeToBase
//fn CFURLCreateFromFSRef
//fn CFURLCreateWithBytes
//fn CFURLCreateWithFileSystemPath
fn CFURLCreateWithFileSystemPath(allocator: CFAllocatorRef, filePath: CFStringRef, pathStyle: CFURLPathStyle, isDirectory: Boolean) -> CFURLRef;
//fn CFURLCreateWithFileSystemPathRelativeToBase
//fn CFURLCreateWithString(allocator: CFAllocatorRef, urlString: CFStringRef,
// baseURL: CFURLRef) -> CFURLRef;
/* Accessing the Parts of a URL */
//fn CFURLCanBeDecomposed
//fn CFURLCopyFileSystemPath
//fn CFURLCopyFragment
//fn CFURLCopyHostName
//fn CFURLCopyLastPathComponent
//fn CFURLCopyNetLocation
//fn CFURLCopyParameterString
//fn CFURLCopyPassword
//fn CFURLCopyPath
//fn CFURLCopyPathExtension
//fn CFURLCopyQueryString
//fn CFURLCopyResourceSpecifier
//fn CFURLCopyScheme
//fn CFURLCopyStrictPath
//fn CFURLCopyUserName
//fn CFURLGetPortNumber
//fn CFURLHasDirectoryPath
/* Converting URLs to Other Representations */
//fn CFURLCreateData(allocator: CFAllocatorRef, url: CFURLRef,
// encoding: CFStringEncoding, escapeWhitespace: bool) -> CFDataRef;
//fn CFURLCreateStringByAddingPercentEscapes
//fn CFURLCreateStringByReplacingPercentEscapes
//fn CFURLCreateStringByReplacingPercentEscapesUsingEncoding
//fn CFURLGetFileSystemRepresentation
//fn CFURLGetFSRef
fn CFURLGetString(anURL: CFURLRef) -> CFStringRef;
/* Getting URL Properties */
//fn CFURLGetBaseURL(anURL: CFURLRef) -> CFURLRef;
//fn CFURLGetBytes
//fn CFURLGetByteRangeForComponent
fn CFURLGetTypeID() -> CFTypeID;
//fn CFURLResourceIsReachable
/* Getting and Setting File System Resource Properties */
//fn CFURLClearResourcePropertyCache
//fn CFURLClearResourcePropertyCacheForKey
//fn CFURLCopyResourcePropertiesForKeys
//fn CFURLCopyResourcePropertyForKey
//fn CFURLCreateResourcePropertiesForKeysFromBookmarkData
//fn CFURLCreateResourcePropertyForKeyFromBookmarkData
//fn CFURLSetResourcePropertiesForKeys
//fn CFURLSetResourcePropertyForKey
//fn CFURLSetTemporaryResourcePropertyForKey
/* Working with Bookmark Data */
//fn CFURLCreateBookmarkData
//fn CFURLCreateBookmarkDataFromAliasRecord
//fn CFURLCreateBookmarkDataFromFile
//fn CFURLWriteBookmarkDataToFile
//fn CFURLStartAccessingSecurityScopedResource
//fn CFURLStopAccessingSecurityScopedResource
}
#[test]
fn file_url_from_path() {
let path = "/usr/local/foo/";