123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- #define _LOCK_EXTENSION
- #define _QLOCK_EXTENSION
- #define _BSD_EXTENSION
- #include <sys/types.h>
- #include <lock.h>
- #include <qlock.h>
- #include <lib9.h>
- #include <stdlib.h>
- #include <string.h>
- #include <bsd.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <assert.h>
- #include <utf.h>
- #include <fmt.h>
- #include <signal.h>
- typedef
- struct Qid
- {
- uvlong path;
- ulong vers;
- uchar type;
- } Qid;
- typedef
- struct Dir {
- /* system-modified data */
- ushort type; /* server type */
- uint dev; /* server subtype */
- /* file data */
- Qid qid; /* unique id from server */
- ulong mode; /* permissions */
- ulong atime; /* last read time */
- ulong mtime; /* last write time */
- vlong length; /* file length: see <u.h> */
- char *name; /* last element of path */
- char *uid; /* owner name */
- char *gid; /* group name */
- char *muid; /* last modifier name */
- } Dir;
- uint _convM2D(uchar*, uint, Dir*, char*);
- uint _convD2M(Dir*, uchar*, uint);
- Dir *_dirstat(char*);
- int _dirwstat(char*, Dir*);
- Dir *_dirfstat(int);
- int _dirfwstat(int, Dir*);
- long _dirread(int, Dir**);
- long _dirreadall(int, Dir**);
- void _nulldir(Dir*);
- uint _sizeD2M(Dir*);
- typedef
- struct Waitmsg
- {
- int pid; /* of loved one */
- unsigned long time[3]; /* of loved one & descendants */
- char *msg;
- } Waitmsg;
- extern int _AWAIT(char*, int);
- extern int _ALARM(unsigned long);
- extern int _BIND(const char*, const char*, int);
- extern int _CHDIR(const char*);
- extern int _CLOSE(int);
- extern int _CREATE(char*, int, unsigned long);
- extern int _DUP(int, int);
- extern int _ERRSTR(char*, unsigned int);
- extern int _EXEC(char*, char*[]);
- extern void _EXITS(char *);
- extern int _FD2PATH(int, char*, int);
- extern int _FAUTH(int, char*);
- extern int _FSESSION(int, char*, int);
- extern int _FSTAT(int, unsigned char*, int);
- extern int _FWSTAT(int, unsigned char*, int);
- extern int _MOUNT(int, int, const char*, int, const char*);
- extern int _NOTED(int);
- extern int _NOTIFY(int(*)(void*, char*));
- extern int _OPEN(const char*, int);
- extern int _PIPE(int*);
- extern long _PREAD(int, void*, long, long long);
- extern long _PWRITE(int, void*, long, long long);
- extern long _READ(int, void*, long);
- extern int _REMOVE(const char*);
- extern int _RENDEZVOUS(unsigned long, unsigned long);
- extern int _RFORK(int);
- extern int _SEGATTACH(int, char*, void*, unsigned long);
- extern int _SEGBRK(void*, void*);
- extern int _SEGDETACH(void*);
- extern int _SEGFLUSH(void*, unsigned long);
- extern int _SEGFREE(void*, unsigned long);
- extern long long _SEEK(int, long long, int);
- extern int _SLEEP(long);
- extern int _STAT(const char*, unsigned char*, int);
- extern Waitmsg* _WAIT(void);
- extern long _WRITE(int, const void*, long);
- extern int _WSTAT(const char*, unsigned char*, int);
- extern void *_MALLOCZ(int, int);
- extern int _WERRSTR(char*, ...);
- extern long _READN(int, void*, long);
- extern int _IOUNIT(int);
- #define dirstat _dirstat
- #define dirfstat _dirfstat
- #define OREAD 0
- #define OWRITE 1
- #define ORDWR 2
- #define OCEXEC 32
- #define AREAD 4
- #define AWRITE 2
- #define AEXEC 1
- #define AEXIST 0
- #define open _OPEN
- #define close _CLOSE
- #define read _READ
- #define write _WRITE
- #define _exits(s) _exit(s && *(char*)s ? 1 : 0)
- #define exits(s) exit(s && *(char*)s ? 1 : 0)
- #define create _CREATE
- #define pread _PREAD
- #define readn _READN
- #define mallocz _MALLOCZ
- #define iounit _IOUNIT
- /* assume being called as in event.c */
- #define postnote(x, pid, msg) kill(pid, SIGTERM)
- #define atnotify(x, y) signal(SIGTERM, ekill)
- #define ERRMAX 128
|