source: stylefunc.c @ b7b4565

barnowl_perlaimdebianrelease-1.4release-1.5release-1.6release-1.7release-1.8release-1.9
Last change on this file since b7b4565 was f2d72128, checked in by Nelson Elhage <nelhage@mit.edu>, 13 years ago
Move oneline style to perl. closes 43
  • Property mode set to 100644
File size: 6.9 KB
Line 
1#include "owl.h"
2
3static const char fileIdent[] = "$Id$";
4
5/* In all of these functions, 'fm' is expected to already be
6 * initialized.
7 */
8
9void owl_style_basic_format_body(owl_fmtext *fm, owl_message *m) {
10  char *indent, *body;
11  owl_filter *f;
12  int wrap = 0;
13
14  /* get the body */
15  body=owl_strdup(owl_message_get_body(m));
16
17  f = owl_global_get_filter(&g, "wordwrap");
18  if(f && owl_filter_message_match(f, m)) 
19    wrap = 1;
20
21  if(wrap) {
22    int cols, i, width, word;
23    char *tab, *tok, *ws = " \t\n\r";
24    cols = owl_global_get_cols(&g) - OWL_MSGTAB - 1;
25
26    tab = owl_malloc(OWL_MSGTAB+1);
27    for(i = 0; i < OWL_MSGTAB; i++) {
28      tab[i] = ' ';
29    }
30    tab[OWL_MSGTAB] = 0;
31
32    tok = strtok(body, ws);
33    tab[OWL_MSGTAB-1] = 0;
34    owl_fmtext_append_normal(fm, tab);
35    tab[OWL_MSGTAB-1] = ' ';
36    width = 0;
37
38    while(tok) {
39      word = strlen(tok);
40      if(word + width + 1 < cols) {
41        owl_fmtext_append_normal(fm, " ");
42        owl_fmtext_append_normal(fm, tok);
43        width += word + 1;
44      } else {
45        owl_fmtext_append_normal(fm, "\n");
46        owl_fmtext_append_normal(fm, tab);
47        owl_fmtext_append_normal(fm, tok);
48        width = word;
49      }
50      tok = strtok(NULL, ws);
51    }
52    owl_fmtext_append_normal(fm, "\n");
53
54    owl_free(tab);
55  } else {
56    /* do the indenting into indent */
57    indent=owl_malloc(strlen(body)+owl_text_num_lines(body)*OWL_MSGTAB+10);
58    owl_text_indent(indent, body, OWL_MSGTAB);
59    owl_fmtext_append_ztext(fm, indent);
60    if(body[strlen(body)-1] != '\n')
61      owl_fmtext_append_ztext(fm, "\n");
62    owl_free(indent);
63  }
64
65  owl_free(body);
66}
67 
68void owl_stylefunc_basic(owl_fmtext *fm, owl_message *m)
69{
70#ifdef HAVE_LIBZEPHYR
71  char *ptr, *zsigbuff, frombuff[LINE];
72  ZNotice_t *n;
73#endif
74
75  if (owl_message_is_type_zephyr(m) && owl_message_is_direction_in(m)) {
76#ifdef HAVE_LIBZEPHYR
77    n=owl_message_get_notice(m);
78 
79    /* edit the from addr for printing */
80    strcpy(frombuff, owl_message_get_sender(m));
81    ptr=strchr(frombuff, '@');
82    if (ptr && !strncmp(ptr+1, owl_zephyr_get_realm(), strlen(owl_zephyr_get_realm()))) {
83      *ptr='\0';
84    }
85   
86    /* set the message for printing */
87    owl_fmtext_append_normal(fm, OWL_TABSTR);
88   
89    if (owl_message_is_ping(m)) {
90      owl_fmtext_append_bold(fm, "PING");
91      owl_fmtext_append_normal(fm, " from ");
92      owl_fmtext_append_bold(fm, frombuff);
93      owl_fmtext_append_normal(fm, "\n");
94    } else if (owl_message_is_loginout(m)) {
95      char *host, *tty;
96
97      host=owl_message_get_attribute_value(m, "loginhost");
98      tty=owl_message_get_attribute_value(m, "logintty");
99     
100      if (owl_message_is_login(m)) {
101        owl_fmtext_append_bold(fm, "LOGIN");
102      } else if (owl_message_is_logout(m)) {
103        owl_fmtext_append_bold(fm, "LOGOUT");
104      }
105      if (owl_message_is_pseudo(m)) {
106        owl_fmtext_append_bold(fm, " (PSEUDO)");
107      }
108      owl_fmtext_append_normal(fm, " for ");
109      ptr=short_zuser(owl_message_get_instance(m));
110      owl_fmtext_append_bold(fm, ptr);
111      owl_free(ptr);
112      owl_fmtext_append_normal(fm, " at ");
113      owl_fmtext_append_normal(fm, host ? host : "");
114      owl_fmtext_append_normal(fm, " ");
115      owl_fmtext_append_normal(fm, tty ? tty : "");
116      owl_fmtext_append_normal(fm, "\n");
117    } else {
118      owl_fmtext_append_normal(fm, "From: ");
119      if (strcasecmp(owl_message_get_class(m), "message")) {
120        owl_fmtext_append_normal(fm, "Class ");
121        owl_fmtext_append_normal(fm, owl_message_get_class(m));
122        owl_fmtext_append_normal(fm, " / Instance ");
123        owl_fmtext_append_normal(fm, owl_message_get_instance(m));
124        owl_fmtext_append_normal(fm, " / ");
125      }
126      owl_fmtext_append_normal(fm, frombuff);
127      if (strcasecmp(owl_message_get_realm(m), owl_zephyr_get_realm())) {
128        owl_fmtext_append_normal(fm, " {");
129        owl_fmtext_append_normal(fm, owl_message_get_realm(m));
130        owl_fmtext_append_normal(fm, "} ");
131      }
132     
133      /* stick on the zsig */
134      zsigbuff=owl_malloc(strlen(owl_message_get_zsig(m))+30);
135      owl_message_pretty_zsig(m, zsigbuff);
136      owl_fmtext_append_normal(fm, "    (");
137      owl_fmtext_append_ztext(fm, zsigbuff);
138      owl_fmtext_append_normal(fm, ")");
139      owl_fmtext_append_normal(fm, "\n");
140      owl_free(zsigbuff);
141     
142      /* then the indented message */
143      owl_style_basic_format_body(fm, m);
144     
145      /* make personal messages bold for smaat users */
146      if (owl_global_is_userclue(&g, OWL_USERCLUE_CLASSES)) {
147        if (owl_message_is_personal(m)) {
148          owl_fmtext_addattr(fm, OWL_FMTEXT_ATTR_BOLD);
149        }
150      }
151    }
152   
153#endif
154  } else if (owl_message_is_type_zephyr(m) && owl_message_is_direction_out(m)) {
155    char *zsigbuff, *foo;
156    owl_fmtext_append_normal(fm, OWL_TABSTR);
157    owl_fmtext_append_normal(fm, "To: ");
158    foo=short_zuser(owl_message_get_recipient(m));
159    owl_fmtext_append_normal(fm, foo);
160    owl_free(foo);
161    owl_fmtext_append_normal(fm, "  (Zsig: ");
162   
163    zsigbuff=owl_malloc(strlen(owl_message_get_zsig(m))+30);
164    owl_message_pretty_zsig(m, zsigbuff);
165    owl_fmtext_append_ztext(fm, zsigbuff);
166    owl_free(zsigbuff);
167   
168    owl_fmtext_append_normal(fm, ")");
169    owl_fmtext_append_normal(fm, "\n");
170    owl_style_basic_format_body(fm, m);
171  } else if (owl_message_is_type_aim(m)) {
172    if (owl_message_is_loginout(m)) {
173      owl_fmtext_append_normal(fm, OWL_TABSTR);
174      if (owl_message_is_login(m)) {
175        owl_fmtext_append_bold(fm, "AIM LOGIN");
176      } else {
177        owl_fmtext_append_bold(fm, "AIM LOGOUT");
178      }
179      owl_fmtext_append_normal(fm, " for ");
180      owl_fmtext_append_normal(fm, owl_message_get_sender(m));
181      owl_fmtext_append_normal(fm, "\n");
182    } else if (owl_message_is_direction_in(m)) {
183      owl_fmtext_append_bold(fm, OWL_TABSTR);
184      owl_fmtext_append_bold(fm, "AIM from ");
185      owl_fmtext_append_bold(fm, owl_message_get_sender(m));
186      owl_fmtext_append_bold(fm, "\n");
187      owl_style_basic_format_body(fm, m);
188    } else if (owl_message_is_direction_out(m)) {
189      owl_fmtext_append_normal(fm, OWL_TABSTR);
190      owl_fmtext_append_normal(fm, "AIM sent to ");
191      owl_fmtext_append_normal(fm, owl_message_get_recipient(m));
192      owl_fmtext_append_normal(fm, "\n");
193      owl_style_basic_format_body(fm, m);
194    }
195  } else if (owl_message_is_type_admin(m)) {
196    char *text, *header;
197   
198    text=owl_message_get_body(m);
199    header=owl_message_get_attribute_value(m, "adminheader");
200
201    owl_fmtext_append_normal(fm, OWL_TABSTR);
202    owl_fmtext_append_bold(fm, "OWL ADMIN ");
203    owl_fmtext_append_ztext(fm, header);
204    owl_fmtext_append_normal(fm, "\n");
205    owl_style_basic_format_body(fm, m);
206  } else {
207    char *header;
208
209    header=owl_sprintf("%s from: %s to: %s",
210                       owl_message_get_type(m),
211                       owl_message_get_sender(m),
212                       owl_message_get_recipient(m));
213
214    owl_fmtext_append_normal(fm, OWL_TABSTR);
215    owl_fmtext_append_normal(fm, header);
216    owl_fmtext_append_normal(fm, "\n");
217    owl_style_basic_format_body(fm, m);
218   
219    owl_free(header);
220  }
221}
Note: See TracBrowser for help on using the repository browser.