From: johnbent@lanl.gov (John Bent)
Subject: [sup-talk] missing run-mailcap
Date: Tue, 22 Jan 2008 15:33:22 -0700 [thread overview]
Message-ID: <1201041081-sup-6034@tangerine.lanl.gov> (raw)
In-Reply-To: <1201019996-sup-8960@tangerine.lanl.gov>
Excerpts from John Bent's message of Tue Jan 22 09:40:05 -0700 2008:
> I saw some earlier discussion in the list archives about a missing run-mailcap
> script. I had this same problem too on my mac (10.4.11 Power PC). It's sort
> of a kluge but I dealt with this by writing my own /usr/bin/run-mailcap which
> just does a simple hash lookup of mime type to rename the file with an
> appropriate extension and then uses the mac 'open' command. I haven't fully
> populated the hash table yet; I'll do that lazily. If the 'file' command
> could return an extension, I'd be tempted to use it and avoid the hash table
> but the best it can do is return the mime-type which we already know. Or if
> there was some way to pass the mime-type to the 'open' command, that'd be
> better too. But at least this works...
>
Here's a cleaner version that doesn't have anything hard-coded but relies
on the 'find' command and the MIME::Types perl module:
============================================================================
#! /opt/local/bin/perl
use MIME::Types;
my ( $type, $file ) = split( /:/, $ARGV[1] );
if ( $type eq 'application/octet-stream' ) {
$type = findType( $file );
}
my $extension = findExtension( $type );
my $newfile = "$file.$extension";
my $command = "open $newfile";
rename( $file, $newfile );
Log( "Extension for $type is $extension -> $command\n" );
system( $command );
#######################################################################
sub
findExtension {
my $mimetypes = MIME::Types->new;
my MIME::Type $mimetype = $mimetypes->type($type);
my @extensions = $mimetype->extensions;
return $extensions[0];
}
sub
findType {
my $file = shift;
my $type = `file -i -b $file`;
chomp( $type );
return $type;
}
my $log_fd;
sub
Log {
if ( ! defined $log_fd ) {
open LOG, ">>/tmp/mailcap.log" or warn "open log: $!\n";
$log_fd = \*LOG;
}
#print "@_";
print LOG "@_";
}
next prev parent reply other threads:[~2008-01-22 22:33 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-01-22 16:40 John Bent
2008-01-22 22:33 ` John Bent [this message]
2008-01-24 21:40 ` John Bent
2008-01-24 23:26 ` William Morgan
2008-01-24 23:52 ` John Bent
2008-01-25 0:17 ` William Morgan
2008-01-25 0:57 ` Grant Hollingworth
2008-01-25 4:40 ` John Bent
2008-01-26 0:35 ` John Bent
2008-01-30 17:29 ` William Morgan
2008-01-30 17:54 ` John Bent
2008-01-30 18:26 ` William Morgan
2008-01-30 18:35 ` John Bent
2008-02-03 3:01 ` William Morgan
-- strict thread matches above, loose matches on Subject: below --
2008-01-04 23:45 Giorgio Lando
2008-01-04 23:59 ` Giorgio Lando
2008-01-05 0:13 ` William Morgan
2008-01-05 1:01 ` Giorgio Lando
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1201041081-sup-6034@tangerine.lanl.gov \
--to=johnbent@lanl.gov \
/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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox