Mercurial > pidgin.yaz
annotate src/protocols/zephyr/ZLocations.c @ 4145:b658b502b096
[gaim-migrate @ 4363]
gtk1.2 code in anything except the buddy list window is a bug. this patch from
David Brigada (jsi):
" This patch changes the mechanism in which Gaim changes
the colors on tabs for typing notification, new message
notification, etc.. The previous mechanism was causing
the font to change (possible mix of gtk1.2 and gtk2.0
code). Instead of loading the label's preferences with
gtk_widget_get_modifier_style(), changing the color
(with a -> edit), and then saving the label's
preferences with gtk_widget_modify_style(), it changes
the color with gtk_widget_modify_fg(). This fixes the
font problem on my computer. The GTK 2.0 API docs seem
to suggest the use of gtk_widget_modify_fg() over
gtk_widget_modify_style() when necessary."
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Thu, 26 Dec 2002 15:40:23 +0000 |
parents | 7ba69b8e0de5 |
children | 08ce2a94d9c7 |
rev | line source |
---|---|
2086 | 1 /* This file is part of the Project Athena Zephyr Notification System. |
2 * It contains source for the ZSetLocation, ZUnsetLocation, and | |
3 * ZFlushMyLocations functions. | |
4 * | |
5 * Created by: Robert French | |
6 * | |
7 * $Source$ | |
8 * $Author: warmenhoven $ | |
9 * | |
10 * Copyright (c) 1987,1988,1991 by the Massachusetts Institute of Technology. | |
11 * For copying and distribution information, see the file | |
12 * "mit-copyright.h". | |
13 */ | |
14 /* $Header$ */ | |
15 | |
16 #ifndef lint | |
17 static char rcsid_ZLocations_c[] = | |
18 "$Zephyr: /afs/athena.mit.edu/astaff/project/zephyr/src/lib/RCS/ZLocations.c,v 1.30 90/12/20 03:04:39 raeburn Exp $"; | |
19 #endif | |
20 | |
21 #include <internal.h> | |
22 | |
23 #include <pwd.h> | |
24 | |
25 extern char *getenv(); | |
26 extern int errno; | |
27 | |
28 Code_t ZSetLocation(exposure) | |
29 char *exposure; | |
30 { | |
31 return (Z_SendLocation(LOGIN_CLASS, exposure, ZAUTH, | |
32 "$sender logged in to $1 on $3 at $2")); | |
33 } | |
34 | |
35 Code_t ZUnsetLocation() | |
36 { | |
37 return (Z_SendLocation(LOGIN_CLASS, LOGIN_USER_LOGOUT, ZNOAUTH, | |
38 "$sender logged out of $1 on $3 at $2")); | |
39 } | |
40 | |
41 Code_t ZFlushMyLocations() | |
42 { | |
43 return (Z_SendLocation(LOGIN_CLASS, LOGIN_USER_FLUSH, ZAUTH, "")); | |
44 } | |
45 | |
46 static char host[MAXHOSTNAMELEN], mytty[MAXPATHLEN]; | |
47 static int reenter = 0; | |
48 | |
49 Code_t Z_SendLocation(class, opcode, auth, format) | |
50 char *class; | |
51 char *opcode; | |
52 Z_AuthProc auth; | |
53 char *format; | |
54 { | |
55 int retval; | |
56 time_t ourtime; | |
57 ZNotice_t notice, retnotice; | |
2419
7ba69b8e0de5
[gaim-migrate @ 2432]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
58 char *bptr[3], *p; |
2086 | 59 #ifndef X_DISPLAY_MISSING |
60 char *display; | |
61 #endif | |
62 char *ttyp; | |
63 struct hostent *hent; | |
64 short wg_port = ZGetWGPort(); | |
65 | |
66 (void) memset((char *)¬ice, 0, sizeof(notice)); | |
67 notice.z_kind = ACKED; | |
68 notice.z_port = (u_short) ((wg_port == -1) ? 0 : wg_port); | |
69 notice.z_class = class; | |
70 notice.z_class_inst = ZGetSender(); | |
71 notice.z_opcode = opcode; | |
72 notice.z_sender = 0; | |
73 notice.z_recipient = ""; | |
74 notice.z_num_other_fields = 0; | |
75 notice.z_default_format = format; | |
76 | |
77 /* | |
78 keep track of what we said before so that we can be consistent | |
79 when changing location information. | |
80 This is done mainly for the sake of the WindowGram client. | |
81 */ | |
82 | |
83 if (!reenter) { | |
84 if (gethostname(host, MAXHOSTNAMELEN) < 0) | |
85 return (errno); | |
86 | |
87 hent = gethostbyname(host); | |
88 if (hent) { | |
89 (void) strncpy(host, hent->h_name, sizeof(host)); | |
90 host[sizeof(host) - 1] = '\0'; | |
91 } | |
92 #ifndef X_DISPLAY_MISSING | |
93 if ((display = getenv("DISPLAY")) && *display) { | |
94 (void) strcpy(mytty, display); | |
95 } else { | |
96 #endif | |
97 ttyp = ttyname(0); | |
2419
7ba69b8e0de5
[gaim-migrate @ 2432]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
98 if (ttyp && *ttyp) { |
7ba69b8e0de5
[gaim-migrate @ 2432]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
99 p = strchr(ttyp + 1, '/'); |
7ba69b8e0de5
[gaim-migrate @ 2432]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
100 strcpy(mytty, (p) ? p + 1 : ttyp); |
7ba69b8e0de5
[gaim-migrate @ 2432]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
101 } else { |
7ba69b8e0de5
[gaim-migrate @ 2432]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
102 strcpy(mytty, "unknown"); |
2086 | 103 } |
104 #ifndef X_DISPLAY_MISSING | |
105 } | |
106 #endif | |
107 reenter = 1; | |
108 } | |
109 | |
110 ourtime = time((time_t *)0); | |
2419
7ba69b8e0de5
[gaim-migrate @ 2432]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
111 bptr[0] = host; |
2086 | 112 bptr[1] = ctime(&ourtime); |
113 bptr[1][strlen(bptr[1])-1] = '\0'; | |
2419
7ba69b8e0de5
[gaim-migrate @ 2432]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
2086
diff
changeset
|
114 bptr[2] = mytty; |
2086 | 115 |
116 | |
117 if ((retval = ZSendList(¬ice, bptr, 3, auth)) != ZERR_NONE) | |
118 return (retval); | |
119 | |
120 retval = Z_WaitForNotice (&retnotice, ZCompareUIDPred, ¬ice.z_uid, | |
121 SRV_TIMEOUT); | |
122 if (retval != ZERR_NONE) | |
123 return retval; | |
124 | |
125 if (retnotice.z_kind == SERVNAK) { | |
126 if (!retnotice.z_message_len) { | |
127 ZFreeNotice(&retnotice); | |
128 return (ZERR_SERVNAK); | |
129 } | |
130 if (!strcmp(retnotice.z_message, ZSRVACK_NOTSENT)) { | |
131 ZFreeNotice(&retnotice); | |
132 return (ZERR_AUTHFAIL); | |
133 } | |
134 if (!strcmp(retnotice.z_message, ZSRVACK_FAIL)) { | |
135 ZFreeNotice(&retnotice); | |
136 return (ZERR_LOGINFAIL); | |
137 } | |
138 ZFreeNotice(&retnotice); | |
139 return (ZERR_SERVNAK); | |
140 } | |
141 | |
142 if (retnotice.z_kind != SERVACK) { | |
143 ZFreeNotice(&retnotice); | |
144 return (ZERR_INTERNAL); | |
145 } | |
146 | |
147 if (!retnotice.z_message_len) { | |
148 ZFreeNotice(&retnotice); | |
149 return (ZERR_INTERNAL); | |
150 } | |
151 | |
152 if (strcmp(retnotice.z_message, ZSRVACK_SENT) && | |
153 strcmp(retnotice.z_message, ZSRVACK_NOTSENT)) { | |
154 ZFreeNotice(&retnotice); | |
155 return (ZERR_INTERNAL); | |
156 } | |
157 | |
158 ZFreeNotice(&retnotice); | |
159 | |
160 return (ZERR_NONE); | |
161 } |