1bf31ee39SPawel Dziepak /* 2bf31ee39SPawel Dziepak * Copyright 2012 Haiku, Inc. All rights reserved. 3bf31ee39SPawel Dziepak * Distributed under the terms of the MIT License. 4bf31ee39SPawel Dziepak * 5bf31ee39SPawel Dziepak * Authors: 6bf31ee39SPawel Dziepak * Paweł Dziepak, pdziepak@quarnos.org 7bf31ee39SPawel Dziepak */ 8bf31ee39SPawel Dziepak #ifndef INODE_H 9bf31ee39SPawel Dziepak #define INODE_H 10bf31ee39SPawel Dziepak 11bf31ee39SPawel Dziepak 12212de720SPawel Dziepak #include <sys/stat.h> 13212de720SPawel Dziepak 14bf31ee39SPawel Dziepak #include <SupportDefs.h> 15bf31ee39SPawel Dziepak 16bf31ee39SPawel Dziepak #include "Filesystem.h" 17bf31ee39SPawel Dziepak #include "NFS4Defs.h" 18bf31ee39SPawel Dziepak 19bf31ee39SPawel Dziepak 20bf31ee39SPawel Dziepak class Inode { 21bf31ee39SPawel Dziepak public: 22bf31ee39SPawel Dziepak Inode(Filesystem* fs, const Filehandle &fh); 23bf31ee39SPawel Dziepak 24bf31ee39SPawel Dziepak inline ino_t ID() const; 25d38e98d8SPawel Dziepak inline mode_t Type() const; 26bf31ee39SPawel Dziepak 27212de720SPawel Dziepak status_t Stat(struct stat* st); 28*821f13b0SPawel Dziepak status_t OpenDir(uint64* cookie); 29212de720SPawel Dziepak 30bf31ee39SPawel Dziepak private: 31bf31ee39SPawel Dziepak uint64 fFileId; 32d38e98d8SPawel Dziepak uint32 fType; 33bf31ee39SPawel Dziepak 34bf31ee39SPawel Dziepak Filehandle fHandle; 35bf31ee39SPawel Dziepak Filesystem* fFilesystem; 36bf31ee39SPawel Dziepak }; 37bf31ee39SPawel Dziepak 38bf31ee39SPawel Dziepak 39bf31ee39SPawel Dziepak inline ino_t 40bf31ee39SPawel Dziepak Inode::ID() const 41bf31ee39SPawel Dziepak { 42bf31ee39SPawel Dziepak if (sizeof(ino_t) >= sizeof(uint64)) 43bf31ee39SPawel Dziepak return fFileId; 44bf31ee39SPawel Dziepak else 45bf31ee39SPawel Dziepak return (ino_t)fFileId ^ (fFileId >> 46bf31ee39SPawel Dziepak (sizeof(uint64) - sizeof(ino_t)) * 8); 47bf31ee39SPawel Dziepak } 48bf31ee39SPawel Dziepak 49bf31ee39SPawel Dziepak 50d38e98d8SPawel Dziepak inline mode_t 51d38e98d8SPawel Dziepak Inode::Type() const 52d38e98d8SPawel Dziepak { 53d38e98d8SPawel Dziepak return sNFSFileTypeToHaiku[fType]; 54d38e98d8SPawel Dziepak } 55d38e98d8SPawel Dziepak 56d38e98d8SPawel Dziepak 57bf31ee39SPawel Dziepak #endif // INODE_H 58bf31ee39SPawel Dziepak 59