home *** CD-ROM | disk | FTP | other *** search
-
- #import <appkit/Listener.h>
- #include <stdio.h>
- #import <servers/netname.h>
- extern port_t name_server_port;
-
- int send_message(port_t send_port, char *selector, char *string_argument)
- {
- static NXMessage msg_buf[MSG_SIZE_MAX];
- NXMessage *send_msg = msg_buf;
- int err,len, moffset, msize;
- msg_type_t *st;
-
- send_msg->header.msg_type = MSG_TYPE_NORMAL;
- send_msg->header.msg_id = NX_SELECTORPMSG;
- send_msg->header.msg_simple = TRUE;
- send_msg->header.msg_remote_port = send_port;
- send_msg->header.msg_local_port = PORT_NULL;
-
- send_msg->sequenceType.msg_type_name = MSG_TYPE_INTEGER_32;
- send_msg->sequenceType.msg_type_size = sizeof(int) * 8;
- send_msg->sequenceType.msg_type_number = 1;
- send_msg->sequenceType.msg_type_inline = TRUE;
- send_msg->sequenceType.msg_type_longform = FALSE;
- send_msg->sequenceType.msg_type_deallocate = FALSE;
-
- send_msg->actionType.msg_type_name = MSG_TYPE_BYTE;
- send_msg->actionType.msg_type_size = 8;
- send_msg->actionType.msg_type_inline = TRUE;
- send_msg->actionType.msg_type_longform = FALSE;
- send_msg->actionType.msg_type_deallocate = FALSE;
-
- send_msg->sequence = 1;
-
- len = strlen(selector) + 1;
- send_msg->actionType.msg_type_number = len;
- bcopy(selector, send_msg->action, len);
-
- moffset = (int)(send_msg->action - (char *)send_msg) + ((len + 3) / 4) * 4;
- msize = moffset + sizeof(msg_type_t) + ((len + 3) / 4);
-
- st = (msg_type_t *)((char *)send_msg + moffset);
- st->msg_type_inline = TRUE;
- st->msg_type_longform = FALSE;
- st->msg_type_deallocate = FALSE;
-
- len = strlen(string_argument) + 1;
- st->msg_type_name = MSG_TYPE_BYTE;
- st->msg_type_size = 8;
- st->msg_type_number = len;
- bcopy(string_argument, ((char *)st + sizeof(msg_type_t)), len);
-
- send_msg->header.msg_size = ((char *)st-(char *)send_msg) +
- sizeof(msg_type_t) + ((len + 3) / 4) * 4;
- return msg_send(send_msg,SEND_TIMEOUT,30*1000); /* thirty sec timeout */
- }
-
- #define BUFSIZE (4096)
-
- main()
- {
- char buf[BUFSIZE], *p = buf;
- port_t send_port;
- int i, err = netname_look_up(name_server_port, "", "Lisp", &send_port);
- if (err) exit(1);
- while (1) {
- for (i=0; i<(BUFSIZE-2); i++) {
- if ((*p++=getchar()) == EOF) {
- p--;
- break;
- }
- }
- if (p[-1] != '\n')
- *p++ = '\n';
- *p = '\0';
- if (buf[0]) {
- err = send_message(send_port,"appEvaluate:",buf);
- if (err) exit(1);
- }
- if (i != (BUFSIZE-2))
- exit(0);
- }
- }
-
-
-
-