int add_cdb_key (struct cdb_make *cdb, char *key, char *data){ uint32 h; char *tmpptr; if (cdb_make_addbegin(cdb,strlen(key),strlen(data)) == -1) { printf("error on cdb_make_addbegin)\n"); return(-1); } h = CDB_HASHSTART; for(tmpptr=key;*tmpptr!=0;++tmpptr) { if (buffer_PUTC(&cdb->b,*tmpptr) == -1) { printf("error in buffer_PUTC\n"); return(-1); } h = cdb_hashadd(h,*tmpptr); } for(tmpptr=data;*tmpptr!=0;++tmpptr) { if (buffer_PUTC(&cdb->b,*tmpptr) == -1) { printf("error in buffer_PUTC\n"); return(-1); } } if (cdb_make_addend(cdb,strlen(key),strlen(data),h) == -1) { printf("error in cdb_make_addend\n"); return(-1); } return(0); }
main() { register int n; register char *x; char ch; for (;;) { n = buffer_feed(buffer_0); if (n < 0) _exit(111); if (!n) _exit(0); x = buffer_PEEK(buffer_0); buffer_SEEK(buffer_0,n); while (n > 0) { ch = *x++; --n; if (ch == '\n') buffer_PUTC(buffer_1,"\r"[0]); buffer_PUTC(buffer_1,ch); } } }
static void putsa(const char* name, stralloc* tag) { size_t i; buffer_putm_internal(buffer_1, name, ": ", 0); for(i = 0; i < tag->len; ++i) { if(tag->s[i] == '\r') buffer_puts(buffer_1, "\\r"); else if(tag->s[i] == '\n') buffer_puts(buffer_1, "\\n"); else if(tag->s[i] == '\t') buffer_puts(buffer_1, "\\t"); else buffer_PUTC(buffer_1, tag->s[i]); } buffer_putnlflush(buffer_1); }
int buffer_copyline(buffer *out,buffer *in,char eol) { int n; char *x; int i; for (;;) { n = buffer_feed(in); if (n < 0) return -2; if (!n) break; x = buffer_PEEK(in); i = byte_chr(x,n,eol); if (buffer_put(out,x,i) < 0) return -3; buffer_SEEK(in,i); if (i < in->p) { buffer_PUTC(out,eol); buffer_SEEK(in,1); break; } } return 0; }
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; } }
int make_cdb() { FILE *fs; int fdout; char *key; char *data; char *tmpptr; static char input[MAX_LINE]; uint32 h; if ( (fs = fopen(ClearFile,"r")) == NULL) { printf("Not building simcontrol.cdb file. No %s/simcontrol text file\n", CONTROLDIR); return(-1); } if ( (fdout = open(CdbTmpFile, O_CREAT | O_TRUNC | O_WRONLY)) < 0) { printf("error on open tmp file\n"); return(-1); } if (cdb_make_start(&c,fdout) == -1) { printf("error on cdb_make_start\n"); return(-1); } while(fgets(input,sizeof(input), fs)!=NULL) { if ( input[0] == ':' ) { key = ""; data = strtok(&input[1],"\r\n"); } else { key = strtok(input,TOKENS); if ( key == NULL ) continue; data = strtok(NULL,"\r\n"); } if ( data == NULL ) data=""; /*snprintf(key,sizeof(key),"%s", data);*/ if (cdb_make_addbegin(&c,strlen(key),strlen(data)) == -1) { printf("error on cdb_make_addbegin)\n"); return(-1); } h = CDB_HASHSTART; for(tmpptr=key;*tmpptr!=0;++tmpptr) { if (buffer_PUTC(&c.b,*tmpptr) == -1) { printf("error in buffer_PUTC\n"); return(-1); } h = cdb_hashadd(h,*tmpptr); } for(tmpptr=data;*tmpptr!=0;++tmpptr) { if (buffer_PUTC(&c.b,*tmpptr) == -1) { printf("error in buffer_PUTC\n"); return(-1); } } if (cdb_make_addend(&c,strlen(key),strlen(data),h) == -1) { printf("error in cdb_make_addend\n"); return(-1); } } if (cdb_make_finish(&c) == -1) { printf("error in cdb_make_finish\n"); return(-1); } /*fprintf(fsout"\n");*/ fclose(fs); close(fdout); if (rename(CdbTmpFile, CdbFile)==-1) { printf("error: could not rename %s to %s\n", CdbTmpFile, CdbFile); return(-1); } chmod(CdbFile, 0644); printf("simscan cdb file built. %s/simcontrol.cdb\n", CONTROLDIR); return(0); }