libpurple/win32/libc_interface.c

Wed, 13 May 2009 20:29:03 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Wed, 13 May 2009 20:29:03 +0000
changeset 27110
05ca719b901b
parent 25333
182125d7b7fc
child 29491
31c1d615772e
permissions
-rw-r--r--

Support custom smileys in MUCs (when all participants support BoB and a maximum
of 10 participants are in the chat).
Always announce support for BoB, since disable custom smileys will still turn
off fetching them, and BoB can be used for other purposes further on.

3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2 * purple
17666
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
3 *
5913
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
4 * Copyright (C) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com>
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
5 *
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
6 * This program is free software; you can redistribute it and/or modify
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
7 * it under the terms of the GNU General Public License as published by
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
9 * (at your option) any later version.
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
10 *
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
11 * This program is distributed in the hope that it will be useful,
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
14 * GNU General Public License for more details.
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
15 *
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
16 * You should have received a copy of the GNU General Public License
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
17 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 18553
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
5913
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
19 *
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
20 */
8244
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
21 #include <winsock2.h>
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
22 #include <ws2tcpip.h>
3777
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
23 #include <io.h>
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
24 #include <stdlib.h>
3777
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
25 #include <stdio.h>
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
26 #include <errno.h>
3777
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
27 #include <sys/timeb.h>
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
28 #include <sys/stat.h>
3777
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
29 #include <time.h>
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 9611
diff changeset
30 #include <glib.h>
21771
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
31 #include "config.h"
6425
3e86c949c98a [gaim-migrate @ 6933]
Herman Bloggs <herman@bluedigits.com>
parents: 5913
diff changeset
32 #include "debug.h"
3777
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
33 #include "libc_internal.h"
25333
182125d7b7fc Fix from the QuteCom folks to compile with Glib < 2.8.5 with MSVC. Fixes #7761. Also some minor cleanup from me.
Daniel Atallah <datallah@pidgin.im>
parents: 24843
diff changeset
34 #include <glib/gstdio.h>
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
35
21771
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
36 #ifdef ENABLE_NLS
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
37 # include <locale.h>
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
38 # include <libintl.h>
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
39 # define _(String) ((const char *)dgettext(PACKAGE, String))
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
40 # ifdef gettext_noop
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
41 # define N_(String) gettext_noop (String)
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
42 # else
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
43 # define N_(String) (String)
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
44 # endif
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
45 #else
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
46 # include <locale.h>
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
47 # define N_(String) (String)
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
48 # ifndef _
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
49 # define _(String) ((const char *)String)
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
50 # endif
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
51 # define ngettext(Singular, Plural, Number) ((Number == 1) ? ((const char *)Singular) : ((const char *)Plural))
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
52 # define dngettext(Domain, Singular, Plural, Number) ((Number == 1) ? ((const char *)Singular) : ((const char *)Plural))
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
53 #endif
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
54
25333
182125d7b7fc Fix from the QuteCom folks to compile with Glib < 2.8.5 with MSVC. Fixes #7761. Also some minor cleanup from me.
Daniel Atallah <datallah@pidgin.im>
parents: 24843
diff changeset
55 #ifndef S_ISDIR
182125d7b7fc Fix from the QuteCom folks to compile with Glib < 2.8.5 with MSVC. Fixes #7761. Also some minor cleanup from me.
Daniel Atallah <datallah@pidgin.im>
parents: 24843
diff changeset
56 # define S_ISDIR(m) (((m)&S_IFDIR)==S_IFDIR)
182125d7b7fc Fix from the QuteCom folks to compile with Glib < 2.8.5 with MSVC. Fixes #7761. Also some minor cleanup from me.
Daniel Atallah <datallah@pidgin.im>
parents: 24843
diff changeset
57 #endif
21771
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
58
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
59 static char errbuf[1024];
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
60
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
61 /* helpers */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
62 static int wpurple_is_socket( int fd ) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
63 int optval;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
64 unsigned int optlen = sizeof(int);
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
65
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
66 if( (getsockopt(fd, SOL_SOCKET, SO_TYPE, (void*)&optval, &optlen)) == SOCKET_ERROR ) {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
67 int error = WSAGetLastError();
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
68 if( error == WSAENOTSOCK )
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
69 return FALSE;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
70 else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
71 purple_debug(PURPLE_DEBUG_WARNING, "wpurple", "wpurple_is_socket: getsockopt returned error: %d\n", error);
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
72 return FALSE;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
73 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
74 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
75 return TRUE;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
76 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
77
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
78 /* socket.h */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
79 int wpurple_socket (int namespace, int style, int protocol) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
80 int ret;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
81
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
82 ret = socket( namespace, style, protocol );
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
83
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
84 if( ret == INVALID_SOCKET ) {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
85 errno = WSAGetLastError();
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
86 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
87 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
88 return ret;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
89 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
90
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
91 int wpurple_connect(int socket, struct sockaddr *addr, u_long length) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
92 int ret;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
93
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
94 ret = connect( socket, addr, length );
17666
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
95
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
96 if( ret == SOCKET_ERROR ) {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
97 errno = WSAGetLastError();
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
98 if( errno == WSAEWOULDBLOCK )
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
99 errno = WSAEINPROGRESS;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
100 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
101 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
102 return 0;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
103 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
104
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
105 int wpurple_getsockopt(int socket, int level, int optname, void *optval, socklen_t *optlenptr) {
8244
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
106 if(getsockopt(socket, level, optname, optval, optlenptr) == SOCKET_ERROR ) {
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
107 errno = WSAGetLastError();
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
108 return -1;
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
109 }
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
110 return 0;
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
111 }
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
112
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
113 int wpurple_setsockopt(int socket, int level, int optname, const void *optval, socklen_t optlen) {
8244
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
114 if(setsockopt(socket, level, optname, optval, optlen) == SOCKET_ERROR ) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
115 errno = WSAGetLastError();
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
116 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
117 }
8244
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
118 return 0;
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
119 }
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
120
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
121 int wpurple_getsockname(int socket, struct sockaddr *addr, socklen_t *lenptr) {
8244
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
122 if(getsockname(socket, addr, lenptr) == SOCKET_ERROR) {
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
123 errno = WSAGetLastError();
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
124 return -1;
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
125 }
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
126 return 0;
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
127 }
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
128
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
129 int wpurple_bind(int socket, struct sockaddr *addr, socklen_t length) {
8244
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
130 if(bind(socket, addr, length) == SOCKET_ERROR) {
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
131 errno = WSAGetLastError();
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
132 return -1;
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
133 }
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
134 return 0;
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
135 }
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
136
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
137 int wpurple_listen(int socket, unsigned int n) {
8244
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
138 if(listen(socket, n) == SOCKET_ERROR) {
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
139 errno = WSAGetLastError();
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
140 return -1;
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
141 }
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
142 return 0;
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
143 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
144
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
145 int wpurple_sendto(int socket, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen) {
11431
60971f504319 [gaim-migrate @ 13668]
Daniel Atallah <datallah@pidgin.im>
parents: 11364
diff changeset
146 int ret;
60971f504319 [gaim-migrate @ 13668]
Daniel Atallah <datallah@pidgin.im>
parents: 11364
diff changeset
147 if ((ret = sendto(socket, buf, len, flags, to, tolen)
60971f504319 [gaim-migrate @ 13668]
Daniel Atallah <datallah@pidgin.im>
parents: 11364
diff changeset
148 ) == SOCKET_ERROR) {
60971f504319 [gaim-migrate @ 13668]
Daniel Atallah <datallah@pidgin.im>
parents: 11364
diff changeset
149 errno = WSAGetLastError();
17666
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
150 if(errno == WSAEWOULDBLOCK || errno == WSAEINPROGRESS)
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
151 errno = EAGAIN;
11431
60971f504319 [gaim-migrate @ 13668]
Daniel Atallah <datallah@pidgin.im>
parents: 11364
diff changeset
152 return -1;
60971f504319 [gaim-migrate @ 13668]
Daniel Atallah <datallah@pidgin.im>
parents: 11364
diff changeset
153 }
60971f504319 [gaim-migrate @ 13668]
Daniel Atallah <datallah@pidgin.im>
parents: 11364
diff changeset
154 return ret;
60971f504319 [gaim-migrate @ 13668]
Daniel Atallah <datallah@pidgin.im>
parents: 11364
diff changeset
155 }
60971f504319 [gaim-migrate @ 13668]
Daniel Atallah <datallah@pidgin.im>
parents: 11364
diff changeset
156
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
157 /* fcntl.h */
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
158 /* This is not a full implementation of fcntl. Update as needed.. */
20239
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
159 int wpurple_fcntl(int socket, int command, ...) {
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
160
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
161 switch( command ) {
20239
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
162 case F_GETFL:
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
163 return 0;
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
164
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
165 case F_SETFL:
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
166 {
20239
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
167 va_list args;
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
168 int val;
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
169 int ret=0;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
170
20239
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
171 va_start(args, command);
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
172 val = va_arg(args, int);
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
173 va_end(args);
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
174
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
175 switch( val ) {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
176 case O_NONBLOCK:
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
177 {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
178 u_long imode=1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
179 ret = ioctlsocket(socket, FIONBIO, &imode);
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
180 break;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
181 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
182 case 0:
20239
ae122f419324 applied changes from 2762c6075c0dc52a96098c5478c5bf68cfd890a3
Luke Schierer <lschiere@pidgin.im>
parents: 19859
diff changeset
183 {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
184 u_long imode=0;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
185 ret = ioctlsocket(socket, FIONBIO, &imode);
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
186 break;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
187 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
188 default:
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
189 errno = EINVAL;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
190 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
191 }/*end switch*/
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
192 if( ret == SOCKET_ERROR ) {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
193 errno = WSAGetLastError();
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
194 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
195 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
196 return 0;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
197 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
198 default:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
199 purple_debug(PURPLE_DEBUG_WARNING, "wpurple", "wpurple_fcntl: Unsupported command\n");
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
200 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
201 }/*end switch*/
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
202 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
203
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
204 /* sys/ioctl.h */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
205 int wpurple_ioctl(int fd, int command, void* val) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
206 switch( command ) {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
207 case FIONBIO:
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
208 {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
209 if (ioctlsocket(fd, FIONBIO, (unsigned long *)val) == SOCKET_ERROR) {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
210 errno = WSAGetLastError();
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
211 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
212 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
213 return 0;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
214 }
11364
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
215 case SIOCGIFCONF:
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
216 {
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
217 INTERFACE_INFO InterfaceList[20];
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
218 unsigned long nBytesReturned;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
219 if (WSAIoctl(fd, SIO_GET_INTERFACE_LIST,
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
220 0, 0, &InterfaceList,
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
221 sizeof(InterfaceList), &nBytesReturned,
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
222 0, 0) == SOCKET_ERROR) {
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
223 errno = WSAGetLastError();
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
224 return -1;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
225 } else {
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
226 int i;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
227 struct ifconf *ifc = val;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
228 char *tmp = ifc->ifc_buf;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
229 int nNumInterfaces =
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
230 nBytesReturned / sizeof(INTERFACE_INFO);
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
231 for (i = 0; i < nNumInterfaces; i++) {
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
232 INTERFACE_INFO ii = InterfaceList[i];
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
233 struct ifreq *ifr = (struct ifreq *) tmp;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
234 struct sockaddr_in *sa = (struct sockaddr_in *) &ifr->ifr_addr;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
235
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
236 sa->sin_family = ii.iiAddress.AddressIn.sin_family;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
237 sa->sin_port = ii.iiAddress.AddressIn.sin_port;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
238 sa->sin_addr.s_addr = ii.iiAddress.AddressIn.sin_addr.s_addr;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
239 tmp += sizeof(struct ifreq);
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
240
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
241 /* Make sure that we can fit in the original buffer */
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
242 if (tmp >= (ifc->ifc_buf + ifc->ifc_len + sizeof(struct ifreq))) {
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
243 break;
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
244 }
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
245 }
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
246 /* Replace the length with the actually used length */
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
247 ifc->ifc_len = ifc->ifc_len - (ifc->ifc_buf - tmp);
12488
72878a4bf35a [gaim-migrate @ 14800]
Daniel Atallah <datallah@pidgin.im>
parents: 11543
diff changeset
248 return 0;
11364
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
249 }
d754cf40ec4b [gaim-migrate @ 13588]
Daniel Atallah <datallah@pidgin.im>
parents: 10601
diff changeset
250 }
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
251 default:
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
252 errno = EINVAL;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
253 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
254 }/*end switch*/
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
255 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
256
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
257 /* arpa/inet.h */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
258 int wpurple_inet_aton(const char *name, struct in_addr *addr) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
259 if((addr->s_addr = inet_addr(name)) == INADDR_NONE)
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
260 return 0;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
261 else
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
262 return 1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
263 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
264
14974
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
265 /* Thanks to GNU wget for this inet_ntop() implementation */
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
266 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
267 wpurple_inet_ntop (int af, const void *src, char *dst, socklen_t cnt)
14974
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
268 {
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
269 /* struct sockaddr can't accomodate struct sockaddr_in6. */
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
270 union {
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
271 struct sockaddr_in6 sin6;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
272 struct sockaddr_in sin;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
273 } sa;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
274 DWORD dstlen = cnt;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
275 size_t srcsize;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
276
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
277 ZeroMemory(&sa, sizeof(sa));
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
278 switch (af)
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
279 {
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
280 case AF_INET:
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
281 sa.sin.sin_family = AF_INET;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
282 sa.sin.sin_addr = *(struct in_addr *) src;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
283 srcsize = sizeof (sa.sin);
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
284 break;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
285 case AF_INET6:
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
286 sa.sin6.sin6_family = AF_INET6;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
287 sa.sin6.sin6_addr = *(struct in6_addr *) src;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
288 srcsize = sizeof (sa.sin6);
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
289 break;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
290 default:
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
291 abort ();
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
292 }
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
293
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
294 if (WSAAddressToString ((struct sockaddr *) &sa, srcsize, NULL, dst, &dstlen) != 0)
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
295 {
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
296 errno = WSAGetLastError();
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
297 return NULL;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
298 }
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
299 return (const char *) dst;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
300 }
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
301
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
302
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
303 /* netdb.h */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
304 struct hostent* wpurple_gethostbyname(const char *name) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
305 struct hostent *hp;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
306
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
307 if((hp = gethostbyname(name)) == NULL) {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
308 errno = WSAGetLastError();
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
309 return NULL;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
310 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
311 return hp;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
312 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
313
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
314 /* string.h */
21771
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
315 char* wpurple_strerror(int errornum) {
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
316 if (errornum > WSABASEERR) {
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
317 switch(errornum) {
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
318 case WSAECONNABORTED: /* 10053 */
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
319 g_snprintf(errbuf, sizeof(errbuf), _("Connection interrupted by other software on your computer."));
22641
c5e5a10e4799 I was wondering why the more sane error messges were never appearing... now I know. There is also a fix here that uses glib's internal rename stuff on recent versions because it is more robust than our win32 version.
Daniel Atallah <datallah@pidgin.im>
parents: 21771
diff changeset
320 break;
21771
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
321 case WSAECONNRESET: /* 10054 */
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
322 g_snprintf(errbuf, sizeof(errbuf), _("Remote host closed connection."));
22641
c5e5a10e4799 I was wondering why the more sane error messges were never appearing... now I know. There is also a fix here that uses glib's internal rename stuff on recent versions because it is more robust than our win32 version.
Daniel Atallah <datallah@pidgin.im>
parents: 21771
diff changeset
323 break;
21771
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
324 case WSAETIMEDOUT: /* 10060 */
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
325 g_snprintf(errbuf, sizeof(errbuf), _("Connection timed out."));
22641
c5e5a10e4799 I was wondering why the more sane error messges were never appearing... now I know. There is also a fix here that uses glib's internal rename stuff on recent versions because it is more robust than our win32 version.
Daniel Atallah <datallah@pidgin.im>
parents: 21771
diff changeset
326 break;
23883
222e2f637efd Fix running several Bonjour instances on the same machine.
Daniel Atallah <datallah@pidgin.im>
parents: 22871
diff changeset
327 case WSAECONNREFUSED: /* 10061 */
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
328 g_snprintf(errbuf, sizeof(errbuf), _("Connection refused."));
22641
c5e5a10e4799 I was wondering why the more sane error messges were never appearing... now I know. There is also a fix here that uses glib's internal rename stuff on recent versions because it is more robust than our win32 version.
Daniel Atallah <datallah@pidgin.im>
parents: 21771
diff changeset
329 break;
23883
222e2f637efd Fix running several Bonjour instances on the same machine.
Daniel Atallah <datallah@pidgin.im>
parents: 22871
diff changeset
330 case WSAEADDRINUSE: /* 10048 */
222e2f637efd Fix running several Bonjour instances on the same machine.
Daniel Atallah <datallah@pidgin.im>
parents: 22871
diff changeset
331 g_snprintf(errbuf, sizeof(errbuf), _("Address already in use."));
222e2f637efd Fix running several Bonjour instances on the same machine.
Daniel Atallah <datallah@pidgin.im>
parents: 22871
diff changeset
332 break;
21771
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
333 default:
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
334 g_snprintf(errbuf, sizeof(errbuf), "Windows socket error #%d", errornum);
21771
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
335 }
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
336 } else {
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
337 const char *tmp = g_strerror(errornum);
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
338 g_snprintf(errbuf, sizeof(errbuf), tmp);
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
339 }
21771
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
340 return errbuf;
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
341 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
342
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
343 /* unistd.h */
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
344
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
345 /*
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
346 * We need to figure out whether fd is a file or socket handle.
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
347 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
348 int wpurple_read(int fd, void *buf, unsigned int size) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
349 int ret;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
350
24843
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
351 if (fd < 0) {
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
352 errno = EBADF;
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
353 g_return_val_if_reached(-1);
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
354 }
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
355
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
356 if(wpurple_is_socket(fd)) {
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12749
diff changeset
357 if((ret = recv(fd, buf, size, 0)) == SOCKET_ERROR) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
358 errno = WSAGetLastError();
17666
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
359 if(errno == WSAEWOULDBLOCK || errno == WSAEINPROGRESS)
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12749
diff changeset
360 errno = EAGAIN;
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
361 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
362 }
11543
e7218de0b500 [gaim-migrate @ 13798]
Daniel Atallah <datallah@pidgin.im>
parents: 11431
diff changeset
363 #if 0
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
364 else if( ret == 0 ) {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
365 /* connection has been gracefully closed */
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
366 errno = WSAENOTCONN;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
367 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
368 }
11543
e7218de0b500 [gaim-migrate @ 13798]
Daniel Atallah <datallah@pidgin.im>
parents: 11431
diff changeset
369 #endif
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
370 else {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
371 /* success reading socket */
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
372 return ret;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
373 }
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12749
diff changeset
374 } else {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
375 /* fd is not a socket handle.. pass it off to read */
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
376 return _read(fd, buf, size);
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
377 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
378 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
379
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
380 int wpurple_send(int fd, const void *buf, unsigned int size, int flags) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
381 int ret;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
382
13780
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
383 ret = send(fd, buf, size, flags);
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
384
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
385 if (ret == SOCKET_ERROR) {
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
386 errno = WSAGetLastError();
17666
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
387 if(errno == WSAEWOULDBLOCK || errno == WSAEINPROGRESS)
13780
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
388 errno = EAGAIN;
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
389 return -1;
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
390 }
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
391 return ret;
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
392 }
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
393
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
394 int wpurple_write(int fd, const void *buf, unsigned int size) {
13780
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
395
24843
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
396 if (fd < 0) {
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
397 errno = EBADF;
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
398 g_return_val_if_reached(-1);
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
399 }
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
400
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
401 if(wpurple_is_socket(fd))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
402 return wpurple_send(fd, buf, size, 0);
13780
f642a0729daa [gaim-migrate @ 16190]
Daniel Atallah <datallah@pidgin.im>
parents: 13371
diff changeset
403 else
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
404 return _write(fd, buf, size);
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
405 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
406
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
407 int wpurple_recv(int fd, void *buf, size_t len, int flags) {
12749
704b51d5007a [gaim-migrate @ 15096]
Daniel Atallah <datallah@pidgin.im>
parents: 12488
diff changeset
408 int ret;
704b51d5007a [gaim-migrate @ 15096]
Daniel Atallah <datallah@pidgin.im>
parents: 12488
diff changeset
409
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12749
diff changeset
410 if((ret = recv(fd, buf, len, flags)) == SOCKET_ERROR) {
12749
704b51d5007a [gaim-migrate @ 15096]
Daniel Atallah <datallah@pidgin.im>
parents: 12488
diff changeset
411 errno = WSAGetLastError();
17666
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
412 if(errno == WSAEWOULDBLOCK || errno == WSAEINPROGRESS)
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 12749
diff changeset
413 errno = EAGAIN;
12749
704b51d5007a [gaim-migrate @ 15096]
Daniel Atallah <datallah@pidgin.im>
parents: 12488
diff changeset
414 return -1;
704b51d5007a [gaim-migrate @ 15096]
Daniel Atallah <datallah@pidgin.im>
parents: 12488
diff changeset
415 } else {
704b51d5007a [gaim-migrate @ 15096]
Daniel Atallah <datallah@pidgin.im>
parents: 12488
diff changeset
416 return ret;
704b51d5007a [gaim-migrate @ 15096]
Daniel Atallah <datallah@pidgin.im>
parents: 12488
diff changeset
417 }
704b51d5007a [gaim-migrate @ 15096]
Daniel Atallah <datallah@pidgin.im>
parents: 12488
diff changeset
418 }
704b51d5007a [gaim-migrate @ 15096]
Daniel Atallah <datallah@pidgin.im>
parents: 12488
diff changeset
419
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
420 int wpurple_close(int fd) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
421 int ret;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
422
24843
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
423 if (fd < 0) {
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
424 errno = EBADF;
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
425 g_return_val_if_reached(-1);
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
426 }
ab68c6d3c247 (Slightly modified) patch from fqueze to avoid exceptions with newer win32 CRTs.
Daniel Atallah <datallah@pidgin.im>
parents: 23883
diff changeset
427
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
428 if( wpurple_is_socket(fd) ) {
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
429 if( (ret = closesocket(fd)) == SOCKET_ERROR ) {
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
430 errno = WSAGetLastError();
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
431 return -1;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
432 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
433 else
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
434 return 0;
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
435 }
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
436 else
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
437 return _close(fd);
3712
d926a65b5f89 [gaim-migrate @ 3845]
Herman Bloggs <herman@bluedigits.com>
parents:
diff changeset
438 }
3777
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
439
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
440 int wpurple_gethostname(char *name, size_t size) {
8244
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
441 if(gethostname(name, size) == SOCKET_ERROR) {
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
442 errno = WSAGetLastError();
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
443 return -1;
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
444 }
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
445 return 0;
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
446 }
014ff38feea9 [gaim-migrate @ 8967]
Herman Bloggs <herman@bluedigits.com>
parents: 6425
diff changeset
447
3777
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
448 /* sys/time.h */
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
449
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
450 int wpurple_gettimeofday(struct timeval *p, struct timezone *z) {
3777
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
451 int res = 0;
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
452 struct _timeb timebuffer;
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
453
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
454 if (z != 0) {
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
455 _tzset();
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
456 z->tz_minuteswest = _timezone/60;
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
457 z->tz_dsttime = _daylight;
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
458 }
17666
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
459
3777
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
460 if (p != 0) {
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
461 _ftime(&timebuffer);
21771
0df7285a6164 Better error messages for common Winsock errors. This was Kevin's wonderful idea.
Daniel Atallah <datallah@pidgin.im>
parents: 21635
diff changeset
462 p->tv_sec = timebuffer.time; /* seconds since 1-1-1970 */
3777
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
463 p->tv_usec = timebuffer.millitm*1000; /* microseconds */
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
464 }
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
465
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
466 return res;
a3f8adc4c3e0 [gaim-migrate @ 3917]
Herman Bloggs <herman@bluedigits.com>
parents: 3712
diff changeset
467 }
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
468
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
469 /* stdio.h */
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
470
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
471 int wpurple_rename (const char *oldname, const char *newname) {
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
472
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
473 #if GLIB_CHECK_VERSION(2,8,5)
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
474
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
475 return g_rename(oldname, newname);
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
476
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
477 #else
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
478
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
479 /* This is a ugly, but we still compile with 2.6.10 but use newer runtimes */
10601
84245a6eba0e [gaim-migrate @ 12028]
Daniel Atallah <datallah@pidgin.im>
parents: 10589
diff changeset
480 struct stat oldstat, newstat;
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
481
22641
c5e5a10e4799 I was wondering why the more sane error messges were never appearing... now I know. There is also a fix here that uses glib's internal rename stuff on recent versions because it is more robust than our win32 version.
Daniel Atallah <datallah@pidgin.im>
parents: 21771
diff changeset
482 /* As of Glib 2.8.5, g_rename() uses MoveFileEx() with MOVEFILE_REPLACE_EXISTING to behave more sanely */
c5e5a10e4799 I was wondering why the more sane error messges were never appearing... now I know. There is also a fix here that uses glib's internal rename stuff on recent versions because it is more robust than our win32 version.
Daniel Atallah <datallah@pidgin.im>
parents: 21771
diff changeset
483 if (glib_check_version(2, 8, 5) == NULL) {
c5e5a10e4799 I was wondering why the more sane error messges were never appearing... now I know. There is also a fix here that uses glib's internal rename stuff on recent versions because it is more robust than our win32 version.
Daniel Atallah <datallah@pidgin.im>
parents: 21771
diff changeset
484 return g_rename(oldname, newname);
c5e5a10e4799 I was wondering why the more sane error messges were never appearing... now I know. There is also a fix here that uses glib's internal rename stuff on recent versions because it is more robust than our win32 version.
Daniel Atallah <datallah@pidgin.im>
parents: 21771
diff changeset
485 }
c5e5a10e4799 I was wondering why the more sane error messges were never appearing... now I know. There is also a fix here that uses glib's internal rename stuff on recent versions because it is more robust than our win32 version.
Daniel Atallah <datallah@pidgin.im>
parents: 21771
diff changeset
486
10601
84245a6eba0e [gaim-migrate @ 12028]
Daniel Atallah <datallah@pidgin.im>
parents: 10589
diff changeset
487 if(g_stat(oldname, &oldstat) == 0) {
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
488 /* newname exists */
10601
84245a6eba0e [gaim-migrate @ 12028]
Daniel Atallah <datallah@pidgin.im>
parents: 10589
diff changeset
489 if(g_stat(newname, &newstat) == 0) {
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
490 /* oldname is a dir */
18553
a65fadc62b15 Fix some S_ISDIR calls to work with Visual Studio. --rlaager
Nick Hebner <hebnern@gmail.com>
parents: 17666
diff changeset
491 if(S_ISDIR(oldstat.st_mode)) {
a65fadc62b15 Fix some S_ISDIR calls to work with Visual Studio. --rlaager
Nick Hebner <hebnern@gmail.com>
parents: 17666
diff changeset
492 if(!S_ISDIR(newstat.st_mode)) {
10601
84245a6eba0e [gaim-migrate @ 12028]
Daniel Atallah <datallah@pidgin.im>
parents: 10589
diff changeset
493 return g_rename(oldname, newname);
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
494 }
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
495 /* newname is a dir */
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
496 else {
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
497 /* This is not quite right.. If newname is empty and
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
498 is not a sub dir of oldname, newname should be
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
499 deleted and oldname should be renamed.
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
500 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
501 purple_debug(PURPLE_DEBUG_WARNING, "wpurple", "wpurple_rename does not behave here as it should\n");
10601
84245a6eba0e [gaim-migrate @ 12028]
Daniel Atallah <datallah@pidgin.im>
parents: 10589
diff changeset
502 return g_rename(oldname, newname);
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
503 }
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
504 }
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
505 /* oldname is not a dir */
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
506 else {
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
507 /* newname is a dir */
18553
a65fadc62b15 Fix some S_ISDIR calls to work with Visual Studio. --rlaager
Nick Hebner <hebnern@gmail.com>
parents: 17666
diff changeset
508 if(S_ISDIR(newstat.st_mode)) {
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
509 errno = EISDIR;
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
510 return -1;
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
511 }
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
512 /* newname is not a dir */
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
513 else {
10589
4e10236e06d4 [gaim-migrate @ 11994]
Daniel Atallah <datallah@pidgin.im>
parents: 9611
diff changeset
514 g_remove(newname);
10601
84245a6eba0e [gaim-migrate @ 12028]
Daniel Atallah <datallah@pidgin.im>
parents: 10589
diff changeset
515 return g_rename(oldname, newname);
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
516 }
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
517 }
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
518 }
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
519 /* newname doesn't exist */
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
520 else
10601
84245a6eba0e [gaim-migrate @ 12028]
Daniel Atallah <datallah@pidgin.im>
parents: 10589
diff changeset
521 return g_rename(oldname, newname);
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
522 }
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
523 else {
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
524 /* oldname doesn't exist */
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
525 errno = ENOENT;
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
526 return -1;
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
527 }
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
528
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
529 #endif
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
530
4905
1464e05926f0 [gaim-migrate @ 5239]
Herman Bloggs <herman@bluedigits.com>
parents: 4193
diff changeset
531 }
5113
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
532
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
533 /* time.h */
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
534
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
535 struct tm * wpurple_localtime_r (const time_t *time, struct tm *resultp) {
5113
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
536 struct tm* tmptm;
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
537
5474
eec4dad3e035 [gaim-migrate @ 5868]
Herman Bloggs <herman@bluedigits.com>
parents: 5113
diff changeset
538 if(!time)
5913
4d016c00bb36 [gaim-migrate @ 6345]
Herman Bloggs <herman@bluedigits.com>
parents: 5474
diff changeset
539 return NULL;
5113
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
540 tmptm = localtime(time);
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
541 if(resultp && tmptm)
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
542 return memcpy(resultp, tmptm, sizeof(struct tm));
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
543 else
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
544 return NULL;
8e545faf3d80 [gaim-migrate @ 5476]
Herman Bloggs <herman@bluedigits.com>
parents: 5084
diff changeset
545 }
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
546
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
547 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
548 * Used by purple_utf8_strftime() by way of purple_internal_strftime()
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
549 * in src/util.c
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
550 *
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
551 * Code derived from PostgreSQL src/timezone/pgtz.c:
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
552 * http://developer.postgresql.org/cvsweb.cgi/pgsql/src/timezone/pgtz.c
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
553 */
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
554
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
555 /*
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
556 PostgreSQL Database Management System
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
557 (formerly known as Postgres, then as Postgres95)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
558
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
559 Portions Copyright (c) 1996-2005, PostgreSQL Global Development Group
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
560
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
561 Portions Copyright (c) 1994, The Regents of the University of California
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
562
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
563 Permission to use, copy, modify, and distribute this software and its
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
564 documentation for any purpose, without fee, and without a written agreement
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
565 is hereby granted, provided that the above copyright notice and this
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
566 paragraph and the following two paragraphs appear in all copies.
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
567
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
568 IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
569 DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
570 LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
571 DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
572 POSSIBILITY OF SUCH DAMAGE.
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
573
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
574 THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
575 INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
576 AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
577 ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
578 PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
579
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
580 */
13341
7aea080ea72d [gaim-migrate @ 15710]
Daniel Atallah <datallah@pidgin.im>
parents: 13339
diff changeset
581 static struct
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
582 {
13341
7aea080ea72d [gaim-migrate @ 15710]
Daniel Atallah <datallah@pidgin.im>
parents: 13339
diff changeset
583 char *wstd; /* Windows name of standard timezone */
7aea080ea72d [gaim-migrate @ 15710]
Daniel Atallah <datallah@pidgin.im>
parents: 13339
diff changeset
584 char *wdst; /* Windows name of daylight timezone */
7aea080ea72d [gaim-migrate @ 15710]
Daniel Atallah <datallah@pidgin.im>
parents: 13339
diff changeset
585 char *ustd; /* Unix name of standard timezone */
7aea080ea72d [gaim-migrate @ 15710]
Daniel Atallah <datallah@pidgin.im>
parents: 13339
diff changeset
586 char *udst; /* Unix name of daylight timezone */
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
587 } win32_tzmap[] =
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
588 {
13339
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
589 {
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
590 "", "",
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
591 "", "",
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
592 },
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
593 /*
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
594 * This list was built from the contents of the registry at
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
595 * "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
596 * on Windows XP Professional SP1
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
597 */
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
598 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
599 "Afghanistan Standard Time", "Afghanistan Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
600 "AFT", "AFT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
601 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
602 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
603 "Alaskan Standard Time", "Alaskan Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
604 "AKST", "AKDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
605 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
606 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
607 "Arab Standard Time", "Arab Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
608 "AST", "AST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
609 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
610 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
611 "Arabian Standard Time", "Arabian Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
612 "GST", "GST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
613 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
614 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
615 "Arabic Standard Time", "Arabic Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
616 "AST", "ADT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
617 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
618 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
619 "Atlantic Standard Time", "Atlantic Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
620 "AST", "ADT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
621 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
622 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
623 "AUS Central Standard Time", "AUS Central Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
624 "CST", "CST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
625 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
626 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
627 "AUS Eastern Standard Time", "AUS Eastern Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
628 "EST", "EST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
629 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
630 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
631 "Azores Standard Time", "Azores Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
632 "AZOT", "AZOST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
633 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
634 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
635 "Canada Central Standard Time", "Canada Central Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
636 "CST", "MDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
637 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
638 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
639 "Cape Verde Standard Time", "Cape Verde Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
640 "CVT", "CVST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
641 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
642 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
643 "Caucasus Standard Time", "Caucasus Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
644 "AZT", "AZST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
645 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
646 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
647 "Cen. Australia Standard Time", "Cen. Australia Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
648 "CST", "CST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
649 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
650 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
651 "Central America Standard Time", "Central America Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
652 "CST", "CDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
653 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
654 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
655 "Central Asia Standard Time", "Central Asia Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
656 "BDT", "BDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
657 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
658 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
659 "Central Europe Standard Time", "Central Europe Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
660 "CET", "CEST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
661 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
662 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
663 "Central European Standard Time", "Central European Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
664 "CET", "CEST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
665 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
666 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
667 "Central Pacific Standard Time", "Central Pacific Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
668 "NCT", "NCST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
669 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
670 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
671 "Central Standard Time", "Central Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
672 "CST", "CDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
673 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
674 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
675 "China Standard Time", "China Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
676 "HKT", "HKST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
677 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
678 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
679 "Dateline Standard Time", "Dateline Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
680 "GMT+12", "GMT+12"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
681 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
682 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
683 "E. Africa Standard Time", "E. Africa Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
684 "EAT", "EAT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
685 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
686 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
687 "E. Australia Standard Time", "E. Australia Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
688 "EST", "EST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
689 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
690 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
691 "E. Europe Standard Time", "E. Europe Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
692 "EET", "EEST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
693 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
694 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
695 "E. South America Standard Time", "E. South America Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
696 "BRT", "BRST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
697 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
698 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
699 "Eastern Standard Time", "Eastern Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
700 "EST", "EDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
701 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
702 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
703 "Egypt Standard Time", "Egypt Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
704 "EET", "EEST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
705 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
706 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
707 "Ekaterinburg Standard Time", "Ekaterinburg Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
708 "YEKT", "YEKST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
709 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
710 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
711 "Fiji Standard Time", "Fiji Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
712 "FJT", "FJST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
713 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
714 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
715 "FLE Standard Time", "FLE Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
716 "EET", "EEST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
717 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
718 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
719 "GMT Standard Time", "GMT Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
720 "GMT", "IST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
721 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
722 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
723 "Greenland Standard Time", "Greenland Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
724 "WGT", "WGST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
725 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
726 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
727 "Greenwich Standard Time", "Greenwich Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
728 "WET", "WEST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
729 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
730 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
731 "GTB Standard Time", "GTB Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
732 "EET", "EEST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
733 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
734 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
735 "Hawaiian Standard Time", "Hawaiian Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
736 "HST", "HPT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
737 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
738 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
739 "India Standard Time", "India Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
740 "IST", "IST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
741 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
742 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
743 "Iran Standard Time", "Iran Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
744 "IRST", "IRDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
745 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
746 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
747 "Jerusalem Standard Time", "Jerusalem Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
748 "IST", "IDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
749 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
750 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
751 "Korea Standard Time", "Korea Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
752 "KST", "KDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
753 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
754 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
755 "Mexico Standard Time", "Mexico Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
756 "CST", "CDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
757 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
758 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
759 "Mexico Standard Time", "Mexico Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
760 "BOT", "BOST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
761 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
762 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
763 "Mid-Atlantic Standard Time", "Mid-Atlantic Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
764 "GST", "GST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
765 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
766 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
767 "Mountain Standard Time", "Mountain Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
768 "MST", "MDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
769 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
770 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
771 "Myanmar Standard Time", "Myanmar Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
772 "MMT", "MMT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
773 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
774 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
775 "N. Central Asia Standard Time", "N. Central Asia Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
776 "ALMT", "ALMST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
777 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
778 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
779 "Nepal Standard Time", "Nepal Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
780 "NPT", "NPT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
781 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
782 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
783 "New Zealand Standard Time", "New Zealand Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
784 "NZST", "NZDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
785 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
786 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
787 "Newfoundland Standard Time", "Newfoundland Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
788 "NST", "NDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
789 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
790 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
791 "North Asia East Standard Time", "North Asia East Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
792 "IRKT", "IRKST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
793 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
794 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
795 "North Asia Standard Time", "North Asia Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
796 "KRAT", "KRAST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
797 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
798 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
799 "Pacific SA Standard Time", "Pacific SA Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
800 "CLT", "CLST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
801 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
802 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
803 "Pacific Standard Time", "Pacific Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
804 "PST", "PDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
805 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
806 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
807 "Romance Standard Time", "Romance Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
808 "CET", "CEST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
809 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
810 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
811 "Russian Standard Time", "Russian Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
812 "MSK", "MSD"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
813 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
814 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
815 "SA Eastern Standard Time", "SA Eastern Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
816 "ART", "ARST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
817 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
818 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
819 "SA Pacific Standard Time", "SA Pacific Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
820 "COT", "COST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
821 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
822 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
823 "SA Western Standard Time", "SA Western Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
824 "VET", "VET"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
825 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
826 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
827 "Samoa Standard Time", "Samoa Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
828 "SST", "NDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
829 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
830 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
831 "SE Asia Standard Time", "SE Asia Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
832 "ICT", "ICT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
833 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
834 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
835 "Malay Peninsula Standard Time", "Malay Peninsula Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
836 "MYT", "MALST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
837 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
838 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
839 "South Africa Standard Time", "South Africa Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
840 "CAT", "CAT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
841 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
842 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
843 "Sri Lanka Standard Time", "Sri Lanka Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
844 "LKT", "IST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
845 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
846 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
847 "Taipei Standard Time", "Taipei Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
848 "CST", "CDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
849 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
850 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
851 "Tasmania Standard Time", "Tasmania Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
852 "EST", "EST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
853 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
854 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
855 "Tokyo Standard Time", "Tokyo Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
856 "JST", "JDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
857 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
858 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
859 "Tonga Standard Time", "Tonga Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
860 "TOT", "TOST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
861 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
862 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
863 "US Eastern Standard Time", "US Eastern Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
864 "EST", "EDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
865 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
866 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
867 "US Mountain Standard Time", "US Mountain Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
868 "MST", "MDT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
869 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
870 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
871 "Vladivostok Standard Time", "Vladivostok Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
872 "VLAT", "VLAST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
873 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
874 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
875 "W. Australia Standard Time", "W. Australia Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
876 "WST", "WST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
877 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
878
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
879 /* Not mapped in PostgreSQL.
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
880 *
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
881 * I mapped this based on the following information... -- rlaager
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
882 * $ cd /usr/share/zoneinfo/Africa
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
883 * $ for i in * ; do echo `TZ=Africa/$i date +"%z %Z"` $i ; done | grep +0100
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
884 * +0100 CET Algiers
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
885 * +0100 WAT Bangui
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
886 * +0100 WAT Brazzaville
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
887 * +0100 CET Ceuta
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
888 * +0100 WAT Douala
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
889 * +0100 WAT Kinshasa
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
890 * +0100 WAT Lagos
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
891 * +0100 WAT Libreville
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
892 * +0100 WAT Luanda
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
893 * +0100 WAT Malabo
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
894 * +0100 WAT Ndjamena
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
895 * +0100 WAT Niamey
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
896 * +0100 WAT Porto-Novo
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
897 * +0100 CET Tunis
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
898 **/
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
899 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
900 "W. Central Africa Standard Time", "W. Central Africa Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
901 "WAT", "WAT"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
902 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
903
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
904 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
905 "W. Europe Standard Time", "W. Europe Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
906 "CET", "CEST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
907 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
908 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
909 "West Asia Standard Time", "West Asia Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
910 "PKT", "PKST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
911 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
912 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
913 "West Pacific Standard Time", "West Pacific Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
914 "ChST", "ChST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
915 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
916 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
917 "Yakutsk Standard Time", "Yakutsk Daylight Time",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
918 "YAKT", "YAKST"
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
919 },
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
920 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
921 NULL, NULL,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
922 NULL, NULL
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
923 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
924 };
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
925
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
926 const char *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
927 wpurple_get_timezone_abbreviation(const struct tm *tm)
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
928 {
13371
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
929 int i;
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
930 char tzname[128];
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
931 char localtzname[256];
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
932 HKEY rootKey;
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
933 int idx;
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
934
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
935 if (!tm)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
936 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
937 purple_debug_warning("wpurple", "could not determine current date/time: localtime failed\n");
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
938 return "";
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
939 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
940
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
941 if (strftime(tzname, sizeof(tzname) - 1, "%Z", tm) == 0)
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
942 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
943 purple_debug_error("wpurple", "timezone name is too long for the buffer\n");
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
944 return "";
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
945 }
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
946
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
947 for (i = 0; win32_tzmap[i].wstd != NULL; i++)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
948 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
949 if (strcmp(tzname, win32_tzmap[i].wstd) == 0)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
950 {
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
951 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
952 purple_debug_info("wpurple", "TZ \"%s\" matches Windows timezone \"%s\"\n",
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
953 win32_tzmap[i].ustd, tzname);
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
954 #endif
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
955 /* Cache the Result */
13371
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
956 if (i > 0) {
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
957 if (win32_tzmap[0].wstd[0] != '\0')
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
958 g_free(win32_tzmap[0].wstd);
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
959 win32_tzmap[0].wstd = g_strdup(tzname);
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
960 win32_tzmap[0].ustd = win32_tzmap[i].ustd;
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
961 }
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
962
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
963 return win32_tzmap[i].ustd;
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
964 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
965 if (strcmp(tzname, win32_tzmap[i].wdst) == 0)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
966 {
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
967 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
968 purple_debug_info("wpurple", "TZ \"%s\" matches Windows timezone \"%s\"\n",
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
969 win32_tzmap[i].udst, tzname);
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
970 #endif
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
971 /* Cache the Result */
13371
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
972 if (i > 0) {
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
973 if (win32_tzmap[0].wdst[0] != '\0')
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
974 g_free(win32_tzmap[0].wdst);
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
975 win32_tzmap[0].wdst = g_strdup(tzname);
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
976 win32_tzmap[0].udst = win32_tzmap[i].udst;
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
977 }
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
978
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
979 return win32_tzmap[i].udst;
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
980 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
981 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
982
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
983 /*
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
984 * Localized Windows versions return localized names for the timezone.
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
985 * Scan the registry to find the English name, and then try matching
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
986 * against our table again.
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
987 */
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
988 memset(localtzname, 0, sizeof(localtzname));
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
989 if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
990 "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Time Zones",
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
991 0,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
992 KEY_READ,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
993 &rootKey) != ERROR_SUCCESS)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
994 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
995 purple_debug_warning("wpurple", "could not open registry key to identify Windows timezone: %i\n", (int) GetLastError());
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
996 return "";
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
997 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
998
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
999 for (idx = 0;; idx++)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1000 {
13371
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
1001 char keyname[256];
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
1002 char zonename[256];
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
1003 DWORD namesize;
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
1004 FILETIME lastwrite;
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
1005 HKEY key;
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
1006 LONG r;
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1007
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1008 memset(keyname, 0, sizeof(keyname));
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1009 namesize = sizeof(keyname);
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1010 if ((r = RegEnumKeyEx(rootKey,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1011 idx,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1012 keyname,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1013 &namesize,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1014 NULL,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1015 NULL,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1016 NULL,
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1017 &lastwrite)) != ERROR_SUCCESS)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1018 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1019 if (r == ERROR_NO_MORE_ITEMS)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1020 break;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1021 purple_debug_warning("wpurple", "could not enumerate registry subkeys to identify Windows timezone: %i\n", (int) r);
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1022 break;
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1023 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1024
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1025 if ((r = RegOpenKeyEx(rootKey, keyname, 0, KEY_READ, &key)) != ERROR_SUCCESS)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1026 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1027 purple_debug_warning("wpurple", "could not open registry subkey to identify Windows timezone: %i\n", (int) r);
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1028 break;
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1029 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1030
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1031 memset(zonename, 0, sizeof(zonename));
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1032 namesize = sizeof(zonename);
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1033 if ((r = RegQueryValueEx(key, "Std", NULL, NULL, zonename, &namesize)) != ERROR_SUCCESS)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1034 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1035 purple_debug_warning("wpurple", "could not query value for 'std' to identify Windows timezone: %i\n", (int) r);
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1036 RegCloseKey(key);
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1037 break;
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1038 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1039 if (strcmp(tzname, zonename) == 0)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1040 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1041 /* Matched zone */
13371
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
1042 strcpy(localtzname, keyname);
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1043 RegCloseKey(key);
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1044 break;
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1045 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1046 memset(zonename, 0, sizeof(zonename));
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1047 namesize = sizeof(zonename);
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1048 if ((r = RegQueryValueEx(key, "Dlt", NULL, NULL, zonename, &namesize)) != ERROR_SUCCESS)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1049 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1050 purple_debug_warning("wpurple", "could not query value for 'dlt' to identify Windows timezone: %i\n", (int) r);
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1051 RegCloseKey(key);
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1052 break;
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1053 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1054 if (strcmp(tzname, zonename) == 0)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1055 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1056 /* Matched DST zone */
13371
b8018658174e [gaim-migrate @ 15743]
Daniel Atallah <datallah@pidgin.im>
parents: 13363
diff changeset
1057 strcpy(localtzname, keyname);
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1058 RegCloseKey(key);
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1059 break;
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1060 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1061
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1062 RegCloseKey(key);
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1063 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1064
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1065 RegCloseKey(rootKey);
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1066
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1067 if (localtzname[0])
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1068 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1069 /* Found a localized name, so scan for that one too */
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1070 for (i = 0; win32_tzmap[i].wstd != NULL; i++)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1071 {
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1072 if (strcmp(localtzname, win32_tzmap[i].wstd) == 0)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1073 {
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
1074 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1075 purple_debug_info("wpurple", "TZ \"%s\" matches localized Windows timezone \"%s\" (\"%s\")\n",
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1076 win32_tzmap[i].ustd, tzname, localtzname);
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
1077 #endif
13339
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1078 /* Cache the Result */
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1079 if (win32_tzmap[0].wstd[0] != '\0')
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1080 g_free(win32_tzmap[0].wstd);
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1081 win32_tzmap[0].wstd = g_strdup(tzname);
13341
7aea080ea72d [gaim-migrate @ 15710]
Daniel Atallah <datallah@pidgin.im>
parents: 13339
diff changeset
1082 win32_tzmap[0].ustd = win32_tzmap[i].ustd;
13339
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1083
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1084 return win32_tzmap[i].ustd;
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1085 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1086 if (strcmp(localtzname, win32_tzmap[i].wdst) == 0)
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1087 {
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
1088 #if 0
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1089 purple_debug_info("wpurple", "TZ \"%s\" matches localized Windows timezone \"%s\" (\"%s\")\n",
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1090 win32_tzmap[i].udst, tzname, localtzname);
13363
d64e626254cc [gaim-migrate @ 15735]
Richard Laager <rlaager@pidgin.im>
parents: 13341
diff changeset
1091 #endif
13339
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1092 /* Cache the Result */
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1093 if (win32_tzmap[0].wdst[0] != '\0')
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1094 g_free(win32_tzmap[0].wdst);
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1095
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1096 win32_tzmap[0].wdst = g_strdup(tzname);
13341
7aea080ea72d [gaim-migrate @ 15710]
Daniel Atallah <datallah@pidgin.im>
parents: 13339
diff changeset
1097 win32_tzmap[0].udst = win32_tzmap[i].udst;
13339
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1098
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1099 return win32_tzmap[i].udst;
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1100 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1101 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1102 }
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1103
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1104 purple_debug_warning("wpurple", "could not find a match for Windows timezone \"%s\"\n", tzname);
13334
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1105 return "";
d0d48650f114 [gaim-migrate @ 15703]
Richard Laager <rlaager@pidgin.im>
parents: 13201
diff changeset
1106 }
13339
781d47b2636c [gaim-migrate @ 15708]
Richard Laager <rlaager@pidgin.im>
parents: 13334
diff changeset
1107
14974
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1108 /**
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1109 * g_access:
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1110 * @filename: a pathname in the GLib file name encoding (UTF-8 on Windows)
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1111 * @mode: as in access()
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1112 *
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1113 * A wrapper for the POSIX access() function. This function is used to
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1114 * test a pathname for one or several of read, write or execute
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1115 * permissions, or just existence. On Windows, the underlying access()
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1116 * function in the C library only checks the READONLY attribute, and
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1117 * does not look at the ACL at all. Software that needs to handle file
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1118 * permissions on Windows more exactly should use the Win32 API.
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1119 *
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1120 * See the C library manual for more details about access().
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1121 *
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1122 * Returns: zero if the pathname refers to an existing file system
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1123 * object that has all the tested permissions, or -1 otherwise or on
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1124 * error.
17666
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
1125 *
14974
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1126 * Since: 2.8
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1127 */
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1128 int
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1129 wpurple_g_access (const gchar *filename,
14974
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1130 int mode)
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1131 {
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
1132 #if GLIB_CHECK_VERSION(2,8,0)
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
1133
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
1134 return g_access(filename, mode);
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
1135
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
1136 #else
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
1137
14974
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1138 if (G_WIN32_HAVE_WIDECHAR_API ())
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1139 {
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1140 wchar_t *wfilename = g_utf8_to_utf16 (filename, -1, NULL, NULL, NULL);
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1141 int retval;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1142 int save_errno;
17666
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
1143
14974
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1144 if (wfilename == NULL)
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1145 {
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1146 errno = EINVAL;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1147 return -1;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1148 }
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1149
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1150 retval = _waccess (wfilename, mode);
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1151 save_errno = errno;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1152
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1153 g_free (wfilename);
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1154
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1155 errno = save_errno;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1156 return retval;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1157 }
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1158 else
17666
9c32c365b852 Pretend that WSAEINPROGRESS is EAGAIN (for our purposes, I think they are equivalent). I think this might help #485. References #485.
Daniel Atallah <datallah@pidgin.im>
parents: 15884
diff changeset
1159 {
14974
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1160 gchar *cp_filename = g_locale_from_utf8 (filename, -1, NULL, NULL, NULL);
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1161 int retval;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1162 int save_errno;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1163
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1164 if (cp_filename == NULL)
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1165 {
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1166 errno = EINVAL;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1167 return -1;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1168 }
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1169
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1170 retval = access (cp_filename, mode);
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1171 save_errno = errno;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1172
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1173 g_free (cp_filename);
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1174
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1175 errno = save_errno;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1176 return retval;
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1177 }
22871
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
1178
a5ba9f9d340a Use g_snprintf() instead of snprintf(), which isn't really available on
Daniel Atallah <datallah@pidgin.im>
parents: 22641
diff changeset
1179 #endif
14974
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1180 }
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1181
8180f0f2e20c [gaim-migrate @ 17684]
Daniel Atallah <datallah@pidgin.im>
parents: 14286
diff changeset
1182

mercurial