Support paths w/ leading double slash (per an obscure corner of the POSIX spec) on platforms that implement it, currently just Cygwin. (Cygwin uses this for UNC paths.)
This commit is contained in:
parent
3c08babd4f
commit
aaa132d211
|
@ -307,9 +307,16 @@
|
||||||
#define ICONV_CONST_SOURCE (IS_MINIX)
|
#define ICONV_CONST_SOURCE (IS_MINIX)
|
||||||
#define SUPPORTS_DIRECT_IO (IS_LINUX)
|
#define SUPPORTS_DIRECT_IO (IS_LINUX)
|
||||||
// Linux is the only platform where direct i/o hashing has been tested & works properly so far.
|
// Linux is the only platform where direct i/o hashing has been tested & works properly so far.
|
||||||
|
|
||||||
#define SUPPORTS_TERMIOS (!IS_RTEMS)
|
#define SUPPORTS_TERMIOS (!IS_RTEMS)
|
||||||
// RTEMS errors are probably just a buildsys issue & this will change or go away.
|
// RTEMS errors are probably just a buildsys issue & this will change or go away.
|
||||||
|
|
||||||
|
#define SUPPORTS_DOUBLE_SLASH_PATH (IS_CYGWIN)
|
||||||
|
// POSIX standard says paths beginning with 2 slashes are "implementation defined"
|
||||||
|
// (see http://pubs.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap04.html#tag_04_11 )
|
||||||
|
// The only platform OST works on (afaik) that actually defines a double-slash behavior is Cygwin
|
||||||
|
// which uses this syntax for UNC paths. So we'll allow leading double slashes there, but
|
||||||
|
// continue removing them on all other platforms
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
// Miscellaneous
|
// Miscellaneous
|
||||||
|
|
|
@ -234,7 +234,12 @@ void cFCOName::ParseString( const TCHAR* pszin )
|
||||||
|
|
||||||
TSTRING name(begin, at);
|
TSTRING name(begin, at);
|
||||||
|
|
||||||
if (name.length() > 0 || components == 0)
|
//NOTE: To be truly standards compliant we ought to turn >2 slashes into 1, not 2.
|
||||||
|
#if SUPPORTS_DOUBLE_SLASH_PATH
|
||||||
|
if (name.length() > 0 || components < 2)
|
||||||
|
#else
|
||||||
|
if (name.length() > 0 || components == 0)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
cFCONameTblNode* pNode =
|
cFCONameTblNode* pNode =
|
||||||
cFCOName_i::msNameTbl.CreateNode(name);
|
cFCOName_i::msNameTbl.CreateNode(name);
|
||||||
|
|
Loading…
Reference in New Issue