Skip to content

Commit

Permalink
More work on the new input code
Browse files Browse the repository at this point in the history
  • Loading branch information
Sound and Fury committed Sep 16, 2010
1 parent e0697ee commit dbbd6c9
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 29 deletions.
6 changes: 3 additions & 3 deletions Makefile
Expand Up @@ -5,7 +5,7 @@ CFLAGS ?= -Wall
AWK ?= gawk
VERSION := `git describe --tags`
PREFIX ?= /usr/local
LIBS := ttyraw.o ttyesc.o irc.o bits.o colour.o buffer.o names.o config.o input.o
LIBS := ttyraw.o ttyesc.o irc.o bits.o colour.o buffer.o names.o config.o input.o -lm
INCLUDE := ttyraw.h ttyesc.h irc.h bits.h colour.h buffer.h names.h config.h input.h version.h
DEFINES ?= -DHAVE_DEBUG

Expand All @@ -18,12 +18,12 @@ uninstall:
rm $(PREFIX)/bin/quirc

quirc: quirc.c $(LIBS) $(INCLUDE)
$(CC) $(CFLAGS) -o quirc quirc.c $(LIBS) $(DEFINES)
$(CC) $(CFLAGS) $(CPPFLAGS) -o quirc quirc.c $(LIBS) $(DEFINES)

mtrace: quirc-mtrace

quirc-mtrace: quirc.c $(LIBS) $(INCLUDE)
$(CC) $(CFLAGS) -o quirc-mtrace quirc.c $(LIBS) -g -DUSE_MTRACE $(DEFINES)
$(CC) $(CFLAGS) $(CPPFLAGS) -o quirc-mtrace quirc.c $(LIBS) -g -DUSE_MTRACE $(DEFINES)

clean:
rm *.o quirc
Expand Down
22 changes: 11 additions & 11 deletions input.c
Expand Up @@ -32,12 +32,12 @@ int inputchar(iline *inp, int *state)
free(inp->right.data);
inp->right.data=nr;
inp->right.l=inp->left.i+inp->right.i+1;
inp->right.i=inp.right.l-1;
inp->right.i=inp->right.l-1;
inp->left.i=inp->left.l=0;
}
if(c=='\t') // tab completion of nicks
{
int sp=max(ino-1, 0);
int sp=max(inp->left.i-1, 0);
while(sp>0 && !strchr(" \t", inp->left.data[sp-1]))
sp--;
name *curr=bufs[cbuf].nlist;
Expand All @@ -46,7 +46,7 @@ int inputchar(iline *inp, int *state)
int mlen;
while(curr)
{
if((ino==sp) || (irc_strncasecmp(inp->left.data+sp, curr->data, ino-sp, bufs[cbuf].casemapping)==0))
if((inp->left.i==sp) || (irc_strncasecmp(inp->left.data+sp, curr->data, inp->left.i-sp, bufs[cbuf].casemapping)==0))
{
n_add(&found, curr->data);
if((found->next)&&(found->next->data))
Expand All @@ -70,7 +70,7 @@ int inputchar(iline *inp, int *state)
}
if(found)
{
if((mlen>ino-sp)&&(count>1))
if((mlen>inp->left.i-sp)&&(count>1))
{
inp->left.data=(char *)realloc(inp->left.data, sp+mlen+4);
snprintf(inp->left.data+sp, mlen+1, "%s", found->data);
Expand Down Expand Up @@ -160,7 +160,7 @@ int inputchar(iline *inp, int *state)
case 'C': // ^[[C // Right
if(inp->right.data && *inp->right.data)
{
append_ichar(inp->left, inp->right.data[0]);
append_ichar(&inp->left, inp->right.data[0]);
inp->right.data=strdup(inp->right.data+1);
inp->right.i--;
inp->right.l=0;
Expand All @@ -169,7 +169,7 @@ int inputchar(iline *inp, int *state)
case 'D': // ^[[D // Left
if(inp->left.i)
{
unsigned char e=back_ichar(inp->left);
unsigned char e=back_ichar(&inp->left);
if(e)
{
char *nr=(char *)malloc(inp->right.i+2);
Expand Down Expand Up @@ -199,7 +199,7 @@ int inputchar(iline *inp, int *state)
{
size_t b=inp->left.i+inp->right.i;
char *nl=(char *)malloc(b+1);
sprintf(nr, "%s%s", inp->left.data?inp->left.data:"", inp->right.data?inp->right.data:"");
sprintf(nl, "%s%s", inp->left.data?inp->left.data:"", inp->right.data?inp->right.data:"");
ifree(inp);
inp->left.data=nl;
inp->left.i=b;
Expand All @@ -209,7 +209,7 @@ int inputchar(iline *inp, int *state)
case '3': // take another
if(getchar()=='~') // delete
{
back_ichar(inp);
back_ichar(&inp->left);
}
break;
case '5': // ^[[5
Expand Down Expand Up @@ -325,14 +325,14 @@ int inputchar(iline *inp, int *state)
if(c=='\n')
{
*state=3;
char out[(inp->left?strlen(inp->left):0)+(inp->right?strlen(inp->right):0)+1];
sprintf(out, "%s%s", inp->left?inp->left:"", inp->right?inp->right:"");
char out[inp->left.i+inp->right.i+1];
sprintf(out, "%s%s", inp->left.data?inp->left.data:"", inp->right.data?inp->right.data:"");
addtoibuf(&bufs[cbuf].input, out);
ifree(inp);
}
else
{
in_update(inp);
in_update(*inp);
}
return(0);
}
Expand Down
31 changes: 16 additions & 15 deletions quirc.c
Expand Up @@ -86,9 +86,9 @@ int main(int argc, char *argv[])
{
w_buf_print(0, c_status, "Not connected - use /server to connect", "");
}
in_update("");
iline inp={{NULL, 0, 0}, {NULL, 0, 0}};
in_update(inp);
struct timeval timeout;
char *inp=NULL;
int state=0; // odd-numbered states are fatal
while(!(state%2))
{
Expand Down Expand Up @@ -243,21 +243,22 @@ int main(int argc, char *argv[])
switch(state)
{
case 3: // TODO: fix this stuff (inp isn't the right thing any more)
if(!inp)
if(!bufs[cbuf].input.line[bufs[cbuf].input.ptr])
{
fprintf(stderr, "\nInternal error - state==3 and inp is NULL!\n");
fprintf(stderr, "\nInternal error - state==3 and inputline is NULL!\n");
break;
}
if(*inp)
char *iinput=strdup(bufs[cbuf].input.line[bufs[cbuf].input.ptr]);
if(iinput&&*iinput) // ignore empty lines, and ignore if iinput is NULL
{
fflush(stdout);
char *deq=slash_dequote(inp); // dequote
free(inp);
inp=deq;
if(*inp=='/')
char *deq=slash_dequote(iinput); // dequote
free(iinput);
iinput=deq;
if(*iinput=='/')
{
state=cmd_handle(inp, &qmsg, &master, &fdmax);
free(inp);inp=NULL;
state=cmd_handle(iinput, &qmsg, &master, &fdmax);
free(iinput);iinput=NULL;
}
else
{
Expand All @@ -267,16 +268,16 @@ int main(int argc, char *argv[])
{
if(bufs[cbuf].live)
{
char pmsg[12+strlen(bufs[cbuf].bname)+strlen(inp)];
sprintf(pmsg, "PRIVMSG %s :%s", bufs[cbuf].bname, inp);
char pmsg[12+strlen(bufs[cbuf].bname)+strlen(iinput)];
sprintf(pmsg, "PRIVMSG %s :%s", bufs[cbuf].bname, iinput);
irc_tx(bufs[cbuf].handle, pmsg);
char tag[maxnlen+4];
memset(tag, ' ', maxnlen+3);
char *cnick=strdup(bufs[bufs[cbuf].server].nick);
crush(&cnick, maxnlen);
sprintf(tag+maxnlen-strlen(cnick), "<%s> ", cnick);
free(cnick);
w_buf_print(cbuf, c_msg[0], inp, tag);
w_buf_print(cbuf, c_msg[0], iinput, tag);
}
else
{
Expand All @@ -292,7 +293,7 @@ int main(int argc, char *argv[])
{
w_buf_print(cbuf, c_err, "Can't talk - view is not a channel!", "");
}
free(inp);inp=NULL;
free(iinput);iinput=NULL;
state=0;
}
}
Expand Down

0 comments on commit dbbd6c9

Please sign in to comment.