diff options
author | Damien Miller <djm@mindrot.org> | 2000-08-18 14:01:04 +1000 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2000-08-18 14:01:04 +1000 |
commit | 61c51508615381765249e6ef1f9f843de2f3d5b6 (patch) | |
tree | f6a676a945fc42fb5cf49dd2aa80e035d9cf306a /util.c | |
parent | 942da039d2a05e6f491883f50b516175a6dbb20f (diff) |
Forgot to add
Diffstat (limited to 'util.c')
-rw-r--r-- | util.c | 71 |
1 files changed, 71 insertions, 0 deletions
@@ -0,0 +1,71 @@ | |||
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 | } | ||