summaryrefslogtreecommitdiff
path: root/sal/inc/osl/file.h
diff options
context:
space:
mode:
Diffstat (limited to 'sal/inc/osl/file.h')
-rw-r--r--sal/inc/osl/file.h1639
1 files changed, 0 insertions, 1639 deletions
diff --git a/sal/inc/osl/file.h b/sal/inc/osl/file.h
deleted file mode 100644
index e8277e21ebc3..000000000000
--- a/sal/inc/osl/file.h
+++ /dev/null
@@ -1,1639 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef _OSL_FILE_H_
-#define _OSL_FILE_H_
-
-#include "sal/config.h"
-
-#include "osl/time.h"
-#include "rtl/ustring.h"
-#include "sal/saldllapi.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** @file
-
-Main goals and usage hints
-
-The main intentention of this interface is to provide an universal portable and
-high performance access to file system issues on any operating system.<p>
-
-There are a few main goals:<p>
-
-1.The path specifications always has to be absolut. Any usage of relative path
-specifications is forbidden. Exceptions are <code>osl_getSystemPathFromFileURL</code>,
-<code>osl_getFileURLFromSystemPath</code> and <code>osl_getAbsoluteFileURL</code>. Most operating systems
-provide a "Current Directory" per process. This is the reason why relative path
-specifications can cause problems in multithreading environments.<p>
-
-2.Proprietary notations of file paths are not supported. Every path notation
-must the file URL specification. File URLs must be encoded in UTF8 and
-after that escaped. Although the URL parameter is a unicode string, the must
-contain only ASCII characters<p>
-
-3.The caller cannot get any information whether a file system is case sensitive,
-case preserving or not. The operating system implementation itself should
-determine if it can map case-insensitive paths. The case correct notation of
-a filename or file path is part of the "File Info". This case correct name
-can be used as a unique key if neccessary.<p>
-
-4. Obtaining information about files or volumes is controlled by a
-bitmask which specifies which fields are of interest. Due to performance
-issues it is not recommended to obtain information which is not needed.
-But if the operating system provides more information anyway the
-implementation can set more fields on output as were requested. It is in the
-responsibility of the caller to decide if he uses this additional information
-or not. But he should do so to prevent further unnecessary calls if the information
-is already there.<br>
-
-The input bitmask supports a flag <code>osl_FileStatus_Mask_Validate</code> which
-can be used to force retrieving uncached validated information. Setting this flag
-when calling <code>osl_getFileStatus</code> in combination with no other flag is
-a synonym for a "FileExists". This should only be done when processing a single file
-(f.e. before opening) and NEVER during enumeration of directory contents on any step
-of information processing. This would change the runtime behaviour from O(n) to
-O(n*n/2) on nearly every file system.<br>
-On Windows NT reading the contents of an directory with 7000 entries and
-getting full information about every file only takes 0.6 seconds. Specifying the
-flag <code>osl_FileStatus_Mask_Validate</code> for each entry will increase the
-time to 180 seconds (!!!).
-
-*/
-
-
-
-/* Error codes according to errno */
-
-typedef enum {
- osl_File_E_None,
- osl_File_E_PERM,
- osl_File_E_NOENT,
- osl_File_E_SRCH,
- osl_File_E_INTR,
- osl_File_E_IO,
- osl_File_E_NXIO,
- osl_File_E_2BIG,
- osl_File_E_NOEXEC,
- osl_File_E_BADF,
- osl_File_E_CHILD,
- osl_File_E_AGAIN,
- osl_File_E_NOMEM,
- osl_File_E_ACCES,
- osl_File_E_FAULT,
- osl_File_E_BUSY,
- osl_File_E_EXIST,
- osl_File_E_XDEV,
- osl_File_E_NODEV,
- osl_File_E_NOTDIR,
- osl_File_E_ISDIR,
- osl_File_E_INVAL,
- osl_File_E_NFILE,
- osl_File_E_MFILE,
- osl_File_E_NOTTY,
- osl_File_E_FBIG,
- osl_File_E_NOSPC,
- osl_File_E_SPIPE,
- osl_File_E_ROFS,
- osl_File_E_MLINK,
- osl_File_E_PIPE,
- osl_File_E_DOM,
- osl_File_E_RANGE,
- osl_File_E_DEADLK,
- osl_File_E_NAMETOOLONG,
- osl_File_E_NOLCK,
- osl_File_E_NOSYS,
- osl_File_E_NOTEMPTY,
- osl_File_E_LOOP,
- osl_File_E_ILSEQ,
- osl_File_E_NOLINK,
- osl_File_E_MULTIHOP,
- osl_File_E_USERS,
- osl_File_E_OVERFLOW,
- osl_File_E_NOTREADY,
- osl_File_E_invalidError, /* unmapped error: always last entry in enum! */
- osl_File_E_TIMEDOUT,
- osl_File_E_NETWORK,
- osl_File_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
-} oslFileError;
-
-typedef void *oslDirectory;
-typedef void *oslDirectoryItem;
-
-
-/** Open a directory for enumerating its contents.
-
- @param pustrDirectoryURL [in]
- The full qualified URL of the directory.
-
- @param pDirectory [out]
- On success it receives a handle used for subsequent calls by osl_getNextDirectoryItem().
- The handle has to be released by a call to osl_closeDirectory().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOENT the specified path doesn't exist<br>
- osl_File_E_NOTDIR the specified path is not an directory <br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_MFILE too many open files used by the process<br>
- osl_File_E_NFILE too many open files in the system<br>
- osl_File_E_NAMETOOLONG File name too long<br>
- osl_File_E_LOOP Too many symbolic links encountered<p>
-
- @see osl_getNextDirectoryItem()
- @see osl_closeDirectory()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_openDirectory(
- rtl_uString *pustrDirectoryURL, oslDirectory *pDirectory);
-
-
-/** Retrieve the next item of a previously opened directory.
-
- Retrieves the next item of a previously opened directory.
- All handles have an initial refcount of 1.
-
- @param Directory [in]
- A directory handle received from a previous call to osl_openDirectory().
-
- @param pItem [out]
- On success it receives a handle that can be used for subsequent calls to osl_getFileStatus().
- The handle has to be released by a call to osl_releaseDirectoryItem().
-
- @param uHint [in]
- With this parameter the caller can tell the implementation that (s)he
- is going to call this function uHint times afterwards. This enables the implementation to
- get the information for more than one file and cache it until the next calls.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_NOENT no more entries in this directory<br>
- osl_File_E_BADF invalid oslDirectory parameter<br>
- osl_File_E_OVERFLOW the value too large for defined data type
-
- @see osl_releaseDirectoryItem()
- @see osl_acquireDirectoryItem()
- @see osl_getDirectoryItem()
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getNextDirectoryItem(
- oslDirectory Directory,
- oslDirectoryItem *pItem,
- sal_uInt32 uHint
- );
-
-
-/** Release a directory handle.
-
- @param Directory [in]
- A handle received by a call to osl_openDirectory().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures<br>
- osl_File_E_BADF invalid oslDirectory parameter<br>
- osl_File_E_INTR the function call was interrupted<p>
-
- @see osl_openDirectory()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_closeDirectory(
- oslDirectory Directory);
-
-
-/** Retrieve a single directory item.
-
- Retrieves a single directory item. The returned handle has an initial refcount of 1.
- Due to performance issues it is not recommended to use this function while
- enumerating the contents of a directory. In this case use osl_getNextDirectoryItem() instead.
-
- @param pustrFileURL [in]
- An absolute file URL.
-
- @param pItem [out]
- On success it receives a handle which can be used for subsequent calls to osl_getFileStatus().
- The handle has to be released by a call to osl_releaseDirectoryItem().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_MFILE too many open files used by the process<br>
- osl_File_E_NFILE too many open files in the system<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_NAMETOOLONG the file name is too long<br>
- osl_File_E_NOTDIR a component of the path prefix of path is not a directory<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_INTR the function call was interrupted<p>
-
- @see osl_releaseDirectoryItem()
- @see osl_acquireDirectoryItem()
- @see osl_getFileStatus()
- @see osl_getNextDirectoryItem()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getDirectoryItem(
- rtl_uString *pustrFileURL,
- oslDirectoryItem *pItem
- );
-
-
-/** Increase the refcount of a directory item handle.
-
- The caller responsible for releasing the directory item handle using osl_releaseDirectoryItem().
-
- @param Item [in]
- A handle received by a call to osl_getDirectoryItem() or osl_getNextDirectoryItem().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
-
- @see osl_getDirectoryItem()
- @see osl_getNextDirectoryItem()
- @see osl_releaseDirectoryItem()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_acquireDirectoryItem(
- oslDirectoryItem Item );
-
-
-/** Decrease the refcount of a directory item handle.
-
- Decreases the refcount of a directory item handle.
- If the refcount reaches 0 the data associated with
- this directory item handle will be released.
-
- @param Item [in]
- A handle received by a call to osl_getDirectoryItem() or osl_getNextDirectoryItem().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
-
- @see osl_getDirectoryItem()
- @see osl_getNextDirectoryItem()
- @see osl_acquireDirectoryItem()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_releaseDirectoryItem(
- oslDirectoryItem Item );
-
-/** Determine if two directory items point the same underlying file
-
- The comparison is done first by URL, and then by resolving links to
- find the target, and finally by comparing inodes on unix.
-
- @param pItemA [in]
- A directory handle to compare with another handle
-
- @param pItemB [in]
- A directory handle to compare with pItemA
-
- @return
- sal_True: if the items point to an identical resource<br>
- sal_False: if the items point to a different resource, or a fatal error occured<br>
-
- @see osl_getDirectoryItem()
-
- @since LibreOffice 3.6
-*/
-
-SAL_DLLPUBLIC sal_Bool SAL_CALL osl_identicalDirectoryItem(
- oslDirectoryItem pItemA,
- oslDirectoryItem pItemB );
-
-/* File types */
-
-typedef enum {
- osl_File_Type_Directory,
- osl_File_Type_Volume,
- osl_File_Type_Regular,
- osl_File_Type_Fifo,
- osl_File_Type_Socket,
- osl_File_Type_Link,
- osl_File_Type_Special,
- osl_File_Type_Unknown
-} oslFileType;
-
-/* File attributes */
-#define osl_File_Attribute_ReadOnly 0x00000001
-#define osl_File_Attribute_Hidden 0x00000002
-#define osl_File_Attribute_Executable 0x00000010
-#define osl_File_Attribute_GrpWrite 0x00000020
-#define osl_File_Attribute_GrpRead 0x00000040
-#define osl_File_Attribute_GrpExe 0x00000080
-#define osl_File_Attribute_OwnWrite 0x00000100
-#define osl_File_Attribute_OwnRead 0x00000200
-#define osl_File_Attribute_OwnExe 0x00000400
-#define osl_File_Attribute_OthWrite 0x00000800
-#define osl_File_Attribute_OthRead 0x00001000
-#define osl_File_Attribute_OthExe 0x00002000
-
-/* Flags specifying which fields to retrieve by osl_getFileStatus */
-
-#define osl_FileStatus_Mask_Type 0x00000001
-#define osl_FileStatus_Mask_Attributes 0x00000002
-#define osl_FileStatus_Mask_CreationTime 0x00000010
-#define osl_FileStatus_Mask_AccessTime 0x00000020
-#define osl_FileStatus_Mask_ModifyTime 0x00000040
-#define osl_FileStatus_Mask_FileSize 0x00000080
-#define osl_FileStatus_Mask_FileName 0x00000100
-#define osl_FileStatus_Mask_FileURL 0x00000200
-#define osl_FileStatus_Mask_LinkTargetURL 0x00000400
-#define osl_FileStatus_Mask_All 0x7FFFFFFF
-#define osl_FileStatus_Mask_Validate 0x80000000
-
-
-typedef
-
-/** Structure containing information about files and directories
-
- @see osl_getFileStatus()
- @see oslFileType
-*/
-
-struct _oslFileStatus {
-/** Must be initialized with the size in bytes of the structure before passing it to any function */
- sal_uInt32 uStructSize;
-/** Determines which members of the structure contain valid data */
- sal_uInt32 uValidFields;
-/** The type of the file (file, directory, volume). */
- oslFileType eType;
-/** File attributes */
- sal_uInt64 uAttributes;
-/** First creation time in nanoseconds since 1/1/1970. Can be the last modify time depending on
- platform or file system. */
- TimeValue aCreationTime;
-/** Last access time in nanoseconds since 1/1/1970. Can be the last modify time depending on
- platform or file system. */
- TimeValue aAccessTime;
-/** Last modify time in nanoseconds since 1/1/1970. */
- TimeValue aModifyTime;
-/** Size in bytes of the file. Zero for directories and volumes. */
- sal_uInt64 uFileSize;
-/** Case correct name of the file. Should be set to zero before calling <code>osl_getFileStatus</code>
- and released after usage. */
- rtl_uString *ustrFileName;
-/** Full URL of the file. Should be set to zero before calling <code>osl_getFileStatus</code>
- and released after usage. */
- rtl_uString *ustrFileURL;
-/** Full URL of the target file if the file itself is a link.
- Should be set to zero before calling <code>osl_getFileStatus</code>
- and released after usage. */
- rtl_uString *ustrLinkTargetURL;
-} oslFileStatus;
-
-
-/** Retrieve information about a single file or directory.
-
- @param Item [in]
- A handle received by a previous call to osl_getDirectoryItem() or osl_getNextDirectoryItem().
-
- @param pStatus [in|out]
- Points to a structure which receives the information of the file or directory
- represented by the handle Item. The member uStructSize has to be initialized to
- sizeof(oslFileStatus) before calling this function.
-
- @param uFieldMask [in]
- Specifies which fields of the structure pointed to by pStatus are of interest to the caller.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_BADF invalid oslDirectoryItem parameter<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_OVERFLOW value too large for defined data type<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_MULTIHOP components of path require hopping to multiple remote machines and the file system does not allow it<br>
- osl_File_E_MFILE too many open files used by the process<br>
- osl_File_E_NFILE too many open files in the system<br>
- osl_File_E_NOSPC no space left on device<br>
- osl_File_E_NXIO no such device or address<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_NOSYS function not implemented<p>
-
- @see osl_getDirectoryItem()
- @see osl_getNextDirectoryItem()
- @see oslFileStatus
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getFileStatus(
- oslDirectoryItem Item, oslFileStatus *pStatus, sal_uInt32 uFieldMask );
-
-
-typedef void *oslVolumeDeviceHandle;
-
-/** Release a volume device handle.
-
- Releases the given oslVolumeDeviceHandle which was acquired by a call to
- osl_getVolumeInformation() or osl_acquireVolumeDeviceHandle().
-
- @param Handle [in]
- An oslVolumeDeviceHandle received by a call to osl_getVolumeInformation().
-
- @return
- osl_File_E_None on success<br>
-
- @todo
- specify all error codes that may be returned
-
- @see osl_acquireVolumeDeviceHandle()
- @see osl_getVolumeInformation()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_releaseVolumeDeviceHandle(
- oslVolumeDeviceHandle Handle );
-
-/** Acquire a volume device handle.
-
- Acquires the given oslVolumeDeviceHandle which was acquired by a call to
- osl_getVolumeInformation(). The caller is responsible for releasing the
- acquired handle by calling osl_releaseVolumeDeviceHandle().
-
- @param Handle [in]
- An oslVolumeDeviceHandle received by a call to osl_getVolumeInformation().
-
- @return
- osl_File_E_None on success<br>
-
- @todo
- specify all error codes that may be returned
-
- @see osl_getVolumeInformation()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_acquireVolumeDeviceHandle(
- oslVolumeDeviceHandle Handle );
-
-
-/** Get the full qualified URL where a device is mounted to.
-
- @param Handle [in]
- An oslVolumeDeviceHandle received by a call to osl_getVolumeInformation().
-
- @param ppustrDirectoryURL [out]
- Receives the full qualified URL where the device is mounted to.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_NXIO no such device or address<br>
- osl_File_E_NODEV no such device<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_FAULT bad address<br>
- osl_FilE_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_EOVERFLOW value too large for defined data type<br>
-
- @see osl_getVolumeInformation()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getVolumeDeviceMountPath(
- oslVolumeDeviceHandle Handle, rtl_uString **ppustrDirectoryURL);
-
-/* Volume attributes */
-
-#define osl_Volume_Attribute_Removeable 0x00000001L
-#define osl_Volume_Attribute_Remote 0x00000002L
-#define osl_Volume_Attribute_CompactDisc 0x00000004L
-#define osl_Volume_Attribute_FixedDisk 0x00000008L
-#define osl_Volume_Attribute_RAMDisk 0x00000010L
-#define osl_Volume_Attribute_FloppyDisk 0x00000020L
-
-#define osl_Volume_Attribute_Case_Is_Preserved 0x00000040L
-#define osl_Volume_Attribute_Case_Sensitive 0x00000080L
-
-/* Flags specifying which fields to retrieve by osl_getVolumeInfo */
-
-#define osl_VolumeInfo_Mask_Attributes 0x00000001L
-#define osl_VolumeInfo_Mask_TotalSpace 0x00000002L
-#define osl_VolumeInfo_Mask_UsedSpace 0x00000004L
-#define osl_VolumeInfo_Mask_FreeSpace 0x00000008L
-#define osl_VolumeInfo_Mask_MaxNameLength 0x00000010L
-#define osl_VolumeInfo_Mask_MaxPathLength 0x00000020L
-#define osl_VolumeInfo_Mask_FileSystemName 0x00000040L
-#define osl_VolumeInfo_Mask_DeviceHandle 0x00000080L
-#define osl_VolumeInfo_Mask_FileSystemCaseHandling 0x00000100L
-
-typedef
-
-/** Structure containing information about volumes
-
- @see osl_getVolumeInformation()
- @see oslFileType
-*/
-
-struct _oslVolumeInfo {
-/** Must be initialized with the size in bytes of the structure before passing it to any function */
- sal_uInt32 uStructSize;
-/** Determines which members of the structure contain valid data */
- sal_uInt32 uValidFields;
-/** Attributes of the volume (remote and/or removable) */
- sal_uInt32 uAttributes;
-/** Total availiable space on the volume for the current process/user */
- sal_uInt64 uTotalSpace;
-/** Used space on the volume for the current process/user */
- sal_uInt64 uUsedSpace;
-/** Free space on the volume for the current process/user */
- sal_uInt64 uFreeSpace;
-/** Maximum length of file name of a single item */
- sal_uInt32 uMaxNameLength;
-/** Maximum length of a full quallified path in system notation */
- sal_uInt32 uMaxPathLength;
-/** Points to a string that receives the name of the file system type. String should be set to zero before calling <code>osl_getVolumeInformation</code>
- and released after usage. */
- rtl_uString *ustrFileSystemName;
-/** Pointer to handle the receives underlying device. Handle should be set to zero before calling <code>osl_getVolumeInformation</code>*/
- oslVolumeDeviceHandle *pDeviceHandle;
-} oslVolumeInfo;
-
-
-/** Retrieve information about a volume.
-
- Retrieves information about a volume. A volume can either be a mount point, a network
- resource or a drive depending on Operating System and File System. Before calling this
- function osl_getFileStatus() should be called to determine if the type is
- osl_file_Type_Volume.
-
- @param pustrDirectoryURL [in]
- Full qualified URL of the volume
-
- @param pInfo [out]
- On success it receives information about the volume.
-
- @param uFieldMask [in]
- Specifies which members of the structure should be filled
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- ols_File_E_FAULT Bad address<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_NOSYS function not implemented<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_INTR function call was interrupted<br>
-
- @see osl_getFileStatus()
- @see oslVolumeInfo
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getVolumeInformation(
- rtl_uString *pustrDirectoryURL,
- oslVolumeInfo *pInfo,
- sal_uInt32 uFieldMask );
-
-typedef void *oslFileHandle;
-
-/* Open flags */
-
-#define osl_File_OpenFlag_Read 0x00000001L
-#define osl_File_OpenFlag_Write 0x00000002L
-#define osl_File_OpenFlag_Create 0x00000004L
-#define osl_File_OpenFlag_NoLock 0x00000008L
-/* larger bit-fields reserved for internal use cf. detail/file.h */
-
-/** Open a regular file.
-
- Open a file. Only regular files can be openend.
-
- @param pustrFileURL [in]
- The full qualified URL of the file to open.
-
- @param pHandle [out]
- On success it receives a handle to the open file.
-
- @param uFlags [in]
- Specifies the open mode.
-
- On Android, if the file path is below the /assets folder, the file
- exists only as a hopefully uncompressed element inside the app
- package (.apk), which has been mapped into memory as a whole by
- the LibreOffice Android bootstrapping code. So files "opened" from
- there aren't actually files in the OS sense.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NAMETOOLONG pathname was too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_AGAIN a write lock could not be established<br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_NXIO no such device or address<br>
- osl_File_E_NODEV no such device<br>
- osl_File_E_ROFS read-only file system<br>
- osl_File_E_TXTBSY text file busy<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_NOSPC no space left on device<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_MFILE too many open files used by the process<br>
- osl_File_E_NFILE too many open files in the system<br>
- osl_File_E_DQUOT quota exceeded<br>
- osl_File_E_EXIST file exists<br>
- osl_FilE_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_EOVERFLOW value too large for defined data type<br>
-
- @see osl_closeFile()
- @see osl_setFilePos()
- @see osl_getFilePos()
- @see osl_readFile()
- @see osl_writeFile()
- @see osl_setFileSize()
- @see osl_getFileSize()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_openFile(
- rtl_uString *pustrFileURL, oslFileHandle *pHandle, sal_uInt32 uFlags );
-
-#define osl_Pos_Absolut 1
-#define osl_Pos_Current 2
-#define osl_Pos_End 3
-
-/** Set the internal position pointer of an open file.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param uHow [in]
- Distance to move the internal position pointer (from uPos).
-
- @param uPos [in]
- Absolute position from the beginning of the file.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files<br>
-
- @see osl_openFile()
- @see osl_getFilePos()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_setFilePos(
- oslFileHandle Handle, sal_uInt32 uHow, sal_Int64 uPos ) SAL_WARN_UNUSED_RESULT;
-
-
-/** Retrieve the current position of the internal pointer of an open file.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param pPos [out]
- On success receives the current position of the file pointer.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files<br>
-
- @see osl_openFile()
- @see osl_setFilePos()
- @see osl_readFile()
- @see osl_writeFile()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getFilePos(
- oslFileHandle Handle, sal_uInt64 *pPos );
-
-
-/** Set the file size of an open file.
-
- Sets the file size of an open file. The file can be truncated or enlarged by the function.
- The position of the file pointer is not affeced by this function.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param uSize [in]
- New size in bytes.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files<br>
-
- @see osl_openFile()
- @see osl_setFilePos()
- @see osl_getFileStatus()
- @see osl_getFileSize()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_setFileSize(
- oslFileHandle Handle, sal_uInt64 uSize );
-
-
-/** Get the file size of an open file.
-
- Gets the file size of an open file.
- The position of the file pointer is not affeced by this function.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param pSize [out]
- Current size in bytes.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_OVERFLOW the resulting file offset would be a value which cannot be represented correctly for regular files<br>
-
- @see osl_openFile()
- @see osl_setFilePos()
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getFileSize(
- oslFileHandle Handle, sal_uInt64 *pSize );
-
-
-/** Map flags.
-
- @since UDK 3.2.10
- */
-#define osl_File_MapFlag_RandomAccess ((sal_uInt32)(0x1))
-
-/** Map flag denoting that the mapped address space will be accessed by the
- process soon (and it is advantageous for the operating system to already
- start paging in the data).
-
- @since UDK 3.2.12
- */
-#define osl_File_MapFlag_WillNeed ((sal_uInt32)(0x2))
-
-/** Map a shared file into memory.
-
- Don't know what the "shared" is supposed to mean there? Also,
- obviously this API can be used to map *part* of a file into
- memory, and different parts can be mapped separately even.
-
- On Android, if the Handle refers to a file that is actually inside
- the app package (.apk zip archive), no new mapping is created,
- just a pointer to the file inside the already mapped .apk is
- returned.
-
- @since UDK 3.2.10
- */
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_mapFile (
- oslFileHandle Handle,
- void** ppAddr,
- sal_uInt64 uLength,
- sal_uInt64 uOffset,
- sal_uInt32 uFlags
-);
-
-
-#ifndef ANDROID
-
-/** Unmap a shared file from memory.
-
- Ditto here, why do we need to mention "shared"?
-
- This function just won't work on Android in general where for
- (uncompressed) files inside the .apk, per SDK conventions in the
- /assets folder, osl_mapFile() returns a pointer to the file inside
- the already by LibreOffice Android-specific bootstrapping code
- mmapped .apk archive. We can't go and randomly munmap part of the
- .apk archive. So this function is not present on Android.
-
- @since UDK 3.2.10
- */
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_unmapFile (
- void* pAddr,
- sal_uInt64 uLength
-);
-
-#endif
-
-/** Unmap a file segment from memory.
-
- Like osl_unmapFile(), but takes also the oslFileHandle argument
- passed to osl_mapFile() when creating this mapping.
-
- On Android, for files below /assets, i.e. located inside the app
- archive (.apk), this won't actually unmap anything; all the .apk
- stays mapped.
-
- @since UDK 3.6
- */
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_unmapMappedFile (
- oslFileHandle Handle,
- void* pAddr,
- sal_uInt64 uLength
-);
-
-
-/** Read a number of bytes from a file.
-
- Reads a number of bytes from a file. The internal file pointer is
- increased by the number of bytes read.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param pBuffer [out]
- Points to a buffer which receives data. The buffer must be large enough
- to hold uBytesRequested bytes.
-
- @param uBytesRequested [in]
- Number of bytes which should be retrieved.
-
- @param pBytesRead [out]
- On success the number of bytes which have actually been retrieved.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_BADF bad file<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_AGAIN operation would block<br>
- osl_File_E_NOLINK link has been severed<br>
-
- @see osl_openFile()
- @see osl_writeFile()
- @see osl_readLine()
- @see osl_setFilePos()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_readFile(
- oslFileHandle Handle, void *pBuffer, sal_uInt64 uBytesRequested, sal_uInt64 *pBytesRead );
-
-
-/** Test if the end of a file is reached.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param pIsEOF [out]
- Points to a variable that receives the end-of-file status.
-
- @return
- osl_File_E_None on success <br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_BADF bad file<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_AGAIN operation would block<br>
- osl_File_E_NOLINK link has been severed<p>
-
- @see osl_openFile()
- @see osl_readFile()
- @see osl_readLine()
- @see osl_setFilePos()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_isEndOfFile(
- oslFileHandle Handle, sal_Bool *pIsEOF );
-
-
-/** Write a number of bytes to a file.
-
- Writes a number of bytes to a file.
- The internal file pointer is increased by the number of bytes read.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param pBuffer [in]
- Points to a buffer which contains the data.
-
- @param uBytesToWrite [in]
- Number of bytes which should be written.
-
- @param pBytesWritten [out]
- On success the number of bytes which have actually been written.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_FBIG file too large<br>
- osl_File_E_DQUOT quota exceeded<p>
- osl_File_E_AGAIN operation would block<br>
- osl_File_E_BADF bad file<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errosr<br>
- osl_File_E_NOLCK no record locks available<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_NOSPC no space left on device<br>
- osl_File_E_NXIO no such device or address<br>
-
- @see osl_openFile()
- @see osl_readFile()
- @see osl_setFilePos()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_writeFile(
- oslFileHandle Handle, const void *pBuffer, sal_uInt64 uBytesToWrite, sal_uInt64 *pBytesWritten );
-
-/** Read a number of bytes from a specified offset in a file.
-
- The current position of the internal file pointer may or may not be changed.
-
- @since UDK 3.2.10
- */
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_readFileAt(
- oslFileHandle Handle,
- sal_uInt64 uOffset,
- void* pBuffer,
- sal_uInt64 uBytesRequested,
- sal_uInt64* pBytesRead
-);
-
-
-/** Write a number of bytes to a specified offset in a file.
-
- The current position of the internal file pointer may or may not be changed.
-
- @since UDK 3.2.10
- */
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_writeFileAt(
- oslFileHandle Handle,
- sal_uInt64 uOffset,
- const void* pBuffer,
- sal_uInt64 uBytesToWrite,
- sal_uInt64* pBytesWritten
-);
-
-
-/** Read a line from a file.
-
- Reads a line from a file. The new line delimiter is NOT returned!
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @param ppSequence [in/out]
- A pointer pointer to a sal_Sequence that will hold the line read on success.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_BADF bad file<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_AGAIN operation would block<br>
- osl_File_E_NOLINK link has been severed<p>
-
- @see osl_openFile()
- @see osl_readFile()
- @see osl_writeFile()
- @see osl_setFilePos()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_readLine(
- oslFileHandle Handle, sal_Sequence** ppSequence );
-
-/** Synchronize the memory representation of a file with that on the physical medium.
-
- The function ensures that all modified data and attributes of the file associated with
- the given file handle have been written to the physical medium.
- In case the hard disk has a write cache enabled, the data may not really be on
- permanent storage when osl_syncFile returns.
-
- @param Handle
- [in] Handle to a file received by a previous call to osl_openFile().
-
- @return
- <dl>
- <dt>osl_File_E_None</dt>
- <dd>On success</dd>
- <dt>osl_File_E_INVAL</dt>
- <dd>The value of the input parameter is invalid</dd>
- </dl>
- <br><p><strong>In addition to these error codes others may occur as well, for instance:</strong></p><br>
- <dl>
- <dt>osl_File_E_BADF</dt>
- <dd>The file associated with the given file handle is not open for writing</dd>
- <dt>osl_File_E_IO</dt>
- <dd>An I/O error occurred</dd>
- <dt>osl_File_E_NOSPC</dt>
- <dd>There is no enough space on the target device</dd>
- <dt>osl_File_E_ROFS</dt>
- <dd>The file associated with the given file handle is located on a read only file system</dd>
- <dt>osl_File_E_TIMEDOUT</dt>
- <dd>A remote connection timed out. This may happen when a file is on a remote location</dd>
- </dl>
-
- @see osl_openFile()
- @see osl_writeFile()
-*/
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_syncFile( oslFileHandle Handle );
-
-/** Close an open file.
-
- @param Handle [in]
- Handle to a file received by a previous call to osl_openFile().
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_BADF Bad file<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_NOSPC no space left on device<br>
- osl_File_E_IO on I/O errors<br>
-
- @see osl_openFile()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_closeFile( oslFileHandle Handle );
-
-
-/** Create a directory.
-
- @param pustrDirectoryURL [in]
- Full qualified URL of the directory to create.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_EXIST file exists<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_ROFS read-only file system<br>
- osl_File_E_NOSPC no space left on device<br>
- osl_File_E_DQUOT quota exceeded<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_FAULT bad address<br>
- osl_FileE_IO on I/O errors<br>
- osl_File_E_MLINK too many links<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
-
- @see osl_removeDirectory()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_createDirectory( rtl_uString* pustrDirectoryURL );
-
-
-/** Remove an empty directory.
-
- @param pustrDirectoryURL [in]
- Full qualified URL of the directory.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_PERM operation not permitted<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_NOTEMPTY directory not empty<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_BUSY device or resource busy<br>
- osl_File_E_ROFS read-only file system<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_BUSY device or resource busy<br>
- osl_File_E_EXIST file exists<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
-
- @see osl_createDirectory()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_removeDirectory( rtl_uString* pustrDirectoryURL );
-
-/** Function pointer representing a function that will be called by osl_createDirectoryPath
- if a directory has been created.
-
- To avoid unpredictable results the callee must not access the directory whose
- creation is just notified.
-
- @param pData
- [in] User specified data given in osl_createDirectoryPath.
-
- @param aDirectoryUrl
- [in] The absolute file URL of the directory that was just created by
- osl_createDirectoryPath.
-
- @see osl_createDirectoryPath
-*/
-typedef void (SAL_CALL *oslDirectoryCreationCallbackFunc)(void* pData, rtl_uString* aDirectoryUrl);
-
-/** Create a directory path.
-
- The osl_createDirectoryPath function creates a specified directory path.
- All nonexisting sub directories will be created.
- <p><strong>PLEASE NOTE:</strong> You cannot rely on getting the error code
- osl_File_E_EXIST for existing directories. Programming against this error
- code is in general a strong indication of a wrong usage of osl_createDirectoryPath.</p>
-
- @param aDirectoryUrl
- [in] The absolute file URL of the directory path to create.
- A relative file URL will not be accepted.
-
- @param aDirectoryCreationCallbackFunc
- [in] Pointer to a function that will be called synchronously
- for each sub directory that was created. The value of this
- parameter may be NULL, in this case notifications will not be
- sent.
-
- @param pData
- [in] User specified data to be passed to the directory creation
- callback function. The value of this parameter may be arbitrary
- and will not be interpreted by osl_createDirectoryPath.
-
- @return
- <dl>
- <dt>osl_File_E_None</dt>
- <dd>On success</dd>
- <dt>osl_File_E_INVAL</dt>
- <dd>The format of the parameters was not valid</dd>
- <dt>osl_File_E_ACCES</dt>
- <dd>Permission denied</dd>
- <dt>osl_File_E_EXIST</dt>
- <dd>The final node of the specified directory path already exist</dd>
- <dt>osl_File_E_NAMETOOLONG</dt>
- <dd>The name of the specified directory path exceeds the maximum allowed length</dd>
- <dt>osl_File_E_NOTDIR</dt>
- <dd>A component of the specified directory path already exist as file in any part of the directory path</dd>
- <dt>osl_File_E_ROFS</dt>
- <dd>Read-only file system</dd>
- <dt>osl_File_E_NOSPC</dt>
- <dd>No space left on device</dd>
- <dt>osl_File_E_DQUOT</dt>
- <dd>Quota exceeded</dd>
- <dt>osl_File_E_FAULT</dt>
- <dd>Bad address</dd>
- <dt>osl_File_E_IO</dt>
- <dd>I/O error</dd>
- <dt>osl_File_E_LOOP</dt>
- <dd>Too many symbolic links encountered</dd>
- <dt>osl_File_E_NOLINK</dt>
- <dd>Link has been severed</dd>
- <dt>osl_File_E_invalidError</dt>
- <dd>An unknown error occurred</dd>
- </dl>
-
- @see oslDirectoryCreationFunc
- @see oslFileError
- @see osl_createDirectory
-*/
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_createDirectoryPath(
- rtl_uString* aDirectoryUrl,
- oslDirectoryCreationCallbackFunc aDirectoryCreationCallbackFunc,
- void* pData);
-
-/** Remove a regular file.
-
- @param pustrFileURL [in]
- Full qualified URL of the file to remove.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_PERM operation not permitted<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_ROFS read-only file system<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_IO on I/O errors<br>
- osl_File_E_BUSY device or resource busy<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
- osl_File_E_TXTBSY text file busy<br>
-
- @see osl_openFile()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_removeFile(
- rtl_uString* pustrFileURL );
-
-
-/** Copy a file to a new destination.
-
- Copies a file to a new destination. Copies only files not directories.
- No assumptions should be made about preserving attributes or file time.
-
- @param pustrSourceFileURL [in]
- Full qualified URL of the source file.
-
- @param pustrDestFileURL [in]
- Full qualified URL of the destination file. A directory is NOT a valid destination file!
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_PERM operation not permitted<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_ISDIR is a directory<br>
- osl_File_E_ROFS read-only file system<p>
-
- @see osl_moveFile()
- @see osl_removeFile()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_copyFile(
- rtl_uString* pustrSourceFileURL, rtl_uString *pustrDestFileURL );
-
-
-/** Move a file or directory to a new destination or renames it.
-
- Moves a file or directory to a new destination or renames it.
- File time and attributes are preserved.
-
- @param pustrSourceFileURL [in]
- Full qualified URL of the source file.
-
- @param pustrDestFileURL [in]
- Full qualified URL of the destination file. An existing directory is NOT a valid destination !
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_PERM operation not permitted<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_ROFS read-only file system<br>
-
- @see osl_copyFile()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_moveFile(
- rtl_uString* pustrSourceFileURL, rtl_uString *pustrDestFileURL );
-
-
-/** Determine a valid unused canonical name for a requested name.
-
- Determines a valid unused canonical name for a requested name.
- Depending on the Operating System and the File System the illegal characters are replaced by valid ones.
- If a file or directory with the requested name already exists a new name is generated following
- the common rules on the actual Operating System and File System.
-
- @param pustrRequestedURL [in]
- Requested name of a file or directory.
-
- @param ppustrValidURL [out]
- On success receives a name which is unused and valid on the actual Operating System and
- File System.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
-
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getCanonicalName(
- rtl_uString *pustrRequestedURL, rtl_uString **ppustrValidURL);
-
-
-/** Convert a path relative to a given directory into an full qualified file URL.
-
- Convert a path relative to a given directory into an full qualified file URL.
- The function resolves symbolic links if possible and path ellipses, so on success
- the resulting absolute path is fully resolved.
-
- @param pustrBaseDirectoryURL [in]
- Base directory URL to which the relative path is related to.
-
- @param pustrRelativeFileURL [in]
- An URL of a file or directory relative to the directory path specified by pustrBaseDirectoryURL
- or an absolute path.
- If pustrRelativeFileURL denotes an absolute path pustrBaseDirectoryURL will be ignored.
-
- @param ppustrAbsoluteFileURL [out]
- On success it receives the full qualified absoulte file URL.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOMEM not enough memory for allocating structures <br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_ACCES permission denied<br>
- osl_File_E_NOENT no such file or directory<br>
- osl_File_E_NAMETOOLONG file name too long<br>
- osl_File_E_OVERFLOW value too large for defined data type<br>
- osl_File_E_FAULT bad address<br>
- osl_File_E_INTR function call was interrupted<br>
- osl_File_E_LOOP too many symbolic links encountered<br>
- osl_File_E_MULTIHOP multihop attempted<br>
- osl_File_E_NOLINK link has been severed<br>
-
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getAbsoluteFileURL(
- rtl_uString* pustrBaseDirectoryURL,
- rtl_uString *pustrRelativeFileURL,
- rtl_uString **ppustrAbsoluteFileURL );
-
-
-/** Convert a system dependend path into a file URL.
-
- @param pustrSystemPath [in]
- A System dependent path of a file or directory.
-
- @param ppustrFileURL [out]
- On success it receives the file URL.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
-
- @see osl_getSystemPathFromFileURL()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getFileURLFromSystemPath(
- rtl_uString *pustrSystemPath, rtl_uString **ppustrFileURL);
-
-
-/** Searche a full qualified system path or a file URL.
-
- @param pustrFileName [in]
- A system dependent path, a file URL, a file or relative directory.
-
- @param pustrSearchPath [in]
- A list of system paths, in which a given file has to be searched. The Notation of a path list is
- system dependend, e.g. on UNIX system "/usr/bin:/bin" and on Windows "C:\BIN;C:\BATCH".
- These paths are only for the search of a file or a relative path, otherwise it will be ignored.
- If pustrSearchPath is NULL or while using the search path the search failed, the function searches for
- a matching file in all system directories and in the directories listed in the PATH environment
- variable.
- The value of an environment variable should be used (e.g. LD_LIBRARY_PATH) if the caller is not
- aware of the Operating System and so doesn't know which path list delimiter to use.
-
- @param ppustrFileURL [out]
- On success it receives the full qualified file URL.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOTDIR not a directory<br>
- osl_File_E_NOENT no such file or directory not found<br>
-
- @see osl_getFileURLFromSystemPath()
- @see osl_getSystemPathFromFileURL()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_searchFileURL(
- rtl_uString *pustrFileName, rtl_uString *pustrSearchPath, rtl_uString **ppustrFileURL );
-
-
-/** Convert a file URL into a system dependend path.
-
- @param pustrFileURL [in]
- A File URL.
-
- @param ppustrSystemPath [out]
- On success it receives the system path.
-
- @return
- osl_File_E_None on success
- osl_File_E_INVAL the format of the parameters was not valid
-
- @see osl_getFileURLFromSystemPath()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getSystemPathFromFileURL(
- rtl_uString *pustrFileURL, rtl_uString **ppustrSystemPath);
-
-
-/** Function pointer representing the function called back from osl_abbreviateSystemPath
-
- @param ustrText [in]
- Text to calculate the width for
-
- @return
- The width of the text specified by ustrText, e.g. it can return the width in pixel
- or the width in character count.
-
- @see osl_abbreviateSystemPath()
-*/
-
-typedef sal_uInt32 (SAL_CALL *oslCalcTextWidthFunc)( rtl_uString *ustrText );
-
-
-/** Abbreviate a system notation path.
-
- @param ustrSystemPath [in]
- The full system path to abbreviate
-
- @param pustrCompacted [out]
- Receives the compacted system path on output
-
- @param pCalcWidth [in]
- Function ptr that calculates the width of a string. Can be zero.
-
- @param uMaxWidth [in]
- Maximum width allowed that is retunrned from pCalcWidth.
- If pCalcWidth is zero the character count is assumed as width.
-
- @return
- osl_File_E_None on success<br>
-
- @see oslCalcTextWidthFunc
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_abbreviateSystemPath(
- rtl_uString *ustrSystemPath,
- rtl_uString **pustrCompacted,
- sal_uInt32 uMaxWidth,
- oslCalcTextWidthFunc pCalcWidth );
-
-
-/** Set file attributes.
-
- @param pustrFileURL [in]
- The full qualified file URL.
-
- @param uAttributes [in]
- Attributes of the file to be set.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
-
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_setFileAttributes(
- rtl_uString *pustrFileURL, sal_uInt64 uAttributes );
-
-
-/** Set the file time.
-
- @param pustrFileURL [in]
- The full qualified URL of the file.
-
- @param aCreationTime [in]
- Creation time of the given file.
-
- @param aLastAccessTime [in]
- Time of the last access of the given file.
-
- @param aLastWriteTime [in]
- Time of the last modifying of the given file.
-
- @return
- osl_File_E_None on success<br>
- osl_File_E_INVAL the format of the parameters was not valid<br>
- osl_File_E_NOENT no such file or directory not found<br>
-
- @see osl_getFileStatus()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_setFileTime(
- rtl_uString *pustrFileURL,
- const TimeValue *aCreationTime,
- const TimeValue *aLastAccessTime,
- const TimeValue *aLastWriteTime);
-
-
-/** Retrieves the file URL of the system's temporary directory path
-
- @param[out] pustrTempDirURL
- On success receives the URL of system's temporary directory path.
-
- @return
- osl_File_E_None on success
- osl_File_E_NOENT no such file or directory not found
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_getTempDirURL(
- rtl_uString **pustrTempDirURL );
-
-
-/** Creates a temporary file in the directory provided by the caller or the
- directory returned by osl_getTempDirURL.
-
- Creates a temporary file in the directory provided by the caller or the
- directory returned by osl_getTempDirURL.
- Under UNIX Operating Systems the file will be created with read and write
- access for the user exclusively.
- If the caller requests only a handle to the open file but not the name of
- it, the file will be automatically removed on close else the caller is
- responsible for removing the file on success.
-
- Description of the different pHandle, ppustrTempFileURL parameter combinations.
- pHandle is 0 and ppustrTempDirURL is 0 - this combination is invalid
- pHandle is not 0 and ppustrTempDirURL is 0 - a handle to the open file
- will be returned on success and the file will be automatically removed on close.
- pHandle is 0 and ppustrTempDirURL is not 0 - the name of the file will be returned,
- the caller is responsible for opening, closing and removing the file.
- pHandle is not 0 and ppustrTempDirURL is not 0 - a handle to the open file as well as
- the file name will be returned, the caller is responsible for closing and removing
- the file.
-
- @param pustrDirectoryURL [in]
- Specifies the full qualified URL where the temporary file should be created.
- If pustrDirectoryURL is 0 the path returned by osl_getTempDirURL will be used.
-
- @param pHandle [out]
- On success receives a handle to the open file. If pHandle is 0 the file will
- be closed on return, in this case ppustrTempFileURL must not be 0.
-
- @param ppustrTempFileURL [out]
- On success receives the full qualified URL of the temporary file.
- If ppustrTempFileURL is 0 the file will be automatically removed on close,
- in this case pHandle must not be 0.
- If ppustrTempFileURL is not 0 the caller receives the name of the created
- file and is responsible for removing the file, in this case
- *ppustrTempFileURL must be 0 or must point to a valid rtl_uString.
-
- @return
- osl_File_E_None on success
- osl_File_E_INVAL the format of the parameter is invalid
- osl_File_E_NOMEM not enough memory for allocating structures
- osl_File_E_ACCES Permission denied
- osl_File_E_NOENT No such file or directory
- osl_File_E_NOTDIR Not a directory
- osl_File_E_ROFS Read-only file system
- osl_File_E_NOSPC No space left on device
- osl_File_E_DQUOT Quota exceeded
-
- @see osl_getTempDirURL()
-*/
-
-SAL_DLLPUBLIC oslFileError SAL_CALL osl_createTempFile(
- rtl_uString* pustrDirectoryURL,
- oslFileHandle* pHandle,
- rtl_uString** ppustrTempFileURL);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _OSL_FILE_H_ */
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */