diff options
Diffstat (limited to 'sal/osl/os2/file_url.h')
-rw-r--r-- | sal/osl/os2/file_url.h | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/sal/osl/os2/file_url.h b/sal/osl/os2/file_url.h new file mode 100644 index 000000000000..575976c09cae --- /dev/null +++ b/sal/osl/os2/file_url.h @@ -0,0 +1,183 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + + /*************************************************** + * Internal header file, declares all functions + * that are not part of the offical API and are + * not defined in the osl header files + **************************************************/ + + #ifndef _FILE_URL_H_ + #define _FILE_URL_H_ + + #ifndef _FILE_H_ + #include <osl/file.h> + #endif + + +/*************************************************** + * constants + **************************************************/ + +#define _tcslen(a) wcslen((const wchar_t *) a) +#define _tcsspn(a,b) wcsspn((const wchar_t *) a, (const wchar_t *) b) +#define _istalpha(a) iswalpha((wint_t) a) + +const sal_Unicode UNICHAR_SLASH = ((sal_Unicode)'/'); +const sal_Unicode UNICHAR_COLON = ((sal_Unicode)':'); +const sal_Unicode UNICHAR_DOT = ((sal_Unicode)'.'); + +#if OSL_DEBUG_LEVEL > 0 +#define OSL_ENSURE_FILE( cond, msg, file ) ( (cond) ? (void)0 : _osl_warnFile( msg, file ) ) +#else +#define OSL_ENSURE_FILE( cond, msg, file ) ((void)0) +#endif + +typedef sal_Unicode TCHAR; +typedef sal_Unicode *LPTSTR; +typedef const sal_Unicode *LPCTSTR; +typedef wchar_t *LPWSTR; +typedef const wchar_t *LPCWSTR; +typedef sal_Unicode DWORD; +#define WINAPI + +#define CHARSET_SEPARATOR L"\\/" +#define WSTR_SYSTEM_ROOT_PATH L"\\\\.\\" + + +/****************************************************************************** + * + * Data Type Definition + * + ******************************************************************************/ + +#define PATHTYPE_ERROR 0 +#define PATHTYPE_RELATIVE 1 +#define PATHTYPE_ABSOLUTE_UNC 2 +#define PATHTYPE_ABSOLUTE_LOCAL 3 +#define PATHTYPE_MASK_TYPE 0xFF +#define PATHTYPE_IS_VOLUME 0x0100 +#define PATHTYPE_IS_SERVER 0x0200 + +#define VALIDATEPATH_NORMAL 0x0000 +#define VALIDATEPATH_ALLOW_WILDCARDS 0x0001 +#define VALIDATEPATH_ALLOW_ELLIPSE 0x0002 +#define VALIDATEPATH_ALLOW_RELATIVE 0x0004 +#define VALIDATEPATH_ALLOW_UNC 0x0008 + +typedef struct { + UINT uType; + rtl_uString* ustrDrive; + rtl_uString* ustrFilePath; /* holds native directory path */ + int d_attr; /* OS/2 file attributes */ + int nRefCount; +}DirectoryItem_Impl; + +#define DIRECTORYTYPE_LOCALROOT 0 +#define DIRECTORYTYPE_NETROOT 1 +#define DIRECTORYTYPE_NETRESORCE 2 +#define DIRECTORYTYPE_FILESYSTEM 3 + +#define DIRECTORYITEM_DRIVE 0 +#define DIRECTORYITEM_FILE 1 +#define DIRECTORYITEM_SERVER 2 + +typedef struct +{ + UINT uType; + rtl_uString* ustrPath; /* holds native directory path */ + DIR* pDirStruct; + ULONG ulDriveMap; + ULONG ulNextDrive; + ULONG ulNextDriveMask; +} DirectoryImpl; + +/* Different types of paths */ +typedef enum _PATHTYPE +{ + PATHTYPE_SYNTAXERROR = 0, + PATHTYPE_NETROOT, + PATHTYPE_NETSERVER, + PATHTYPE_VOLUME, + PATHTYPE_FILE +} PATHTYPE; + +DWORD WINAPI IsValidFilePath(LPCTSTR, LPCTSTR*, DWORD); + +typedef struct +{ + rtl_uString* ustrFilePath; /* holds native file path */ + int fd; + sal_Bool bLocked; +} oslFileHandleImpl; + + +typedef struct _oslVolumeDeviceHandleImpl +{ + sal_Char pszMountPoint[PATH_MAX]; + sal_Char pszFilePath[PATH_MAX]; + sal_Char pszDevice[PATH_MAX]; + sal_Char ident[4]; + sal_uInt32 RefCount; +} oslVolumeDeviceHandleImpl; + +/* OS error to errno values mapping table */ +struct errentry { + unsigned long oscode; /* OS return value */ + int errnocode; /* System V error code */ +}; + +#ifdef __cplusplus +extern "C" +{ +#endif + +/************************************************** +* _osl_getSystemPathFromFileURL +*************************************************/ + +#define FURL_ALLOW_RELATIVE sal_True +#define FURL_DENY_RELATIVE sal_False + +oslFileError osl_getSystemPathFromFileURL_Ex(rtl_uString *ustrFileURL, rtl_uString **pustrSystemPath, sal_Bool bAllowRelative); + +/************************************************** +* FileURLToPath +*************************************************/ + +oslFileError FileURLToPath(char * buffer, size_t bufLen, rtl_uString* ustrFileURL); + + +#ifdef __cplusplus +} +#endif + + +#endif /* #define _FILE_URL_H_ */ + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |