]> git.lizzy.rs Git - plan9front.git/blob - sys/src/ape/lib/9/libc.h
ape: move compatibility libc.h to lib9 directory and incooperate needed functions...
[plan9front.git] / sys / src / ape / lib / 9 / libc.h
1 #define _LOCK_EXTENSION
2 #define _QLOCK_EXTENSION
3 #define _BSD_EXTENSION
4 #include <stdint.h>
5 #include <sys/types.h>
6 #include <lock.h>
7 #include <qlock.h>
8 #include <lib9.h>
9 #include <stdlib.h>
10 #include <string.h>
11 #include <bsd.h>
12 #include <unistd.h>
13 #include <fcntl.h>
14 #include <assert.h>
15 #include <utf.h>
16 #include <fmt.h>
17 #include <signal.h>
18
19 #define nelem(x)        (sizeof(x)/sizeof((x)[0]))
20
21 typedef
22 struct Qid
23 {
24         uvlong  path;
25         ulong   vers;
26         uchar   type;
27 } Qid;
28
29 typedef
30 struct Dir {
31         /* system-modified data */
32         ushort  type;   /* server type */
33         uint    dev;    /* server subtype */
34         /* file data */
35         Qid     qid;    /* unique id from server */
36         ulong   mode;   /* permissions */
37         ulong   atime;  /* last read time */
38         ulong   mtime;  /* last write time */
39         vlong   length; /* file length: see <u.h> */
40         char    *name;  /* last element of path */
41         char    *uid;   /* owner name */
42         char    *gid;   /* group name */
43         char    *muid;  /* last modifier name */
44 } Dir;
45
46 uint    _convM2D(uchar*, uint, Dir*, char*);
47 uint    _convD2M(Dir*, uchar*, uint);
48 Dir     *_dirstat(char*);
49 int     _dirwstat(char*, Dir*);
50 Dir     *_dirfstat(int);
51 int     _dirfwstat(int, Dir*);
52 long    _dirread(int, Dir**);
53 long _dirreadall(int, Dir**);
54 void _nulldir(Dir*);
55 uint _sizeD2M(Dir*);
56
57 typedef
58 struct Waitmsg
59 {
60         int pid;        /* of loved one */
61         unsigned long time[3];  /* of loved one & descendants */
62         char    *msg;
63 } Waitmsg;
64
65
66 extern  int     _AWAIT(char*, int);
67 extern  int     _ALARM(unsigned long);
68 extern  int     _BIND(const char*, const char*, int);
69 extern  int     _CHDIR(const char*);
70 extern  int     _CLOSE(int);
71 extern  int     _CREATE(char*, int, unsigned long);
72 extern  int     _DUP(int, int);
73 extern  int     _ERRSTR(char*, unsigned int);
74 extern  int     _EXEC(char*, char*[]);
75 extern  void    _EXITS(char *);
76 extern  int     _FD2PATH(int, char*, int);
77 extern  int     _FAUTH(int, char*);
78 extern  int     _FSESSION(int, char*, int);
79 extern  int     _FSTAT(int, unsigned char*, int);
80 extern  int     _FWSTAT(int, unsigned char*, int);
81 extern  int     _MOUNT(int, int, const char*, int, const char*);
82 extern  int     _NOTED(int);
83 extern  int     _NOTIFY(int(*)(void*, char*));
84 extern  int     _OPEN(const char*, int);
85 extern  int     _PIPE(int*);
86 extern  long    _PREAD(int, void*, long, long long);
87 extern  long    _PWRITE(int, void*, long, long long);
88 extern  long    _READ(int, void*, long);
89 extern  int     _REMOVE(const char*);
90 extern  void*   _RENDEZVOUS(void*, void*);
91 extern  int     _RFORK(int);
92 extern  void*   _SEGATTACH(int, char*, void*, unsigned long);
93 extern  void*   _SEGBRK(void*, void*);
94 extern  int     _SEGDETACH(void*);
95 extern  int     _SEGFLUSH(void*, unsigned long);
96 extern  int     _SEGFREE(void*, unsigned long);
97 extern  long long       _SEEK(int, long long, int);
98 extern  int     _SLEEP(long);
99 extern  int     _STAT(const char*, unsigned char*, int);
100 extern  Waitmsg*        _WAIT(void);
101 extern  long    _WRITE(int, const void*, long);
102 extern  int     _WSTAT(const char*, unsigned char*, int);
103 extern  void*   _MALLOCZ(int, int);
104 extern  int     _WERRSTR(char*, ...);
105 extern  long    _READN(int, void*, long);
106 extern  int     _IOUNIT(int);
107 extern  vlong   _NSEC(void);
108
109 #define dirstat _dirstat
110 #define dirfstat _dirfstat
111
112 #define OREAD 0
113 #define OWRITE 1
114 #define ORDWR 2
115 #define OCEXEC 32
116
117 #define AREAD 4
118 #define AWRITE 2
119 #define AEXEC 1
120 #define AEXIST 0
121
122 #define _exits(s) _exit(s && *(char*)s ? 1 : 0)
123 #define exits(s) exit(s && *(char*)s ? 1 : 0)
124
125 #define create(file, omode, perm) open(file, (omode) |O_CREAT | O_TRUNC, perm)
126 #define seek(fd, off, dir) lseek(fd, off, dir)
127
128 #define readn _READN
129 #define pread _PREAD
130 #define pwrite _PWRITE
131 #define mallocz _MALLOCZ
132 #define nsec    _NSEC
133 #define iounit  _IOUNIT
134
135 #define postnote(who,pid,note)  kill(pid,SIGTERM)
136 #define atnotify(func,in)
137
138 #define ERRMAX 128
139
140 extern  void            setmalloctag(void*, uintptr_t);
141 extern  void            setrealloctag(void*, uintptr_t);
142 extern  uintptr_t       getcallerpc(void*);
143
144 extern int  dec16(uchar *, int, char *, int);
145 extern int  enc16(char *, int, uchar *, int);
146 extern int  dec32(uchar *, int, char *, int);
147 extern int  enc32(char *, int, uchar *, int);
148 extern int  dec64(uchar *, int, char *, int);
149 extern int  enc64(char *, int, uchar *, int);
150
151 extern  int tokenize(char*, char**, int);
152 extern void sysfatal(char*, ...);
153 extern  ulong truerand(void); /* uses /dev/random */