Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split a -sys crate out #68

Merged
merged 19 commits into from Oct 15, 2015

Move url to sys crate

  • Loading branch information
sfackler committed Sep 6, 2015
commit a16dedd6d968daecb71f724ed74daf1ec579e36a
@@ -12,3 +12,4 @@ pub mod number;
pub mod runloop;
pub mod set;
pub mod string;
pub mod url;
@@ -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
}
@@ -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/";
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.