Actual source code: sclose.c
1: /*
3: Written by Barry Smith, bsmith@mcs.anl.gov 4/14/92
4: Updated by Richard Katz, katz@ldeo.columbia.edu 9/28/03
5: */
7: #include <petscsys.h>
8: #include <../src/sys/classes/viewer/impls/socket/socket.h>
10: #include <errno.h>
11: #include <ctype.h>
12: #if defined(PETSC_HAVE_MACHINE_ENDIAN_H)
13: #include <machine/endian.h>
14: #endif
15: #if defined(PETSC_HAVE_UNISTD_H)
16: #include <unistd.h>
17: #endif
18: #if defined(PETSC_HAVE_SYS_SOCKET_H)
19: #include <sys/socket.h>
20: #endif
21: #if defined(PETSC_HAVE_SYS_WAIT_H)
22: #include <sys/wait.h>
23: #endif
24: #if defined(PETSC_HAVE_NETINET_IN_H)
25: #include <netinet/in.h>
26: #endif
27: #if defined(PETSC_HAVE_NETDB_H)
28: #include <netdb.h>
29: #endif
30: #if defined(PETSC_HAVE_FCNTL_H)
31: #include <fcntl.h>
32: #endif
33: #if defined(PETSC_HAVE_IO_H)
34: #include <io.h>
35: #endif
37: #if defined(PETSC_NEED_CLOSE_PROTO)
38: PETSC_EXTERN int close(int);
39: #endif
41: #include <mex.h>
42: #define PETSC_MEX_ERROR(a) \
43: { \
44: mexErrMsgTxt(a); \
45: return; \
46: }
47: typedef struct {
48: int onoff;
49: int time;
50: } Linger;
52: PETSC_EXTERN void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
53: {
54: int t = 0;
55: Linger linger;
57: linger.onoff = 1;
58: linger.time = 0;
60: if (!nrhs) PETSC_MEX_ERROR("Needs one argument, the port");
61: t = (int)*mxGetPr(prhs[0]);
63: if (setsockopt(t, SOL_SOCKET, SO_LINGER, (char *)&linger, sizeof(Linger))) PETSC_MEX_ERROR("Setting linger");
64: if (close(t)) PETSC_MEX_ERROR("closing socket");
65: return;
66: }
68: int main(int argc, char **argv)
69: {
70: return 0;
71: }