#ifndef __DFS_H__
#define __DFS_H__

#define DFS_DIRECTORY    0
#define DFS_REGULAR_FILE 1

#define DFS_BLOCK_SIZE   4096

typedef struct __DFS_Stat_t {
    int type;   // DFS_DIRECTORY or DFS_REGULAR_FILE
    int size;   // bytes
    // note: no permissions, access times, etc.
} DFS_Stat_t;

typedef struct __DFS_DirEnt_t {
    char name[28];  // up to 28 bytes of name in directory (including \0)
    int  inum;      // inode number of entry (-1 means entry not used)
} DFS_DirEnt_t;


int DFS_Init(char *hostname, int port);
int DFS_Lookup(int pinum, char *name);
int DFS_Stat(int inum, DFS_Stat_t *m);
int DFS_Write(int inum, char *buffer, int block);
int DFS_Read(int inum, char *buffer, int block);
int DFS_Creat(int pinum, int type, char *name);
int DFS_Unlink(int pinum, char *name);
int DFS_Shutdown();

#endif
