void get(char *ch) { int r; r = buffer_GETC(buffer_0,ch); if (r == 1) return; if (r == 0) _exit(0); _exit(111); }
void doit(char **script) { int flageof; char ch; int j; int i; char *action; int flagselected; int flagtimestamp; flagtimestamp = 0; if (script[0]) if (script[0][0] == 't') flagtimestamp = 1; for (i = 0;i <= 1000;++i) line[i] = '\n'; linelen = 0; flageof = 0; for (;;) { for (i = 0;i < linelen;++i) line[i] = '\n'; linelen = 0; while (linelen < 1000) { if (buffer_GETC(&ssin,&ch) <= 0) { if (!linelen) return; flageof = 1; break; } if (!linelen) if (flagtimestamp) { linelen = iso_timestamp(line); } if (ch == '\n') break; line[linelen++] = ch; } flagselected = 1; j = 0; for (i = 0;action = script[i];++i) switch(*action) { case '+': if (!flagselected) if (match(action + 1,line,linelen)) flagselected = 1; break; case '-': if (flagselected) if (match(action + 1,line,linelen)) flagselected = 0; break; case 'e': if (flagselected) { if (linelen > 200) { buffer_put(buffer_2,line,200); buffer_puts(buffer_2,"...\n"); } else { buffer_put(buffer_2,line,linelen); buffer_puts(buffer_2,"\n"); } buffer_flush(buffer_2); } break; case '=': if (flagselected) for (;;) { while (seek_begin(f[i]) == -1) pause3("unable to move to beginning of ",action + 1,", pausing: "); if (write(f[i],line,1001) == 1001) break; pause3("unable to write ",action + 1,", pausing: "); } break; case '.': case '/': c[j].flagselected = flagselected; ++j; break; } for (j = 0;j < cnum;++j) if (c[j].flagselected) buffer_put(&c[j].ss,line,linelen); if (linelen == 1000) for (;;) { if (buffer_GETC(&ssin,&ch) <= 0) { flageof = 1; break; } if (ch == '\n') break; for (j = 0;j < cnum;++j) if (c[j].flagselected) buffer_PUTC(&c[j].ss,ch); } for (j = 0;j < cnum;++j) if (c[j].flagselected) { ch = '\n'; buffer_PUTC(&c[j].ss,ch); } if (flageof) return; } }