src/protocols/zephyr/ZhmStat.c

Thu, 01 Jul 2004 15:57:38 +0000

author
Cole Kowalski
date
Thu, 01 Jul 2004 15:57:38 +0000
changeset 9435
b17d52fece0f
parent 8792
b0645c9dc276
child 10867
b39f9b646d6c
permissions
-rw-r--r--

[gaim-migrate @ 10256]
this patch had some little discussion, so the original comments about it
don't make too much sense now.

it makes the log viewwer further collapse things into months for things
older than the current month. for relatively short logs this might not be
wonderful, but it should help with very long logs. see patch #963827

oh and thanks to Cole Kowalski for this

committer: Luke Schierer <lschiere@pidgin.im>

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 *
8792
b0645c9dc276 [gaim-migrate @ 9554]
Christian Hammond <chipx86@chipx86.com>
parents: 2419
diff changeset
6 * $Id: ZhmStat.c 9554 2004-04-24 09:02:28Z chipx86 $
2419
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
8792
b0645c9dc276 [gaim-migrate @ 9554]
Christian Hammond <chipx86@chipx86.com>
parents: 2419
diff changeset
13 #include "internal.h"
2419
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