// Copyright (c) 2003 David Muse
// See the file COPYING for more information
#include <rudiments/groupentry.h>
#include <rudiments/passwdentry.h>
#include <rudiments/file.h>
#include <rudiments/permissions.h>
#include <rudiments/datetime.h>
#include <stdio.h>
#ifdef RUDIMENTS_NAMESPACE
using namespace rudiments;
#endif
int main(int argc, const char **argv) {
// remove the file (in case it already exists)
file::remove("testfile");
// create a new file called "testfile" with rw-rw---- permissions
// and initial contents "hello"
file fl;
fl.create("testfile",permissions::evalPermString("rw-rw----"),"hello");
printf("testfile:\n");
// check for existence
if (file::exists("testfile")) {
printf(" exists\n");
} else {
printf(" does not exist\n");
}
// display the permissions of the file
mode_t mode=fl.getPermissions();
printf(" permissions: %s\n",permissions::evalPermOctal(mode));
// display the name of the user that owns the file
uid_t uid=fl.getOwnerUserId();
char *username;
passwdentry::getName(uid,&username);
printf(" user : %s\n",username);
delete[] username;
// display the name of the group that owns the file
gid_t gid=fl.getOwnerGroupId();
char *groupname;
groupentry::getName(gid,&groupname);
printf(" group : %s\n",groupname);
delete[] groupname;
// display the size of the file in bytes
off64_t size=fl.getSize();
printf(" size : %ld\n",size);
// display the size of the file in blocks
blkcnt_t blocks=fl.getBlockCount();
printf(" blocks : %ld\n",blocks);
// display the file type
printf(" is a socket: %d\n",fl.isSocket());
printf(" is a symlink: %d\n",fl.isSymbolicLink());
printf(" is a regular file: %d\n",fl.isRegularFile());
printf(" is a block device: %d\n",fl.isBlockDevice());
printf(" is a directory: %d\n",fl.isDirectory());
printf(" is a character device: %d\n",fl.isCharacterDevice());
printf(" is a fifo: %d\n",fl.isFifo());
// display the last time the file was accessed
time_t atime=fl.getLastAccessTime();
char *atimestr=datetime::getString(atime);
printf(" last access : %s\n",atimestr);
delete[] atimestr;
// display the last time the file was modified
time_t mtime=fl.getLastModificationTime();
char *mtimestr=datetime::getString(mtime);
printf(" last modification: %s\n",mtimestr);
delete[] mtimestr;
// display the last time the file was changed
time_t ctime=fl.getLastChangeTime();
char *ctimestr=datetime::getString(ctime);
printf(" last change : %s\n",ctimestr);
delete[] ctimestr;
// display the device that the file resides on
dev_t dev=fl.getDevice();
printf(" device : %d\n",dev);
// display the type of the device that the file resides on
dev_t devtype=fl.getDeviceType();
printf(" device type : %d\n",devtype);
// display the file's first inode
ino_t inode=fl.getInode();
printf(" inode : %d\n",inode);
// display the number of hard links to the file
nlink_t nlink=fl.getNumberOfHardLinks();
printf(" hard links : %ld\n",nlink);
char *path="/usr/local/firstworks/include/rudiments/file.h";
char *dirname=file::dirname(path);
printf("dirname(%s)=%s\n",path,dirname);
delete[] dirname;
char *basename=file::basename(path);
printf("basename(%s)=%s\n",path,basename);
delete[] basename;
basename=file::basename(path,".h");
printf("basename(%s,\".h\")=%s\n",path,basename);
delete[] basename;
printf("key=%d\n",file::generateKey("/",1));
printf("maxLinks(%s)=%d\n",path,file::maxLinks(path));
printf("canChangeOwner(%s)=%d\n",path,file::canChangeOwner(path));
}
syntax highlighted by Code2HTML, v. 0.9.1