diff options
author | rsc <devnull@localhost> | 2006-04-20 20:49:00 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2006-04-20 20:49:00 +0000 |
commit | 2c0f3733ade43a38576aec82eced8768b42f9980 (patch) | |
tree | 10ca21890107438f774b4a518e635cacd20f99e3 /src/cmd/sam/cmd.c | |
parent | f8e39513f37e870d6be6aad7b5013b603f12cae8 (diff) | |
download | plan9port-2c0f3733ade43a38576aec82eced8768b42f9980.tar.gz plan9port-2c0f3733ade43a38576aec82eced8768b42f9980.tar.bz2 plan9port-2c0f3733ade43a38576aec82eced8768b42f9980.zip |
64-bit fixes
Diffstat (limited to 'src/cmd/sam/cmd.c')
-rw-r--r-- | src/cmd/sam/cmd.c | 37 |
1 files changed, 25 insertions, 12 deletions
diff --git a/src/cmd/sam/cmd.c b/src/cmd/sam/cmd.c index a5b636af..cdf00b9b 100644 --- a/src/cmd/sam/cmd.c +++ b/src/cmd/sam/cmd.c @@ -50,10 +50,12 @@ Rune termline[BLOCKSIZE]; Rune *linep = line; Rune *terminp = termline; Rune *termoutp = termline; -List cmdlist; -List addrlist; -List relist; -List stringlist; + +List cmdlist = { 'p' }; +List addrlist = { 'p' }; +List relist = { 'p' }; +List stringlist = { 'p' }; + int eof; void @@ -108,15 +110,26 @@ inputc(void) int inputline(void) { - int i, c; - - linep = line; - i = 0; + int i, c, start; + + /* + * Could set linep = line and i = 0 here and just + * error(Etoolong) below, but this way we keep + * old input buffer history around for a while. + * This is useful only for debugging. + */ + i = linep - line; do{ if((c = inputc())<=0) return -1; - if(i == (sizeof line)/RUNESIZE-1) - error(Etoolong); + if(i == nelem(line)-1){ + if(linep == line) + error(Etoolong); + start = linep - line; + runemove(line, linep, i-start); + i -= start; + linep = line; + } }while((line[i++]=c) != '\n'); line[i] = 0; return 1; @@ -275,9 +288,9 @@ freecmd(void) int i; while(cmdlist.nused > 0) - free(cmdlist.ucharpptr[--cmdlist.nused]); + free(cmdlist.voidpptr[--cmdlist.nused]); while(addrlist.nused > 0) - free(addrlist.ucharpptr[--addrlist.nused]); + free(addrlist.voidpptr[--addrlist.nused]); while(relist.nused > 0){ i = --relist.nused; Strclose(relist.stringpptr[i]); |