Changes in / [87d7e14:822e9bd]


Ignore:
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • commands.c

    r39a531d rf89cc6f  
    9696  OWLCMD_ARGS("unbindkey", owl_command_unbindkey, OWL_CTX_ANY,
    9797              "removes a binding in a keymap",
    98               "unbindkey <keymap> <keyseq>",
     98              "bindkey <keymap> <keyseq>",
    9999              "Removes a binding of a key sequence within a keymap.\n"
    100100              "Use 'show keymaps' to see the existing keymaps.\n"
     
    17781778
    17791779  if (argc < 3) {
    1780     owl_function_makemsg("Usage: unbindkey <keymap> <binding>");
     1780    owl_function_makemsg("Usage: bindkey <keymap> <binding>");
    17811781    return NULL;
    17821782  }
  • doc/barnowl.1

    r8135737 rbad4496  
    3535.TP
    3636\fB\-c\fP, \fB\-\-config\-file\fP=\fIFILE\fP
    37 Specify an alternate config file for \fBBarnOwl\fP to use.  The config file is
    38 an arbitrary Perl script evaluated in the \fImain\fP package, and if it
    39 overrides the \fIBarnOwl::startup\fP method that is run when \fBBarnOwl\fP
    40 starts.  (Compare \fI~/.owl/startup\fP, which contains \fBBarnOwl\fP commands
    41 that are run at startup after the config file is loaded.)
    42 
    43 By default, \fBBarnOwl\fP uses the first of \fI~/.owl/init.pl\fP,
    44 \fI~/.barnowlconf\fP, or \fI~/.owlconf\fP that exists.
     37Specify an alternate config file for \fBBarnOwl\fP to use.  By default,
     38\fBBarnOwl\fP uses \fI~/.barnowlconf\fP if it exists, and \fI~/.owlconf\fP otherwise.
    4539
    4640.TP
  • functions.c

    rbd482c3 r7803326  
    216216void owl_function_add_outgoing_zephyrs(const owl_zwrite *z)
    217217{
    218   if (z->cc && owl_zwrite_is_personal(z)) {
     218  if (z->cc || owl_zwrite_get_numrecips(z) == 0) {
    219219    /* create the message */
    220220    owl_message *m = g_new(owl_message, 1);
     
    225225    int i;
    226226    for (i = 0; i < owl_zwrite_get_numrecips(z); i++) {
    227       owl_message *m;
    228 
    229       if (!owl_zwrite_recip_is_personal(owl_zwrite_get_recip_n(z, i)))
    230         continue;
    231 
    232227      /* create the message */
    233       m = g_new(owl_message, 1);
     228      owl_message *m = g_new(owl_message, 1);
    234229      owl_message_create_from_zwrite(m, z, owl_zwrite_get_message(z), i);
    235230
     
    378373  owl_function_makemsg("Waiting for ack...");
    379374
    380   /* create the outgoing message */
    381   owl_function_add_outgoing_zephyrs(z);
     375  /* If it's personal */
     376  if (owl_zwrite_is_personal(z)) {
     377    /* create the outgoing message */
     378    owl_function_add_outgoing_zephyrs(z);
     379  }
    382380}
    383381#else
     
    429427  owl_function_makemsg("Waiting for ack...");
    430428
    431   /* Create the outgoing message. Restore the un-crypted message for display. */
    432   owl_zwrite_set_message_raw(z, old_msg);
    433   owl_function_add_outgoing_zephyrs(z);
    434 
    435   /* Clean up. */
     429  /* If it's personal */
     430  if (owl_zwrite_is_personal(z)) {
     431    /* Create the outgoing message. Restore the un-crypted message for display. */
     432    owl_zwrite_set_message_raw(z, old_msg);
     433    owl_function_add_outgoing_zephyrs(z);
     434  }
     435
     436  /* free the zwrite */
    436437  g_free(cryptmsg);
    437   g_free(old_msg);
    438438}
    439439
  • global.c

    r219f52c r9078f69  
    7575  g_free(cd);
    7676
    77   g->msglist = owl_messagelist_new();
     77  owl_messagelist_create(&(g->msglist));
    7878
    7979  _owl_global_init_windows(g);
     
    109109
    110110  /* Create the widgets */
    111   g->mw = owl_mainwin_new(g->mainpanel.recwin);
     111  owl_mainwin_init(&(g->mw), g->mainpanel.recwin);
    112112  owl_msgwin_init(&(g->msgwin), g->mainpanel.msgwin);
    113113  owl_sepbar_init(g->mainpanel.sepwin);
     
    241241/* windows */
    242242
    243 owl_mainwin *owl_global_get_mainwin(owl_global *g)
    244 {
    245   return g->mw;
     243owl_mainwin *owl_global_get_mainwin(owl_global *g) {
     244  return(&(g->mw));
    246245}
    247246
     
    257256
    258257owl_messagelist *owl_global_get_msglist(owl_global *g) {
    259   return g->msglist;
     258  return(&(g->msglist));
    260259}
    261260
  • mainwin.c

    rab88b05 r099597c  
    44static void owl_mainwin_resized(owl_window *w, void *user_data);
    55
    6 CALLER_OWN owl_mainwin *owl_mainwin_new(owl_window *window)
     6void owl_mainwin_init(owl_mainwin *mw, owl_window *window)
    77{
    8   owl_mainwin *mw = g_new(owl_mainwin, 1);
    98  mw->curtruncated=0;
    109  mw->lastdisplayed=-1;
     
    1716  /* For now, we do not bother with connecting up dependencies; that'll be a
    1817   * future refactor of the mainwin */
    19 
    20   return mw;
    2118}
    2219
  • message.c

    rbff1f22 r6646fdb  
    836836
    837837 
    838   /* set the "isprivate" attribute if it's a private zephyr. */
    839   if (owl_zwrite_recip_is_personal(n->z_recipient)) {
     838  /* set the "isprivate" attribute if it's a private zephyr.
     839   ``private'' means recipient is non-empty and doesn't start wit
     840   `@' */
     841  if (*n->z_recipient && *n->z_recipient != '@') {
    840842    owl_message_set_isprivate(m);
    841843  }
  • messagelist.c

    r219f52c rf271129  
    11#include "owl.h"
    22
    3 CALLER_OWN owl_messagelist *owl_messagelist_new(void)
     3void owl_messagelist_create(owl_messagelist *ml)
    44{
    5   owl_messagelist *ml = g_new(owl_messagelist, 1);
    65  ml->list = g_ptr_array_new();
    7   return ml;
    86}
    97
    10 void owl_messagelist_delete(owl_messagelist *ml, bool free_messages)
     8void owl_messagelist_cleanup(owl_messagelist *ml, bool free_messages)
    119{
    1210  if (free_messages)
    1311    g_ptr_array_foreach(ml->list, (GFunc)owl_message_delete, NULL);
    1412  g_ptr_array_free(ml->list, true);
    15   g_free(ml);
    1613}
    1714
  • owl.c

    r8135737 r3b17b57  
    4141  fprintf(stderr, "  -v,--version        print the Barnowl version number and exit\n");
    4242  fprintf(stderr, "  -h,--help           print this help message\n");
     43  fprintf(stderr, "  -c,--config-file    specify an alternate config file\n");
    4344  fprintf(stderr, "  -s,--config-dir     specify an alternate config dir (default ~/.owl)\n");
    44   fprintf(stderr, "  -c,--config-file    specify an alternate config file (default ~/.owl/init.pl)\n");
    4545  fprintf(stderr, "  -t,--tty            set the tty name\n");
    4646}
     
    585585  );
    586586
    587   owl_function_debugmsg("startup: setting context interactive");
    588 
    589   owl_global_pop_context(&g);
    590   owl_global_push_context(&g, OWL_CTX_INTERACTIVE|OWL_CTX_RECV, NULL, "recv", NULL);
    591 
    592587  /* process the startup file */
    593588  owl_function_debugmsg("startup: processing startup file");
     
    601596      owl_function_error("No such style: %s", owl_global_get_default_style(&g));
    602597
     598  owl_function_debugmsg("startup: setting context interactive");
     599
     600  owl_global_pop_context(&g);
     601  owl_global_push_context(&g, OWL_CTX_INTERACTIVE|OWL_CTX_RECV, NULL, "recv", NULL);
     602
    603603  source = owl_window_redraw_source_new();
    604604  g_source_attach(source, NULL);
  • owl.h

    r219f52c rb9517cf  
    452452  char *name;
    453453  owl_filter *filter;
    454   owl_messagelist *ml;
     454  owl_messagelist ml;
    455455  const owl_style *style;
    456456  int cachedmsgid;
     
    533533
    534534typedef struct _owl_global {
    535   owl_mainwin *mw;
     535  owl_mainwin mw;
    536536  owl_popwin *pw;
    537537  owl_msgwin msgwin;
     
    551551  int curmsg_vert_offset;
    552552  owl_view current_view;
    553   owl_messagelist *msglist;
     553  owl_messagelist msglist;
    554554  WINDOW *input_pad;
    555555  owl_mainpanel mainpanel;
  • perl/lib/BarnOwl.pm

    r8135737 r7803326  
    329329our @all_commands;
    330330
    331 if(!$configfile) {
    332     if (-f get_config_dir() . "/init.pl") {
    333         $configfile = get_config_dir() . "/init.pl";
    334     } elsif (-f $ENV{HOME} . "/.barnowlconf") {
    335         $configfile = $ENV{HOME} . "/.barnowlconf";
    336     } else {
    337         $configfile = $ENV{HOME}."/.owlconf";
    338     }
    339 }
     331if(!$configfile && -f $ENV{HOME} . "/.barnowlconf") {
     332    $configfile = $ENV{HOME} . "/.barnowlconf";
     333}
     334$configfile ||= $ENV{HOME}."/.owlconf";
    340335
    341336# populate global variable space for legacy owlconf files
  • perl/lib/BarnOwl/Message/Zephyr.pm

    rbf70350 redd0be7  
    171171        $class = $self->class;
    172172        $instance = $self->instance;
    173         if ($self->recipient eq '' || $self->recipient =~ /^@/) {
     173        if ($self->recipient eq '*' || $self->recipient eq '') {
     174            $to = '';
     175        } elsif ($self->recipient =~ /^@/) {
    174176            $to = $self->recipient;
    175177        } else {
  • perl/modules/Jabber/lib/BarnOwl/Module/Jabber.pm

    r678f607 rb8a3e00  
    14821482}
    14831483
    1484 sub complete_jabberlogout {
    1485     my $ctx = shift;
    1486     if($ctx->word == 1) {
    1487         return ("-A", complete_account() );
    1488     } else {
    1489         return ();
    1490     }
    1491 }
    1492 
    14931484BarnOwl::Completion::register_completer(jwrite => sub { BarnOwl::Module::Jabber::complete_jwrite(@_) });
    1494 BarnOwl::Completion::register_completer(jabberlogout => sub { BarnOwl::Module::Jabber::complete_jabberlogout(@_) });
    14951485
    149614861;
  • variable.c

    rd126a19 rf271129  
    116116               "both,in,out"),
    117117
    118   OWLVAR_BOOL_FULL( "colorztext" /* %OwlVarStub */, 1,
    119                     "allow @color() in zephyrs to change color",
    120                     NULL, NULL, owl_variable_colorztext_set, NULL),
     118  OWLVAR_BOOL( "colorztext" /* %OwlVarStub */, 1,
     119               "allow @color() in zephyrs to change color",
     120               "Note that only messages received after this variable\n"
     121               "is set will be affected." ),
    121122
    122123  OWLVAR_BOOL( "fancylines" /* %OwlVarStub */, 1,
     
    495496  }
    496497  return owl_variable_bool_set_default(v, newval);
    497 }
    498 
    499 int owl_variable_colorztext_set(owl_variable *v, const void *newval)
    500 {
    501   int ret = owl_variable_bool_set_default(v, newval);
    502   /* flush the format cache so that we see the update, but only if we're done initializing BarnOwl */
    503   if (owl_global_get_msglist(&g) != NULL)
    504     owl_messagelist_invalidate_formats(owl_global_get_msglist(&g));
    505   if (owl_global_get_mainwin(&g) != NULL) {
    506     owl_function_calculate_topmsg(OWL_DIRECTION_DOWNWARDS);
    507     owl_mainwin_redisplay(owl_global_get_mainwin(&g));
    508   }
    509   return ret;
    510498}
    511499
  • view.c

    r219f52c rf271129  
    66  v->filter=f;
    77  v->style=s;
    8   v->ml = owl_messagelist_new();
     8  owl_messagelist_create(&(v->ml));
    99  owl_view_recalculate(v);
    1010}
     
    1919{
    2020  if (owl_filter_message_match(v->filter, m)) {
    21     owl_messagelist_append_element(v->ml, m);
     21    owl_messagelist_append_element(&(v->ml), m);
    2222  }
    2323}
     
    3030  int i, j;
    3131  const owl_messagelist *gml;
     32  owl_messagelist *ml;
    3233  owl_message *m;
    3334
    3435  gml=owl_global_get_msglist(&g);
     36  ml=&(v->ml);
    3537
    3638  /* nuke the old list, don't free the messages */
    37   owl_messagelist_delete(v->ml, false);
    38   v->ml = owl_messagelist_new();
     39  owl_messagelist_cleanup(ml, false);
     40  owl_messagelist_create(&(v->ml));
    3941
    4042  /* find all the messages we want */
     
    4345    m=owl_messagelist_get_element(gml, i);
    4446    if (owl_filter_message_match(v->filter, m)) {
    45       owl_messagelist_append_element(v->ml, m);
     47      owl_messagelist_append_element(ml, m);
    4648    }
    4749  }
     
    7072owl_message *owl_view_get_element(const owl_view *v, int index)
    7173{
    72   return owl_messagelist_get_element(v->ml, index);
     74  return(owl_messagelist_get_element(&(v->ml), index));
    7375}
    7476
    7577void owl_view_delete_element(owl_view *v, int index)
    7678{
    77   owl_messagelist_delete_element(v->ml, index);
     79  owl_messagelist_delete_element(&(v->ml), index);
    7880}
    7981
    8082void owl_view_undelete_element(owl_view *v, int index)
    8183{
    82   owl_messagelist_undelete_element(v->ml, index);
     84  owl_messagelist_undelete_element(&(v->ml), index);
    8385}
    8486
    8587int owl_view_get_size(const owl_view *v)
    8688{
    87   return owl_messagelist_get_size(v->ml);
     89  return(owl_messagelist_get_size(&(v->ml)));
    8890}
    8991
     
    156158void owl_view_cleanup(owl_view *v)
    157159{
    158   owl_messagelist_delete(v->ml, false);
     160  owl_messagelist_cleanup(&v->ml, false);
    159161  g_free(v->name);
    160162}
  • zephyr.c

    rf183917 rd953ede  
    697697  Code_t ret;
    698698  ZNotice_t notice;
    699   char *zsender = NULL;
    700699   
    701700  memset(&notice, 0, sizeof(notice));
     
    709708  notice.z_class=zstr(class);
    710709  notice.z_class_inst=zstr(instance);
    711   if (!strcmp(recipient, "@")) {
     710  notice.z_sender=NULL;
     711  if (!strcmp(recipient, "*") || !strcmp(recipient, "@")) {
    712712    notice.z_recipient=zstr("");
     713    if (*owl_global_get_zsender(&g))
     714        notice.z_sender=zstr(owl_global_get_zsender(&g));
    713715  } else {
    714716    notice.z_recipient=zstr(recipient);
    715717  }
    716   if (!owl_zwrite_recip_is_personal(recipient) && *owl_global_get_zsender(&g))
    717     notice.z_sender = zsender = long_zuser(owl_global_get_zsender(&g));
    718718  notice.z_default_format=zstr("Class $class, Instance $instance:\nTo: @bold($recipient) at $time $date\nFrom: @bold{$1 <$sender>}\n\n$2");
    719719  if (opcode) notice.z_opcode=zstr(opcode);
     
    730730  g_free(notice.z_message);
    731731  ZFreeNotice(&notice);
    732   g_free(zsender);
    733732  if (ret != ZERR_NONE) {
    734733    owl_function_error("Error sending zephyr: %s", error_message(ret));
     
    790789  } else if (!strcmp(retnotice->z_message, ZSRVACK_NOTSENT)) {
    791790    if (retnotice->z_recipient == NULL
    792         || !owl_zwrite_recip_is_personal(retnotice->z_recipient)) {
     791        || *retnotice->z_recipient == 0
     792        || *retnotice->z_recipient == '@') {
    793793      char *buff;
    794794      owl_function_error("No one subscribed to class %s", retnotice->z_class);
  • zwrite.c

    r919cbf2 ref4074b  
    182182  }
    183183
     184  /* if there are no recipients we won't send a ping, which
     185     is what we want */
    184186  for (i = 0; i < z->recips->len; i++) {
    185187    to = owl_zwrite_get_recip_n_with_realm(z, i);
    186     if (owl_zwrite_recip_is_personal(to))
    187       send_ping(to, z->class, z->inst);
     188    send_ping(to, z->class, z->inst);
    188189    g_free(to);
    189190  }
     
    206207  g_free(z->message);
    207208
    208   if (z->cc && owl_zwrite_is_personal(z)) {
     209  if (z->recips->len > 0 && z->cc) {
    209210    message = g_string_new("CC: ");
    210211    for (i = 0; i < z->recips->len; i++) {
     
    337338}
    338339
    339 bool owl_zwrite_recip_is_personal(const char *recipient)
    340 {
    341   return recipient[0] && recipient[0] != '@';
    342 }
    343 
    344 bool owl_zwrite_is_personal(const owl_zwrite *z)
     340int owl_zwrite_is_personal(const owl_zwrite *z)
    345341{
    346342  /* return true if at least one of the recipients is personal */
    347343  int i;
    348 
    349   for (i = 0; i < z->recips->len; i++)
    350     if (owl_zwrite_recip_is_personal(z->recips->pdata[i]))
    351       return true;
    352   return false;
     344  char *recip;
     345
     346  for (i = 0; i < z->recips->len; i++) {
     347    recip = z->recips->pdata[i];
     348    if (recip[0] != '@') return 1;
     349  }
     350  return(0);
    353351}
    354352
Note: See TracChangeset for help on using the changeset viewer.