Mercurial > pidgin
view src/protocols/zephyr/ZWait4Not.c @ 4076:91c4bd698d39
[gaim-migrate @ 4291]
I went ape on ICQ's i18n stuff for offline messages/channel 4 messages. I'm
pretty sure accented characters and what not should work like a charm, now.
Thanks to Mr. McQueen and Mr. Blanton. Also, I changed some stuff with handling
these types of messages, so we actually delimit the message at the delimiters.
So, uh, hopefully no one will complain about funky "?" symbols in their
authorization requests.
Stuff to look out for would be authorization requests and replies not working.
I still haven't been able to get icqnum@pager.icq.com to work reliably enough
to test it.
And also, I'd like to take this moment to say that lobsters are really neat.
Yeah. Lobsters.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Sun, 15 Dec 2002 06:15:27 +0000 |
| parents | 424a40f12a6c |
| children | 43d6c08d7e96 |
line wrap: on
line source
/* This file is part of the Project Athena Zephyr Notification System. * It contains the ZCheckIfNotice/select loop used for waiting for * a notice, with a timeout. * * Created by: <Joe Random Hacker> * * $Source$ * $Author: warmenhoven $ * * Copyright (c) 1991 by the Massachusetts Institute of Technology. * For copying and distribution information, see the file * "mit-copyright.h". */ #include "mit-copyright.h" #ifndef lint static char rcsid_ZWaitForNotice_c[] = "$Zephyr$"; #endif #include <internal.h> #include <sys/socket.h> Code_t Z_WaitForNotice (notice, pred, arg, timeout) ZNotice_t *notice; int (*pred) __P((ZNotice_t *, void *)); void *arg; int timeout; { Code_t retval; struct timeval tv, t0; fd_set fdmask; int i, fd; retval = ZCheckIfNotice (notice, (struct sockaddr_in *) 0, pred, (char *) arg); if (retval == ZERR_NONE) return ZERR_NONE; if (retval != ZERR_NONOTICE) return retval; fd = ZGetFD (); FD_ZERO (&fdmask); tv.tv_sec = timeout; tv.tv_usec = 0; gettimeofday (&t0, (struct timezone *) 0); t0.tv_sec += timeout; while (1) { FD_SET (fd, &fdmask); i = select (fd + 1, &fdmask, (fd_set *) 0, (fd_set *) 0, &tv); if (i == 0) return ETIMEDOUT; if (i < 0 && errno != EINTR) return errno; if (i > 0) { retval = ZCheckIfNotice (notice, (struct sockaddr_in *) 0, pred, (char *) arg); if (retval != ZERR_NONOTICE) /* includes ZERR_NONE */ return retval; } gettimeofday (&tv, (struct timezone *) 0); tv.tv_usec = t0.tv_usec - tv.tv_usec; if (tv.tv_usec < 0) { tv.tv_usec += 1000000; tv.tv_sec = t0.tv_sec - tv.tv_sec - 1; } else tv.tv_sec = t0.tv_sec - tv.tv_sec; } /*NOTREACHED*/ }
