Lots of cleanups to fvwm-menu-desktop
[fvwm.git] / libs / fio.c
blob2999e655adbae466427fde56fe55ce9c1d30ba59
1 /* -*-c-*- */
2 /* This program is free software; you can redistribute it and/or modify
3 * it under the terms of the GNU General Public License as published by
4 * the Free Software Foundation; either version 2 of the License, or
5 * (at your option) any later version.
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
12 * You should have received a copy of the GNU General Public License
13 * along with this program; if not, write to the Free Software
14 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 /* ---------------------------- included header files ---------------------- */
19 #include "config.h"
21 #include <sys/types.h>
22 #include <sys/socket.h>
23 #include <errno.h>
24 #include "fio.h"
26 /* ---------------------------- imports ------------------------------------ */
28 /* ---------------------------- interface functions ------------------------ */
30 ssize_t fvwm_send(int s, const void *buf, size_t len, int flags)
32 int rc;
33 size_t offset;
34 const char *data;
36 data = buf;
37 offset = 0;
40 rc = send(s, (char *)data + offset, len - offset, flags);
41 if (rc > 0)
43 offset += rc;
45 } while ((rc > 0 && (offset < len)) || (rc == -1 && errno == EINTR));
47 return rc;
50 ssize_t fvwm_recv(int s, void *buf, size_t len, int flags)
52 int rc;
56 rc = recv(s, buf, len, flags);
57 } while (rc == -1 && errno == EINTR);
59 return rc;