mirror of
git://anongit.mindrot.org/openssh.git
synced 2025-01-27 20:02:48 +00:00
caf6dd6d21
- deraadt@cvs.openbsd.org 2000/08/24 15:46:59 [scp.c] off_t in sink, to fix files > 2GB, i think, test is still running ;-) - deraadt@cvs.openbsd.org 2000/08/25 10:10:06 [session.c] Wall - markus@cvs.openbsd.org 2000/08/26 04:33:43 [compat.c] ssh.com-2.3.0 - markus@cvs.openbsd.org 2000/08/27 12:18:05 [compat.c] compatibility with future ssh.com versions - deraadt@cvs.openbsd.org 2000/08/27 21:50:55 [auth-krb4.c session.c ssh-add.c sshconnect.c uidswap.c] print uid/gid as unsigned - markus@cvs.openbsd.org 2000/08/28 13:51:00 [ssh.c] enable -n and -f for ssh2 - markus@cvs.openbsd.org 2000/08/28 14:19:53 [ssh.c] allow combination of -N and -f - markus@cvs.openbsd.org 2000/08/28 14:20:56 [util.c] util.c - markus@cvs.openbsd.org 2000/08/28 14:22:02 [util.c] undo - markus@cvs.openbsd.org 2000/08/28 14:23:38 [util.c] don't complain if setting NONBLOCK fails with ENODEV
74 lines
1.2 KiB
C
74 lines
1.2 KiB
C
#include "includes.h"
|
|
RCSID("$OpenBSD: util.c,v 1.4 2000/08/28 20:23:37 markus Exp $");
|
|
|
|
#include "ssh.h"
|
|
|
|
char *
|
|
chop(char *s)
|
|
{
|
|
char *t = s;
|
|
while (*t) {
|
|
if(*t == '\n' || *t == '\r') {
|
|
*t = '\0';
|
|
return s;
|
|
}
|
|
t++;
|
|
}
|
|
return s;
|
|
|
|
}
|
|
|
|
void
|
|
set_nonblock(int fd)
|
|
{
|
|
int val;
|
|
if (isatty(fd)) {
|
|
/* do not mess with tty's */
|
|
debug("no set_nonblock for tty fd %d", fd);
|
|
return;
|
|
}
|
|
val = fcntl(fd, F_GETFL, 0);
|
|
if (val < 0) {
|
|
error("fcntl(%d, F_GETFL, 0): %s", fd, strerror(errno));
|
|
return;
|
|
}
|
|
if (val & O_NONBLOCK)
|
|
return;
|
|
debug("fd %d setting O_NONBLOCK", fd);
|
|
val |= O_NONBLOCK;
|
|
if (fcntl(fd, F_SETFL, val) == -1)
|
|
if (errno != ENODEV)
|
|
error("fcntl(%d, F_SETFL, O_NONBLOCK): %s",
|
|
fd, strerror(errno));
|
|
}
|
|
|
|
/* Characters considered whitespace in strsep calls. */
|
|
#define WHITESPACE " \t\r\n"
|
|
|
|
char *
|
|
strdelim(char **s)
|
|
{
|
|
char *old;
|
|
int wspace = 0;
|
|
|
|
if (*s == NULL)
|
|
return NULL;
|
|
|
|
old = *s;
|
|
|
|
*s = strpbrk(*s, WHITESPACE "=");
|
|
if (*s == NULL)
|
|
return (old);
|
|
|
|
/* Allow only one '=' to be skipped */
|
|
if (*s[0] == '=')
|
|
wspace = 1;
|
|
*s[0] = '\0';
|
|
|
|
*s += strspn(*s + 1, WHITESPACE) + 1;
|
|
if (*s[0] == '=' && !wspace)
|
|
*s += strspn(*s + 1, WHITESPACE) + 1;
|
|
|
|
return (old);
|
|
}
|