first usable version of kernel and commands
After an year of hard work, this is a first "usable" version of Jehanne.
This commit is contained in:
84
sys/include/bio.h
Normal file
84
sys/include/bio.h
Normal file
@@ -0,0 +1,84 @@
|
||||
/*
|
||||
* This file is part of the UCB release of Plan 9. It is subject to the license
|
||||
* terms in the LICENSE file found in the top-level directory of this
|
||||
* distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
|
||||
* part of the UCB release of Plan 9, including this file, may be copied,
|
||||
* modified, propagated, or distributed except according to the terms contained
|
||||
* in the LICENSE file.
|
||||
*/
|
||||
|
||||
#pragma src "/sys/src/lib/bio"
|
||||
#pragma lib "libbio.a"
|
||||
|
||||
typedef struct Biobuf Biobuf;
|
||||
typedef struct Biobufhdr Biobufhdr;
|
||||
|
||||
enum
|
||||
{
|
||||
Bsize = 8*1024,
|
||||
Bungetsize = UTFmax+1, /* space for ungetc */
|
||||
Bmagic = 0x314159,
|
||||
Beof = -1,
|
||||
Bbad = -2,
|
||||
|
||||
Binactive = 0, /* states */
|
||||
Bractive,
|
||||
Bwactive,
|
||||
Bracteof,
|
||||
};
|
||||
|
||||
struct Biobufhdr
|
||||
{
|
||||
int icount; /* neg num of bytes at eob */
|
||||
int ocount; /* num of bytes at bob */
|
||||
int rdline; /* num of bytes after rdline */
|
||||
int runesize; /* num of bytes of last getrune */
|
||||
int state; /* r/w/inactive */
|
||||
int fid; /* open file */
|
||||
int flag; /* magic if malloc'ed */
|
||||
int64_t offset; /* offset of buffer in file */
|
||||
int bsize; /* size of buffer */
|
||||
uint8_t* bbuf; /* pointer to beginning of buffer */
|
||||
uint8_t* ebuf; /* pointer to end of buffer */
|
||||
uint8_t* gbuf; /* pointer to good data in buf */
|
||||
};
|
||||
|
||||
struct Biobuf
|
||||
{
|
||||
Biobufhdr;
|
||||
uint8_t b[Bungetsize+Bsize];
|
||||
};
|
||||
|
||||
/* Dregs, redefined as functions for backwards compatibility */
|
||||
#define BGETC(bp) Bgetc(bp)
|
||||
#define BPUTC(bp,c) Bputc(bp,c)
|
||||
#define BOFFSET(bp) Boffset(bp)
|
||||
#define BLINELEN(bp) Blinelen(bp)
|
||||
#define BFILDES(bp) Bfildes(bp)
|
||||
|
||||
int Bbuffered(Biobufhdr*);
|
||||
int Bfildes(Biobufhdr*);
|
||||
int Bflush(Biobufhdr*);
|
||||
int Bgetc(Biobufhdr*);
|
||||
int Bgetd(Biobufhdr*, double*);
|
||||
int32_t Bgetrune(Biobufhdr*);
|
||||
int Binit(Biobuf*, int, int);
|
||||
int Binits(Biobufhdr*, int, int, uint8_t*, int);
|
||||
int Blinelen(Biobufhdr*);
|
||||
int64_t Boffset(Biobufhdr*);
|
||||
Biobuf* Bopen(char*, int);
|
||||
Biobuf* Bfdopen(int, int);
|
||||
int Bprint(Biobufhdr*, char*, ...);
|
||||
int Bvprint(Biobufhdr*, char*, va_list);
|
||||
int Bputc(Biobufhdr*, int);
|
||||
int Bputrune(Biobufhdr*, int32_t);
|
||||
void* Brdline(Biobufhdr*, int);
|
||||
char* Brdstr(Biobufhdr*, int, int);
|
||||
int32_t Bread(Biobufhdr*, void*, int32_t);
|
||||
int64_t Bseek(Biobufhdr*, int64_t, int);
|
||||
int Bterm(Biobufhdr*);
|
||||
int Bungetc(Biobufhdr*);
|
||||
int Bungetrune(Biobufhdr*);
|
||||
int32_t Bwrite(Biobufhdr*, void*, int32_t);
|
||||
|
||||
#pragma varargck argpos Bprint 2
|
Reference in New Issue
Block a user