diff --git a/srfi/106.sld b/srfi/106.sld index c6079e8c..ce0341dc 100644 --- a/srfi/106.sld +++ b/srfi/106.sld @@ -107,8 +107,17 @@ return_closcall1(data, k, obj_int2obj(sockfd)); ") (define (socket-merge-flags flags) - ) + (if (null? flags) + 0 + (let ((result (car flags))) + (for-each + (lambda (flag) + (set! result (num-or result flag))) + (cdr flags))))) + (define-c num-or + "(void *data, int argc, closure _, object k, object n1, object n2)" + " return_closcall1(data, k, Cyc_bit_or(data, n1, n2));") ;(define (socket-purge-flags flags) ;)