v0.32 Minor fixes
This commit is contained in:
parent
8f151ed5b4
commit
03abd6fd3c
31
gb.h
31
gb.h
|
@ -1,4 +1,4 @@
|
||||||
/* gb.h - v0.31 - Ginger Bill's C Helper Library - public domain
|
/* gb.h - v0.32 - Ginger Bill's C Helper Library - public domain
|
||||||
- no warranty implied; use at your own risk
|
- no warranty implied; use at your own risk
|
||||||
|
|
||||||
This is a single header file with a bunch of useful stuff
|
This is a single header file with a bunch of useful stuff
|
||||||
|
@ -58,6 +58,7 @@ TODOS
|
||||||
- More date & time functions
|
- More date & time functions
|
||||||
|
|
||||||
VERSION HISTORY
|
VERSION HISTORY
|
||||||
|
0.32 - Minor fixes
|
||||||
0.31 - Add gb_file_remove
|
0.31 - Add gb_file_remove
|
||||||
0.30 - Changes to gbThread (and gbMutex on Windows)
|
0.30 - Changes to gbThread (and gbMutex on Windows)
|
||||||
0.29 - Add extras for gbString
|
0.29 - Add extras for gbString
|
||||||
|
@ -1515,6 +1516,7 @@ typedef struct gbStringHeader {
|
||||||
|
|
||||||
#define GB_STRING_HEADER(str) (cast(gbStringHeader *)(str) - 1)
|
#define GB_STRING_HEADER(str) (cast(gbStringHeader *)(str) - 1)
|
||||||
|
|
||||||
|
GB_DEF gbString gb_string_make_reserve (gbAllocator a, isize capacity);
|
||||||
GB_DEF gbString gb_string_make (gbAllocator a, char const *str);
|
GB_DEF gbString gb_string_make (gbAllocator a, char const *str);
|
||||||
GB_DEF gbString gb_string_make_length (gbAllocator a, void const *str, isize num_bytes);
|
GB_DEF gbString gb_string_make_length (gbAllocator a, void const *str, isize num_bytes);
|
||||||
GB_DEF void gb_string_free (gbString str);
|
GB_DEF void gb_string_free (gbString str);
|
||||||
|
@ -6504,6 +6506,27 @@ gb_inline void gb__set_string_length (gbString str, isize len) { GB_STRING_HEAD
|
||||||
gb_inline void gb__set_string_capacity(gbString str, isize cap) { GB_STRING_HEADER(str)->capacity = cap; }
|
gb_inline void gb__set_string_capacity(gbString str, isize cap) { GB_STRING_HEADER(str)->capacity = cap; }
|
||||||
|
|
||||||
|
|
||||||
|
gbString gb_string_make_reserve(gbAllocator a, isize capacity) {
|
||||||
|
isize header_size = gb_size_of(gbStringHeader);
|
||||||
|
void *ptr = gb_alloc(a, header_size + capacity + 1);
|
||||||
|
|
||||||
|
gbString str;
|
||||||
|
gbStringHeader *header;
|
||||||
|
|
||||||
|
if (ptr == NULL) return NULL;
|
||||||
|
gb_zero_size(ptr, header_size + capacity + 1);
|
||||||
|
|
||||||
|
str = cast(char *)ptr + header_size;
|
||||||
|
header = GB_STRING_HEADER(str);
|
||||||
|
header->allocator = a;
|
||||||
|
header->length = 0;
|
||||||
|
header->capacity = capacity;
|
||||||
|
str[capacity] = '\0';
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
gb_inline gbString gb_string_make(gbAllocator a, char const *str) {
|
gb_inline gbString gb_string_make(gbAllocator a, char const *str) {
|
||||||
isize len = str ? gb_strlen(str) : 0;
|
isize len = str ? gb_strlen(str) : 0;
|
||||||
return gb_string_make_length(a, str, len);
|
return gb_string_make_length(a, str, len);
|
||||||
|
@ -6516,8 +6539,8 @@ gbString gb_string_make_length(gbAllocator a, void const *init_str, isize num_by
|
||||||
gbString str;
|
gbString str;
|
||||||
gbStringHeader *header;
|
gbStringHeader *header;
|
||||||
|
|
||||||
if (!init_str) gb_zero_size(ptr, header_size + num_bytes + 1);
|
|
||||||
if (ptr == NULL) return NULL;
|
if (ptr == NULL) return NULL;
|
||||||
|
if (!init_str) gb_zero_size(ptr, header_size + num_bytes + 1);
|
||||||
|
|
||||||
str = cast(char *)ptr + header_size;
|
str = cast(char *)ptr + header_size;
|
||||||
header = GB_STRING_HEADER(str);
|
header = GB_STRING_HEADER(str);
|
||||||
|
@ -6592,7 +6615,7 @@ gbString gb_string_append_fmt(gbString str, char const *fmt, ...) {
|
||||||
char buf[4096] = {0};
|
char buf[4096] = {0};
|
||||||
va_list va;
|
va_list va;
|
||||||
va_start(va, fmt);
|
va_start(va, fmt);
|
||||||
res = gb_snprintf_va(str, gb_count_of(buf)-1, fmt, va);
|
res = gb_snprintf_va(buf, gb_count_of(buf)-1, fmt, va)-1;
|
||||||
va_end(va);
|
va_end(va);
|
||||||
return gb_string_append_length(str, buf, res);
|
return gb_string_append_length(str, buf, res);
|
||||||
}
|
}
|
||||||
|
@ -7954,7 +7977,7 @@ gbFileTime gb_file_last_write_time(char const *filepath) {
|
||||||
time_t result = 0;
|
time_t result = 0;
|
||||||
struct stat file_stat;
|
struct stat file_stat;
|
||||||
|
|
||||||
if (stat(filepath, &file_stat)) {
|
if (stat(filepath, &file_stat) == 0) {
|
||||||
result = file_stat.st_mtime;
|
result = file_stat.st_mtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue