version 1.5.2.1, 2001/09/27 19:03:54 |
version 1.5.2.2, 2002/03/09 00:20:44 |
|
|
/* $OpenBSD$ */ |
|
|
|
/* |
/* |
* Copyright (c) 2000 Markus Friedl. All rights reserved. |
* Copyright (c) 2000 Markus Friedl. All rights reserved. |
* |
* |
|
|
{ |
{ |
char *t = s; |
char *t = s; |
while (*t) { |
while (*t) { |
if(*t == '\n' || *t == '\r') { |
if (*t == '\n' || *t == '\r') { |
*t = '\0'; |
*t = '\0'; |
return s; |
return s; |
} |
} |
|
|
debug("fd %d setting O_NONBLOCK", fd); |
debug("fd %d setting O_NONBLOCK", fd); |
val |= O_NONBLOCK; |
val |= O_NONBLOCK; |
if (fcntl(fd, F_SETFL, val) == -1) |
if (fcntl(fd, F_SETFL, val) == -1) |
if (errno != ENODEV) |
debug("fcntl(%d, F_SETFL, O_NONBLOCK): %s", |
error("fcntl(%d, F_SETFL, O_NONBLOCK): %s", |
fd, strerror(errno)); |
fd, strerror(errno)); |
|
} |
} |
|
|
void |
void |
|
|
debug("fd %d clearing O_NONBLOCK", fd); |
debug("fd %d clearing O_NONBLOCK", fd); |
val &= ~O_NONBLOCK; |
val &= ~O_NONBLOCK; |
if (fcntl(fd, F_SETFL, val) == -1) |
if (fcntl(fd, F_SETFL, val) == -1) |
if (errno != ENODEV) |
debug("fcntl(%d, F_SETFL, O_NONBLOCK): %s", |
error("fcntl(%d, F_SETFL, O_NONBLOCK): %s", |
fd, strerror(errno)); |
fd, strerror(errno)); |
|
} |
} |
|
|
|
/* disable nagle on socket */ |
|
void |
|
set_nodelay(int fd) |
|
{ |
|
int opt; |
|
socklen_t optlen; |
|
|
|
optlen = sizeof opt; |
|
if (getsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, &optlen) == -1) { |
|
error("getsockopt TCP_NODELAY: %.100s", strerror(errno)); |
|
return; |
|
} |
|
if (opt == 1) { |
|
debug2("fd %d is TCP_NODELAY", fd); |
|
return; |
|
} |
|
opt = 1; |
|
debug("fd %d setting TCP_NODELAY", fd); |
|
if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &opt, sizeof opt) == -1) |
|
error("setsockopt TCP_NODELAY: %.100s", strerror(errno)); |
|
} |
|
|
/* Characters considered whitespace in strsep calls. */ |
/* Characters considered whitespace in strsep calls. */ |
#define WHITESPACE " \t\r\n" |
#define WHITESPACE " \t\r\n" |
|
|
|
|
if (args->list == NULL) { |
if (args->list == NULL) { |
args->nalloc = 32; |
args->nalloc = 32; |
args->num = 0; |
args->num = 0; |
} else if (args->num+2 >= args->nalloc) |
} else if (args->num+2 >= args->nalloc) |
args->nalloc *= 2; |
args->nalloc *= 2; |
|
|
args->list = xrealloc(args->list, args->nalloc * sizeof(char *)); |
args->list = xrealloc(args->list, args->nalloc * sizeof(char *)); |