file.h
// Copyright (c) 2002 David Muse
// See the COPYING file for more information.
#ifndef RUDIMENTS_FILE_H
#define RUDIMENTS_FILE_H
#include <rudiments/private/fileincludes.h>
class fileprivate;
class RUDIMENTS_DLLSPEC file : public filedescriptor {
public:
file();
file(const file &f);
file &operator=(const file &f);
virtual ~file();
bool open(const char *name, int32_t flags);
bool open(const char *name, int32_t flags, mode_t perms);
bool create(const char *name, mode_t perms);
char *getContents();
ssize_t getContents(unsigned char *buffer, size_t buffersize);
bool truncate() const;
bool truncate(off64_t length) const;
off64_t getCurrentPosition() const;
off64_t setPositionRelativeToBeginning(off64_t offset) const;
off64_t setPositionRelativeToCurrent(off64_t offset) const;
off64_t setPositionRelativeToEnd(off64_t offset) const;
bool tryLockFile(int16_t type) const;
bool lockFile(int16_t type) const;
bool checkLockFile(int16_t type,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool unlockFile() const;
bool tryLockRegion(int16_t type, off64_t start,
off64_t len) const;
bool lockRegion(int16_t type, off64_t start,
off64_t len) const;
bool checkLockRegion(int16_t type,
off64_t start,
off64_t len,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool unlockRegion(off64_t start, off64_t len) const;
bool tryLockFromCurrent(int16_t type, off64_t len) const;
bool tryLockFromCurrent(int16_t type, off64_t start,
off64_t len) const;
bool lockFromCurrent(int16_t type, off64_t len) const;
bool lockFromCurrent(int16_t type, off64_t start,
off64_t len) const;
bool checkLockFromCurrent(int16_t type, off64_t len,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool checkLockFromCurrent(int16_t type, off64_t start,
off64_t len,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool unlockFromCurrent(off64_t len) const;
bool unlockFromCurrent(off64_t start, off64_t len) const;
bool tryLockFromEnd(int16_t type, off64_t len) const;
bool tryLockFromEnd(int16_t type, off64_t start,
off64_t len) const;
bool lockFromEnd(int16_t type, off64_t len) const;
bool lockFromEnd(int16_t type, off64_t start,
off64_t len) const;
bool checkLockFromEnd(int16_t type, off64_t len,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool checkLockFromEnd(int16_t type, off64_t start,
off64_t len,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool unlockFromEnd(off64_t len) const;
bool unlockFromEnd(off64_t start, off64_t len) const;
bool tryLockRemainder(int16_t type, off64_t start) const;
bool lockRemainder(int16_t type, off64_t start) const;
bool checkLockRemainder(int16_t type, off64_t start,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool unlockRemainder(off64_t start) const;
bool tryLockRemainderFromCurrent(int16_t type) const;
bool tryLockRemainderFromCurrent(int16_t type,
off64_t start) const;
bool lockRemainderFromCurrent(int16_t type) const;
bool lockRemainderFromCurrent(int16_t type,
off64_t start) const;
bool checkLockRemainderFromCurrent(int16_t type,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool checkLockRemainderFromCurrent(int16_t type,
off64_t start,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool unlockRemainderFromCurrent() const;
bool unlockRemainderFromCurrent(off64_t start) const;
bool tryLockRemainderFromEnd(int16_t type) const;
bool tryLockRemainderFromEnd(int16_t type,
off64_t start) const;
bool lockRemainderFromEnd(int16_t type) const;
bool lockRemainderFromEnd(int16_t type, off64_t start) const;
bool checkLockRemainderFromEnd(int16_t type,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool checkLockRemainderFromEnd(int16_t type,
off64_t start,
int16_t *conftype,
int16_t *confwhence,
off64_t *confstart,
off64_t *conflen) const;
bool unlockRemainderFromEnd() const;
bool unlockRemainderFromEnd(off64_t start) const;
bool sequentialAccess(off64_t start, size_t len) const;
bool randomAccess(off64_t start, size_t len) const;
bool onlyOnce(off64_t start, size_t len) const;
bool willNeed(off64_t start, size_t len) const;
bool wontNeed(off64_t start, size_t len) const;
bool normalAccess(off64_t start, size_t len) const;
bool reserve(off64_t start, size_t len) const;
bool sync() const;
bool dataSync() const;
void dontGetCurrentPropertiesOnOpen();
void getCurrentPropertiesOnOpen();
bool getCurrentProperties();
mode_t getPermissions() const;
uid_t getOwnerUserId() const;
gid_t getOwnerGroupId() const;
off64_t getSize() const;
blksize_t getBlockSize() const;
blkcnt_t getBlockCount() const;
int32_t isSocket() const;
int32_t isSymbolicLink() const;
int32_t isRegularFile() const;
int32_t isBlockDevice() const;
int32_t isDirectory() const;
int32_t isCharacterDevice() const;
int32_t isFifo() const;
time_t getLastAccessTime() const;
time_t getLastModificationTime() const;
time_t getLastChangeTime() const;
dev_t getDevice() const;
dev_t getDeviceType() const;
uint64_t getInode() const;
nlink_t getNumberOfHardLinks() const;
bool changeOwner(const char *newuser,
const char *newgroup) const;
bool changeOwner(uid_t uid, gid_t gid) const;
bool canChangeOwner() const;
int64_t maxLinks() const;
const char * const *listAttributes() const;
bool getAttribute(const char *name, uint16_t *number) const;
bool getAttribute(const char *name, uint32_t *number) const;
bool getAttribute(const char *name, uint64_t *number) const;
bool getAttribute(const char *name, int16_t *number) const;
bool getAttribute(const char *name, int32_t *number) const;
bool getAttribute(const char *name, int64_t *number) const;
bool getAttribute(const char *name, float *number) const;
bool getAttribute(const char *name, double *number) const;
bool getAttribute(const char *name,
unsigned char *character) const;
bool getAttribute(const char *name, char *character) const;
bool getAttribute(const char *name, bool *value) const;
bool getAttribute(const char *name,
unsigned char **string) const;
bool getAttribute(const char *name,
char **string) const;
bool getAttribute(const char *name,
unsigned char **string,
size_t *size) const;
bool getAttribute(const char *name,
char **string, size_t *size) const;
bool getAttribute(const char *name,
void **buffer, size_t *size) const;
bool getAttribute(const char *name,
void *buffer, size_t size) const;
bool createAttribute(const char *name,
uint16_t number) const;
bool createAttribute(const char *name,
uint32_t number) const;
bool createAttribute(const char *name,
uint64_t number) const;
bool createAttribute(const char *name, int16_t number) const;
bool createAttribute(const char *name, int32_t number) const;
bool createAttribute(const char *name, int64_t number) const;
bool createAttribute(const char *name, float number) const;
bool createAttribute(const char *name, double number) const;
bool createAttribute(const char *name,
unsigned char character) const;
bool createAttribute(const char *name, char character) const;
bool createAttribute(const char *name, bool value) const;
bool createAttribute(const char *name,
const unsigned char *string) const;
bool createAttribute(const char *name,
const char *string) const;
bool createAttribute(const char *name,
const unsigned char *string,
size_t size) const;
bool createAttribute(const char *name,
const char *string, size_t size) const;
bool createAttribute(const char *name,
const void *buffer, size_t size) const;
bool replaceAttribute(const char *name,
uint16_t number) const;
bool replaceAttribute(const char *name,
uint32_t number) const;
bool replaceAttribute(const char *name,
uint64_t number) const;
bool replaceAttribute(const char *name,
int16_t number) const;
bool replaceAttribute(const char *name,
int32_t number) const;
bool replaceAttribute(const char *name,
int64_t number) const;
bool replaceAttribute(const char *name, float number) const;
bool replaceAttribute(const char *name, double number) const;
bool replaceAttribute(const char *name,
unsigned char character) const;
bool replaceAttribute(const char *name,
char character) const;
bool replaceAttribute(const char *name, bool value) const;
bool replaceAttribute(const char *name,
const unsigned char *string) const;
bool replaceAttribute(const char *name,
const char *string) const;
bool replaceAttribute(const char *name,
const unsigned char *string,
size_t size) const;
bool replaceAttribute(const char *name,
const char *string,
size_t size) const;
bool replaceAttribute(const char *name,
const void *buffer,
size_t size) const;
bool setAttribute(const char *name,
uint16_t number) const;
bool setAttribute(const char *name,
uint32_t number) const;
bool setAttribute(const char *name,
uint64_t number) const;
bool setAttribute(const char *name, int16_t number) const;
bool setAttribute(const char *name, int32_t number) const;
bool setAttribute(const char *name, int64_t number) const;
bool setAttribute(const char *name, float number) const;
bool setAttribute(const char *name, double number) const;
bool setAttribute(const char *name,
unsigned char character) const;
bool setAttribute(const char *name, char character) const;
bool setAttribute(const char *name, bool value) const;
bool setAttribute(const char *name,
const unsigned char *string) const;
bool setAttribute(const char *name,
const char *string) const;
bool setAttribute(const char *name,
const unsigned char *string,
size_t size) const;
bool setAttribute(const char *name,
const char *string,
size_t size) const;
bool setAttribute(const char *name,
const void *buffer,
size_t size) const;
bool removeAttribute(const char *name) const;
void *getInternalFileStatisticsStructure();
static bool createFile(const char *name, mode_t perms);
static bool createFifo(const char *filename, mode_t perms);
static bool createPipe(filedescriptor *readfd,
filedescriptor *writefd);
static int32_t createTemporaryFile(char *templatefilename);
static bool createHardLink(const char *oldpath,
const char *newpath);
static bool createSymbolicLink(const char *oldpath,
const char *newpath);
static char *resolveSymbolicLink(const char *filename);
static bool rename(const char *oldpath,
const char *newpath);
static bool remove(const char *filename);
static bool truncate(const char *filename);
static bool truncate(const char *filename, off64_t length);
static char *getContents(const char *name);
static ssize_t getContents(const char *name,
unsigned char *buffer,
size_t buffersize);
static bool exists(const char *filename);
static bool readable(const char *filename);
static bool writeable(const char *filename);
static bool executable(const char *filename);
static bool accessible(const char *filename, int32_t mode);
static bool getLastChangeTime(const char *filename,
time_t *ctime);
static bool changeOwner(const char *filename,
const char *newuser,
const char *newgroup);
static bool changeOwner(const char *filename,
uid_t uid, gid_t gid);
static bool canChangeOwner(const char *filename);
static bool setLastAccessTime(const char *filename,
time_t lastaccesstime);
static bool setLastModificationTime(const char *filename,
time_t lastmodtime);
static bool setLastAccessAndModificationTimes(
const char *filename,
time_t lastaccesstime,
time_t lastmodtime);
static bool setLastAccessAndModificationTimes(
const char *filename);
static char *dirname(const char *filename);
static char *basename(const char *filename);
static char *basename(const char *filename,
const char *suffix);
static char *eightDotThree(const char *filename);
static key_t generateKey(const char *filename, int32_t id);
static int64_t maxLinks(const char *filename);
#include <rudiments/private/file.h>
};
#endif