]>
Commit | Line | Data |
---|---|---|
6d24277f | 1 | #include "includes.h" |
2 | RCSID("$OpenBSD: util.c,v 1.1 2000/08/01 19:01:42 provos Exp $"); | |
3 | ||
4 | #include "ssh.h" | |
5 | ||
6 | char * | |
7 | chop(char *s) | |
8 | { | |
9 | char *t = s; | |
10 | while (*t) { | |
11 | if(*t == '\n' || *t == '\r') { | |
12 | *t = '\0'; | |
13 | return s; | |
14 | } | |
15 | t++; | |
16 | } | |
17 | return s; | |
18 | ||
19 | } | |
20 | ||
21 | void | |
22 | set_nonblock(int fd) | |
23 | { | |
24 | int val; | |
25 | if (isatty(fd)) { | |
26 | /* do not mess with tty's */ | |
27 | debug("no set_nonblock for tty fd %d", fd); | |
28 | return; | |
29 | } | |
30 | val = fcntl(fd, F_GETFL, 0); | |
31 | if (val < 0) { | |
32 | error("fcntl(%d, F_GETFL, 0): %s", fd, strerror(errno)); | |
33 | return; | |
34 | } | |
35 | if (val & O_NONBLOCK) | |
36 | return; | |
37 | debug("fd %d setting O_NONBLOCK", fd); | |
38 | val |= O_NONBLOCK; | |
39 | if (fcntl(fd, F_SETFL, val) == -1) | |
40 | error("fcntl(%d, F_SETFL, O_NONBLOCK): %s", fd, strerror(errno)); | |
41 | } | |
42 | ||
43 | /* Characters considered whitespace in strsep calls. */ | |
44 | #define WHITESPACE " \t\r\n" | |
45 | ||
46 | char * | |
47 | strdelim(char **s) | |
48 | { | |
49 | char *old; | |
50 | int wspace = 0; | |
51 | ||
52 | if (*s == NULL) | |
53 | return NULL; | |
54 | ||
55 | old = *s; | |
56 | ||
57 | *s = strpbrk(*s, WHITESPACE "="); | |
58 | if (*s == NULL) | |
59 | return (old); | |
60 | ||
61 | /* Allow only one '=' to be skipped */ | |
62 | if (*s[0] == '=') | |
63 | wspace = 1; | |
64 | *s[0] = '\0'; | |
65 | ||
66 | *s += strspn(*s + 1, WHITESPACE) + 1; | |
67 | if (*s[0] == '=' && !wspace) | |
68 | *s += strspn(*s + 1, WHITESPACE) + 1; | |
69 | ||
70 | return (old); | |
71 | } |