enum
{
- UTFmax = 3, /* maximum bytes per rune */
+ UTFmax = 4, /* maximum bytes per rune */
Runesync = 0x80, /* cannot represent part of a UTF sequence (<) */
Runeself = 0x80, /* rune and UTF sequences are the same (<) */
Runeerror = 0xFFFD, /* decoding error in UTF */
+ Runemax = 0x10FFFF, /* 21 bit rune */
+ Runemask = 0x1FFFFF, /* bits used by runes (see grep) */
};
/*
extern void* mallocalign(ulong, ulong, long, ulong);
extern void* calloc(ulong, ulong);
extern void* realloc(void*, ulong);
-extern void setmalloctag(void*, ulong);
-extern void setrealloctag(void*, ulong);
-extern ulong getmalloctag(void*);
-extern ulong getrealloctag(void*);
+extern void setmalloctag(void*, uintptr);
+extern void setrealloctag(void*, uintptr);
+extern uintptr getmalloctag(void*);
+extern uintptr getrealloctag(void*);
extern void* malloctopoolblock(void*);
/*
#pragma varargck argpos sprint 2
#pragma varargck type "lld" vlong
+#pragma varargck type "llo" vlong
#pragma varargck type "llx" vlong
+#pragma varargck type "llb" vlong
#pragma varargck type "lld" uvlong
+#pragma varargck type "llo" uvlong
#pragma varargck type "llx" uvlong
+#pragma varargck type "llb" uvlong
#pragma varargck type "ld" long
+#pragma varargck type "lo" long
#pragma varargck type "lx" long
#pragma varargck type "lb" long
#pragma varargck type "ld" ulong
+#pragma varargck type "lo" ulong
#pragma varargck type "lx" ulong
#pragma varargck type "lb" ulong
+#pragma varargck type "zd" intptr
+#pragma varargck type "zo" intptr
+#pragma varargck type "zx" intptr
+#pragma varargck type "zb" intptr
+#pragma varargck type "zd" uintptr
+#pragma varargck type "zo" uintptr
+#pragma varargck type "zx" uintptr
+#pragma varargck type "zb" uintptr
#pragma varargck type "d" int
+#pragma varargck type "o" int
#pragma varargck type "x" int
#pragma varargck type "c" int
#pragma varargck type "C" int
/*
* Time-of-day
*/
+typedef struct Tzone Tzone;
+#pragma incomplete Tzone
+
typedef
struct Tm
{
- int sec;
- int min;
- int hour;
- int mday;
- int mon;
- int year;
- int wday;
- int yday;
- char zone[4];
- int tzoff;
+ int nsec; /* nseconds (range 0...1e9) */
+ int sec; /* seconds (range 0..60) */
+ int min; /* minutes (0..59) */
+ int hour; /* hours (0..23) */
+ int mday; /* day of the month (1..31) */
+ int mon; /* month of the year (0..11) */
+ int year; /* year A.D. */
+ int wday; /* day of week (0..6, Sunday = 0) */
+ int yday; /* day of year (0..365) */
+ char zone[16]; /* time zone name */
+ int tzoff; /* time zone delta from GMT */
+ Tzone *tz; /* time zone associated with this date */
} Tm;
+typedef
+struct Tmfmt {
+ char *fmt;
+ Tm *tm;
+} Tmfmt;
+
+#pragma varargck type "τ" Tmfmt
+
+extern Tzone* tzload(char *name);
+extern Tm* tmnow(Tm*, Tzone*);
+extern Tm* tmtime(Tm*, vlong, Tzone*);
+extern Tm* tmtimens(Tm*, vlong, int, Tzone*);
+extern Tm* tmparse(Tm*, char*, char*, Tzone*, char **ep);
+extern vlong tmnorm(Tm*);
+extern Tmfmt tmfmt(Tm*, char*);
+extern void tmfmtinstall(void);
+
extern Tm* gmtime(long);
extern Tm* localtime(long);
extern char* asctime(Tm*);
extern char* cleanname(char*);
extern int decrypt(void*, void*, int);
extern int encrypt(void*, void*, int);
+
extern int dec64(uchar*, int, char*, int);
extern int enc64(char*, int, uchar*, int);
+extern int dec64x(uchar*, int, char*, int, int (*)(int));
+extern int enc64x(char*, int, uchar*, int, int (*)(int));
extern int dec32(uchar*, int, char*, int);
extern int enc32(char*, int, uchar*, int);
+extern int dec32x(uchar*, int, char*, int, int (*)(int));
+extern int enc32x(char*, int, uchar*, int, int (*)(int));
extern int dec16(uchar*, int, char*, int);
extern int enc16(char*, int, uchar*, int);
+extern int dec64chr(int);
+extern int enc64chr(int);
+extern int dec32chr(int);
+extern int enc32chr(int);
+extern int dec16chr(int);
+extern int enc16chr(int);
+
extern int encodefmt(Fmt*);
extern void exits(char*);
extern double frexp(double, int*);
struct QLp
{
int inuse;
+ int state;
QLp *next;
- char state;
};
typedef
extern int rwakeup(Rendez*);
extern int rwakeupall(Rendez*);
extern void** privalloc(void);
-extern void privfree(void**);
+
+extern void procsetname(char*, ...);
+#pragma varargck argpos procsetname 1
/*
* network dialing
extern NetConnInfo* getnetconninfo(char*, int);
extern void freenetconninfo(NetConnInfo*);
+extern int idn2utf(char*, char*, int);
+extern int utf2idn(char*, char*, int);
+
/*
* system calls
*
extern long semrelease(long*, long);
extern int sleep(long);
extern int stat(char*, uchar*, int);
+extern int tsemacquire(long*, ulong);
extern Waitmsg* wait(void);
extern int waitpid(void);
extern long write(int, void*, long);
extern void werrstr(char*, ...);
#pragma varargck argpos werrstr 1
+extern long ainc(long*);
+extern long adec(long*);
+
extern char *argv0;
#define ARGBEGIN for((argv0||(argv0=*argv)),argv++,argc--;\
argv[0] && argv[0][0]=='-' && argv[0][1];\