/*********************************************************************** * * Copyright (C) 2005-2006 Novell, Inc. All Rights Reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2.1 * of the License. * * 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 * Library 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, Novell, Inc. * * To contact Novell about this file by physical or electronic mail, * you may find current contact information at www.novell.com. * ***********************************************************************/ #if ! defined ( NWFILE_H ) #define NWFILE_H #if ! defined ( NTYPES_H ) # include "ntypes.h" #endif #if ! defined ( NWCALDEF_H ) # include "nwcaldef.h" #endif #include "npackon.h" #ifdef __cplusplus extern "C" { #endif #ifndef FILE_LOCKS_ONLY typedef struct NW_FILE_INFO { nstr8 fileName[14]; nuint8 fileAttributes; nuint8 extendedFileAttributes; nuint32 fileSize; nuint16 creationDate; nuint16 lastAccessDate; nuint32 lastUpdateDateAndTime; nuint32 fileOwnerID; nuint32 lastArchiveDateAndTime; } NW_FILE_INFO; typedef struct NW_FILE_INFO2 { nuint8 fileAttributes; nuint8 extendedFileAttributes; nuint32 fileSize; nuint16 creationDate; nuint16 lastAccessDate; nuint32 lastUpdateDateAndTime; nuint32 fileOwnerID; nuint32 lastArchiveDateAndTime; nstr8 fileName[260]; } NW_FILE_INFO2; typedef struct NW_FILE_INFO2_EXT { nuint8 fileAttributes; nuint8 extendedFileAttributes; nuint32 fileSize; nuint16 creationDate; nuint16 lastAccessDate; nuint32 lastUpdateDateAndTime; nuint32 fileOwnerID; nuint32 lastArchiveDateAndTime; nstr8 fileName[766]; /* 255*3 + 1 */ } NW_FILE_INFO2_EXT; typedef struct SEARCH_FILE_INFO { nuint16 sequenceNumber; nuint16 reserved; nstr8 fileName[15]; nuint8 fileAttributes; nuint8 fileMode; nuint32 fileLength; nuint16 createDate; nuint16 accessDate; nuint16 updateDate; nuint16 updateTime; } SEARCH_FILE_INFO; typedef struct SEARCH_DIR_INFO { nuint16 sequenceNumber; nuint16 reserved1; nstr8 directoryName[15]; nuint8 directoryAttributes; nuint8 directoryAccessRights; nuint16 createDate; nuint16 createTime; nuint32 owningObjectID; nuint16 reserved2; nuint16 directoryStamp; } SEARCH_DIR_INFO; typedef struct { nuint8 taskNumber; nuint8 lockType; nuint8 accessControl; nuint8 lockFlag; nuint8 volNumber; nuint16 dirEntry; nstr8 fileName[14]; } CONN_OPEN_FILE; typedef struct { nuint16 nextRequest; nuint8 connCount; CONN_OPEN_FILE connInfo[22]; } CONN_OPEN_FILES; typedef struct { nuint16 taskNumber; nuint8 lockType; nuint8 accessControl; nuint8 lockFlag; nuint8 volNumber; nuint32 parent; nuint32 dirEntry; nuint8 forkCount; nuint8 nameSpace; nuint8 nameLen; nstr8 fileName[255]; } OPEN_FILE_CONN; typedef struct { nuint16 nextRequest; nuint16 openCount; nuint8 buffer[512]; nuint16 curRecord; } OPEN_FILE_CONN_CTRL; typedef struct { nuint16 connNumber; nuint16 taskNumber; nuint8 lockType; nuint8 accessControl; nuint8 lockFlag; } CONN_USING_FILE; typedef struct { nuint16 nextRequest; nuint16 useCount; nuint16 openCount; nuint16 openForReadCount; nuint16 openForWriteCount; nuint16 denyReadCount; nuint16 denyWriteCount; nuint8 locked; nuint8 forkCount; nuint16 connCount; CONN_USING_FILE connInfo[70]; } CONNS_USING_FILE; #define SEEK_FROM_BEGINNING 1 #define SEEK_FROM_CURRENT_OFFSET 2 #define SEEK_FROM_END 3 /* The following flags are to be used in the createFlag parameter of the NWCreateFile call. */ #define NWCREATE_NEW_FILE 1 #define NWOVERWRITE_FILE 2 N_EXTERN_LIBRARY( NWCCODE ) NWSetCompressedFileSize ( NWCONN_HANDLE conn, NWFILE_HANDLE fileHandle, nuint32 reqFileSize, pnuint32 resFileSize ); N_EXTERN_LIBRARY( NWCCODE ) NWFileServerFileCopy ( NWFILE_HANDLE srcFileHandle, NWFILE_HANDLE dstFileHandle, nuint32 srcOffset, nuint32 dstOffset, nuint32 bytesToCopy, pnuint32 bytesCopied ); N_EXTERN_LIBRARY( NWCCODE ) NWGetFileConnectionID ( NWFILE_HANDLE fileHandle, NWCONN_HANDLE N_FAR * conn ); N_EXTERN_LIBRARY( NWCCODE ) NWGetFileConnRef ( NWFILE_HANDLE fileHandle, pnuint32 connRef ); N_GLOBAL_LIBRARY( NWCCODE ) NWFileSearchInitialize ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * path, pnuint8 volNum, pnuint16 dirID, pnuint16 iterhandle, pnuint8 accessRights ); #define NWIntFileSearchInitialize(a, b, c, d, e, f, g, h) \ NWFileSearchInitialize(a, b, c, d, e, f, g) N_EXTERN_LIBRARY( NWCCODE ) NWIntFileSearchContinue ( NWCONN_HANDLE conn, nuint8 volNum, nuint16 dirID, nuint16 searchContext, nuint8 searchAttr, const nstr8 N_FAR * searchPath, pnuint8 retBuf, nuint16 augmentFlag ); #define NWScanFileInformation(a, b, c, d, e, f) \ NWIntScanFileInformation(a, b, c, d, e, f, 0) N_EXTERN_LIBRARY( NWCCODE ) NWIntScanFileInformation ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * filePattern, nuint8 searchAttr, pnint16 iterhandle, NW_FILE_INFO N_FAR * info, nuint16 augmentFlag ); N_EXTERN_LIBRARY( NWCCODE ) NWSetFileInformation ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * fileName, nuint8 searchAttrs, NW_FILE_INFO N_FAR * info ); N_EXTERN_LIBRARY( NWCCODE ) NWSetFileInformation2 ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * fileName, nuint8 searchAttrs, NW_FILE_INFO2 N_FAR * info ); N_EXTERN_LIBRARY( NWCCODE ) NWIntScanFileInformation2 ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * filePattern, nuint8 searchAttrs, pnuint8 iterHandle, NW_FILE_INFO2 N_FAR * info, nuint16 augmentFlag ); N_EXTERN_LIBRARY( NWCCODE ) NWIntScanFileInformation2Ext ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * filePattern, nuint8 searchAttrs, pnuint8 iterHandle, NW_FILE_INFO2_EXT N_FAR * info, nuint16 augmentFlag ); N_EXTERN_LIBRARY( NWCCODE ) NWSetFileAttributes ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * fileName, nuint8 searchAttrs, nuint8 newAttrs ); N_EXTERN_LIBRARY( NWCCODE ) NWGetExtendedFileAttributes2 ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * path, pnuint8 extAttrs ); N_EXTERN_LIBRARY( NWCCODE ) NWScanConnectionsUsingFile ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * filePath, pnint16 iterhandle, CONN_USING_FILE N_FAR * fileUse, CONNS_USING_FILE N_FAR * fileUsed ); N_EXTERN_LIBRARY( NWCCODE ) NWScanOpenFilesByConn2 ( NWCONN_HANDLE conn, nuint16 connNum, pnint16 iterHandle, OPEN_FILE_CONN_CTRL N_FAR * openCtrl, OPEN_FILE_CONN N_FAR * openFile ); N_EXTERN_LIBRARY( NWCCODE ) NWScanOpenFilesByConn ( NWCONN_HANDLE conn, nuint16 connNum, pnint16 iterHandle, CONN_OPEN_FILE N_FAR * openFile, CONN_OPEN_FILES N_FAR * openFiles ); N_EXTERN_LIBRARY( NWCCODE ) NWSetExtendedFileAttributes2 ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * path, nuint8 extAttrs ); N_EXTERN_LIBRARY( NWCCODE ) NWRenameFile ( NWCONN_HANDLE conn, NWDIR_HANDLE oldDirHandle, const nstr8 N_FAR * oldFileName, nuint8 searchAttrs, NWDIR_HANDLE newDirHandle, const nstr8 N_FAR * newFileName ); N_EXTERN_LIBRARY( NWCCODE ) NWIntEraseFiles ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * path, nuint8 searchAttrs, nuint16 augmentFlag ); N_EXTERN_LIBRARY( NWCCODE ) NWGetSparseFileBitMap ( NWCONN_HANDLE conn, nuint32 fileHandle, nint16 flag, nuint32 offset, pnuint32 blockSize, pnuint8 bitMap ); #endif #define NWLOCKS_INCLUDED N_EXTERN_LIBRARY( NWCCODE ) NWLogPhysicalRecord ( NWFILE_HANDLE fileHandle, nuint32 recStartOffset, nuint32 recLength, nuint8 lockFlags, nuint16 timeOut ); N_EXTERN_LIBRARY( NWCCODE ) NWLockPhysicalRecordSet ( nuint8 lockFlags, nuint16 timeOut ); N_EXTERN_LIBRARY( NWCCODE ) NWReleasePhysicalRecordSet ( void ); N_EXTERN_LIBRARY( NWCCODE ) NWClearPhysicalRecordSet ( void ); N_EXTERN_LIBRARY( NWCCODE ) NWReleasePhysicalRecord ( NWFILE_HANDLE fileHandle, nuint32 recStartOffset, nuint32 recSize ); N_EXTERN_LIBRARY( NWCCODE ) NWClearPhysicalRecord ( NWFILE_HANDLE fileHandle, nuint32 recStartOffset, nuint32 recSize ); N_EXTERN_LIBRARY( NWCCODE ) NWLockFileLockSet ( nuint16 timeOut ); N_EXTERN_LIBRARY( NWCCODE ) NWReleaseFileLockSet ( void ); N_EXTERN_LIBRARY( NWCCODE ) NWClearFileLockSet ( void ); N_EXTERN_LIBRARY( NWCCODE ) NWClearFileLock2 ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * path ); N_EXTERN_LIBRARY( NWCCODE ) NWReleaseFileLock2 ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * path ); N_EXTERN_LIBRARY( NWCCODE ) NWLogFileLock2 ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, const nstr8 N_FAR * path, nuint8 lockFlags, nuint16 timeOut ); N_EXTERN_LIBRARY( NWCCODE ) NWLogLogicalRecord ( NWCONN_HANDLE conn, const nstr8 N_FAR * logRecName, nuint8 lockFlags, nuint16 timeOut ); N_EXTERN_LIBRARY( NWCCODE ) NWLockLogicalRecordSet ( nuint8 lockFlags, nuint16 timeOut ); N_EXTERN_LIBRARY( NWCCODE ) NWReleaseLogicalRecordSet ( void ); N_EXTERN_LIBRARY( NWCCODE ) NWClearLogicalRecordSet ( void ); N_EXTERN_LIBRARY( NWCCODE ) NWReleaseLogicalRecord ( NWCONN_HANDLE conn, const nstr8 N_FAR * logRecName ); N_EXTERN_LIBRARY( NWCCODE ) NWClearLogicalRecord ( NWCONN_HANDLE conn, const nstr8 N_FAR * logRecName ); N_EXTERN_LIBRARY( NWCCODE ) NWCloseFile ( NWFILE_HANDLE fileHandle ); N_EXTERN_LIBRARY( NWCCODE ) NWCreateFile ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, pnstr8 fileName, nuint8 fileAttrs, NWFILE_HANDLE N_FAR * fileHandle, nflag32 createFlag ); N_EXTERN_LIBRARY( NWCCODE ) NWOpenFile ( NWCONN_HANDLE conn, NWDIR_HANDLE dirHandle, pnstr8 fileName, nuint16 searchAttr, nuint8 accessRights, NWFILE_HANDLE N_FAR * fileHandle ); N_EXTERN_LIBRARY( NWCCODE ) NWReadFile ( NWFILE_HANDLE fileHandle, nuint32 bytesToRead, pnuint32 bytesActuallyRead, pnuint8 data ); N_EXTERN_LIBRARY( NWCCODE ) NWWriteFile ( NWFILE_HANDLE fileHandle, nuint32 bytesToWrite, pnuint8 data ); N_EXTERN_LIBRARY( NWCCODE ) NWCommitFile ( NWFILE_HANDLE fileHandle ); N_EXTERN_LIBRARY( NWCCODE ) NWGetEOF ( NWFILE_HANDLE fileHandle, pnuint32 getEOF ); N_EXTERN_LIBRARY( NWCCODE ) NWSetEOF ( NWFILE_HANDLE fileHandle, nuint32 setEOF ); N_EXTERN_LIBRARY( NWCCODE ) NWGetFilePos ( NWFILE_HANDLE fileHandle, pnuint32 filePos ); N_EXTERN_LIBRARY( NWCCODE ) NWSetFilePos ( NWFILE_HANDLE fileHandle, nuint mode, nuint32 filePos ); N_EXTERN_LIBRARY( NWCCODE ) NWGetFileDirEntryNumber ( NWFILE_HANDLE fileHandle, pnuint32 volumeNum, pnuint32 directoryEntry, pnuint32 DOSDirectoryEntry, pnuint32 nameSpace, pnuint32 dataStream, pnuint32 parentDirEntry, pnuint32 parentDOSDirEntry ); N_EXTERN_LIBRARY( NWCCODE ) NWGetDirectoryEntryNumber ( NWCONN_HANDLE conn, nuint8 dirHandle, pnuint32 volumeNum, pnuint32 directoryEntry, pnuint32 DOSDirectoryEntry, pnuint32 nameSpace, pnuint32 parentDirEntry, pnuint32 parentDOSDirEntry ); N_EXTERN_LIBRARY( NWCCODE ) NWGetNSFileDirEntryNumber ( NWFILE_HANDLE fileHandle, nuint8 nameSpace, pnuint32 volumeNum, pnuint32 directoryEntry, pnuint32 dataStream ); #ifdef __cplusplus } #endif /* The NLM LibC x-plat libraries do not support obsolete apis */ #include #if !defined(__NOVELL_LIBC__) #ifdef INCLUDE_OBSOLETE #include "obsolete/o_file.h" #endif #endif /* !defined(__NOVELL_LIBC__) */ #include "npackoff.h" #endif