X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=uip%2Fvmhsbr.c;fp=uip%2Fvmhsbr.c;h=0000000000000000000000000000000000000000;hb=916690191222433a6923a4be54b0d8f6ac01bd02;hp=eb6e037875e72ba69ef81673fb148c05dd8f5fe6;hpb=ecc90fb56b43863f4c33ed62da4abe898b17d7fb;p=mmh diff --git a/uip/vmhsbr.c b/uip/vmhsbr.c deleted file mode 100644 index eb6e037..0000000 --- a/uip/vmhsbr.c +++ /dev/null @@ -1,227 +0,0 @@ - -/* - * vmhsbr.c -- routines to help vmh along - * - * This code is Copyright (c) 2002, by the authors of nmh. See the - * COPYRIGHT file in the root directory of the nmh distribution for - * complete copyright information. - */ - -/* - * TODO (for vrsn 2): - * INI: include width of windows - */ - -#include -#include -#include -#include - -static char *types[] = { - "OK", - "INI", "ACK", "ERR", "CMD", "QRY", "TTY", "WIN", "DATA", "EOF", "FIN", - "XXX", NULL -}; - -static FILE *fp = NULL; - -static int PEERrfd = NOTOK; -static int PEERwfd = NOTOK; - -/* - * static prototypes - */ -static int rclose (struct record *, char *, ...); - - -int -rcinit (int rfd, int wfd) -{ - char *cp, buffer[BUFSIZ]; - - PEERrfd = rfd; - PEERwfd = wfd; - - if ((cp = getenv ("MHVDEBUG")) && *cp) { - snprintf (buffer, sizeof(buffer), "%s.out", invo_name); - if ((fp = fopen (buffer, "w"))) { - fseek (fp, 0L, SEEK_END); - fprintf (fp, "%d: rcinit (%d, %d)\n", (int) getpid(), rfd, wfd); - fflush (fp); - } - } - - return OK; -} - - -int -rcdone (void) -{ - if (PEERrfd != NOTOK) - close (PEERrfd); - if (PEERwfd != NOTOK) - close (PEERwfd); - - if (fp) { - fclose (fp); - fp = NULL; - } - return OK; -} - - -int -rc2rc (char code, int len, char *data, struct record *rc) -{ - if (rc2peer (code, len, data) == NOTOK) - return NOTOK; - - return peer2rc (rc); -} - - -int -str2rc (char code, char *str, struct record *rc) -{ - return rc2rc (code, str ? strlen (str) : 0, str, rc); -} - - -int -peer2rc (struct record *rc) -{ - if (rc->rc_data) - free (rc->rc_data); - - if (read (PEERrfd, (char *) rc_head (rc), RHSIZE (rc)) != RHSIZE (rc)) - return rclose (rc, "read from peer lost(1)"); - if (rc->rc_len) { - rc->rc_data = mh_xmalloc ((unsigned) rc->rc_len + 1); - if (read (PEERrfd, rc->rc_data, rc->rc_len) != rc->rc_len) - return rclose (rc, "read from peer lost(2)"); - rc->rc_data[rc->rc_len] = 0; - } - else - rc->rc_data = NULL; - - if (fp) { - fseek (fp, 0L, SEEK_END); - fprintf (fp, "%d: <--- %s %d: \"%*.*s\"\n", (int) getpid(), - types[(unsigned char)rc->rc_type], rc->rc_len, - rc->rc_len, rc->rc_len, rc->rc_data); - fflush (fp); - } - - return rc->rc_type; -} - - -int -rc2peer (char code, int len, char *data) -{ - struct record rcs; - register struct record *rc = &rcs; - - rc->rc_type = code; - rc->rc_len = len; - - if (fp) { - fseek (fp, 0L, SEEK_END); - fprintf (fp, "%d: ---> %s %d: \"%*.*s\"\n", (int) getpid(), - types[(unsigned char)rc->rc_type], rc->rc_len, - rc->rc_len, rc->rc_len, data); - fflush (fp); - } - - if (write (PEERwfd, (char *) rc_head (rc), RHSIZE (rc)) != RHSIZE (rc)) - return rclose (rc, "write to peer lost(1)"); - - if (rc->rc_len) - if (write (PEERwfd, data, rc->rc_len) != rc->rc_len) - return rclose (rc, "write to peer lost(2)"); - - return OK; -} - - -int -str2peer (char code, char *str) -{ - return rc2peer (code, str ? strlen (str) : 0, str); -} - - -int -fmt2peer (char code, char *fmt, ...) -{ - va_list ap; - - va_start(ap, fmt); - return verr2peer (code, NULL, fmt, ap); - va_end(ap); -} - - -int -err2peer (char code, char *what, char *fmt, ...) -{ - int return_value; - va_list ap; - - va_start(ap, fmt); - return_value = verr2peer(code, what, fmt, ap); - va_end(ap); - return return_value; /* This routine returned garbage before 1999-07-15. */ -} - - -int -verr2peer (char code, char *what, char *fmt, va_list ap) -{ - int eindex = errno; - int len, buflen; - char *bp, *s, buffer[BUFSIZ * 2]; - - /* Get buffer ready to go */ - bp = buffer; - buflen = sizeof(buffer); - - vsnprintf (bp, buflen, fmt, ap); - len = strlen (bp); - bp += len; - buflen -= len; - - if (what) { - if (*what) { - snprintf (bp, buflen, " %s: ", what); - len = strlen (bp); - bp += len; - buflen -= len; - } - if ((s = strerror (eindex))) - strncpy (bp, s, buflen); - else - snprintf (bp, buflen, "unknown error %d", eindex); - len = strlen (bp); - bp += len; - buflen -= len; - } - - return rc2peer (code, bp - buffer, buffer); -} - - -static int -rclose (struct record *rc, char *fmt, ...) -{ - va_list ap; - static char buffer[BUFSIZ * 2]; - - va_start(ap, fmt); - vsnprintf (buffer, sizeof(buffer), fmt, ap); - va_end(ap); - - rc->rc_len = strlen (rc->rc_data = getcpy (buffer)); - return (rc->rc_type = RC_XXX); -}