Annotation of src/usr.bin/ssh/util.c, Revision 1.1
1.1 ! provos 1: #include "includes.h"
! 2: RCSID("$OpenBSD: aux.c,v 1.4 2000/07/13 22:53:21 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: }