plan9fox/sys/src/cmd/db/fns.h
cinap_lenrek c86561f625 db: fix unicode support (thanks giacomo)
from the unicode-db patch readme:

command() receives a char* that is assigned to lp, which is a Rune*,
and lp is incremented later in readchar(), so each read consumed 4 bytes.
The only time command() is called is in runpcs() with bkpt->comm,
which is a char* built in subpcs through a char*, so the string stored in
bkpt->comm was not a Rune string. A way to test the bug is:

db program
main:b argv/X
:r
2015-03-19 11:44:26 +01:00

90 lines
2 KiB
C

void acommand(int);
void attachprocess(void);
void bkput(BKPT*, int);
void bpwait(void);
int charpos(void);
void chkerr(void);
void clrinp(void);
void cmdmap(Map*);
void cmdsrc(int, Map*);
void cmdwrite(int, Map*);
int command(Rune*, int);
int convdig(int);
void ctrace(int);
WORD defval(WORD);
void delbp(void);
void done(void);
int dprint(char*, ...);
Map* dumbmap(int);
void endline(void);
void endpcs(void);
int eol(int);
void error(char*);
void errors(char*, char*);
void execbkpt(BKPT*, int);
char* exform(int, int, char*, Map*, int, int);
int expr(int);
void flush(void);
void flushbuf(void);
char* getfname(void);
void getformat(char*);
int getnum(int (*)(void));
void grab(void);
void iclose(int, int);
ADDR inkdot(int);
int isfileref(void);
int item(int);
void killpcs(void);
void kmsys(void);
void main(int, char**);
int mapimage(void);
void newline(void);
int nextchar(void);
void notes(void);
void oclose(void);
void outputinit(void);
void printc(int);
void printesc(int);
void printlocals(Symbol *, ADDR);
void printmap(char*, Map*);
void printparams(Symbol *, ADDR);
void printpc(void);
void printregs(int);
void prints(char*);
void printsource(ADDR);
void printsym(void);
void printsyscall(void);
void printtrace(int);
int quotchar(void);
int rdc(void);
int readchar(void);
void readsym(char*);
void redirin(int, char*);
void redirout(char*);
void readfname(char *);
void reread(void);
char* regname(int);
uvlong rget(Map*, char*);
Reglist* rname(char*);
void rput(Map*, char*, vlong);
int runpcs(int, int);
void runrun(int);
void runstep(uvlong, int);
BKPT* scanbkpt(ADDR adr);
void scanform(long, int, char*, Map*, int);
void setbp(void);
void setcor(void);
void setsym(void);
void setup(void);
void setvec(void);
void shell(void);
void startpcs(void);
void subpcs(int);
int symchar(int);
int term(int);
void ungrab(void);
int valpr(long, int);
#pragma varargck argpos dprint 1
#pragma varargck type "t" void