summaryrefslogtreecommitdiff
path: root/quadnames.c
diff options
context:
space:
mode:
authorglenda <glenda@cirno>2022-09-18 14:55:48 +0000
committerglenda <glenda@cirno>2022-09-18 14:55:48 +0000
commit269c81f0217999367b4180e6a795142cbb2d02e7 (patch)
tree5b9299a3a7a2304ebc4259c1570c378e17f1e28f /quadnames.c
parent6430127cc4503e2e7e40f86ccc68594ced055274 (diff)
Implement remote message passing via pipes!
Diffstat (limited to 'quadnames.c')
-rw-r--r--quadnames.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/quadnames.c b/quadnames.c
index b7c04d0..29e973d 100644
--- a/quadnames.c
+++ b/quadnames.c
@@ -681,17 +681,19 @@ quadwrite(Array *fd, Array *data)
{
if(GetType(fd) != AtypeInt || GetSize(fd) != 1)
throwerror(L"Invalid fd", EDomain);
- if(GetType(data) != AtypeInt || GetRank(fd) > 1)
- throwerror(L"Data must be a scalar or vector of bytes", EDomain);
+
+ if((GetType(data) != AtypeInt && GetType(data) != AtypeFloat) || GetRank(data) > 1)
+ throwerror(L"Data must be a scalar or vector of bytes!", EDomain);
u8int *raw = emalloc(GetSize(data));
for(int i = 0; i < GetSize(data); i++){
- u64int v = data->intdata[i];
- if(v > 255){
- free(raw);
- throwerror(L"Data values must be bytes", EDomain);
- }else
- raw[i] = v;
+ u8int v;
+ switch(GetType(data)){
+ case AtypeInt: v = data->intdata[i]; break;
+ case AtypeFloat: v = data->floatdata[i]; break;
+ default: v = 0; break;
+ }
+ raw[i] = v;
}
long ret = write(fd->intdata[0], raw, GetSize(data));
free(raw);