예제 #1
0
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);
}
예제 #2
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);
    }
  }
}
예제 #3
0
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);
}
예제 #4
0
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;
}
예제 #5
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;
  }
}
예제 #6
0
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);
}