diff --git a/engine/qclib/qcctui.c b/engine/qclib/qcctui.c new file mode 100644 index 00000000..7f33e913 --- /dev/null +++ b/engine/qclib/qcctui.c @@ -0,0 +1,117 @@ +#include "qcc.h" + +#include +#include + +/* +============== +LoadFile +============== +*/ +unsigned char *QCC_ReadFile (char *fname, void *buffer, int len) +{ + long length; + FILE *f; + f = fopen(fname, "rb"); + if (!f) + return NULL; + length = fread(buffer, 1, len, f); + fclose(f); + + if (length != len) + return NULL; + + return buffer; +} +int QCC_FileSize (char *fname) +{ + long length; + FILE *f; + f = fopen(fname, "rb"); + if (!f) + return -1; + fseek(f, 0, SEEK_END); + length = ftell(f); + fclose(f); + + return length; +} + +pbool QCC_WriteFile (char *name, void *data, int len) +{ + long length; + FILE *f; + f = fopen(name, "wb"); + if (!f) + return false; + length = fwrite(data, 1, len, f); + fclose(f); + + if (length != len) + return false; + + return true; +} + +#undef printf +#undef Sys_Error + +void Sys_Error(const char *text, ...) +{ + va_list argptr; + static char msg[2048]; + + va_start (argptr,text); + QC_vsnprintf (msg,sizeof(msg)-1, text,argptr); + va_end (argptr); + + QCC_Error(ERR_INTERNAL, "%s", msg); +} + + +FILE *logfile; +int logprintf(const char *format, ...) +{ + va_list argptr; + static char string[1024]; + + va_start (argptr, format); +#ifdef _WIN32 + _vsnprintf (string,sizeof(string)-1, format,argptr); +#else + vsnprintf (string,sizeof(string), format,argptr); +#endif + va_end (argptr); + + printf("%s", string); + if (logfile) + fputs(string, logfile); + + return 0; +} + +int main (int argc, char **argv) +{ + int sucess; + progexterns_t ext; + progfuncs_t funcs; + progfuncs = &funcs; + memset(&funcs, 0, sizeof(funcs)); + funcs.parms = &ext; + memset(&ext, 0, sizeof(progexterns_t)); + funcs.parms->ReadFile = QCC_ReadFile; + funcs.parms->FileSize = QCC_FileSize; + funcs.parms->WriteFile = QCC_WriteFile; + funcs.parms->printf = logprintf; + funcs.parms->Sys_Error = Sys_Error; + logfile = fopen("fteqcc.log", "wt"); + sucess = CompileParams(&funcs, true, argc, argv); + qccClearHunk(); + if (logfile) + fclose(logfile); + +#ifdef _WIN32 +// fgetc(stdin); //wait for keypress +#endif + return !sucess; +}