File libpng16.patch of Package racket

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.2.3

openSUSE Build Service is sponsored by