|
|
1.1 ! root 1: /* ! 2: * functions (possibly) linked in, complete, from libc. ! 3: */ ! 4: ! 5: /* ! 6: * mem routines ! 7: */ ! 8: extern void *memccpy(void*, void*, int, long); ! 9: extern void *memset(void*, int, long); ! 10: extern int memcmp(void*, void*, long); ! 11: extern void *memmove(void*, void*, long); ! 12: extern void *memchr(void*, int, long); ! 13: ! 14: /* ! 15: * string routines ! 16: */ ! 17: extern char *strcat(char*, char*); ! 18: extern char *strchr(char*, char); ! 19: extern int strcmp(char*, char*); ! 20: extern char *strcpy(char*, char*); ! 21: extern char *strncat(char*, char*, long); ! 22: extern char *strncpy(char*, char*, long); ! 23: extern int strncmp(char*, char*, long); ! 24: extern long strlen(char*); ! 25: extern int atoi(char*); ! 26: ! 27: enum ! 28: { ! 29: UTFmax = 3, /* maximum bytes per rune */ ! 30: Runesync = 0x80, /* cannot represent part of a UTF sequence (<) */ ! 31: Runeself = 0x80, /* rune and UTF sequences are the same (<) */ ! 32: Runeerror = 0x80, /* decoding error in UTF */ ! 33: }; ! 34: ! 35: /* ! 36: * rune routines ! 37: */ ! 38: extern int runetochar(char*, Rune*); ! 39: extern int chartorune(Rune*, char*); ! 40: extern char* utfrune(char*, long); ! 41: extern int utflen(char*); ! 42: ! 43: extern int abs(int); ! 44: ! 45: /* ! 46: * print routines ! 47: */ ! 48: typedef ! 49: struct ! 50: { ! 51: char* out; /* pointer to next output */ ! 52: char* eout; /* pointer to end */ ! 53: int f1; ! 54: int f2; ! 55: int f3; ! 56: int chr; ! 57: } Fconv; ! 58: extern void strconv(char*, Fconv*); ! 59: extern int numbconv(void*, Fconv*); ! 60: extern char *doprint(char*, char*, char*, void*); ! 61: extern int fmtinstall(int, int (*)(void*, Fconv*)); ! 62: extern int sprint(char*, char*, ...); ! 63: extern int snprint(char*, int, char*, ...); ! 64: extern int print(char*, ...); ! 65: ! 66: /* ! 67: * one-of-a-kind ! 68: */ ! 69: extern long strtol(char*, char**, int); ! 70: extern ulong strtoul(char*, char**, int); ! 71: extern char etext[]; ! 72: extern char edata[]; ! 73: extern char end[]; ! 74: /* ! 75: * Syscall data structures ! 76: */ ! 77: ! 78: #define MORDER 0x0003 /* mask for bits defining order of mounting */ ! 79: #define MREPL 0x0000 /* mount replaces object */ ! 80: #define MBEFORE 0x0001 /* mount goes before others in union directory */ ! 81: #define MAFTER 0x0002 /* mount goes after others in union directory */ ! 82: #define MCREATE 0x0004 /* permit creation in mounted directory */ ! 83: #define MMASK 0x0007 /* all bits on */ ! 84: ! 85: #define OREAD 0 /* open for read */ ! 86: #define OWRITE 1 /* write */ ! 87: #define ORDWR 2 /* read and write */ ! 88: #define OEXEC 3 /* execute, == read but check execute permission */ ! 89: #define OTRUNC 16 /* or'ed in (except for exec), truncate file first */ ! 90: #define OCEXEC 32 /* or'ed in, close on exec */ ! 91: #define ORCLOSE 64 /* or'ed in, remove on close */ ! 92: ! 93: #define NCONT 0 /* continue after note */ ! 94: #define NDFLT 1 /* terminate after note */ ! 95: #define NSAVE 2 /* clear note but hold state */ ! 96: #define NRSTR 3 /* restore saved state */ ! 97: ! 98: typedef struct Qid Qid; ! 99: typedef struct Dir Dir; ! 100: typedef struct Waitmsg Waitmsg; ! 101: ! 102: #define ERRLEN 64 ! 103: #define DIRLEN 116 ! 104: #define NAMELEN 28 ! 105: ! 106: struct Qid ! 107: { ! 108: ulong path; ! 109: ulong vers; ! 110: }; ! 111: ! 112: struct Dir ! 113: { ! 114: char name[NAMELEN]; ! 115: char uid[NAMELEN]; ! 116: char gid[NAMELEN]; ! 117: Qid qid; ! 118: ulong mode; ! 119: long atime; ! 120: long mtime; ! 121: Length; ! 122: short type; ! 123: short dev; ! 124: }; ! 125: ! 126: struct Waitmsg ! 127: { ! 128: char pid[12]; /* of loved one */ ! 129: char time[3*12]; /* of loved one and descendants */ ! 130: char msg[ERRLEN]; ! 131: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.