summaryrefslogtreecommitdiff
path: root/utils/bbdb-srv.pl
blob: ac26dfb2f30ec9dedb9582f4a03dd0a1d86050cb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/perl

# This script reads a block of message headers on stdin, and converts them
# to an emacs-lisp string (quoting  all dangerous characters) and then 
# uses the `gnudoit' program to cause a running Emacs process to invoke
# the `bbdb-srv' function with that string.
#
# This has the effect of causing the running Emacs to display the BBDB
# record corresponding to these headers.
#
# See the Emacs side of things in bbdb-srv.el for more info.
#
# A trivial application of this is the shell command:
#
#    echo 'From: Jamie Zawinski <jwz@netscape.com>' | bbdb-srv.perl
#
# which will cause the corresponding record to be displayed.
# A more interesting application of this is:
#
#    setenv NS_MSG_DISPLAY_HOOK bbdb-srv.perl
#
# which will hook BBDB up to Mozilla (Unix Netscape Mail and Netscape News
# versions 3.0b2 and later only.)
#
#	-- Jamie Zawinski <jwz@netscape.com>, 25-apr-96

# spawn in the background and return to the caller immediately.
if (fork == 0) { exit 0; }

$str="(bbdb-srv \"";
while(<>)
{
  # quote most shell metacharacters with backslash.
  s/([\\"`$#^!])/\\\1/g;
  # but quote ' as \047
  s/'/\\047/g;
  # and just for kicks, turn newlines into \n
#  s/\n/\\n/g;

  $str = $str.$_;
}
$str=$str."\")";

exec "gnudoit", "-q", $str;
exit 0;