enum
{
Nfd = 100, /* maximum number of open fds */
};
enum
{
Tfree, /* not used */
Tfile, /* a regular file */
Tpipe, /* a pipe */
Tstdin, /* pipe acting as an interactive stdin - notices ctl-d */
Tdir, /* a directory */
};
typedef struct File File;
struct File
{
QLock lk;
int type;
/* the following is zeroed when a File is allocated */
char *path;
int qid;
int mode; /* mode that file was opened for */
int eof; /* reached eof - but has not closed */
int offset; /* offset within file */
int ufd; /* unix file descriptor */
int pmfd;
char *dents;
int rdents;
int wdents;
int mdents;
};
RWLock pm_dotlk;
File *pm_lockfile(int, int);
File *pm_allocfile(int);
int pm_closefile(File*);
void pm_fdinit(void);
char *pm_openpath(char*);
int pm_stat2buf(struct stat*, char*, uchar*, uint);
int pm_pmfd2ufd(int);
syntax highlighted by Code2HTML, v. 0.9.1