DELTA 122 0 1883
SVN  k:r %Z 29$Id$

2.0.1-pre-1
	MovedGeneral cleanup to Makefile.in
	CTRL and META are now OWL_CTRL and OWL_META.  OWL_CTRL moved to
	  keypress.c
	do_encrypt declaired static
	if we don't have des functions, do not try to build in zcrypt
	kill the newmsgproc function on exit
	Added libfaim
	Added basic AIM support, including the "aimlogin", "aimwrite" and
	   "aimlogout" commandsENDREP
DELTA 124 0 1879
SVN  N2o %  q5 8$S .5 Y& A{
 |u \r -L./libfaim -lfaim
CFLAGS=@CFLAGS@ -I. -I./libfaim aim#AUTOGEN=$(GEN_C) $(GEN_H)
AUTOGEN=$(GEN_C)


owl: $(AUTOGEN) $(OBJS) owl.o libfaim libfaimclean
	$(RM) owl tester *.o $(AUTOGEN) owl_prototypes.h.new

distclean: clean libfaimdistclean
	$(RM) config.cache config.log config.status Makefile config.h TAGS *~ core

##owl_prototypes.h: codelist.pl varstubs.c $(BASE_SRCS)
#	perl codelist.pl | grep -v ZWRITEOPTIONS > owl_prototypes.h.new
#	@cmp -s owl_prototypes.h.new $@ || { \
#	 echo 'Interfaces changed!'; \
#	 echo mv -f owl_prototypes.h.new $@; \
#	      mv -f owl_prototypes.h.new $@; }
owl_prototypes.h:#$(BASE_OBJS) varstubs.h:: owl.h config.h owl_prototypes.h
$(BASE_OBJS) varstubs.h:: owl.h config.h

libfaim: libfaim/libfaim.a

libfaim/libfaim.a:
	(cd libfaim; $(MAKE))

libfaimclean:
	(cd libfaim; $(MAKE) clean)

libfaimdistclean:
	(cd libfaim; $(MAKE) distclean)ENDREP
DELTA 107 548 4736
SVN  yXba l n /h Z A  ^) . p6X P84 4W N8 h1 ow I A8
  OWLCMD_ARGS("term", owl_command_term, OWL_CTX_ANY,
	      "control the terminal",
	      "term raise\n"
	      "term deiconify\n",
	      ""),

  OWLCMD_VOID("nop", owl_command_nop, OWL_CTX_ANY,
	      "do nothing",
	      "",
	      "OWLCMD_ARGS("aimwrite", owl_command_aimwrite, OWL_CTX_INTERACTIVE,
	      "send a zephyr",
	      "aimzwrite <user>",
	      "Send an aim message to a user.OWLCMD_ARGS("aimlogin", owl_command_aimlogin, OWL_CTX_ANY,
	      "login to an AIM account",
	      "aimlogin <screenname> <password>\n",
	      ""),

  OWLCMD_ARGS("aimlogout", owl_command_aimlogout, OWL_CTX_ANY,
	      "logout from AIM",
	      "aimlogout\n",
	      ""),


  void owl_command_nop() {(NULL)(NULL);
  }

  owl_function_debugmsg(argv[1]);
  return(NULL);
}

