More cleanup

This commit is contained in:
Dale Weiler 2013-10-11 03:21:44 -04:00
parent 12a864abf5
commit 5138a25420
5 changed files with 101 additions and 71 deletions

5
ansi.c
View file

@ -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);
}

View file

@ -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
View file

@ -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
View file

@ -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);
}

View file

@ -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