Beispiel #1
0
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);
}
Beispiel #2
0
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');
    }
}
Beispiel #3
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;
}
Beispiel #4
0
////////////////////////////////////////////////////////////
/// 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;
}
Beispiel #5
0
void set_image_base_url(char *str) {
  btrunc(image_base_url, 0);
  bcatcstr(image_base_url, str);
}
Beispiel #6
0
void set_base_url(char *str) {
  btrunc(base_url, 0);
  bcatcstr(base_url, str);
}