;;;; macosx-url.scm ;;;; Kon Lovett, Mar '09 ;;;; Kon Lovett, Feb '18 ;; Issues ;; (module macosx-url (;export open-url) (import scheme chicken foreign) (use dollar (only type-checks check-string) macosx-errors) ;;; #> #include #include static int open_url( const char *urlstr, int len ) { OSStatus status = EXIT_FAILURE; CFURLRef url = CFURLCreateWithBytes( NULL, (const UInt8 *) urlstr, len, kCFStringEncodingASCII, NULL ); if (NULL != url) { status = LSOpenCFURLRef( url, NULL ); CFRelease( url ); } return status; } <# ;;; (define (open-url url) (check-string 'open-url url) (let ( (status ($ int open_url (c-string url) (int (string-length url)))) ) (unless (zero? status) (exception-osstatus 'open-url "CFURLCreateWithBytes failed" status url) ) ) ) ) ;module macosx-url