char *owl_command_termNeed at least one argument to the term command");
    return(NULL);
  }

  if (!strcmp(argv[1], "raise")) {
    owl_function_xterm_raise();
  } else if (!strcmp(argv[1], "deiconify")) {
    owl_function_xterm_deiconify();
  } else {
    owl_function_makemsg("Unknown terminal subcommand");
  }
  return(NULL)aimwrite(int argc, char **argv, char *buff) {
  char *tmpbuff, *pos, *cmd, *msg;

  if (argc < 2) {
    owl_function_makemsg("Not enough arguments to the aimaimchar *owl_command_aimlogin(int argc, char **argv, char *buff) {
  int ret;

  if (argc!=3) {
    owl_function_makemsg("Wrong number of arguments to aimlogin command");
    return(NULL);
  }
  ret=owl_aim_login(argv[1], argv[2]);
  if (!ret) {
    owl_function_makemsg("%s logged in.\n", argv[1]);
    return(NULL);
  }
  
  owl_function_makemsg("Warning: login for %s failed.\n");
  return(NULL);
}

char *owl_command_aimlogout(int argc, char **argv, char *buff) {
  owl_aim_logout();
  return(NULL);
}
ENDREP
DELTA 127 172 7770
SVN  {
_e y  '< k~ ^ #~ 6 7= k~ jb +; 'z ($ k~ | &~{ %j k~ Z| +; !k *, l}X ,: #~ Np 8@ k~ de ; ] 2c r u; s? W _m N 9S l R. k . l . ~ ; JU . S2 d o x M; *V S iY 6E 4~ 4 . 5U R sa (z u! V -l " F5" H?3res_search in -lresolv""... $ac_c" 1>&6
echo "configure:1151: checking for res_search in -lresolv" >&5
ac_lib_var=`echo resolv'_'res_searchresolv  $LIBS"
cat > conftest.$ac_ext <<EOF
#line 1159res_search();

int main() {
res_searchresolvresolv982062172455344 $LIBS"

else
  echo "$ac_t""no" 1>&6
echo $ac_n "checking for krb_sendauth in -lkrb""... $ac_c" 1>&6
echo "configure:129098309krbkrb $LIBS"

else
  echo "$ac_t""no" 1>&6
fi

fi

echo $ac_n "checking for ZGetSender in -lzephyr""... $ac_c" 1>&6
echo "configure:13394ZGetSender();

int main() {
ZGetSender()
; return 0; }
EOF
if { (eval echo configure:135zephyr879540643343861func_$ac_func87: checking for des_ecb_encrypt prototype" >&5
cat > conftest.$ac_ext <<EOF
#line 14899751753238455nologo -E"
  cat > conftest.$ac_ext <<EOF
#line 156672976026106276456677701706722746515688803828: checking for /usr/share/liblib89subdirs="libfaim"s%@subdirs@%$subdirsif test "$no_recursion" != yes; then

  # Remove --cache-file and --srcdir arguments so they do not pile up.
  ac_sub_configure_args=
  ac_prev=
  for ac_arg in $ac_configure_args; do
    if test -n "$ac_prev"; then
      ac_prev=
      continue
    fi
    case "$ac_arg" in
    -cache-file | --cache-file | --cache-fil | --cache-fi \
    | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
      ac_prev=cache_file ;;
    -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
    | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
      ;;
    -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
      ac_prev=srcdir ;;
    ;;
    *) ac_sub_configure_args="$ac_sub_configure_args $ac_arg" ;;
    esac
  done

  for ac_config_dir in libfaim; do

    # Do not complain, so a configure script can configure whichever
    # parts of a large source tree are present.
    if test ! -d $srcdir/$ac_config_dir; then
      continue
    fi

    echo configuring in $ac_config_dir

    case "$srcdir" in
    .) ;;
    *)
      if test -d ./$ac_config_dir || mkdir ./$ac_config_dir; then :;
      else
        { echo "configure: error: can not create `pwd`/$ac_config_dir" 1>&2; exit 1; }
      fi
      ;;
    esac

    ac_popdir=`pwd`
    cd $ac_config_dir

      # A "../" for each directory in /$ac_config_dir.
      ac_dots=`echo $ac_config_dir|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'`

    case "$srcdir" in
    .) # No --srcdir option.  We are building in place.
      ac_sub_srcdir=$srcdir ;;
    /*) # Absolute path.
      ac_sub_srcdir=$srcdir/$ac_config_dir ;;
    *) # Relative path.
      ac_sub_srcdir=$ac_dots$srcdir/$ac_config_dir ;;
    esac

    # Check for guested configure; otherwise get Cygnus style configure.
    if test -f $ac_sub_srcdir/configure; then
      ac_sub_configure=$ac_sub_srcdir/configure
    elif test -f $ac_sub_srcdir/configure.in; then
      ac_sub_configure=$ac_configure
    else
      echo "configure: warning: no configuration information is in $ac_config_dir" 1>&2
      ac_sub_configure=
    fi

    # The recursion is here.
    if test -n "$ac_sub_configure"; then

      # Make the cache file name correct relative to the subdirectory.
      case "$cache_file" in
      /*) ac_sub_cache_file=$cache_file ;;
      *) # Relative path.
        ac_sub_cache_file="$ac_dots$cache_file" ;;
      esac
  case "$ac_given_INSTALL" in
        [/$]*) INSTALL="$ac_given_INSTALL" ;;
        *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
        esac

      echo "running ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir"
      # The eval makes quoting arguments work.
      if eval ${CONFIG_SHELL-/bin/sh} $ac_sub_configure $ac_sub_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_sub_srcdir
      then :
      else
        { echo "configure: error: $ac_sub_configure failed for $ac_config_dir" 1>&2; exit 1; }
      fi
    fi

    cd $ac_popdir
  done
fi

ENDREP
DELTA 127 8077 123
SVN  X   k resolv, res_search)
AC_CHECK_LIB(krb5, krb5_get_credentials)
AC_CHECK_LIB(krb4, krb_sendauth,,
   AC_CHECK_LIB(krb, krb_sendauth)CONFIG_SUBDIRS(libfaim)ENDREP
DELTA 104 109 2627
SVN  ,j  0  :rENDREP
DELTA 103 962 395
SVN  \N O  IN ". ' }CP kU z  T^K X- &  i bk ld JA |of expression elementsevaluate all RE elements im(m)) {
	match="aim/* now there will be only one TRUE / FALSE, find it among the NULL's */
  tmp=0;/* reverse the answer if negative polarity is in use */
  if (f->polarity) tmp=!tmp;
Deal with parens first. */
  for (i=0; i<OWL_FILTER_MAX_DEPTH; i++) {
    /* Find first open paren and matching close paren, store in x, y *//* Simply the parens by removing them and evaluating what was in between */evaluate expression/* hit the saftey limit, consider it invalid */
    return(-1);
  }

  /* Find AND / OR / NOT.
   *   For binary expressions (AND/OR):
   *     "type" is 1
   *     "x" will index first val, "y" the operator and "z" the second val
   *   For unary expressions (NOT):
   *     "type" is 2
   *     "x" will index the operator, "y" the value
   *   "score" tallys how many expression elements have been found so far
  /* it's not a valid binary expression */valid unary expression, we're donevalid binary expression, we're done */
	  z=i;
	  break;
	} else {
	  x=y=z=score=0;
	}
      }
    }

    /* simplify AND / OR
      /* simplifyENDREP
DELTA 120 0 11717
SVN  #pz8 i   \L kE HG^ oj t7 $1 ]{1 vjw L}\ lU c:n :T F/ m> 3 ; c@<signalmake_outgoing_aim(char *body, char *to)
{
  owl_message *m;
  int followlast;
  
  followlast=owl_global_should_followlast(&g);

  /* create the message */
  m=owl_malloc(sizeof(owl_message));
  owl_message_create_aim(m, owl_global_get_aim_screenname(&g), body);
  owl_message_set_recipient(m, to);
  owl_message_set_direction_out(maimwrite_setup(char *line)
{
  owl_editwin *e;
  char buff[1024];

  /* check the arguments */messagemessagevoid owl_function_aimwrite(char *to)
{
  /*  send the message */
  owl_aim_send_im(to, owl_editwin_get_text(owl_global_get_typwin(&g)));
  owl_function_makemsg("AIM message sent) {
    owl_function_make_outgoing_aim(owl_editwin_get_text(owl_global_get_typwin(&g)), to);
  }

  /* not yet */
#if 0) {
    owl_log_outgoing(to, owl_editwin_get_text(owl_global_get_typwin(&g)));
  }
#endif
}
signal our child process, if any */
  if (owl_global_get_newmsgproc_pid(&g)) {
    kill(owl_global_get_newmsgproc_pid(&g), SIGHUP);
  }    owl_function_zwrite(buff);
  } else if (!strncmp(buff, "aimwrite ", 9)) {
    owl_function_aimwrite(buff+9if (owl_message_is_type_aim(m)) {
    owl_fmtext_append_normal(&fm, "Type      : aimadmin */
     return;
    }

    /* zephyr */
    if (owl_message_is_type_zephyr(m)) {
      /* for now we disable replies to zcrypt messages, since we can't
	 support an encrypted reply */
      if (!strcasecmp(owl_message_get_opcode(m), "crypt")) {
	owl_function_makemsg("Replies to zcrypt messages are not enabled in this release");
	return;
      }

      if (owl_message_is_direction_out(m)) {
	owl_function_zwrite_setup(owl_message_get_zwriteline(m));
	owl_global_set_buffercommand(&g, owl_message_get_zwriteline(m));
	return;
      }
      	    }

    /* aim */
    if (owl_message_is_type_aim(m)) {
      buff=owl_sprintf("aimwrite %s", owl_message_get_sender(m));
    }

    if (enter) {
      owl_history *hist = owl_global_get_cmd_history(&g);
      owl_history_store(hist, buff);
      owl_history_reset(hist);
      owl_function_command_norv(buff);
    } else {
      owl_function_start_command(buff);
    }
    owl_free(buff);ENDREP
DELTA
SVN   v^ M@EOI-JCKCKWOyOSDDaJCG>DCKVGjF?IMIEMK%DCM;DG/K	EM*F:EM`EJ%DSJ6Q'KHSLGXI8DGD1D&FDJGEOoHQlEMFUI<DdGiDRMvJfD"D#DDaE#DUG/DjMILV\D#E9]m=M%DdzDVDm=EGZ=DVEDVNDV^NW&[8L}NcEa[{o;GFT\JfS%EV@A=@A=nTvU]nzD'@G=EFP@A @G@GD.@G=x V\G/FpD5E9I&RJOrDSW[Ft EGDGPEm]D@EJFr[MHlDVFQHD\HNc]DD@BnGD#H_EhDLmB@ZpsK@G=G`@Hp^S%@DGDEw@G=@Lv@BI;@G=@G+F2Dx@G=Dt@MPEx FrnKvFsy0Duy7~Zi*y`J8Dm9LcFzK:x9IA@D^KA{6ILDqDqS\yD~@Iku\Ev@D}H,Gj@P/V8vMG@I/Di@I/ucEGKc[*NNePlG$@CmgFEGIA[|V)IA@rGF8^xK2HxDExH6Dy@A @CMGrF9DGD,L]E^DVDoDYDbDCF]EUDY\~PLE\HVF8PGOZFgDRDCTD'E
DFOD|DcDVSE;D#^3G JMEJME;FHaNI/J-FsE8DCZ~F2E0EFcE8FF8\~PHgMMDE+M F
FWDDCEdEdFiDBD+FEAF:NG(K1O"GlFMQGXJcEDDJUDwFL][LE<bOD~DG6D-HqLgFr\~D~DF#S4EFIDyDgUVVoLEFDD?NpO O/FK=O]GHHlDmDVKDD7HNDibDGE'VH-T9D\DbJF~DkFHsFK"N=FlDH_GlF~DK!F+D7E6GE/EJbD^DE!FbDD1F9M=GH7HpIlDvEHdE+EsD-FPGDvDIMALcK_VXHF5E3e M_D#DyHCFUYGH_kWM_DK=D?DNMHFD#HrGVJCK=EmKCGVG DZDNI_I1EJXLoF`FxI,PDD	F	SiFlF2DGM!Mb^EFsD)MmFOD?G-FGFYFmEcI8EOE/qE#SG&M"EVGCMAJ%DxED#IALG-Hb8DJGiXFm3FKCHUIJ*ErKJ7EDdGaE/F`I^GwDCEYIHbDD2D@^>EhFlE_@KEhYHZCNcKDFHE&D'G$JCEHEHFD=DwE FEEF~IlF8FbF`iF*F~Fl`
sEhLiI]D#HE&D'P-GtYsG9KZvT#KCENDSH(D'D5DED@EdDPEE6DDF#EF#KhHF4IEEOE"DeFsKI_GWHFF&OEGWK	J8G[HLGWJGE4HFDiKFNH:FUPcDzMlOEsEH.IADQDKK_bE<GtGJD:GQMN,IMD=DGVD3DDOJhG2JYGtFNKeEPkXQQJtQDqIJFbL-HlFNTH!GJ(G@C9FDgD"D3G+FhHEIERGJE0F6DfEDLEmG^H~F6DjEE]EDPE|DQEdEOGwJKGqG:FbEDDDvHEtJOHLXD{KXDDyHIG$F?FmEDDD[L MXaER<HLG"G$DjL&DR@D~KGxDH3E:GrPuEMI>GKEPKmLD3@LE`MFfFJpkME,Dx7IpHxo7GlL+pCJ$RXvI>F{KBNrwJRDPWlvI>DJKQ@FVQ}DJpCGlKMA@RQ}GvI>VrI+pCG`KJ!@F-DfQ}HY@GhU3G)vI>X/K_@F6RF@F6LLU@GVLnPo@FVRQJFpCDxGFZZx9LAQ@F6VfFA@F6UyJ&@D8EIUprHISpJppCH#@LEH9@LEH=LnxH1v,I>DElJ8@PJgNzIrh<D^J!PD{D_E	PqE_@F~@JZEDIeEpF&EEEDqVG1K&FJrKvDrDeE8DDEE'EEaDGD{I4GG{IaG{F'F2HTR<ZEqDRKdG1IaG1DH/ENDrDbDpG*DpE8F!HLEM[M9L\[otYItDPFYF.GEJNFI	DE	GQLEH_G1SEGjGdG>DnJALTEdKUPsMvMwN.EKMcO^EOO^O^LwLlzYQP`@`jN\LVwFjDqKD HRD$ExDG[KPEDjQEHIvIAF/J3GcX*GCFcEcESDD]QEDdQEDD#DpDMEFmTAGCS@BF@JZL1DI'E	THJGR0LFJG{DH?E@G~K:MZHMZDaJnQDiO{RYE[F[GbTJ3FHQc#D{ITFaH7G>DF$UVIQDQE#TIrJYHQIIJIY@D'JBU`EVEE_GU>h@b^J:M_F`UHQF3R-^wHQe>D'LMK`m$@EcJ$EGjSkmmMRFHIrIwG	DE'E\JiEEG{XJ$S&N[RQ)@I	IhFHHTPmJtDeFDFOD#KK_GlD:J6X[@HZTJKD.EbHJGMMMDnFaI/N,@GNay@Jx@JZNhGPDdJCDKWuEdMIDmD'eH0ML+IDdD'glNeE$ELD3F&I.JGtP@MDI8FNR[WuG@R%EDFAEdDDbFHXE\VGXP@GVG2FsF F2DEDPElEE_GBIad u'EhHmE,DxEcD.EwFrETJCilIHS'ETDCFPKI&H2F^eKFgV.D^XDeU$ZXD'ICFYDJDF7HE,G@DJUH%ETDDYZ@N]^cT*G`TxExYHO*H_FFDkE,DDG%EaK>UmIJ;PE9F5EGdiGmG7GHvGdeoU
DtD5HuDY3NgZGd@J,@JCkc@N2WXERoHQNX|LAJ'|M0U0HIFD5DqDFHPWeIaGmKQE|H%K:D7Q>`D:FHPQyFbH9b+DHRL]alQZE/FzFFCEnDiFsELmJgPYbfwBLZE9HBDDFilFFYHP6aQI;DAE6DGxDxD5DUE9F5DcD F~FwFDcLE9H{D!FWFFGVJYEmMYErK[F~UN%I[H{JbF1D/DDaDDEIDwEN`E~D ED1DQDF#G0DyE~DdELDDD&D/ElE~DKFP|EvVXF:EIDK%I6HUEGH_a|ScGPIoDGEKWJLW$JYrVKFPH+EEmK!GVWLK[E0^\dRta]2FdFUE _bGSYF_rVDLfFdLyDkMRSMliEGElJF}PhD<J8IIcSt+]2D^cFrVFjI^EDbK'HFl[yu@_H{[K
oYFuIDTDE%F PfNIVH[OICX:iSoJGZKkDdHDuGTFCDwEDS^IOE,DHIG4QxH^EhQpL XqDw@K'DJDE|H$E=IDF8bQD|KrGJDDlDKDoGDPEDwD~EtD\D*D/DDDpEF@D/DOD4KFHXDEE"DJEODDqF\D*GIGGBDvD<EXDPDqGDqFkE`EqGEoDwFDFFDPG	E8GwDFZGDEHgIaDD6E_DEH4E/G>D
EODDlI,K	EE~H>DADFHMD)DEKuEcDxFjFzDLD,HgJ!F1DuHEHMDxF!DPF
FDHH_G!@z@JZFdK6K}GgEGiE}GGOKEoECO&E7DRH?JyEF6E(ICF%MoG>HK\KpH,G9M6GHJVFFoJ!DxD.KaO^HIGHpEHoM6D,I2M8}JN@eJX3K!HCH[KHL|OtYVDCMuEuHpIWUJ/IBH>GL\G5D3EBD6MF%QKJYJG4DzDGlF6SI]9Da]GS\F FBD6EOIPhD,KkO"FrOuIkKdG,II_D9GwFI}E&IErH\LKDqJ0QiO9LK~JLLUF;EvK|QiDI0ETL<IWc`DnD[FsG<G^FzG7EDBDG5E"F5KsI{cd(Y(D6XE]%G)\LG)PrF|GFDG{ICFSWM	DKrk"LhKdD:D4DFEE$H~FfO#K-KDLcLEycEuDe`T"I1J(DOUZD NJ^kWF
FfErDqFE_D3@IeOr`
KFGRFDzGKNEnDZH}D G>GGG:E^DDPE3D
E0F9EED@EDREDJD]FGDHFDE_DE+IUE3DJE5G}D$E`EE3D HkDDyEDKEFGD!MU~@ZExE_GM}^FC[G5M&FyHYaGKj=J6M6D`KH&DhDtM%ErItEkLECEQ~H H{EuFE,FTFOM8W	JDXHyDBDDDBFGgHH^6LPe*ErDKfZKqM
a_FEEpFGEUN%KCFIU.N%M]gO\gN%Iw\gN%D3]gP~De\gN%Dj[hN%HG]gEKOiJG+YX@BIhTME#JyJ(K;I^DNF6QlTxHNaPI?FfdLP.VGLeH/D:MFIHVF'UKD'EvI+IIHVFRNE2HMhHzGCJiYjHGUBD.DKDOfKFWwD;YLKWwDDK1JkHHWwGvKsEKKDDDHDEG1DQD;HaL[LH_KREfF$FIDJKOQG0I2IN.D7L0FIXHMlGPK>W DeZBGd@ScGd@F:NPXDLFHPRJH
EG	I	g[@^e@JZH>F<KJGU%J+DTQDG KlT;DUDwDdDxMTdDADD`PzGYK+EYFKDLF`R<DJhF@D<DuE5GDLD8D|LF`EtHoL=DPKF:GKN4HkEwGKG_EtG,G&K~G=KsEGRIGLS*DaJkJmHtGRRPhDYJqN&DK=EGEFFJEFF#F(EFEFFjEFsF9FiEFEFDwD8JBEEJDF"E(E5E;KAEsE9EiE_EeEkEqKwEEJEE#E(E5E;KAEsE9EiE_EeEkEqGwLhGG E9DZD:FEDEHdEkGzE3EwDEDFFD1FfEBD*I3DvG]H]GE|EAD3E#J.H]DDD$EnGD'DLE\FEEKFpDJmEDF2FLDBDJEH]EdIEJaDMMEUF.D<D;F[MHH\DzL]EDJFHDqDUM$DAIHE"DvD9ENHYGD3D7I\D,DlFADcEREHDMGAH]D*EtOG
xuKAH9KFQ4HQPF4Gmeo_n:DsD)GgM<GPEtFDJxD}F5FqG9KBE(G(G*MPM<DG GnUWHtDE$D$GG:E-Q EtIIEH]GD<HEJD1J~OREGK]F[KVRHMhDEMzG I?EjcL*J{4L{E[E\phLEuQWbO7@sjy3TJDFGZD3E
GhEEKV%UWDE,DEKDoDjDEF9IE{DMDDGMG/I	ENDERFEwU!@ECGFFD
LUMzF#JYFDLR@~#DAD~DQQODCEHgFH0FILXG`EYE#FW@EhFoQ4G[LGLnH0GdD4SMLH0P\w_atJsHNOQcErT-RF`[D'JUL/D~FD:QEGG1FdNFK[DDcX@DDPR#FzDbcXDJEEDSNM(D2DEDDD%E}F-E^Q8SpED8]XGuD6GsTIFGsNjHBD%HBLbLbLbD?PR#G,IVKSM>nH#HO8NtL)HG<XUF<Kq]DzHdD?MGM]NMD`bFkMHyFkDzF]Q3T2HThD,DbEHHEcDtLLN>H	FzJgEDKGJigI%UKbDkQ>FjL)H#E+J.GWQCR#E9R6E9JYR`eELDG6RfF8F{T/JUmL wKMP_OEHHAJUO>RQNQQ]D~NEqEEGDPcWEfEEN?KsMUR<E^FfERrYE.bE,R3ERDYD
H`d7E.E2fGAXJq-eEQ(F Nl4EcFDZWJt-D%Irbb\H,w;e	H.KFOD@GqIEeEvIMFIFKH`GaFKFE~DF:FEDAG?H2DH`RA]GwIAG3NzMfO'T^F5PF5QpDSDR`QEOUmEF
GkF@ESDgG9DgD$L~FD$GDIFYHrDAE'E;H8DjD,G9EHgOF
FKJ/EIGSGL^GH|G\xHCD8J\N`KoDvDN`F
G+O^F
H1H4]TGGLhH FY(GeGIuJGZDYFYS@~Y@O,G;INEIGJ@EVG|H;HEpF'D/FlFgMvE/EJFvD6H0E5JuFQP:GmD2FB^fFmG>ICD[ITJvSGIE!rFmLo@ObK.NLKFEPhUFmKUYX&FmHHI_dXFm@Y5DmHoJhFJ.F9LXEFrD\i:KfH	h:GWJfG8i4EKJfFi4G-JfDLG4V%b@MoYZI3HoDdDdF+EG9M~EL3H:GwDNE#GD>G
DHwF2GEE.E@EFODjD5NK^DGYDD@DyF FWDFBHIIzGoDD@G9D/GDzH8EFD@GMIDED8DXG~EyF D9EREE/IfG4H8G4DVG.G\QTD6JWGYEDI/DZD<HrF&@I>DdP	P"MEzJ7F5F2DnJ4D6E9IIZDzH:GKEvIDeIiHcH
H1LH]DbMDE'GkIJE8ElITF
DAF2KiEeE-F;HHD{H]HGMKeFK DLrDAGD D-KD{PI5FD=DzE}G+ILH@JDDI>EDDJE=H]IME4H%ILEtE!GIeDtE=HXDD-F	E2ILDSFIvDrKDKCD_GsHH]DAD4EGU!E$HkH~EOeJ GjJ\E\FuFIIEF.S'KJ9GGRDpD>MHlPD(GAEvF`K!GED"DSDF`OzGIEFIIBMw^DIQLF[GaEiGoF!V]I6N>D
DXE(ID\DDILpF"LgEvGUDD.DnEbMlDIIyF
UWXmEbPQ8EzI8FsDlLVF5G)DBJYLEcGFmJxUG{6GzD]GsGEb|M)J"hJIaX;ZHDM[R<F(FODLD,J#EyF~IwJLKUHDIJ3ErK3D0M!FF]LFH6G
HrENHUREFD+EjPFF<D8GMGSkT)GP3OEg @};Y;HfDtGo@hHSK}EsD?F*`dLu@@N-E@V_YpxN-mJW*G.EIIY(K3MHUY(D_DHOOHHJOKDF
GKlHzR?V2Pa_,HS;EIDpD!S)[0D`W	DDLDvDvDzFOODbDDzELK+YEXFLQ)RMH`cD;FdHZNzFCDGDFDkE2DuRJ"G,DkE$Ih_FMPUDa_uhnfaGQ @ObIKS;E'DjG$L%Q]D%KFD9G:mZFS;DHG$LnGyLEyTMzF
HmT(GT(F
OW\HI6F N0L`gUvP<El\NhG=K6XF]dLkGlIKId2JoZ{T>J4Dd`PF^xKvIdFp.H^lfkSqJ+HKGZ3Q]EIEEEErD4DEF DWMfNy@FFa@PoPMMD(DEFG0EuE<N+PE FDDKFUN4OjFUPU:KCEP_	NMeBEsdBJwF?D|dBE3D3eBDcDtfjDdBIGHGUB@I1OfTiPs(aepw>P:PGo{MZ`j{\df]YO)\\V\R]YQA\Pp\ZM@JGL|VR>HaD#H{D<@H]Z2F|]D~g\lDJJEeJ HD~H<P(NvFUc+@K'ScFFy@Y7IysAGDD W>Fy@uSq@3yEL;DwLl@Aq[R&E[N|EHDFSI-IhE/EwHWDyDDJGT1M3KJY\EgF3HSH^U@RIwg@IcGJ?G$DZHD[G>DNHMKwN4FqQUOBMzjFNG%E^DD	E	F$HQAEZRw"Z2H[HkK;WkpxuE)I\D EF]H)lPuuX&KAGHGJGGHJDpHF`I1Y_EuD KuF]DeDuD]D=DbD]GVKuD#DYGEDGD{F1DF'F!dLK+FFbEEEPVEGE)GrJKIrBF'EhIERHDDqG'GyGDHE\F\DRFtEHF0F\DZGBE=E+FyD.J3YaFD'E[L3D@YaEFZaEoXbJTY!JiZ}Ev\,SlL*DADyE@F9GzD\FEI EF~FsF`GI~FHK:FG]G(FD:E>H!D>K4JADwRiDwGFF?RLD*J3q+uFZ2DxwGM@RV"EDKDoE.E'DFSL4EDDGsHF.F4DkEfDtDD;GE
DGEiGsDFXH%EE2D	DhEVFDYFEYE{ED]F2HDExF[D[GsF>H5HhExFFEoF[D<H`HMHGCD+K$D`G`M9L4EcDpKEgvYyGgE'EMEI[{GgYwEQS'Zi\lDHEDeGIDfGgH_L{DEDiN%DYX r2po`{Hz8IaDiGEyFbHvaXv,YyEESG%DGEDXEXg[;Z9E NQ_F_lE_l\lE2D.DJ"T GEwaXvoMEuD+SXr2ScUH|EsFuEF[{FsXxGObEcmD4EJ%DDDEDJTFED7hnxZQG2FC@spq`@@FF EnF-ExDUHizKXfEhNXDyG^IVHQOiG=KiJLFHw\4q3U2ECGvH^EZKuIGLDF}\lFr_lI_lH%XOU aOH4DDDsD}DWHLGWDmGE*IsEwDDCEZF=S;KGSKHDkEuDnJL:GBEAEhD>EvMUN3E	oJzqHSJDEbD|FcE#D?JESSZXu8^cDJ8` Q/[PZ1JFlS;H+N]E5EDIEOF~G+EAEOEGDPG IBDFEbvHPuKnJ(J)Zm}vHSIIEbD[EENwF&_VbEN]4U-J"@ANXFRECEY	Q1P:DODAD\D|EADkI+E"D3IF0PwFRJ?K)VmJTGCf0K@b]@p?KgT6D6NOecWp@D@EJXK+F:GWHbJDbHSEL:JxDKxGtGK<EiHD>G=HbDlD[FsJL~DH~GXVm\HcXIO]Id]IVkH$Y^HodLL|\gIWe I?pgPasi[/EfFrFcI(MwK?GWInD)IwI(IhJQJIPCM	Y
MO>bDX!DZHOEuF K>IFMPwI]I:O)Oc\OVI3EjDJ?JL2D`G<DD7FD^EhFRZuEDZDUe&EXEF[EF-g`D1LHP(ZG}E~EQF7Q#L|ZGIMPL)Izc_FPZ
ZDnH,FgEYE,PI{^kGdlMdnTGiFa@AbG>ED@C:Dqh:Z/ILDfIek<FvH*HYHlE_FcGHEIDFxFfEcIPD(N4FcDbG GEHFBG/QKxKNEMtH:JkDiL3e%D}tXOoepkpGlMTIEBDiI2NHFfHGyD[HL:HGVNR`vZ7S-GsO(XD%E.FgH	UFGiDJSHn\)HDPEuFWMSH{OxMSFIU0EDME9IbQOM/DgFmD*R%DDT=G9UUE_UUIE
Rvzl*aKl*ul*|WHJP,MTHZGF3H;G`F\HiJ0EmGIJ"L;FkEVH;JwEKLO|KDMI\dLJiyl*GTHMVdryElI}oXKDa7Hhz][tNlJ)J-GKE3G>EGILFAJ2RF)P,ODGHEJ|PH[4MbDOn"f%gHR	H<P>\EKtEIk>fKK@JOyLXOIz[_K>dyW |:G2@W}JVE>OgEj@MWMnI3@IWDDJNmNj@IWH|ElY=IAUO@FyJR]DEiwGP$@E6U}KuEG9Q G]dHML5K@q6@a+DLnlCR(DwGXQbH?DtErDYDFG\Dg@I@@Mg@y7`5k[EBDqO(K0G3IcD\JGH]HRNJ^LPK+FHEuDhG[FKDE-G*JIwIQF\EuQTLFh_	@t*GFEna^_+|AYyD^_[ux:GBQcO`KE I8bDV@AlG]QwfF\xXP:D7SEDEMKdFKI FKDHI#KeH*EXz
[LvmYMD~D
E|DnEF[DRGUEID-IEGoi|Z_xG*D9DqK{WwG/OHpI>Hw_!QlI/FsLsN	LQ]~IiK@JLwJ|QAbnl_NF!HAL4PIiJiR`H)QeX+GGNf\y,_xIfK"DpE\EBh1G_!OkY!@ArLrGFJFec,@Dr@Xv
H{FAQ1D[DpEE4G(MGG1Gr@'QHsGDLNFFIKO@DLHbT`EZE@D DFIFKH8INVG\FKaLE"DUEDeDM_LqFDFD D6GuG[EJ_EFYS6Q	KLLEHwFlM	L HdEMEHFAGIGkD1PE#GFgMQD,FFFHsDSND>FME%DnHdD]GfD2DDXEpE>DHESD*EFvD.GDG9D0I<EJXHnF9DHALRD4G'EzImDDFjDpDF'GnH2FzEGDQGUGBDAE!HBIG\DsJODjH/L+QiDpDDEyELfJWDL7PwG1EIFKDD7EQEIEE}DZJ<OMTE8G D!D5DZD*GE1N=gNK'KGD,DDJtQ`aDDJFGGJDJRLYeVdRE$Dsh&N~QJ@MWF"iM{L_xgY	@Om\lHFODmGXO|^mU}g{c2cXluaRrK\O!n(zpmGjSHTGUENjGEDeE+E8DEADQ^=dXZFS%I>\w]OGiE<Q1DpM8EH0G$K,GOF!DkG$FBF@GpItHEAI|Q
HGHJDNGpF
GqGpDDqGEEYJGEG`EYIzF9D)E[DZO&HfEhHRGJFEIRmE$E%FUGEFqJ[F[JAILF&L)TkK|M'F-DZOMFZ@Q,@ w-@kQd}I$FDHSS=WQQljw\&D:@-MYM)@C@rPsG$KVMWlgrv{U)RuKR@qwZuFLN$F EqGjD>FjGqJWlJrOE3JYFDHFN]ImFDL%H6M!K1LDJ)LKbqqkg{z{`kqbq@RWl^EF)|D@@abGpDdE?Y"bnl[D`KhP{@J%SgPLEAI'@B-I1[M@PDZN3Op@J%GFE?[7@J%MO@J%EaS;FkKOtXLFYKzTMGN`E'GGIDaGZX,@IoQgGG~JG4NnLAGCNrFvDPH$Vnc.c`DXNwPOORT@pG@V{K3b"KuFIrG"DDEPZJ&FvD5NkHyEJwJ>HG4HxLVKjOE"HTUkMeERiDEQGGxG>FOEcVIG H
EGLQPXIXGD9KkH{NoJ&DGIUH
qyd_@P*k[@DoO@Ask[@K\k[uOUlI EDxH|DMNx9_"L~F0IKlJcNaRZGKHVT JFALUp~M8@HEQqQZRSP@u4eOTQ8IL@DXLjV]H^TWkJv	G(E2Qk@Qa@g,pGN9Qg#include <stdio.h>
ys/stat"owl.h"

/*/

struct owlfaim_priv {
  char *aimbinarypath;screennamepassworderverroxyuserohcaptainmyint connected;

  FILE *listingfil
  fu8_t *buddyicoletime_stampfu16um;
};aticmsgerrreasons[] = {
	"Invalid error",SNACRate to hostclienNot logged onService unavailablenot definedObsoletesupported byRefusply too bigsponses lequesniBus payloaInsuffic rights local permit/denyToo evil (sender)receivUser temporarilyNo matchList overflowambiguouQueue fullwhile on AOL",len = 25void test_debugcb(session,level,stformat, va_ va)parse_loginfra*fr, ...authrespflapvercompaddcb_bososinitdonesndadmout)rraccountconfirminfochanghandleredireccbmparamboslocreintervalmotdgetaimdataunsigned*bufretlenlong offslemodmemrprintflags(cmtmpstriing_han11_args *22offgogenericloisseackratenotifysearchrpopupausmigsissinofflinemstypitiget_reqdie4rechatnav__ */owl_it()
global(&g), AIM_SESS_FLAGS_NONBLOCKCONNECT, 1)tgin);
}
,ret*/* this will leak, I know and juon't care */
 v=malloc(sizeof()memset(, 0, -> =strdup( = ".oscar.aol.com"->aux=ret=ift)snoinf(ur%i\n");urn(-}, 0/* needheckit's firstthinkkillIMACK, "msg"joroomleaveprocess_events(wai = NULLval tvsel = 0 =  *) &/* do aect without blockingtv.tv_secu, &tv, &isp_lap_nogen_TYPE_BOSsent}= -1) {/* keep */fall through} else0n pendout1tx_flushq22->RENDEZVOUS_OUTnd) <
	ion()	comma>rxdisp0x%04x:sub/* we should have callbacks for ese,the librarydous.SUBOFT_DIRECTIMrom %sgetsn)		}!majorbreakprobably ree->xit}_s  LIENTINFO_KNOWNGOODkeapvap, f  key =argva_pfr->, &key 1 *S :->* C.code || !bosipcookieLECURLurlReg us: %dregmailBOS IPClos...(newBOS:l-> &TATUSERR
{
#if 0XXX fixuFLAP 8/*uti32(*/ 0xfTis an altedo moreke sure its realhAUTHdo NOT  a, ited:t
#f
{addB_FAM_SPECIALCOMPLETE, INITDONE0x001303,6f082,9GENGEN_RETSTS_SETREPORTINTERVBUDBUD_RIGHTSMOTD45ERRLOCLOC1fOINGFFGOMSGMSG_IERROMISSEDCALATECHANGEVIUSERb,2,ICQICQLINE#ifdef MID_REWROTE_ALL_THE_CRAPnies[128];isnew pro[256awaymsg"blah Ole!"Cau: B12 eop(who I) sn), "&&%s&" ?: Hello.<br>My is %s.  They were dumb entovis message inir, ory.  Shame
om.jagworks&jkretch76& personalbosesetAPSDYICON |CHATGETSENDIMIMAGGAMESAVESTOCKENDLISICQUNRTFSERVERRELAYTRILLIANCRYPT(ired,emptyreqt groups -- claSivacyPRIVLLOWIDLEn))up!SN-: FLOGIN_dur->fdRESOLresolveorizerVE77gi/* Ifgrbe readlizit()lemsgin rr:,mloopof (%s,==0)?"":",ypngthval)st%s:%dx,?"":"?val:"(st)dir->Advert7t *ts|| (unre/* ShatNavuh oh... g!!etersICBM P: maxned,aullx,= %frecieinl->msg((float)warn)/10.0recvinmsg Seeo your tas mediumethighergoodselfgfloo(espif'ra slowomeg whtwbeuseful) = 800 millisdsetmaxmaxwer: Max /sioicqsiignatminimum ?++"U,Mandatory upgradAdvisSystem bulletiTop o'world!"de5 (id, (id <)?id] littleianlook modulertc) maybe given. soten.exeput ".ocm"th.
 Now,c atisid ispevalue hashin-an (ebytes:followeby).Addiod 4096itanaority befdmodB's Brigade:d likiun/fmod"ilesbu!(trlen)+1++4+1"s, "%s/%s,)tat&st(> st.st_) ( - &&%=t at  ii+=bufi=memcpy/* Damniss.m(LSB)buf[i++&> 8)1624= =%in \"%s\"!(fopenr"bufseek(fSEEKclose(ead) !suc!geaof whatAIM.EXE hasvihoplys) auffer socantonbpolice32_(emNDMEMISREQUESAIM(/)sUNCONFIRMED ADMINISTRATOROLOLOSCAR_PAYFREEWICQWIRELESSCTIVEf_encoq: sn: %f(:= f("ncluonidcapabilitpr_PRESENTABILITIES) ? ""GEGENERAL: "[none]MESSAGE: see abovstrncmp(, ", 1trstrday"Gda.")mextI.dHASum_ex&bin 2567bcx0x0f110x1111111111112222222222222222 * Iis ademrof howarbitvia  'scapebaseN of any sorApparentlyhWinAIMdoesgnize,gnaisplaywindowHOWEyyou, ae cretnyiTulbg wseely sublimialyou..CUSTOMCHARSET=ub0x4242multimpt mpun"UNICODE."50404430400442eparbas:"P1, ASCII.  3mpmaddascii,uniMULTIPAR =prea human-preamblnmeanatverynspicttachmto otInappears ashity he onrawfenifes.45FEATUREScoumecbmnon-anarningWARN_ANONtoryward"tsrif", "elddi"tsalnediaemankc "teytictapiz"u12345", 7o owner! < 8)?:+82reqNAV", 67)?"WD"43", 4"d", 5mid"up@auk.cxsg 7900", 8nickputs8  1wdNEWPASSWORDOLDsetEMAILADDRESSatoi < 1newz+zz < i; z++)
	[zz %+0x3[i'\0'WAY,cqtextE_DNDrtf{\\rtf1\\ansicpg1252\\deff0lang1033{\\fonttbl0\\fswiss\\f0 Arial;}1\\an\\fprq2GeorgiamoderMS Mincho32 Symbol;}}\\viewkind4\\uc1\\pard20 T\f1fs440}rtf&fgcolob =dC1: Strd M*eal8192+1inger(->,CKckREQeqhas{, } * Quickeac*acvelHTML entity0; +(i]) < |< 12|>= 1605SO 8859-1-"%uni,&#; * Fors (isno.  Mosttnals/suchunmodifieBewPC128159_not_ actuor,m i,sowellYouiowrong. , Microsoft "SmartQuotes"byas.at,nkstconpy/* am((sc:%r.nut, ec->next,03t %d:,z, "%ld, = '<'	!= '>')	  ,2: Rvous z: source\t/descripuit.eaoy iauto I.: ()(%dne2is:) (cap)&?" ?" OLOL?"?" W?" ICQ?" 			 Usnacew,<)?tobounc%sd(0o largexcEeRnum%d)?n IMo5 cleared, ealer,curavaxavdplas bem_middle()s.creexactlrela (ie,nue).E:at (%l< 5]:	
	new * Nla-in (aloff hisedte:= %2.1f%%)?:ym, *SNnSNE-MS Res:for", &SNs[i*(MAXSNLEN+1)]No*urwidhlaur:x%x:%d:	 agaiSSImttemsi_, *s: (2em; l; \t -/ll->gl->bidetaesay almsgldd/ %02d: ymond->houinuTee.c :  Nccupaed:get\t[i]. Soleftupd *ser_d25maxvisiblionc5\tR:,->O \t(ROOAB?, NAV_ONLYOnINSTANCINOWEDIOCCUPANT_P peekC (_d2525tmp1152]DechopurposBuves ("oops!"str!, "(%s said)ax RCon E total\t%/18qcn, **ckcyqc8  cknav(CTCTN_HTHTJOINLEAVUPDAnav)*/	%Weoto!	 fDonew1024ohmigod! (IM). He'! *squeal*istOFTYPOFT: ofheaderffhpbufpo2048(!(=oc(1) +2XXX:ideawinex=. damn. Resgodsn*s. --m; <%= 0os >fil. spt awir:end: writehydll		([f)EO!=hra early0x%x0x%%c)2nh  trans:fend, *=\n+"\r =-  ++[81[8 =tol*)1doffiof\n\ft->fh.&DISRECEI4uiI,(%2verccepttototsum (!:ddemim}
}
ENDREP
DELTA 68 3207 455
SVN  c}3 J cho "$progname" $options
exec "$progname" $options
ENDREP
DELTA 115 1372 1468
SVN  R#= 9  31 nZ  n w[oowl_list_create(&(g->messagequeue
  g->aim_screenname=NULL;
  g->aim_loggedin=0;
  g->aim_lastnop=0;
}

void _owl_global_setup_windows(owl_global *g) {
  int cols, typwin_lines;

  cols=g->cols;
  typwin_lines=  if (g->recwinlines<1) {
    /* this will screw things up.  I'm not sure what to do yet,
       but this is better than nothing */
    /* g->recwinlines=1; */
  }

  /* create the new windows */
  g->recwin=newwin(g->recwinlines, cols, 0, 0);
  if (g->recwin==NULL) {
    owl_function_debugmsg("\n\nI just received an error on creating a new receive window\n");
    owl_function_debugmsg("newwin was called with arguments (%i, %i, 0, 0) and returned NULL\n",
	   g->recwinlines, cols);
    endwin();

    exit(50);
  }
      owl_function_debugmsg("New size is %i lines, %i cols.", size.ws_row, size.ws_col);
  owl_function_makemsg("");
/* AIM stuff */

int owl_global_is_aimloggedin(owl_global *g) {
  if (g->aim_loggedin) return(1);
  return(0);
}

char *owl_global_get_aim_screenname(owl_global *g) {
  return (g->aim_screenname);
}

void owl_global_set_aimloggedin(owl_global *g, char *screenname) {
  g->aim_loggedin=1;
  if (g->aim_screenname) owl_free(g->aim_screenname);
  g->aim_screenname=owl_strdup(screenname);
}

void owl_global_set_aimnologgedin(owl_global *g) {
  g->aim_loggedin=0;
}

aim_session_t *owl_global_get_aimsess(owl_global *g) {
  return(&(g->aimsess));
}

aim_conn_t *owl_global_get_waitingconn(owl_global *g) {
  return(&(g->waitingconn));
}

int owl_global_is_aimnop_time(owl_global *g) {
  time_t now;

  now=time(NULL);
  if (g->aim_lastnop==0) {
    g->aim_lastnop=now;
    return(0);
  }

  if (now-g->aim_lastnop >= 30) {
    return(1);
  }
  return(0);
}

void owl_global_aimnop_sent(owl_global *g) {
  time_t now;

  now=time(NULL);
  g->aim_lastnop=now;
}

/* message queue */

void owl_global_messagequeue_addmsg(owl_global *g, owl_message *m) {
  owl_list_append_element(&(g->messagequeue), m);
}

/* pop off the first message and return it.  Return NULL if the queue
 * is empty.  The caller should free the message after using it, if
 * necessary.
 */
owl_message *owl_global_messageuque_popmsg(owl_global *g) {
  owl_message *out;

  if (owl_list_get_size(&(g->messagequeue))==0) return(NULL);
  out=owl_list_get_element(&(g->messagequeue), 0);
  owl_list_remove_element(&(g->messagequeue), 0);
  return(out);
}

int owl_global_messagequeue_pending(owl_global *g) {
  if (owl_list_get_size(&(g->messagequeue))==0) return(0);
  return(1);
}
ENDREP
DELTA 4 106550 677
SVN  
bWM K$A }I CG#include "owl.h"
#include <stdlib.h>

static const char fileIdent[] = "$Id$";void *ptr;
  
  if ((l->size+1) > (l->avail/GROWAT)) {
    ptr=owl_realloc(l->list, l->avail*GROWBY*sizeof(void *));
    if (ptr==NULL) return(-1);
    l->list=ptr;
    l->avail=l->avail*GROWBYvoid *ptr;
  int i;
 
  if ((l->size+1) > (l->avail/GROWAT)) {
    ptr=owl_realloc(l->list, l->avail*GROWBY*sizeof(void *));
    if (ptr==NULL) return(-1);
    l->list=ptr;
    l->avail=l->avail*GROWBYENDREP
DELTA 4 107240 1657
SVN  "0?- d 
 f;: y@ "2E @. ' C&\ _l g7 y)static const char fileIdent[] = "$Id$";

void owl_log_outgoing(char *to, char *text) {
  FILE *file;
  char filename[MAXPATHLEN], *logpath/* expand ~ in path names */
  logpath = owl_util_substitute(owl_global_get_logpath(&g), "~", 
				owl_global_get_homedir(&g));

  snprintf(filename, MAXPATHLEN, "%s/%s", logpath, tobuffowl_free(logpathsnprintf(filename, MAXPATHLEN, "%s/all", logpath);
  owl_free(logpath, *logpath;
  char *frombuff, *ptr, *from, *buff, *tmp;
  int len, ch, i, personal;

  /* we only do zephyrs right now */
  if (!owl_message_is_type_zephyr(m)) return;
      =(expanding ~ in path names) */
  if (personal) {
    logpath = owl_util_substitute(owl_global_get_logpath(&g), "~", 
				  owl_global_get_homedir(&g));
    snprintf(filename, MAXPATHLEN, "%s/%s", logpath, from);
    snprintf(allfilename, MAXPATHLEN, "%s/all", logpath);

  } else {
    logpath = owl_util_substitute(owl_global_get_classlogpath(&g), "~", 
				owl_global_get_homedir(&g));

    snprintf(filename, MAXPATHLEN, "%s/%s", logpath, from);
  }
  owl_free(logpath);
  short_zusENDREP
DELTA 97 165 8270
SVN  %D} B   F] nX! A| ~] VO 	S p' &ZD < JF 7 xg9 kkK A{ .A Es ,xK T<4 h  nE s7L gZ PG -D Rp 
K @Z a" ^
 KsE Rp 
K l u cx } u% u) n& E cgstrcpy(m->hostname, "");
  m->zwriteline=strdup("");

  owl_list_create(&(m->attributes));
  void owl_message_set_attribute(owl_message *m, char *attrname, char *attrvalue) {
  /* add the named attribute to the message.  If an attribute with the
     name already exists, replace the old value with the new value */

  int i, j;
  owl_pair *p;

  /* look for an existing pair with this key, and nuke the entry if
     found */
  j=owl_list_get_size(&(m->attributes));
  for (i=0; i<j; i++) {
    p=owl_list_get_element(&(m->attributes), i);
    if (!strcmp(owl_pair_get_key(p), attrname)) {
      owl_free(owl_pair_get_key(p));
      owl_free(owl_pair_get_value(p));
      owl_free(p);
      owl_list_remove_element(&(m->attributes), i);
      break;
    }
  }

  p=owl_malloc(sizeof(owl_pair));
  owl_pair_create(p, owl_strdup(attrname), owl_strdup(attrvalue));
  owl_list_append_element(&(m->attributes), p);
}

char *owl_message_get_attribute_value(owl_message *m, char *attrname) {
  /* return the value associated with the named attribute, or NULL if
     the attribute does not exist */
  int i, j;
  owl_pair *p;

  j=owl_list_get_size(&(m->attributes));
  for (i=0; i<j; i++) {
    p=owl_list_get_element(&(m->attributes), i);
    if (!strcmp(owl_pair_get_key(p), attrname)) {
      return(owl_pair_get_value(p));
    }
  }
  owl_function_debugmsg("No attribute %s found", attrname);
  return(NULL)owl_message_set_attribute(m, "class", class);
}

char *owl_message_get_class(owl_message *m) {
  char *class;

  class=owl_message_get_attribute_value(m, "class");
  if (!class) return("");
  return(class);
}

void owl_message_set_instance(owl_message *m, char *inst) {
  owl_message_set_attribute(m, "instance", inst);
}

char *owl_message_get_instance(owl_message *m) {
  char *instance;

  instance=owl_message_get_attribute_value(m, "instance");
  if (!instance) return("");
  return(instance);
}

void owl_message_set_sender(owl_message *m, char *sender) {
  owl_message_set_attribute(m, "sender", sender);
}

char *owl_message_get_sender(owl_message *m) {
  char *sender;

  sender=owl_message_get_attribute_value(m, "sender");
  if (!sender) return("");
  return(sender);
}

void owl_message_set_zsig(owl_message *m, char *zsig) {
  owl_message_set_attribute(m, "zsig", zsig);
}

char *owl_message_get_zsig(owl_message *m) {
  char *zsig;

  zsig=owl_message_get_attribute_value(m, "zsig");
  if (!zsig) return("");
  return(zsig);
}

void owl_message_set_recipient(owl_message *m, char *recip) {
  owl_message_set_attribute(m, "recipient", 
  char *recip;
     
  if (m->type==OWL_MESSAGE_TYPE_ZEPHYR) {
    recip=owl_message_get_attribute_value(m, "recipient");
  } else if (owl_message_is_direction_out(m)) {
    recip=m->zwriteline;
  } else {
    recip=owl_message_get_attribute_value(m, "recipient");
  }
  if (!recip) return("");
  return(recip);
}

void owl_message_set_realm(owl_message *m, char *realm) {
  owl_message_set_attribute(m, "realm", realm);
}

char *owl_message_get_realm(owl_message *m) {
  char *realm;
  
  realm=owl_message_get_attribute_value(m, "realm");
  if (!realm) return("");
  return(realm);
}

void owl_message_set_body(owl_message *m, char *body) {
  owl_message_set_attribute(m, "body", body);
}

char *owl_message_get_body(owl_message *m) {
  char *body;

  body=owl_message_get_attribute_value(m, "body");
  if (!body) return("");
  return(body);
}


void owl_message_set_opcode(owl_message *m, char *opcode) {
  owl_message_set_attribute(m, "opcode", opcode);
}

char *owl_message_get_opcode(owl_message *m) {
  char *opcode;

  opcode=owl_message_get_attribute_value(m, "opcode");
  if (!opcode) return("");
  return(
void owl_message_set_type_aim(owl_message *m) {
  m->type=OWL_MESSAGE_TYPE_AIMaim(owl_message *m) {
  if (m->type==OWL_MESSAGE_TYPE_AIMasecmp(owl_message_get_recipient(m), ZGetSender()) ||
      !strcasease3(m);
  owl_message_set_body(m, im(owl_message *m, char *sender, char *text) {
  char *indent;

  owl_message_init(m);
  owl_message_set_body(m, text);
  owl_message_set_sender(m, sender);
  owl_message_set_type_aim(mnormal(&(m->fmtext), "AIM: ");
  owl_fmtext_append_normal(&(m->fmtext), sen  (m);
  owl_message_set_type_admin(m);

  owl_message_set_body(m, ;
  char *ptr, *tmp, *tmp2;

  owl_message_init(m);
  owl_message_set_sender(m, n->z_sender);
  owl_message_set_class(m, n->z_class);
  owl_message_set_instance(m, n->z_class_inst);
  owl_message_set_recipient(m, n->z_recipient);
  if (n->z_opcode) {
    owl_message_set_opcode(m, n->z_opcode);
  } else {
    owl_message_set_opcode(m, "");
  }
  owl_message_set_zsig(m, n->z_message);

  if ((ptr=strchr(n->z_recipient, '@'))!=NULL) {
    owl_message_set_realm(m, ptr+1);
  } else {
    owl_message_set_realm(m, tmp2=owl_util_stripnewlines(tmp);
    owl_message_set_body(m, tmp2);
    owl_free(tmp2);
  } else {
    owl_message_set_body(m, tmp);
  }
  owl_free(tmp);

#ifdef OWL_ENABLE_ZCRYPT    int ret;

    out=owl_malloc(strlen(owl_message_get_body(m))*16+20);
    ret=zcrypt_decrypt(out, owl_message_get_body(m), owl_message_get_class(m), owl_message_get_instance(m));
    if (ret==0) {
      owl_message_set_body(m, out);
    } else {
      owl_free(out);
    }
  }
#endif  owl_message_set_recipient(m,
			    long_zuser(owl_zwrite_get_recip_n(&z, 0)owl_message_set_realm(m, owl_zwrite_get_realm(&z)); /* also a hack, but not here */
  m->zwriteline=owl_strdup(line);
  owl_message_set_body(m, owl_message_get_body(m))+30);
  strcpy(body, owl_message_get_body(m)owl_message_get_sender(m)owl_message_get_opcode(m)owl_message_get_class(m)owl_message_get_instance(m)owl_message_get_opcode(m)strdup(owl_message_get_body(m));
  body=realloc(body, strlen(body)+30owl_message_get_sender(m)owl_message_get_opcode(m), "ping"owl_message_get_class(m)owl_message_get_opcode(m)owl_message_get_opcode(m)owl_message_get_instance(m)"From: ");
    if (strcasecmp(owl_message_get_class(m)owl_message_get_class(m)owl_message_get_instance(m)owl_message_get_zsig(m)nt i, j;
  owl_pair *p;
    
  if (owl_message_is_type_zephyr(m) && owl_message_is_direction_in(m)) {
    ZFreeNotice(&(m->notice));
  }
  if (m->time) owl_free(m->time);
  if (m->zwriteline) owl_free(m->zwriteline);

  /* free all the attributes */
  j=owl_list_get_size(&(m->attributes));
  for (i=0; i<j; i++) {
    p=owl_list_get_element(&(m->attributes), i);
    owl_free(owl_pair_get_key(p));
    owl_free(owl_pair_get_value(p));
    owl_free(p);
  }

  owl_list_free_simple(&(m->attributes));
 
  owl_fmtext_free(&(m->fmtext));
}
ENDREP
DELTA 105 8172 2612
SVN  }wa [  ^a V d jcT R}7 J}e "X 	 a t t qZ; x& X% ~msg#ifdef HAVE_USE_DEFAULT_COLORS
  use_default_colors();
#endifowl_function_AIM init */
  owl_aim_init();msgs=0;
    zpendcount=0;
    while(ZPending() || owl_global_messagequeue_pending(&g      owl_filter *f;

      if (ZPending()) {
	/* grab a zephyr notice, but if we've done 20 without stopping,
	   take a break to process keystrokes etc. */
	if (zpendcount>20) break;
	ZReceiveNotice(&notice, &from);
	zpendcount++;
	
	/* is this an ack from a zephyr we sent? */
	if (owl_zephyr_notice_is_ack(&notice)) {
	  owl_zephyr_handle_ack(&notice);
	  continue;
	}
	
	/* if it's a ping and we're not viewing pings then skip it */
	  continue;
	}

	/* create the new message */
	m=owl_malloc(sizeof(owl_message));
	owl_message_create_from_znotice(m, &notice);
      } else if (owl_global_messagequeue_pending(&g)) {
	m=owl_global_messageuque_popmsg(&g);
      }msgif it matches the alert filter, do the alert action */
      f=owl_global_get_filter(&g, owl_global_get_alert_filter(&g));
      if (f && owl_filter_message_match(f, m)) {
	owl_function_command(owl_global_get_alert_action(&g)messageIf we're logged into AIM, do AIM stuff */
    if (owl_global_is_aimloggedin(&g)) {
      owl_function_debugmsg("Doing aim processing");
      owl_aim_process_events();
    }

    /* follow the last message if we're supposed to */
    if (newmsgmsgs) {
      owl_function_do_newmsgproc();
    }
    
    /* redisplay if necessary */
    /* this should be optimized to not run if the new messages won't be displayed */
    if (newmsgHandle all keypresses.
     * If no key has been pressed sleep for a little bit, but
     * otherwise do not, this lets input be grabbed as quickly
     * as possbileENDREP
DELTA 128 62 255
SVN  iOX .  L!: }l<time.h>
#include <libfaim/aim  aim_session_t aimsess;
  aim_conn_t waitingconn;
  time_t aim_lastnop;
  int aim_loggedin;
  char *aim_screenname;
  owl_list messagequeue; /* for queueing up aim and other messages */ENDREP
id: o.0.r129/51216
type: file
pred: o.0.r127/8749
count: 9
text: 129 3286 4435 73994 c476dc90df6e791fa306e45320dd2722
props: 4 170428 107 0 3c711300be3ea7503c3f4d9c1da3fa17
cpath: /trunk/owl/configure
copyroot: 0 /

id: i.0.r129/51432
type: file
pred: i.0.r124/2006
count: 9
text: 129 422 941 2584 6f8cde8f4c8f20ac35786f826dfd9bce
props: 4 171313 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/Makefile.in
copyroot: 0 /

id: m.0.r129/51646
type: file
pred: m.0.r117/14482
count: 26
text: 129 1387 1873 58584 d63852f091a2da094fdd9697953aa96d
props: 4 171599 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/commands.c
copyroot: 0 /

id: 19.0.r129/51864
type: file
pred: 19.0.r121/4534
count: 20
text: 129 49120 1799 13943 a2cf536cd2b1a09adec327156f7ae8b4
props: 4 170743 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/owl.c
copyroot: 0 /

id: 1a.0.r129/52079
type: file
pred: 1a.0.r128/405
count: 29
text: 129 50946 246 11343 d7fd25e0d24e407b63fb92c3fc24a7fc
props: 4 172467 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/owl.h
copyroot: 0 /

id: w.0.r129/52292
type: file
pred: w.0.r120/11743
count: 49
text: 129 9234 2240 75376 55cc745ba22263dfbfcee757a3f8f66c
props: 4 172752 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/functions.c
copyroot: 0 /

id: 17.0.r129/52511
type: file
pred: 17.0.r128/614
count: 24
text: 129 42277 6818 25924 5c91819b5a4739f64c97458a44ecc622
props: 4 174760 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/message.c
copyroot: 0 /

id: x.0.r129/52729
type: file
pred: x.0.r117/15557
count: 10
text: 129 38009 2540 15002 e13098ded003a57b99d67aa5b3fda00e
props: 4 177082 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/global.c
copyroot: 0 /

id: 1x.0.r129/52946
type: file
pred: 1x.0.r68/5052
count: 1
text: 129 37917 67 637 6712ce81aa4e27ddb94bfd375994124f
props: 68 4932 107 0 3c711300be3ea7503c3f4d9c1da3fa17
cpath: /trunk/owl/athstatic
copyroot: 0 /

id: s.0.r129/53159
type: file
pred: s.0.r104/3329
count: 9
text: 129 7953 24 20586 bb2086d7798c25a581c3410c6016ccd3
props: 4 177965 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/editwin.c
copyroot: 0 /

id: p.0.r129/53372
type: file
pred: p.0.r127/9392
count: 11
text: 129 7747 180 2904 4d5bd16efb00df7bb57a68934f9d2034
props: 4 178541 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/configure.in
copyroot: 0 /

id: h.0.r129/53589
type: file
pred: h.0.r127/9608
count: 92
text: 129 0 398 32186 da7a5c94671d9bdb02dc243517c6884d
props: 4 178830 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/ChangeLog
copyroot: 0 /

PLAIN
K 13
svn:eol-style
V 6
native
K 12
svn:keywords
V 23
Author Date Id Revision
END
ENDREP
id: 22.0.r129/53895
type: file
count: 0
text: 129 11499 26405 80502 84c0ac33f7a7e41b84d8a8939c268ea6
props: 129 53801 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/aim.c
copyroot: 0 /

id: 14.0.r129/54090
type: file
pred: 14.0.r5/10737
count: 2
text: 129 40576 504 1762 9e7029f28f7bb3c7404af982dc58f614
props: 4 180255 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/list.c
copyroot: 0 /

id: t.0.r129/54302
type: file
pred: t.0.r103/2200
count: 7
text: 129 8003 1206 10519 97d9f2d436156256958dfc682c8b22d5
props: 4 181689 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/filter.c
copyroot: 0 /

id: 15.0.r129/54516
type: file
pred: 15.0.r53/16286
count: 4
text: 129 41106 1144 4656 1f6a106fadcbe14065c231b6b85a854b
props: 4 182264 81 0 685faf6a4230ea531a31a12e4b3cb565
cpath: /trunk/owl/logging.c
copyroot: 0 /

PLAIN
K 9
ChangeLog
V 19
file h.0.r129/53589
K 11
Makefile.in
V 19
file i.0.r129/51432
K 4
NEWS
V 16
file j.0.r5/8251
K 5
aim.c
V 20
file 22.0.r129/53895
K 9
athstatic
V 20
file 1x.0.r129/52946
K 5
cmd.c
V 16
file k.0.r15/526
K 11
codelist.pl
V 17
file l.0.r123/336
K 10
commands.c
V 19
file m.0.r129/51646
K 11
config.h.in
V 18
file n.0.r127/9821
K 9
configure
V 19
file o.0.r129/51216
K 12
configure.in
V 19
file p.0.r129/53372
K 9
context.c
V 19
file q.0.r117/15986
K 6
dict.c
V 16
file r.0.r5/7631
K 3
doc
V 17
dir 1n.0.r92/6629
K 9
editwin.c
V 19
file s.0.r129/53159
K 8
examples
V 17
dir 1s.0.r94/1514
K 8
filter.c
V 19
file t.0.r129/54302
K 15
filterelement.c
V 16
file u.0.r5/4708
K 8
fmtext.c
V 18
file v.0.r101/1440
K 11
functions.c
V 19
file w.0.r129/52292
K 8
global.c
V 19
file x.0.r129/52729
K 6
help.c
V 16
file y.0.r70/753
K 9
history.c
V 17
file z.0.r28/5097
K 10
install.sh
V 19
file 21.0.r122/7916
K 12
keybinding.c
V 17
file 10.0.r5/7418
K 8
keymap.c
V 19
file 11.0.r125/2029
K 10
keypress.c
V 19
file 12.0.r125/1604
K 6
keys.c
V 20
file 13.0.r117/15126
K 6
list.c
V 20
file 14.0.r129/54090
K 9
logging.c
V 20
file 15.0.r129/54516
K 9
mainwin.c
V 19
file 16.0.r101/1018
K 9
message.c
V 20
file 17.0.r129/52511
K 13
messagelist.c
V 18
file 18.0.r5/10944
K 5
owl.c
V 20
file 19.0.r129/51864
K 5
owl.h
V 20
file 1a.0.r129/52079
K 6
pair.c
V 18
file 1z.0.r102/270
K 11
perlglue.xs
V 19
file 1v.0.r40/10317
K 8
popwin.c
V 17
file 1b.0.r5/6795
K 12
readconfig.c
V 19
file 1m.0.r121/4746
K 7
regex.c
V 18
file 1c.0.r5/10322
K 10
stubgen.pl
V 17
file 1d.0.r5/8659
K 8
tester.c
V 18
file 1e.0.r29/7983
K 6
text.c
V 17
file 1f.0.r5/8045
K 6
util.c
V 19
file 1g.0.r113/1059
K 10
variable.c
V 20
file 1h.0.r117/16198
K 6
view.c
V 19
file 1i.0.r62/11970
K 9
viewwin.c
V 19
file 1j.0.r62/12178
K 8
zcrypt.c
V 18
file 1y.0.r128/825
K 8
zephyr.c
V 20
file 1k.0.r115/10571
K 8
zwrite.c
V 20
file 1l.0.r115/11431
END
ENDREP
id: g.0.r129/56659
type: dir
pred: g.0.r128/2948
count: 118
text: 129 54733 1913 1913 ac39f36e621dc4eaa4a963bbaddf4006
cpath: /trunk/owl
copyroot: 0 /

PLAIN
K 7
CVSROOT
V 16
dir 4.0.r112/895
K 3
owl
V 18
dir g.0.r129/56659
END
ENDREP
id: 1.0.r129/56894
type: dir
pred: 1.0.r128/3181
count: 124
text: 129 56811 70 70 aa93aac10daee3dd5a21f3405ee92e7f
cpath: /trunk
copyroot: 0 /

PLAIN
K 8
branches
V 16
dir 2.0.r116/255
K 4
tags
V 15
dir 3.0.r75/315
K 5
trunk
V 18
dir 1.0.r129/56894
END
ENDREP
id: 0.0.r129/57154
type: dir
pred: 0.0.r128/3439
count: 129
text: 129 57038 103 103 349b23997b1eca8dba0aed5f84511ef0
cpath: /
copyroot: 0 /

14.0.t128-1 modify true false /trunk/owl/list.c

17.0.t128-1 modify true false /trunk/owl/message.c

t.0.t128-1 modify true false /trunk/owl/filter.c

15.0.t128-1 modify true false /trunk/owl/logging.c

x.0.t128-1 modify true false /trunk/owl/global.c

o.0.t128-1 modify true false /trunk/owl/configure

19.0.t128-1 modify true false /trunk/owl/owl.c

m.0.t128-1 modify true false /trunk/owl/commands.c

i.0.t128-1 modify true false /trunk/owl/Makefile.in

1x.0.t128-1 modify true false /trunk/owl/athstatic

s.0.t128-1 modify true false /trunk/owl/editwin.c

p.0.t128-1 modify true false /trunk/owl/configure.in

1a.0.t128-1 modify true false /trunk/owl/owl.h

_0.0.t128-1 add true true /trunk/owl/aim.c

h.0.t128-1 modify true false /trunk/owl/ChangeLog

20.0.r103/2012 delete false false /trunk/owl/oscar.c

w.0.t128-1 modify true false /trunk/owl/functions.c


57154 57295
