Changeset b9766ea
- Timestamp:
- Dec 19, 2014, 1:49:13 AM (8 years ago)
- Parents:
- 5f3f1e4 (diff), 416a7e5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Files:
-
- 1 added
- 3 deleted
- 45 edited
Legend:
- Unmodified
- Added
- Removed
-
perl/modules/Jabber/lib/BarnOwl/Module/Jabber.pm
r41064be rb9766ea 171 171 our $showOffline = 0; 172 172 173 sub blist_getBuddyStatus { 174 my $jid = shift; 175 my $buddy = shift; 176 my $roster = $conn->getRosterFromJID($jid); 177 my %jq = $roster->query($buddy); 178 my $res = $roster->resource($buddy); 179 if ($res) { 180 my %rq = $roster->resourceQuery( $buddy, $res ); 181 return $rq{show} ? $rq{show} : 'online'; 182 } else { 183 return "unknown"; 184 } 185 } 186 173 187 sub blist_listBuddy { 174 188 my $roster = shift; … … 303 317 summary => "Show your Jabber roster.", 304 318 usage => "jlist" 319 } 320 ); 321 BarnOwl::new_command( 322 jabber_get_buddy_status => \&cmd_jabber_get_buddy_status, 323 { 324 summary => "Get the status of a given buddy.", 325 usage => "jabber_get_buddy_status [-a account] buddy" 305 326 } 306 327 ); … … 859 880 } 860 881 882 sub cmd_jabber_get_buddy_status { 883 my $cmd = shift; 884 local @ARGV = @_; 885 my $getopt = Getopt::Long::Parser->new; 886 my ($jid, $buddy); 887 888 $getopt->configure('no_getopt_compat'); 889 $getopt->getoptions( 890 'account=s' => \$jid, 891 ); 892 $jid ||= defaultJID(); 893 if ($jid) { 894 $jid = resolveConnectedJID($jid); 895 return unless $jid; 896 } 897 else { 898 die("You must specify an account with -a <jid>\n"); 899 } 900 $buddy = shift @ARGV; 901 if(!$buddy) { 902 die("You must specify a JID to get the status of.\n"); 903 } 904 my $buddy_jid = resolveDestJID($buddy, $jid); 905 return blist_getBuddyStatus($jid, $buddy_jid); 906 } 907 861 908 862 909 sub jroster_sub { … … 1491 1538 } 1492 1539 1540 sub complete_jabber_get_buddy_status { 1541 my $ctx = shift; 1542 return complete_flags($ctx, 1543 [qw()], 1544 { 1545 "-a" => \&complete_account, 1546 }, 1547 \&complete_user_or_muc 1548 ); 1549 } 1550 1493 1551 BarnOwl::Completion::register_completer(jwrite => sub { BarnOwl::Module::Jabber::complete_jwrite(@_) }); 1494 1552 BarnOwl::Completion::register_completer(jabberlogout => sub { BarnOwl::Module::Jabber::complete_jabberlogout(@_) }); 1553 BarnOwl::Completion::register_completer(jabber_get_buddy_status => sub { BarnOwl::Module::Jabber::complete_jabber_get_buddy_status(@_) }); 1495 1554 1496 1555 1; -
.gitignore
r1c22155 r7834bb5 1 # Generated by autoreconf 2 Makefile.in 3 /aclocal.m4 4 /autom4te.cache/ 5 /compile 6 /config.h.in 7 /config.h.in~ 8 /configure 9 /depcomp 10 /install-sh 11 /missing 12 /test-driver 13 14 # Generated by configure 15 Makefile 16 .deps/ 17 /config.cache 18 /config.h 19 /config.log 20 /config.status 21 /stamp-h1 22 23 # Generated by make 24 *.o 1 25 *.a 2 *.o 3 *.par 4 .deps 26 /BUILD_VERSION.mk 27 /barnowl 5 28 /bin/ 6 META.yml 7 MYMETA.yml 8 Makefile 9 Makefile.in 10 Makefile.old 29 /gmarshal_funcs.c 30 /gmarshal_funcs.h 31 /owl_prototypes.h 32 /owl_prototypes.h.new 33 /perlglue.c 34 /varstubs.c 35 /version.c 36 /version.c.new 37 /zcrypt 38 39 # Generated by make check 40 /runtests.sh.log 41 /runtests.sh.trs 42 /test-suite.log 43 /tester 44 45 # Generated by make tags et al. 46 ID 11 47 TAGS 12 aclocal.m4 13 autom4te.cache 14 barnowl 15 blib 16 config.cache 17 config.h 18 config.h.in 19 config.h.in~ 20 config.log 21 config.status 22 configure 23 core 24 depcomp 25 gmarshal_funcs.c 26 gmarshal_funcs.h 27 inc/ 28 install-sh 29 jabber.log 30 missing 31 owl_prototypes.h 32 owl_prototypes.h.new 33 perlglue.c 34 pm_to_blib 35 runtests.sh.log 36 runtests.sh.trs 37 stamp-h1 38 test-driver 39 test-suite.log 40 tester 41 varstubs.c 42 zcrypt 48 tags 49 /GPATH 50 /GRTAGS 51 /GSYMS 52 /GTAGS 53 /cscope.files 54 /cscope.in.out 55 /cscope.out 56 /cscope.po.out -
.travis.yml
r48c09d4 r5f3f1e4 1 1 2 language: perl 2 3 compiler: … … 9 10 - "5.16" 10 11 - "5.18" 11 - "5. 19"12 - "5.20" 12 13 install: 13 14 - sudo apt-get update -q -
ChangeLog
r1b17f50 r6f87658 1 1 1.9 2 * Update Jabber module for Net::DNS changes -james2vegas@aim.com 3 * Update and make configurable the Zephyr default format -adehnert@mit.edu 4 * Fix a crash when zcrypt fails -andersk@mit.edu 5 * Fix building with OpenSSL before 0.9.8 -andersk@mit.edu 6 * Make :loadsubs reload instanced personals too -davidben@mit.edu 7 * Make Perl zephyr_zwrite call die() when it fails -jgross@mit.edu 8 * Tell gpg calls from zcrypt to ignore ~/.gnupg -andersk@mit.edu 9 * Replace outgoing zephyr default format with a small URL -geofft@mit.edu 2 10 * Add getnumlines() to perl interface -asedeno@mit.edu 3 11 * Include names of invalid filters on filter errors -adehnert@mit.edu … … 321 329 * Support --program-{prefix,suffix,transform}. -nelhage 322 330 * Send instanced pings and give useful error messages -adehnert 323 * Add <message,*,%me%> to default Barn owl subs. -adehnert331 * Add <message,*,%me%> to default BarnOwl subs. -adehnert 324 332 * Maintain instance when using shift-R on personals -adehnert 325 333 * Improve handling of outgoing instanced personals -adehnert -
Makefile.am
ra223b6b rca1fb26a 1 1 ACLOCAL_AMFLAGS = -I m4 2 2 3 GIT_DESCRIPTION := $(if $(wildcard .git),$(shell git describe --match='barnowl-*' HEAD 2>/dev/null)) 4 GIT_FLAGS := $(if $(GIT_DESCRIPTION),-DGIT_VERSION=$(GIT_DESCRIPTION:barnowl-%=%)) 3 GIT_DESCRIPTION := $(if $(wildcard $(srcdir)/.git),$(shell cd $(srcdir) && git describe --match='barnowl-*' HEAD 2>/dev/null)) 4 VERSION = $(if $(GIT_DESCRIPTION),$(GIT_DESCRIPTION:barnowl-%=%),@VERSION@) 5 -include BUILD_VERSION.mk 6 7 FORCE: 8 BUILD_VERSION.mk: $(if $(filter-out $(BUILD_VERSION),$(VERSION)),FORCE) 9 echo 'BUILD_VERSION = $(VERSION)' > $@ 5 10 6 11 bin_PROGRAMS = bin/barnowl … … 9 14 endif 10 15 11 zcrypt_SOURCES = zcrypt.c filterproc.c 16 zcrypt_SOURCES = zcrypt.c filterproc.c version.c 12 17 13 18 check_PROGRAMS = bin/tester … … 47 52 -I$(top_srcdir)/libfaim/ \ 48 53 -DDATADIR='"$(pkgdatadir)"' \ 49 -DBINDIR='"$(bindir)"' \ 50 $(GIT_FLAGS) 54 -DBINDIR='"$(bindir)"' 51 55 52 56 CODELIST_SRCS=message.c mainwin.c popwin.c zephyr.c messagelist.c \ … … 64 68 BASE_SRCS = $(CODELIST_SRCS) $(NORMAL_SRCS) 65 69 66 GEN_C = varstubs.c perlglue.c gmarshal_funcs.c 70 GEN_C = varstubs.c perlglue.c gmarshal_funcs.c version.c version.c.new 67 71 GEN_H = owl_prototypes.h owl_prototypes.h.new gmarshal_funcs.h 68 72 69 BUILT_SOURCES = $(GEN_ C) $(GEN_H)73 BUILT_SOURCES = $(GEN_H) 70 74 71 75 # Only copy file into place if file.new is different 72 %: %.new76 owl_prototypes.h version.c: %: %.new 73 77 @diff -U0 $@ $< || { \ 74 78 test -f $@ && echo '$@ changed!'; \ … … 87 91 $(AM_V_GEN)perl $< $(sort $(filter-out $<,$+)) > $@ 88 92 93 version.c.new: Makefile BUILD_VERSION.mk 94 $(AM_V_GEN)echo 'const char *version = "$(VERSION)";' > $@ 95 89 96 gmarshal_funcs.h: marshal_types 90 97 glib-genmarshal --header $< > $@ … … 96 103 $(COMPILE) -Wall -Wextra -pedantic -fsyntax-only $(CHK_SOURCES) 97 104 98 CLEANFILES = $(BUILT_SOURCES) $( noinst_SCRIPTS) $(check_SCRIPTS)105 CLEANFILES = $(BUILT_SOURCES) $(GEN_C) $(noinst_SCRIPTS) $(check_SCRIPTS) BUILD_VERSION.mk 99 106 EXTRA_DIST = \ 100 107 autogen.sh \ -
aim.c
r8258ea5 r7dcef03 1049 1049 wrapmsg=owl_text_wordwrap(stripmsg, 70); 1050 1050 nz_screenname=owl_aim_normalize_screenname(userinfo->sn); 1051 m=g_ new(owl_message, 1);1051 m=g_slice_new(owl_message); 1052 1052 owl_message_create_aim(m, 1053 1053 nz_screenname, -
buddy.c
rd4927a7 r7dcef03 72 72 { 73 73 owl_buddy_cleanup(b); 74 g_ free(b);74 g_slice_free(owl_buddy, b); 75 75 } -
buddylist.c
r3cdd6d2 r7dcef03 11 11 { 12 12 owl_buddy *b; 13 b=g_ new(owl_buddy, 1);13 b=g_slice_new(owl_buddy); 14 14 15 15 owl_buddy_create(b, OWL_PROTOCOL_AIM, screenname); … … 50 50 51 51 /* if not, create the login message */ 52 m=g_ new(owl_message, 1);52 m=g_slice_new(owl_message); 53 53 owl_message_create_aim(m, 54 54 screenname, … … 69 69 70 70 if (owl_buddylist_is_aim_buddy_loggedin(bl, screenname)) { 71 m=g_ new(owl_message, 1);71 m=g_slice_new(owl_message); 72 72 owl_message_create_aim(m, 73 73 screenname, -
cmd.c
rf271129 r7dcef03 35 35 void owl_cmddict_add_alias(owl_cmddict *cd, const char *alias_from, const char *alias_to) { 36 36 owl_cmd *cmd; 37 cmd = g_ new(owl_cmd, 1);37 cmd = g_slice_new(owl_cmd); 38 38 owl_cmd_create_alias(cmd, alias_from, alias_to); 39 39 owl_perlconfig_new_command(cmd->name); … … 42 42 43 43 int owl_cmddict_add_cmd(owl_cmddict *cd, const owl_cmd * cmd) { 44 owl_cmd * newcmd = g_ new(owl_cmd, 1);44 owl_cmd * newcmd = g_slice_new(owl_cmd); 45 45 if(owl_cmd_create_from_template(newcmd, cmd) < 0) { 46 g_ free(newcmd);46 g_slice_free(owl_cmd, newcmd); 47 47 return -1; 48 48 } … … 141 141 { 142 142 owl_cmd_cleanup(cmd); 143 g_ free(cmd);143 g_slice_free(owl_cmd, cmd); 144 144 } 145 145 -
commands.c
ra38becd rca1fb26a 1114 1114 void owl_command_version(void) 1115 1115 { 1116 owl_function_makemsg("BarnOwl version %s", OWL_VERSION_STRING);1116 owl_function_makemsg("BarnOwl version %s", version); 1117 1117 } 1118 1118 -
context.c
rf271129 r7dcef03 10 10 if (!(mode & OWL_CTX_MODE_BITS)) 11 11 mode |= OWL_CTX_INTERACTIVE; 12 c = g_ new0(owl_context, 1);12 c = g_slice_new0(owl_context); 13 13 c->mode = mode; 14 14 c->data = data; … … 71 71 if (ctx->delete_cb) 72 72 ctx->delete_cb(ctx); 73 g_ free(ctx);73 g_slice_free(owl_context, ctx); 74 74 } -
editwin.c
r8258ea5 r7dcef03 68 68 static CALLER_OWN owl_editwin *owl_editwin_allocate(void) 69 69 { 70 owl_editwin *e = g_ new0(owl_editwin, 1);70 owl_editwin *e = g_slice_new0(owl_editwin); 71 71 e->refcount = 1; 72 72 return e; … … 87 87 oe_destroy_cbdata(e); 88 88 89 g_ free(e);89 g_slice_free(owl_editwin, e); 90 90 } 91 91 … … 373 373 owl_editwin_excursion *owl_editwin_begin_excursion(owl_editwin *e) 374 374 { 375 owl_editwin_excursion *x = g_ new(owl_editwin_excursion, 1);375 owl_editwin_excursion *x = g_slice_new(owl_editwin_excursion); 376 376 oe_save_excursion(e, x); 377 377 return x; … … 381 381 { 382 382 oe_restore_excursion(e, x); 383 g_ free(x);383 g_slice_free(owl_editwin_excursion, x); 384 384 } 385 385 -
filter.c
rc068c03 r7dcef03 18 18 owl_filter *f; 19 19 20 f = g_ new(owl_filter, 1);20 f = g_slice_new(owl_filter); 21 21 22 22 f->name=g_strdup(name); … … 69 69 if(!argc) return NULL; 70 70 71 fe = g_ new(owl_filterelement, 1);71 fe = g_slice_new(owl_filterelement); 72 72 owl_filterelement_create(fe); 73 73 … … 114 114 err: 115 115 owl_filterelement_cleanup(fe); 116 g_ free(fe);116 g_slice_free(owl_filterelement, fe); 117 117 return NULL; 118 118 } … … 132 132 op2 = owl_filter_parse_primitive_expression(argc-i-1, argv+i+1, &skip); 133 133 if(!op2) goto err; 134 tmp = g_ new(owl_filterelement, 1);134 tmp = g_slice_new(owl_filterelement); 135 135 if(!strcasecmp(argv[i], "and")) { 136 136 owl_filterelement_create_and(tmp, op1, op2); … … 152 152 if(op1) { 153 153 owl_filterelement_cleanup(op1); 154 g_ free(op1);154 g_slice_free(owl_filterelement, op1); 155 155 } 156 156 return NULL; … … 262 262 if (f->root) { 263 263 owl_filterelement_cleanup(f->root); 264 g_ free(f->root);264 g_slice_free(owl_filterelement, f->root); 265 265 } 266 266 if (f->name) 267 267 g_free(f->name); 268 g_ free(f);269 } 268 g_slice_free(owl_filter, f); 269 } -
filterelement.c
r7756dde r7dcef03 328 328 if (fe->left) { 329 329 owl_filterelement_cleanup(fe->left); 330 g_ free(fe->left);330 g_slice_free(owl_filterelement, fe->left); 331 331 } 332 332 if (fe->right) { 333 333 owl_filterelement_cleanup(fe->right); 334 g_ free(fe->right);334 g_slice_free(owl_filterelement, fe->right); 335 335 } 336 336 owl_regex_cleanup(&(fe->re)); -
functions.c
ra38becd rb61ad80 115 115 void owl_function_show_license(void) 116 116 { 117 const char *text; 118 119 text="" 120 "BarnOwl version " OWL_VERSION_STRING "\n" 117 char *text = g_strdup_printf( 118 "BarnOwl version %s\n" 121 119 "Copyright (c) 2006-2011 The BarnOwl Developers. All rights reserved.\n" 122 120 "Copyright (c) 2004 James Kretchmar. All rights reserved.\n" … … 155 153 "WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\n" 156 154 "OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN\n" 157 "IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"; 155 "IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n", 156 version); 158 157 owl_function_popless_text(text); 158 g_free(text); 159 159 } 160 160 … … 196 196 owl_message *m; 197 197 198 m=g_ new(owl_message, 1);198 m=g_slice_new(owl_message); 199 199 owl_message_create_admin(m, header, body); 200 200 … … 218 218 if (z->cc && owl_zwrite_is_personal(z)) { 219 219 /* create the message */ 220 owl_message *m = g_ new(owl_message, 1);220 owl_message *m = g_slice_new(owl_message); 221 221 owl_message_create_from_zwrite(m, z, owl_zwrite_get_message(z), 0); 222 222 … … 231 231 232 232 /* create the message */ 233 m = g_ new(owl_message, 1);233 m = g_slice_new(owl_message); 234 234 owl_message_create_from_zwrite(m, z, owl_zwrite_get_message(z), i); 235 235 … … 251 251 if (!owl_global_is_aimloggedin(&g)) return(NULL); 252 252 253 m=g_ new(owl_message, 1);253 m=g_slice_new(owl_message); 254 254 owl_message_create_aim(m, 255 255 owl_global_get_aim_screenname(&g), … … 270 270 271 271 /* create the message */ 272 m=g_ new(owl_message, 1);272 m=g_slice_new(owl_message); 273 273 owl_message_create_loopback(m, body); 274 274 owl_message_set_direction_out(m); … … 516 516 /* create a message and put it on the message queue. This simulates 517 517 * an incoming message */ 518 min=g_ new(owl_message, 1);518 min=g_slice_new(owl_message); 519 519 mout=owl_function_make_outgoing_loopback(msg); 520 520 … … 1227 1227 time_t now; 1228 1228 va_list ap; 1229 va_start(ap, fmt);1230 1229 1231 1230 if (!owl_global_is_debug_fast(&g)) … … 1242 1241 (int) getpid(), tmpbuff, now - owl_global_get_starttime(&g)); 1243 1242 g_free(tmpbuff); 1243 1244 va_start(ap, fmt); 1244 1245 vfprintf(file, fmt, ap); 1246 va_end(ap); 1247 1245 1248 putc('\n', file); 1246 1249 fflush(file); 1247 1248 va_end(ap);1249 1250 } 1250 1251 … … 1359 1360 void owl_function_about(void) 1360 1361 { 1361 owl_function_popless_text(1362 "This is BarnOwl version " OWL_VERSION_STRING ".\n\n"1362 char *text = g_strdup_printf( 1363 "This is BarnOwl version %s.\n\n" 1363 1364 "BarnOwl is a fork of the Owl zephyr client, written and\n" 1364 1365 "maintained by Alejandro Sedeno and Nelson Elhage at the\n" … … 1379 1380 "This program is free software. You can redistribute it and/or\n" 1380 1381 "modify under the terms of the Sleepycat License. Use the \n" 1381 "':show license' command to display the full license\n" 1382 ); 1382 "':show license' command to display the full license\n", 1383 version); 1384 owl_function_popless_text(text); 1385 g_free(text); 1383 1386 } 1384 1387 … … 1470 1473 owl_fmtext_append_normal(&fm, "\n"); 1471 1474 owl_fmtext_appendf_normal(&fm, " Port : %i\n", ntohs(n->z_port)); 1475 owl_fmtext_appendf_normal(&fm, " Charset : %s\n", owl_zephyr_get_charsetstr(n)); 1472 1476 owl_fmtext_appendf_normal(&fm, " Auth : %s\n", owl_zephyr_get_authstr(n)); 1473 1477 … … 1781 1785 1782 1786 owl_fmtext_append_normal(&fm, " Version: "); 1783 owl_fmtext_append_normal(&fm, OWL_VERSION_STRING);1787 owl_fmtext_append_normal(&fm, version); 1784 1788 owl_fmtext_append_normal(&fm, "\n"); 1785 1789 … … 3479 3483 while (zaldptr) { 3480 3484 ZFreeALD(zaldptr->data); 3481 g_ free(zaldptr->data);3485 g_slice_free(ZAsyncLocateData_t, zaldptr->data); 3482 3486 zaldptr = g_list_next(zaldptr); 3483 3487 } … … 3489 3493 for (i = 0; i < anyone->len; i++) { 3490 3494 user = anyone->pdata[i]; 3491 zald = g_ new(ZAsyncLocateData_t, 1);3495 zald = g_slice_new(ZAsyncLocateData_t); 3492 3496 if (ZRequestLocations(zstr(user), zald, UNACKED, ZAUTH) == ZERR_NONE) { 3493 3497 *zaldlist = g_list_append(*zaldlist, zald); 3494 3498 } else { 3495 g_ free(zald);3499 g_slice_free(ZAsyncLocateData_t, zald); 3496 3500 } 3497 3501 } -
global.c
r120dac7 r7dcef03 553 553 e->g->filterlist = g_list_remove(e->g->filterlist, e->f); 554 554 owl_filter_delete(e->f); 555 g_ free(e);555 g_slice_free(owl_global_filter_ent, e); 556 556 } 557 557 558 558 void owl_global_add_filter(owl_global *g, owl_filter *f) { 559 owl_global_filter_ent *e = g_ new(owl_global_filter_ent, 1);559 owl_global_filter_ent *e = g_slice_new(owl_global_filter_ent); 560 560 e->g = g; 561 561 e->f = f; -
keybinding.c
rf271129 r7dcef03 14 14 CALLER_OWN owl_keybinding *owl_keybinding_new(const char *keyseq, const char *command, void (*function_fn)(void), const char *desc) 15 15 { 16 owl_keybinding *kb = g_ new(owl_keybinding, 1);16 owl_keybinding *kb = g_slice_new(owl_keybinding); 17 17 18 18 owl_function_debugmsg("owl_keybinding_init: creating binding for <%s> with desc: <%s>", keyseq, desc); 19 19 if (command && function_fn) { 20 g_ free(kb);20 g_slice_free(owl_keybinding, kb); 21 21 return NULL; 22 22 } else if (command && !function_fn) { … … 29 29 30 30 if (owl_keybinding_make_keys(kb, keyseq) != 0) { 31 g_ free(kb);31 g_slice_free(owl_keybinding, kb); 32 32 return NULL; 33 33 } … … 70 70 g_free(kb->desc); 71 71 g_free(kb->command); 72 g_ free(kb);72 g_slice_free(owl_keybinding, kb); 73 73 } 74 74 -
keymap.c
rf271129 r7dcef03 189 189 { 190 190 owl_keymap *km; 191 km = g_ new(owl_keymap, 1);191 km = g_slice_new(owl_keymap); 192 192 owl_keymap_init(km, name, desc, default_fn, prealways_fn, postalways_fn); 193 193 owl_keyhandler_add_keymap(kh, km); -
logging.c
r0792d99 r7dcef03 177 177 g_free(msg->message); 178 178 g_free(msg->filename); 179 g_ free(msg);179 g_slice_free(owl_log_entry, msg); 180 180 } 181 181 } … … 184 184 { 185 185 owl_log_entry *log_msg = NULL; 186 log_msg = g_ new(owl_log_entry,1);186 log_msg = g_slice_new(owl_log_entry); 187 187 log_msg->message = g_strdup(buffer); 188 188 log_msg->filename = g_strdup(filename); … … 266 266 * owl_log_shouldlog_message(void) 267 267 */ 268 m = g_ new(owl_message, 1);268 m = g_slice_new(owl_message); 269 269 /* recip_index = 0 because there can only be one recipient anyway */ 270 270 owl_message_create_from_zwrite(m, zw, text, 0); -
mainwin.c
rab88b05 r7dcef03 6 6 CALLER_OWN owl_mainwin *owl_mainwin_new(owl_window *window) 7 7 { 8 owl_mainwin *mw = g_ new(owl_mainwin, 1);8 owl_mainwin *mw = g_slice_new(owl_mainwin); 9 9 mw->curtruncated=0; 10 10 mw->lastdisplayed=-1; -
message.c
r2354e9a r7dcef03 70 70 71 71 if(pair == NULL) { 72 pair = g_ new(owl_pair, 1);72 pair = g_slice_new(owl_pair); 73 73 owl_pair_create(pair, attrname, NULL); 74 74 g_ptr_array_add(m->attributes, pair); … … 1019 1019 p = m->attributes->pdata[i]; 1020 1020 g_free(owl_pair_get_value(p)); 1021 g_ free(p);1021 g_slice_free(owl_pair, p); 1022 1022 } 1023 1023 … … 1030 1030 { 1031 1031 owl_message_cleanup(m); 1032 g_ free(m);1033 } 1032 g_slice_free(owl_message, m); 1033 } -
messagelist.c
r219f52c r7dcef03 3 3 CALLER_OWN owl_messagelist *owl_messagelist_new(void) 4 4 { 5 owl_messagelist *ml = g_ new(owl_messagelist, 1);5 owl_messagelist *ml = g_slice_new(owl_messagelist); 6 6 ml->list = g_ptr_array_new(); 7 7 return ml; … … 13 13 g_ptr_array_foreach(ml->list, (GFunc)owl_message_delete, NULL); 14 14 g_ptr_array_free(ml->list, true); 15 g_ free(ml);15 g_slice_free(owl_messagelist, ml); 16 16 } 17 17 -
owl.c
r120dac7 r441fd42 36 36 void usage(FILE *file) 37 37 { 38 fprintf(file, "Barn owl version %s\n", OWL_VERSION_STRING);38 fprintf(file, "BarnOwl version %s\n", version); 39 39 fprintf(file, "Usage: barnowl [-n] [-d] [-D] [-v] [-h] [-c <configfile>] [-s <confdir>] [-t <ttyname>]\n"); 40 40 fprintf(file, " -n,--no-subs don't load zephyr subscriptions\n"); 41 41 fprintf(file, " -d,--debug enable debugging\n"); 42 fprintf(file, " -v,--version print the Barn owl version number and exit\n");42 fprintf(file, " -v,--version print the BarnOwl version number and exit\n"); 43 43 fprintf(file, " -h,--help print this help message\n"); 44 44 fprintf(file, " -s,--config-dir specify an alternate config dir (default ~/.owl)\n"); … … 80 80 break; 81 81 case 'v': 82 printf("This is BarnOwl version %s\n", OWL_VERSION_STRING);82 printf("This is BarnOwl version %s\n", version); 83 83 exit(0); 84 84 case 'h': … … 578 578 /* welcome message */ 579 579 owl_function_debugmsg("startup: creating splash message"); 580 owl_function_adminmsg("",580 char *welcome = g_strdup_printf( 581 581 "-----------------------------------------------------------------------\n" 582 "Welcome to BarnOwl version " OWL_VERSION_STRING ".\n"582 "Welcome to BarnOwl version %s.\n" 583 583 "To see a quick introduction, type ':show quickstart'. \n" 584 584 "Press 'h' for on-line help. \n" … … 588 588 " OvO \n" 589 589 "Please report any bugs or suggestions to bug-barnowl@mit.edu ( ) \n" 590 "-----------------------------------------------------------------m-m---\n" 591 ); 590 "-----------------------------------------------------------------m-m---\n", 591 version); 592 owl_function_adminmsg("", welcome); 593 g_free(welcome); 592 594 593 595 owl_function_debugmsg("startup: setting context interactive"); -
owl.h
r120dac7 rca1fb26a 64 64 #include "window.h" 65 65 66 #ifndef OWL_VERSION_STRING 67 #ifdef GIT_VERSION 68 #define stringify(x) __stringify(x) 69 #define __stringify(x) #x 70 #define OWL_VERSION_STRING stringify(GIT_VERSION) 71 #else 72 #define OWL_VERSION_STRING PACKAGE_VERSION 73 #endif 74 #endif /* !OWL_VERSION_STRING */ 66 extern const char *version; 75 67 76 68 /* Feature that is being tested to redirect stderr through a pipe. -
perl/lib/BarnOwl/Style/Default.pm
r732d5c0 rebc6f77 129 129 my $self = shift; 130 130 my $m = shift; 131 my $sender = $m->long_sender; 132 $sender =~ s/\n.*$//s; 131 my $sender = $self->humanize($m->long_sender, 1); 133 132 if (BarnOwl::getvar('colorztext') eq 'on') { 134 133 return " (" . $sender . '@color[default]' . ")"; -
perl/modules/Facebook/README
rf4037cf r441fd42 14 14 15 15 This token will persist across BarnOwls until you change your 16 Facebook password or you revoke permissions for Barn owl at:16 Facebook password or you revoke permissions for BarnOwl at: 17 17 http://www.facebook.com/settings/?tab=applications&app_id=235537266461636 18 18 19 (3) Start receiving wall updates in Barn owl!19 (3) Start receiving wall updates in BarnOwl! 20 20 You can post updates with the ":facebook" command. 21 21 -
perl/modules/IRC/lib/BarnOwl/Module/IRC.pm
r4f7b1f4 r926c721 21 21 22 22 use AnyEvent::IRC; 23 use Encode; 24 use File::Spec; 23 25 use Getopt::Long; 24 use Encode;25 26 use Text::Wrap; 26 27 27 28 our $VERSION = 0.02; 29 30 our $IRC_SUBS_FILENAME = "ircchannels"; 28 31 29 32 our $irc; … … 169 172 summary => 'Connect to an IRC server', 170 173 usage => 171 'irc-connect [-a ALIAS 174 'irc-connect [-a ALIAS] [-s] [-p PASSWORD] [-n NICK] SERVER [port]', 172 175 description => <<END_DESCR 173 176 Connect to an IRC server. Supported options are: … … 230 233 { 231 234 summary => 'Join an IRC channel', 232 usage => 'irc-join [-a ALIAS] #channel [KEY]', 233 234 description => <<END_DESCR 235 Join an IRC channel. 235 usage => 'irc-join [-a ALIAS] [-t] #channel [KEY]', 236 237 description => <<END_DESCR 238 Join an IRC channel. If the -t option is present the subscription will only be 239 temporary, i.e., it will not be written to the subscription file and will 240 therefore not be present the next time BarnOwl is started, and will disappear 241 if the connection is lost. 236 242 END_DESCR 237 243 } … … 242 248 { 243 249 summary => 'Leave an IRC channel', 244 usage => 'irc-part [-a ALIAS] #channel', 245 246 description => <<END_DESCR 247 Part from an IRC channel. 250 usage => 'irc-part [-a ALIAS] [-t] #channel', 251 252 description => <<END_DESCR 253 Part from an IRC channel. If the -t option is present the unsubscription will 254 only be temporary, i.e., it will not be updated in the subscription file and 255 will therefore not be in effect the next time BarnOwl is started, or if the 256 connection is lost. 248 257 END_DESCR 249 258 } … … 342 351 This can be used to perform some operation not yet supported by 343 352 BarnOwl, or to define new IRC commands. 353 END_DESCR 354 } 355 ); 356 357 BarnOwl::new_command( 358 'irc-loadchannels' => \&cmd_loadchannels, 359 { 360 summary => 'Reload persistent channels', 361 usage => 'irc-loadchannels [-a ALIAS] [<file>]', 362 363 description => <<END_DESCR 364 Load persistent channels from a file. The file defaults to 365 \$HOME/.owl/$IRC_SUBS_FILENAME. If the ALIAS is present, only channels 366 on the given alias are loaded. The ALIAS is case-sensitive. 367 368 Each line of the file should describe a single channel, in the format 369 '\$alias \$channel' (without quotes). 344 370 END_DESCR 345 371 } … … 356 382 ######################## Owl command handlers ################################## 357 383 ################################################################################ 384 385 sub make_autoconnect_filename { 386 # can't use ||, or else we'll treat '0' as invalid. We could check for eq "" ... 387 # TODO(jgross): When we move to requiring perl 5.10, combine the 388 # following two lines using // 389 my $filename = shift; 390 $filename = File::Spec->catfile(BarnOwl::get_config_dir(), $IRC_SUBS_FILENAME) unless defined $filename; 391 if (!File::Spec->file_name_is_absolute($filename)) { 392 $filename = File::Spec->catfile($ENV{HOME}, $filename); 393 } 394 return $filename; 395 } 396 397 sub _get_autoconnect_lines { 398 my $filename = shift; 399 400 # TODO(jgross): Write a C-side function to do this, asynchronously; 401 # AIUI, perl doesn't do asynchronous I/O in any useful way 402 if (open (my $subsfile, "<:encoding(UTF-8)", $filename)) { 403 my @lines = <$subsfile>; 404 close($subsfile); 405 406 # strip trailing newlines 407 local $/ = ""; 408 chomp(@lines); 409 410 return @lines; 411 } 412 413 return (); 414 } 415 416 sub get_autoconnect_channels { 417 my $filename = make_autoconnect_filename(shift); 418 my %channel_hash = (); 419 420 # Load the subs from the file 421 my @lines = _get_autoconnect_lines($filename); 422 423 foreach my $line (@lines) { 424 my @parsed_args = split(' ', $line); 425 if (scalar @parsed_args == 2) { 426 push @{$channel_hash{$parsed_args[0]}}, $parsed_args[1]; 427 } else { 428 warn "Trouble parsing irc configuration file '$filename' line '$line'; the format is '\$alias \$channel', with no spaces in either\n"; 429 } 430 } 431 432 return %channel_hash; 433 } 434 435 sub add_autoconnect_channel { 436 my $conn = shift; 437 my $channel = shift; 438 my $alias = $conn->alias; 439 my $filename = make_autoconnect_filename(shift); 440 441 # we already checked for spaces in $channel in cmd_join, but we still need 442 # to check $alias 443 die "Alias name '$alias' contains a space; parsing will fail. Use the -t flag.\n" unless index($alias, " ") == -1; 444 445 my $line = "$alias $channel"; 446 447 my @lines = _get_autoconnect_lines($filename); 448 449 # We don't want to be noisy about duplicated joins. For example, some 450 # people might have :irc-join in startup files, even though that doesn't 451 # work correctly anymore because connect is asynchronous and so join on 452 # startup races with connect. Regardless, just fail silently if the line 453 # already exists. 454 return if grep { $_ eq $line } @lines; 455 456 open (my $subsfile, ">>:encoding(UTF-8)", make_autoconnect_filename($filename)) 457 or die "Cannot open $filename for writing: $!\n"; 458 local $, = ""; 459 local $/ = ""; 460 print $subsfile "$line\n"; 461 close($subsfile); 462 } 463 464 sub remove_autoconnect_channel { 465 my $conn = shift; 466 my $channel = shift; 467 my $alias = $conn->alias; 468 my $filename = make_autoconnect_filename(shift); 469 470 BarnOwl::Internal::file_deleteline($filename, "$alias $channel", 1); 471 } 472 473 sub cmd_loadchannels { 474 my $cmd = shift; 475 my $alias; 476 my $getopt = Getopt::Long::Parser->new; 477 478 local @ARGV = @_; 479 $getopt->configure(qw(pass_through permute no_getopt_compat prefix_pattern=-|--)); 480 $getopt->getoptions("alias=s" => \$alias); 481 482 my %channel_hash = get_autoconnect_channels(@ARGV); 483 484 my $aliases = (defined $alias) ? [$alias] : [keys %channel_hash]; 485 486 foreach my $cur_alias (@$aliases) { 487 # get_connection_by_alias might die, and we don't want to 488 eval { 489 my $conn = get_connection_by_alias($cur_alias, 1); 490 my %existing_channels = map { $_ => 1 } @{$conn->autoconnect_channels}, @{$channel_hash{$cur_alias}}; 491 $conn->autoconnect_channels([keys %existing_channels]); 492 }; 493 foreach my $channel (@{$channel_hash{$cur_alias}}) { 494 if ($cur_alias eq "") { 495 BarnOwl::command("irc-join", "-t", $channel); 496 } else { 497 BarnOwl::command("irc-join", "-t", "-a", $cur_alias, $channel); 498 } 499 } 500 } 501 } 358 502 359 503 sub cmd_connect { … … 393 537 } 394 538 539 my %channel_hash = get_autoconnect_channels; 540 395 541 my $conn = BarnOwl::Module::IRC::Connection->new($alias, $host, $port, { 396 nick => $nick, 397 user => $username, 398 real => $ircname, 399 password => $password, 400 SSL => $ssl, 401 timeout => sub {0} 542 nick => $nick, 543 user => $username, 544 real => $ircname, 545 password => $password, 546 SSL => $ssl, 547 timeout => sub {0}, 548 autoconnect_channels => $channel_hash{$alias} 402 549 }); 403 550 $ircnets{$alias} = $conn; … … 486 633 sub cmd_join { 487 634 my $cmd = shift; 488 my $conn = shift; 489 my $chan = shift or die("Usage: $cmd channel\n"); 490 $conn->conn->send_msg(join => $chan, @_); 635 my $is_temporary; 636 637 my $getopt = Getopt::Long::Parser->new; 638 639 local @ARGV = @_; 640 $getopt->configure(qw(pass_through permute no_getopt_compat prefix_pattern=-|--)); 641 $getopt->getoptions("temporary" => \$is_temporary); 642 643 my $conn = shift @ARGV; 644 my $chan = shift @ARGV or die("Usage: $cmd channel\n"); 645 646 die "Channel name '$chan' contains a space. As per RFC 2812, IRC channel names may not contain spaces.\n" unless index($chan, " ") == -1; 647 648 $conn->conn->send_msg(join => $chan, @ARGV); 649 650 # regardless of whether or not this is temporary, we want to persist it 651 # across reconnects. 652 653 # check if the channel is already in the list 654 if (!grep { $_ eq $chan } @{$conn->autoconnect_channels}) { 655 push @{$conn->autoconnect_channels}, $chan; 656 } 657 658 if (!$is_temporary) { 659 # add the line to the subs file 660 add_autoconnect_channel($conn, $chan); 661 } 662 491 663 return; 492 664 } … … 494 666 sub cmd_part { 495 667 my $cmd = shift; 496 my $conn = shift; 497 my $chan = shift; 668 my $is_temporary; 669 670 my $getopt = Getopt::Long::Parser->new; 671 672 local @ARGV = @_; 673 $getopt->configure(qw(pass_through permute no_getopt_compat prefix_pattern=-|--)); 674 $getopt->getoptions("temporary" => \$is_temporary); 675 676 my $conn = shift @ARGV; 677 my $chan = shift @ARGV or die("Usage: $cmd channel\n"); 678 498 679 $conn->conn->send_msg(part => $chan); 680 681 # regardless of whether or not this is temporary, we want to persist it 682 # across reconnects 683 my %existing_channels = map { $_ => 1 } @{$conn->autoconnect_channels}; 684 delete $existing_channels{$chan}; 685 $conn->autoconnect_channels([keys %existing_channels]); 686 687 if (!$is_temporary) { 688 # remove the line from the subs file 689 remove_autoconnect_channel($conn, $chan); 690 } 691 499 692 return; 500 693 } … … 596 789 my $alias; 597 790 my $channel; 791 my $is_temporary; 598 792 my $getopt = Getopt::Long::Parser->new; 599 793 my $m = BarnOwl::getcurmsg(); … … 601 795 local @ARGV = @_; 602 796 $getopt->configure(qw(pass_through permute no_getopt_compat prefix_pattern=-|--)); 603 $getopt->getoptions("alias=s" => \$alias); 797 $getopt->getoptions("alias=s" => \$alias, 798 "temporary" => \$is_temporary); 604 799 605 800 if(defined($alias)) { … … 640 835 die("You must specify an IRC network using -a.\n"); 641 836 } 837 push @ARGV, "-t" if $is_temporary; 642 838 if($flags & CHANNEL_ARG) { 643 839 $sub->($cmd, $conn, $channel, @ARGV); -
perl/modules/IRC/lib/BarnOwl/Module/IRC/Completion.pm
rdace02a r76e80de 57 57 } 58 58 59 sub complete_irc_join_part { 60 my $ctx = shift; 61 return complete_flags($ctx, 62 [qw(-t)], 63 { 64 "-a" => \&complete_networks, 65 }, 66 \&complete_channels 67 ); 68 } 69 59 70 sub complete_irc_channel { 60 71 my $ctx = shift; … … 95 106 BarnOwl::Completion::register_completer('irc-msg' => \&complete_irc_dest); 96 107 BarnOwl::Completion::register_completer('irc-mode' => \&complete_irc_dest); 97 BarnOwl::Completion::register_completer('irc-join' => \&complete_irc_ channel);98 BarnOwl::Completion::register_completer('irc-part' => \&complete_irc_ channel);108 BarnOwl::Completion::register_completer('irc-join' => \&complete_irc_join_part); 109 BarnOwl::Completion::register_completer('irc-part' => \&complete_irc_join_part); 99 110 BarnOwl::Completion::register_completer('irc-names' => \&complete_irc_channel); 100 111 BarnOwl::Completion::register_completer('irc-whois' => \&complete_irc_nick); -
perl/modules/IRC/lib/BarnOwl/Module/IRC/Connection.pm
r13ee8f2 rbe43554 39 39 my $self = bless({}, $class); 40 40 $self->conn($conn); 41 $self->autoconnect_channels([]); 41 # TODO(jgross): use // when we move to requiring perl 5.10 42 $self->autoconnect_channels(defined $args->{autoconnect_channels} ? $args->{autoconnect_channels} : []); 42 43 $self->alias($alias); 43 44 $self->server($host); … … 412 413 $self->{reconnect_timer}->stop; 413 414 } 414 $self->{reconnect_timer} = 415 $self->{reconnect_timer} = 415 416 BarnOwl::Timer->new( { 416 417 name => 'IRC (' . $self->alias . ') reconnect_timer', … … 445 446 $self->conn->send_msg(join => $c); 446 447 } 447 $self->autoconnect_channels([]);448 448 } 449 449 $self->conn->enable_ping(60, sub { … … 458 458 my $backoff = $self->backoff; 459 459 460 $self->autoconnect_channels([keys(%{$self->{channel_list}})]);461 460 $self->conn->connect(@{$self->connect_args}); 462 461 } -
perl/modules/Twitter/lib/BarnOwl/Module/Twitter.pm
rb8a3e00 r140429f 137 137 my $twitter_args = { username => $cfg->{user}, 138 138 password => $cfg->{password}, 139 source => 'barnowl', 139 source => 'barnowl', 140 ssl => 1, 141 legacy_lists_api => 0, 140 142 }; 141 143 if (defined $cfg->{service}) { … … 274 276 ); 275 277 278 BarnOwl::new_command( 'twitter-favorite' => sub { cmd_twitter_favorite(@_) }, 279 { 280 summary => 'Favorite the current Twitter message', 281 usage => 'twitter-favorite [ACCOUNT]', 282 description => <<END_DESCRIPTION 283 Favorite the current Twitter message using ACCOUNT (defaults to the 284 account that received the tweet). 285 END_DESCRIPTION 286 } 287 ); 288 276 289 BarnOwl::new_command( 'twitter-follow' => sub { cmd_twitter_follow(@_); }, 277 290 { … … 355 368 $account = $m->account unless defined($account); 356 369 find_account($account)->twitter_retweet($m); 370 return; 371 } 372 373 sub cmd_twitter_favorite { 374 my $cmd = shift; 375 my $account = shift; 376 my $m = BarnOwl::getcurmsg(); 377 if(!$m || $m->type ne 'Twitter') { 378 die("$cmd must be used with a Twitter message selected.\n"); 379 } 380 381 $account = $m->account unless defined($account); 382 find_account($account)->twitter_favorite($m); 357 383 return; 358 384 } -
perl/modules/Twitter/lib/BarnOwl/Module/Twitter/Handle.pm
r4ebbfbc r140429f 371 371 $self->twitter_direct($1, $2); 372 372 } elsif(defined $self->{twitter}) { 373 if(length($msg) > 140) {374 die("Twitter: Message over 140 characters long.\n");375 }376 373 $self->twitter_command('update', { 377 374 status => $msg, … … 432 429 } 433 430 431 sub twitter_favorite { 432 my $self = shift; 433 my $msg = shift; 434 435 if($msg->service ne $self->{cfg}->{service}) { 436 die("Cannot favorite a message from a different service.\n"); 437 } 438 $self->twitter_command(create_favorite => $msg->{status_id}); 439 } 440 441 434 442 sub twitter_follow { 435 443 my $self = shift; -
perlconfig.c
r96d80e9 r7dcef03 188 188 hash = (HV*)SvRV(msg); 189 189 190 m = g_ new(owl_message, 1);190 m = g_slice_new(owl_message); 191 191 owl_message_init(m); 192 192 … … 336 336 } 337 337 338 sv_setpv(get_sv("BarnOwl::VERSION", TRUE), OWL_VERSION_STRING);338 sv_setpv(get_sv("BarnOwl::VERSION", TRUE), version); 339 339 340 340 /* Add the system lib path to @INC */ -
perlglue.xs
r1ced34f r7dcef03 232 232 CODE: 233 233 { 234 s = g_ new(owl_style, 1);234 s = g_slice_new(owl_style); 235 235 owl_style_create_perl(s, name, newSVsv(object)); 236 236 owl_global_add_style(&g, s); … … 397 397 MODULE = BarnOwl PACKAGE = BarnOwl::Internal 398 398 399 400 int 401 file_deleteline(filename, line, backup) 402 const char *filename 403 const char *line 404 int backup 405 CODE: 406 RETVAL = owl_util_file_deleteline(filename, line, backup); 407 OUTPUT: 408 RETVAL 399 409 400 410 void -
popexec.c
re146cd7 r7dcef03 23 23 } 24 24 25 pe = g_ new(owl_popexec, 1);25 pe = g_slice_new(owl_popexec); 26 26 pe->winactive=0; 27 27 pe->pid=0; … … 179 179 if (pe->refcount<=0) { 180 180 owl_function_debugmsg("doing free of %p", pe); 181 g_ free(pe);181 g_slice_free(owl_popexec, pe); 182 182 } 183 183 } -
popwin.c
r6829afc r7dcef03 3 3 CALLER_OWN owl_popwin *owl_popwin_new(void) 4 4 { 5 owl_popwin *pw = g_ new0(owl_popwin, 1);5 owl_popwin *pw = g_slice_new0(owl_popwin); 6 6 7 7 pw->border = owl_window_new(NULL); … … 92 92 g_object_unref(pw->content); 93 93 94 g_ free(pw);94 g_slice_free(owl_popwin, pw); 95 95 } 96 96 -
runtests.sh
r5db8835 r7dcef03 1 1 #!/bin/sh 2 export G_SLICE=debug-blocks 2 3 exec env HARNESS_PERL=./tester prove --failures "${srcdir:=$(dirname "$0")}/t/" -
select.c
r84a071f r7dcef03 41 41 if (t->destroy_cbdata) 42 42 t->destroy_cbdata(t->cbdata); 43 g_ free(t);43 g_slice_free(owl_task, t); 44 44 } 45 45 … … 47 47 { 48 48 GSource *source = g_idle_source_new(); 49 owl_task *t = g_ new0(owl_task, 1);49 owl_task *t = g_slice_new0(owl_task); 50 50 t->cb = cb; 51 51 t->cbdata = cbdata; -
style.c
r92ffd89 r7dcef03 103 103 { 104 104 owl_style_cleanup(s); 105 g_ free(s);105 g_slice_free(owl_style, s); 106 106 } -
tester.c
r6a8b519 r21dc927 25 25 int owl_history_regtest(void); 26 26 int call_filter_regtest(void); 27 int owl_smartstrip_regtest(void); 27 28 28 29 extern void owl_perl_xs_init(pTHX); … … 116 117 numfailures += owl_history_regtest(); 117 118 numfailures += call_filter_regtest(); 119 numfailures += owl_smartstrip_regtest(); 118 120 if (numfailures) { 119 121 fprintf(stderr, "# *** WARNING: %d failures total\n", numfailures); … … 1018 1020 return numfailed; 1019 1021 } 1022 1023 int owl_smartstrip_regtest(void) 1024 { 1025 int numfailed = 0; 1026 1027 printf("# BEGIN testing owl_zephyr_smartstripped_user\n"); 1028 1029 #define CHECK_SMARTSTRIP(in, expected) \ 1030 do { \ 1031 char *__value = owl_zephyr_smartstripped_user(in); \ 1032 FAIL_UNLESS("owl_zephyr_smartstripped_user " in, \ 1033 strcmp((expected), __value) == 0); \ 1034 g_free(__value); \ 1035 } while (0) 1036 1037 CHECK_SMARTSTRIP("foo", "foo"); 1038 CHECK_SMARTSTRIP("foo.bar", "foo"); 1039 CHECK_SMARTSTRIP("foo/bar", "foo"); 1040 CHECK_SMARTSTRIP("host/bar", "host/bar"); 1041 CHECK_SMARTSTRIP("rcmd.bar", "rcmd.bar"); 1042 CHECK_SMARTSTRIP("daemon/bar", "daemon/bar"); 1043 CHECK_SMARTSTRIP("daemon.bar", "daemon.bar"); 1044 1045 CHECK_SMARTSTRIP("foo@ATHENA.MIT.EDU", "foo@ATHENA.MIT.EDU"); 1046 CHECK_SMARTSTRIP("foo.bar@ATHENA.MIT.EDU", "foo@ATHENA.MIT.EDU"); 1047 CHECK_SMARTSTRIP("foo/bar@ATHENA.MIT.EDU", "foo@ATHENA.MIT.EDU"); 1048 CHECK_SMARTSTRIP("host/bar@ATHENA.MIT.EDU", "host/bar@ATHENA.MIT.EDU"); 1049 CHECK_SMARTSTRIP("rcmd.bar@ATHENA.MIT.EDU", "rcmd.bar@ATHENA.MIT.EDU"); 1050 CHECK_SMARTSTRIP("daemon/bar@ATHENA.MIT.EDU", "daemon/bar@ATHENA.MIT.EDU"); 1051 CHECK_SMARTSTRIP("daemon.bar@ATHENA.MIT.EDU", "daemon.bar@ATHENA.MIT.EDU"); 1052 1053 printf("# END testing owl_zephyr_smartstripped_user\n"); 1054 1055 return numfailed; 1056 } -
util.c
r7b89e8c rcba6b9c 468 468 if (fstat(fileno(old), &st) != 0) { 469 469 owl_function_error("Cannot stat %s: %s", filename, strerror(errno)); 470 fclose(old); 470 471 return -1; 471 472 } … … 473 474 /* resolve symlinks, because link() fails on symlinks, at least on AFS */ 474 475 actual_filename = owl_util_recursive_resolve_link(filename); 475 if (actual_filename == NULL) 476 if (actual_filename == NULL) { 477 fclose(old); 476 478 return -1; /* resolving the symlink failed, but we already logged this error */ 479 } 477 480 478 481 newfile = g_strdup_printf("%s.new", actual_filename); -
variable.c
r9d4dfdc r94b9ee0 627 627 628 628 static owl_variable *owl_variable_newvar(int type, const char *name, const char *summary, const char *description, const char *validsettings) { 629 owl_variable *var = g_ new0(owl_variable, 1);629 owl_variable *var = g_slice_new0(owl_variable); 630 630 var->type = type; 631 631 var->name = g_strdup(name); … … 793 793 g_closure_unref(v->set_fromstring_fn); 794 794 795 g_ free(v);795 g_slice_free(owl_variable, v); 796 796 } 797 797 … … 1038 1038 CALLER_OWN char *owl_variable_bool_get_tostring_default(const owl_variable *v, void *dummy) 1039 1039 { 1040 bool val = owl_variable_get_bool(v); 1041 if (val == 0) { 1042 return g_strdup("off"); 1043 } else if (val == 1) { 1044 return g_strdup("on"); 1045 } else { 1046 return g_strdup("<invalid>"); 1047 } 1040 return g_strdup(owl_variable_get_bool(v) ? "on" : "off"); 1048 1041 } 1049 1042 -
viewwin.c
r7803326 r7dcef03 13 13 CALLER_OWN owl_viewwin *owl_viewwin_new_text(owl_window *win, const char *text) 14 14 { 15 owl_viewwin *v = g_ new0(owl_viewwin, 1);15 owl_viewwin *v = g_slice_new0(owl_viewwin); 16 16 owl_fmtext_init_null(&(v->fmtext)); 17 17 if (text) { … … 36 36 { 37 37 char *text; 38 owl_viewwin *v = g_ new0(owl_viewwin, 1);38 owl_viewwin *v = g_slice_new0(owl_viewwin); 39 39 40 40 owl_fmtext_copy(&(v->fmtext), fmtext); … … 424 424 g_object_unref(v->status); 425 425 owl_fmtext_cleanup(&(v->fmtext)); 426 g_ free(v);427 } 426 g_slice_free(owl_viewwin, v); 427 } -
zcrypt.c
r8f335a8 rca1fb26a 29 29 #include "filterproc.h" 30 30 31 #ifndef OWL_VERSION_STRING 32 #ifdef GIT_VERSION 33 #define stringify(x) __stringify(x) 34 #define __stringify(x) #x 35 #define OWL_VERSION_STRING stringify(GIT_VERSION) 36 #else 37 #define OWL_VERSION_STRING PACKAGE_VERSION 38 #endif 39 #endif /* !OWL_VERSION_STRING */ 31 extern const char *version; 40 32 41 33 /* Annotate functions in which the caller owns the return value and is … … 157 149 case OPT_VERSION: 158 150 /* Version */ 159 printf("This is zcrypt version %s\n", OWL_VERSION_STRING);151 printf("This is zcrypt version %s\n", version); 160 152 exit(0); 161 153 case OPT_HELP: -
zephyr.c
r80d7b44 r18380fd 125 125 owl_zephyr_loadsubs_helper(subs->subs, subs->nsubs); 126 126 deferred_subs = g_list_delete_link(deferred_subs, deferred_subs); 127 g_ free(subs);127 g_slice_free(owl_sub_list, subs); 128 128 } 129 129 … … 152 152 ret_sd = owl_zephyr_loaddefaultsubs(); 153 153 154 /* load Barn owl default subscriptions */154 /* load BarnOwl default subscriptions */ 155 155 ret_bd = owl_zephyr_loadbarnowldefaultsubs(); 156 156 … … 261 261 g_free(subs); 262 262 } else { 263 owl_sub_list *s = g_ new(owl_sub_list, 1);263 owl_sub_list *s = g_slice_new(owl_sub_list); 264 264 s->subs = subs; 265 265 s->nsubs = count; … … 283 283 #ifdef HAVE_LIBZEPHYR 284 284 FILE *file; 285 int fopen_errno; 285 286 char *tmp, *start; 286 287 char *buffer = NULL; … … 289 290 int subSize = 1024; 290 291 int count; 291 struct stat statbuff;292 292 293 293 subsfile = owl_zephyr_dotfile(".zephyr.subs", filename); 294 294 295 if (stat(subsfile, &statbuff) != 0) { 296 g_free(subsfile); 297 if (error_on_nofile == 1) 295 count = 0; 296 file = fopen(subsfile, "r"); 297 fopen_errno = errno; 298 g_free(subsfile); 299 if (!file) { 300 if (error_on_nofile == 1 || fopen_errno != ENOENT) 298 301 return -1; 299 302 return 0; 300 303 } 301 302 ZResetAuthentication();303 count = 0;304 file = fopen(subsfile, "r");305 g_free(subsfile);306 if (!file)307 return -1;308 304 309 305 subs = g_new(ZSubscription_t, subSize); … … 348 344 g_free(buffer); 349 345 346 ZResetAuthentication(); 350 347 return owl_zephyr_loadsubs_helper(subs, count); 351 348 #else … … 354 351 } 355 352 356 /* Load default Barn owl subscriptions353 /* Load default BarnOwl subscriptions 357 354 * 358 355 * Returns 0 on success. … … 363 360 #ifdef HAVE_LIBZEPHYR 364 361 ZSubscription_t *subs; 365 int subSize = 10; /* Max Barn owl default subs we allow */362 int subSize = 10; /* Max BarnOwl default subs we allow */ 366 363 int count, ret; 367 364 … … 412 409 char *buffer = NULL; 413 410 int count; 414 struct stat statbuff;415 411 416 412 subs = g_new(ZSubscription_t, numSubs); 417 413 subsfile = owl_zephyr_dotfile(".anyone", filename); 418 414 419 if (stat(subsfile, &statbuff) == -1) {420 g_free(subs);421 g_free(subsfile);422 return 0;423 }424 425 ZResetAuthentication();426 415 count = 0; 427 416 file = fopen(subsfile, "r"); … … 445 434 fclose(file); 446 435 } else { 436 g_free(subs); 447 437 return 0; 448 438 } 449 439 g_free(buffer); 450 440 441 ZResetAuthentication(); 451 442 return owl_zephyr_loadsubs_helper(subs, count); 452 443 #else … … 1106 1097 } 1107 1098 1099 #ifdef HAVE_LIBZEPHYR 1100 const char *owl_zephyr_get_charsetstr(const ZNotice_t *n) 1101 { 1102 #ifdef ZCHARSET_UTF_8 1103 return ZCharsetToString(n->z_charset); 1104 #else 1105 return ""; 1106 #endif 1107 } 1108 #else 1109 const char *owl_zephyr_get_charsetstr(const void *n) 1110 { 1111 return ""; 1112 } 1113 #endif 1114 1108 1115 /* return auth string */ 1109 1116 #ifdef HAVE_LIBZEPHYR … … 1303 1310 CALLER_OWN char *owl_zephyr_smartstripped_user(const char *in) 1304 1311 { 1305 char *slash, *dot, *realm, *out; 1306 1307 out = g_strdup(in); 1308 1309 /* bail immeaditly if we don't have to do any work */ 1310 slash = strchr(out, '/'); 1311 dot = strchr(out, '.'); 1312 if (!slash && !dot) { 1313 return(out); 1314 } 1315 1316 if (!strncasecmp(out, OWL_ZEPHYR_NOSTRIP_HOST, strlen(OWL_ZEPHYR_NOSTRIP_HOST)) || 1317 !strncasecmp(out, OWL_ZEPHYR_NOSTRIP_RCMD, strlen(OWL_ZEPHYR_NOSTRIP_RCMD)) || 1318 !strncasecmp(out, OWL_ZEPHYR_NOSTRIP_DAEMON5, strlen(OWL_ZEPHYR_NOSTRIP_DAEMON5)) || 1319 !strncasecmp(out, OWL_ZEPHYR_NOSTRIP_DAEMON4, strlen(OWL_ZEPHYR_NOSTRIP_DAEMON4))) { 1320 return(out); 1321 } 1322 1323 realm = strchr(out, '@'); 1324 if (!slash && dot && realm && (dot > realm)) { 1325 /* There's no '/', and the first '.' is in the realm */ 1326 return(out); 1327 } 1328 1329 /* remove the realm from out, but hold on to it */ 1330 if (realm) realm[0]='\0'; 1331 1332 /* strip */ 1333 if (slash) slash[0] = '\0'; /* krb5 style user/instance */ 1334 else if (dot) dot[0] = '\0'; /* krb4 style user.instance */ 1335 1336 /* reattach the realm if we had one */ 1337 if (realm) { 1338 strcat(out, "@"); 1339 strcat(out, realm+1); 1340 } 1341 1342 return(out); 1312 int n = strcspn(in, "./"); 1313 char *realm = strchrnul(in, '@'); 1314 1315 if (in + n >= realm || 1316 g_str_has_prefix(in, OWL_ZEPHYR_NOSTRIP_HOST) || 1317 g_str_has_prefix(in, OWL_ZEPHYR_NOSTRIP_RCMD) || 1318 g_str_has_prefix(in, OWL_ZEPHYR_NOSTRIP_DAEMON5) || 1319 g_str_has_prefix(in, OWL_ZEPHYR_NOSTRIP_DAEMON4)) 1320 return g_strdup(in); 1321 else 1322 return g_strdup_printf("%.*s%s", n, in, realm); 1343 1323 } 1344 1324 … … 1424 1404 if (ret == ZERR_NONE) { 1425 1405 /* Send a PSEUDO LOGIN! */ 1426 m = g_ new(owl_message, 1);1406 m = g_slice_new(owl_message); 1427 1407 owl_message_create_pseudo_zlogin(m, 0, zald->user, 1428 1408 location.host, … … 1437 1417 /* Send a PSEUDO LOGOUT! */ 1438 1418 if (notify) { 1439 m = g_ new(owl_message, 1);1419 m = g_slice_new(owl_message); 1440 1420 owl_message_create_pseudo_zlogin(m, 1, zald->user, "", "", ""); 1441 1421 owl_global_messagequeue_addmsg(&g, m); … … 1446 1426 } 1447 1427 ZFreeALD(zald); 1448 g_ free(zald);1428 g_slice_free(ZAsyncLocateData_t, zald); 1449 1429 } 1450 1430 } … … 1513 1493 1514 1494 /* create the new message */ 1515 m=g_ new(owl_message, 1);1495 m=g_slice_new(owl_message); 1516 1496 owl_message_create_from_znotice(m, ¬ice); 1517 1497 -
zwrite.c
r919cbf2 r7dcef03 3 3 CALLER_OWN owl_zwrite *owl_zwrite_new_from_line(const char *line) 4 4 { 5 owl_zwrite *z = g_ new(owl_zwrite, 1);5 owl_zwrite *z = g_slice_new(owl_zwrite); 6 6 if (owl_zwrite_create_from_line(z, line) != 0) { 7 g_ free(z);7 g_slice_free(owl_zwrite, z); 8 8 return NULL; 9 9 } … … 13 13 CALLER_OWN owl_zwrite *owl_zwrite_new(int argc, const char *const *argv) 14 14 { 15 owl_zwrite *z = g_ new(owl_zwrite, 1);15 owl_zwrite *z = g_slice_new(owl_zwrite); 16 16 if (owl_zwrite_create(z, argc, argv) != 0) { 17 g_ free(z);17 g_slice_free(owl_zwrite, z); 18 18 return NULL; 19 19 } … … 356 356 { 357 357 owl_zwrite_cleanup(z); 358 g_ free(z);358 g_slice_free(owl_zwrite, z); 359 359 } 360 360
Note: See TracChangeset
for help on using the changeset viewer.