aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2021-12-10 09:16:08 -0800
committerNicholas Noll <nbnoll@eml.cc>2021-12-10 09:16:08 -0800
commit25537c3d3b9b68af91573dec39d1f46c3d97f735 (patch)
tree3f2ea6207a28fe9610d767dd78fb24d17f858ce0 /src
parentf4aef385bdd41b02ef58b5366fa9318ecdc6e37e (diff)
Checkin: small sprawling updates
Small touches to multiple locations in base. Nothing major
Diffstat (limited to 'src')
-rw-r--r--src/base/math/round.c13
-rw-r--r--src/base/mem/arena.c4
-rw-r--r--src/base/mem/compare.c2
-rw-r--r--src/base/mem/interface.c9
-rw-r--r--src/base/sort/double.c2
-rw-r--r--src/base/sort/float.c2
-rw-r--r--src/base/sort/int.c2
-rw-r--r--src/base/sort/int16.c2
-rw-r--r--src/base/sort/int32.c2
-rw-r--r--src/base/sort/int64.c2
-rw-r--r--src/base/sort/int8.c2
-rw-r--r--src/base/sort/string.c2
-rw-r--r--src/base/sort/uint.c2
-rw-r--r--src/base/sort/uint16.c2
-rw-r--r--src/base/sort/uint32.c2
-rw-r--r--src/base/sort/uint64.c2
-rw-r--r--src/base/sort/uint8.c2
-rw-r--r--src/base/string/join.c2
-rw-r--r--src/base/string/make.c8
-rw-r--r--src/base/string/makef.c2
-rw-r--r--src/base/string/raw/atoi.c11
-rw-r--r--src/base/string/raw/ncopy.c4
-rw-r--r--src/base/string/split.c4
-rw-r--r--src/base/test.c2
-rw-r--r--src/base/utf/printable.c8
-rw-r--r--src/base/utf/rules.mk1
-rw-r--r--src/cmd/core/basename.c1
-rw-r--r--src/cmd/core/cat.c5
-rw-r--r--src/cmd/core/date.c1
29 files changed, 65 insertions, 38 deletions
diff --git a/src/base/math/round.c b/src/base/math/round.c
new file mode 100644
index 0000000..a815152
--- /dev/null
+++ b/src/base/math/round.c
@@ -0,0 +1,13 @@
+#include <u.h>
+#include <base.h>
+
+double
+math·round(double x)
+{
+ double f;
+
+ f = math·floor(x);
+ if((x-f) > 0.5)
+ return f+1;
+ return f;
+}
diff --git a/src/base/mem/arena.c b/src/base/mem/arena.c
index cb1af74..32c4ea8 100644
--- a/src/base/mem/arena.c
+++ b/src/base/mem/arena.c
@@ -26,13 +26,13 @@ struct mem·Arena
};
static void*
-·arenaalloc(void *heap, long n, uintptr size)
+·arenaalloc(void *heap, uintptr n, uintptr size)
{
return mem·arenaalloc(heap, n, size);
}
static void*
-·arenarealloc(void *heap, void *old, long n, uintptr size)
+·arenarealloc(void *heap, void *old, uintptr n, uintptr size)
{
/* does not free */
return mem·arenaalloc(heap, n, size);
diff --git a/src/base/mem/compare.c b/src/base/mem/compare.c
index a2cdd1f..eadd1fa 100644
--- a/src/base/mem/compare.c
+++ b/src/base/mem/compare.c
@@ -1,7 +1,7 @@
#include <u.h>
int
-mem·compare(void *qry, void *ref, uintptr size)
+mem·compare(void *qry, uintptr size, void *ref)
{
intptr i;
char *q=qry, *r=ref;
diff --git a/src/base/mem/interface.c b/src/base/mem/interface.c
index aa76c85..374fac0 100644
--- a/src/base/mem/interface.c
+++ b/src/base/mem/interface.c
@@ -6,17 +6,12 @@ static void
}
static void *
-·alloc(void *_, uint n, ulong size) {
- return malloc(n*size);
-}
-
-static void *
-·calloc(void *_, long n, ulong size) {
+·calloc(void *_, uintptr n, uintptr size) {
return calloc(n, size);
}
static void *
-·realloc(void *_, void *ptr, long n, ulong size) {
+·realloc(void *_, void *ptr, uintptr n, uintptr size) {
return realloc(ptr, n*size);
}
diff --git a/src/base/sort/double.c b/src/base/sort/double.c
index c3feac2..8dfc721 100644
--- a/src/base/sort/double.c
+++ b/src/base/sort/double.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·double(uintptr sz, double arr[])
+sort·double(double arr[],uintptr sz)
{
double tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/float.c b/src/base/sort/float.c
index 57bd482..a62af54 100644
--- a/src/base/sort/float.c
+++ b/src/base/sort/float.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·float(uintptr sz, float arr[])
+sort·float(float arr[], uintptr sz)
{
float tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/int.c b/src/base/sort/int.c
index 33e1def..8e7cae7 100644
--- a/src/base/sort/int.c
+++ b/src/base/sort/int.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·int(uintptr sz, int arr[])
+sort·int(int arr[], uintptr sz)
{
int tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/int16.c b/src/base/sort/int16.c
index 072a3eb..ab690fb 100644
--- a/src/base/sort/int16.c
+++ b/src/base/sort/int16.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·int16(uintptr sz, int16 arr[])
+sort·int16(int16 arr[], uintptr sz)
{
int16 tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/int32.c b/src/base/sort/int32.c
index 27b3b7b..bf209f0 100644
--- a/src/base/sort/int32.c
+++ b/src/base/sort/int32.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·int32(uintptr sz, int32 arr[])
+sort·int32(int32 arr[], uintptr sz)
{
int32 tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/int64.c b/src/base/sort/int64.c
index b3fa5d4..21387f6 100644
--- a/src/base/sort/int64.c
+++ b/src/base/sort/int64.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·int64(uintptr sz, int64 arr[])
+sort·int64(int64 arr[], uintptr sz)
{
int64 tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/int8.c b/src/base/sort/int8.c
index 5848e6e..fab5dc3 100644
--- a/src/base/sort/int8.c
+++ b/src/base/sort/int8.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·int8(uintptr sz, int8 arr[])
+sort·int8(int8 arr[], uintptr sz)
{
int8 tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/string.c b/src/base/sort/string.c
index e8fae66..8f9d05a 100644
--- a/src/base/sort/string.c
+++ b/src/base/sort/string.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·string(uintptr sz, byte* arr[])
+sort·string(byte* arr[], uintptr sz)
{
byte *tmp;
#define LESS(i, j) (str·compare(arr[i], arr[j]) < 0)
diff --git a/src/base/sort/uint.c b/src/base/sort/uint.c
index 5b27330..68c9a70 100644
--- a/src/base/sort/uint.c
+++ b/src/base/sort/uint.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·uint(uintptr sz, uint arr[])
+sort·uint(uint arr[], uintptr sz)
{
uint tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/uint16.c b/src/base/sort/uint16.c
index 2b635b4..d0e4c05 100644
--- a/src/base/sort/uint16.c
+++ b/src/base/sort/uint16.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·uint16(uintptr sz, uint16 arr[])
+sort·uint16(uint16 arr[], uintptr sz)
{
uint16 tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/uint32.c b/src/base/sort/uint32.c
index 99a58cf..ccc8499 100644
--- a/src/base/sort/uint32.c
+++ b/src/base/sort/uint32.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·uint32(uintptr sz, uint32 arr[])
+sort·uint32(uint32 arr[], uintptr sz)
{
uint32 tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/uint64.c b/src/base/sort/uint64.c
index 2769825..4134f33 100644
--- a/src/base/sort/uint64.c
+++ b/src/base/sort/uint64.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·uint64(uintptr sz, uint64 arr[])
+sort·uint64(uint64 arr[], uintptr sz)
{
uint64 tmp;
#define LESS(i, j) (arr[i] < arr[j])
diff --git a/src/base/sort/uint8.c b/src/base/sort/uint8.c
index ff02b3c..ef3ab1c 100644
--- a/src/base/sort/uint8.c
+++ b/src/base/sort/uint8.c
@@ -1,7 +1,7 @@
#include "internal.h"
void
-sort·uint8(uintptr sz, uint8 arr[])
+sort·uint8(uint8 arr[], uintptr sz)
{
uint8 tmp;
#define LESS(i, j) (arr[i] < arr[j])
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;
diff --git a/src/base/test.c b/src/base/test.c
index 6baaf78..ceb9532 100644
--- a/src/base/test.c
+++ b/src/base/test.c
@@ -23,7 +23,7 @@ test·sort()
test[i] = rng·randi(1000000);
t = clock();
- sort·int(arrlen(test), test);
+ sort·int(test, arrlen(test));
t = clock() - t;
fmt·print("inlined code took %f ms to execute\n", 1000.*t/CLOCKS_PER_SEC);
diff --git a/src/base/utf/printable.c b/src/base/utf/printable.c
new file mode 100644
index 0000000..6a8219b
--- /dev/null
+++ b/src/base/utf/printable.c
@@ -0,0 +1,8 @@
+#include "internal.h"
+
+/* TODO: this is just ascii... */
+int
+utf8·printable(rune r)
+{
+ return (unsigned)r-0x20 < 0x5f;
+}
diff --git a/src/base/utf/rules.mk b/src/base/utf/rules.mk
index 0ed2f8b..934e376 100644
--- a/src/base/utf/rules.mk
+++ b/src/base/utf/rules.mk
@@ -8,6 +8,7 @@ SRCS_$(d)+=\
$(d)/utf/findlast.c\
$(d)/utf/canfit.c\
$(d)/utf/runelen.c\
+ $(d)/utf/printable.c\
$(d)/utf/len.c\
$(d)/utf/runetype-$(UNICODE).c\
$(d)/utf/runewidth-$(UNICODE).c
diff --git a/src/cmd/core/basename.c b/src/cmd/core/basename.c
index 6b84812..0015f5c 100644
--- a/src/cmd/core/basename.c
+++ b/src/cmd/core/basename.c
@@ -32,5 +32,6 @@ main(int argc, char *argv[])
p[n] = 0;
}
sys·write(1,p,str·len(p),&x);
+ sys·write(1,"\n",1, &x);
return 0;
}
diff --git a/src/cmd/core/cat.c b/src/cmd/core/cat.c
index aeed1be..92b082d 100644
--- a/src/cmd/core/cat.c
+++ b/src/cmd/core/cat.c
@@ -11,15 +11,16 @@ usage(void)
static void
cat(int fd, char *s)
{
+ int err;
intptr nr, nw;
char buf[8192];
- while(!(sys·read(fd, buf, sizeof(buf), &nr))){
+ while(!(err=sys·read(fd, buf, sizeof(buf), &nr)) && nr>0){
if(sys·write(1, buf, nr, &nw) || nr != nw)
fmt·panic("write error copying %s: %r", s);
}
- if(nr<0)
+ if(err)
fmt·panic("error reading %s: %r", s);
}
diff --git a/src/cmd/core/date.c b/src/cmd/core/date.c
index 225333f..09ec39a 100644
--- a/src/cmd/core/date.c
+++ b/src/cmd/core/date.c
@@ -1,6 +1,5 @@
#include <u.h>
#include <base.h>
-#include <libfmt.h>
static void
usage(void)