diff --git a/bin/ikarus b/bin/ikarus index 8b8109b..b68fd99 100755 Binary files a/bin/ikarus and b/bin/ikarus differ diff --git a/bin/ikarus-runtime.c b/bin/ikarus-runtime.c index 03871c6..7eca7ae 100644 --- a/bin/ikarus-runtime.c +++ b/bin/ikarus-runtime.c @@ -467,8 +467,8 @@ ikp ik_uuid(ikp str){ } uuid_strlen = strlen(uuid_chars); } - int n = unfix(ref(str, off_string_length)); - unsigned char* data = str+off_string_data; + int n = unfix(ref(str, off_bytevector_length)); + unsigned char* data = str+off_bytevector_data; read(fd, data, n); unsigned char* p = data; unsigned char* q = data + n; @@ -480,20 +480,6 @@ ikp ik_uuid(ikp str){ } -#if 0 -ikp ik_read(ikp fdptr, ikp bufptr, ikp lenptr){ - int fd = unfix(fdptr); - int len = unfix(lenptr); - char* buf = (char*)(bufptr+disp_string_data-string_tag); - int bytes = read(fd, buf, len); - if(bytes == -1){ - perror("S_read"); - exit(-10); - } - return fix(bytes); -} -#endif - ikp ik_write(ikp fdptr, ikp idx, ikp str){ fprintf(stderr, "IK_WRITE\n"); int fd = unfix(fdptr); diff --git a/src/ikarus.boot b/src/ikarus.boot index 865575f..ff96eda 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.strings.ss b/src/ikarus.strings.ss index d8d4a06..7a53999 100644 --- a/src/ikarus.strings.ss +++ b/src/ikarus.strings.ss @@ -6,6 +6,7 @@ (ikarus system $strings) (ikarus system $fx) (ikarus system $chars) + (ikarus system $bytevectors) (ikarus system $pairs) (except (ikarus) string-length string-ref string-set! make-string string->list string=? string-append substring string @@ -230,7 +231,8 @@ (define uuid (lambda () - (let ([s (make-string 16)]) - (or (foreign-call "ik_uuid" s) - (error 'uuid "failed!"))))) + (let ([s ($make-bytevector 16)]) + (utf8-bytevector->string + (or (foreign-call "ik_uuid" s) + (error 'uuid "failed!")))))) )