/*
* Client for OS/2 lpmud
*/
#include <os2.h>
#include <string.h>
#include <io.h>
#include <stdio.h>
#include "socket.h"
#define BUF_SIZE MAX_SOCKET_PACKET_SIZE
void print_pipe();
void error();
const char *version = "mudclient 1.0";
char in_buffer[BUF_SIZE];
char out_buffer[BUF_SIZE];
int fd;
main (int argc, char *argv[])
{
int thread_id, ret, ph, len;
ULONG count;
char s[50];
sprintf(s, REQUEST_PIPE, 7680);
if ((ph = open(s, 2)) < 0)
error("Connection refused (Can't open request pipe)");
if ((ret = read(ph, &in_buffer, 1)) != 1)
error("Invalid data in request pipe");
close(ph);
sprintf(s, CLIENT_PIPE, (int) in_buffer[0]);
if (DosWaitNPipe(s, 10000L))
error("Connection timed out");
if ((fd = open(s, 2)) < 0)
error("Can't open client pipe");
if (DosCreateThread(&thread_id, print_pipe, 0L, 0L, 8192L))
error("Can't create second thread");
printf("Connected.\n");
for (;;)
if (gets (in_buffer, BUF_SIZE - 2) != NULL)
{
len = strlen (in_buffer);
in_buffer[len++] = '\n';
in_buffer[len++] = '\0';
write(fd, in_buffer, len);
}
exit(0);
}
VOID
print_pipe(ULONG ulThreadArg)
{
int bc;
for (;;)
if (bc = read(fd, out_buffer, BUF_SIZE))
write(1, out_buffer, bc);
else
error ("Connection closed by foreign host");
}
void
error (char *msg)
{
printf("%s: %s.\n",version,msg);
exit(10);
}