X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=util.c;h=d825ab2f5715d72cb57d7cb71ec8c2104097f616;hb=0d9435d326c6a01f615fd6cb86432db75193d9bf;hp=3275ad82520367f00a2106af828baefb6b2d78fd;hpb=4a1f67bb973d3e4ae8726eed7d1f7df51e4b05b3;p=xonotic%2Fgmqcc.git diff --git a/util.c b/util.c index 3275ad8..d825ab2 100644 --- a/util.c +++ b/util.c @@ -37,7 +37,7 @@ struct memblock_t { void *util_memory_a(unsigned int byte, unsigned int line, const char *file) { struct memblock_t *info = malloc(sizeof(struct memblock_t) + byte); - void *data =(void*)((uintptr_t)info+sizeof(struct memblock_t)); + void *data =(void*)((unsigned char*)info+sizeof(struct memblock_t)); if (!data) return NULL; info->line = line; info->byte = byte; @@ -54,7 +54,7 @@ void util_memory_d(void *ptrn, unsigned int line, const char *file) { void *data = NULL; struct memblock_t *info = NULL; if (!ptrn) return; - data = (void*)((uintptr_t)ptrn-sizeof(struct memblock_t)); + data = (void*)((unsigned char *)ptrn-sizeof(struct memblock_t)); info = (struct memblock_t*)data; util_debug("MEM", "released: % 8u (bytes) address 0x%08X @ %s:%u\n", info->byte, data, file, line); @@ -329,7 +329,7 @@ int util_getline(char **lineptr, size_t *n, FILE *stream) { if (!lineptr || !n || !stream) return -1; if (!*lineptr) { - if (!(*lineptr = mem_a((*n=64)))) + if (!(*lineptr = (char*)mem_a((*n=64)))) return -1; } @@ -340,12 +340,12 @@ int util_getline(char **lineptr, size_t *n, FILE *stream) { int c = getc(stream); if (chr < 2) { - char *tmp = mem_a((*n+=(*n>16)?*n:64)); + char *tmp = (char*)mem_a((*n+=(*n>16)?*n:64)); if (!tmp) return -1; + memcpy(tmp, *lineptr, pos - *lineptr); chr = *n + *lineptr - pos; - strcpy(tmp,*lineptr); if (!(*lineptr = tmp)) { mem_d (tmp); return -1; @@ -371,10 +371,43 @@ int util_getline(char **lineptr, size_t *n, FILE *stream) { return (ret = pos - *lineptr); } -/* TODO: opts.c? when it gets large enugh */ -/* global options */ -bool opts_debug = false; -bool opts_memchk = false; -bool opts_darkplaces_stringtablebug = false; -bool opts_omit_nullcode = false; -int opts_compiler = COMPILER_GMQCC; +size_t util_strtocmd(const char *in, char *out, size_t outsz) { + size_t sz = 1; + for (; *in && sz < outsz; ++in, ++out, ++sz) { + if (*in == '-') + *out = '_'; + else if (isalpha(*in) && !isupper(*in)) + *out = *in + 'A' - 'a'; + else + *out = *in; + } + *out = 0; + return sz-1; +} + +size_t util_strtononcmd(const char *in, char *out, size_t outsz) { + size_t sz = 1; + for (; *in && sz < outsz; ++in, ++out, ++sz) { + if (*in == '_') + *out = '-'; + else if (isalpha(*in) && isupper(*in)) + *out = *in + 'a' - 'A'; + else + *out = *in; + } + *out = 0; + return sz-1; +} + +FILE *util_fopen(const char *filename, const char *mode) +{ +#ifdef WIN32 + FILE *out; + if (fopen_s(&out, file, mode) != 0) + return NULL; + return out; +#else + return fopen(file, mode); +#endif +} +