Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/planix-v0/sys/src/cmd/unix/drawterm/include/lib.h – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/* avoid name conflicts */
2
#define accept	pm_accept
3
#define listen  pm_listen
4
#define sleep	ksleep
5
#define wakeup	kwakeup
6
#ifdef strtod
7
#undef strtod
8
#endif
9
#define strtod		fmtstrtod
10
 
11
/* conflicts on some os's */
12
#define encrypt	libencrypt
13
#define decrypt libdecrypt
14
#define oserror	liboserror
15
#define clone	libclone
16
#define atexit	libatexit
17
#define log2	liblog2
18
#define log	liblog
19
#define reboot	libreboot
20
#define strtoll libstrtoll
21
#undef timeradd
22
#define timeradd	xtimeradd
23
 
24
 
25
#define	nil	((void*)0)
26
 
27
typedef unsigned char	p9_uchar;
28
typedef unsigned int	p9_uint;
29
typedef unsigned int	p9_ulong;
30
typedef int		p9_long;
31
typedef signed char	p9_schar;
32
typedef unsigned short	p9_ushort;
33
typedef unsigned int	Rune;
34
typedef unsigned int	p9_u32int;
35
typedef p9_u32int mpdigit;
36
 
37
/* make sure we don't conflict with predefined types */
38
#define schar	p9_schar
39
#define uchar	p9_uchar
40
#define ushort	p9_ushort
41
#define uint	p9_uint
42
#define u32int	p9_u32int
43
 
44
/* #define long int rather than p9_long so that "unsigned long" is valid */
45
#define long	int
46
#define ulong	p9_ulong
47
#define vlong	p9_vlong
48
#define uvlong	p9_uvlong
49
 
50
#define	nelem(x)	(sizeof(x)/sizeof((x)[0]))
51
#define SET(x)		((x)=0)
52
#define	USED(x)		if(x);else
53
 
54
enum
55
{
56
	UTFmax		= 4,		/* maximum bytes per rune */
57
	Runesync	= 0x80,		/* cannot represent part of a UTF sequence (<) */
58
	Runeself	= 0x80,		/* rune and UTF sequences are the same (<) */
59
	Runeerror	= 0xFFFD,	/* decoding error in UTF */
60
	Runemax		= 0x10FFFF,	/* 21-bit rune */
61
	Runemask	= 0x1FFFFF,	/* bits used by runes (see grep) */
62
};
63
 
64
/*
65
 * new rune routines
66
 */
67
extern	int	runetochar(char*, Rune*);
68
extern	int	chartorune(Rune*, char*);
69
extern	int	runelen(long);
70
extern	int	fullrune(char*, int);
71
 
72
extern  int	wstrtoutf(char*, Rune*, int);
73
extern  int	wstrutflen(Rune*);
74
 
75
/*
76
 * rune routines from converted str routines
77
 */
78
extern	long	utflen(char*);
79
extern	char*	utfrune(char*, long);
80
extern	char*	utfrrune(char*, long);
81
 
82
/*
83
 * Syscall data structures
84
 */
85
#define	MORDER	0x0003	/* mask for bits defining order of mounting */
86
#define	MREPL	0x0000	/* mount replaces object */
87
#define	MBEFORE	0x0001	/* mount goes before others in union directory */
88
#define	MAFTER	0x0002	/* mount goes after others in union directory */
89
#define	MCREATE	0x0004	/* permit creation in mounted directory */
90
#define	MCACHE	0x0010	/* cache some data */
91
#define	MMASK	0x0017	/* all bits on */
92
 
93
#define	OREAD	0	/* open for read */
94
#define	OWRITE	1	/* write */
95
#define	ORDWR	2	/* read and write */
96
#define	OEXEC	3	/* execute, == read but check execute permission */
97
#define	OTRUNC	16	/* or'ed in (except for exec), truncate file first */
98
#define	OCEXEC	32	/* or'ed in, close on exec */
99
#define	ORCLOSE	64	/* or'ed in, remove on close */
100
#define	OEXCL   0x1000	/* or'ed in, exclusive create */
101
 
