Example #1
0
void onion_assets_file_add_linef(onion_assets_file *f, const char *line, ...){
	char tmp[1024];
	va_list ap;
	va_start(ap, line);
	vsnprintf(tmp,sizeof(tmp),line, ap);
	va_end(ap);
	onion_assets_file_add_line(f, tmp);
}
Example #2
0
int onion_assets_file_update(onion_assets_file* file, const char* line){
	int i;
	for (i=0;i<file->lines_count;i++){
		if (strcmp(file->lines[i],line)==0)
			return 0;
	}
	onion_assets_file_add_line(file, line);
	return 1;
}
Example #3
0
onion_assets_file *onion_assets_file_new(const char *filename){
	onion_assets_file *ret=malloc(sizeof(onion_assets_file));
	FILE *file=fopen(filename, "rt");
	ret->filename=strdup(filename);
	ret->lines_count=0;
	ret->lines_capacity=16;
	ret->lines=malloc(sizeof(const char *)*ret->lines_capacity);
	ret->has_endif=0;
	if (file){
		char buffer[4096];
		int r=0;
		int o=0;
		int total=0;
		do{
			r=fread(&buffer[o], 1, sizeof(buffer)-o, file);
			int i;
			o=0;
			for (i=0;i<r;i++){
				if (buffer[i]=='\n'){
					buffer[i]=0;
					ONION_DEBUG("Read original line <%s>", &buffer[o]); 
					onion_assets_file_add_line(ret, &buffer[o]);
					total+=strlen(&buffer[o]);
					o=i+1;
				}
			}
		}while(r>0);
		if (total>0){
			fclose(file);
			return ret;
		}
	}
	
	char *FILENAME=to_define_able(filename);
	
	onion_assets_file_add_line(ret,"/* Autogenerated by onion assets */");
	onion_assets_file_add_linef(ret,"#ifndef __ASSETS_H__%s",FILENAME);
	onion_assets_file_add_linef(ret,"#define __ASSETS_H__%s",FILENAME);
	onion_assets_file_add_line(ret,"#include <onion/types.h>");
	onion_assets_file_add_line(ret,"#endif");
	
	free(FILENAME);
	return ret;
}
Example #4
0
onion_assets_file *onion_assets_file_new(const char *filename){
	onion_assets_file *ret=malloc(sizeof(onion_assets_file));
	ret->file=fopen(filename, "rt");
	ret->lines_count=0;
	ret->lines_capacity=16;
	ret->lines=malloc(sizeof(const char *)*ret->lines_capacity);
	ret->has_endif=0;
	if (!ret->file){
		ret->file=fopen(filename,"wt");
		if (!ret->file){
			ONION_WARNING("Could not open %s asset file for updating.", filename);
			return NULL;
		}
		onion_assets_file_add_line(ret,"/* Autogenerated by onion assets */");
		onion_assets_file_add_line(ret,"#ifndef __ONION_ASSETS_H__");
		onion_assets_file_add_line(ret,"#define __ONION_ASSETS_H__");
		onion_assets_file_add_line(ret,"#endif");
	}
	else{
		char buffer[4096];
		int r;
		int o=0;
		do{
			r=fread(&buffer[o],1, sizeof(buffer)-o, ret->file);
			int i;
			o=0;
			for (i=0;i<r;i++){
				if (buffer[i]=='\n'){
					buffer[i]=0;
					onion_assets_file_add_line(ret, &buffer[o]);
					o=i+1;
				}
			}
			assert(o!=0 && r>0); // "Line is longer than buffer size or EOF without EOL.");
		}while(r<0);
		fclose(ret->file);
		ret->file=fopen(filename,"wt");
	}
	return ret;
}