2000-09-18 14:18:43 +00:00
/*************************************************************************
*
* $ RCSfile : file . h , v $
*
2003-03-26 15:47:28 +00:00
* $ Revision : 1.25 $
2000-09-18 14:18:43 +00:00
*
2003-03-26 15:47:28 +00:00
* last change : $ Author : hr $ $ Date : 2003 - 03 - 26 16 : 45 : 36 $
2000-09-18 14:18:43 +00:00
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
*
* - GNU Lesser General Public License Version 2.1
* - Sun Industry Standards Source License Version 1.1
*
* Sun Microsystems Inc . , October , 2000
*
* GNU Lesser General Public License Version 2.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* Copyright 2000 by Sun Microsystems , Inc .
* 901 San Antonio Road , Palo Alto , CA 94303 , USA
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1 , as published by the Free Software Foundation .
*
* This library 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 for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston ,
* MA 02111 - 1307 USA
*
*
* Sun Industry Standards Source License Version 1.1
* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* The contents of this file are subject to the Sun Industry Standards
* Source License Version 1.1 ( 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.openoffice.org/license.html.
*
* Software provided under this License is provided on an " AS IS " basis ,
* WITHOUT WARRANTY OF ANY KIND , EITHER EXPRESSED OR IMPLIED , INCLUDING ,
* WITHOUT LIMITATION , WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS ,
* MERCHANTABLE , FIT FOR A PARTICULAR PURPOSE , OR NON - INFRINGING .
* See the License for the specific provisions governing your rights and
* obligations concerning the Software .
*
* The Initial Developer of the Original Code is : Sun Microsystems , Inc .
*
* Copyright : 2000 by Sun Microsystems , Inc .
*
* All Rights Reserved .
*
* Contributor ( s ) : _______________________________________
*
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# ifndef _OSL_FILE_H_
# define _OSL_FILE_H_
2001-03-14 08:50:26 +00:00
# ifndef _OSL_TIME_H_
# include <osl/time.h>
# endif
2000-09-18 14:18:43 +00:00
# ifndef _RTL_USTRING_H
# include <rtl / ustring.h>
# endif
# ifdef __cplusplus
extern " C " {
# endif
2002-11-29 08:01:36 +00:00
/** @file
Main goals and usage hints
2000-09-18 14:18:43 +00:00
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 >
2002-11-29 08:01:36 +00:00
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
2000-09-18 14:18:43 +00:00
specifications can cause problems in multithreading environments . < p >
2. Proprietary notations of file paths are not supported . Every path notation
2002-11-29 08:01:36 +00:00
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 >
2000-09-18 14:18:43 +00:00
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 ,
2001-08-17 16:21:06 +00:00
osl_File_E_NOTREADY ,
2000-09-18 14:18:43 +00:00
osl_File_E_invalidError , /* unmapped error: always last entry in enum! */
osl_File_E_FORCE_EQUAL_SIZE = SAL_MAX_ENUM
} oslFileError ;
typedef void * oslDirectory ;
typedef void * oslDirectoryItem ;
2002-11-29 08:01:36 +00:00
/** 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 ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_openDirectory ( rtl_uString * pustrDirectoryURL , oslDirectory * pDirectory ) ;
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
/** Retrieve the next item of a previously opened directory.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
Retrieves the next item of a previously opened directory .
All handles have an initial refcount of 1.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param Directory [ in ]
A directory handle received from a previous call to osl_openDirectory ( ) .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 ( )
2000-09-18 14:18:43 +00:00
*/
oslFileError SAL_CALL osl_getNextDirectoryItem (
oslDirectory Directory ,
oslDirectoryItem * pItem ,
sal_uInt32 uHint
) ;
2002-11-29 08:01:36 +00:00
/** Release a directory handle.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param Directory [ in ]
A handle received by a call to osl_openDirectory ( ) .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 >
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ see osl_openDirectory ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
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 ( )
2000-09-18 14:18:43 +00:00
*/
oslFileError SAL_CALL osl_getDirectoryItem (
2002-11-29 08:01:36 +00:00
rtl_uString * pustrFileURL ,
2000-09-18 14:18:43 +00:00
oslDirectoryItem * pItem
) ;
2002-11-29 08:01:36 +00:00
/** Increase the refcount of a directory item handle.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
The caller responsible for releasing the directory item handle using osl_releaseDirectoryItem ( ) .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param Item [ in ]
A handle received by a call to osl_getDirectoryItem ( ) or osl_getNextDirectoryItem ( ) .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 ( )
2000-09-18 14:18:43 +00:00
*/
oslFileError SAL_CALL osl_acquireDirectoryItem ( oslDirectoryItem Item ) ;
2002-11-29 08:01:36 +00:00
/** 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 .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param Item [ in ]
A handle received by a call to osl_getDirectoryItem ( ) or osl_getNextDirectoryItem ( ) .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 ( )
2000-09-18 14:18:43 +00:00
*/
oslFileError SAL_CALL osl_releaseDirectoryItem ( oslDirectoryItem Item ) ;
/* 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 retreive 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
2001-05-10 06:31:43 +00:00
# define osl_FileStatus_Mask_FileURL 0x00000200
# define osl_FileStatus_Mask_LinkTargetURL 0x00000400
2000-09-18 14:18:43 +00:00
# define osl_FileStatus_Mask_All 0x7FFFFFFF
# define osl_FileStatus_Mask_Validate 0x80000000
typedef
/** Structure containing information about files and directories
2002-11-29 08:01:36 +00:00
@ see osl_getFileStatus ( )
2000-09-18 14:18:43 +00:00
@ 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 . */
2001-05-21 07:57:21 +00:00
rtl_uString * ustrFileName ;
2001-05-10 06:31:43 +00:00
/** Full URL of the file. Should be set to zero before calling <code>osl_getFileStatus</code>
2000-09-18 14:18:43 +00:00
and released after usage . */
2001-05-21 07:57:21 +00:00
rtl_uString * ustrFileURL ;
2001-05-10 06:31:43 +00:00
/** Full URL of the target file if the file itself is a link.
2000-09-18 14:18:43 +00:00
Should be set to zero before calling < code > osl_getFileStatus < / code >
and released after usage . */
2001-05-21 07:57:21 +00:00
rtl_uString * ustrLinkTargetURL ;
2000-09-18 14:18:43 +00:00
} oslFileStatus ;
2002-11-29 08:01:36 +00:00
/** 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 ( )
2000-09-18 14:18:43 +00:00
@ see oslFileStatus
*/
oslFileError SAL_CALL osl_getFileStatus ( oslDirectoryItem Item , oslFileStatus * pStatus , sal_uInt32 uFieldMask ) ;
typedef void * oslVolumeDeviceHandle ;
2002-11-29 08:01:36 +00:00
/** Unmount a volume device.
Unmount the volume specified by the given oslVolumeDeviceHandle .
@ 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 ( )
*/
2000-09-18 14:18:43 +00:00
oslFileError SAL_CALL osl_unmountVolumeDevice ( oslVolumeDeviceHandle Handle ) ;
2002-11-29 08:01:36 +00:00
/** Automount a volume device.
Automount the volume device specified by the given oslVolumeDeviceHandle .
@ 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 ( )
*/
2000-09-18 14:18:43 +00:00
oslFileError SAL_CALL osl_automountVolumeDevice ( oslVolumeDeviceHandle Handle ) ;
2002-11-29 08:01:36 +00:00
/** 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 ( )
*/
2000-09-18 14:18:43 +00:00
oslFileError SAL_CALL osl_releaseVolumeDeviceHandle ( oslVolumeDeviceHandle Handle ) ;
2002-11-29 08:01:36 +00:00
/** 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 ( )
*/
2000-09-18 14:18:43 +00:00
oslFileError SAL_CALL osl_acquireVolumeDeviceHandle ( oslVolumeDeviceHandle Handle ) ;
2002-11-29 08:01:36 +00:00
/** 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 ( )
@ see osl_automountVolumeDevice ( )
@ see osl_unmountVolumeDevice ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_getVolumeDeviceMountPath ( oslVolumeDeviceHandle Handle , rtl_uString * * ppustrDirectoryURL ) ;
2000-09-18 14:18:43 +00:00
/* Volume attributes */
2001-07-30 15:10:01 +00:00
# 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
2001-12-04 14:06:58 +00:00
# define osl_Volume_Attribute_FloppyDisk 0x00000020L
2000-09-18 14:18:43 +00:00
/* Flags specifying which fields to retreive 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
typedef
/** Structure containing information about volumes
2002-11-29 08:01:36 +00:00
@ see osl_getVolumeInformation ( )
2000-09-18 14:18:43 +00:00
@ 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 ;
2002-11-29 08:01:36 +00:00
/** Maximum length of a full quallified path in system notation */
2000-09-18 14:18:43 +00:00
sal_uInt32 uMaxPathLength ;
2001-07-30 15:10:01 +00:00
/** 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>
2000-09-18 14:18:43 +00:00
and released after usage . */
2001-05-21 07:57:21 +00:00
rtl_uString * ustrFileSystemName ;
2001-07-30 15:10:01 +00:00
/** Pointer to handle the receives underlying device. Handle should be set to zero before calling <code>osl_getVolumeInformation</code>*/
2000-09-18 14:18:43 +00:00
oslVolumeDeviceHandle * pDeviceHandle ;
} oslVolumeInfo ;
2002-11-29 08:01:36 +00:00
/** 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 ( )
2000-09-18 14:18:43 +00:00
@ see oslVolumeInfo
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_getVolumeInformation (
rtl_uString * pustrDirectoryURL ,
oslVolumeInfo * pInfo ,
sal_uInt32 uFieldMask ) ;
2000-09-18 14:18:43 +00:00
typedef void * oslFileHandle ;
/* Open flags */
# define osl_File_OpenFlag_Read 0x00000001L
# define osl_File_OpenFlag_Write 0x00000002L
# define osl_File_OpenFlag_Create 0x00000004L
2002-11-29 08:01:36 +00:00
/** 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 .
@ 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 ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_openFile ( rtl_uString * pustrFileURL , oslFileHandle * pHandle , sal_uInt32 uFlags ) ;
2000-09-18 14:18:43 +00:00
# define osl_Pos_Absolut 1
# define osl_Pos_Current 2
# define osl_Pos_End 3
2002-11-29 08:01:36 +00:00
/** 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 ( )
2000-09-18 14:18:43 +00:00
*/
2001-05-18 18:30:16 +00:00
oslFileError SAL_CALL osl_setFilePos ( oslFileHandle Handle , sal_uInt32 uHow , sal_Int64 uPos ) ;
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
/** 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 >
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ see osl_openFile ( )
@ see osl_setFilePos ( )
@ see osl_readFile ( )
@ see osl_writeFile ( )
2000-09-18 14:18:43 +00:00
*/
oslFileError SAL_CALL osl_getFilePos ( oslFileHandle Handle , sal_uInt64 * pPos ) ;
2002-11-29 08:01:36 +00:00
/** 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 .
2000-09-18 14:18:43 +00:00
The position of the file pointer is not affeced by this function .
2002-11-29 08:01:36 +00:00
@ param Handle [ in ]
Handle to a file received by a previous call to osl_openFile ( ) .
@ param uSize [ int ]
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 ( )
2000-09-18 14:18:43 +00:00
*/
oslFileError SAL_CALL osl_setFileSize ( oslFileHandle Handle , sal_uInt64 uSize ) ;
2002-11-29 08:01:36 +00:00
/** 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 ( )
2000-09-18 14:18:43 +00:00
*/
oslFileError SAL_CALL osl_readFile ( oslFileHandle Handle , void * pBuffer , sal_uInt64 uBytesRequested , sal_uInt64 * pBytesRead ) ;
2002-11-29 08:01:36 +00:00
/** Test if the end of a file is reached.
2001-07-20 08:39:29 +00:00
2002-11-29 08:01:36 +00:00
@ param Handle [ in ]
Handle to a file received by a previous call to osl_openFile ( ) .
2001-07-20 08:39:29 +00:00
2002-11-29 08:01:36 +00:00
@ param pIsEOF [ out ]
Points to a variable that receives the end - of - file status .
2001-07-20 08:39:29 +00:00
2002-11-29 08:01:36 +00:00
@ 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 ( )
2001-07-20 08:39:29 +00:00
*/
oslFileError SAL_CALL osl_isEndOfFile ( oslFileHandle Handle , sal_Bool * pIsEOF ) ;
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
/** Write a number of bytes to a file.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
Writes a number of bytes to a file .
The internal file pointer is increased by the number of bytes read .
2001-02-06 16:26:01 +00:00
2002-11-29 08:01:36 +00:00
@ 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 .
2001-02-06 16:26:01 +00:00
2002-11-29 08:01:36 +00:00
@ param uBytesToWrite [ in ]
Number of bytes which should be written .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param pBytesWritten [ out ]
On success the number of bytes which have actually been written .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 >
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ see osl_openFile ( )
@ see osl_readFile ( )
@ see osl_setFilePos ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_writeFile ( oslFileHandle Handle , const void * pBuffer , sal_uInt64 uBytesToWrite , sal_uInt64 * pBytesWritten ) ;
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
/** Read a line from a file.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
Reads a line from a file . The new line delimiter is NOT returned !
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param Handle [ in ]
Handle to a file received by a previous call to osl_openFile ( ) .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param ppSequence [ in / out ]
A pointer pointer to a sal_Sequence that will hold the line read on success .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 >
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ see osl_openFile ( )
@ see osl_readFile ( )
@ see osl_writeFile ( )
@ see osl_setFilePos ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_readLine ( oslFileHandle Handle , sal_Sequence * * ppSequence ) ;
/** 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 >
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ see osl_openFile ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_closeFile ( oslFileHandle Handle ) ;
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
/** 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 ( )
*/
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
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 ( )
*/
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_removeDirectory ( rtl_uString * pustrDirectoryURL ) ;
/** 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 ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_removeFile ( rtl_uString * pustrFileURL ) ;
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
/** Copy a file to a new destination.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
Copies a file to a new destination . Copies only files not directories .
No assumptions should be made about preserving attributes or file time .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param pustrSourceFileURL [ in ]
Full qualified URL of the source file .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_copyFile ( rtl_uString * pustrSourceFileURL , rtl_uString * pustrDestFileURL ) ;
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
/** Move a file or directory to a new destination or renames it.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
Moves a file or directory to a new destination or renames it .
File time and attributes are preserved .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param pustrSourceFileURL [ in ]
Full qualified URL of the source file .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param pustrDestFileURL [ in ]
Full qualified URL of the destination file . An existing directory is NOT a valid destination !
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 >
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ see osl_copyFile ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_moveFile ( rtl_uString * pustrSourceFileURL , rtl_uString * pustrDestFileURL ) ;
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
/** Determine a valid unused canonical name for a requested name.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
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 .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param pustrRequestedURL [ in ]
Requested name of a file or directory .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param ppustrValidURL [ out ]
On success receives a name which is unused and valid on the actual Operating System and
File System .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ return
osl_File_E_None on success < br >
osl_File_E_INVAL the format of the parameters was not valid < br >
@ see osl_getFileStatus ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_getCanonicalName ( rtl_uString * pustrRequestedURL , rtl_uString * * ppustrValidURL ) ;
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
/** Convert a path relative to a given directory into an full qualified file URL.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
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 .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param pustrBaseDirectoryURL [ in ]
Base directory URL to which the relative path is related to .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_getAbsoluteFileURL (
rtl_uString * pustrBaseDirectoryURL ,
rtl_uString * pustrRelativeFileURL ,
rtl_uString * * ppustrAbsoluteFileURL ) ;
2001-02-27 14:25:59 +00:00
2002-11-29 08:01:36 +00:00
/** Convert a system dependend path into a file URL.
2001-02-27 14:25:59 +00:00
2002-11-29 08:01:36 +00:00
@ param pustrSystemPath [ in ]
A System dependent path of a file or directory .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param ppustrFileURL [ out ]
On success it receives the file URL .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ return
osl_File_E_None on success < br >
osl_File_E_INVAL the format of the parameters was not valid < br >
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ see osl_getSystemPathFromFileURL ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
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 .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 .
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
@ param ppustrFileURL [ out ]
On success it receives the full qualified file URL .
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
@ 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 >
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
@ see osl_getFileURLFromSystemPath ( )
@ see osl_getSystemPathFromFileURL ( )
2001-11-09 09:40:16 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_searchFileURL ( rtl_uString * pustrFileName , rtl_uString * pustrSearchPath , rtl_uString * * ppustrFileURL ) ;
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
/** Convert a file URL into a system dependend path.
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
@ param pustrFileURL [ in ]
A File URL .
2001-11-26 17:49:49 +00:00
2002-11-29 08:01:36 +00:00
@ param ppustrSystemPath [ out ]
On success it receives the system path .
2001-11-26 17:49:49 +00:00
2002-11-29 08:01:36 +00:00
@ return
osl_File_E_None on success
osl_File_E_INVAL the format of the parameters was not valid
2001-11-26 17:49:49 +00:00
2002-11-29 08:01:36 +00:00
@ see osl_getFileURLFromSystemPath ( )
2001-11-26 17:49:49 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_getSystemPathFromFileURL ( rtl_uString * pustrFileURL , rtl_uString * * ppustrSystemPath ) ;
2001-11-26 17:49:49 +00:00
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
/** Function pointer representing the function called back from osl_abbreviateSystemPath
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
@ param ustrText [ in ]
Text to calculate the width for
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
@ return
The width of the text specified by ustrText , e . g . it can return the width in pixel
or the width in character count .
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
@ see osl_abbreviateSystemPath ( )
2001-11-09 09:40:16 +00:00
*/
2002-11-29 08:01:36 +00:00
typedef sal_uInt32 ( SAL_CALL * oslCalcTextWidthFunc ) ( rtl_uString * ustrText ) ;
/** Abbreviate a system notation path.
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
@ param ustrSystemPath [ in ]
The full system path to abbreviate
2001-11-09 09:40:16 +00:00
2002-11-29 08:01:36 +00:00
@ param pustrCompacted [ out ]
Receives the compacted system path on output
2001-11-26 17:49:49 +00:00
2002-11-29 08:01:36 +00:00
@ param pfnCalcWidth [ in ]
Function ptr that calculates the width of a string . Can be zero .
2001-11-26 17:49:49 +00:00
2002-11-29 08:01:36 +00:00
@ param uMaxWidth [ in ]
Maximum width allowed that is retunrned from pfnCalcWidth .
If pfnCalcWidth is zero the character count is assumed as width .
2001-11-26 17:49:49 +00:00
2002-11-29 08:01:36 +00:00
@ return
osl_File_E_None on success < br >
2001-11-26 17:49:49 +00:00
2002-11-29 08:01:36 +00:00
@ see oslCalcTextWidthFunc
2001-11-26 17:49:49 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_abbreviateSystemPath (
rtl_uString * ustrSystemPath ,
rtl_uString * * pustrCompacted ,
sal_uInt32 uMaxWidth ,
oslCalcTextWidthFunc pCalcWidth ) ;
2001-11-26 17:49:49 +00:00
2002-11-29 08:01:36 +00:00
/** Set file attributes.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param pustrFileURL [ in ]
The full qualified file URL .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param uAttributes [ in ]
Attributes of the file to be set .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ return
osl_File_E_None on success < br >
osl_File_E_INVAL the format of the parameters was not valid < br >
@ see osl_getFileStatus ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_setFileAttributes ( rtl_uString * pustrFileURL , sal_uInt64 uAttributes ) ;
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
/** Set the file time.
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param pustrFileURL [ in ]
The full qualified URL of the file .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param aCreationTime [ in ]
Creation time of the given file .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param aLastAccessTime [ in ]
Time of the last access of the given file .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ param aLastWriteTime [ in ]
Time of the last modifying of the given file .
2000-09-18 14:18:43 +00:00
2002-11-29 08:01:36 +00:00
@ 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 ( )
2000-09-18 14:18:43 +00:00
*/
2002-11-29 08:01:36 +00:00
oslFileError SAL_CALL osl_setFileTime (
rtl_uString * pustrFileURL ,
const TimeValue * aCreationTime ,
const TimeValue * aLastAccessTime ,
const TimeValue * aLastWriteTime ) ;
2000-09-18 14:18:43 +00:00
2002-08-19 07:36:52 +00:00
/** Retrieves the file URL of the system's temporary directory path
2002-11-29 08:01:36 +00:00
@ param pustrTempDirURL [ out ]
On success receives the URL of system ' s temporary directory path .
2002-08-19 07:36:52 +00:00
2002-11-29 08:01:36 +00:00
@ return
osl_File_E_None on success
osl_File_E_NOENT no such file or directory not found
2002-08-19 07:36:52 +00:00
*/
oslFileError SAL_CALL osl_getTempDirURL ( rtl_uString * * pustrTempDirURL ) ;
2002-11-29 08:01:36 +00:00
2002-11-12 14:12:22 +00:00
/** Creates a temporary file in the directory provided by the caller or the
directory returned by osl_getTempDirURL .
2002-11-29 08:01:36 +00:00
Creates a temporary file in the directory provided by the caller or the
directory returned by osl_getTempDirURL .
2002-11-12 14:12:22 +00:00
Under UNIX Operating Systems the file will be created with read and write
access for the user exclusively .
2002-11-14 07:49:32 +00:00
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
2002-11-29 08:01:36 +00:00
responsible for removing the file on success .
@ 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 .
@ descr
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 .
@ 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 ( )
2002-11-12 14:12:22 +00:00
*/
oslFileError SAL_CALL osl_createTempFile (
rtl_uString * pustrDirectoryURL ,
oslFileHandle * pHandle ,
rtl_uString * * ppustrTempFileURL ) ;
2002-08-19 07:36:52 +00:00
2000-09-18 14:18:43 +00:00
# ifdef __cplusplus
}
# endif
# endif /* _OSL_FILE_H_ */