summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTylo <[email protected]>2020-05-18 16:36:29 +0200
committerTylo <[email protected]>2020-05-18 16:36:29 +0200
commit2ab143075b3734c1fe83b840ff4b0a7681113616 (patch)
treec8bec832519e96b37937efe2d2f6a57cdc22cf4e
parent98bbba1ad6fb1ebc2c36f40e0e577ccb63fdcf52 (diff)
downloadSTC-modified-2ab143075b3734c1fe83b840ff4b0a7681113616.tar.gz
STC-modified-2ab143075b3734c1fe83b840ff4b0a7681113616.zip
Added cstring_printf(s, fmt...) and simlilar constructor cstring_makeFmt() and renamed *copy to *assignS
-rw-r--r--_config.yml1
-rw-r--r--stc/cstring.h34
2 files changed, 30 insertions, 5 deletions
diff --git a/_config.yml b/_config.yml
deleted file mode 100644
index c50ff38d..00000000
--- a/_config.yml
+++ /dev/null
@@ -1 +0,0 @@
-theme: jekyll-theme-merlot \ No newline at end of file
diff --git a/stc/cstring.h b/stc/cstring.h
index 76fa0031..ba9b622e 100644
--- a/stc/cstring.h
+++ b/stc/cstring.h
@@ -27,6 +27,8 @@
#include <stdbool.h>
#include <string.h>
#include <stdint.h>
+#include <stdarg.h>
+#include <stdio.h>
#include "cdefs.h"
@@ -84,7 +86,7 @@ cstring_makeN(const char* str, size_t len) {
CString cs = cstring_init;
if (len) {
cstring_reserve(&cs, len);
- memcpy(cs.str, str, len);
+ strncpy(cs.str, str, len);
cs.str[ _cstring_size(cs) = len ] = '\0';
}
return cs;
@@ -96,7 +98,7 @@ cstring_make(const char* str) {
}
static inline CString
-cstring_clone(CString cs) {
+cstring_makeCopy(CString cs) {
return cstring_makeN(cs.str, cstring_size(cs));
}
@@ -128,9 +130,8 @@ static inline CString*
cstring_assign(CString* self, const char* str) {
return cstring_assignN(self, str, strlen(str));
}
-
static inline CString*
-cstring_copy(CString* self, CString cs2) {
+cstring_assignS(CString* self, CString cs2) {
return cstring_assignN(self, cs2.str, cstring_size(cs2));
}
@@ -156,6 +157,31 @@ cstring_appendS(CString* self, CString cs2) {
return cstring_appendN(self, cs2.str, cstring_size(cs2));
}
+static inline CString*
+cstring_printf(CString* self, const char* fmt, ...) {
+ size_t len = 0;
+ va_list args;
+ va_start(args, fmt);
+ len = vsnprintf(NULL, len, fmt, args);
+ cstring_reserve(self, len);
+ vsprintf(self->str, fmt, args);
+ _cstring_size(*self) = len;
+ va_end(args);
+ return self;
+}
+static inline CString
+cstring_makeFmt(const char* fmt, ...) {
+ CString tmp = cstring_init;
+ size_t len = 0;
+ va_list args;
+ va_start(args, fmt);
+ len = vsnprintf(NULL, len, fmt, args);
+ cstring_reserve(&tmp, len);
+ vsprintf(tmp.str, fmt, args);
+ _cstring_size(tmp) = len;
+ va_end(args);
+ return tmp;
+}
static inline void _cstring_internalMove(CString* self, size_t pos1, size_t pos2) {
if (pos1 == pos2)