Пример #1
0
Файл: sam.c Проект: deadpixi/sam
void
hiccough(char *s)
{
    if(rescuing)
        exit(EXIT_FAILURE);

    if(s)
        dprint(L"%s\n", s);

    resetcmd();
    resetxec();
    resetsys();

    if(io > 0)
        close(io);

    if(undobuf->nrunes)
        Bdelete(undobuf, (Posn)0, undobuf->nrunes);

    update();

    if (curfile) {
        if (curfile->state==Unread)
            curfile->state = Clean;
        else if (downloaded)
            outTs(Hcurrent, curfile->tag);
    }

    longjmp(mainloop, 1);
}
Пример #2
0
Файл: edit.c Проект: npe9/harvey
void
editcmd(Text *ct, Rune *r, uint n)
{
	char *err;

	if(n == 0)
		return;
	if(2*n > RBUFSIZE){
		warning(nil, "string too long\n");
		return;
	}

	allwindows(alleditinit, nil);
	if(cmdstartp)
		free(cmdstartp);
	cmdstartp = runemalloc(n+2);
	runemove(cmdstartp, r, n);
	if(r[n] != '\n')
		cmdstartp[n++] = '\n';
	cmdstartp[n] = '\0';
	cmdendp = cmdstartp+n;
	cmdp = cmdstartp;
	if(ct->w == nil)
		curtext = nil;
	else
		curtext = &ct->w->body;
	resetxec();
	if(editerrc == nil){
		editerrc = chancreate(sizeof(char*), 0);
		lastpat = allocstring(0);
	}
	threadcreate(editthread, nil, STACK);
	err = recvp(editerrc);
	editing = Inactive;
	if(err != nil){
		if(err[0] != '\0')
			warning(nil, "Edit: %s\n", err);
		free(err);
	}

	/* update everyone whose edit log has data */
	allwindows(allupdate, nil);
}
Пример #3
0
void
hiccough(char *s)
{
    File *f;
    int i;

    if(rescuing)
        exits("rescue");
    if(s)
        dprint("%s\n", s);
    resetcmd();
    resetxec();
    resetsys();
    if(io > 0)
        close(io);

    /*
     * back out any logged changes & restore old sequences
     */
    for(i=0; i<file.nused; i++) {
        f = file.filepptr[i];
        if(f==cmd)
            continue;
        if(f->seq==seq) {
            bufdelete(&f->epsilon, 0, f->epsilon.nc);
            f->seq = f->prevseq;
            f->dot.r = f->prevdot;
            f->mark = f->prevmark;
            state(f, f->prevmod ? Dirty: Clean);
        }
    }

    update();
    if (curfile) {
        if (curfile->unread)
            curfile->unread = FALSE;
        else if (downloaded)
            outTs(Hcurrent, curfile->tag);
    }
    longjmp(mainloop, 1);
}