src/protocols/zephyr/ZhmStat.c

Tue, 27 May 2003 03:38:52 +0000

author
Mark Doliner <markdoliner@pidgin.im>
date
Tue, 27 May 2003 03:38:52 +0000
changeset 5537
812794b97b08
parent 2419
beb509dd2935
child 8792
b0645c9dc276
permissions
-rw-r--r--

[gaim-migrate @ 5937]
This is:
-AIM over OSCAR use Christian's new, kick ass
gaim_notify_email stuff for new mail notification. This
should be good, but it's kind of a pain to test. Let me
know if you have any problems

-Minor fix to the translation README

-2 minor changes to the doxygen of 2 major header files
(this means you'll have to recompile a lot of files :-) )

-If your global proxy setting is "No Proxy" and your global
proxy host is empty, but $http_proxy is set to something,
gaim used to switch your global proxy setting to "HTTP." It
no longer does this. This makes more sense to me. If you
disagree, please let me know--this is open to debate, and
what not. Also, the use of environmental proxy settings
will be changed a bit in the next day or two

2419
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
1 /* This file is part of the Project Athena Zephyr Notification System.
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
2 * It contains the ZhmStat() function.
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
3 *
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
4 * Created by: Marc Horowitz
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
5 *
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
6 * $Id: ZhmStat.c 2432 2001-10-03 19:38:28Z warmenhoven $
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
7 *
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
8 * Copyright (c) 1996 by the Massachusetts Institute of Technology.
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
9 * For copying and distribution information, see the file
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
10 * "mit-copyright.h".
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
11 */
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
12
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
13 #include <internal.h>
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
14 #include <sys/socket.h>
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
15
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
16 #ifndef INADDR_LOOPBACK
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
17 #define INADDR_LOOPBACK 0x7f000001
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
18 #endif
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
19
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
20 Code_t ZhmStat(hostaddr, notice)
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
21 struct in_addr *hostaddr;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
22 ZNotice_t *notice;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
23 {
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
24 struct servent *sp;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
25 struct sockaddr_in sin;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
26 ZNotice_t req;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
27 Code_t code;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
28 struct timeval tv;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
29 fd_set readers;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
30
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
31 (void) memset((char *)&sin, 0, sizeof(struct sockaddr_in));
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
32
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
33 sp = getservbyname(HM_SVCNAME, "udp");
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
34
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
35 sin.sin_port = (sp) ? sp->s_port : HM_SVC_FALLBACK;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
36 sin.sin_family = AF_INET;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
37
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
38 if (hostaddr)
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
39 sin.sin_addr = *hostaddr;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
40 else
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
41 sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
42
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
43 (void) memset((char *)&req, 0, sizeof(req));
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
44 req.z_kind = STAT;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
45 req.z_port = 0;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
46 req.z_class = HM_STAT_CLASS;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
47 req.z_class_inst = HM_STAT_CLIENT;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
48 req.z_opcode = HM_GIMMESTATS;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
49 req.z_sender = "";
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
50 req.z_recipient = "";
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
51 req.z_default_format = "";
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
52 req.z_message_len = 0;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
53
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
54 if ((code = ZSetDestAddr(&sin)) != ZERR_NONE)
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
55 return(code);
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
56
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
57 if ((code = ZSendNotice(&req, ZNOAUTH)) != ZERR_NONE)
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
58 return(code);
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
59
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
60 /* Wait up to ten seconds for a response. */
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
61 FD_ZERO(&readers);
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
62 FD_SET(ZGetFD(), &readers);
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
63 tv.tv_sec = 10;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
64 tv.tv_usec = 0;
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
65 code = select(ZGetFD() + 1, &readers, NULL, NULL, &tv);
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
66 if (code < 0 && errno != EINTR)
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
67 return(errno);
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
68 if (code == 0 || (code < 0 && errno == EINTR) || ZPending() == 0)
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
69 return(ZERR_HMDEAD);
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
70
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
71 return(ZReceiveNotice(notice, (struct sockaddr_in *) 0));
beb509dd2935 [gaim-migrate @ 2432]
Salvatore Valente
parents:
diff changeset
72 }

mercurial