The Linux run-time linker doesn't allow weak references in one library
to be overridden by ones in another. To work around this, we now
declare the runtime functions as weak and perform dynamic checks on
whether the symbols have been resolved and call the fallbacks as local
static functions if they are not present.
This makes it easier for the runtime to change how reference counts are
stored by removing any refcount manipulation from -base when the runtime
provides accessors. This should have no functionality change with
existing runtimes, but will let newer runtimes drop in alternative
representations easily.
In the simple constructors, we were using the pointer functions that use
pointer equality and a hash derrived from the pointer, rather than -isEqual:
and -hash. This led to some subtle and confusingly broken behavior.
Implement a method for getting attribytes of a file system path. Reuse
the implementation of -fileSystemAttributesAtPath: for this purpose but
export the last system errors to the caller. Make
-fileSystemAttributesAtPath: use the new implementation, without
exposing error info to the caller.
Declare the NSURLCredentialPersistenceSynchronizable enumeration case to
NSURLCredential persistence options. Since GNUstep does not support
iCloud synchronization for credentials, this case will default to
NSURLCredentialPersistencePermanent.
Improve handling of NSURL authentication methods. Make "HTMLForm"
authentication a no-op as it should be instead of making it fall back to
Basic authentication.
Add stubs for NTLM and Negotiate IIS methods. They should be easily
implementable given the current framework for authentication methods.
Add stubs for ClientCertificate and ServerTrust authentication methods.
A blocker for supporting them is the lack of a Security.framework
implementation (since they rely on SecTrustRef). They would also require
additions to the current SSL handling code for GNUstep https requests.
Also stub the -distinguishedNames property of NSURLProtectionSpace,
which also deals with certificate-related authentication methods.
Create NSFileManagerDelegate, a more modern manner to verify whether to
proceed a file operation after an error or whether an operation should
actually be performed by NSFileManager.
No functionality using the delegate is yet implemented.
Create an unimplemented stub for NSURL's -getResourceValue:... method,
which can gather a numerous set of information about a URL.
Define the constants which are passed into -getResourceValue:... for
requiring information so that a build that relies on this method does
not break.
The OSX filesystem implements "aliases", a species of symlink which
tracks its source if it was moved. Create stubs for the NSURL functions
which handle these aliases.
Declare a system clock change notification. Base still does not emit
this notification, but this allows applications that wait for it not to
have their build broken.
Add new calendar identifier constants to NSCalendar, to add
compatibility for newer OSX applications. Some identifiers do not hold
parity with the older equivalents and have been left unimplemented, with
the gregorian calendar as a fallback.
Create the NSEdgeInsets struct in NSGeometry, introduced in OSX 10.7.
Add helper functions for creating these insets.
This struct is not used in Base. Rather, it is used as part of newer
APIs in GUI.
a few testcases ...
The basic method should fail if the directory already exists.
The intermediate directories method should fail if the directory exists unless
the option to create intermediate directories is selected, in which case a
pre-existing directory is counted as a success.
of an existing directory to be an error, rather than the NSFileManager methods
that consider it a success. The logic of distributed locking requires us to
fail if a directory already exists.