Annotation of src/usr.bin/ssh/aux.c, Revision 1.4
1.1 markus 1: #include "includes.h"
1.4 ! provos 2: RCSID("$OpenBSD: aux.c,v 1.3 2000/06/18 17:13:41 markus Exp $");
1.2 markus 3:
4: #include "ssh.h"
1.1 markus 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;
1.3 markus 25: if (isatty(fd)) {
26: /* do not mess with tty's */
27: debug("no set_nonblock for tty fd %d", fd);
28: return;
29: }
1.1 markus 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));
1.4 ! 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);
1.1 markus 71: }