102
#define	NCONT	0	/* continue after note */
103
#define	NDFLT	1	/* terminate after note */
104
#define	NSAVE	2	/* clear note but hold state */
105
#define	NRSTR	3	/* restore saved state */
106
 
107
#define	ERRMAX			128	/* max length of error string */
108
#define	KNAMELEN		28	/* max length of name held in kernel */
109
 
110
/* bits in Qid.type */
111
#define QTDIR		0x80		/* type bit for directories */
112
#define QTAPPEND	0x40		/* type bit for append only files */
113
#define QTEXCL		0x20		/* type bit for exclusive use files */
114
#define QTMOUNT		0x10		/* type bit for mounted channel */
115
#define QTAUTH		0x08		/* type bit for authentication file */
116
#define QTFILE		0x00		/* plain file */
117
 
118
/* bits in Dir.mode */
119
#define DMDIR		0x80000000	/* mode bit for directories */
120
#define DMAPPEND		0x40000000	/* mode bit for append only files */
121
#define DMEXCL		0x20000000	/* mode bit for exclusive use files */
122
#define DMMOUNT		0x10000000	/* mode bit for mounted channel */
123
#define DMAUTH		0x08000000	/* mode bit for authentication files */
124
#define DMREAD		0x4		/* mode bit for read permission */
125
#define DMWRITE		0x2		/* mode bit for write permission */
126
#define DMEXEC		0x1		/* mode bit for execute permission */
127
 
128
typedef struct Lock
129
{
130
#ifdef PTHREAD
131
	int init;
132
	pthread_mutex_t mutex;
133
#else
134
	long	key;
135
#endif
136
} Lock;
137
 
138
typedef struct QLock
139
{
140
	Lock	lk;
141
	struct Proc	*hold;
142
	struct Proc	*first;
143
	struct Proc	*last;
144
} QLock;
145
 
146
typedef
147
struct Qid
148
{
149
	uvlong	path;
150
	ulong	vers;
151
	uchar	type;
152
} Qid;
153
 
154
typedef
155
struct Dir {
156
	/* system-modified data */
157
	ushort	type;	/* server type */
158
	uint	dev;	/* server subtype */
159
	/* file data */
160
	Qid	qid;	/* unique id from server */
161
	ulong	mode;	/* permissions */
162
	ulong	atime;	/* last read time */
163
	ulong	mtime;	/* last write time */
164
	vlong	length;	/* file length */
165
	char	*name;	/* last element of path */
166
	char	*uid;	/* owner name */
167
	char	*gid;	/* group name */
168
	char	*muid;	/* last modifier name */
169
} Dir;
170
 
171
typedef
172
struct Waitmsg
173
{
174
	int pid;	/* of loved one */
175
	ulong time[3];	/* of loved one & descendants */
176
	char	*msg;
177
} Waitmsg;
178
 
179
/*
180
 * print routines
181
 */
182
typedef struct Fmt	Fmt;
183
struct Fmt{
184
	uchar	runes;			/* output buffer is runes or chars? */
185
	void	*start;			/* of buffer */
186
	void	*to;			/* current place in the buffer */
187
	void	*stop;			/* end of the buffer; overwritten if flush fails */
188
	int	(*flush)(Fmt *);	/* called when to == stop */
189
	void	*farg;			/* to make flush a closure */
190
	int	nfmt;			/* num chars formatted so far */
191
	va_list	args;			/* args passed to dofmt */
192
	int	r;			/* % format Rune */
193
	int	width;
194
	int	prec;
195
	ulong	flags;
196
};
197
 
