482 lines
21 KiB
Rust
482 lines
21 KiB
Rust
// Copyright 2013-2015 The Servo Project Developers. See the COPYRIGHT
|
|
// file at the top-level directory of this distribution.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
// option. This file may not be copied, modified, or distributed
|
|
// except according to those terms.
|
|
|
|
use std::os::raw::c_void;
|
|
|
|
use crate::array::CFArrayRef;
|
|
use crate::base::{
|
|
Boolean, CFAllocatorRef, CFIndex, CFOptionFlags, CFRange, CFTypeID, CFTypeRef, SInt32,
|
|
};
|
|
use crate::data::CFDataRef;
|
|
use crate::dictionary::CFDictionaryRef;
|
|
use crate::error::CFErrorRef;
|
|
use crate::string::{CFStringEncoding, CFStringRef};
|
|
|
|
#[repr(C)]
|
|
pub struct __CFURL(c_void);
|
|
|
|
pub type CFURLRef = *const __CFURL;
|
|
|
|
pub type CFURLBookmarkCreationOptions = CFOptionFlags;
|
|
pub type CFURLBookmarkResolutionOptions = CFOptionFlags;
|
|
pub type CFURLBookmarkFileCreationOptions = 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;
|
|
|
|
/* Bookmark Data Creation Options */
|
|
pub static kCFURLBookmarkCreationMinimalBookmarkMask: CFURLBookmarkCreationOptions =
|
|
(1u32 << 9) as usize;
|
|
pub static kCFURLBookmarkCreationSuitableForBookmarkFile: CFURLBookmarkCreationOptions =
|
|
(1u32 << 10) as usize;
|
|
|
|
#[cfg(target_os = "macos")]
|
|
pub static kCFURLBookmarkCreationWithSecurityScope: CFURLBookmarkCreationOptions =
|
|
(1u32 << 11) as usize;
|
|
|
|
#[cfg(target_os = "macos")]
|
|
pub static kCFURLBookmarkCreationSecurityScopeAllowOnlyReadAccess: CFURLBookmarkCreationOptions =
|
|
(1u32 << 12) as usize;
|
|
|
|
pub static kCFURLBookmarkCreationWithoutImplicitSecurityScope: CFURLBookmarkCreationOptions =
|
|
(1u32 << 29) as usize;
|
|
|
|
pub static kCFURLBookmarkCreationPreferFileIDResolutionMask: CFURLBookmarkCreationOptions =
|
|
(1u32 << 8) as usize; // deprecated
|
|
|
|
/* The types of components in a URL. */
|
|
pub type CFURLComponentType = CFIndex;
|
|
pub const kCFURLComponentScheme: CFIndex = 1;
|
|
pub const kCFURLComponentNetLocation: CFIndex = 2;
|
|
pub const kCFURLComponentPath: CFIndex = 3;
|
|
pub const kCFURLComponentResourceSpecifier: CFIndex = 4;
|
|
pub const kCFURLComponentUser: CFIndex = 5;
|
|
pub const kCFURLComponentPassword: CFIndex = 6;
|
|
pub const kCFURLComponentUserInfo: CFIndex = 7;
|
|
pub const kCFURLComponentHost: CFIndex = 8;
|
|
pub const kCFURLComponentPort: CFIndex = 9;
|
|
pub const kCFURLComponentParameterString: CFIndex = 10;
|
|
pub const kCFURLComponentQuery: CFIndex = 11;
|
|
pub const kCFURLComponentFragment: CFIndex = 12;
|
|
|
|
/* Bookmark Data Resolution Options */
|
|
pub const kCFURLBookmarkResolutionWithoutUIMask: CFURLBookmarkResolutionOptions =
|
|
(1u32 << 8) as usize;
|
|
pub const kCFURLBookmarkResolutionWithoutMountingMask: CFURLBookmarkResolutionOptions =
|
|
(1u32 << 9) as usize;
|
|
#[cfg(target_os = "macos")]
|
|
pub const kCFURLBookmarkResolutionWithSecurityScope: CFURLBookmarkResolutionOptions =
|
|
(1u32 << 10) as usize;
|
|
//pub const kCFURLBookmarkResolutionWithoutImplicitStartAccessing: CFURLBookmarkResolutionOptions = ( 1u32 << 15 ) as usize; // macos(11.2)+
|
|
pub const kCFBookmarkResolutionWithoutUIMask: CFURLBookmarkResolutionOptions = (1u32 << 8) as usize;
|
|
pub const kCFBookmarkResolutionWithoutMountingMask: CFURLBookmarkResolutionOptions =
|
|
(1u32 << 9) as usize;
|
|
|
|
extern "C" {
|
|
/*
|
|
* CFURL.h
|
|
*/
|
|
|
|
/* Common File System Resource Keys */
|
|
pub static kCFURLNameKey: CFStringRef;
|
|
pub static kCFURLLocalizedNameKey: CFStringRef;
|
|
pub static kCFURLIsRegularFileKey: CFStringRef;
|
|
pub static kCFURLIsDirectoryKey: CFStringRef;
|
|
pub static kCFURLIsSymbolicLinkKey: CFStringRef;
|
|
pub static kCFURLIsVolumeKey: CFStringRef;
|
|
pub static kCFURLIsPackageKey: CFStringRef;
|
|
pub static kCFURLIsApplicationKey: CFStringRef;
|
|
// pub static kCFURLApplicationIsScriptableKey: CFStringRef; //macos(10.11)+
|
|
|
|
pub static kCFURLIsSystemImmutableKey: CFStringRef;
|
|
pub static kCFURLIsUserImmutableKey: CFStringRef;
|
|
pub static kCFURLIsHiddenKey: CFStringRef;
|
|
pub static kCFURLHasHiddenExtensionKey: CFStringRef;
|
|
pub static kCFURLCreationDateKey: CFStringRef;
|
|
pub static kCFURLContentAccessDateKey: CFStringRef;
|
|
pub static kCFURLContentModificationDateKey: CFStringRef;
|
|
pub static kCFURLAttributeModificationDateKey: CFStringRef;
|
|
// pub static kCFURLFileIdentifierKey: CFStringRef; //macos(13.3)+
|
|
// pub static kCFURLFileContentIdentifierKey: CFStringRef; //macos(11.0)+
|
|
// pub static kCFURLMayShareFileContentKey: CFStringRef; //macos(11.0)+
|
|
// pub static kCFURLMayHaveExtendedAttributesKey: CFStringRef; //macos(11.0)+
|
|
// pub static kCFURLIsPurgeableKey: CFStringRef; //macos(11.0)+
|
|
// pub static kCFURLIsSparseKey: CFStringRef; //macos(11.0)+
|
|
|
|
pub static kCFURLLinkCountKey: CFStringRef;
|
|
pub static kCFURLParentDirectoryURLKey: CFStringRef;
|
|
pub static kCFURLVolumeURLKey: CFStringRef;
|
|
|
|
pub static kCFURLTypeIdentifierKey: CFStringRef; //deprecated
|
|
|
|
pub static kCFURLLocalizedTypeDescriptionKey: CFStringRef;
|
|
pub static kCFURLLabelNumberKey: CFStringRef;
|
|
pub static kCFURLLabelColorKey: CFStringRef; //deprecated
|
|
pub static kCFURLLocalizedLabelKey: CFStringRef;
|
|
pub static kCFURLEffectiveIconKey: CFStringRef; //deprecated
|
|
pub static kCFURLCustomIconKey: CFStringRef; //deprecated
|
|
|
|
pub static kCFURLFileResourceIdentifierKey: CFStringRef;
|
|
pub static kCFURLVolumeIdentifierKey: CFStringRef;
|
|
pub static kCFURLPreferredIOBlockSizeKey: CFStringRef;
|
|
pub static kCFURLIsReadableKey: CFStringRef;
|
|
pub static kCFURLIsWritableKey: CFStringRef;
|
|
pub static kCFURLIsExecutableKey: CFStringRef;
|
|
pub static kCFURLFileSecurityKey: CFStringRef;
|
|
|
|
#[cfg(feature = "mac_os_10_8_features")]
|
|
#[cfg_attr(feature = "mac_os_10_7_support", linkage = "extern_weak")]
|
|
pub static kCFURLIsExcludedFromBackupKey: CFStringRef;
|
|
// pub static kCFURLTagNamesKey: CFStringRef; //macos(10.9)+
|
|
#[cfg(feature = "mac_os_10_8_features")]
|
|
#[cfg_attr(feature = "mac_os_10_7_support", linkage = "extern_weak")]
|
|
pub static kCFURLPathKey: CFStringRef; // macos(10.8)+
|
|
pub static kCFURLCanonicalPathKey: CFStringRef; // macos(10.12)+
|
|
|
|
pub static kCFURLIsMountTriggerKey: CFStringRef;
|
|
|
|
// pub static kCFURLGenerationIdentifierKey: CFStringRef; // macos(10.10)+
|
|
// pub static kCFURLDocumentIdentifierKey: CFStringRef; // macos(10.10)+
|
|
// pub static kCFURLAddedToDirectoryDateKey: CFStringRef; // macos(10.10)+
|
|
// pub static kCFURLQuarantinePropertiesKey: CFStringRef; // macos(10.10)+
|
|
|
|
pub static kCFURLFileResourceTypeKey: CFStringRef;
|
|
|
|
/* File Resource Types. The file system object type values returned for the kCFURLFileResourceTypeKey */
|
|
pub static kCFURLFileResourceTypeNamedPipe: CFStringRef;
|
|
pub static kCFURLFileResourceTypeCharacterSpecial: CFStringRef;
|
|
pub static kCFURLFileResourceTypeDirectory: CFStringRef;
|
|
pub static kCFURLFileResourceTypeBlockSpecial: CFStringRef;
|
|
pub static kCFURLFileResourceTypeRegular: CFStringRef;
|
|
pub static kCFURLFileResourceTypeSymbolicLink: CFStringRef;
|
|
pub static kCFURLFileResourceTypeSocket: CFStringRef;
|
|
pub static kCFURLFileResourceTypeUnknown: CFStringRef;
|
|
|
|
/* File Property Keys */
|
|
pub static kCFURLFileSizeKey: CFStringRef;
|
|
pub static kCFURLFileAllocatedSizeKey: CFStringRef;
|
|
pub static kCFURLTotalFileSizeKey: CFStringRef;
|
|
pub static kCFURLTotalFileAllocatedSizeKey: CFStringRef;
|
|
pub static kCFURLIsAliasFileKey: CFStringRef;
|
|
|
|
// pub static kCFURLFileProtectionKey: CFStringRef; // ios(9.0)+
|
|
|
|
/* The protection level values returned for the kCFURLFileProtectionKey */
|
|
// pub static kCFURLFileProtectionNone: CFStringRef; // ios(9.0)+
|
|
// pub static kCFURLFileProtectionComplete: CFStringRef; // ios(9.0)+
|
|
// pub static kCFURLFileProtectionCompleteUnlessOpen: CFStringRef; // ios(9.0)+
|
|
// pub static kCFURLFileProtectionCompleteUntilFirstUserAuthentication: CFStringRef; // ios(9.0)+
|
|
|
|
/* Volume Property Keys */
|
|
pub static kCFURLVolumeLocalizedFormatDescriptionKey: CFStringRef;
|
|
pub static kCFURLVolumeTotalCapacityKey: CFStringRef;
|
|
pub static kCFURLVolumeAvailableCapacityKey: CFStringRef;
|
|
//pub static kCFURLVolumeAvailableCapacityForImportantUsageKey: CFStringRef; //macos(10.13)+
|
|
//pub static kCFURLVolumeAvailableCapacityForOpportunisticUsageKey: CFStringRef; //macos(10.13)+
|
|
|
|
pub static kCFURLVolumeResourceCountKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsPersistentIDsKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsSymbolicLinksKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsHardLinksKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsJournalingKey: CFStringRef;
|
|
pub static kCFURLVolumeIsJournalingKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsSparseFilesKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsZeroRunsKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsCaseSensitiveNamesKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsCasePreservedNamesKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsRootDirectoryDatesKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsVolumeSizesKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsRenamingKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsAdvisoryFileLockingKey: CFStringRef;
|
|
pub static kCFURLVolumeSupportsExtendedSecurityKey: CFStringRef;
|
|
pub static kCFURLVolumeIsBrowsableKey: CFStringRef;
|
|
pub static kCFURLVolumeMaximumFileSizeKey: CFStringRef;
|
|
pub static kCFURLVolumeIsEjectableKey: CFStringRef;
|
|
pub static kCFURLVolumeIsRemovableKey: CFStringRef;
|
|
pub static kCFURLVolumeIsInternalKey: CFStringRef;
|
|
pub static kCFURLVolumeIsAutomountedKey: CFStringRef;
|
|
pub static kCFURLVolumeIsLocalKey: CFStringRef;
|
|
pub static kCFURLVolumeIsReadOnlyKey: CFStringRef;
|
|
pub static kCFURLVolumeCreationDateKey: CFStringRef;
|
|
pub static kCFURLVolumeURLForRemountingKey: CFStringRef;
|
|
pub static kCFURLVolumeUUIDStringKey: CFStringRef;
|
|
pub static kCFURLVolumeNameKey: CFStringRef;
|
|
pub static kCFURLVolumeLocalizedNameKey: CFStringRef;
|
|
// pub static kCFURLVolumeIsEncryptedKey: CFStringRef; //macos(10.12)+
|
|
// pub static kCFURLVolumeIsRootFileSystemKey: CFStringRef; //macos(10.12)+
|
|
// pub static kCFURLVolumeSupportsCompressionKey: CFStringRef; //macos(10.12)+
|
|
// pub static kCFURLVolumeSupportsFileCloningKey: CFStringRef; //macos(10.12)+
|
|
// pub static kCFURLVolumeSupportsSwapRenamingKey: CFStringRef; //macos(10.12)+
|
|
// pub static kCFURLVolumeSupportsExclusiveRenamingKey: CFStringRef; //macos(10.12)+
|
|
// pub static kCFURLVolumeSupportsImmutableFilesKey: CFStringRef; //macos(10.13)+
|
|
// pub static kCFURLVolumeSupportsAccessPermissionsKey: CFStringRef; //macos(10.13)+
|
|
// pub static kCFURLVolumeSupportsFileProtectionKey: CFStringRef; //macos(11.0)+
|
|
// pub static kCFURLVolumeTypeNameKey: CFStringRef; //macos(13.3)+
|
|
// pub static kCFURLVolumeSubtypeKey: CFStringRef; //macos(13.3)+
|
|
// pub static kCFURLVolumeMountFromLocationKey: CFStringRef; //macos(13.3)+
|
|
|
|
/* iCloud Constants */
|
|
pub static kCFURLIsUbiquitousItemKey: CFStringRef;
|
|
pub static kCFURLUbiquitousItemHasUnresolvedConflictsKey: CFStringRef;
|
|
pub static kCFURLUbiquitousItemIsDownloadedKey: CFStringRef; // deprecated
|
|
pub static kCFURLUbiquitousItemIsDownloadingKey: CFStringRef;
|
|
pub static kCFURLUbiquitousItemIsUploadedKey: CFStringRef;
|
|
pub static kCFURLUbiquitousItemIsUploadingKey: CFStringRef;
|
|
pub static kCFURLUbiquitousItemPercentDownloadedKey: CFStringRef; // deprecated
|
|
pub static kCFURLUbiquitousItemPercentUploadedKey: CFStringRef; // deprecated
|
|
// pub static kCFURLUbiquitousItemDownloadingStatusKey: CFStringRef; // macos(10.9)+
|
|
// pub static kCFURLUbiquitousItemDownloadingErrorKey: CFStringRef; // macos(10.9)+
|
|
// pub static kCFURLUbiquitousItemUploadingErrorKey: CFStringRef; // macos(10.9)+
|
|
// pub static kCFURLUbiquitousItemIsExcludedFromSyncKey: CFStringRef; // macos(11.3)+
|
|
|
|
/* The values returned for kCFURLUbiquitousItemDownloadingStatusKey */
|
|
// pub static kCFURLUbiquitousItemDownloadingStatusNotDownloaded: CFStringRef; // macos(10.9)+
|
|
// pub static kCFURLUbiquitousItemDownloadingStatusDownloaded: CFStringRef; // macos(10.9)+
|
|
// pub static kCFURLUbiquitousItemDownloadingStatusCurrent: CFStringRef; // macos(10.9)+
|
|
|
|
/* CFError userInfo Dictionary Keys */
|
|
pub static kCFURLKeysOfUnsetValuesKey: CFStringRef;
|
|
|
|
/* Creating a CFURL */
|
|
pub fn CFURLCopyAbsoluteURL(anURL: CFURLRef) -> CFURLRef;
|
|
pub fn CFURLCreateAbsoluteURLWithBytes(
|
|
allocator: CFAllocatorRef,
|
|
relativeURLBytes: *const u8,
|
|
length: CFIndex,
|
|
encoding: CFStringEncoding,
|
|
baseURL: CFURLRef,
|
|
useCompatibilityMode: Boolean,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateByResolvingBookmarkData(
|
|
allocator: CFAllocatorRef,
|
|
bookmark: CFDataRef,
|
|
options: CFURLBookmarkResolutionOptions,
|
|
relativeToURL: CFURLRef,
|
|
resourcePropertiesToInclude: CFArrayRef,
|
|
isStale: *mut Boolean,
|
|
error: *mut CFErrorRef,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateCopyAppendingPathComponent(
|
|
allocator: CFAllocatorRef,
|
|
url: CFURLRef,
|
|
pathComponent: CFStringRef,
|
|
isDirectory: Boolean,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateCopyAppendingPathExtension(
|
|
allocator: CFAllocatorRef,
|
|
url: CFURLRef,
|
|
extension: CFStringRef,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateCopyDeletingLastPathComponent(
|
|
allocator: CFAllocatorRef,
|
|
url: CFURLRef,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateCopyDeletingPathExtension(
|
|
allocator: CFAllocatorRef,
|
|
url: CFURLRef,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateFilePathURL(
|
|
allocator: CFAllocatorRef,
|
|
url: CFURLRef,
|
|
error: *mut CFErrorRef,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateFileReferenceURL(
|
|
allocator: CFAllocatorRef,
|
|
url: CFURLRef,
|
|
error: *mut CFErrorRef,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateFromFileSystemRepresentation(
|
|
allocator: CFAllocatorRef,
|
|
buffer: *const u8,
|
|
bufLen: CFIndex,
|
|
isDirectory: Boolean,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateFromFileSystemRepresentationRelativeToBase(
|
|
allocator: CFAllocatorRef,
|
|
buffer: *const u8,
|
|
bufLen: CFIndex,
|
|
isDirectory: Boolean,
|
|
baseURL: CFURLRef,
|
|
) -> CFURLRef;
|
|
//pub fn CFURLCreateFromFSRef(allocator: CFAllocatorRef, fsRef: *const FSRef) -> CFURLRef
|
|
pub fn CFURLCreateWithBytes(
|
|
allocator: CFAllocatorRef,
|
|
URLBytes: *const u8,
|
|
length: CFIndex,
|
|
encoding: CFStringEncoding,
|
|
baseURL: CFURLRef,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateWithFileSystemPath(
|
|
allocator: CFAllocatorRef,
|
|
filePath: CFStringRef,
|
|
pathStyle: CFURLPathStyle,
|
|
isDirectory: Boolean,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateWithFileSystemPathRelativeToBase(
|
|
allocator: CFAllocatorRef,
|
|
filePath: CFStringRef,
|
|
pathStyle: CFURLPathStyle,
|
|
isDirectory: Boolean,
|
|
baseURL: CFURLRef,
|
|
) -> CFURLRef;
|
|
pub fn CFURLCreateWithString(
|
|
allocator: CFAllocatorRef,
|
|
URLString: CFStringRef,
|
|
baseURL: CFURLRef,
|
|
) -> CFURLRef;
|
|
|
|
/* Accessing the Parts of a URL */
|
|
pub fn CFURLCanBeDecomposed(anURL: CFURLRef) -> Boolean;
|
|
pub fn CFURLCopyFileSystemPath(anURL: CFURLRef, pathStyle: CFURLPathStyle) -> CFStringRef;
|
|
pub fn CFURLCopyFragment(anURL: CFURLRef, charactersToLeaveEscaped: CFStringRef)
|
|
-> CFStringRef;
|
|
pub fn CFURLCopyHostName(anURL: CFURLRef) -> CFStringRef;
|
|
pub fn CFURLCopyLastPathComponent(anURL: CFURLRef) -> CFStringRef;
|
|
pub fn CFURLCopyNetLocation(anURL: CFURLRef) -> CFStringRef;
|
|
pub fn CFURLCopyParameterString(
|
|
anURL: CFURLRef,
|
|
charactersToLeaveEscaped: CFStringRef,
|
|
) -> CFStringRef; // deprecated
|
|
pub fn CFURLCopyPassword(anURL: CFURLRef) -> CFStringRef;
|
|
pub fn CFURLCopyPath(anURL: CFURLRef) -> CFStringRef;
|
|
pub fn CFURLCopyPathExtension(anURL: CFURLRef) -> CFStringRef;
|
|
pub fn CFURLCopyQueryString(
|
|
anURL: CFURLRef,
|
|
charactersToLeaveEscaped: CFStringRef,
|
|
) -> CFStringRef;
|
|
pub fn CFURLCopyResourceSpecifier(anURL: CFURLRef) -> CFStringRef;
|
|
pub fn CFURLCopyScheme(anURL: CFURLRef) -> CFStringRef;
|
|
pub fn CFURLCopyStrictPath(anURL: CFURLRef, isAbsolute: *mut Boolean) -> CFStringRef;
|
|
pub fn CFURLCopyUserName(anURL: CFURLRef) -> CFStringRef;
|
|
pub fn CFURLGetPortNumber(anURL: CFURLRef) -> SInt32;
|
|
pub fn CFURLHasDirectoryPath(anURL: CFURLRef) -> Boolean;
|
|
|
|
/* Converting URLs to Other Representations */
|
|
pub fn CFURLCreateData(
|
|
allocator: CFAllocatorRef,
|
|
url: CFURLRef,
|
|
encoding: CFStringEncoding,
|
|
escapeWhitespace: Boolean,
|
|
) -> CFDataRef;
|
|
pub fn CFURLCreateStringByAddingPercentEscapes(
|
|
allocator: CFAllocatorRef,
|
|
originalString: CFStringRef,
|
|
charactersToLeaveUnescaped: CFStringRef,
|
|
legalURLCharactersToBeEscaped: CFStringRef,
|
|
encoding: CFStringEncoding,
|
|
) -> CFStringRef; // API_DEPRECATED("Use [NSString stringByAddingPercentEncodingWithAllowedCharacters:] instead, which always uses the recommended UTF-8 encoding, and which encodes for a specific URL component or subcomponent (since each URL component or subcomponent has different rules for what characters are valid).", macos(10.0,10.11), ios(2.0,9.0), watchos(2.0,2.0), tvos(9.0,9.0));
|
|
pub fn CFURLCreateStringByReplacingPercentEscapes(
|
|
allocator: CFAllocatorRef,
|
|
originalString: CFStringRef,
|
|
charactersToLeaveEscaped: CFStringRef,
|
|
) -> CFStringRef;
|
|
pub fn CFURLCreateStringByReplacingPercentEscapesUsingEncoding(
|
|
allocator: CFAllocatorRef,
|
|
origString: CFStringRef,
|
|
charsToLeaveEscaped: CFStringRef,
|
|
encoding: CFStringEncoding,
|
|
) -> CFStringRef; // deprecated
|
|
pub fn CFURLGetFileSystemRepresentation(
|
|
anURL: CFURLRef,
|
|
resolveAgainstBase: Boolean,
|
|
buffer: *mut u8,
|
|
maxBufLen: CFIndex,
|
|
) -> Boolean;
|
|
//pub fn CFURLIsFileReferenceURL(url: CFURLRef) -> Boolean; // macos(10.9)+
|
|
//pub fn CFURLGetFSRef(url: CFURLRef, fsRef: *mut FSRef) -> Boolean;
|
|
pub fn CFURLGetString(anURL: CFURLRef) -> CFStringRef;
|
|
|
|
/* Getting URL Properties */
|
|
pub fn CFURLGetBaseURL(anURL: CFURLRef) -> CFURLRef;
|
|
pub fn CFURLGetBytes(anURL: CFURLRef, buffer: *mut u8, bufferLength: CFIndex) -> CFIndex;
|
|
pub fn CFURLGetByteRangeForComponent(
|
|
url: CFURLRef,
|
|
component: CFURLComponentType,
|
|
rangeIncludingSeparators: *mut CFRange,
|
|
) -> CFRange;
|
|
pub fn CFURLGetTypeID() -> CFTypeID;
|
|
pub fn CFURLResourceIsReachable(url: CFURLRef, error: *mut CFErrorRef) -> Boolean;
|
|
|
|
/* Getting and Setting File System Resource Properties */
|
|
pub fn CFURLClearResourcePropertyCache(url: CFURLRef);
|
|
pub fn CFURLClearResourcePropertyCacheForKey(url: CFURLRef, key: CFStringRef);
|
|
pub fn CFURLCopyResourcePropertiesForKeys(
|
|
url: CFURLRef,
|
|
keys: CFArrayRef,
|
|
error: *mut CFErrorRef,
|
|
) -> CFDictionaryRef;
|
|
//pub fn CFURLCopyResourcePropertyForKey(url: CFURLRef, key: CFStringRef, propertyValueTypeRefPtr: *mut c_void, error: *mut CFErrorRef) -> Boolean
|
|
pub fn CFURLCreateResourcePropertiesForKeysFromBookmarkData(
|
|
allocator: CFAllocatorRef,
|
|
resourcePropertiesToReturn: CFArrayRef,
|
|
bookmark: CFDataRef,
|
|
) -> CFDictionaryRef;
|
|
pub fn CFURLCreateResourcePropertyForKeyFromBookmarkData(
|
|
allocator: CFAllocatorRef,
|
|
resourcePropertyKey: CFStringRef,
|
|
bookmark: CFDataRef,
|
|
) -> CFTypeRef;
|
|
pub fn CFURLSetResourcePropertiesForKeys(
|
|
url: CFURLRef,
|
|
keyedPropertyValues: CFDictionaryRef,
|
|
error: *mut CFErrorRef,
|
|
) -> Boolean;
|
|
pub fn CFURLSetResourcePropertyForKey(
|
|
url: CFURLRef,
|
|
key: CFStringRef,
|
|
value: CFTypeRef,
|
|
error: *mut CFErrorRef,
|
|
) -> Boolean;
|
|
pub fn CFURLSetTemporaryResourcePropertyForKey(
|
|
url: CFURLRef,
|
|
key: CFStringRef,
|
|
propertyValue: CFTypeRef,
|
|
);
|
|
|
|
/* Working with Bookmark Data */
|
|
pub fn CFURLCreateBookmarkData(
|
|
allocator: CFAllocatorRef,
|
|
url: CFURLRef,
|
|
options: CFURLBookmarkCreationOptions,
|
|
resourcePropertiesToInclude: CFArrayRef,
|
|
relativeToURL: CFURLRef,
|
|
error: *mut CFErrorRef,
|
|
) -> CFDataRef;
|
|
|
|
#[cfg(target_os = "macos")]
|
|
pub fn CFURLCreateBookmarkDataFromAliasRecord(
|
|
allocator: CFAllocatorRef,
|
|
aliasRecordDataRef: CFDataRef,
|
|
) -> CFDataRef; // deprecated
|
|
|
|
pub fn CFURLCreateBookmarkDataFromFile(
|
|
allocator: CFAllocatorRef,
|
|
fileURL: CFURLRef,
|
|
errorRef: *mut CFErrorRef,
|
|
) -> CFDataRef;
|
|
pub fn CFURLWriteBookmarkDataToFile(
|
|
bookmarkRef: CFDataRef,
|
|
fileURL: CFURLRef,
|
|
options: CFURLBookmarkFileCreationOptions,
|
|
errorRef: *mut CFErrorRef,
|
|
) -> Boolean;
|
|
pub fn CFURLStartAccessingSecurityScopedResource(url: CFURLRef) -> Boolean;
|
|
pub fn CFURLStopAccessingSecurityScopedResource(url: CFURLRef);
|
|
}
|
|
|
|
#[test]
|
|
#[cfg(feature = "mac_os_10_8_features")]
|
|
fn can_see_excluded_from_backup_key() {
|
|
let _ = unsafe { kCFURLIsExcludedFromBackupKey };
|
|
}
|