Index: .gitignore
===================================================================
--- .gitignore	(revision ca1fb26a9a22aea6ecd68b0150859ef065c6afc5)
+++ .gitignore	(revision 7834bb522fe2a4669d1df0eaab7847d9f25646e2)
@@ -1,45 +1,56 @@
+# Generated by autoreconf
+Makefile.in
+/aclocal.m4
+/autom4te.cache/
+/compile
+/config.h.in
+/config.h.in~
+/configure
+/depcomp
+/install-sh
+/missing
+/test-driver
+
+# Generated by configure
+Makefile
+.deps/
+/config.cache
+/config.h
+/config.log
+/config.status
+/stamp-h1
+
+# Generated by make
+*.o
 *.a
-*.o
-*.par
-.deps
+/BUILD_VERSION.mk
+/barnowl
 /bin/
-BUILD_VERSION.mk
-META.yml
-MYMETA.yml
-Makefile
-Makefile.in
-Makefile.old
+/gmarshal_funcs.c
+/gmarshal_funcs.h
+/owl_prototypes.h
+/owl_prototypes.h.new
+/perlglue.c
+/varstubs.c
+/version.c
+/version.c.new
+/zcrypt
+
+# Generated by make check
+/runtests.sh.log
+/runtests.sh.trs
+/test-suite.log
+/tester
+
+# Generated by make tags et al.
+ID
 TAGS
-aclocal.m4
-autom4te.cache
-barnowl
-blib
-config.cache
-config.h
-config.h.in
-config.h.in~
-config.log
-config.status
-configure
-core
-depcomp
-gmarshal_funcs.c
-gmarshal_funcs.h
-inc/
-install-sh
-jabber.log
-missing
-owl_prototypes.h
-owl_prototypes.h.new
-perlglue.c
-pm_to_blib
-runtests.sh.log
-runtests.sh.trs
-stamp-h1
-test-driver
-test-suite.log
-tester
-varstubs.c
-version.c
-version.c.new
-zcrypt
+tags
+/GPATH
+/GRTAGS
+/GSYMS
+/GTAGS
+/cscope.files
+/cscope.in.out
+/cscope.out
+/cscope.po.out
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 441fd42c37f0c4bde4b84cd57720625d4787ab73)
+++ ChangeLog	(revision 6f876584912e7f54831d093fa6fb4ecd5d28f557)
@@ -1,3 +1,11 @@
 1.9
+ * Update Jabber module for Net::DNS changes -james2vegas@aim.com
+ * Update and make configurable the Zephyr default format -adehnert@mit.edu
+ * Fix a crash when zcrypt fails -andersk@mit.edu
+ * Fix building with OpenSSL before 0.9.8 -andersk@mit.edu
+ * Make :loadsubs reload instanced personals too -davidben@mit.edu
+ * Make Perl zephyr_zwrite call die() when it fails -jgross@mit.edu
+ * Tell gpg calls from zcrypt to ignore ~/.gnupg -andersk@mit.edu
+ * Replace outgoing zephyr default format with a small URL -geofft@mit.edu
  * Add getnumlines() to perl interface -asedeno@mit.edu
  * Include names of invalid filters on filter errors -adehnert@mit.edu
Index: perl/lib/BarnOwl/Style/Default.pm
===================================================================
--- perl/lib/BarnOwl/Style/Default.pm	(revision 732d5c0e9d9ef138feef0e02f8c2ad5840e830a2)
+++ perl/lib/BarnOwl/Style/Default.pm	(revision ebc6f77fe018701fba1cb7d0a39bd9f487516835)
@@ -129,6 +129,5 @@
     my $self = shift;
     my $m = shift;
