Mercurial > hg > xemacs-beta
view tests/tooltalk/emacs-eval.c @ 1346:01c57eb70ae9
[xemacs-hg @ 2003-03-09 02:27:27 by ben]
To: xemacs-patches@xemacs.org
i.c: Sleep between calls to check for I/O, since these calls are non-blocking.
behavior.el: Allow other keywords for forward compatibility.
cl-macs.el: Rewrite to eliminate byte-compiler warning when `return' is used
without `finally'.
cmdloop.el: Avoid truncated error messages for `end-of-file' and the like.
cmdloop.el: Avoid char-int error after syncing.
files.el: Eliminate byte-compile warnings.
printer.el: Fix line-width calculations.
#### This used to work. Someone's changes (perhaps by
Michael Sperber?) seem to have messed something up.
simple.el: Use new clear-left-side functions to avoid messages ending up on
the same line as other output.
xemacs.mak: Add override for info/ as well when separate source/build dirs.
xemacs.mak: Order sections in main build process and add comments. Add
additional dependencies to try and prevent later steps from
happening when failures in earlier steps have occurred.
Makefile.in.in: Order sections in main build process and add comments. Add
additional dependencies to try and prevent later steps from
happening when failures in earlier steps have occurred.
alloc.c: Don't arbitrarily clear Vconfigure_info_directory since it
messes up separate build/source dirs.
console.c, console.h, device-msw.c, device.c: Add accidentally omitted msprinter console and data descriptions.
print.c, console-msw.c: Add clear-left-side functionality to help keep stdio/stderr
output from separate sources on separate lines. Generalize
the different kinds of debugging output. Add dpa().
profile.c: Add better docs on Unix/Windows differences.
regex.c: Fix problems with rel-alloc compilation caused by previous patch.
emacs.c: Seg fault rather than abort on Cygwin, since gdb doesn't trap
aborts properly.
console-gtk-impl.h, console-gtk.h, console-msw.h, console-x-impl.h, console-x.h, dialog-gtk.c, dialog-x.c, event-msw.c, frame-gtk.c, frame-x.c, frameslots.h, glyphs-gtk.c, glyphs-x.c, gui-gtk.c, gui-x.c, inline.c, menubar-gtk.c, menubar-msw.c, menubar-x.c, scrollbar-gtk.c, scrollbar-x.c, ui-gtk.c: Delete popup-data object. Delete menubar_data field from frames,
since its usage is frame-specific. Delete menubar-msw.h,
gui-x.h, gui-gtk.h. Clean up handling of lwlib callback data
GCPRO'ing and add missing GCPRO recomputation in widget code.
author | ben |
---|---|
date | Sun, 09 Mar 2003 02:27:46 +0000 |
parents | 131b0175ea99 |
children | 9fc91aa3a927 |
line wrap: on
line source
/* emacs-eval.c - send an s-expression to XEmacs for evaluation via ToolTalk */ /* See `tooltalk-eval-handler' in the file lisp/tooltalk/tooltalk-init.el for the receiver side. */ #include <desktop/tt_c.h> #include <stdio.h> #include <stdlib.h> #include <sys/wait.h> Tt_status tter; #define exit_err_ptr(ptr) \ if ((tter = tt_ptr_error(ptr)) != TT_OK) \ { fprintf(stderr, "%d:%s\n", __LINE__, tt_status_message(tter)); exit(1); } #define exit_err(stat) \ if ((tter = stat) != TT_OK) \ { fprintf(stderr, "%d:%s\n", __LINE__, tt_status_message(tter)); exit(1); } Tt_callback_action callback_fn(Tt_message msg, Tt_pattern pat); static Tt_message create_new_message(char *s_expression); static int initialize_tooltalk(void); static void usage(void); static char* tt_procid; Tt_callback_action callback_fn(Tt_message msg, Tt_pattern pat) { tt_message_destroy(msg); return TT_CALLBACK_PROCESSED; } static Tt_message create_new_message(char *s_expression) { Tt_message msg; msg = tt_message_create(); exit_err_ptr(msg); exit_err(tt_message_address_set (msg, TT_PROCEDURE)); exit_err(tt_message_class_set (msg, TT_REQUEST)); exit_err(tt_message_scope_set (msg, TT_SESSION)); exit_err(tt_message_op_set (msg, "emacs-eval")); exit_err(tt_message_arg_add (msg, TT_IN, "string", s_expression)); exit_err(tt_message_callback_add(msg, callback_fn)); return msg; } static int initialize_tooltalk(void) { int rcode; tt_procid = tt_open(); if ((rcode = tt_ptr_error(tt_procid)) != TT_OK) { return rcode; } if ((rcode = tt_session_join(tt_default_session())) != TT_OK) { return (rcode); } } static void usage(void) { fprintf(stderr, "Usage: emacs-eval \"<s-expression>\"\n\n"); } void main(argc, argv) int argc; char *argv[]; { Tt_message msg; if (argc != 2) { usage(); exit(0); } exit_err(initialize_tooltalk()); msg = create_new_message(argv[1]); exit_err(tt_message_send(msg)); return; }