eliminate i_fd and o_fd global vars
[nvi.git] / ipc / ipc_method.c
blob22e14bb7e01dba4ef793fbb2a8627c277b92d30f
1 /*-
2 * Copyright (c) 1996
3 * Rob Zimmermann. All rights reserved.
4 * Copyright (c) 1996
5 * Keith Bostic. All rights reserved.
7 * See the LICENSE file for redistribution information.
8 */
10 #include "config.h"
12 #include <sys/types.h>
13 #include <sys/queue.h>
14 #include <sys/stat.h>
16 #include <bitstring.h>
17 #include <errno.h>
18 #include <fcntl.h>
19 #include <stdio.h>
20 #include <stdlib.h>
21 #include <string.h>
22 #include <unistd.h>
24 #include <sys/uio.h>
26 #include "../common/common.h"
27 #include "ip.h"
29 static int vi_close __P((IPVI *));
30 static int vi_new_window __P((IPVI *, IPVIWIN **));
32 /*
33 * vi_create
35 * PUBLIC: int vi_create __P((IPVI **, u_int32_t));
37 int
38 vi_create(ipvip, flags)
39 IPVI **ipvip;
40 u_int32_t flags;
42 IPVI *ipvi;
44 MALLOC_GOTO(NULL, ipvi, IPVI*, sizeof(IPVI));
45 memset(ipvi, 0, sizeof(IPVI));
47 ipvi->flags = flags;
49 ipvi->run = vi_run;
50 ipvi->new_window = vi_new_window;
51 ipvi->close = vi_close;
53 *ipvip = ipvi;
55 return 0;
57 alloc_err:
58 return 1;
61 static int
62 vi_new_window (IPVI *ipvi, IPVIWIN **ipviwinp)
64 IPVIWIN *ipviwin;
66 MALLOC_GOTO(NULL, ipviwin, IPVIWIN*, sizeof(IPVIWIN));
67 memset(ipviwin, 0, sizeof(IPVIWIN));
69 ipviwin->ifd = ipvi->ifd;
70 ipviwin->ofd = ipvi->ofd;
72 *ipviwinp = ipviwin;
74 return 0;
76 alloc_err:
77 return 1;
80 static int vi_close(ipvi)
81 IPVI *ipvi;
83 memset(ipvi, 6, sizeof(IPVI));
84 free(ipvi);
85 return 0;