unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Dan Nicolaescu <dann@ics.uci.edu>
To: joakim@verona.se
Cc: Stefan Monnier <monnier@IRO.UMontreal.CA>,
	Emacs Development <emacs-devel@gnu.org>
Subject: Re: using libmagic in Emacs?
Date: Wed, 19 Aug 2009 16:20:21 -0700 (PDT)	[thread overview]
Message-ID: <200908192320.n7JNKLRZ003050@godzilla.ics.uci.edu> (raw)
In-Reply-To: <m3prarifla.fsf@verona.se> (joakim@verona.se's message of "Thu, 20 Aug 2009 00:49:53 +0200")

joakim@verona.se writes:

  > Stefan Monnier <monnier@IRO.UMontreal.CA> writes:
  > >
  > > I think it's a good idea.  It may require some non-trivial changes on
  > > the Lisp side, since libmagic's information is not quite the same as
  > > what Emacs currently uses: we'll probably want to use libmagic to get
  > > a MIME-type and then have a table mapping mime-types to major modes or
  > > some such.
  > >
  > >
  > >         Stefan
  > 
  > I attach an early draft filemagic patch.
  > 
  > Some notes:
  > 
  > - The mime type info usualy is less granular than the free
  > text info:
  > 
  > file --mime /tmp/tst.xcf
  > /tmp/tst.xcf: application/octet-stream; charset=binary
  > 
  > file /tmp/tst.xcf
  > /tmp/tst.xcf: GIMP XCF image data, version 0, 640 x 480, RGB Color
  > 
  > This is dependent on the file magic info file used.
  > 
  > - We can probably have much fun debating what the interface should look
  >   like at the lisp level. Any ideas? 
  > 
  >   diff --git a/configure.in b/configure.in
  > index f4096db..cb74523 100644
  > --- a/configure.in
  > +++ b/configure.in
  > @@ -137,6 +137,8 @@ OPTION_DEFAULT_ON([xft],[don't use XFT for anti aliased fonts])
  >  OPTION_DEFAULT_ON([libotf],[don't use libotf for OpenType font support])
  >  OPTION_DEFAULT_ON([m17n-flt],[don't use m17n-flt for text shaping])
  >  
  > +OPTION_DEFAULT_ON([filemagic],[don't compile with filemagic support])
  > +
  >  OPTION_DEFAULT_ON([toolkit-scroll-bars],[don't use Motif or Xaw3d scroll bars])
  >  OPTION_DEFAULT_ON([xaw3d],[don't use Xaw3d])
  >  OPTION_DEFAULT_ON([xim],[don't use X11 XIM])
  > @@ -2223,6 +2225,19 @@ if test x"$ac_cv_func_alloca_works" != xyes; then
  >     AC_MSG_ERROR( [a system implementation of alloca is required] )
  >  fi
  >  
  > +
  > +HAVE_LIBMAGIC=no
  > +if test "${with_filemagic}" != "no"; then
  > +  #libmagic support
  > +  AC_CHECK_HEADERS(magic.h, [  AC_CHECK_LIB(magic,magic_open,HAVE_LIBMAGIC=yes) ])
  > +fi
  > +
  > +if test "${HAVE_LIBMAGIC}" = "yes"; then
  > +  LIBMAGIC=-lmagic
  > +  AC_SUBST(LIBMAGIC)
  > +  AC_DEFINE(HAVE_LIBMAGIC, 1, [Define to 1 if using libmagic.])  
  > +fi
  > +
  >  # fmod, logb, and frexp are found in -lm on most systems.
  >  # On HPUX 9.01, -lm does not contain logb, so check for sqrt.
  >  AC_CHECK_LIB(m, sqrt)
  > @@ -2954,6 +2969,7 @@ echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
  >  echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
  >  echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
  >  echo "  Does Emacs use -ldbus?                                  ${HAVE_DBUS}"
  > +echo "  Does Emacs use -lmagic?                                 ${HAVE_LIBMAGIC}"
  >  
  >  echo "  Does Emacs use -lfreetype?                              ${HAVE_FREETYPE}"
  >  echo "  Does Emacs use -lm17n-flt?                              ${HAVE_M17N_FLT}"
  > diff --git a/src/Makefile.in b/src/Makefile.in
  > index 425cf98..b80255a 100644
  > --- a/src/Makefile.in
  > +++ b/src/Makefile.in
  > @@ -420,6 +420,7 @@ LIBX= $(LIBXMENU) LD_SWITCH_X_SITE
  >  #endif /* not HAVE_LIBRESOLV */
  >  
  >  LIBSOUND= @LIBSOUND@
  > +LIBMAGIC= @LIBMAGIC@
  >  CFLAGS_SOUND= @CFLAGS_SOUND@
  >  
  >  RSVG_LIBS= @RSVG_LIBS@
  > @@ -511,6 +512,12 @@ MSDOS_OBJ = dosfns.o msdos.o w16select.o xmenu.o
  >  #endif
  >  #endif
  >  
  > +#ifdef HAVE_LIBMAGIC
  > +FILEMAGIC_OBJ = filemagic.o
  > +#else
  > +FILEMAGIC_OBJ =
  > +#endif

Can you please avoid adding new #ifdefs here? (we are trying to get rid
of them).
Maybe use @FILEMAGIC_OBJ@ ?

Or even use the file unconditionally, just add the proper #ifdefs to
make it be empty if not HAVE_LIBMAGIC ?





  reply	other threads:[~2009-08-19 23:20 UTC|newest]

Thread overview: 119+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-18 18:35 using libmagic in Emacs? joakim
2009-08-18 19:23 ` Stefan Monnier
2009-08-18 20:01   ` Chong Yidong
2009-08-18 20:35     ` joakim
2009-08-18 21:11       ` Stefan Monnier
2009-08-19  2:58         ` Eli Zaretskii
2009-08-19  3:21           ` Stefan Monnier
2009-08-19 13:47             ` Chong Yidong
2009-08-19 15:57               ` joakim
2009-08-19 19:46               ` next bugfix release? [was: Re: using libmagic in Emacs?] Dan Nicolaescu
2009-08-19 21:06                 ` next bugfix release? Chong Yidong
2009-08-19 21:53                   ` Dan Nicolaescu
2009-08-19 22:56                   ` Alan Mackenzie
2009-08-19 23:16                     ` Nick Roberts
2009-08-20  9:02                       ` Lennart Borgman
2009-08-20 11:19                         ` Eric M. Ludlam
2009-08-20 15:13                       ` Alan Mackenzie
2009-08-20 15:47                         ` Lennart Borgman
2009-08-19 19:05             ` installing features on trunk (was: using libmagic in Emacs?) Eli Zaretskii
2009-08-21 18:59               ` Bidi support Stefan Monnier
2009-08-21 20:44                 ` Eli Zaretskii
2009-08-22  3:39                   ` Stefan Monnier
2009-08-22  8:18                   ` Jason Rumney
2009-08-22  5:39                 ` Stephen J. Turnbull
2009-08-22  7:31                   ` Eli Zaretskii
2009-08-24  1:45                   ` Kenichi Handa
2009-08-24  3:12                     ` Eli Zaretskii
2009-08-24  7:17                       ` Kenichi Handa
2009-08-24  3:25                     ` Stephen J. Turnbull
2009-08-19  0:57   ` using libmagic in Emacs? Juri Linkov
2009-08-20  3:42     ` Richard Stallman
2009-08-22 23:36       ` Juri Linkov
2009-08-24  0:07         ` Richard Stallman
2009-08-24  0:17           ` Juri Linkov
2009-08-24  7:33             ` joakim
2009-08-25  2:08             ` Richard Stallman
2009-08-25  2:19               ` Miles Bader
2009-08-25  5:09                 ` joakim
2009-08-25 13:27                 ` James Cloos
2009-08-25 21:41                 ` Thien-Thi Nguyen
2009-08-25 17:36               ` Stefan Monnier
2009-08-25 20:37               ` Juri Linkov
2009-08-29 23:19               ` Juri Linkov
2009-08-30  3:09                 ` Eli Zaretskii
2009-08-30 20:54                   ` Juri Linkov
2009-08-31  2:49                     ` Eli Zaretskii
2009-08-31 16:17                       ` Juri Linkov
2009-08-31 17:58                         ` Eli Zaretskii
2009-09-01 12:16                           ` Richard Stallman
2009-09-01 16:12                             ` Stefan Monnier
2009-09-01 21:20                               ` Richard Stallman
2009-09-03 19:42                                 ` Stefan Monnier
2009-09-04  7:52                                   ` Richard Stallman
2009-08-31 22:21                       ` Richard Stallman
2009-08-31  3:33                   ` Richard Stallman
2009-08-31 15:03                     ` Chong Yidong
2009-08-31 16:19                       ` Juri Linkov
2009-08-31 23:47                       ` Stefan Monnier
2009-09-01  3:16                         ` Eli Zaretskii
2009-09-01  5:37                           ` Stefan Monnier
2009-09-01 12:16                       ` Richard Stallman
2009-08-25 20:36           ` Juri Linkov
2009-08-19 22:49   ` joakim
2009-08-19 23:20     ` Dan Nicolaescu [this message]
2009-08-20  1:03     ` Stephen J. Turnbull
2009-08-20  3:12       ` Eli Zaretskii
2009-08-20  4:50         ` Stephen J. Turnbull
2009-08-20 18:20           ` Eli Zaretskii
2009-08-21  0:19             ` Stephen J. Turnbull
2009-08-20 18:32         ` Richard Stallman
2009-08-21 19:10           ` Stefan Monnier
2009-08-22  5:03             ` Stephen J. Turnbull
2009-08-23  1:03               ` Stefan Monnier
2009-08-20 13:57     ` Stefan Monnier
2009-08-20 19:19       ` joakim
2009-08-20 22:08         ` Andreas Schwab
2009-08-21  9:55           ` joakim
2009-08-21 11:01             ` Eli Zaretskii
2009-08-21 17:38               ` joakim
2009-08-21 17:46                 ` Rupert Swarbrick
2009-08-21 18:31                 ` Andreas Schwab
2009-08-21 19:13                   ` Drew Adams
2009-08-21 18:42                 ` Eli Zaretskii
2009-08-21 21:48                   ` joakim
2009-08-21 22:46                     ` Andreas Schwab
2009-08-22 20:18                       ` joakim
2009-08-22 23:13                         ` Ken Raeburn
2009-08-23 23:38                           ` joakim
2009-08-24  3:05                             ` Eli Zaretskii
2009-08-24 12:30                               ` joakim
2009-08-23  3:24                         ` Eli Zaretskii
2009-08-21 19:18               ` Stefan Monnier
2009-08-21 13:19             ` Andreas Schwab
2009-08-20 18:32     ` Richard Stallman
2009-08-20 20:27       ` Reiner Steib
2009-08-21 14:08         ` Richard Stallman
2009-08-21 19:16       ` Stefan Monnier
2009-08-28  0:27 ` Language identification (was: using libmagic in Emacs) Juri Linkov
2009-08-28  4:58   ` Language identification Stefan Monnier
2009-08-28  9:00     ` Stephen J. Turnbull
2009-08-28 14:56       ` Stefan Monnier
2009-08-29  4:11         ` Stephen J. Turnbull
2009-08-29 14:21           ` Chong Yidong
2009-08-29  0:46       ` Richard Stallman
2009-08-29  4:13         ` Stephen J. Turnbull
2009-08-29 15:28           ` Stefan Monnier
2009-08-29 16:27             ` Stephen J. Turnbull
2009-08-28 19:16     ` Juri Linkov
2009-08-29  1:12       ` Stefan Monnier
2009-08-30 16:01         ` Richard Stallman
2009-08-29 20:20       ` Richard Stallman
2009-08-29 22:48         ` Juri Linkov
2009-08-31  3:32           ` Richard Stallman
2009-08-31  8:42             ` David Kastrup
2009-08-31  8:59             ` Jan D.
2009-08-31  3:33           ` Richard Stallman
2009-08-28  6:45   ` Alex Ott
2009-08-28  6:46   ` Alex Ott
2009-08-28 19:08     ` Juri Linkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200908192320.n7JNKLRZ003050@godzilla.ics.uci.edu \
    --to=dann@ics.uci.edu \
    --cc=emacs-devel@gnu.org \
    --cc=joakim@verona.se \
    --cc=monnier@IRO.UMontreal.CA \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).