diff options
Diffstat (limited to 'src/base/string')
-rw-r--r-- | src/base/string/join.c | 2 | ||||
-rw-r--r-- | src/base/string/make.c | 8 | ||||
-rw-r--r-- | src/base/string/makef.c | 2 | ||||
-rw-r--r-- | src/base/string/raw/atoi.c | 11 | ||||
-rw-r--r-- | src/base/string/raw/ncopy.c | 4 | ||||
-rw-r--r-- | src/base/string/split.c | 4 |
6 files changed, 20 insertions, 11 deletions
diff --git a/src/base/string/join.c b/src/base/string/join.c index 04d4739..9286720 100644 --- a/src/base/string/join.c +++ b/src/base/string/join.c @@ -3,7 +3,7 @@ string string·join(vlong len, byte** fields, byte* sep) { - string s = string·makecap("", 0, 10); + string s = string·nnmake("", 0, 10); int j = 0; for (j = 0; j < len; j++) { diff --git a/src/base/string/make.c b/src/base/string/make.c index 50b8b98..ca38984 100644 --- a/src/base/string/make.c +++ b/src/base/string/make.c @@ -4,7 +4,7 @@ // len defines the length of the c substring that we will copy into our buffer. // the backing buffer will have capacity cap. string -string·makecap(byte *s, vlong len, vlong cap) +string·nnmake(byte *s, vlong len, vlong cap) { struct Hdr* h; @@ -34,13 +34,13 @@ cleanup: // new returns a new dynamic string object, initialized from the given c string. // the backing buffer capacity is equivalent to the string length. string -string·makelen(byte *s, vlong len) +string·nmake(byte *s, vlong len) { vlong sl = (!s) ? 0 : str·len(s); if(sl < len) panicf("attempted to take a bigger substring than string length"); vlong cap = (len == 0) ? 1 : len; - return string·makecap(s, len, cap); + return string·nnmake(s, len, cap); } // new returns a new dynamic string object, initialized from the given c string. @@ -49,5 +49,5 @@ string string·make(byte *s) { vlong len = (!s) ? 0 : str·len(s); - return string·makelen(s, len); + return string·nmake(s, len); } diff --git a/src/base/string/makef.c b/src/base/string/makef.c index 1e0d917..fb076af 100644 --- a/src/base/string/makef.c +++ b/src/base/string/makef.c @@ -9,7 +9,7 @@ string·makef(byte *fmt, ...) va_list args; char bytes[256]; - s = string·makecap(nil, 0, arrlen(bytes)); + s = string·nnmake(nil, 0, arrlen(bytes)); va_start(args, fmt); do{ diff --git a/src/base/string/raw/atoi.c b/src/base/string/raw/atoi.c index e62ec62..d407411 100644 --- a/src/base/string/raw/atoi.c +++ b/src/base/string/raw/atoi.c @@ -1,9 +1,16 @@ long str·atoi(char *s) { - long n = 0; + long neg=0, n = 0; + + /* check for sign */ + if(*s == '-') + neg=1,s++; + else if(*s == '+') + s++; + while(*s) n = 10*n + (*s++ - '0'); - return n; + return neg ? -n : +n; } diff --git a/src/base/string/raw/ncopy.c b/src/base/string/raw/ncopy.c index cf18a4b..df0e9da 100644 --- a/src/base/string/raw/ncopy.c +++ b/src/base/string/raw/ncopy.c @@ -1,5 +1,7 @@ +#include <u.h> + char * -str·ncopy(char *dst, int n, char *src) +str·ncopy(char *dst, intptr n, char *src) { while(*src && n-- > 0) *dst++ = *src++; diff --git a/src/base/string/split.c b/src/base/string/split.c index 56029e1..ead4c5b 100644 --- a/src/base/string/split.c +++ b/src/base/string/split.c @@ -18,7 +18,7 @@ string·split(string s, byte* tok) for(vlong i = 0; i < sL - tokL; i++){ if((tokL == 1 && s[i] == tokL) || !mem·compare(s + i, tokL, tok)){ - mem·bufpush(fields, string·makelen(s + start, i - start)); + mem·bufpush(fields, string·nmake(s + start, i - start)); if(fields[mem·buflen(fields) - 1] == nil) goto cleanup; start = i + tokL; @@ -26,7 +26,7 @@ string·split(string s, byte* tok) } } - mem·bufpush(fields, string·makelen(s + start, sL - start)); + mem·bufpush(fields, string·nmake(s + start, sL - start)); return fields; |