This is lispEvaluate.m in view mode; [Download] [Up]
#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); } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.