mirror of
https://github.com/DarkPlacesEngine/gmqcc.git
synced 2025-03-30 06:21:45 +00:00
More cleanup
This commit is contained in:
parent
12a864abf5
commit
5138a25420
5 changed files with 101 additions and 71 deletions
5
ansi.c
5
ansi.c
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "platform.h"
|
||||
|
||||
|
@ -138,3 +139,7 @@ int platform_closedir(DIR *dir) {
|
|||
struct dirent *platform_readdir(DIR *dir) {
|
||||
return readdir(dir);
|
||||
}
|
||||
|
||||
int platform_isatty(int fd) {
|
||||
return isatty(fd);
|
||||
}
|
||||
|
|
22
conout.c
22
conout.c
|
@ -20,22 +20,10 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#include "gmqcc.h"
|
||||
#include <unistd.h>
|
||||
|
||||
/*
|
||||
* isatty/STDERR_FILENO/STDOUT_FILNO
|
||||
* + some other things likewise.
|
||||
*/
|
||||
#ifndef _WIN32
|
||||
# include <unistd.h>
|
||||
#else
|
||||
# include <io.h>
|
||||
/*
|
||||
* Windows and it's posix underscore bullshit. We simply fix this
|
||||
* with yay, another macro :P
|
||||
*/
|
||||
# define isatty _isatty
|
||||
#endif
|
||||
#include "gmqcc.h"
|
||||
#include "platform.h"
|
||||
|
||||
#define GMQCC_IS_STDOUT(X) ((FILE*)((void*)X) == stdout)
|
||||
#define GMQCC_IS_STDERR(X) ((FILE*)((void*)X) == stderr)
|
||||
|
@ -198,9 +186,9 @@ static con_t console;
|
|||
*/
|
||||
static void con_enablecolor(void) {
|
||||
if (console.handle_err == stderr || console.handle_err == stdout)
|
||||
console.color_err = !!(isatty(STDERR_FILENO));
|
||||
console.color_err = !!(platform_isatty(STDERR_FILENO));
|
||||
if (console.handle_out == stderr || console.handle_out == stdout)
|
||||
console.color_out = !!(isatty(STDOUT_FILENO));
|
||||
console.color_out = !!(platform_isatty(STDOUT_FILENO));
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
75
gmqcc.h
75
gmqcc.h
|
@ -289,9 +289,7 @@ GMQCC_IND_STRING(GMQCC_VERSION_PATCH) \
|
|||
# include <dirent.h>
|
||||
#endif /*! _WIN32 && !defined(__MINGW32__) */
|
||||
|
||||
/*===================================================================*/
|
||||
/*=========================== stat.c ================================*/
|
||||
/*===================================================================*/
|
||||
/* stat.c */
|
||||
void stat_info (void);
|
||||
char *stat_mem_strdup (const char *, size_t, const char *, bool);
|
||||
void *stat_mem_reallocate(void *, size_t, size_t, const char *);
|
||||
|
@ -307,9 +305,7 @@ void *stat_mem_allocate (size_t, size_t, const char *);
|
|||
#define util_strdup(SRC) stat_mem_strdup((char*)(SRC), __LINE__, __FILE__, false)
|
||||
#define util_strdupe(SRC) stat_mem_strdup((char*)(SRC), __LINE__, __FILE__, true)
|
||||
|
||||
/*===================================================================*/
|
||||
/*=========================== util.c ================================*/
|
||||
/*===================================================================*/
|
||||
/* util.c */
|
||||
|
||||
/*
|
||||
* Microsoft implements against the spec versions of ctype.h. Which
|
||||
|
@ -329,10 +325,9 @@ void *stat_mem_allocate (size_t, size_t, const char *);
|
|||
#define util_isprint(a) (((unsigned)(a)-0x20) < 0x5F)
|
||||
#define util_isspace(a) (((a) >= 9 && (a) <= 13) || (a) == ' ')
|
||||
|
||||
bool util_filexists (const char *);
|
||||
bool util_strupper (const char *);
|
||||
bool util_strdigit (const char *);
|
||||
void util_endianswap (void *, size_t, unsigned int);
|
||||
void util_endianswap (void *, size_t, unsigned int);
|
||||
|
||||
size_t util_strtocmd (const char *, char *, size_t);
|
||||
size_t util_strtononcmd (const char *, char *, size_t);
|
||||
|
@ -381,13 +376,6 @@ void _util_vec_grow(void **a, size_t i, size_t s);
|
|||
#define vec_append(A,N,S) ((void)(memcpy(vec_add((A), (N)), (S), (N) * sizeof(*(S)))))
|
||||
#define vec_remove(A,I,N) ((void)(memmove((A)+(I),(A)+((I)+(N)),sizeof(*(A))*(vec_meta(A)->used-(I)-(N))),vec_meta(A)->used-=(N)))
|
||||
|
||||
typedef struct correct_trie_s {
|
||||
void *value;
|
||||
struct correct_trie_s *entries;
|
||||
} correct_trie_t;
|
||||
|
||||
correct_trie_t* correct_trie_new(void);
|
||||
|
||||
typedef struct hash_table_s {
|
||||
size_t size;
|
||||
struct hash_node_t **table;
|
||||
|
@ -435,10 +423,8 @@ void util_htrm (hash_table_t *ht, const char *key, void (*cb)(void*));
|
|||
void *util_htget (hash_table_t *ht, const char *key);
|
||||
void *util_htgeth(hash_table_t *ht, const char *key, size_t hash);
|
||||
|
||||
/*===================================================================*/
|
||||
/*============================ file.c ===============================*/
|
||||
/*===================================================================*/
|
||||
/* file handling */
|
||||
|
||||
/* fs.c */
|
||||
void fs_file_close (FILE *);
|
||||
int fs_file_error (FILE *);
|
||||
int fs_file_getc (FILE *);
|
||||
|
@ -453,15 +439,19 @@ size_t fs_file_write (const void *, size_t, size_t, FILE *);
|
|||
FILE *fs_file_open (const char *, const char *);
|
||||
int fs_file_getline(char **, size_t *, FILE *);
|
||||
|
||||
/* directory handling */
|
||||
int fs_dir_make (const char *);
|
||||
DIR *fs_dir_open (const char *);
|
||||
int fs_dir_close (DIR *);
|
||||
struct dirent *fs_dir_read (DIR *);
|
||||
|
||||
/*===================================================================*/
|
||||
/*=========================== correct.c =============================*/
|
||||
/*===================================================================*/
|
||||
/* correct.c */
|
||||
typedef struct correct_trie_s {
|
||||
void *value;
|
||||
struct correct_trie_s *entries;
|
||||
} correct_trie_t;
|
||||
|
||||
correct_trie_t* correct_trie_new(void);
|
||||
|
||||
typedef struct {
|
||||
char ***edits;
|
||||
size_t **lens;
|
||||
|
@ -473,9 +463,8 @@ char *correct_str (correction_t *, correct_trie_t*, const char *);
|
|||
void correct_init(correction_t *);
|
||||
void correct_free(correction_t *);
|
||||
|
||||
/*===================================================================*/
|
||||
/*=========================== code.c ================================*/
|
||||
/*===================================================================*/
|
||||
|
||||
/* code.c */
|
||||
|
||||
/* Note: if you change the order, fix type_sizeof in ir.c */
|
||||
enum {
|
||||
|
@ -772,9 +761,7 @@ void code_push_statement(code_t *, prog_section_statement_t *stmt, lex_ctx_
|
|||
void code_pop_statement (code_t *);
|
||||
|
||||
|
||||
/*===================================================================*/
|
||||
/*============================ con.c ================================*/
|
||||
/*===================================================================*/
|
||||
/* conout.c */
|
||||
enum {
|
||||
CON_BLACK = 30,
|
||||
CON_RED,
|
||||
|
@ -822,10 +809,8 @@ bool GMQCC_WARN compile_warning (lex_ctx_t ctx, int warntype, const char *fmt, .
|
|||
bool GMQCC_WARN vcompile_warning(lex_ctx_t ctx, int warntype, const char *fmt, va_list ap);
|
||||
void compile_show_werrors(void);
|
||||
|
||||
/*===================================================================*/
|
||||
/*============================= ir.c ================================*/
|
||||
/*===================================================================*/
|
||||
|
||||
/* ir.c */
|
||||
/* TODO: cleanup */
|
||||
enum store_types {
|
||||
store_global,
|
||||
store_local, /* local, assignable for now, should get promoted later */
|
||||
|
@ -838,9 +823,7 @@ typedef struct {
|
|||
qcfloat_t x, y, z;
|
||||
} vec3_t;
|
||||
|
||||
/*===================================================================*/
|
||||
/*============================= exec.c ==============================*/
|
||||
/*===================================================================*/
|
||||
/* exec.c */
|
||||
|
||||
/* TODO: cleanup */
|
||||
/*
|
||||
|
@ -933,9 +916,7 @@ qcany_t* prog_getedict (qc_program_t *prog, qcint_t e);
|
|||
qcint_t prog_tempstring(qc_program_t *prog, const char *_str);
|
||||
|
||||
|
||||
/*===================================================================*/
|
||||
/*===================== parser.c commandline ========================*/
|
||||
/*===================================================================*/
|
||||
/* parser.c */
|
||||
struct parser_s;
|
||||
struct parser_s *parser_create (void);
|
||||
bool parser_compile_file (struct parser_s *parser, const char *);
|
||||
|
@ -943,9 +924,7 @@ bool parser_compile_string(struct parser_s *parser, const char *, co
|
|||
bool parser_finish (struct parser_s *parser, const char *);
|
||||
void parser_cleanup (struct parser_s *parser);
|
||||
|
||||
/*===================================================================*/
|
||||
/*====================== ftepp.c commandline ========================*/
|
||||
/*===================================================================*/
|
||||
/* ftepp.c */
|
||||
struct ftepp_s;
|
||||
struct ftepp_s *ftepp_create (void);
|
||||
bool ftepp_preprocess_file (struct ftepp_s *ftepp, const char *filename);
|
||||
|
@ -956,9 +935,7 @@ void ftepp_flush (struct ftepp_s *ftepp);
|
|||
void ftepp_add_define (struct ftepp_s *ftepp, const char *source, const char *name);
|
||||
void ftepp_add_macro (struct ftepp_s *ftepp, const char *name, const char *value);
|
||||
|
||||
/*===================================================================*/
|
||||
/*======================= main.c commandline ========================*/
|
||||
/*===================================================================*/
|
||||
/* main.c */
|
||||
|
||||
#if 1
|
||||
/* Helpers to allow for a whole lot of flags. Otherwise we'd limit
|
||||
|
@ -976,16 +953,12 @@ typedef uint32_t longbit;
|
|||
#define LONGBIT_SET(B, I) ((B) = (I))
|
||||
#endif
|
||||
|
||||
/*===================================================================*/
|
||||
/*============================= utf8.c ==============================*/
|
||||
/*===================================================================*/
|
||||
/* utf.8 */
|
||||
typedef long utf8ch_t;
|
||||
int utf8_from(char *, utf8ch_t);
|
||||
int utf8_to(utf8ch_t *, const unsigned char *, size_t);
|
||||
|
||||
/*===================================================================*/
|
||||
/*============================= opts.c ==============================*/
|
||||
/*===================================================================*/
|
||||
/* opts.c */
|
||||
typedef struct {
|
||||
const char *name;
|
||||
longbit bit;
|
||||
|
|
67
msvc.c
67
msvc.c
|
@ -20,7 +20,11 @@
|
|||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
#include "gmqcc.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <io.h>
|
||||
|
||||
#include "platform.h"
|
||||
|
||||
#define CTIME_BUFFER 64
|
||||
#define GETENV_BUFFER 4096
|
||||
|
@ -112,3 +116,64 @@ const char *platform_strerror(int err) {
|
|||
strerror_s(buffer, STRERROR_BUFFER, err);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
FILE *platform_fopen(const char *filename, const char *mode) {
|
||||
FILE *handle;
|
||||
return (fopen_s(&handle, filename, mode) != 0) ? NULL : handle;
|
||||
}
|
||||
|
||||
size_t platform_fread(void *ptr, size_t size, size_t count, FILE *stream) {
|
||||
return fread_s(ptr, size, size, count, stream);
|
||||
}
|
||||
|
||||
size_t platform_fwrite(const void *ptr, size_t size, size_t count, FILE *stream) {
|
||||
return fwrite(ptr, size, count, stream);
|
||||
}
|
||||
|
||||
int platform_vfprintf(FILE *stream, const char *format, va_list arg) {
|
||||
return vfprintf_s(stream, format, arg);
|
||||
}
|
||||
|
||||
int platform_fclose(FILE *stream) {
|
||||
return fclose(stream);
|
||||
}
|
||||
|
||||
int platform_ferror(FILE *stream) {
|
||||
return ferror(stream);
|
||||
}
|
||||
|
||||
int platform_fgetc(FILE *stream) {
|
||||
return fgetc(stream);
|
||||
}
|
||||
|
||||
int platform_fputs(const char *str, FILE *stream) {
|
||||
return fputs(str, stream);
|
||||
}
|
||||
|
||||
int platform_fseek(FILE *stream, long offset, int origin) {
|
||||
return fseek(stream, offset, origin);
|
||||
}
|
||||
|
||||
long platform_ftell(FILE *stream) {
|
||||
return ftell(stream);
|
||||
}
|
||||
|
||||
int platform_mkdir(const char *path, int mode) {
|
||||
return mkdir(path, mode);
|
||||
}
|
||||
|
||||
DIR *platform_opendir(const char *path) {
|
||||
return opendir(path);
|
||||
}
|
||||
|
||||
int platform_closedir(DIR *dir) {
|
||||
return closedir(dir);
|
||||
}
|
||||
|
||||
struct dirent *platform_readdir(DIR *dir) {
|
||||
return readdir(dir);
|
||||
}
|
||||
|
||||
int platform_istty(int fd) {
|
||||
return _istty(fd);
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
|
||||
#ifndef GMQCC_PLATFORM_HDR
|
||||
#define GMQCC_PLATFORM_HDR
|
||||
#include <stddef.h>
|
||||
#include <stdarg.h>
|
||||
#include <time.h>
|
||||
#include <stdio.h>
|
||||
|
@ -59,6 +58,6 @@ int platform_mkdir(const char *path, int mode);
|
|||
DIR *platform_opendir(const char *path);
|
||||
int platform_closedir(DIR *dir);
|
||||
struct dirent *platform_readdir(DIR *dir);
|
||||
|
||||
int platform_isatty(int fd);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue