if(! construct_name(name)){
if(! construct_name(name, sizeof(name))){
store_to_database(db)    Database *db;{    Database new = (Database)NULL;    char name[BUFSIZE];    if(parse_info.pre_state == S_VALUE){	if(! append_value_list()){	    goto err;	}    }    if(parse_info.name[parse_info.nest_depth] == NULL){	goto err;    }    new = (Database)Xmalloc(sizeof(DatabaseRec));    if(new == (Database)NULL){	goto err;    }    bzero(new, sizeof(DatabaseRec));    new->category = (char *)Xmalloc(strlen(parse_info.category) + 1);    if(new->category == NULL){	goto err;    }    strcpy(new->category, parse_info.category);    if(! construct_name(name)){	goto err;    }    new->name = (char *)Xmalloc(strlen(name) + 1);    if(new->name == NULL){	goto err;    }    strcpy(new->name, name);    new->next = *db;    new->value = parse_info.value;    new->value_num = parse_info.value_num;    *db = new;    Xfree(parse_info.name[parse_info.nest_depth]);    parse_info.name[parse_info.nest_depth] = NULL;    parse_info.value = (char **)NULL;    parse_info.value_num = 0;    parse_info.value_len = 0;    return 1; err:;    if(new){	if(new->category){	    Xfree(new->category);	}	if(new->name){	    Xfree(new->name);	}    }    if(parse_info.value){	if(*parse_info.value){	    Xfree(*parse_info.value);	}	Xfree((char **)parse_info.value);	parse_info.value = (char **)NULL;	parse_info.value_num = 0;	parse_info.value_len = 0;    }    return 0;}