void hash_file(hash *hashtable[], char *file, unsigned int tablesize) { FILE *fp; bstring buffer; bstring value; int poseq; fp = fopen(file, "r"); if (fp == NULL) { fp = fopen(file, "w+"); /* create the file */ if (fp == NULL) fprintf(stderr, "Could not create file (%s)\n", file); return; } while ((buffer = bgets((bNgetc) fgetc, fp, '\n')) != NULL) { /* seriously, wtf is a \10 doing in my buffer you c********r? let's get rid of it: */ poseq = bstrchrp(buffer, '=', 0); value = bmidstr(buffer, poseq+1, blength(buffer) - poseq - 2); btrunc(buffer, poseq); /*printf("%s=%s\n", bdata(buffer), bdata(value));*/ hash_add(hashtable, buffer, value, tablesize); } fclose(fp); bdestroy(buffer); bdestroy(value); }
static inline void handler_cap_payload(bstring payload) { if(payload->data[payload->slen - 1] == '\0') { btrunc(payload, blength(payload)-1); } else if(payload->data[payload->slen] != '\0') { bconchar(payload, '\0'); } }
void readmetricsspec(struct metrics* metrics, FILE *infile) { int chr; int state; int line; bstring name, filter; struct metric *metric; name = bfromcstr(""); filter = bfromcstr(""); state = INNAME; line = 1; while((chr = fgetc(infile)) != EOF) { switch(state) { case INNAME: switch (chr) { case '|': state = INBFP; break; case '\n': printf("error on line %d: expected: |\n", line); btrunc(name, 0); break; default: bconchar(name, chr); break; } break; case INBFP: switch(chr) { case '\n': /* printf("Got metric called '%s' with body '%s'\n", name->data, filter->data); */ metrics_ensure_space(metrics, metrics->count+1); metric = &metrics->metrics[metrics->count]; metrics->count++; metric->name = name; metric->filterprogram = filter; name = bfromcstr(""); filter = bfromcstr(""); state = INNAME; break; default: bconchar(filter, chr); break; } } if (chr == '\n') { line++; } } /* Null terminate */ metrics_ensure_space(metrics, metrics->count+1); metric = &metrics->metrics[metrics->count]; metric->name = NULL; metric->filterprogram = NULL; }
//////////////////////////////////////////////////////////// /// Create a new item //////////////////////////////////////////////////////////// static void LexerItemCreate(struct Lexer * LexPtr) { if (LexPtr == NULL) return; if (LexPtr->OwnItem) btrunc(LexPtr->Item, 0); else // Do not destroy the item LexPtr->Item = bfromcstralloc(LEXER_BASE_ALLOC, ""); LexPtr->OwnItem = true; }
void set_image_base_url(char *str) { btrunc(image_base_url, 0); bcatcstr(image_base_url, str); }
void set_base_url(char *str) { btrunc(base_url, 0); bcatcstr(base_url, str); }