added some utility functions + fixed error in ostrAppendview
This commit is contained in:
parent
aa39e2563d
commit
be71719f73
7 changed files with 47 additions and 18 deletions
18
dir.c
18
dir.c
|
|
@ -81,6 +81,15 @@ dir_t dirOpen(const char *path) {
|
|||
return dir;
|
||||
}
|
||||
|
||||
void dirClose(dir_t ctx) {
|
||||
free(ctx);
|
||||
}
|
||||
|
||||
bool dirValid(dir_t ctx) {
|
||||
_dir_internal_t *dir = (_dir_internal_t*)ctx;
|
||||
return dir->handle != INVALID_HANDLE_VALUE;
|
||||
}
|
||||
|
||||
dir_entry_t *dirNext(dir_t ctx) {
|
||||
_dir_internal_t *dir = (_dir_internal_t*)ctx;
|
||||
strFree(&dir->cur.name);
|
||||
|
|
@ -90,10 +99,6 @@ dir_entry_t *dirNext(dir_t ctx) {
|
|||
return &dir->cur;
|
||||
}
|
||||
|
||||
void dirClose(dir_t ctx) {
|
||||
free(ctx);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include <dirent.h>
|
||||
|
|
@ -127,6 +132,11 @@ void dirClose(dir_t ctx) {
|
|||
}
|
||||
}
|
||||
|
||||
bool dirValid(dir_t ctx) {
|
||||
_dir_internal_t *dir = (_dir_internal_t*)ctx;
|
||||
return dir->handle != NULL;
|
||||
}
|
||||
|
||||
dir_entry_t *dirNext(dir_t ctx) {
|
||||
if(!ctx) return NULL;
|
||||
_dir_internal_t *in = (_dir_internal_t *)ctx;
|
||||
|
|
|
|||
2
dir.h
2
dir.h
|
|
@ -22,6 +22,8 @@ enum {
|
|||
dir_t dirOpen(const char *path);
|
||||
void dirClose(dir_t ctx);
|
||||
|
||||
bool dirValid(dir_t ctx);
|
||||
|
||||
dir_entry_t *dirNext(dir_t ctx);
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
|||
23
file.c
23
file.c
|
|
@ -7,21 +7,20 @@
|
|||
#include <windows.h>
|
||||
|
||||
static DWORD _toWin32Access(int mode) {
|
||||
switch(mode) {
|
||||
case FILE_READ: return GENERIC_READ;
|
||||
case FILE_WRITE: return GENERIC_WRITE;
|
||||
case FILE_BOTH: return GENERIC_READ | GENERIC_WRITE;
|
||||
default: fatal("unrecognized mode: %d", mode); return 0;
|
||||
}
|
||||
if(mode & FILE_READ) return GENERIC_READ;
|
||||
if(mode & FILE_WRITE) return GENERIC_WRITE;
|
||||
if(mode & FILE_BOTH) return GENERIC_READ | GENERIC_WRITE;
|
||||
fatal("unrecognized access mode: %d", mode);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static DWORD _toWin32Creation(int mode) {
|
||||
switch(mode) {
|
||||
case FILE_READ: return OPEN_EXISTING;
|
||||
case FILE_WRITE: return OPEN_ALWAYS;
|
||||
case FILE_BOTH: return OPEN_ALWAYS;
|
||||
default: fatal("unrecognized mode: %d", mode); return 0;
|
||||
}
|
||||
if(mode & FILE_READ) return OPEN_EXISTING;
|
||||
if(mode == (FILE_WRITE | FILE_CLEAR)) return CREATE_ALWAYS;
|
||||
if(mode & FILE_WRITE) return OPEN_ALWAYS;
|
||||
if(mode & FILE_BOTH) return OPEN_ALWAYS;
|
||||
fatal("unrecognized creation mode: %d", mode);
|
||||
return 0;
|
||||
}
|
||||
|
||||
file_t fileOpen(const char *fname, int mode) {
|
||||
|
|
|
|||
5
file.h
5
file.h
|
|
@ -8,7 +8,10 @@ extern "C" {
|
|||
#include "str.h"
|
||||
|
||||
enum {
|
||||
FILE_READ, FILE_WRITE, FILE_BOTH
|
||||
FILE_READ = 1 << 0,
|
||||
FILE_WRITE = 1 << 1,
|
||||
FILE_CLEAR = 1 << 2,
|
||||
FILE_BOTH = 1 << 3
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
|
|
|
|||
12
str.c
12
str.c
|
|
@ -263,6 +263,18 @@ str_t strToLower(str_t ctx) {
|
|||
return str;
|
||||
}
|
||||
|
||||
void strUpper(str_t *ctx) {
|
||||
for(size_t i = 0; i < ctx->len; ++i) {
|
||||
ctx->buf[i] = (char)toupper(ctx->buf[i]);
|
||||
}
|
||||
}
|
||||
|
||||
str_t strToUpper(str_t ctx) {
|
||||
str_t str = strDup(ctx);
|
||||
strUpper(&str);
|
||||
return str;
|
||||
}
|
||||
|
||||
// == STRVIEW_T ====================================================
|
||||
|
||||
strview_t strvInit(const char *cstr) {
|
||||
|
|
|
|||
3
str.h
3
str.h
|
|
@ -68,6 +68,9 @@ strview_t strSubview(str_t *ctx, size_t pos, size_t len);
|
|||
void strLower(str_t *ctx);
|
||||
str_t strToLower(str_t ctx);
|
||||
|
||||
void strUpper(str_t *ctx);
|
||||
str_t strToUpper(str_t ctx);
|
||||
|
||||
#ifdef STR_TESTING
|
||||
void strTest(void);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -534,7 +534,7 @@ void ostrAppenddouble(str_ostream_t *ctx, double val) {
|
|||
}
|
||||
|
||||
void ostrAppendview(str_ostream_t *ctx, strview_t view) {
|
||||
if((ctx->allocated - ctx->size) < view.len) {
|
||||
if((ctx->allocated - ctx->size) <= view.len) {
|
||||
_ostrRealloc(ctx, view.len + 1);
|
||||
}
|
||||
memcpy(ctx->buf + ctx->size, view.buf, view.len);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue