#include <config.h>
#include <ctype.h>
+#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
sendcmd(int s, char *cmd, char *arg)
{
char buf[128];
- int cc, len;
+ char *p;
+ ssize_t n;
+ int len;
len = snprintf(buf, sizeof(buf), "%s %s\n",
cmd, arg != NULL ? arg : "");
fprintf(stderr, "%s too long\n", cmd);
exit(1);
}
- cc = write(s, buf, len);
- if (cc < 0) {
- perror("sendcmd: write");
- }
- if (cc != len) {
- fprintf(stderr, "sendcmd: short write (%d not %d)\n", cc, len);
+ p = buf;
+ while (len > 0) {
+ n = write(s, buf, len);
+ if (n < 0) {
+ if (errno != EINTR) {
+ perror("sendcmd: write");
+ exit(1);
+ }
+ n = 0;
+ }
+ p += n;
+ len -= n;
}
}