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