198 lines
6.3 KiB
C++
Executable File
198 lines
6.3 KiB
C++
Executable File
/*
|
|
* FILEATTR.H
|
|
*
|
|
* Header file for ArchiveLib 2.0
|
|
*
|
|
* Copyright (c) 1994 Greenleaf Software, Inc.
|
|
* All Rights Reserved
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* This file contains the class definition for ALFileAttributes.
|
|
*
|
|
* CLASS DEFINITIONS:
|
|
*
|
|
* ALFileAttributes
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
* February 14, 1996 2.0A : New release
|
|
*/
|
|
|
|
#ifndef _FILEATTR_H
|
|
#define _FILEATTR_H
|
|
|
|
/*
|
|
* class ALFileAttributes
|
|
*
|
|
* DESCRIPTION
|
|
*
|
|
* This class is used to carry around file attributes. Its only
|
|
* real job at this time is to sit in the ALStorage class
|
|
* and then produce packed attributes for inclusion in an archive,
|
|
* and vice versa. We will need to add some additional members
|
|
* here for searching archives based on certain attribute criteria.
|
|
*
|
|
* Note that most of the classes in Archive library deliberately
|
|
* withhold the copy constructor and assignment operator. In this case,
|
|
* however, the compiler is able to generate an adequate version of
|
|
* these functions, so they aren't disabled.
|
|
*
|
|
* DATA MEMBERS
|
|
*
|
|
* miReadOnly : The read only file attribute bit, set when the file
|
|
* is opened or when the directory is read from the archive.
|
|
*
|
|
* miSystem : The system file attribute bit.
|
|
*
|
|
* miHidden : The hidden file attribute bit.
|
|
*
|
|
* miArchive : The archive (backup) file attribute bit.
|
|
*
|
|
* miDirectory : The directory file attribute bit.
|
|
*
|
|
* MEMBER FUNCTIONS
|
|
*
|
|
* ALFileAttributes() : The constructor, doesn't have to do much.
|
|
* ~ALFileAttributes() : The destructor, doesn't have to do anything.
|
|
* operator new( size_t size ) : Memory allocation operator, only used if
|
|
* the library is inside a DLL.
|
|
* PackedAttributes() : Returns the bits packed into an integer
|
|
* in ArchiveLib proprietary format.
|
|
* SetFromPackedAttributes() : Sets the member bits using as input a
|
|
* short int in proprietary ArchiveLib format.
|
|
*
|
|
* ReadOnly() : Is the Read Only attribute bit set?
|
|
* System() : Is the system attribute bit set?
|
|
* Hidden() : Is the Hidden attribute set?
|
|
* Archive() : Is the Archive (backup) bit set?
|
|
* Directory() : Is the directory attribute bit set?
|
|
*
|
|
* REVISION HISTORY
|
|
*
|
|
* May 26, 1994 1.0A : First release
|
|
*
|
|
* February 14, 1996 2.0A : New release
|
|
*/
|
|
|
|
#if defined( __cplusplus )
|
|
|
|
class AL_CLASS_TYPE ALFileAttributes { /* Tag public class */
|
|
/*
|
|
* Constructors, destructors, declarations, and friends
|
|
*/
|
|
friend class AL_CLASS_TYPE ALFile;
|
|
|
|
public :
|
|
AL_PROTO ALFileAttributes();
|
|
AL_PROTO ~ALFileAttributes();
|
|
#if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL )
|
|
void AL_DLL_FAR * AL_PROTO operator new( size_t size );
|
|
#endif
|
|
/*
|
|
* Member functions
|
|
*/
|
|
public :
|
|
short unsigned int AL_PROTO PackedAttributes();
|
|
void AL_PROTO SetFromPackedAttributes( short int attributes );
|
|
/*
|
|
* Access functions, all inline. These provide readonly access to the
|
|
* individual bits. I need to add some support for C programmers for
|
|
* these functions as well.
|
|
*/
|
|
int AL_PROTO ReadOnly();
|
|
int AL_PROTO System();
|
|
int AL_PROTO Hidden();
|
|
int AL_PROTO Archive();
|
|
int AL_PROTO Directory();
|
|
/*
|
|
* All of these guys are going to be undocumented for the time being.
|
|
* If we ever add support for UNIX, these additional bits might
|
|
* be useful.
|
|
*/
|
|
int AL_PROTO UnixBitsPresent();
|
|
int AL_PROTO UserRead();
|
|
int AL_PROTO UserWrite();
|
|
int AL_PROTO UserExecute();
|
|
int AL_PROTO OtherRead();
|
|
int AL_PROTO OtherWrite();
|
|
int AL_PROTO OtherExecute();
|
|
int AL_PROTO GroupRead();
|
|
int AL_PROTO GroupWrite();
|
|
int AL_PROTO GroupExecute();
|
|
/*
|
|
* Data members
|
|
*/
|
|
protected :
|
|
/*
|
|
* The DOS attributes.
|
|
*/
|
|
int miReadOnly : 1;
|
|
int miSystem : 1;
|
|
int miHidden : 1;
|
|
int miArchive : 1;
|
|
/*
|
|
* Additional attributes that might be used for UNIX files. The
|
|
* DOS bits are applied to the UNIX user settings.
|
|
*/
|
|
int miUnixBitsPresent : 1;
|
|
int miUserRead : 1;
|
|
int miUserWrite : 1;
|
|
int miUserExecute : 1;
|
|
int miOtherRead : 1;
|
|
int miOtherWrite : 1;
|
|
int miOtherExecute : 1;
|
|
int miGroupRead : 1;
|
|
int miGroupWrite : 1;
|
|
int miGroupExecute : 1;
|
|
/*
|
|
* The directory attribute is common to UNIX and DOS
|
|
*/
|
|
int miDirectory : 1;
|
|
};
|
|
|
|
#include "fileattr.inl"
|
|
|
|
#else /* #if defined( __cplusplus ) ... */
|
|
|
|
AL_LINKAGE int AL_FUNCTION ALStorageReadOnly( hALStorage storage );
|
|
AL_LINKAGE int AL_FUNCTION ALStorageSystem( hALStorage storage );
|
|
AL_LINKAGE int AL_FUNCTION ALStorageHidden( hALStorage storage );
|
|
AL_LINKAGE int AL_FUNCTION ALStorageArchive( hALStorage storage );
|
|
AL_LINKAGE int AL_FUNCTION ALStorageDirectory( hALStorage storage );
|
|
AL_LINKAGE void AL_FUNCTION
|
|
ALStorageSetFromPackedAtts( hALStorage this_object,
|
|
unsigned short int packed_attributes );
|
|
AL_LINKAGE unsigned short int AL_FUNCTION
|
|
ALStoragePackedAttributes( hALStorage this_object );
|
|
|
|
#endif /* #if defined( __cplusplus ) ... #else ... */
|
|
|
|
/*
|
|
* Masks for accessing this stuff via the packed attributes byte.
|
|
* This isn't a nested enum, mostly because it cuts back on typing.
|
|
* This might change later.
|
|
*/
|
|
enum ALPackedAttributeBits { /* Tag public type */
|
|
ATTR_READ_ONLY = 1,
|
|
ATTR_SYSTEM = 2,
|
|
ATTR_HIDDEN = 4,
|
|
ATTR_ARCHIVE = 8,
|
|
ATTR_UNIX_BITS_PRESENT = 16,
|
|
ATTR_USER_READ = 32,
|
|
ATTR_USER_WRITE = 64,
|
|
ATTR_USER_EXECUTE = 128,
|
|
ATTR_OTHER_READ = 256,
|
|
ATTR_OTHER_WRITE = 512,
|
|
ATTR_OTHER_EXECUTE = 1024,
|
|
ATTR_GROUP_READ = 2048,
|
|
ATTR_GROUP_WRITE = 4096,
|
|
ATTR_GROUP_EXECUTE = 8192,
|
|
ATTR_DIRECTORY = 16384,
|
|
ATTR_LABEL = (int) 0x8000
|
|
};
|
|
|
|
#endif /* #ifndef _FILEATTR_H */
|