Annotation of src/usr.bin/ssh/util.c, Revision 1.3
1.1 provos 1: #include "includes.h"
1.2 markus 2: RCSID("$OpenBSD: util.c,v 1.1 2000/08/01 19:01:42 provos Exp $");
1.1 provos 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)
1.3 ! markus 40: error("fcntl(%d, F_SETFL, O_NONBLOCK): %s", fd, strerror(errno));
1.1 provos 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: }