From a16dedd6d968daecb71f724ed74daf1ec579e36a Mon Sep 17 00:00:00 2001 From: Steven Fackler Date: Tue, 25 Aug 2015 21:21:40 -0700 Subject: [PATCH] Move url to sys crate --- core-foundation-sys/src/lib.rs | 1 + core-foundation-sys/src/url.rs | 146 +++++++++++++++++++++++++++++++ core-foundation/src/url.rs | 151 +-------------------------------- 3 files changed, 149 insertions(+), 149 deletions(-) create mode 100644 core-foundation-sys/src/url.rs diff --git a/core-foundation-sys/src/lib.rs b/core-foundation-sys/src/lib.rs index a32eae8..e47d5ac 100644 --- a/core-foundation-sys/src/lib.rs +++ b/core-foundation-sys/src/lib.rs @@ -12,3 +12,4 @@ pub mod number; pub mod runloop; pub mod set; pub mod string; +pub mod url; diff --git a/core-foundation-sys/src/url.rs b/core-foundation-sys/src/url.rs new file mode 100644 index 0000000..6013183 --- /dev/null +++ b/core-foundation-sys/src/url.rs @@ -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 +} diff --git a/core-foundation/src/url.rs b/core-foundation/src/url.rs index 4261e5a..3fba536 100644 --- a/core-foundation/src/url.rs +++ b/core-foundation/src/url.rs @@ -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/";