-    my $sender = $m->long_sender;
-    $sender =~ s/\n.*$//s;
+    my $sender = $self->humanize($m->long_sender, 1);
     if (BarnOwl::getvar('colorztext') eq 'on') {
       return "  (" . $sender . '@color[default]' . ")";
Index: perl/modules/.gitignore
===================================================================
--- perl/modules/.gitignore	(revision 59f4fd64fc1c3dc407956167cba1d55889826090)
+++ perl/modules/.gitignore	(revision 59f4fd64fc1c3dc407956167cba1d55889826090)
@@ -0,0 +1,9 @@
+/*/*.par
+/*/Makefile.old
+/*/META.json
+/*/META.yml
+/*/MYMETA.json
+/*/MYMETA.yml
+/*/blib/
+/*/inc/
+/*/pm_to_blib
Index: rl/modules/Facebook/.gitignore
===================================================================
--- perl/modules/Facebook/.gitignore	(revision 24bd860f232529fab7d3de5b5b04c210ac4ac8ed)
+++ 	(revision )
@@ -1,7 +1,0 @@
-*~
-blib/
-META.yml
-Makefile
-Facebook.par
-pm_to_blib
-inc/.author
Index: rl/modules/Twitter/.gitignore
===================================================================
--- perl/modules/Twitter/.gitignore	(revision d27ecf382c5abebd36ad749a62b820ab427c04da)
+++ 	(revision )
@@ -1,7 +1,0 @@
-*~
-blib/
-META.yml
-Makefile
-Twitter.par
-pm_to_blib
-inc/.author
Index: rl/modules/Twitter/.hgignore
===================================================================
--- perl/modules/Twitter/.hgignore	(revision None)
+++ 	(revision )
@@ -1,8 +1,0 @@
-syntax: glob
-*~
-*.par
-inc/
-pm_to_blib
-Makefile
-META.yml
-blib/
Index: tester.c
===================================================================
--- tester.c	(revision 6a8b5190384f683113444387b65b59ef66bb779f)
+++ tester.c	(revision 21dc9279c2942183981db29c6a5d56d7b9bd6735)
@@ -25,4 +25,5 @@
 int owl_history_regtest(void);
 int call_filter_regtest(void);
+int owl_smartstrip_regtest(void);
 
 extern void owl_perl_xs_init(pTHX);
@@ -116,4 +117,5 @@
   numfailures += owl_history_regtest();
   numfailures += call_filter_regtest();
+  numfailures += owl_smartstrip_regtest();
   if (numfailures) {
       fprintf(stderr, "# *** WARNING: %d failures total\n", numfailures);
@@ -1018,2 +1020,37 @@
   return numfailed;
 }
+
+int owl_smartstrip_regtest(void)
+{
+  int numfailed = 0;
+
+  printf("# BEGIN testing owl_zephyr_smartstripped_user\n");
+
+#define CHECK_SMARTSTRIP(in, expected)			\
+  do {							\
+    char *__value = owl_zephyr_smartstripped_user(in);	\
+    FAIL_UNLESS("owl_zephyr_smartstripped_user " in,	\
+		strcmp((expected), __value) == 0);	\
+    g_free(__value);					\
+  } while (0)
+
+  CHECK_SMARTSTRIP("foo", "foo");
+  CHECK_SMARTSTRIP("foo.bar", "foo");
+  CHECK_SMARTSTRIP("foo/bar", "foo");
+  CHECK_SMARTSTRIP("host/bar", "host/bar");
+  CHECK_SMARTSTRIP("rcmd.bar", "rcmd.bar");
+  CHECK_SMARTSTRIP("daemon/bar", "daemon/bar");
+  CHECK_SMARTSTRIP("daemon.bar", "daemon.bar");
+
+  CHECK_SMARTSTRIP("foo@ATHENA.MIT.EDU", "foo@ATHENA.MIT.EDU");
+  CHECK_SMARTSTRIP("foo.bar@ATHENA.MIT.EDU", "foo@ATHENA.MIT.EDU");
+  CHECK_SMARTSTRIP("foo/bar@ATHENA.MIT.EDU", "foo@ATHENA.MIT.EDU");
+  CHECK_SMARTSTRIP("host/bar@ATHENA.MIT.EDU", "host/bar@ATHENA.MIT.EDU");
+  CHECK_SMARTSTRIP("rcmd.bar@ATHENA.MIT.EDU", "rcmd.bar@ATHENA.MIT.EDU");
+  CHECK_SMARTSTRIP("daemon/bar@ATHENA.MIT.EDU", "daemon/bar@ATHENA.MIT.EDU");
+  CHECK_SMARTSTRIP("daemon.bar@ATHENA.MIT.EDU", "daemon.bar@ATHENA.MIT.EDU");
+
+  printf("# END testing owl_zephyr_smartstripped_user\n");
+
+  return numfailed;
+}
Index: zephyr.c
===================================================================
--- zephyr.c	(revision c55930eba586a550d319a68566c23352ce56ea84)
+++ zephyr.c	(revision ebcdf4d1d62cb8a947fa244068de37c0f8ad7dde)
@@ -1319,42 +1319,15 @@
 CALLER_OWN char *owl_zephyr_smartstripped_user(const char *in)
 {
-  char *slash, *dot, *realm, *out;
-
-  out = g_strdup(in);
-
-  /* bail immeaditly if we don't have to do any work */
-  slash = strchr(out, '/');
-  dot = strchr(out, '.');
-  if (!slash && !dot) {
-    return(out);
-  }
-
-  if (!strncasecmp(out, OWL_ZEPHYR_NOSTRIP_HOST, strlen(OWL_ZEPHYR_NOSTRIP_HOST)) ||
-      !strncasecmp(out, OWL_ZEPHYR_NOSTRIP_RCMD, strlen(OWL_ZEPHYR_NOSTRIP_RCMD)) ||
-      !strncasecmp(out, OWL_ZEPHYR_NOSTRIP_DAEMON5, strlen(OWL_ZEPHYR_NOSTRIP_DAEMON5)) ||
-      !strncasecmp(out, OWL_ZEPHYR_NOSTRIP_DAEMON4, strlen(OWL_ZEPHYR_NOSTRIP_DAEMON4))) {
-    return(out);
-  }
-
-  realm = strchr(out, '@');
-  if (!slash && dot && realm && (dot > realm)) {
-    /* There's no '/', and the first '.' is in the realm */
-    return(out);
-  }
-
-  /* remove the realm from out, but hold on to it */
-  if (realm) realm[0]='\0';
-
-  /* strip */
-  if (slash) slash[0] = '\0';  /* krb5 style user/instance */
-  else if (dot) dot[0] = '\0'; /* krb4 style user.instance */
-
-  /* reattach the realm if we had one */
-  if (realm) {
-    strcat(out, "@");
-    strcat(out, realm+1);
-  }
-
-  return(out);
+  int n = strcspn(in, "./");
+  char *realm = strchrnul(in, '@');
+
+  if (in + n >= realm ||
+      g_str_has_prefix(in, OWL_ZEPHYR_NOSTRIP_HOST) ||
+      g_str_has_prefix(in, OWL_ZEPHYR_NOSTRIP_RCMD) ||
+      g_str_has_prefix(in, OWL_ZEPHYR_NOSTRIP_DAEMON5) ||
+      g_str_has_prefix(in, OWL_ZEPHYR_NOSTRIP_DAEMON4))
+    return g_strdup(in);
+  else
+    return g_strdup_printf("%.*s%s", n, in, realm);
 }
 
