* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data [not found] <E1V8wyP-0003i5-8r@vcs.savannah.gnu.org> @ 2013-08-13 1:56 ` Stefan Monnier 2013-08-13 2:50 ` Eli Zaretskii 0 siblings, 1 reply; 15+ messages in thread From: Stefan Monnier @ 2013-08-13 1:56 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: emacs-devel > + (when (and (fboundp 'zlib-available-p) > + (zlib-available-p)) > + (zlib-decompress-region (point-min) (point-max)) Could you clarify the difference between: (fboundp 'zlib-available-p) and (zlib-available-p) and (fboundp 'zlib-decompress-region) IOW, when can they return different values, and why? Stefan ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 1:56 ` [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data Stefan Monnier @ 2013-08-13 2:50 ` Eli Zaretskii 2013-08-13 3:45 ` Juanma Barranquero 2013-08-13 14:41 ` Stefan Monnier 0 siblings, 2 replies; 15+ messages in thread From: Eli Zaretskii @ 2013-08-13 2:50 UTC (permalink / raw) To: Stefan Monnier; +Cc: larsi, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Mon, 12 Aug 2013 21:56:11 -0400 > Cc: emacs-devel@gnu.org > > > + (when (and (fboundp 'zlib-available-p) > > + (zlib-available-p)) > > + (zlib-decompress-region (point-min) (point-max)) > > Could you clarify the difference between: > > (fboundp 'zlib-available-p) > and > (zlib-available-p) > and > (fboundp 'zlib-decompress-region) > > IOW, when can they return different values, and why? The 2 fboundp tests return non-nil when Emacs was built with zlib support. zlib-available-p can return nil on MS-Windows, when the zlib shared library is not available, even though Emacs was built with zlib support. On platforms other than Windows, the fboundp tests and testing the return value of zlib-available-p are equivalent. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 2:50 ` Eli Zaretskii @ 2013-08-13 3:45 ` Juanma Barranquero 2013-08-13 4:24 ` Stephen J. Turnbull 2013-08-13 9:54 ` Lars Magne Ingebrigtsen 2013-08-13 14:41 ` Stefan Monnier 1 sibling, 2 replies; 15+ messages in thread From: Juanma Barranquero @ 2013-08-13 3:45 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, Stefan Monnier, Emacs developers On Tue, Aug 13, 2013 at 4:50 AM, Eli Zaretskii <eliz@gnu.org> wrote: > The 2 fboundp tests return non-nil when Emacs was built with zlib > support. zlib-available-p can return nil on MS-Windows, when the zlib > shared library is not available, even though Emacs was built with zlib > support. On platforms other than Windows, the fboundp tests and > testing the return value of zlib-available-p are equivalent. In other words, portable elisp code should really do (and (fboundp 'zlib-available-p) (zlib-available-p)) to check for zlib support. Perhaps it would be worth to encapsulate that check into (yet another) predicate... J ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 3:45 ` Juanma Barranquero @ 2013-08-13 4:24 ` Stephen J. Turnbull 2013-08-13 9:54 ` Lars Magne Ingebrigtsen 1 sibling, 0 replies; 15+ messages in thread From: Stephen J. Turnbull @ 2013-08-13 4:24 UTC (permalink / raw) To: Juanma Barranquero Cc: Eli Zaretskii, Emacs developers, Lars Ingebrigtsen, Stefan Monnier Juanma Barranquero writes: > In other words, portable elisp code should really do > > (and (fboundp 'zlib-available-p) (zlib-available-p)) > > to check for zlib support. Perhaps it would be worth to encapsulate > that check into (yet another) predicate... XEmacs has an if-fboundp macro which does the above, but it's ugly. I prefer extending the #'featurep mechanism to optionally do such checks. Eg, ;;; There's Fprovide(symbol) and Fput(Fintern("symbol"), ;;; Fintern("availability-predicate"), ;;; availability_predicate_DEFUN_symbol)) ;;; conditionally compiled on --with-symbol in the startup code. (defun feature-available-p (symbol) (and (featurep symbol) ;; I'm a ba-a-ad boy. (funcall (get symbol 'availability-predicate (lambda ()))))) Contributed to XEmacs under my agreement with the FSF. Ie, now copyright 2013 FSF. There may be better ways of spelling all this, of course. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 3:45 ` Juanma Barranquero 2013-08-13 4:24 ` Stephen J. Turnbull @ 2013-08-13 9:54 ` Lars Magne Ingebrigtsen 2013-08-13 16:02 ` Eli Zaretskii 1 sibling, 1 reply; 15+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-08-13 9:54 UTC (permalink / raw) To: Juanma Barranquero; +Cc: Eli Zaretskii, Stefan Monnier, Emacs developers Juanma Barranquero <lekktu@gmail.com> writes: > In other words, portable elisp code should really do > > (and (fboundp 'zlib-available-p) (zlib-available-p)) Yeah. But I think that `zlib-available-p' should probably always be defined. And return the correct answer, that is. So it should be move out of the #ifdef HAVE_ZLIB region, although that requires a bit more rejuggling; what with calling syms_of_decompress always etc. -- (domestic pets only, the antidote for overdose, milk.) No Gnus T-Shirt for sale: http://ingebrigtsen.no/no.php and http://lars.ingebrigtsen.no/2013/08/twenty-years-of-september.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 9:54 ` Lars Magne Ingebrigtsen @ 2013-08-13 16:02 ` Eli Zaretskii 2013-08-13 16:10 ` Lars Magne Ingebrigtsen 0 siblings, 1 reply; 15+ messages in thread From: Eli Zaretskii @ 2013-08-13 16:02 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: lekktu, monnier, emacs-devel > From: Lars Magne Ingebrigtsen <larsi@gnus.org> > Cc: Eli Zaretskii <eliz@gnu.org>, Stefan Monnier <monnier@iro.umontreal.ca>, Emacs developers <emacs-devel@gnu.org> > Date: Tue, 13 Aug 2013 11:54:58 +0200 > > I think that `zlib-available-p' should probably always be defined. > And return the correct answer, that is. > > So it should be move out of the #ifdef HAVE_ZLIB region, although that > requires a bit more rejuggling; what with calling syms_of_decompress > always etc. Exactly. And, since neither gnutls.c nor xml.c do anything like that, I've decided not to. If we want the available-p predicates be always, err..., available, then IMO we should do that in those two files as well. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 16:02 ` Eli Zaretskii @ 2013-08-13 16:10 ` Lars Magne Ingebrigtsen 0 siblings, 0 replies; 15+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-08-13 16:10 UTC (permalink / raw) To: Eli Zaretskii; +Cc: lekktu, monnier, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> So it should be move out of the #ifdef HAVE_ZLIB region, although that >> requires a bit more rejuggling; what with calling syms_of_decompress >> always etc. > > Exactly. And, since neither gnutls.c nor xml.c do anything like that, > I've decided not to. > > If we want the available-p predicates be always, err..., available, > then IMO we should do that in those two files as well. Yes, I think we should. First calling fboundp and then -available-p isn't as clear as just calling -available-p, in my opinion. Establishing a pattern where we always know that we just have to call -available-p for any (optional) C libraries seems pretty nice. -- (domestic pets only, the antidote for overdose, milk.) No Gnus T-Shirt for sale: http://ingebrigtsen.no/no.php and http://lars.ingebrigtsen.no/2013/08/twenty-years-of-september.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 2:50 ` Eli Zaretskii 2013-08-13 3:45 ` Juanma Barranquero @ 2013-08-13 14:41 ` Stefan Monnier 2013-08-13 14:47 ` Paul Eggert 2013-08-13 16:25 ` Eli Zaretskii 1 sibling, 2 replies; 15+ messages in thread From: Stefan Monnier @ 2013-08-13 14:41 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, emacs-devel > The 2 fboundp tests return non-nil when Emacs was built with zlib > support. zlib-available-p can return nil on MS-Windows, when the zlib > shared library is not available, even though Emacs was built with zlib > support. On platforms other than Windows, the fboundp tests and > testing the return value of zlib-available-p are equivalent. Can't we get rid of zlib-available-p entirely. Just replace (if (and (fboundp 'zlib-available-p) (zlib-available-p)) (zlib-decompress-region ...) blabla) with (condition-case nil (zlib-decompress-region ...) ((void-function zlib-not-available) blabla)) Hmm... but the above is not recognized by the byte-compiler either, so you'll still see the spurious warning :-( The best would really be (if (fboundp 'zlib-decompress-region) (zlib-decompress-region ...) blabla) but I guess we can't have that because we also want to lazy-load the zlib shared library, right? Stefan ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 14:41 ` Stefan Monnier @ 2013-08-13 14:47 ` Paul Eggert 2013-08-13 16:27 ` Eli Zaretskii 2013-08-13 16:25 ` Eli Zaretskii 1 sibling, 1 reply; 15+ messages in thread From: Paul Eggert @ 2013-08-13 14:47 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, larsi, emacs-devel Stefan Monnier wrote: > The best would really be > > (if (fboundp 'zlib-decompress-region) > (zlib-decompress-region ...) > blabla) > > but I guess we can't have that because we also want to lazy-load the > zlib shared library, right? fboundp itself could do the lazy load, no? Or we could have an fboundp variant that does that. That way, we don't need to have a FOO-available-p function for every loadable library FOO. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 14:47 ` Paul Eggert @ 2013-08-13 16:27 ` Eli Zaretskii 0 siblings, 0 replies; 15+ messages in thread From: Eli Zaretskii @ 2013-08-13 16:27 UTC (permalink / raw) To: Paul Eggert; +Cc: larsi, monnier, emacs-devel > Date: Tue, 13 Aug 2013 07:47:58 -0700 > From: Paul Eggert <eggert@cs.ucla.edu> > CC: Eli Zaretskii <eliz@gnu.org>, larsi@gnus.org, emacs-devel@gnu.org > > Stefan Monnier wrote: > > The best would really be > > > > (if (fboundp 'zlib-decompress-region) > > (zlib-decompress-region ...) > > blabla) > > > > but I guess we can't have that because we also want to lazy-load the > > zlib shared library, right? > > fboundp itself could do the lazy load, no? > Or we could have an fboundp variant that > does that. That way, we don't need to have > a FOO-available-p function for every loadable > library FOO. There are situations where testing the availability of a feature without actually invoking the feature makes a lot of sense. See my other mail for the details. In any case, we decide to get rid of the *-available-p functions, we should do the same with images and gnutls. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 14:41 ` Stefan Monnier 2013-08-13 14:47 ` Paul Eggert @ 2013-08-13 16:25 ` Eli Zaretskii 2013-08-13 16:30 ` Lars Magne Ingebrigtsen 2013-08-13 16:49 ` Stefan Monnier 1 sibling, 2 replies; 15+ messages in thread From: Eli Zaretskii @ 2013-08-13 16:25 UTC (permalink / raw) To: Stefan Monnier; +Cc: larsi, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Tue, 13 Aug 2013 10:41:54 -0400 > Cc: larsi@gnus.org, emacs-devel@gnu.org > > Can't we get rid of zlib-available-p entirely. > Just replace > > (if (and (fboundp 'zlib-available-p) (zlib-available-p)) > (zlib-decompress-region ...) > blabla) > > with > > (condition-case nil > (zlib-decompress-region ...) > ((void-function zlib-not-available) > blabla)) > > Hmm... but the above is not recognized by the byte-compiler either, so > you'll still see the spurious warning :-( > The best would really be > > (if (fboundp 'zlib-decompress-region) > (zlib-decompress-region ...) > blabla) But you assume that whoever needs this test needs it only for calling zlib-decompress-region. What if there's some feature based on zlib that entirely makes no sense if zlib is not available? Trying to decompress a file just to discover this sounds gross to me. > but I guess we can't have that because we also want to lazy-load the > zlib shared library, right? As of revision 113823, zlib-decompress-region itself lazy-loads. So this problem no longer exists. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 16:25 ` Eli Zaretskii @ 2013-08-13 16:30 ` Lars Magne Ingebrigtsen 2013-08-13 16:49 ` Stefan Monnier 1 sibling, 0 replies; 15+ messages in thread From: Lars Magne Ingebrigtsen @ 2013-08-13 16:30 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Stefan Monnier, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > But you assume that whoever needs this test needs it only for calling > zlib-decompress-region. What if there's some feature based on zlib > that entirely makes no sense if zlib is not available? You're right -- url-http sends "Accept-Encoding: gzip" if gzip decoding is available. So we need -available-p. > Trying to decompress a file just to discover this sounds gross to me. I agree totally. -- (domestic pets only, the antidote for overdose, milk.) No Gnus T-Shirt for sale: http://ingebrigtsen.no/no.php and http://lars.ingebrigtsen.no/2013/08/twenty-years-of-september.html ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 16:25 ` Eli Zaretskii 2013-08-13 16:30 ` Lars Magne Ingebrigtsen @ 2013-08-13 16:49 ` Stefan Monnier 2013-08-13 18:04 ` Eli Zaretskii 1 sibling, 1 reply; 15+ messages in thread From: Stefan Monnier @ 2013-08-13 16:49 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, emacs-devel >> but I guess we can't have that because we also want to lazy-load the >> zlib shared library, right? > As of revision 113823, zlib-decompress-region itself lazy-loads. Does that mean we can do (if (fboundp 'zlib-decompress-region) (zlib-decompress-region ...) blabla) ? -- Stefan ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 16:49 ` Stefan Monnier @ 2013-08-13 18:04 ` Eli Zaretskii 2013-08-13 18:55 ` Stefan Monnier 0 siblings, 1 reply; 15+ messages in thread From: Eli Zaretskii @ 2013-08-13 18:04 UTC (permalink / raw) To: Stefan Monnier; +Cc: larsi, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: larsi@gnus.org, emacs-devel@gnu.org > Date: Tue, 13 Aug 2013 12:49:44 -0400 > > >> but I guess we can't have that because we also want to lazy-load the > >> zlib shared library, right? > > As of revision 113823, zlib-decompress-region itself lazy-loads. > > Does that mean we can do > > (if (fboundp 'zlib-decompress-region) > (zlib-decompress-region ...) > blabla) > > ? If all you want is decompress a region, yes. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data 2013-08-13 18:04 ` Eli Zaretskii @ 2013-08-13 18:55 ` Stefan Monnier 0 siblings, 0 replies; 15+ messages in thread From: Stefan Monnier @ 2013-08-13 18:55 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, emacs-devel >> >> but I guess we can't have that because we also want to lazy-load the >> >> zlib shared library, right? >> > As of revision 113823, zlib-decompress-region itself lazy-loads. >> >> Does that mean we can do >> (if (fboundp 'zlib-decompress-region) >> (zlib-decompress-region ...) >> blabla) >> ? > If all you want is decompress a region, yes. Perfect, thanks. Stefan ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2013-08-13 18:55 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <E1V8wyP-0003i5-8r@vcs.savannah.gnu.org> 2013-08-13 1:56 ` [Emacs-diffs] trunk r113822: Add a test for decompressing gzipped data Stefan Monnier 2013-08-13 2:50 ` Eli Zaretskii 2013-08-13 3:45 ` Juanma Barranquero 2013-08-13 4:24 ` Stephen J. Turnbull 2013-08-13 9:54 ` Lars Magne Ingebrigtsen 2013-08-13 16:02 ` Eli Zaretskii 2013-08-13 16:10 ` Lars Magne Ingebrigtsen 2013-08-13 14:41 ` Stefan Monnier 2013-08-13 14:47 ` Paul Eggert 2013-08-13 16:27 ` Eli Zaretskii 2013-08-13 16:25 ` Eli Zaretskii 2013-08-13 16:30 ` Lars Magne Ingebrigtsen 2013-08-13 16:49 ` Stefan Monnier 2013-08-13 18:04 ` Eli Zaretskii 2013-08-13 18:55 ` Stefan Monnier
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).