[1153] in BarnOwl Developers
[D-O-H] r1101 - branches/barnowl_perlaim/owl
daemon@ATHENA.MIT.EDU (geofft@MIT.EDU)
Thu Oct 29 18:13:33 2009
Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
X-Original-To: nelhage@nelhage.com
Date: Sun, 10 Aug 2008 10:53:17 -0400 (EDT)
To: dirty-owl-hackers@mit.edu
From: geofft@MIT.EDU
Reply-to: dirty-owl-hackers@MIT.EDU
Author: geofft
Date: 2008-08-10 10:53:16 -0400 (Sun, 10 Aug 2008)
New Revision: 1101
Modified:
branches/barnowl_perlaim/owl/commands.c
branches/barnowl_perlaim/owl/editwin.c
branches/barnowl_perlaim/owl/functions.c
branches/barnowl_perlaim/owl/global.c
branches/barnowl_perlaim/owl/owl.h
branches/barnowl_perlaim/owl/perlconfig.c
branches/barnowl_perlaim/owl/perlglue.xs
Log:
Now it compiles. Highly likely to leak or crash, although it seems to work for me...
Modified: branches/barnowl_perlaim/owl/commands.c
===================================================================
--- branches/barnowl_perlaim/owl/commands.c 2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/commands.c 2008-08-10 14:53:16 UTC (rev 1101)
@@ -2470,7 +2470,7 @@
void owl_command_editresponse_done(owl_editwin *e)
{
char *text = owl_strdup(owl_editwin_get_text(e));
- void (*callback)(void *, char *) = owl_editwin_get_callback(e);
+ owl_callback_t callback = owl_editwin_get_callback(e);
void *cbdata = owl_editwin_get_cbdata(e);
owl_global_set_typwin_inactive(&g);
Modified: branches/barnowl_perlaim/owl/editwin.c
===================================================================
--- branches/barnowl_perlaim/owl/editwin.c 2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/editwin.c 2008-08-10 14:53:16 UTC (rev 1101)
@@ -83,41 +83,27 @@
e->dotsend=1;
}
-void owl_editwin_set_command(owl_editwin *e, char *command) {
- if(e->command) owl_free(e->command);
- e->command = owl_strdup(command);
-}
-
-char *owl_editwin_get_command(owl_editwin *e) {
- if(e->command) return e->command;
- return "";
-}
-
-void owl_editwin_set_callback(owl_editwin *e, void (*cb)(void*, char*)) {
+void owl_editwin_set_callback(owl_editwin *e, owl_callback_t cb, void *cbdata) {
e->callback = cb;
+ e->cbdata = cbdata;
}
-void (*owl_editwin_get_callback(owl_editwin*))(void *cbdata, char *text) {
+owl_callback_t owl_editwin_get_callback(owl_editwin *e) {
return e->callback;
}
-void owl_editwin_set_cbdata(owl_editwin *e, void *data) {
- e->cbdata = data;
-}
-
void* owl_editwin_get_cbdata(owl_editwin *e) {
return e->cbdata;
}
void owl_editwin_do_callback(owl_editwin *e) {
/* XXX get rid of me */
- void (*cb)(void*, char*);
- cb=owl_editwin_get_callback(e);
+ owl_callback_t cb = owl_editwin_get_callback(e);
if(!cb) {
owl_function_error("Internal error: No editwin callback!");
} else {
/* owl_function_error("text: |%s|", owl_editwin_get_text(e)); */
- cb(e->cbdata, e->text);
+ cb(e->cbdata, owl_editwin_get_text(e));
}
}
Modified: branches/barnowl_perlaim/owl/functions.c
===================================================================
--- branches/barnowl_perlaim/owl/functions.c 2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/functions.c 2008-08-10 14:53:16 UTC (rev 1101)
@@ -267,8 +267,7 @@
/* make it active */
owl_global_set_typwin_active(&g);
- owl_global_set_buffercommand(&g, line);
- owl_global_set_buffercallback(&g, &owl_callback_zwrite);
+ owl_global_set_buffercallback(&g, &owl_callback_zwrite, line);
}
void owl_function_loopwrite_setup()
@@ -292,13 +291,11 @@
/* make it active */
owl_global_set_typwin_active(&g);
- owl_global_set_buffercommand(&g, "loopwrite");
- owl_global_set_buffercallback(&g, &owl_callback_loopwrite);
+ owl_global_set_buffercallback(&g, &owl_callback_loopwrite, "loopwrite");
}
-void owl_callback_zwrite(owl_editwin *e) {
- owl_function_zwrite(owl_editwin_get_command(e),
- owl_editwin_get_text(e));
+void owl_callback_zwrite(void *cbdata, char *text) {
+ owl_function_zwrite((char *)cbdata, text);
}
/* send, log and display an outgoing zephyr. If 'msg' is NULL
@@ -397,8 +394,8 @@
owl_zwrite_free(&z);
}
-void owl_callback_loopwrite(owl_editwin *e) {
- owl_function_loopwrite(owl_editwin_get_text(e));
+void owl_callback_loopwrite(void *cbdata, char *text) {
+ owl_function_loopwrite(text);
}
void owl_function_loopwrite(char *msg)
Modified: branches/barnowl_perlaim/owl/global.c
===================================================================
--- branches/barnowl_perlaim/owl/global.c 2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/global.c 2008-08-10 14:53:16 UTC (rev 1101)
@@ -236,24 +236,12 @@
return(&(g->tw));
}
-/* buffercommand */
+/* buffercallback */
-void owl_global_set_buffercommand(owl_global *g, char *command) {
- owl_editwin_set_command(owl_global_get_typwin(g), command);
+void owl_global_set_buffercallback(owl_global *g, owl_callback_t cb, char *line) {
+ owl_editwin_set_callback(owl_global_get_typwin(g), cb, line);
}
-char *owl_global_get_buffercommand(owl_global *g) {
- return owl_editwin_get_command(owl_global_get_typwin(g));
-}
-
-void owl_global_set_buffercallback(owl_global *g, void (*cb)(owl_editwin*)) {
- owl_editwin_set_callback(owl_global_get_typwin(g), cb);
-}
-
-void (*owl_global_get_buffercallback(owl_global *g))(owl_editwin*) {
- return owl_editwin_get_callback(owl_global_get_typwin(g));
-}
-
/* refresh */
int owl_global_is_needrefresh(owl_global *g) {
Modified: branches/barnowl_perlaim/owl/owl.h
===================================================================
--- branches/barnowl_perlaim/owl/owl.h 2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/owl.h 2008-08-10 14:53:16 UTC (rev 1101)
@@ -203,6 +203,8 @@
#define LINE 2048
+typedef void (*owl_callback_t)(void *cbdata, char *text);
+
typedef struct _owl_variable {
char *name;
int type; /* OWL_VARIABLE_* */
@@ -451,8 +453,7 @@
int dotsend;
int echochar;
- char *command;
- void (*callback)(void *, char *);
+ owl_callback_t callback;
void *cbdata;
} owl_editwin;
Modified: branches/barnowl_perlaim/owl/perlconfig.c
===================================================================
--- branches/barnowl_perlaim/owl/perlconfig.c 2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/perlconfig.c 2008-08-10 14:53:16 UTC (rev 1101)
@@ -471,14 +471,13 @@
SvREFCNT_dec(d->pfunc);
}
-void owl_perlconfig_edit_callback(void *cbdata, char *c_text);
+void owl_perlconfig_edit_callback(void *cbdata, char *c_text)
{
SV *cb = (SV*)cbdata;
SV *text;
unsigned int n_a;
dSP;
- e->cbdata = NULL;
if(cb == NULL) {
owl_function_error("Perl callback is NULL!");
}
Modified: branches/barnowl_perlaim/owl/perlglue.xs
===================================================================
--- branches/barnowl_perlaim/owl/perlglue.xs 2008-08-10 12:33:50 UTC (rev 1100)
+++ branches/barnowl_perlaim/owl/perlglue.xs 2008-08-10 14:53:16 UTC (rev 1101)
@@ -165,8 +165,7 @@
owl_function_start_question(line);
SvREFCNT_inc(callback);
- owl_editwin_set_cbdata(owl_global_get_typwin(&g), callback);
- owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
+ owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback, callback);
}
void start_password(line, callback)
@@ -181,8 +180,7 @@
owl_function_start_password(line);
SvREFCNT_inc(callback);
- owl_editwin_set_cbdata(owl_global_get_typwin(&g), callback);
- owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
+ owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback, callback);
}
void start_edit_win(line, callback)
@@ -207,8 +205,7 @@
owl_global_set_typwin_active(&g);
SvREFCNT_inc(callback);
- owl_editwin_set_cbdata(owl_global_get_typwin(&g), callback);
- owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback);
+ owl_editwin_set_callback(owl_global_get_typwin(&g), owl_perlconfig_edit_callback, callback);
}