diff options
Diffstat (limited to 'extra/racket/racket-libpng16.patch')
-rw-r--r-- | extra/racket/racket-libpng16.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/extra/racket/racket-libpng16.patch b/extra/racket/racket-libpng16.patch new file mode 100644 index 000000000..8e4b605f2 --- /dev/null +++ b/extra/racket/racket-libpng16.patch @@ -0,0 +1,52 @@ +From 5629a6156a5720e51a277849f75b3135cb93664f Mon Sep 17 00:00:00 2001 +From: Matthew Flatt <mflatt@racket-lang.org> +Date: Wed, 15 May 2013 20:28:05 -0600 +Subject: [PATCH] support libpng16 + +--- + collects/racket/draw/unsafe/png.rkt | 21 ++++++++++++++------- + 1 file changed, 14 insertions(+), 7 deletions(-) + +diff --git a/collects/racket/draw/unsafe/png.rkt b/collects/racket/draw/unsafe/png.rkt +index 596fcb4..a6b028d 100644 +--- a/collects/racket/draw/unsafe/png.rkt ++++ b/collects/racket/draw/unsafe/png.rkt +@@ -10,11 +10,15 @@ + [(unix) + ;; Most Linux distros supply "libpng12", while other Unix + ;; variants often have just "libpng", etc. +- (ffi-lib "libpng15" '("15" "") +- #:fail (lambda () +- (ffi-lib "libpng12" '("0" "") +- #:fail (lambda () +- (ffi-lib "libpng")))))] ++ (let loop ([alts '(("libpng16" ("16" "")) ++ ("libpng15" ("15" "")) ++ ("libpng12" ("0" "")) ++ ("libpng"))]) ++ (cond ++ [(null? alts) #f] ++ [else (apply ffi-lib (car alts) ++ #:fail (lambda () ++ (loop (cdr alts))))]))] + [(macosx) (ffi-lib "libpng15.15.dylib")] + [(windows) + (ffi-lib "zlib1.dll") +@@ -29,9 +33,12 @@ + ;; assume that other versions are also ok + (define PNG_LIBPNG_VER_STRING (string->bytes/latin-1 + (let ([v (png_access_version_number)]) +- (format "~s.~s" ++ (format "~s.~s~a" + (quotient v 10000) +- (quotient (remainder v 10000) 100))))) ++ (quotient (remainder v 10000) 100) ++ (if (zero? (remainder v 100)) ++ "" ++ (format ".~a" (remainder v 100))))))) + + (define _png_structp (_cpointer 'png_structp)) + (define _png_infop (_cpointer 'png_infop)) +-- +1.8.1.6 + |