198
enum{
199
	FmtWidth	= 1,
200
	FmtLeft		= FmtWidth << 1,
201
	FmtPrec		= FmtLeft << 1,
202
	FmtSharp	= FmtPrec << 1,
203
	FmtSpace	= FmtSharp << 1,
204
	FmtSign		= FmtSpace << 1,
205
	FmtZero		= FmtSign << 1,
206
	FmtUnsigned	= FmtZero << 1,
207
	FmtShort	= FmtUnsigned << 1,
208
	FmtLong		= FmtShort << 1,
209
	FmtVLong	= FmtLong << 1,
210
	FmtComma	= FmtVLong << 1,
211
	FmtByte	= FmtComma << 1,
212
 
213
	FmtFlag		= FmtByte << 1,
214
	FmtLDouble	= FmtFlag << 1
215
};
216
 
217
extern	int	print(char*, ...);
218
extern	char*	seprint(char*, char*, char*, ...);
219
extern	char*	vseprint(char*, char*, char*, va_list);
220
extern	int	snprint(char*, int, char*, ...);
221
extern	int	vsnprint(char*, int, char*, va_list);
222
extern	char*	smprint(char*, ...);
223
extern	char*	vsmprint(char*, va_list);
224
extern	int	sprint(char*, char*, ...);
225
extern	int	fprint(int, char*, ...);
226
extern	int	vfprint(int, char*, va_list);
227
 
228
extern	int	(*doquote)(int);
229
extern	int	runesprint(Rune*, char*, ...);
230
extern	int	runesnprint(Rune*, int, char*, ...);
231
extern	int	runevsnprint(Rune*, int, char*, va_list);
232
extern	Rune*	runeseprint(Rune*, Rune*, char*, ...);
233
extern	Rune*	runevseprint(Rune*, Rune*, char*, va_list);
234
extern	Rune*	runesmprint(char*, ...);
235
extern	Rune*	runevsmprint(char*, va_list);
236
 
237
extern       Rune*	runestrchr(Rune*, Rune);
238
extern       long	runestrlen(Rune*);
239
extern       Rune*	runestrstr(Rune*, Rune*);
240
 
241
extern	int	fmtfdinit(Fmt*, int, char*, int);
242
extern	int	fmtfdflush(Fmt*);
243
extern	int	fmtstrinit(Fmt*);
244
extern	int	fmtinstall(int, int (*)(Fmt*));
245
extern	char*	fmtstrflush(Fmt*);
246
extern	int	runefmtstrinit(Fmt*);
247
extern	Rune*	runefmtstrflush(Fmt*);
248
extern	int	encodefmt(Fmt*);
249
extern	int	fmtstrcpy(Fmt*, char*);
250
extern	int	fmtprint(Fmt*, char*, ...);
251
extern	int	fmtvprint(Fmt*, char*, va_list);
252
extern	void*	mallocz(ulong, int);
253
 
254
extern	uintptr	getcallerpc(void*);
255
extern	char*	cleanname(char*);
256
extern	void	sysfatal(char*, ...);
257
extern	char*	strecpy(char*, char*, char*);
258
 
259
extern	int	tokenize(char*, char**, int);
260
extern	int	getfields(char*, char**, int, int, char*);
261
extern	char*	utfecpy(char*, char*, char*);
262
extern	long	tas(long*);
263
extern	void	quotefmtinstall(void);
264
extern	int	dec64(uchar*, int, char*, int);
265
extern	int	enc64(char*, int, uchar*, int);
266
extern	int	dec32(uchar*, int, char*, int);
267
extern	int	enc32(char*, int, uchar*, int);
268
extern	int	enc16(char*, int, uchar*, int);
269
void		hnputs(void *p, unsigned short v);
270
extern	int	dofmt(Fmt*, char*);
271
extern	double	__NaN(void);
272
extern	int	__isNaN(double);
273
extern	double	strtod(const char*, char**);
274
extern	int	utfnlen(char*, long);
275
extern	double	__Inf(int);
276
extern	int	__isInf(double, int);
277
 
278
extern int (*fmtdoquote)(int);
279