Changeset 8e419cb
- Timestamp:
- 2006-01-10T21:35:08Z (19 years ago)
- Branches:
- master
- Children:
- a4dc9f7
- Parents:
- 3e91c3e (diff), dd8d4c5 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - Files:
-
- 2 added
- 39 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
Makefile
r3e91c3e r8e419cb 10 10 11 11 # Program variables 12 objects = account.o bitlbee.o commands.o crypting.o help.o ini.o irc.o nick.o query.o set.o url.o user.o storage_text.o storage.o12 objects = account.o bitlbee.o commands.o crypting.o help.o ini.o irc.o nick.o query.o set.o storage.o storage_text.o url.o user.o util.o 13 13 subdirs = protocols 14 14 -
bitlbee.c
r3e91c3e r8e419cb 37 37 size_t size = sizeof( struct sockaddr_in ); 38 38 struct sockaddr_in conn_info; 39 int new_socket = accept( global.listen_socket, (struct sockaddr *) &conn_info, 40 &size ); 41 42 log_message( LOGLVL_INFO, "Creating new connection with fd %d.", new_socket ); 43 irc_new( new_socket ); 44 39 int new_socket = accept( global.listen_socket, (struct sockaddr *) &conn_info, &size ); 40 pid_t client_pid = 0; 41 42 if( global.conf->runmode == RUNMODE_FORKDAEMON ) 43 client_pid = fork(); 44 45 if( client_pid == 0 ) 46 { 47 log_message( LOGLVL_INFO, "Creating new connection with fd %d.", new_socket ); 48 irc_new( new_socket ); 49 50 if( global.conf->runmode == RUNMODE_FORKDAEMON ) 51 { 52 /* Close the listening socket, we're a client. */ 53 close( global.listen_socket ); 54 g_source_remove( global.listen_watch_source_id ); 55 } 56 } 57 else 58 { 59 /* We don't need this one, only the client does. */ 60 close( new_socket ); 61 62 /* Or maybe we didn't even get a child process... */ 63 if( client_pid == -1 ) 64 log_message( LOGLVL_ERROR, "Failed to fork() subprocess for client: %s", strerror( errno ) ); 65 } 66 45 67 return TRUE; 46 68 } … … 50 72 int bitlbee_daemon_init() 51 73 { 74 #ifdef IPV6 75 struct sockaddr_in6 listen_addr; 76 #else 52 77 struct sockaddr_in listen_addr; 78 #endif 53 79 int i; 54 80 GIOChannel *ch; 55 81 56 global.listen_socket = socket( AF_INET, SOCK_STREAM, 0 ); 82 log_link( LOGLVL_ERROR, LOGOUTPUT_SYSLOG ); 83 log_link( LOGLVL_WARNING, LOGOUTPUT_SYSLOG ); 84 85 global.listen_socket = socket( AF_INETx, SOCK_STREAM, 0 ); 57 86 if( global.listen_socket == -1 ) 58 87 { … … 60 89 return( -1 ); 61 90 } 62 listen_addr.sin_family = AF_INET; 91 92 #ifdef IPV6 93 listen_addr.sin6_family = AF_INETx; 94 listen_addr.sin6_port = htons( global.conf->port ); 95 i = inet_pton( AF_INETx, ipv6_wrap( global.conf->iface ), &listen_addr.sin6_addr ); 96 #else 97 listen_addr.sin_family = AF_INETx; 63 98 listen_addr.sin_port = htons( global.conf->port ); 64 listen_addr.sin_addr.s_addr = inet_addr( global.conf->iface ); 65 66 i = bind( global.listen_socket, (struct sockaddr *) &listen_addr, sizeof( struct sockaddr ) ); 99 i = inet_pton( AF_INETx, global.conf->iface, &listen_addr.sin_addr ); 100 #endif 101 102 if( i != 1 ) 103 { 104 log_message( LOGLVL_ERROR, "Couldn't parse address `%s'", global.conf->iface ); 105 return( -1 ); 106 } 107 108 i = bind( global.listen_socket, (struct sockaddr *) &listen_addr, sizeof( listen_addr ) ); 67 109 if( i == -1 ) 68 110 { … … 70 112 return( -1 ); 71 113 } 72 114 73 115 i = listen( global.listen_socket, 10 ); 74 116 if( i == -1 ) … … 77 119 return( -1 ); 78 120 } 79 121 80 122 ch = g_io_channel_unix_new( global.listen_socket ); 81 g _io_add_watch( ch, G_IO_IN, bitlbee_io_new_client, NULL );82 123 global.listen_watch_source_id = g_io_add_watch( ch, G_IO_IN, bitlbee_io_new_client, NULL ); 124 83 125 #ifndef _WIN32 84 126 if( !global.conf->nofork ) … … 175 217 int st, size; 176 218 char *temp; 177 #ifdef FLOOD_SEND 178 time_t newtime; 179 #endif 180 181 #ifdef FLOOD_SEND 182 newtime = time( NULL ); 183 if( ( newtime - irc->oldtime ) > FLOOD_SEND_INTERVAL ) 184 { 185 irc->sentbytes = 0; 186 irc->oldtime = newtime; 187 } 188 #endif 189 219 190 220 if( irc->sendbuffer == NULL ) 191 221 return( FALSE ); 192 222 193 223 size = strlen( irc->sendbuffer ); 194 195 #ifdef FLOOD_SEND196 if( ( FLOOD_SEND_BYTES - irc->sentbytes ) > size )197 st = write( irc->fd, irc->sendbuffer, size );198 else199 st = write( irc->fd, irc->sendbuffer, ( FLOOD_SEND_BYTES - irc->sentbytes ) );200 #else201 224 st = write( irc->fd, irc->sendbuffer, size ); 202 #endif203 225 204 226 if( st <= 0 ) … … 214 236 } 215 237 } 216 217 #ifdef FLOOD_SEND218 irc->sentbytes += st;219 #endif220 238 221 239 if( st == size ) … … 246 264 g_main_quit( global.loop ); 247 265 } 248 249 int root_command_string( irc_t *irc, user_t *u, char *command, int flags )250 {251 char *cmd[IRC_MAX_ARGS];252 char *s;253 int k;254 char q = 0;255 256 memset( cmd, 0, sizeof( cmd ) );257 cmd[0] = command;258 k = 1;259 for( s = command; *s && k < ( IRC_MAX_ARGS - 1 ); s ++ )260 if( *s == ' ' && !q )261 {262 *s = 0;263 while( *++s == ' ' );264 if( *s == '"' || *s == '\'' )265 {266 q = *s;267 s ++;268 }269 if( *s )270 {271 cmd[k++] = s;272 s --;273 }274 }275 else if( *s == q )276 {277 q = *s = 0;278 }279 cmd[k] = NULL;280 281 return( root_command( irc, cmd ) );282 }283 284 int root_command( irc_t *irc, char *cmd[] )285 {286 int i;287 288 if( !cmd[0] )289 return( 0 );290 291 for( i = 0; commands[i].command; i++ )292 if( g_strcasecmp( commands[i].command, cmd[0] ) == 0 )293 {294 if( !cmd[commands[i].required_parameters] )295 {296 irc_usermsg( irc, "Not enough parameters given (need %d)", commands[i].required_parameters );297 return( 0 );298 }299 commands[i].execute( irc, cmd );300 return( 1 );301 }302 303 irc_usermsg( irc, "Unknown command: %s. Please use \x02help commands\x02 to get a list of available commands.", cmd[0] );304 305 return( 1 );306 }307 308 /* Decode%20a%20file%20name */309 void http_decode( char *s )310 {311 char *t;312 int i, j, k;313 314 t = g_new( char, strlen( s ) + 1 );315 316 for( i = j = 0; s[i]; i ++, j ++ )317 {318 if( s[i] == '%' )319 {320 if( sscanf( s + i + 1, "%2x", &k ) )321 {322 t[j] = k;323 i += 2;324 }325 else326 {327 *t = 0;328 break;329 }330 }331 else332 {333 t[j] = s[i];334 }335 }336 t[j] = 0;337 338 strcpy( s, t );339 g_free( t );340 }341 342 /* Warning: This one explodes the string. Worst-cases can make the string 3x its original size! */343 /* This fuction is safe, but make sure you call it safely as well! */344 void http_encode( char *s )345 {346 char *t;347 int i, j;348 349 t = g_strdup( s );350 351 for( i = j = 0; t[i]; i ++, j ++ )352 {353 if( t[i] <= ' ' || ((unsigned char *)t)[i] >= 128 || t[i] == '%' )354 {355 sprintf( s + j, "%%%02X", ((unsigned char*)t)[i] );356 j += 2;357 }358 else359 {360 s[j] = t[i];361 }362 }363 s[j] = 0;364 365 g_free( t );366 }367 368 /* Strip newlines from a string. Modifies the string passed to it. */369 char *strip_newlines( char *source )370 {371 int i;372 373 for( i = 0; source[i] != '\0'; i ++ )374 if( source[i] == '\n' || source[i] == '\r' )375 source[i] = 32;376 377 return source;378 } -
bitlbee.conf
r3e91c3e r8e419cb 14 14 ## and other reasons, the use of daemon-mode is *STRONGLY* discouraged, 15 15 ## don't even *think* of reporting bugs when you use this. 16 ## ForkDaemon -- Run as a stand-alone daemon, but keep all clients in separate 17 ## child processes. This should be pretty safe and reliable to use instead 18 ## of inetd mode. 16 19 ## 17 20 # RunMode = Inetd … … 19 22 ## DaemonPort/DaemonInterface: 20 23 ## 21 ## For RunMode=Daemon, here you can specify on what interface and port the22 ## daemonshould be listening for connections.24 ## For daemon mode, you can specify on what interface and port the daemon 25 ## should be listening for connections. 23 26 ## 24 27 # DaemonInterface = 0.0.0.0 … … 42 45 # AuthPassword = ItllBeBitlBee ## Heh.. Our slogan. ;-) 43 46 47 ## OperPassword 48 ## 49 ## Password that unlocks access to special operator commands. 50 ## 51 # OperPassword = ChangeMe! 52 44 53 ## HostName 45 54 ## 46 55 ## Normally, BitlBee gets a hostname using getsockname(). If you have a nicer 47 56 ## alias for your BitlBee daemon, you can set it here and BitlBee will identify 48 ## itself with that name instead. Leave it commented out if you want BitlBee to 49 ## use getsockname() to get a hostname. 57 ## itself with that name instead. 50 58 ## 51 59 # HostName = localhost -
bitlbee.h
r3e91c3e r8e419cb 111 111 typedef struct global_t { 112 112 int listen_socket; 113 gint listen_watch_source_id; 113 114 help_t *help; 114 115 conf_t *conf; -
commands.c
r3e91c3e r8e419cb 32 32 #include <string.h> 33 33 34 co mmand_t commands[] = {34 const command_t commands[] = { 35 35 { "help", 0, cmd_help }, 36 36 { "identify", 1, cmd_identify }, … … 55 55 }; 56 56 57 int root_command_string( irc_t *irc, user_t *u, char *command, int flags ) 58 { 59 char *cmd[IRC_MAX_ARGS]; 60 char *s; 61 int k; 62 char q = 0; 63 64 memset( cmd, 0, sizeof( cmd ) ); 65 cmd[0] = command; 66 k = 1; 67 for( s = command; *s && k < ( IRC_MAX_ARGS - 1 ); s ++ ) 68 if( *s == ' ' && !q ) 69 { 70 *s = 0; 71 while( *++s == ' ' ); 72 if( *s == '"' || *s == '\'' ) 73 { 74 q = *s; 75 s ++; 76 } 77 if( *s ) 78 { 79 cmd[k++] = s; 80 s --; 81 } 82 } 83 else if( *s == q ) 84 { 85 q = *s = 0; 86 } 87 cmd[k] = NULL; 88 89 return( root_command( irc, cmd ) ); 90 } 91 92 int root_command( irc_t *irc, char *cmd[] ) 93 { 94 int i; 95 96 if( !cmd[0] ) 97 return( 0 ); 98 99 for( i = 0; commands[i].command; i++ ) 100 if( g_strcasecmp( commands[i].command, cmd[0] ) == 0 ) 101 { 102 if( !cmd[commands[i].required_parameters] ) 103 { 104 irc_usermsg( irc, "Not enough parameters given (need %d)", commands[i].required_parameters ); 105 return( 0 ); 106 } 107 commands[i].execute( irc, cmd ); 108 return( 1 ); 109 } 110 111 irc_usermsg( irc, "Unknown command: %s. Please use \x02help commands\x02 to get a list of available commands.", cmd[0] ); 112 113 return( 1 ); 114 } 115 57 116 int cmd_help( irc_t *irc, char **cmd ) 58 117 { … … 97 156 case STORAGE_OK: 98 157 irc_usermsg( irc, "Password accepted" ); 158 irc_umode_set( irc, "+R", 1 ); 99 159 break; 100 160 default: … … 122 182 case STORAGE_OK: 123 183 irc->status = USTATUS_IDENTIFIED; 184 irc_umode_set( irc, "+R", 1 ); 124 185 break; 125 186 … … 146 207 case STORAGE_OK: 147 208 irc_setpass( irc, NULL ); 209 irc->status = USTATUS_LOGGED_IN; 210 irc_umode_set( irc, "-R", 1 ); 148 211 irc_usermsg( irc, "Account `%s' removed", irc->nick ); 149 212 return( 0 ); -
commands.h
r3e91c3e r8e419cb 29 29 #include "bitlbee.h" 30 30 31 /* Hmm... Linked list? Plleeeeaaase?? ;-) */32 33 31 typedef struct command_t 34 32 { … … 58 56 int cmd_dump( irc_t *irc, char **cmd ); 59 57 60 61 62 extern command_t commands[]; 58 extern const command_t commands[]; 63 59 64 60 #endif -
conf.c
r3e91c3e r8e419cb 46 46 conf = g_new0( conf_t, 1 ); 47 47 48 #ifdef IPV6 49 conf->iface = "::"; 50 #else 48 51 conf->iface = "0.0.0.0"; 52 #endif 49 53 conf->port = 6667; 50 54 conf->nofork = 0; … … 53 57 conf->runmode = RUNMODE_INETD; 54 58 conf->authmode = AUTHMODE_OPEN; 55 conf->password = NULL; 59 conf->auth_pass = NULL; 60 conf->oper_pass = NULL; 56 61 conf->configdir = g_strdup( CONFIG ); 57 62 conf->plugindir = g_strdup( PLUGINDIR ); … … 71 76 } 72 77 73 while( ( opt = getopt( argc, argv, "i:p:nvID c:d:h" ) ) >= 0 )78 while( ( opt = getopt( argc, argv, "i:p:nvIDFc:d:h" ) ) >= 0 ) 74 79 { 75 80 if( opt == 'i' ) … … 94 99 else if( opt == 'D' ) 95 100 conf->runmode=RUNMODE_DAEMON; 101 else if( opt == 'F' ) 102 conf->runmode=RUNMODE_FORKDAEMON; 96 103 else if( opt == 'c' ) 97 104 { … … 118 125 " -I Classic/InetD mode. (Default)\n" 119 126 " -D Daemon mode. (Still EXPERIMENTAL!)\n" 127 " -F Forking daemon. (one process per client)\n" 120 128 " -i Specify the interface (by IP address) to listen on.\n" 121 129 " (Default: 0.0.0.0 (any interface))\n" … … 157 165 if( g_strcasecmp( ini->value, "daemon" ) == 0 ) 158 166 conf->runmode = RUNMODE_DAEMON; 167 else if( g_strcasecmp( ini->value, "forkdaemon" ) == 0 ) 168 conf->runmode = RUNMODE_FORKDAEMON; 159 169 else 160 170 conf->runmode = RUNMODE_INETD; … … 184 194 else if( g_strcasecmp( ini->key, "authpassword" ) == 0 ) 185 195 { 186 conf->password = g_strdup( ini->value ); 196 conf->auth_pass = g_strdup( ini->value ); 197 } 198 else if( g_strcasecmp( ini->key, "operpassword" ) == 0 ) 199 { 200 conf->oper_pass = g_strdup( ini->value ); 187 201 } 188 202 else if( g_strcasecmp( ini->key, "hostname" ) == 0 ) -
conf.h
r3e91c3e r8e419cb 27 27 #define __CONF_H 28 28 29 typedef enum runmode { RUNMODE_DAEMON, RUNMODE_ INETD } runmode_t;29 typedef enum runmode { RUNMODE_DAEMON, RUNMODE_FORKDAEMON, RUNMODE_INETD } runmode_t; 30 30 typedef enum authmode { AUTHMODE_OPEN, AUTHMODE_CLOSED, AUTHMODE_REGISTERED } authmode_t; 31 31 … … 38 38 runmode_t runmode; 39 39 authmode_t authmode; 40 char *password; 40 char *auth_pass; 41 char *oper_pass; 41 42 char *hostname; 42 43 char *configdir; -
configure
r3e91c3e r8e419cb 23 23 debug=0 24 24 strip=1 25 flood=026 25 ipv6=1 27 26 ssl=auto … … 258 257 if [ "$ret" = "0" ]; then 259 258 echo 260 echo ' WARNING: Could not find a suitable SSL library (GnuTLS, libnss or OpenSSL).'261 echo ' 262 echo ' 263 echo ' 259 echo 'ERROR: Could not find a suitable SSL library (GnuTLS, libnss or OpenSSL).' 260 echo ' This is necessary for MSN and full Jabber support. To continue,' 261 echo ' install a suitable SSL library or disable MSN support (--msn=0).' 262 echo ' If you want Jabber without SSL support you can try --ssl=bogus.' 264 263 265 264 exit 1; … … 291 290 fi 292 291 293 if [ "$flood" = 1 ]; then 294 # echo '#define FLOOD_SEND' >> config.h 295 echo 'Flood protection is disabled in this release because of too many bugs.' 2> /dev/stderr 296 rm config.h 297 rm Makefile.settings 298 exit 1 292 echo 293 if [ -z "$BITLBEE_VERSION" -a -d .bzr -a -x "`which bzr`" ]; then 294 rev=`bzr revno` 295 echo 'Using bzr revision #'$rev' as version number' 296 BITLBEE_VERSION=\"bzr-$rev\" 299 297 fi 300 298 301 299 if [ -n "$BITLBEE_VERSION" ]; then 302 echo303 300 echo 'Spoofing version number: '$BITLBEE_VERSION 304 301 echo '#undef BITLBEE_VERSION' >> config.h 305 echo '#define BITLBEE_VERSION '$BITLBEE_VERSION >> config.h; 302 echo '#define BITLBEE_VERSION '$BITLBEE_VERSION >> config.h 303 echo 306 304 fi 307 305 … … 314 312 echo '#define WITH_MSN' >> config.h 315 313 protocols=$protocols'msn ' 316 protoobjs=$protoobjs'msn n.o '314 protoobjs=$protoobjs'msn_mod.o ' 317 315 fi 318 316 … … 322 320 echo '#define WITH_JABBER' >> config.h 323 321 protocols=$protocols'jabber ' 324 protoobjs=$protoobjs'jabber r.o '322 protoobjs=$protoobjs'jabber_mod.o ' 325 323 fi 326 324 … … 330 328 echo '#define WITH_OSCAR' >> config.h 331 329 protocols=$protocols'oscar ' 332 protoobjs=$protoobjs'oscar r.o '330 protoobjs=$protoobjs'oscar_mod.o ' 333 331 fi 334 332 … … 338 336 echo '#define WITH_YAHOO' >> config.h 339 337 protocols=$protocols'yahoo ' 340 protoobjs=$protoobjs'yahoo o.o '338 protoobjs=$protoobjs'yahoo_mod.o ' 341 339 fi 342 340 343 341 if [ "$protocols" = "PROTOCOLS = " ]; then 344 echo345 342 echo "WARNING: You haven't selected any communication protocol to compile!" 346 343 echo " Bitlbee will run, but you will be unable to connect to IM servers!" … … 350 347 echo "PROTOOBJS = $protoobjs" >> Makefile.settings 351 348 352 echo353 349 echo Architecture: $arch 354 350 case "$arch" in -
irc.c
r3e91c3e r8e419cb 40 40 irc_t *irc_new( int fd ) 41 41 { 42 irc_t *irc = g_new0( irc_t, 1 ); 43 42 irc_t *irc; 43 struct hostent *peer; 44 unsigned int i; 45 char buf[128]; 46 #ifdef IPV6 47 struct sockaddr_in6 sock[1]; 48 #else 44 49 struct sockaddr_in sock[1]; 45 #ifdef IPV646 struct sockaddr_in6 sock6[1];47 50 #endif 48 struct hostent *peer;49 unsigned int i, j;51 52 irc = g_new0( irc_t, 1 ); 50 53 51 54 irc->fd = fd; … … 71 74 72 75 i = sizeof( *sock ); 73 #ifdef IPV6 74 j = sizeof( *sock6 ); 75 #endif 76 76 77 if( global.conf->hostname ) 77 78 irc->myhost = g_strdup( global.conf->hostname ); 78 else if( getsockname( irc->fd, (struct sockaddr*) sock, &i ) == 0 && sock->sin_family == AF_INET ) 79 { 80 if( ( peer = gethostbyaddr( (char*) &sock->sin_addr, sizeof( sock->sin_addr ), AF_INET ) ) ) 79 #ifdef IPV6 80 else if( getsockname( irc->fd, (struct sockaddr*) sock, &i ) == 0 && sock->sin6_family == AF_INETx ) 81 { 82 if( ( peer = gethostbyaddr( (char*) &sock->sin6_addr, sizeof( sock->sin6_addr ), AF_INETx ) ) ) 81 83 irc->myhost = g_strdup( peer->h_name ); 82 } 83 #ifdef IPV6 84 else if( getsockname( irc->fd, (struct sockaddr*) sock6, &j ) == 0 && sock6->sin6_family == AF_INET6 ) 85 { 86 if( ( peer = gethostbyaddr( (char*) &sock6->sin6_addr, sizeof( sock6->sin6_addr ), AF_INET6 ) ) ) 84 else if( inet_ntop( AF_INETx, &sock->sin6_addr, buf, sizeof( buf ) - 1 ) != NULL ) 85 irc->myhost = g_strdup( ipv6_unwrap( buf ) ); 86 } 87 #else 88 else if( getsockname( irc->fd, (struct sockaddr*) sock, &i ) == 0 && sock->sin_family == AF_INETx ) 89 { 90 if( ( peer = gethostbyaddr( (char*) &sock->sin_addr, sizeof( sock->sin_addr ), AF_INETx ) ) ) 87 91 irc->myhost = g_strdup( peer->h_name ); 92 else if( inet_ntop( AF_INETx, &sock->sin_addr, buf, sizeof( buf ) - 1 ) != NULL ) 93 irc->myhost = g_strdup( buf ); 88 94 } 89 95 #endif … … 91 97 i = sizeof( *sock ); 92 98 #ifdef IPV6 93 j = sizeof( *sock6 ); 99 if( getpeername( irc->fd, (struct sockaddr*) sock, &i ) == 0 && sock->sin6_family == AF_INETx ) 100 { 101 if( ( peer = gethostbyaddr( (char*) &sock->sin6_addr, sizeof( sock->sin6_addr ), AF_INETx ) ) ) 102 irc->host = g_strdup( peer->h_name ); 103 else if( inet_ntop( AF_INETx, &sock->sin6_addr, buf, sizeof( buf ) - 1 ) != NULL ) 104 irc->host = g_strdup( ipv6_unwrap( buf ) ); 105 } 106 #else 107 if( getpeername( irc->fd, (struct sockaddr*) sock, &i ) == 0 && sock->sin_family == AF_INETx ) 108 { 109 if( ( peer = gethostbyaddr( (char*) &sock->sin_addr, sizeof( sock->sin_addr ), AF_INETx ) ) ) 110 irc->host = g_strdup( peer->h_name ); 111 else if( inet_ntop( AF_INETx, &sock->sin_addr, buf, sizeof( buf ) - 1 ) != NULL ) 112 irc->host = g_strdup( buf ); 113 } 94 114 #endif 95 if( getpeername( irc->fd, (struct sockaddr*) sock, &i ) == 0 && sock->sin_family == AF_INET ) 96 { 97 if( ( peer = gethostbyaddr( (char*) &sock->sin_addr, sizeof( sock->sin_addr ), AF_INET ) ) ) 98 irc->host = g_strdup( peer->h_name ); 99 } 100 #ifdef IPV6 101 else if( getpeername( irc->fd, (struct sockaddr*) sock6, &j ) == 0 && sock6->sin6_family == AF_INET6 ) 102 { 103 if( ( peer = gethostbyaddr( (char*) &sock6->sin6_addr, sizeof( sock6->sin6_addr ), AF_INET6 ) ) ) 104 irc->host = g_strdup( peer->h_name ); 105 } 106 #endif 107 115 116 /* Rare, but possible. */ 108 117 if( !irc->host ) irc->host = g_strdup( "localhost." ); 109 118 if( !irc->myhost ) irc->myhost = g_strdup( "localhost." ); … … 264 273 g_free(irc); 265 274 266 if( global.conf->runmode == RUNMODE_INETD )275 if( global.conf->runmode == RUNMODE_INETD || global.conf->runmode == RUNMODE_FORKDAEMON ) 267 276 g_main_quit( global.loop ); 268 277 } … … 422 431 irc_reply( irc, 461, "%s :Need more parameters", cmd[0] ); 423 432 } 424 else if( strcmp( cmd[1], (global.conf)-> password) == 0 )433 else if( strcmp( cmd[1], (global.conf)->auth_pass ) == 0 ) 425 434 { 426 435 irc->status = USTATUS_AUTHORIZED; … … 500 509 { 501 510 irc_write( irc, ":%s PONG %s :%s", irc->myhost, irc->myhost, cmd[1]?cmd[1]:irc->myhost ); 511 } 512 else if( g_strcasecmp( cmd[0], "OPER" ) == 0 ) 513 { 514 if( !cmd[2] ) 515 irc_reply( irc, 461, "%s :Need more parameters", cmd[0] ); 516 else if( strcmp( cmd[2], global.conf->oper_pass ) == 0 ) 517 irc_umode_set( irc, "+o", 1 ); 518 // else 519 /* FIXME/TODO: Find out which reply to send now. */ 502 520 } 503 521 else if( g_strcasecmp( cmd[0], "MODE" ) == 0 ) … … 524 542 { 525 543 if( cmd[2] ) 526 irc_umode_set( irc, irc->nick, cmd[2]);544 irc_umode_set( irc, cmd[2], 0 ); 527 545 } 528 546 else … … 923 941 if( irc->sendbuffer != NULL ) { 924 942 size = strlen( irc->sendbuffer ) + strlen( line ); 925 #ifdef FLOOD_SEND926 if( size > FLOOD_SEND_MAXBUFFER ) {927 /* Die flooder, die! >:) */928 929 g_free(irc->sendbuffer);930 931 /* We need the \r\n at the start because else we might append our string to a half932 * sent line. A bit hackish, but it works.933 */934 irc->sendbuffer = g_strdup( "\r\nERROR :Sendq Exceeded\r\n" );935 irc->quit = 1;936 937 return;938 }939 #endif940 943 irc->sendbuffer = g_renew ( char, irc->sendbuffer, size + 1 ); 941 944 strcpy( ( irc->sendbuffer + strlen( irc->sendbuffer ) ), line ); … … 1075 1078 irc_reply( irc, 2, ":Host %s is running BitlBee " BITLBEE_VERSION " " ARCH "/" CPU ".", irc->myhost ); 1076 1079 irc_reply( irc, 3, ":%s", IRCD_INFO ); 1077 irc_reply( irc, 4, "%s %s %s %s", irc->myhost, BITLBEE_VERSION, UMODES, CMODES ); 1080 irc_reply( irc, 4, "%s %s %s %s", irc->myhost, BITLBEE_VERSION, UMODES UMODES_PRIV, CMODES ); 1081 irc_reply( irc, 5, "PREFIX=(ov)@+ CHANTYPES=#& CHANMODES=,,,%s NICKLEN=%d NETWORK=BitlBee CASEMAPPING=rfc1459 MAXTARGETS=1 WATCH=128 :are supported by this server", CMODES, MAX_NICK_LENGTH - 1 ); 1078 1082 irc_motd( irc ); 1079 irc_umode_set( irc, irc->myhost, "+" UMODE);1083 irc_umode_set( irc, "+" UMODE, 1 ); 1080 1084 1081 1085 u = user_add( irc, irc->mynick ); … … 1204 1208 1205 1209 1206 void irc_umode_set( irc_t *irc, char *who, char *s ) 1207 { 1210 void irc_umode_set( irc_t *irc, char *s, int allow_priv ) 1211 { 1212 /* allow_priv: Set to 0 if s contains user input, 1 if you want 1213 to set a "privileged" mode (+o, +R, etc). */ 1208 1214 char m[256], st = 1, *t; 1209 1215 int i; … … 1218 1224 if( *t == '+' || *t == '-' ) 1219 1225 st = *t == '+'; 1220 else 1226 else if( st == 0 || ( strchr( UMODES, *t ) || ( allow_priv && strchr( UMODES_PRIV, *t ) ) ) ) 1221 1227 m[(int)*t] = st; 1222 1228 } … … 1225 1231 1226 1232 for( i = 0; i < 256 && strlen( irc->umode ) < ( sizeof( irc->umode ) - 1 ); i ++ ) 1227 if( m[i] && strchr( UMODES, i ))1233 if( m[i] ) 1228 1234 irc->umode[strlen(irc->umode)] = i; 1229 1235 -
irc.h
r3e91c3e r8e419cb 33 33 #define IRC_PING_STRING "PinglBee" 34 34 35 /* #define FLOOD_SEND 36 * Not yet enabled by default due to some problems. 37 */ 38 #define FLOOD_SEND_INTERVAL 30 39 #define FLOOD_SEND_BYTES (1024*10) 40 #define FLOOD_SEND_MAXBUFFER (1024*20) 41 42 #define UMODES "ais" 35 #define UMODES "ias" 36 #define UMODES_PRIV "Ro" 43 37 #define CMODES "nt" 44 38 #define CMODE "t" … … 127 121 void irc_names( irc_t *irc, char *channel ); 128 122 void irc_topic( irc_t *irc, char *channel ); 129 void irc_umode_set( irc_t *irc, char * who, char *s);123 void irc_umode_set( irc_t *irc, char *s, int allow_priv ); 130 124 void irc_who( irc_t *irc, char *channel ); 131 125 void irc_spawn( irc_t *irc, user_t *u ); -
protocols/Makefile
r3e91c3e r8e419cb 10 10 11 11 # [SH] Program variables 12 objects = md5.o nogaim.o proxy.o sha.o util.o $(SSL_CLIENT)12 objects = http_client.o md5.o nogaim.o proxy.o sha.o $(SSL_CLIENT) 13 13 14 14 # [SH] The next two lines should contain the directory name (in $(subdirs)) -
protocols/jabber/Makefile
r3e91c3e r8e419cb 16 16 17 17 # [SH] Phony targets 18 all: jabber r.o18 all: jabber_mod.o 19 19 20 20 .PHONY: all clean distclean … … 33 33 @$(CC) -c $(CFLAGS) $< -o $@ 34 34 35 jabber r.o: $(objects)36 @echo '*' Linking jabber r.o37 @$(LD) $(LFLAGS) $(objects) -o jabber r.o35 jabber_mod.o: $(objects) 36 @echo '*' Linking jabber_mod.o 37 @$(LD) $(LFLAGS) $(objects) -o jabber_mod.o -
protocols/jabber/jabber.c
r3e91c3e r8e419cb 1249 1249 gjab_auth(gjc); 1250 1250 } else { 1251 gjab_reqroster(gjc); 1251 1252 account_online(GJ_GC(gjc)); 1252 1253 if (bud_list_cache_exists(GJ_GC(gjc))) 1254 do_import(GJ_GC(gjc), NULL); 1255 1253 1256 1254 ((struct jabber_data *)GJ_GC(gjc)->proto_data)->did_import = TRUE; 1257 1258 gjab_reqroster(gjc);1259 1255 } 1260 1256 } else { … … 1860 1856 xmlnode_insert_cdata(y, "away", -1); 1861 1857 y = xmlnode_insert_tag(x, "status"); 1862 { 1863 char *utf8 = str_to_utf8(message); 1864 xmlnode_insert_cdata(y, utf8, -1); 1865 g_free(utf8); 1866 } 1858 xmlnode_insert_cdata(y, message, -1); 1867 1859 gc->away = ""; 1868 1860 } else { -
protocols/msn/Makefile
r3e91c3e r8e419cb 16 16 17 17 # [SH] Phony targets 18 all: msn n.o18 all: msn_mod.o 19 19 20 20 .PHONY: all clean distclean … … 33 33 @$(CC) -c $(CFLAGS) $< -o $@ 34 34 35 msn n.o: $(objects)36 @echo '*' Linking msn n.o37 @$(LD) $(LFLAGS) $(objects) -o msn n.o35 msn_mod.o: $(objects) 36 @echo '*' Linking msn_mod.o 37 @$(LD) $(LFLAGS) $(objects) -o msn_mod.o 38 38 39 39 -
protocols/msn/msn.c
r3e91c3e r8e419cb 170 170 171 171 for( i = 0; msn_away_state_list[i].number > -1; i ++ ) 172 l = g_list_append( l, msn_away_state_list[i].name );172 l = g_list_append( l, (void*) msn_away_state_list[i].name ); 173 173 174 174 return( l ); … … 177 177 static char *msn_get_status_string( struct gaim_connection *gc, int number ) 178 178 { 179 struct msn_away_state *st = msn_away_state_by_number( number );179 const struct msn_away_state *st = msn_away_state_by_number( number ); 180 180 181 181 if( st ) 182 return( st->name );182 return( (char*) st->name ); 183 183 else 184 184 return( "" ); … … 189 189 char buf[1024]; 190 190 struct msn_data *md = gc->proto_data; 191 struct msn_away_state *st;191 const struct msn_away_state *st; 192 192 193 193 if( strcmp( state, GAIM_AWAY_CUSTOM ) == 0 ) -
protocols/msn/msn.h
r3e91c3e r8e419cb 67 67 GSList *switchboards; 68 68 int buddycount; 69 struct msn_away_state *away_state;69 const struct msn_away_state *away_state; 70 70 }; 71 71 … … 127 127 #define STATUS_FATAL 1 128 128 #define STATUS_SB_FATAL 2 129 #define STATUS_SB_IM_SPARE 4 /* Make one-to-one conversation switchboard available again, invite failed. */ 130 #define STATUS_SB_CHAT_SPARE 8 /* Same, but also for groupchats (not used yet). */ 129 131 130 132 int msn_chat_id; 131 extern struct msn_away_state msn_away_state_list[];132 extern struct msn_status_code msn_status_code_list[];133 extern const struct msn_away_state msn_away_state_list[]; 134 extern const struct msn_status_code msn_status_code_list[]; 133 135 134 136 /* Keep a list of all the active connections. We need these lists because … … 154 156 155 157 /* tables.c */ 156 struct msn_away_state *msn_away_state_by_number( int number );157 struct msn_away_state *msn_away_state_by_code( char *code );158 struct msn_away_state *msn_away_state_by_name( char *name );159 struct msn_status_code *msn_status_by_number( int number );158 const struct msn_away_state *msn_away_state_by_number( int number ); 159 const struct msn_away_state *msn_away_state_by_code( char *code ); 160 const struct msn_away_state *msn_away_state_by_name( char *name ); 161 const struct msn_status_code *msn_status_by_number( int number ); 160 162 161 163 /* sb.c */ -
protocols/msn/ns.c
r3e91c3e r8e419cb 208 208 { 209 209 /* Time for some Passport black magic... */ 210 if( !passport_get_id( gc, gc->username, gc->password, cmd[4], msn_auth_got_passport_id) )210 if( !passport_get_id( msn_auth_got_passport_id, gc, gc->username, gc->password, cmd[4] ) ) 211 211 { 212 212 hide_login_progress_error( gc, "Error while contacting Passport server" ); … … 365 365 else if( strcmp( cmd[0], "ILN" ) == 0 ) 366 366 { 367 struct msn_away_state *st;367 const struct msn_away_state *st; 368 368 369 369 if( num_parts != 6 ) … … 393 393 else if( strcmp( cmd[0], "NLN" ) == 0 ) 394 394 { 395 struct msn_away_state *st;395 const struct msn_away_state *st; 396 396 397 397 if( num_parts != 5 ) … … 539 539 { 540 540 int num = atoi( cmd[0] ); 541 struct msn_status_code *err = msn_status_by_number( num );541 const struct msn_status_code *err = msn_status_by_number( num ); 542 542 543 543 g_snprintf( buf, sizeof( buf ), "Error reported by MSN server: %s", err->text ); -
protocols/msn/passport.c
r3e91c3e r8e419cb 20 20 */ 21 21 22 #include " ssl_client.h"22 #include "http_client.h" 23 23 #include "passport.h" 24 24 #include "msn.h" … … 31 31 static char *prd_cached = NULL; 32 32 33 static char *passport_create_header( char *reply, char *email, char *pwd ); 33 static int passport_get_id_real( gpointer func, gpointer data, char *header ); 34 static void passport_get_id_ready( struct http_request *req ); 35 34 36 static int passport_retrieve_dalogin( gpointer data, gpointer func, char *header ); 35 static void passport_retrieve_dalogin_ connected( gpointer data, void *ssl, GaimInputCondition cond);36 static int passport_get_id_from( gpointer data, gpointer func, char *header_i, char *url ); 37 static void passport_get_id_connected( gpointer data, void *ssl, GaimInputCondition cond );37 static void passport_retrieve_dalogin_ready( struct http_request *req ); 38 39 static char *passport_create_header( char *cookie, char *email, char *pwd ); 38 40 static void destroy_reply( struct passport_reply *rep ); 39 41 40 41 int passport_get_id( gpointer data, char *username, char *password, char *cookie, gpointer func ) 42 int passport_get_id( gpointer func, gpointer data, char *username, char *password, char *cookie ) 42 43 { 43 44 char *header = passport_create_header( cookie, username, password ); 44 45 45 if( prd_cached ) 46 { 47 int st; 48 49 st = passport_get_id_from( data, func, header, prd_cached ); 50 g_free( header ); 51 return( st ); 52 } 46 if( prd_cached == NULL ) 47 return passport_retrieve_dalogin( func, data, header ); 53 48 else 54 { 55 return( passport_retrieve_dalogin( data, func, header ) ); 56 } 57 } 58 59 60 static char *passport_create_header( char *reply, char *email, char *pwd ) 61 { 62 char *buffer = g_new0( char, 2048 ); 63 char *currenttoken; 64 char *email_enc, *pwd_enc; 65 66 email_enc = g_new0( char, strlen( email ) * 3 + 1 ); 67 strcpy( email_enc, email ); 68 http_encode( email_enc ); 69 70 pwd_enc = g_new0( char, strlen( pwd ) * 3 + 1 ); 71 strcpy( pwd_enc, pwd ); 72 http_encode( pwd_enc ); 73 74 currenttoken = strstr( reply, "lc=" ); 75 if( currenttoken == NULL ) 76 return( NULL ); 77 78 g_snprintf( buffer, 2048, 79 "Authorization: Passport1.4 OrgVerb=GET," 80 "OrgURL=http%%3A%%2F%%2Fmessenger%%2Emsn%%2Ecom," 81 "sign-in=%s,pwd=%s,%s", email_enc, pwd_enc, 82 currenttoken ); 83 84 g_free( email_enc ); 85 g_free( pwd_enc ); 86 87 return( buffer ); 88 } 89 90 91 static int passport_retrieve_dalogin( gpointer data, gpointer func, char *header ) 92 { 93 struct passport_reply *rep = g_new0( struct passport_reply, 1 ); 94 void *ssl; 95 49 return passport_get_id_real( func, data, header ); 50 } 51 52 static int passport_get_id_real( gpointer func, gpointer data, char *header ) 53 { 54 struct passport_reply *rep; 55 char *server, *dummy, *reqs; 56 struct http_request *req; 57 58 rep = g_new0( struct passport_reply, 1 ); 96 59 rep->data = data; 97 60 rep->func = func; 98 rep->header = header; 99 100 ssl = ssl_connect( "nexus.passport.com", 443, passport_retrieve_dalogin_connected, rep ); 101 102 if( !ssl ) 103 destroy_reply( rep ); 104 105 return( ssl != NULL ); 106 } 107 108 #define PPR_BUFFERSIZE 2048 109 #define PPR_REQUEST "GET /rdr/pprdr.asp HTTP/1.0\r\n\r\n" 110 static void passport_retrieve_dalogin_connected( gpointer data, void *ssl, GaimInputCondition cond ) 111 { 112 int ret; 113 char buffer[PPR_BUFFERSIZE+1]; 114 struct passport_reply *rep = data; 115 116 if( !g_slist_find( msn_connections, rep->data ) ) 117 { 118 if( ssl ) ssl_disconnect( ssl ); 61 62 server = g_strdup( prd_cached ); 63 dummy = strchr( server, '/' ); 64 65 if( dummy == NULL ) 66 { 67 destroy_reply( rep ); 68 return( 0 ); 69 } 70 71 reqs = g_malloc( strlen( header ) + strlen( dummy ) + 128 ); 72 sprintf( reqs, "GET %s HTTP/1.0\r\n%s\r\n\r\n", dummy, header ); 73 74 *dummy = 0; 75 req = http_dorequest( server, 443, 1, reqs, passport_get_id_ready, rep ); 76 77 g_free( server ); 78 g_free( reqs ); 79 80 if( req == NULL ) 81 destroy_reply( rep ); 82 83 return( req != NULL ); 84 } 85 86 static void passport_get_id_ready( struct http_request *req ) 87 { 88 struct passport_reply *rep = req->data; 89 90 if( !g_slist_find( msn_connections, rep->data ) || !req->finished || !req->reply_headers ) 91 { 119 92 destroy_reply( rep ); 120 93 return; 121 94 } 122 95 123 if( !ssl ) 124 { 125 rep->func( rep ); 126 destroy_reply( rep ); 127 return; 128 } 129 130 ssl_write( ssl, PPR_REQUEST, strlen( PPR_REQUEST ) ); 131 132 if( ( ret = ssl_read( ssl, buffer, PPR_BUFFERSIZE ) ) <= 0 ) 133 { 134 goto failure; 135 } 136 137 { 138 char *dalogin = strstr( buffer, "DALogin=" ); 139 char *urlend; 96 if( req->status_code == 200 ) 97 { 98 char *dummy; 140 99 141 if( !dalogin ) 142 goto failure; 143 144 dalogin += strlen( "DALogin=" ); 145 urlend = strchr( dalogin, ',' ); 146 if( urlend ) 147 *urlend = 0; 148 149 /* strip the http(s):// part from the url */ 150 urlend = strstr( urlend, "://" ); 151 if( urlend ) 152 dalogin = urlend + strlen( "://" ); 153 154 if( prd_cached == NULL ) 155 prd_cached = g_strdup( dalogin ); 156 } 157 158 if( passport_get_id_from( rep->data, rep->func, rep->header, prd_cached ) ) 159 { 160 ssl_disconnect( ssl ); 161 destroy_reply( rep ); 162 return; 163 } 164 165 failure: 166 ssl_disconnect( ssl ); 167 rep->func( rep ); 168 destroy_reply( rep ); 169 } 170 171 172 static int passport_get_id_from( gpointer data, gpointer func, char *header_i, char *url ) 173 { 174 struct passport_reply *rep = g_new0( struct passport_reply, 1 ); 175 char server[512], *dummy; 176 void *ssl; 177 178 rep->data = data; 179 rep->func = func; 180 rep->redirects = 4; 181 182 strncpy( server, url, 512 ); 183 dummy = strchr( server, '/' ); 184 if( dummy ) 185 *dummy = 0; 186 187 ssl = ssl_connect( server, 443, passport_get_id_connected, rep ); 188 189 if( ssl ) 190 { 191 rep->header = g_strdup( header_i ); 192 rep->url = g_strdup( url ); 193 } 194 else 195 { 196 destroy_reply( rep ); 197 } 198 199 return( ssl != NULL ); 200 } 201 202 #define PPG_BUFFERSIZE 4096 203 static void passport_get_id_connected( gpointer data, void *ssl, GaimInputCondition cond ) 204 { 205 struct passport_reply *rep = data; 206 char server[512], buffer[PPG_BUFFERSIZE+1], *dummy; 207 int ret; 208 209 if( !g_slist_find( msn_connections, rep->data ) ) 210 { 211 if( ssl ) ssl_disconnect( ssl ); 212 destroy_reply( rep ); 213 return; 214 } 215 216 if( !ssl ) 217 { 218 rep->func( rep ); 219 destroy_reply( rep ); 220 return; 221 } 222 223 memset( buffer, 0, PPG_BUFFERSIZE + 1 ); 224 225 strncpy( server, rep->url, 512 ); 226 dummy = strchr( server, '/' ); 227 if( dummy == NULL ) 228 goto end; 229 230 g_snprintf( buffer, PPG_BUFFERSIZE - 1, "GET %s HTTP/1.0\r\n" 231 "%s\r\n\r\n", dummy, rep->header ); 232 233 ssl_write( ssl, buffer, strlen( buffer ) ); 234 memset( buffer, 0, PPG_BUFFERSIZE + 1 ); 235 236 { 237 char *buffer2 = buffer; 238 239 while( ( ( ret = ssl_read( ssl, buffer2, 512 ) ) > 0 ) && 240 ( buffer + PPG_BUFFERSIZE - buffer2 - ret - 512 >= 0 ) ) 241 { 242 buffer2 += ret; 243 } 244 } 245 246 if( *buffer == 0 ) 247 goto end; 248 249 if( ( dummy = strstr( buffer, "Location:" ) ) ) 250 { 251 char *urlend; 252 253 rep->redirects --; 254 if( rep->redirects == 0 ) 255 goto end; 256 257 dummy += strlen( "Location:" ); 258 while( isspace( *dummy ) ) dummy ++; 259 urlend = dummy; 260 while( !isspace( *urlend ) ) urlend ++; 261 *urlend = 0; 262 if( ( urlend = strstr( dummy, "://" ) ) ) 263 dummy = urlend + strlen( "://" ); 264 265 g_free( rep->url ); 266 rep->url = g_strdup( dummy ); 267 268 strncpy( server, dummy, sizeof( server ) - 1 ); 269 dummy = strchr( server, '/' ); 270 if( dummy ) *dummy = 0; 271 272 ssl_disconnect( ssl ); 273 274 if( ssl_connect( server, 443, passport_get_id_connected, rep ) ) 275 { 276 return; 277 } 278 else 279 { 280 rep->func( rep ); 281 destroy_reply( rep ); 282 return; 283 } 284 } 285 else if( strstr( buffer, "200 OK" ) ) 286 { 287 if( ( dummy = strstr( buffer, "from-PP='" ) ) ) 100 if( ( dummy = strstr( req->reply_headers, "from-PP='" ) ) ) 288 101 { 289 102 char *responseend; … … 298 111 } 299 112 300 end:301 ssl_disconnect( ssl );302 113 rep->func( rep ); 303 114 destroy_reply( rep ); 304 115 } 305 116 117 static char *passport_create_header( char *cookie, char *email, char *pwd ) 118 { 119 char *buffer = g_new0( char, 2048 ); 120 char *currenttoken; 121 char *email_enc, *pwd_enc; 122 123 email_enc = g_new0( char, strlen( email ) * 3 + 1 ); 124 strcpy( email_enc, email ); 125 http_encode( email_enc ); 126 127 pwd_enc = g_new0( char, strlen( pwd ) * 3 + 1 ); 128 strcpy( pwd_enc, pwd ); 129 http_encode( pwd_enc ); 130 131 currenttoken = strstr( cookie, "lc=" ); 132 if( currenttoken == NULL ) 133 return( NULL ); 134 135 g_snprintf( buffer, 2048, 136 "Authorization: Passport1.4 OrgVerb=GET," 137 "OrgURL=http%%3A%%2F%%2Fmessenger%%2Emsn%%2Ecom," 138 "sign-in=%s,pwd=%s,%s", email_enc, pwd_enc, 139 currenttoken ); 140 141 g_free( email_enc ); 142 g_free( pwd_enc ); 143 144 return( buffer ); 145 } 146 147 #define PPR_REQUEST "GET /rdr/pprdr.asp HTTP/1.0\r\n\r\n" 148 static int passport_retrieve_dalogin( gpointer func, gpointer data, char *header ) 149 { 150 struct passport_reply *rep = g_new0( struct passport_reply, 1 ); 151 struct http_request *req; 152 153 rep->data = data; 154 rep->func = func; 155 rep->header = header; 156 157 req = http_dorequest( "nexus.passport.com", 443, 1, PPR_REQUEST, passport_retrieve_dalogin_ready, rep ); 158 159 if( !req ) 160 destroy_reply( rep ); 161 162 return( req != NULL ); 163 } 164 165 static void passport_retrieve_dalogin_ready( struct http_request *req ) 166 { 167 struct passport_reply *rep = req->data; 168 char *dalogin; 169 char *urlend; 170 171 if( !g_slist_find( msn_connections, rep->data ) || !req->finished || !req->reply_headers ) 172 { 173 destroy_reply( rep ); 174 return; 175 } 176 177 dalogin = strstr( req->reply_headers, "DALogin=" ); 178 179 if( !dalogin ) 180 goto failure; 181 182 dalogin += strlen( "DALogin=" ); 183 urlend = strchr( dalogin, ',' ); 184 if( urlend ) 185 *urlend = 0; 186 187 /* strip the http(s):// part from the url */ 188 urlend = strstr( urlend, "://" ); 189 if( urlend ) 190 dalogin = urlend + strlen( "://" ); 191 192 if( prd_cached == NULL ) 193 prd_cached = g_strdup( dalogin ); 194 195 if( passport_get_id_real( rep->func, rep->data, rep->header ) ) 196 { 197 destroy_reply( rep ); 198 return; 199 } 200 201 failure: 202 rep->func( rep ); 203 destroy_reply( rep ); 204 } 306 205 307 206 static void destroy_reply( struct passport_reply *rep ) 308 207 { 309 if( rep->result ) g_free( rep->result ); 310 if( rep->url ) g_free( rep->url ); 311 if( rep->header ) g_free( rep->header ); 312 if( rep ) g_free( rep ); 313 } 208 g_free( rep->result ); 209 g_free( rep->header ); 210 g_free( rep ); 211 } -
protocols/msn/passport.h
r3e91c3e r8e419cb 35 35 struct passport_reply 36 36 { 37 void (*func)( struct passport_reply * ); 37 38 void *data; 38 39 char *result; 39 void (*func)( struct passport_reply * );40 char *url;41 40 char *header; 42 int redirects;43 41 }; 44 42 45 int passport_get_id( gpointer data, char *username, char *password, char *cookie, gpointer func);43 int passport_get_id( gpointer func, gpointer data, char *username, char *password, char *cookie ); 46 44 47 45 #endif /* __PASSPORT_H__ */ -
protocols/msn/sb.c
r3e91c3e r8e419cb 512 512 { 513 513 int num = atoi( cmd[0] ); 514 struct msn_status_code *err = msn_status_by_number( num );514 const struct msn_status_code *err = msn_status_by_number( num ); 515 515 516 516 g_snprintf( buf, sizeof( buf ), "Error reported by switchboard server: %s", err->text ); … … 522 522 return( 0 ); 523 523 } 524 elseif( err->flags & STATUS_FATAL )524 if( err->flags & STATUS_FATAL ) 525 525 { 526 526 signoff( gc ); 527 527 return( 0 ); 528 } 529 if( err->flags & STATUS_SB_IM_SPARE ) 530 { 531 if( sb->who ) 532 { 533 struct msn_message *m; 534 GSList *l; 535 536 /* Apparently some invitation failed. We might want to use this 537 board later, so keep it as a spare. */ 538 g_free( sb->who ); 539 sb->who = NULL; 540 541 /* Also clear the msgq, otherwise someone else might get them. */ 542 for( l = sb->msgq; l; l = l->next ) 543 { 544 m = l->data; 545 g_free( m->who ); 546 g_free( m->text ); 547 g_free( m ); 548 } 549 g_slist_free( sb->msgq ); 550 sb->msgq = NULL; 551 } 528 552 } 529 553 } -
protocols/msn/tables.c
r3e91c3e r8e419cb 27 27 #include "msn.h" 28 28 29 struct msn_away_state msn_away_state_list[] =29 const struct msn_away_state msn_away_state_list[] = 30 30 { 31 31 { 0, "NLN", "Available" }, … … 40 40 }; 41 41 42 struct msn_away_state *msn_away_state_by_number( int number )42 const struct msn_away_state *msn_away_state_by_number( int number ) 43 43 { 44 44 int i; … … 51 51 } 52 52 53 struct msn_away_state *msn_away_state_by_code( char *code )53 const struct msn_away_state *msn_away_state_by_code( char *code ) 54 54 { 55 55 int i; … … 62 62 } 63 63 64 struct msn_away_state *msn_away_state_by_name( char *name )64 const struct msn_away_state *msn_away_state_by_name( char *name ) 65 65 { 66 66 int i; … … 73 73 } 74 74 75 struct msn_status_code msn_status_code_list[] =75 const struct msn_status_code msn_status_code_list[] = 76 76 { 77 77 { 200, "Invalid syntax", 0 }, … … 80 80 { 206, "Domain name missing", 0 }, 81 81 { 207, "Already logged in", 0 }, 82 { 208, "Invalid handle", 0},82 { 208, "Invalid handle", STATUS_SB_IM_SPARE }, 83 83 { 209, "Forbidden nickname", 0 }, 84 84 { 210, "Buddy list too long", 0 }, 85 85 { 215, "Handle is already in list", 0 }, 86 { 216, "Handle is not in list", 0},87 { 217, "Person is off-line or non-existent", 0},86 { 216, "Handle is not in list", STATUS_SB_IM_SPARE }, 87 { 217, "Person is off-line or non-existent", STATUS_SB_IM_SPARE }, 88 88 { 218, "Already in that mode", 0 }, 89 89 { 219, "Handle is already in opposite list", 0 }, … … 118 118 { 711, "Write is blocking", STATUS_FATAL }, 119 119 { 712, "Session is overloaded", STATUS_FATAL }, 120 { 713, "Calling too rapidly", 0},120 { 713, "Calling too rapidly", STATUS_SB_IM_SPARE }, 121 121 { 714, "Too many sessions", STATUS_FATAL }, 122 122 { 715, "Not expected/Invalid argument/action", 0 }, … … 144 144 }; 145 145 146 struct msn_status_code *msn_status_by_number( int number )146 const struct msn_status_code *msn_status_by_number( int number ) 147 147 { 148 148 static struct msn_status_code *unknown = NULL; -
protocols/nogaim.h
r3e91c3e r8e419cb 312 312 G_MODULE_EXPORT void serv_got_chat_in( struct gaim_connection *gc, int id, char *who, int whisper, char *msg, time_t mtime ); 313 313 G_MODULE_EXPORT void serv_got_chat_left( struct gaim_connection *gc, int id ); 314 /* void serv_finish_login( struct gaim_connection *gc ); */315 314 316 315 /* util.c */ 317 G_MODULE_EXPORT char *utf8_to_str( const char *in );318 G_MODULE_EXPORT char *str_to_utf8( const char *in );319 316 G_MODULE_EXPORT void strip_linefeed( gchar *text ); 320 317 G_MODULE_EXPORT char *add_cr( char *text ); … … 323 320 G_MODULE_EXPORT time_t get_time( int year, int month, int day, int hour, int min, int sec ); 324 321 G_MODULE_EXPORT void strip_html( char *msg ); 325 G_MODULE_EXPORT char * escape_html(const char *html);322 G_MODULE_EXPORT char *escape_html( const char *html ); 326 323 G_MODULE_EXPORT void info_string_append(GString *str, char *newline, char *name, char *value); 324 G_MODULE_EXPORT char *ipv6_wrap( char *src ); 325 G_MODULE_EXPORT char *ipv6_unwrap( char *src ); 327 326 328 327 /* prefs.c */ -
protocols/oscar/Makefile
r3e91c3e r8e419cb 16 16 17 17 # [SH] Phony targets 18 all: oscar r.o18 all: oscar_mod.o 19 19 20 20 .PHONY: all clean distclean … … 33 33 @$(CC) -c $(CFLAGS) $< -o $@ 34 34 35 oscar r.o: $(objects)36 @echo '*' Linking oscar r.o37 @$(LD) $(LFLAGS) $(objects) -o oscar r.o35 oscar_mod.o: $(objects) 36 @echo '*' Linking oscar_mod.o 37 @$(LD) $(LFLAGS) $(objects) -o oscar_mod.o -
protocols/oscar/oscar.c
r3e91c3e r8e419cb 21 21 */ 22 22 23 #include "sock.h"24 23 #include <errno.h> 25 24 #include <ctype.h> … … 33 32 #include "bitlbee.h" 34 33 #include "proxy.h" 34 #include "sock.h" 35 35 36 36 #include "aim.h" -
protocols/proxy.c
r3e91c3e r8e419cb 106 106 if (condition & GAIM_WRITE_COND) 107 107 gaim_cond |= GAIM_INPUT_WRITE; 108 // if (condition & GAIM_ERR_COND)109 // fprintf( stderr, "ERROR! fd=%d\n", g_io_channel_unix_get_fd( source ) );110 108 111 109 closure->function(closure->data, g_io_channel_unix_get_fd(source), gaim_cond); -
protocols/ssl_bogus.c
r3e91c3e r8e419cb 28 28 int ssl_errno; 29 29 30 void *ssl_connect( char *host, int port, SslInputFunction func, gpointer data )30 void *ssl_connect( char *host, int port, ssl_input_function func, gpointer data ) 31 31 { 32 32 return( NULL ); … … 51 51 return( -1 ); 52 52 } 53 54 GaimInputCondition ssl_getdirection( void *conn ) 55 { 56 return GAIM_INPUT_READ; 57 } -
protocols/ssl_client.h
r3e91c3e r8e419cb 33 33 extern int ssl_errno; 34 34 35 typedef void (* SslInputFunction)(gpointer, void*, GaimInputCondition);35 typedef void (*ssl_input_function)(gpointer, void*, GaimInputCondition); 36 36 37 G_MODULE_EXPORT void *ssl_connect( char *host, int port, SslInputFunction func, gpointer data );37 G_MODULE_EXPORT void *ssl_connect( char *host, int port, ssl_input_function func, gpointer data ); 38 38 G_MODULE_EXPORT int ssl_read( void *conn, char *buf, int len ); 39 39 G_MODULE_EXPORT int ssl_write( void *conn, const char *buf, int len ); 40 40 G_MODULE_EXPORT void ssl_disconnect( void *conn_ ); 41 41 G_MODULE_EXPORT int ssl_getfd( void *conn ); 42 G_MODULE_EXPORT GaimInputCondition ssl_getdirection( void *conn ); -
protocols/ssl_gnutls.c
r3e91c3e r8e419cb 38 38 struct scd 39 39 { 40 SslInputFunction func;40 ssl_input_function func; 41 41 gpointer data; 42 42 int fd; … … 51 51 52 52 53 void *ssl_connect( char *host, int port, SslInputFunction func, gpointer data )53 void *ssl_connect( char *host, int port, ssl_input_function func, gpointer data ) 54 54 { 55 55 struct scd *conn = g_new0( struct scd, 1 ); … … 111 111 112 112 if( conn->inpa != -1 ) 113 { 113 114 gaim_input_remove( conn->inpa ); 115 conn->inpa = -1; 116 } 114 117 115 118 if( ( st = gnutls_handshake( conn->session ) ) < 0 ) … … 117 120 if( st == GNUTLS_E_AGAIN || st == GNUTLS_E_INTERRUPTED ) 118 121 { 119 conn->inpa = gaim_input_add( conn->fd, 120 gnutls_record_get_direction( conn->session ) ? 121 GAIM_INPUT_WRITE : GAIM_INPUT_READ, 122 conn->inpa = gaim_input_add( conn->fd, ssl_getdirection( conn ), 122 123 ssl_handshake, data ); 123 124 } … … 145 146 int ssl_read( void *conn, char *buf, int len ) 146 147 { 148 int st; 149 147 150 if( !((struct scd*)conn)->established ) 148 151 { … … 151 154 } 152 155 153 return( gnutls_record_recv( ((struct scd*)conn)->session, buf, len ) ); 154 156 st = gnutls_record_recv( ((struct scd*)conn)->session, buf, len ); 157 158 ssl_errno = SSL_OK; 159 if( st == GNUTLS_E_AGAIN || st == GNUTLS_E_INTERRUPTED ) 160 ssl_errno = SSL_AGAIN; 161 162 return st; 155 163 } 156 164 157 165 int ssl_write( void *conn, const char *buf, int len ) 158 166 { 167 int st; 168 159 169 if( !((struct scd*)conn)->established ) 160 170 { … … 163 173 } 164 174 165 return( gnutls_record_send( ((struct scd*)conn)->session, buf, len ) ); 175 st = gnutls_record_send( ((struct scd*)conn)->session, buf, len ); 176 177 ssl_errno = SSL_OK; 178 if( st == GNUTLS_E_AGAIN || st == GNUTLS_E_INTERRUPTED ) 179 ssl_errno = SSL_AGAIN; 180 181 return st; 166 182 } 167 183 … … 169 185 { 170 186 struct scd *conn = conn_; 187 188 if( conn->inpa != -1 ) 189 gaim_input_remove( conn->inpa ); 171 190 172 191 if( conn->established ) … … 184 203 return( ((struct scd*)conn)->fd ); 185 204 } 205 206 GaimInputCondition ssl_getdirection( void *conn ) 207 { 208 return( gnutls_record_get_direction( ((struct scd*)conn)->session ) ? 209 GAIM_INPUT_WRITE : GAIM_INPUT_READ ); 210 } -
protocols/ssl_nss.c
r3e91c3e r8e419cb 45 45 struct scd 46 46 { 47 SslInputFunction func;47 ssl_input_function func; 48 48 gpointer data; 49 49 int fd; … … 91 91 92 92 93 void *ssl_connect( char *host, int port, SslInputFunction func, gpointer data )93 void *ssl_connect( char *host, int port, ssl_input_function func, gpointer data ) 94 94 { 95 95 struct scd *conn = g_new0( struct scd, 1 ); -
protocols/ssl_openssl.c
r3e91c3e r8e419cb 41 41 struct scd 42 42 { 43 SslInputFunction func;43 ssl_input_function func; 44 44 gpointer data; 45 45 int fd; 46 46 gboolean established; 47 47 48 int inpa; 49 int lasterr; /* Necessary for SSL_get_error */ 48 50 SSL *ssl; 49 51 SSL_CTX *ssl_ctx; … … 54 56 55 57 56 void *ssl_connect( char *host, int port, SslInputFunction func, gpointer data )58 void *ssl_connect( char *host, int port, ssl_input_function func, gpointer data ) 57 59 { 58 60 struct scd *conn = g_new0( struct scd, 1 ); … … 93 95 } 94 96 97 static void ssl_handshake( gpointer data, gint source, GaimInputCondition cond ); 98 95 99 static void ssl_connected( gpointer data, gint source, GaimInputCondition cond ) 96 100 { … … 98 102 99 103 if( source == -1 ) 100 goto ssl_connected_failure; 101 104 return ssl_handshake( data, -1, cond ); 105 106 /* Make it non-blocking at least during the handshake... */ 107 sock_make_nonblocking( conn->fd ); 102 108 SSL_set_fd( conn->ssl, conn->fd ); 103 109 104 if( SSL_connect( conn->ssl ) < 0 ) 105 goto ssl_connected_failure; 110 return ssl_handshake( data, source, cond ); 111 } 112 113 static void ssl_handshake( gpointer data, gint source, GaimInputCondition cond ) 114 { 115 struct scd *conn = data; 116 int st; 117 118 if( conn->inpa != -1 ) 119 { 120 gaim_input_remove( conn->inpa ); 121 conn->inpa = -1; 122 } 123 124 if( ( st = SSL_connect( conn->ssl ) ) < 0 ) 125 { 126 conn->lasterr = SSL_get_error( conn->ssl, st ); 127 if( conn->lasterr != SSL_ERROR_WANT_READ && conn->lasterr != SSL_ERROR_WANT_WRITE ) 128 goto ssl_connected_failure; 129 130 conn->inpa = gaim_input_add( conn->fd, ssl_getdirection( conn ), ssl_handshake, data ); 131 return; 132 } 106 133 107 134 conn->established = TRUE; 135 sock_make_blocking( conn->fd ); /* For now... */ 108 136 conn->func( conn->data, conn, cond ); 109 137 return; … … 127 155 int ssl_read( void *conn, char *buf, int len ) 128 156 { 157 int st; 158 129 159 if( !((struct scd*)conn)->established ) 130 return( 0 ); 131 132 return( SSL_read( ((struct scd*)conn)->ssl, buf, len ) ); 160 { 161 ssl_errno = SSL_NOHANDSHAKE; 162 return -1; 163 } 164 165 st = SSL_read( ((struct scd*)conn)->ssl, buf, len ); 166 167 ssl_errno = SSL_OK; 168 if( st <= 0 ) 169 { 170 ((struct scd*)conn)->lasterr = SSL_get_error( ((struct scd*)conn)->ssl, st ); 171 if( ((struct scd*)conn)->lasterr == SSL_ERROR_WANT_READ || ((struct scd*)conn)->lasterr == SSL_ERROR_WANT_WRITE ) 172 ssl_errno = SSL_AGAIN; 173 } 174 175 return st; 133 176 } 134 177 135 178 int ssl_write( void *conn, const char *buf, int len ) 136 179 { 180 int st; 181 137 182 if( !((struct scd*)conn)->established ) 138 return( 0 ); 139 140 return( SSL_write( ((struct scd*)conn)->ssl, buf, len ) ); 183 { 184 ssl_errno = SSL_NOHANDSHAKE; 185 return -1; 186 } 187 188 st = SSL_write( ((struct scd*)conn)->ssl, buf, len ); 189 190 ssl_errno = SSL_OK; 191 if( st <= 0 ) 192 { 193 ((struct scd*)conn)->lasterr = SSL_get_error( ((struct scd*)conn)->ssl, st ); 194 if( ((struct scd*)conn)->lasterr == SSL_ERROR_WANT_READ || ((struct scd*)conn)->lasterr == SSL_ERROR_WANT_WRITE ) 195 ssl_errno = SSL_AGAIN; 196 } 197 198 return st; 141 199 } 142 200 … … 144 202 { 145 203 struct scd *conn = conn_; 204 205 if( conn->inpa != -1 ) 206 gaim_input_remove( conn->inpa ); 146 207 147 208 if( conn->established ) … … 159 220 return( ((struct scd*)conn)->fd ); 160 221 } 222 223 GaimInputCondition ssl_getdirection( void *conn ) 224 { 225 return( ((struct scd*)conn)->lasterr == SSL_ERROR_WANT_WRITE ? GAIM_INPUT_WRITE : GAIM_INPUT_READ ); 226 } -
protocols/yahoo/Makefile
r3e91c3e r8e419cb 16 16 17 17 # [SH] Phony targets 18 all: yahoo o.o18 all: yahoo_mod.o 19 19 20 20 .PHONY: all clean distclean … … 33 33 @$(CC) -c $(CFLAGS) $< -o $@ 34 34 35 yahoo o.o: $(objects)36 @echo '*' Linking yahoo o.o37 @$(LD) $(LFLAGS) $(objects) -o yahoo o.o35 yahoo_mod.o: $(objects) 36 @echo '*' Linking yahoo_mod.o 37 @$(LD) $(LFLAGS) $(objects) -o yahoo_mod.o -
protocols/yahoo/yahoo_fn.c
r3e91c3e r8e419cb 25 25 #include "yahoo_fn.h" 26 26 27 unsigned char table_0[256] = {27 static const unsigned char table_0[256] = { 28 28 0x5A, 0x41, 0x11, 0x77, 0x29, 0x9C, 0x31, 0xAD, 29 29 0x4A, 0x32, 0x1A, 0x6D, 0x56, 0x9F, 0x39, 0xA6, … … 59 59 0x7B, 0xBE, 0xF9, 0xAF, 0x82, 0x63, 0x47, 0x23 }; 60 60 61 unsigned char table_1[256] = {61 static const unsigned char table_1[256] = { 62 62 0x08, 0xCB, 0x54, 0xCF, 0x97, 0x53, 0x59, 0xF1, 63 63 0x66, 0xEC, 0xDB, 0x1B, 0xB1, 0xE2, 0x36, 0xEB, … … 93 93 0x05, 0x95, 0xBB, 0x79, 0x61, 0x3E, 0x81, 0xF7 }; 94 94 95 unsigned char table_2[32] = {95 static const unsigned char table_2[32] = { 96 96 0x19, 0x05, 0x09, 0x1C, 0x0B, 0x1A, 0x12, 0x03, 97 97 0x06, 0x04, 0x0D, 0x1D, 0x15, 0x0E, 0x1B, 0x18, … … 99 99 0x16, 0x0A, 0x10, 0x0F, 0x01, 0x14, 0x11, 0x17 }; 100 100 101 unsigned char table_3[256] = {101 static const unsigned char table_3[256] = { 102 102 0xBC, 0x1B, 0xCC, 0x1E, 0x5B, 0x59, 0x4F, 0xA8, 103 103 0x62, 0xC6, 0xC1, 0xBB, 0x83, 0x2D, 0xA3, 0xA6, … … 133 133 0x7C, 0xEF, 0xE0, 0x99, 0x09, 0xA0, 0x01, 0x7E }; 134 134 135 unsigned char table_4[32] = {135 static const unsigned char table_4[32] = { 136 136 0x1F, 0x0B, 0x00, 0x1E, 0x03, 0x0E, 0x15, 0x01, 137 137 0x1A, 0x17, 0x1D, 0x1B, 0x11, 0x0F, 0x0A, 0x12, … … 139 139 0x08, 0x05, 0x10, 0x19, 0x0C, 0x14, 0x16, 0x1C }; 140 140 141 unsigned char table_5[256] = {141 static const unsigned char table_5[256] = { 142 142 0x9A, 0xAB, 0x61, 0x28, 0x0A, 0x23, 0xFC, 0xBA, 143 143 0x90, 0x22, 0xB7, 0x62, 0xD9, 0x09, 0x91, 0xF4, … … 173 173 0x46, 0x73, 0x69, 0xD5, 0x10, 0xEE, 0x02, 0xEF }; 174 174 175 unsigned char table_6[32] = {175 static const unsigned char table_6[32] = { 176 176 0x1A, 0x1C, 0x0F, 0x0C, 0x00, 0x02, 0x13, 0x09, 177 177 0x11, 0x05, 0x0D, 0x12, 0x18, 0x0B, 0x04, 0x10, … … 179 179 0x19, 0x1F, 0x01, 0x0E, 0x15, 0x06, 0x0A, 0x1D }; 180 180 181 unsigned char table_7[256] = {181 static const unsigned char table_7[256] = { 182 182 0x52, 0x11, 0x72, 0xD0, 0x76, 0xD7, 0xAE, 0x03, 183 183 0x7F, 0x19, 0xF4, 0xB8, 0xB3, 0x5D, 0xCA, 0x2D, … … 213 213 0x88, 0x9E, 0x9C, 0x5B, 0x4D, 0x3A, 0x39, 0xEF }; 214 214 215 unsigned char table_8[32] = {215 static const unsigned char table_8[32] = { 216 216 0x13, 0x08, 0x1E, 0x1D, 0x17, 0x16, 0x07, 0x1F, 217 217 0x0E, 0x03, 0x1A, 0x19, 0x01, 0x12, 0x11, 0x10, … … 219 219 0x1C, 0x18, 0x0A, 0x15, 0x02, 0x1B, 0x06, 0x0D }; 220 220 221 unsigned char table_9[256] = {221 static const unsigned char table_9[256] = { 222 222 0x20, 0x2A, 0xDA, 0xFE, 0x76, 0x0D, 0xED, 0x39, 223 223 0x51, 0x4C, 0x46, 0x9A, 0xF1, 0xB0, 0x10, 0xC7, … … 253 253 0xF9, 0xF0, 0x2C, 0x74, 0xE9, 0x71, 0xC0, 0x2D }; 254 254 255 unsigned char table_10[32] = {255 static const unsigned char table_10[32] = { 256 256 0x1D, 0x12, 0x11, 0x0D, 0x1E, 0x19, 0x16, 0x1B, 257 257 0x18, 0x13, 0x07, 0x17, 0x0C, 0x02, 0x00, 0x15, … … 259 259 0x1F, 0x1A, 0x0B, 0x09, 0x0A, 0x14, 0x1C, 0x03 }; 260 260 261 unsigned char table_11[256] = {261 static const unsigned char table_11[256] = { 262 262 0x6B, 0x1D, 0xC6, 0x0A, 0xB7, 0xAC, 0xB2, 0x11, 263 263 0x29, 0xD3, 0xA2, 0x4D, 0xCB, 0x03, 0xEF, 0xA6, … … 293 293 0x64, 0x76, 0xFF, 0x9F, 0x2E, 0x02, 0xCC, 0x57 }; 294 294 295 unsigned char table_12[32] = {295 static const unsigned char table_12[32] = { 296 296 0x14, 0x1B, 0x18, 0x00, 0x1F, 0x15, 0x17, 0x07, 297 297 0x11, 0x1A, 0x0E, 0x13, 0x12, 0x06, 0x01, 0x03, … … 299 299 0x0D, 0x1E, 0x04, 0x05, 0x08, 0x16, 0x0A, 0x02 }; 300 300 301 unsigned char table_13[256] = {301 static const unsigned char table_13[256] = { 302 302 0x37, 0x8A, 0x1B, 0x91, 0xA5, 0x2B, 0x2D, 0x88, 303 303 0x8E, 0xFE, 0x0E, 0xD3, 0xF3, 0xE9, 0x7D, 0xD1, … … 333 333 0x97, 0x4A, 0xB8, 0x7A, 0xF4, 0xFB, 0x04, 0xA8 }; 334 334 335 unsigned char table_14[32] = {335 static const unsigned char table_14[32] = { 336 336 0x04, 0x14, 0x13, 0x15, 0x1A, 0x1B, 0x0F, 0x16, 337 337 0x02, 0x0D, 0x0C, 0x06, 0x10, 0x17, 0x01, 0x0B, … … 339 339 0x11, 0x09, 0x1D, 0x07, 0x0E, 0x12, 0x03, 0x00 }; 340 340 341 unsigned char table_15[256] = {341 static const unsigned char table_15[256] = { 342 342 0x61, 0x48, 0x58, 0x41, 0x7F, 0x88, 0x43, 0x42, 343 343 0xD9, 0x80, 0x81, 0xFE, 0xC6, 0x49, 0xD7, 0x2C, … … 373 373 0xAB, 0x8D, 0x02, 0x74, 0xBD, 0x3D, 0x8E, 0xDD }; 374 374 375 unsigned char table_16[256] = {375 static const unsigned char table_16[256] = { 376 376 0x3F, 0x9C, 0x17, 0xC1, 0x59, 0xC6, 0x23, 0x93, 377 377 0x4B, 0xDF, 0xCB, 0x55, 0x2B, 0xDE, 0xCD, 0xAD, … … 407 407 0xF4, 0xBE, 0xEA, 0x19, 0x43, 0x01, 0xB1, 0x96 }; 408 408 409 unsigned char table_17[256] = {409 static const unsigned char table_17[256] = { 410 410 0x7E, 0xF1, 0xD3, 0x75, 0x87, 0xA6, 0xED, 0x9E, 411 411 0xA9, 0xD5, 0xC6, 0xBF, 0xE6, 0x6A, 0xEE, 0x4B, … … 441 441 0x9F, 0x99, 0x62, 0xAA, 0xFA, 0x11, 0x0C, 0x52 }; 442 442 443 unsigned char table_18[256] = {443 static const unsigned char table_18[256] = { 444 444 0x0F, 0x42, 0x3D, 0x86, 0x3E, 0x66, 0xFE, 0x5C, 445 445 0x52, 0xE2, 0xA3, 0xB3, 0xCE, 0x16, 0xCC, 0x95, … … 475 475 0xFA, 0x4E, 0xEF, 0x54, 0xE6, 0x7F, 0xC0, 0x67 }; 476 476 477 unsigned char table_19[256] = {477 static const unsigned char table_19[256] = { 478 478 0xEA, 0xE7, 0x13, 0x14, 0xB9, 0xC0, 0xC4, 0x42, 479 479 0x49, 0x6E, 0x2A, 0xA6, 0x65, 0x3C, 0x6A, 0x40, … … 509 509 0x1E, 0x0D, 0xAE, 0x7B, 0x5E, 0x61, 0xE9, 0x63 }; 510 510 511 unsigned char table_20[32] = {511 static const unsigned char table_20[32] = { 512 512 0x0D, 0x0B, 0x11, 0x02, 0x05, 0x1B, 0x08, 0x1D, 513 513 0x04, 0x14, 0x01, 0x09, 0x00, 0x19, 0x1E, 0x15, … … 515 515 0x13, 0x1A, 0x06, 0x17, 0x0E, 0x12, 0x18, 0x03 }; 516 516 517 unsigned char table_21[256] = {517 static const unsigned char table_21[256] = { 518 518 0x4C, 0x94, 0xAD, 0x66, 0x9E, 0x69, 0x04, 0xA8, 519 519 0x61, 0xE0, 0xE1, 0x3D, 0xFD, 0x9C, 0xFB, 0x19, … … 549 549 0xFF, 0xD8, 0xE7, 0xDD, 0xBB, 0x78, 0xD5, 0x81 }; 550 550 551 unsigned char table_22[32] = {551 static const unsigned char table_22[32] = { 552 552 0x0B, 0x15, 0x1C, 0x0C, 0x06, 0x0A, 0x1D, 0x16, 553 553 0x12, 0x0E, 0x04, 0x11, 0x1F, 0x0F, 0x07, 0x02, … … 555 555 0x03, 0x00, 0x01, 0x08, 0x09, 0x14, 0x1B, 0x1E }; 556 556 557 unsigned char table_23[256] = {557 static const unsigned char table_23[256] = { 558 558 0x36, 0x53, 0x2D, 0xD0, 0x7A, 0xF0, 0xD5, 0x1C, 559 559 0x50, 0x61, 0x9A, 0x90, 0x0B, 0x29, 0x20, 0x77, … … 589 589 0x1D, 0x15, 0xC6, 0xBF, 0xA9, 0x43, 0xC0, 0x49 }; 590 590 591 unsigned char table_24[256] = {591 static const unsigned char table_24[256] = { 592 592 0xDC, 0x5A, 0xE6, 0x59, 0x64, 0xDA, 0x58, 0x40, 593 593 0x95, 0xF8, 0x2A, 0xE0, 0x39, 0x7E, 0x32, 0x89, … … 623 623 0xEA, 0x8D, 0x2D, 0x5F, 0xF6, 0xA7, 0x80, 0x3A }; 624 624 625 unsigned char table_25[32] = {625 static const unsigned char table_25[32] = { 626 626 0x0A, 0x11, 0x17, 0x03, 0x05, 0x0B, 0x18, 0x13, 627 627 0x09, 0x02, 0x00, 0x1C, 0x0C, 0x08, 0x1B, 0x14, … … 629 629 0x0F, 0x1A, 0x10, 0x04, 0x12, 0x15, 0x07, 0x1F }; 630 630 631 unsigned char table_26[32] = {631 static const unsigned char table_26[32] = { 632 632 0x19, 0x13, 0x1B, 0x01, 0x1C, 0x0D, 0x0C, 0x15, 633 633 0x0B, 0x00, 0x1A, 0x0F, 0x12, 0x16, 0x08, 0x0A, … … 635 635 0x1F, 0x07, 0x17, 0x05, 0x02, 0x0E, 0x1E, 0x09 }; 636 636 637 unsigned char table_27[256] = {637 static const unsigned char table_27[256] = { 638 638 0x72, 0xF0, 0x14, 0xCB, 0x61, 0xA5, 0xB2, 0x02, 639 639 0x75, 0x22, 0xC3, 0x9D, 0x5A, 0x63, 0xFA, 0x5F, … … 669 669 0x5E, 0x6F, 0x47, 0x64, 0xBC, 0x9A, 0x60, 0x7E }; 670 670 671 unsigned char table_28[32] = {671 static const unsigned char table_28[32] = { 672 672 0x15, 0x05, 0x08, 0x19, 0x02, 0x18, 0x1E, 0x07, 673 673 0x0D, 0x0C, 0x1A, 0x06, 0x17, 0x03, 0x10, 0x09, … … 675 675 0x1B, 0x13, 0x0A, 0x16, 0x0E, 0x00, 0x1D, 0x14 }; 676 676 677 unsigned char table_29[256] = {677 static const unsigned char table_29[256] = { 678 678 0x34, 0x59, 0x05, 0x13, 0x09, 0x1D, 0xDF, 0x77, 679 679 0x11, 0xA5, 0x92, 0x27, 0xCD, 0x7B, 0x5E, 0x80, … … 709 709 0x46, 0x62, 0xB6, 0xB0, 0x15, 0x04, 0x95, 0x4D }; 710 710 711 unsigned char table_30[32] = {711 static const unsigned char table_30[32] = { 712 712 0x00, 0x1C, 0x0E, 0x0C, 0x06, 0x16, 0x09, 0x12, 713 713 0x01, 0x13, 0x0B, 0x14, 0x11, 0x08, 0x04, 0x18, … … 715 715 0x1E, 0x1F, 0x0F, 0x07, 0x0D, 0x05, 0x1D, 0x0A }; 716 716 717 unsigned char table_31[256] = {717 static const unsigned char table_31[256] = { 718 718 0xDF, 0xD8, 0x3F, 0xBC, 0x5F, 0xC9, 0x8E, 0x4C, 719 719 0x0B, 0x3C, 0xE5, 0xBF, 0x39, 0xD5, 0x30, 0xDD, … … 749 749 0x92, 0x48, 0xF7, 0x0A, 0xF6, 0xE2, 0x4B, 0x56 }; 750 750 751 unsigned char table_32[256] = {751 static const unsigned char table_32[256] = { 752 752 0x7B, 0x0F, 0x56, 0x2F, 0x1E, 0x2A, 0x7A, 0xD1, 753 753 0x02, 0x91, 0x4E, 0x37, 0x6C, 0x10, 0xA7, 0xF2, … … 783 783 0x47, 0x6B, 0x8A, 0xA2, 0x9A, 0xA3, 0x45, 0x41 }; 784 784 785 unsigned char table_33[256] = {785 static const unsigned char table_33[256] = { 786 786 0xDE, 0xD3, 0x79, 0x67, 0x13, 0x5C, 0x04, 0xF2, 787 787 0xD9, 0x9F, 0x65, 0x56, 0xCC, 0x3B, 0xA4, 0x9A, … … 817 817 0x80, 0x3C, 0xEE, 0x47, 0xC6, 0x3A, 0x53, 0xF6 }; 818 818 819 unsigned char table_34[256] = {819 static const unsigned char table_34[256] = { 820 820 0xF0, 0xE9, 0x3E, 0xD6, 0x89, 0xC8, 0xC7, 0x23, 821 821 0x75, 0x26, 0x5F, 0x9C, 0x57, 0xB8, 0x2A, 0x29, … … 851 851 0x03, 0x05, 0xBF, 0x06, 0x1B, 0xC0, 0x1A, 0x60 }; 852 852 853 unsigned char table_35[256] = {853 static const unsigned char table_35[256] = { 854 854 0xCC, 0x40, 0xEF, 0x1F, 0xDB, 0xE5, 0x71, 0x51, 855 855 0x3B, 0x0F, 0x7D, 0x9C, 0x83, 0x17, 0x6F, 0x8F, … … 885 885 0x59, 0xC4, 0x9F, 0xD0, 0x66, 0x7B, 0x33, 0xB5 }; 886 886 887 unsigned char table_36[256] = {887 static const unsigned char table_36[256] = { 888 888 0xDB, 0x6F, 0xFE, 0xB3, 0x5C, 0x1F, 0xB8, 0xBF, 889 889 0xA3, 0x71, 0x11, 0x56, 0x90, 0xE2, 0x63, 0x18, … … 919 919 0x4B, 0xB6, 0x7B, 0x4D, 0xCF, 0x7E, 0x48, 0xE3 }; 920 920 921 unsigned char table_37[256] = {921 static const unsigned char table_37[256] = { 922 922 0x1F, 0xD6, 0xB1, 0xB3, 0x40, 0xAD, 0xDE, 0xB7, 923 923 0x19, 0xB4, 0xE7, 0x0B, 0x9C, 0x2D, 0xE0, 0xF5, … … 953 953 0x73, 0xC8, 0x86, 0x47, 0xDB, 0xAB, 0x6F, 0x8C }; 954 954 955 unsigned char table_38[256] = {955 static const unsigned char table_38[256] = { 956 956 0xAA, 0x8D, 0x37, 0x94, 0x99, 0xDD, 0x70, 0x77, 957 957 0x78, 0xC9, 0x0F, 0xFA, 0xE2, 0x05, 0xC2, 0x16, … … 987 987 0x09, 0x76, 0x00, 0x46, 0x4E, 0x53, 0xCE, 0x4A }; 988 988 989 unsigned char table_39[32] = {989 static const unsigned char table_39[32] = { 990 990 0x12, 0x18, 0x0E, 0x08, 0x16, 0x05, 0x06, 0x00, 991 991 0x11, 0x17, 0x15, 0x1B, 0x14, 0x01, 0x1F, 0x19, … … 993 993 0x0B, 0x13, 0x0C, 0x09, 0x1E, 0x02, 0x1A, 0x1C }; 994 994 995 unsigned char table_40[32] = {995 static const unsigned char table_40[32] = { 996 996 0x16, 0x02, 0x06, 0x0E, 0x0D, 0x1C, 0x08, 0x0A, 997 997 0x0F, 0x13, 0x0B, 0x18, 0x07, 0x04, 0x14, 0x01, … … 999 999 0x12, 0x19, 0x1D, 0x03, 0x0C, 0x00, 0x09, 0x15 }; 1000 1000 1001 unsigned char table_41[32] = {1001 static const unsigned char table_41[32] = { 1002 1002 0x13, 0x18, 0x04, 0x1F, 0x1D, 0x11, 0x03, 0x00, 1003 1003 0x10, 0x12, 0x06, 0x0A, 0x1C, 0x07, 0x15, 0x0E, … … 1005 1005 0x1A, 0x17, 0x14, 0x1E, 0x0D, 0x0F, 0x19, 0x1B }; 1006 1006 1007 unsigned char table_42[32] = {1007 static const unsigned char table_42[32] = { 1008 1008 0x00, 0x08, 0x15, 0x1D, 0x05, 0x18, 0x06, 0x07, 1009 1009 0x1F, 0x01, 0x0B, 0x03, 0x19, 0x13, 0x02, 0x1C, … … 1011 1011 0x1B, 0x16, 0x10, 0x0D, 0x0A, 0x14, 0x12, 0x04 }; 1012 1012 1013 unsigned char table_43[256] = {1013 static const unsigned char table_43[256] = { 1014 1014 0x34, 0xB7, 0x36, 0x85, 0x5F, 0x93, 0x98, 0x70, 1015 1015 0x1E, 0x59, 0x83, 0x60, 0x6F, 0xBF, 0xF9, 0xD0, … … 1045 1045 0x73, 0x76, 0x3A, 0x21, 0x53, 0xA4, 0x50, 0x6A }; 1046 1046 1047 unsigned char table_44[32] = {1047 static const unsigned char table_44[32] = { 1048 1048 0x1A, 0x0E, 0x0A, 0x17, 0x1F, 0x08, 0x10, 0x14, 1049 1049 0x0C, 0x0F, 0x09, 0x1C, 0x06, 0x18, 0x1E, 0x12, … … 1051 1051 0x16, 0x19, 0x05, 0x1D, 0x02, 0x07, 0x04, 0x1B }; 1052 1052 1053 unsigned char table_45[256] = {1053 static const unsigned char table_45[256] = { 1054 1054 0x5E, 0xD6, 0xE2, 0x54, 0x35, 0xC2, 0xAC, 0x9D, 1055 1055 0x92, 0x64, 0x57, 0x65, 0xC8, 0xAE, 0x21, 0xA9, … … 1085 1085 0xF9, 0x2B, 0x32, 0x8F, 0xFB, 0xC7, 0x07, 0x82 }; 1086 1086 1087 unsigned char table_46[256] = {1087 static const unsigned char table_46[256] = { 1088 1088 0x85, 0x78, 0xFE, 0x6C, 0x61, 0xA0, 0x71, 0xCC, 1089 1089 0x45, 0x54, 0x7A, 0xE6, 0x82, 0x1D, 0xA6, 0x02, … … 1119 1119 0xC7, 0xE4, 0x37, 0xE5, 0xFC, 0xBD, 0x99, 0x41 }; 1120 1120 1121 unsigned char table_47[32] = {1121 static const unsigned char table_47[32] = { 1122 1122 0x18, 0x1D, 0x16, 0x10, 0x11, 0x04, 0x1E, 0x08, 1123 1123 0x19, 0x0E, 0x0F, 0x02, 0x14, 0x1C, 0x07, 0x17, … … 1125 1125 0x13, 0x15, 0x0C, 0x00, 0x06, 0x1F, 0x03, 0x1B }; 1126 1126 1127 unsigned char table_48[32] = {1127 static const unsigned char table_48[32] = { 1128 1128 0x13, 0x08, 0x15, 0x01, 0x17, 0x10, 0x0F, 0x1F, 1129 1129 0x1D, 0x0D, 0x12, 0x03, 0x06, 0x0A, 0x1C, 0x19, … … 1131 1131 0x14, 0x09, 0x0C, 0x18, 0x05, 0x07, 0x0E, 0x0B }; 1132 1132 1133 unsigned char table_49[32] = {1133 static const unsigned char table_49[32] = { 1134 1134 0x1F, 0x0F, 0x19, 0x07, 0x18, 0x05, 0x1E, 0x1D, 1135 1135 0x15, 0x08, 0x17, 0x10, 0x0A, 0x0E, 0x0C, 0x1B, … … 1137 1137 0x12, 0x1C, 0x0B, 0x16, 0x14, 0x01, 0x11, 0x00 }; 1138 1138 1139 unsigned char table_50[32] = {1139 static const unsigned char table_50[32] = { 1140 1140 0x16, 0x18, 0x1C, 0x0E, 0x12, 0x00, 0x04, 0x1B, 1141 1141 0x1F, 0x13, 0x17, 0x0A, 0x1E, 0x03, 0x0C, 0x01, … … 1143 1143 0x06, 0x0D, 0x0B, 0x1D, 0x05, 0x07, 0x11, 0x1A }; 1144 1144 1145 unsigned char table_51[32] = {1145 static const unsigned char table_51[32] = { 1146 1146 0x1C, 0x0D, 0x1B, 0x07, 0x17, 0x0E, 0x06, 0x01, 1147 1147 0x12, 0x19, 0x03, 0x0B, 0x10, 0x08, 0x00, 0x1E, … … 1149 1149 0x0F, 0x11, 0x05, 0x09, 0x15, 0x16, 0x1F, 0x14 }; 1150 1150 1151 unsigned char table_52[256] = {1151 static const unsigned char table_52[256] = { 1152 1152 0x34, 0x0B, 0x47, 0xA3, 0x56, 0x30, 0x73, 0xD4, 1153 1153 0x4B, 0xF6, 0xA6, 0x80, 0x22, 0x95, 0xA5, 0xBB, … … 1183 1183 0x01, 0x0C, 0x5D, 0x7D, 0xB8, 0xBE, 0x6A, 0x16 }; 1184 1184 1185 unsigned char table_53[256] = {1185 static const unsigned char table_53[256] = { 1186 1186 0xE3, 0xF4, 0x8D, 0x72, 0x45, 0x32, 0x9D, 0xCE, 1187 1187 0x1F, 0x6B, 0xBC, 0xDC, 0xF1, 0xEC, 0x5A, 0x3B, … … 1217 1217 0xAB, 0x64, 0xE0, 0xBE, 0xDA, 0xBD, 0x96, 0x94 }; 1218 1218 1219 unsigned char table_54[32] = {1219 static const unsigned char table_54[32] = { 1220 1220 0x01, 0x02, 0x1D, 0x10, 0x0E, 0x11, 0x08, 0x14, 1221 1221 0x12, 0x09, 0x15, 0x17, 0x16, 0x04, 0x06, 0x1B, … … 1223 1223 0x0C, 0x0B, 0x0D, 0x05, 0x0F, 0x00, 0x19, 0x03 }; 1224 1224 1225 unsigned char table_55[32] = {1225 static const unsigned char table_55[32] = { 1226 1226 0x01, 0x12, 0x13, 0x09, 0x0B, 0x19, 0x03, 0x0E, 1227 1227 0x02, 0x1F, 0x1D, 0x1B, 0x1E, 0x11, 0x06, 0x05, … … 1229 1229 0x18, 0x10, 0x0F, 0x17, 0x1C, 0x0A, 0x04, 0x14 }; 1230 1230 1231 unsigned char table_56[256] = {1231 static const unsigned char table_56[256] = { 1232 1232 0xEF, 0x06, 0x5F, 0x11, 0x4B, 0x60, 0x13, 0xBB, 1233 1233 0x79, 0xD7, 0xE4, 0x6D, 0x22, 0xB4, 0x15, 0x50, … … 1263 1263 0x96, 0xD5, 0xEB, 0x64, 0x8A, 0xC8, 0x7A, 0xBE }; 1264 1264 1265 unsigned char table_57[256] = {1265 static const unsigned char table_57[256] = { 1266 1266 0xD1, 0x9B, 0x15, 0x06, 0xB4, 0xF6, 0x97, 0xF0, 1267 1267 0xC6, 0x5B, 0x88, 0x12, 0x25, 0xFA, 0x7B, 0x79, … … 1297 1297 0x4E, 0x3C, 0x84, 0x14, 0x28, 0x3A, 0xE9, 0xC0 }; 1298 1298 1299 unsigned char table_58[256] = {1299 static const unsigned char table_58[256] = { 1300 1300 0xE9, 0x81, 0x60, 0xA7, 0x18, 0xA0, 0x0F, 0x55, 1301 1301 0x2B, 0x52, 0xE0, 0x8B, 0x9D, 0x85, 0xD2, 0xA3, … … 1331 1331 0x68, 0x1E, 0xF6, 0xA6, 0x6C, 0xB2, 0xD1, 0x58 }; 1332 1332 1333 unsigned char table_59[256] = {1333 static const unsigned char table_59[256] = { 1334 1334 0x4C, 0x85, 0x2B, 0x14, 0xCC, 0x4D, 0x5F, 0xD7, 1335 1335 0xCE, 0x28, 0xC5, 0x0B, 0xA1, 0x99, 0x08, 0xDE, … … 1365 1365 0x5D, 0x1A, 0x8D, 0xC1, 0x58, 0x48, 0xAD, 0x0F }; 1366 1366 1367 unsigned char table_60[32] = {1367 static const unsigned char table_60[32] = { 1368 1368 0x1C, 0x06, 0x1E, 0x10, 0x1D, 0x05, 0x00, 0x0E, 1369 1369 0x0C, 0x02, 0x11, 0x19, 0x15, 0x18, 0x16, 0x07, … … 1371 1371 0x03, 0x08, 0x12, 0x04, 0x1B, 0x0A, 0x17, 0x1A }; 1372 1372 1373 unsigned char table_61[256] = {1373 static const unsigned char table_61[256] = { 1374 1374 0xC5, 0xA6, 0xF2, 0x6B, 0x4B, 0x58, 0xE0, 0x41, 1375 1375 0xC6, 0x2F, 0x13, 0xFE, 0xC1, 0x34, 0x3F, 0x24, … … 1405 1405 0xCF, 0x60, 0xAA, 0xA4, 0xEB, 0xC4, 0x4E, 0xC2 }; 1406 1406 1407 unsigned char table_62[256] = {1407 static const unsigned char table_62[256] = { 1408 1408 0x01, 0x59, 0xEC, 0xFC, 0x51, 0xD2, 0xE4, 0x9D, 1409 1409 0xAA, 0x61, 0xD5, 0xCA, 0x63, 0x5D, 0xCE, 0x36, … … 1439 1439 0xCF, 0xE9, 0xDB, 0xD3, 0x02, 0x9A, 0x0E, 0x5F }; 1440 1440 1441 unsigned char table_63[256] = {1441 static const unsigned char table_63[256] = { 1442 1442 0x0C, 0x02, 0xEE, 0x94, 0x2D, 0x76, 0x96, 0x75, 1443 1443 0x21, 0xDC, 0x37, 0x03, 0xC0, 0xF7, 0xDF, 0xEF, … … 1473 1473 0x8C, 0xE2, 0x83, 0xA7, 0xD6, 0x0E, 0xB3, 0xDD }; 1474 1474 1475 unsigned char table_64[32] = {1475 static const unsigned char table_64[32] = { 1476 1476 0x03, 0x05, 0x0D, 0x09, 0x1A, 0x16, 0x08, 0x10, 1477 1477 0x06, 0x1E, 0x1C, 0x15, 0x02, 0x04, 0x17, 0x0C, … … 1479 1479 0x0E, 0x00, 0x1D, 0x1F, 0x01, 0x0F, 0x07, 0x12 }; 1480 1480 1481 unsigned char table_65[32] = {1481 static const unsigned char table_65[32] = { 1482 1482 0x01, 0x0A, 0x1E, 0x14, 0x10, 0x1D, 0x0D, 0x17, 1483 1483 0x0E, 0x0C, 0x0F, 0x12, 0x04, 0x1A, 0x05, 0x02, … … 1485 1485 0x11, 0x00, 0x16, 0x06, 0x03, 0x18, 0x15, 0x07 }; 1486 1486 1487 unsigned char table_66[32] = {1487 static const unsigned char table_66[32] = { 1488 1488 0x1C, 0x18, 0x0C, 0x09, 0x05, 0x03, 0x15, 0x12, 1489 1489 0x0D, 0x02, 0x08, 0x0E, 0x19, 0x07, 0x13, 0x17, … … 1491 1491 0x0F, 0x10, 0x01, 0x1B, 0x00, 0x04, 0x1A, 0x16 }; 1492 1492 1493 unsigned char table_67[256] = {1493 static const unsigned char table_67[256] = { 1494 1494 0x6B, 0x49, 0xC8, 0x86, 0xFF, 0xC0, 0x5D, 0xEF, 1495 1495 0xF7, 0x06, 0xE0, 0x98, 0xA9, 0x72, 0x71, 0xD5, … … 1525 1525 0x24, 0x43, 0x21, 0x83, 0xFB, 0xFD, 0x8B, 0x96 }; 1526 1526 1527 unsigned char table_68[256] = {1527 static const unsigned char table_68[256] = { 1528 1528 0x93, 0xFF, 0x83, 0x70, 0x12, 0x2D, 0x1C, 0xD6, 1529 1529 0xF9, 0xEE, 0xCF, 0x94, 0x7B, 0xB5, 0xA4, 0x84, … … 1559 1559 0x8C, 0x6D, 0x91, 0x63, 0x3A, 0x4D, 0xC1, 0x01 }; 1560 1560 1561 unsigned char table_69[256] = {1561 static const unsigned char table_69[256] = { 1562 1562 0x21, 0x6B, 0x9B, 0xAE, 0x11, 0x5A, 0x91, 0xC2, 1563 1563 0x47, 0x8E, 0x87, 0x86, 0x4F, 0xFC, 0x8F, 0x66, … … 1593 1593 0x73, 0xDB, 0xB6, 0x83, 0xCE, 0x1E, 0xC1, 0x3C }; 1594 1594 1595 unsigned char table_70[256] = {1595 static const unsigned char table_70[256] = { 1596 1596 0x54, 0x23, 0xF1, 0x09, 0x9D, 0xEB, 0x26, 0xD9, 1597 1597 0x6C, 0xC1, 0xBC, 0x3D, 0x6E, 0xB0, 0x5F, 0xE2, … … 1627 1627 0x49, 0x84, 0x38, 0xC7, 0xE3, 0xD4, 0x1A, 0xBF }; 1628 1628 1629 unsigned char table_71[32] = {1629 static const unsigned char table_71[32] = { 1630 1630 0x17, 0x13, 0x0E, 0x1A, 0x0D, 0x18, 0x19, 0x10, 1631 1631 0x14, 0x11, 0x16, 0x05, 0x04, 0x00, 0x12, 0x0A, … … 1633 1633 0x0C, 0x06, 0x1B, 0x08, 0x1D, 0x01, 0x15, 0x1E }; 1634 1634 1635 unsigned char table_72[256] = {1635 static const unsigned char table_72[256] = { 1636 1636 0xC9, 0xA7, 0x1B, 0xEC, 0x2B, 0x8B, 0xB0, 0xEB, 1637 1637 0x7F, 0x39, 0x25, 0xD9, 0x1D, 0xD5, 0x67, 0xA0, … … 1667 1667 0x08, 0x53, 0xF2, 0xB9, 0x5A, 0x3E, 0xE9, 0xD2 }; 1668 1668 1669 unsigned char table_73[256] = {1669 static const unsigned char table_73[256] = { 1670 1670 0x36, 0x37, 0xED, 0xD8, 0xBF, 0xD7, 0x12, 0xB7, 1671 1671 0x40, 0x32, 0x19, 0x4A, 0x44, 0x2A, 0xCE, 0xA5, … … 1701 1701 0xFF, 0x90, 0x6B, 0xBC, 0x54, 0x95, 0xBD, 0x07 }; 1702 1702 1703 unsigned char table_74[256] = {1703 static const unsigned char table_74[256] = { 1704 1704 0xA7, 0xCF, 0x99, 0x1A, 0x13, 0xC7, 0xE9, 0xC4, 1705 1705 0xB6, 0x0E, 0x15, 0x09, 0xFF, 0xDF, 0xBE, 0x03, … … 1735 1735 0x2F, 0xD8, 0xC3, 0x7C, 0x9C, 0x98, 0xEA, 0x71 }; 1736 1736 1737 unsigned char table_75[256] = {1737 static const unsigned char table_75[256] = { 1738 1738 0xE7, 0xA5, 0x30, 0xE1, 0x9D, 0x81, 0xBE, 0x83, 1739 1739 0xB2, 0x1E, 0xE4, 0x69, 0x2F, 0x2B, 0x0D, 0xEB, … … 1769 1769 0x89, 0x46, 0x78, 0xDC, 0x32, 0x8B, 0x67, 0x36 }; 1770 1770 1771 unsigned char table_76[256] = {1771 static const unsigned char table_76[256] = { 1772 1772 0x3D, 0x66, 0x40, 0xC5, 0x1D, 0xF5, 0xE7, 0xB7, 1773 1773 0x2C, 0x23, 0x09, 0xC2, 0x68, 0xE6, 0xD3, 0x8D, … … 1803 1803 0xD1, 0x95, 0xC3, 0xA0, 0x0F, 0xCA, 0xAC, 0xFC }; 1804 1804 1805 unsigned char table_77[32] = {1805 static const unsigned char table_77[32] = { 1806 1806 0x1C, 0x0D, 0x1E, 0x01, 0x06, 0x16, 0x18, 0x17, 1807 1807 0x0B, 0x1F, 0x04, 0x0F, 0x00, 0x19, 0x08, 0x0A, … … 1809 1809 0x1A, 0x12, 0x13, 0x0E, 0x1D, 0x10, 0x02, 0x1B }; 1810 1810 1811 unsigned char table_78[32] = {1811 static const unsigned char table_78[32] = { 1812 1812 0x0E, 0x02, 0x17, 0x12, 0x1E, 0x09, 0x15, 0x03, 1813 1813 0x01, 0x0B, 0x0F, 0x11, 0x10, 0x0A, 0x16, 0x06, … … 1815 1815 0x13, 0x0D, 0x1B, 0x08, 0x19, 0x14, 0x05, 0x1A }; 1816 1816 1817 unsigned char table_79[32] = {1817 static const unsigned char table_79[32] = { 1818 1818 0x12, 0x0B, 0x11, 0x01, 0x07, 0x0E, 0x1A, 0x0D, 1819 1819 0x1E, 0x18, 0x14, 0x1F, 0x0A, 0x17, 0x19, 0x1B, … … 1821 1821 0x09, 0x06, 0x04, 0x16, 0x15, 0x1C, 0x05, 0x03 }; 1822 1822 1823 unsigned char table_80[256] = {1823 static const unsigned char table_80[256] = { 1824 1824 0x14, 0xE7, 0x31, 0x0F, 0xD1, 0x5F, 0xED, 0x1E, 1825 1825 0xA6, 0x77, 0x20, 0x57, 0x34, 0x64, 0x33, 0x0B, … … 1855 1855 0x39, 0xB9, 0xC0, 0x22, 0xF1, 0x4D, 0x90, 0xFC }; 1856 1856 1857 unsigned char table_81[32] = {1857 static const unsigned char table_81[32] = { 1858 1858 0x03, 0x02, 0x1D, 0x0E, 0x09, 0x1A, 0x0C, 0x11, 1859 1859 0x1C, 0x0D, 0x08, 0x12, 0x19, 0x10, 0x04, 0x17, … … 1861 1861 0x1E, 0x0B, 0x0F, 0x01, 0x07, 0x14, 0x1F, 0x06 }; 1862 1862 1863 unsigned char table_82[256] = {1863 static const unsigned char table_82[256] = { 1864 1864 0x53, 0xD3, 0x64, 0x89, 0x7D, 0xA5, 0x66, 0xA4, 1865 1865 0x09, 0x46, 0x17, 0x2C, 0xAF, 0x8C, 0x21, 0x5F, … … 1895 1895 0x6A, 0x78, 0xB5, 0x71, 0x56, 0x87, 0x7F, 0x86 }; 1896 1896 1897 unsigned char table_83[32] = {1897 static const unsigned char table_83[32] = { 1898 1898 0x1B, 0x0A, 0x1F, 0x01, 0x10, 0x08, 0x0E, 0x18, 1899 1899 0x06, 0x04, 0x00, 0x1C, 0x0C, 0x19, 0x0D, 0x16, … … 1901 1901 0x17, 0x1E, 0x1A, 0x1D, 0x0B, 0x11, 0x14, 0x15 }; 1902 1902 1903 unsigned char table_84[32] = {1903 static const unsigned char table_84[32] = { 1904 1904 0x02, 0x1A, 0x0D, 0x15, 0x01, 0x16, 0x1E, 0x00, 1905 1905 0x08, 0x1B, 0x04, 0x10, 0x1C, 0x18, 0x19, 0x14, … … 1907 1907 0x1D, 0x17, 0x13, 0x06, 0x0F, 0x05, 0x09, 0x1F }; 1908 1908 1909 unsigned char table_85[256] = {1909 static const unsigned char table_85[256] = { 1910 1910 0xC6, 0x7C, 0xCE, 0xBD, 0x84, 0x3E, 0x0B, 0xD8, 1911 1911 0xFE, 0xCC, 0x46, 0x50, 0xD1, 0xFB, 0xA0, 0x6D, … … 1941 1941 0x2D, 0x57, 0xE7, 0x82, 0x1E, 0x37, 0x63, 0x43 }; 1942 1942 1943 unsigned char table_86[32] = {1943 static const unsigned char table_86[32] = { 1944 1944 0x11, 0x07, 0x0F, 0x0A, 0x19, 0x1D, 0x0B, 0x09, 1945 1945 0x1C, 0x1E, 0x14, 0x06, 0x0C, 0x16, 0x13, 0x04, … … 1947 1947 0x10, 0x1A, 0x1F, 0x01, 0x17, 0x0E, 0x03, 0x1B }; 1948 1948 1949 unsigned char table_87[32] = {1949 static const unsigned char table_87[32] = { 1950 1950 0x17, 0x0E, 0x1D, 0x13, 0x0B, 0x19, 0x03, 0x06, 1951 1951 0x09, 0x01, 0x0D, 0x15, 0x1C, 0x16, 0x18, 0x1B, … … 1953 1953 0x02, 0x04, 0x07, 0x1A, 0x14, 0x0A, 0x0C, 0x05 }; 1954 1954 1955 unsigned char table_88[32] = {1955 static const unsigned char table_88[32] = { 1956 1956 0x09, 0x08, 0x17, 0x10, 0x0A, 0x07, 0x1C, 0x1F, 1957 1957 0x04, 0x0E, 0x01, 0x0C, 0x0D, 0x1B, 0x03, 0x15, … … 1959 1959 0x05, 0x11, 0x14, 0x00, 0x16, 0x1D, 0x12, 0x13 }; 1960 1960 1961 unsigned char table_89[32] = {1961 static const unsigned char table_89[32] = { 1962 1962 0x15, 0x1C, 0x1D, 0x14, 0x0F, 0x1A, 0x05, 0x02, 1963 1963 0x07, 0x09, 0x06, 0x08, 0x1F, 0x00, 0x10, 0x13, … … 1965 1965 0x12, 0x04, 0x11, 0x0A, 0x01, 0x0B, 0x17, 0x19 }; 1966 1966 1967 unsigned char table_90[256] = {1967 static const unsigned char table_90[256] = { 1968 1968 0x62, 0x36, 0x64, 0x0E, 0x4C, 0x6C, 0xBE, 0xCF, 1969 1969 0x25, 0x5A, 0x3D, 0x12, 0x54, 0x9F, 0xE7, 0xA5, … … 1999 1999 0x20, 0x94, 0x45, 0xED, 0xDC, 0xBD, 0x7E, 0x50 }; 2000 2000 2001 unsigned char table_91[32] = {2001 static const unsigned char table_91[32] = { 2002 2002 0x03, 0x04, 0x0C, 0x18, 0x10, 0x0D, 0x13, 0x1B, 2003 2003 0x1F, 0x07, 0x11, 0x17, 0x1C, 0x1D, 0x05, 0x06, … … 2005 2005 0x14, 0x16, 0x00, 0x15, 0x19, 0x09, 0x0F, 0x1E }; 2006 2006 2007 unsigned char table_92[32] = {2007 static const unsigned char table_92[32] = { 2008 2008 0x1E, 0x10, 0x01, 0x07, 0x11, 0x16, 0x15, 0x17, 2009 2009 0x1F, 0x14, 0x0C, 0x1C, 0x06, 0x03, 0x00, 0x18, … … 2011 2011 0x0F, 0x12, 0x0B, 0x13, 0x0A, 0x04, 0x1D, 0x1A }; 2012 2012 2013 unsigned char table_93[256] = {2013 static const unsigned char table_93[256] = { 2014 2014 0x76, 0x78, 0xA2, 0x94, 0x0E, 0x7F, 0xDF, 0xC1, 2015 2015 0xB9, 0xE1, 0x3D, 0x59, 0x6F, 0x1E, 0x53, 0x99, … … 2045 2045 0x24, 0x34, 0xE2, 0xEC, 0x85, 0x47, 0xF4, 0xB2 }; 2046 2046 2047 unsigned char table_94[32] = {2047 static const unsigned char table_94[32] = { 2048 2048 0x1C, 0x07, 0x05, 0x1A, 0x10, 0x1D, 0x14, 0x12, 2049 2049 0x08, 0x0F, 0x0C, 0x01, 0x04, 0x1B, 0x16, 0x0A, … … 2051 2051 0x0E, 0x09, 0x15, 0x19, 0x03, 0x18, 0x00, 0x0B }; 2052 2052 2053 unsigned char table_95[32] = {2053 static const unsigned char table_95[32] = { 2054 2054 0x12, 0x10, 0x11, 0x15, 0x03, 0x0A, 0x14, 0x05, 2055 2055 0x1D, 0x07, 0x17, 0x0D, 0x09, 0x08, 0x1B, 0x1F, … … 2057 2057 0x1E, 0x1C, 0x01, 0x0C, 0x1A, 0x0F, 0x13, 0x16 }; 2058 2058 2059 unsigned char table_96[256] = {2059 static const unsigned char table_96[256] = { 2060 2060 0x1C, 0x6E, 0xCD, 0xB4, 0xB3, 0x93, 0xA8, 0x2E, 2061 2061 0x4F, 0x09, 0xE3, 0x72, 0x64, 0x13, 0x21, 0xF5, … … 2091 2091 0x59, 0xCE, 0xE1, 0x57, 0x20, 0x58, 0x51, 0xD8 }; 2092 2092 2093 unsigned char table_97[256] = {2093 static const unsigned char table_97[256] = { 2094 2094 0x15, 0x2D, 0xAF, 0x36, 0xCF, 0xD3, 0xD0, 0xED, 2095 2095 0xB2, 0x1B, 0xFE, 0x92, 0xBD, 0xAD, 0x58, 0x0F, … … 2125 2125 0x83, 0x25, 0x9F, 0xD9, 0x99, 0xC1, 0xFD, 0xB3 }; 2126 2126 2127 unsigned char table_98[256] = {2127 static const unsigned char table_98[256] = { 2128 2128 0xC8, 0xE6, 0x38, 0x93, 0xE5, 0x03, 0x18, 0x1F, 2129 2129 0xE9, 0x5A, 0xB6, 0xAF, 0xC3, 0x95, 0x00, 0x51, … … 2159 2159 0x54, 0x3A, 0x13, 0x09, 0x2C, 0xB5, 0xC7, 0x63 }; 2160 2160 2161 unsigned char table_99[32] = {2161 static const unsigned char table_99[32] = { 2162 2162 0x19, 0x00, 0x10, 0x18, 0x09, 0x11, 0x13, 0x1D, 2163 2163 0x08, 0x1A, 0x02, 0x05, 0x03, 0x17, 0x12, 0x01, … … 2165 2165 0x0E, 0x16, 0x1E, 0x04, 0x1B, 0x0A, 0x0C, 0x1C }; 2166 2166 2167 unsigned char table_100[256] = {2167 static const unsigned char table_100[256] = { 2168 2168 0x9B, 0x3A, 0xAE, 0x60, 0x27, 0x67, 0x1E, 0x4E, 2169 2169 0x91, 0xDA, 0x85, 0x43, 0x5C, 0xCC, 0x89, 0x55, … … 2199 2199 0x30, 0x0C, 0xB2, 0x7B, 0xBE, 0xFB, 0x23, 0x2C }; 2200 2200 2201 unsigned char table_101[32] = {2201 static const unsigned char table_101[32] = { 2202 2202 0x18, 0x08, 0x14, 0x17, 0x03, 0x10, 0x19, 0x04, 2203 2203 0x0D, 0x1C, 0x06, 0x1D, 0x1E, 0x12, 0x11, 0x0B, … … 2205 2205 0x15, 0x0A, 0x0C, 0x1A, 0x00, 0x01, 0x1F, 0x09 }; 2206 2206 2207 unsigned char table_102[32] = {2207 static const unsigned char table_102[32] = { 2208 2208 0x17, 0x1F, 0x0E, 0x05, 0x13, 0x0C, 0x14, 0x1A, 2209 2209 0x0F, 0x01, 0x12, 0x1C, 0x00, 0x07, 0x0D, 0x02, … … 2211 2211 0x06, 0x15, 0x0A, 0x19, 0x09, 0x08, 0x1B, 0x0B }; 2212 2212 2213 unsigned char table_103[32] = {2213 static const unsigned char table_103[32] = { 2214 2214 0x0F, 0x09, 0x1E, 0x11, 0x0D, 0x08, 0x10, 0x00, 2215 2215 0x01, 0x1F, 0x1D, 0x1C, 0x12, 0x04, 0x07, 0x05, … … 2217 2217 0x18, 0x0B, 0x0A, 0x13, 0x0C, 0x0E, 0x03, 0x06 }; 2218 2218 2219 unsigned char table_104[256] = {2219 static const unsigned char table_104[256] = { 2220 2220 0xA4, 0x9F, 0x78, 0x39, 0x3D, 0x81, 0x51, 0x24, 2221 2221 0x46, 0x2A, 0x56, 0xE8, 0xDF, 0x73, 0xA8, 0xA2, … … 2251 2251 0x97, 0xBB, 0x37, 0x8C, 0x54, 0x53, 0x9E, 0x8F }; 2252 2252 2253 unsigned char table_105[256] = {2253 static const unsigned char table_105[256] = { 2254 2254 0x7B, 0x35, 0x11, 0x79, 0x07, 0x2F, 0xF6, 0x82, 2255 2255 0x8E, 0xB4, 0x6E, 0xD2, 0x6D, 0xC5, 0x8C, 0x1C, … … 2285 2285 0xBA, 0x1E, 0x44, 0x87, 0x45, 0x9F, 0xC9, 0x94 }; 2286 2286 2287 unsigned char table_106[32] = {2287 static const unsigned char table_106[32] = { 2288 2288 0x03, 0x11, 0x07, 0x1B, 0x0F, 0x14, 0x0C, 0x01, 2289 2289 0x04, 0x02, 0x09, 0x0A, 0x05, 0x12, 0x06, 0x1F, … … 2291 2291 0x1E, 0x1D, 0x17, 0x19, 0x13, 0x16, 0x0B, 0x1A }; 2292 2292 2293 unsigned char table_107[32] = {2293 static const unsigned char table_107[32] = { 2294 2294 0x13, 0x1B, 0x06, 0x11, 0x1C, 0x07, 0x08, 0x0E, 2295 2295 0x10, 0x05, 0x09, 0x18, 0x04, 0x15, 0x1E, 0x0F, … … 2297 2297 0x03, 0x0C, 0x0A, 0x1D, 0x14, 0x01, 0x16, 0x0B }; 2298 2298 2299 unsigned char table_108[256] = {2299 static const unsigned char table_108[256] = { 2300 2300 0x99, 0xA3, 0x48, 0xE8, 0x5A, 0x7D, 0x97, 0xCA, 2301 2301 0x7F, 0x06, 0x9B, 0x04, 0xE0, 0xF3, 0x18, 0xAE, … … 2331 2331 0xCC, 0xE2, 0x44, 0x73, 0xBE, 0x26, 0x8C, 0x5B }; 2332 2332 2333 unsigned char table_109[256] = {2333 static const unsigned char table_109[256] = { 2334 2334 0xE3, 0x95, 0xDB, 0x09, 0x82, 0x0A, 0x8F, 0x9E, 2335 2335 0xC9, 0xDC, 0x28, 0x35, 0x0F, 0x8B, 0xA8, 0xA5, … … 2365 2365 0x1E, 0xF4, 0xD5, 0xB1, 0x5C, 0x25, 0xE8, 0x1C }; 2366 2366 2367 unsigned char table_110[256] = {2367 static const unsigned char table_110[256] = { 2368 2368 0xC3, 0x06, 0x3C, 0xCB, 0xD2, 0x44, 0x9D, 0x48, 2369 2369 0x28, 0xAA, 0xA9, 0xD0, 0x64, 0x25, 0x56, 0xCA, … … 2399 2399 0x4B, 0xCF, 0xB4, 0x2F, 0xBB, 0xEF, 0xDB, 0x33 }; 2400 2400 2401 unsigned char table_111[32] = {2401 static const unsigned char table_111[32] = { 2402 2402 0x09, 0x0F, 0x00, 0x15, 0x12, 0x17, 0x1A, 0x0D, 2403 2403 0x1C, 0x0B, 0x01, 0x0A, 0x05, 0x1E, 0x1D, 0x0C, … … 2405 2405 0x10, 0x16, 0x11, 0x1F, 0x04, 0x06, 0x02, 0x13 }; 2406 2406 2407 unsigned char table_112[256] = {2407 static const unsigned char table_112[256] = { 2408 2408 0xF9, 0x7D, 0xBE, 0xD5, 0x9F, 0xB8, 0x95, 0x43, 2409 2409 0xDB, 0xAE, 0x7E, 0xEC, 0x5B, 0x58, 0x18, 0x49, … … 2439 2439 0xA1, 0xCC, 0xDF, 0x60, 0xD8, 0x5A, 0xE6, 0xD4 }; 2440 2440 2441 unsigned char table_113[256] = {2441 static const unsigned char table_113[256] = { 2442 2442 0x46, 0x9D, 0x39, 0xB2, 0x8D, 0x3B, 0x59, 0x5A, 2443 2443 0xD0, 0x9C, 0xE4, 0x04, 0x01, 0xE2, 0xB3, 0xD2, … … 2473 2473 0xFE, 0x7B, 0x67, 0xFF, 0x10, 0xEC, 0xC6, 0x86 }; 2474 2474 2475 unsigned char table_114[32] = {2475 static const unsigned char table_114[32] = { 2476 2476 0x11, 0x10, 0x04, 0x1D, 0x08, 0x15, 0x1A, 0x1B, 2477 2477 0x14, 0x18, 0x0F, 0x17, 0x16, 0x07, 0x1E, 0x0E, … … 2479 2479 0x1F, 0x19, 0x09, 0x1C, 0x01, 0x0D, 0x03, 0x05 }; 2480 2480 2481 unsigned char table_115[256] = {2481 static const unsigned char table_115[256] = { 2482 2482 0xB7, 0xBB, 0x63, 0x0D, 0xF0, 0x33, 0x5A, 0x05, 2483 2483 0xF2, 0x7F, 0x64, 0xDB, 0x51, 0xC9, 0x2C, 0x85, … … 2513 2513 0x8C, 0x17, 0xB5, 0xEB, 0xD5, 0xF3, 0x0B, 0x3C }; 2514 2514 2515 unsigned char table_116[32] = {2515 static const unsigned char table_116[32] = { 2516 2516 0x00, 0x05, 0x10, 0x1C, 0x0C, 0x1A, 0x04, 0x1B, 2517 2517 0x0A, 0x0D, 0x14, 0x0B, 0x07, 0x03, 0x12, 0x1E, … … 2519 2519 0x19, 0x18, 0x16, 0x02, 0x13, 0x0E, 0x17, 0x1D }; 2520 2520 2521 unsigned char table_117[256] = {2521 static const unsigned char table_117[256] = { 2522 2522 0xD0, 0x9A, 0xAB, 0xA8, 0xA7, 0xDF, 0x28, 0xCE, 2523 2523 0x3E, 0x51, 0xBF, 0x76, 0x03, 0xA0, 0x53, 0x3F, … … 2553 2553 0xC1, 0xFD, 0x92, 0xA1, 0xF7, 0xAE, 0xDC, 0x58 }; 2554 2554 2555 unsigned char table_118[256] = {2555 static const unsigned char table_118[256] = { 2556 2556 0x38, 0xA0, 0xA6, 0xFC, 0x7C, 0x5A, 0x97, 0x1D, 2557 2557 0xFD, 0x00, 0x20, 0xA2, 0x72, 0x10, 0x1F, 0x48, … … 2587 2587 0xD9, 0x2F, 0x02, 0xAC, 0x30, 0x6A, 0xD6, 0x95 }; 2588 2588 2589 unsigned char table_119[32] = {2589 static const unsigned char table_119[32] = { 2590 2590 0x14, 0x0A, 0x1C, 0x00, 0x0C, 0x1F, 0x1E, 0x0B, 2591 2591 0x12, 0x1D, 0x17, 0x08, 0x07, 0x04, 0x09, 0x10, … … 2593 2593 0x18, 0x02, 0x06, 0x01, 0x19, 0x16, 0x13, 0x0F }; 2594 2594 2595 unsigned char table_120[256] = {2595 static const unsigned char table_120[256] = { 2596 2596 0xCE, 0x89, 0xB2, 0x72, 0x04, 0x77, 0x64, 0xAE, 2597 2597 0x80, 0x99, 0xB5, 0x00, 0x7B, 0x50, 0x9D, 0xE3, … … 2627 2627 0x5E, 0xCA, 0xFD, 0x11, 0xA3, 0xC7, 0xC0, 0x91 }; 2628 2628 2629 unsigned char table_121[32] = {2629 static const unsigned char table_121[32] = { 2630 2630 0x1E, 0x12, 0x06, 0x1D, 0x15, 0x1F, 0x13, 0x0B, 2631 2631 0x10, 0x0D, 0x1C, 0x01, 0x0A, 0x0E, 0x02, 0x19, … … 2633 2633 0x14, 0x08, 0x18, 0x05, 0x09, 0x0F, 0x1B, 0x07 }; 2634 2634 2635 unsigned char table_122[256] = {2635 static const unsigned char table_122[256] = { 2636 2636 0x85, 0xDF, 0x7F, 0x7C, 0x56, 0xF0, 0x0C, 0x7D, 2637 2637 0x76, 0xA8, 0x58, 0x31, 0x25, 0x8A, 0x0D, 0x23, … … 2667 2667 0xCE, 0x2D, 0x4E, 0x83, 0xC3, 0x69, 0xEE, 0xB2 }; 2668 2668 2669 unsigned char table_123[256] = {2669 static const unsigned char table_123[256] = { 2670 2670 0x9D, 0xFB, 0x3C, 0x81, 0xAA, 0x05, 0xB2, 0xBE, 2671 2671 0xD1, 0x5F, 0x4C, 0xE0, 0xA3, 0xF4, 0xDE, 0x35, … … 2701 2701 0x48, 0x77, 0xD0, 0x0A, 0x8A, 0x3A, 0x43, 0x79 }; 2702 2702 2703 unsigned char table_124[256] = {2703 static const unsigned char table_124[256] = { 2704 2704 0x6C, 0xC3, 0x28, 0x2F, 0x42, 0x4B, 0x7C, 0x3C, 2705 2705 0xCE, 0x24, 0xC8, 0x51, 0x25, 0x3F, 0x49, 0x8D, … … 2735 2735 0x62, 0x1B, 0xDE, 0x91, 0x87, 0x97, 0x05, 0x2E }; 2736 2736 2737 unsigned char table_125[32] = {2737 static const unsigned char table_125[32] = { 2738 2738 0x1A, 0x18, 0x12, 0x15, 0x00, 0x1C, 0x01, 0x0B, 2739 2739 0x19, 0x1B, 0x1F, 0x11, 0x07, 0x10, 0x1E, 0x06, … … 2741 2741 0x02, 0x03, 0x13, 0x14, 0x09, 0x1D, 0x05, 0x0F }; 2742 2742 2743 unsigned char table_126[32] = {2743 static const unsigned char table_126[32] = { 2744 2744 0x1C, 0x1D, 0x07, 0x12, 0x18, 0x1A, 0x19, 0x09, 2745 2745 0x0F, 0x14, 0x1F, 0x0B, 0x13, 0x04, 0x0E, 0x1E, … … 2747 2747 0x15, 0x10, 0x11, 0x08, 0x00, 0x03, 0x06, 0x02 }; 2748 2748 2749 unsigned char table_127[256] = {2749 static const unsigned char table_127[256] = { 2750 2750 0xA0, 0x66, 0xD8, 0x08, 0xEA, 0x39, 0x78, 0xAB, 2751 2751 0x61, 0x4E, 0xC7, 0xD1, 0xA3, 0x1C, 0x9F, 0xCB, … … 2781 2781 0x70, 0xF8, 0x17, 0xCD, 0xB0, 0xCC, 0x82, 0x2D }; 2782 2782 2783 unsigned char table_128[32] = {2783 static const unsigned char table_128[32] = { 2784 2784 0x1A, 0x1C, 0x09, 0x17, 0x1B, 0x0B, 0x16, 0x1E, 2785 2785 0x14, 0x0C, 0x12, 0x0E, 0x05, 0x03, 0x1F, 0x15, … … 2787 2787 0x02, 0x08, 0x0F, 0x18, 0x07, 0x04, 0x1D, 0x06 }; 2788 2788 2789 unsigned char table_129[256] = {2789 static const unsigned char table_129[256] = { 2790 2790 0x9D, 0x5F, 0xE8, 0x99, 0x57, 0x07, 0x16, 0xA6, 2791 2791 0x9F, 0xB6, 0xDE, 0xED, 0x2D, 0xB3, 0xC0, 0x8E, … … 2821 2821 0x09, 0x45, 0x6B, 0xD7, 0x0B, 0x89, 0x4F, 0x2A }; 2822 2822 2823 unsigned char table_130[32] = {2823 static const unsigned char table_130[32] = { 2824 2824 0x07, 0x03, 0x15, 0x0B, 0x02, 0x11, 0x17, 0x14, 2825 2825 0x05, 0x10, 0x0A, 0x0F, 0x01, 0x1C, 0x1D, 0x0E, … … 2827 2827 0x1B, 0x00, 0x08, 0x0D, 0x0C, 0x1E, 0x04, 0x1F }; 2828 2828 2829 unsigned char table_131[32] = {2829 static const unsigned char table_131[32] = { 2830 2830 0x1D, 0x13, 0x1B, 0x10, 0x07, 0x03, 0x0A, 0x02, 2831 2831 0x00, 0x0C, 0x0E, 0x0B, 0x0D, 0x18, 0x12, 0x1F, … … 2833 2833 0x19, 0x05, 0x0F, 0x17, 0x06, 0x01, 0x09, 0x16 }; 2834 2834 2835 unsigned char table_132[256] = {2835 static const unsigned char table_132[256] = { 2836 2836 0x33, 0x8D, 0x45, 0x6F, 0xFF, 0xF5, 0xB6, 0x53, 2837 2837 0x3B, 0xF3, 0x07, 0xA4, 0x97, 0xEB, 0x6B, 0xA5, … … 2867 2867 0xC4, 0x7F, 0xA0, 0xD8, 0xEF, 0x03, 0x70, 0xF6 }; 2868 2868 2869 unsigned char table_133[256] = {2869 static const unsigned char table_133[256] = { 2870 2870 0x02, 0xF0, 0xED, 0xC4, 0xE4, 0x67, 0x60, 0x8B, 2871 2871 0xF3, 0x77, 0x92, 0xE0, 0x85, 0x93, 0x1E, 0x8E, … … 2901 2901 0x5A, 0x35, 0xB0, 0xAE, 0x82, 0x79, 0x1D, 0x52 }; 2902 2902 2903 unsigned char table_134[32] = {2903 static const unsigned char table_134[32] = { 2904 2904 0x09, 0x0F, 0x10, 0x0C, 0x03, 0x15, 0x07, 0x17, 2905 2905 0x0E, 0x0B, 0x1D, 0x08, 0x19, 0x11, 0x00, 0x0A, … … 2907 2907 0x02, 0x1B, 0x1A, 0x04, 0x05, 0x1F, 0x1C, 0x1E }; 2908 2908 2909 unsigned char table_135[256] = {2909 static const unsigned char table_135[256] = { 2910 2910 0x14, 0x34, 0xEA, 0x02, 0x2B, 0x5A, 0x10, 0x51, 2911 2911 0xF3, 0x8F, 0x28, 0xB2, 0x50, 0x8B, 0x01, 0xCC, … … 2941 2941 0x00, 0x63, 0xD9, 0xBE, 0xF2, 0x60, 0x25, 0x62 }; 2942 2942 2943 unsigned char table_136[256] = {2943 static const unsigned char table_136[256] = { 2944 2944 0xD3, 0x1A, 0x00, 0xED, 0x59, 0x24, 0xA3, 0xF2, 2945 2945 0xBA, 0x58, 0x4C, 0x5C, 0x75, 0x48, 0x98, 0xB0, … … 2975 2975 0x93, 0x1D, 0x9B, 0x5B, 0x40, 0xEE, 0x42, 0x19 }; 2976 2976 2977 unsigned char table_137[32] = {2977 static const unsigned char table_137[32] = { 2978 2978 0x0F, 0x09, 0x02, 0x06, 0x18, 0x0B, 0x1E, 0x05, 2979 2979 0x11, 0x1D, 0x16, 0x01, 0x13, 0x10, 0x0E, 0x1A, … … 2981 2981 0x03, 0x1F, 0x0A, 0x12, 0x0C, 0x07, 0x04, 0x1C }; 2982 2982 2983 unsigned char table_138[32] = {2983 static const unsigned char table_138[32] = { 2984 2984 0x0D, 0x1C, 0x1F, 0x15, 0x0F, 0x14, 0x1B, 0x12, 2985 2985 0x09, 0x0B, 0x19, 0x07, 0x11, 0x16, 0x0C, 0x04, … … 2987 2987 0x01, 0x06, 0x18, 0x17, 0x10, 0x1A, 0x02, 0x00 }; 2988 2988 2989 unsigned char table_139[32] = {2989 static const unsigned char table_139[32] = { 2990 2990 0x05, 0x15, 0x1D, 0x02, 0x0F, 0x03, 0x17, 0x1A, 2991 2991 0x0A, 0x00, 0x1F, 0x12, 0x0E, 0x11, 0x1B, 0x13, … … 2993 2993 0x0C, 0x04, 0x16, 0x19, 0x1C, 0x06, 0x10, 0x01 }; 2994 2994 2995 unsigned char table_140[32] = {2995 static const unsigned char table_140[32] = { 2996 2996 0x06, 0x1E, 0x0C, 0x11, 0x13, 0x08, 0x15, 0x01, 2997 2997 0x1D, 0x03, 0x0F, 0x19, 0x18, 0x04, 0x00, 0x14, … … 2999 2999 0x1F, 0x17, 0x09, 0x0A, 0x0D, 0x16, 0x10, 0x1C }; 3000 3000 3001 unsigned char table_141[256] = {3001 static const unsigned char table_141[256] = { 3002 3002 0xE1, 0x0A, 0x28, 0xCD, 0x8A, 0x1E, 0x26, 0x10, 3003 3003 0xC0, 0x6F, 0x06, 0x2C, 0xF8, 0x51, 0x6C, 0x8F, … … 3033 3033 0x98, 0x54, 0xB8, 0xDC, 0x46, 0xDF, 0x87, 0xE5 }; 3034 3034 3035 unsigned char table_142[256] = {3035 static const unsigned char table_142[256] = { 3036 3036 0x90, 0x94, 0xBE, 0x14, 0x99, 0xEB, 0x45, 0x0F, 3037 3037 0x34, 0x4A, 0xE3, 0x79, 0xD2, 0x64, 0x4D, 0x69, … … 3067 3067 0xCC, 0x1E, 0x87, 0xD7, 0x01, 0x1F, 0x51, 0x95 }; 3068 3068 3069 unsigned char table_143[32] = {3069 static const unsigned char table_143[32] = { 3070 3070 0x0E, 0x16, 0x18, 0x11, 0x0C, 0x01, 0x12, 0x1F, 3071 3071 0x08, 0x15, 0x0A, 0x06, 0x1C, 0x1E, 0x02, 0x1A, … … 3073 3073 0x0D, 0x14, 0x09, 0x0B, 0x1B, 0x00, 0x1D, 0x04 }; 3074 3074 3075 unsigned char table_144[32] = {3075 static const unsigned char table_144[32] = { 3076 3076 0x00, 0x1B, 0x17, 0x19, 0x1D, 0x11, 0x0D, 0x1A, 3077 3077 0x13, 0x03, 0x1E, 0x09, 0x10, 0x0E, 0x15, 0x05, … … 3079 3079 0x16, 0x14, 0x02, 0x04, 0x07, 0x18, 0x12, 0x0C }; 3080 3080 3081 unsigned char table_145[256] = {3081 static const unsigned char table_145[256] = { 3082 3082 0xF9, 0x2C, 0x38, 0x74, 0xDA, 0x65, 0x85, 0x0E, 3083 3083 0xBA, 0x64, 0xDB, 0xE3, 0xB6, 0x8B, 0x0B, 0x5E, … … 3113 3113 0x69, 0xF6, 0xEF, 0xC2, 0xAD, 0x03, 0xB3, 0x1E }; 3114 3114 3115 unsigned char table_146[256] = {3115 static const unsigned char table_146[256] = { 3116 3116 0x1C, 0xF5, 0x16, 0xD2, 0xCC, 0xDC, 0x1E, 0x29, 3117 3117 0xE3, 0x17, 0x3B, 0x66, 0x6A, 0xF7, 0x03, 0xB2, … … 3147 3147 0x7D, 0x96, 0x76, 0x99, 0xB5, 0x48, 0x98, 0x10 }; 3148 3148 3149 unsigned char table_147[32] = {3149 static const unsigned char table_147[32] = { 3150 3150 0x17, 0x07, 0x0D, 0x16, 0x00, 0x1B, 0x1F, 0x09, 3151 3151 0x10, 0x11, 0x14, 0x0A, 0x02, 0x06, 0x13, 0x0C, … … 3153 3153 0x1C, 0x1A, 0x03, 0x18, 0x04, 0x0B, 0x1D, 0x0E }; 3154 3154 3155 unsigned char table_148[256] = {3155 static const unsigned char table_148[256] = { 3156 3156 0xFB, 0x23, 0xBC, 0x5A, 0x8C, 0x02, 0x42, 0x3B, 3157 3157 0x95, 0x0C, 0x21, 0x0E, 0x14, 0xDF, 0x11, 0xC0, … … 3187 3187 0x09, 0x43, 0xBF, 0xD0, 0x55, 0xDD, 0x3F, 0x24 }; 3188 3188 3189 unsigned char table_149[32] = {3189 static const unsigned char table_149[32] = { 3190 3190 0x1B, 0x0B, 0x0C, 0x06, 0x1F, 0x17, 0x04, 0x1A, 3191 3191 0x1E, 0x02, 0x0F, 0x16, 0x0E, 0x09, 0x10, 0x01, … … 3193 3193 0x18, 0x1D, 0x14, 0x0D, 0x07, 0x08, 0x15, 0x12 }; 3194 3194 3195 unsigned char table_150[256] = {3195 static const unsigned char table_150[256] = { 3196 3196 0x57, 0xBC, 0x9D, 0x46, 0x14, 0xD0, 0x94, 0x95, 3197 3197 0x1B, 0x12, 0xB8, 0xD4, 0x53, 0x73, 0x83, 0xE6, … … 3227 3227 0x97, 0xC9, 0xF3, 0x04, 0xD8, 0xF4, 0x80, 0x44 }; 3228 3228 3229 unsigned char table_151[256] = {3229 static const unsigned char table_151[256] = { 3230 3230 0x78, 0x6C, 0xC5, 0x0C, 0x2D, 0xA7, 0x97, 0x9C, 3231 3231 0x22, 0x76, 0x3E, 0x81, 0x51, 0x47, 0x59, 0x71, … … 3261 3261 0x43, 0x3A, 0x53, 0x9E, 0x80, 0x88, 0x07, 0x9D }; 3262 3262 3263 unsigned char table_152[32] = {3263 static const unsigned char table_152[32] = { 3264 3264 0x02, 0x1A, 0x17, 0x1D, 0x01, 0x03, 0x13, 0x1E, 3265 3265 0x05, 0x18, 0x06, 0x0A, 0x0C, 0x04, 0x1B, 0x00, … … 3267 3267 0x14, 0x12, 0x0D, 0x10, 0x19, 0x11, 0x08, 0x15 }; 3268 3268 3269 unsigned char table_153[32] = {3269 static const unsigned char table_153[32] = { 3270 3270 0x0E, 0x14, 0x12, 0x1E, 0x1C, 0x02, 0x06, 0x16, 3271 3271 0x18, 0x0D, 0x17, 0x0C, 0x1D, 0x11, 0x08, 0x19, … … 3273 3273 0x1A, 0x0A, 0x05, 0x10, 0x00, 0x01, 0x15, 0x09 }; 3274 3274 3275 unsigned char table_154[256] = {3275 static const unsigned char table_154[256] = { 3276 3276 0x27, 0x5A, 0x08, 0x5B, 0xF4, 0x39, 0x13, 0x6F, 3277 3277 0x67, 0xEA, 0x22, 0xCA, 0x5C, 0xCF, 0x18, 0x7C, … … 3307 3307 0x53, 0xE1, 0xDD, 0x72, 0x95, 0x52, 0x34, 0xB5 }; 3308 3308 3309 unsigned char table_155[256] = {3309 static const unsigned char table_155[256] = { 3310 3310 0x75, 0x58, 0xC5, 0xA5, 0x83, 0x16, 0xF3, 0x7F, 3311 3311 0x94, 0xDE, 0xA0, 0xF6, 0xFD, 0x89, 0xA8, 0x06, … … 3341 3341 0x8B, 0x33, 0xFC, 0xBB, 0x00, 0xA2, 0xDF, 0xDA }; 3342 3342 3343 unsigned char table_156[256] = {3343 static const unsigned char table_156[256] = { 3344 3344 0x31, 0x25, 0xB1, 0xD3, 0xAF, 0xAE, 0x84, 0x2C, 3345 3345 0x71, 0x5E, 0xD8, 0x80, 0x6F, 0x3E, 0x48, 0x86, … … 3375 3375 0xF1, 0x68, 0xBE, 0x35, 0x40, 0x8C, 0xD4, 0x47 }; 3376 3376 3377 unsigned char table_157[32] = {3377 static const unsigned char table_157[32] = { 3378 3378 0x00, 0x0D, 0x03, 0x02, 0x11, 0x04, 0x18, 0x0B, 3379 3379 0x14, 0x1D, 0x1C, 0x13, 0x1B, 0x17, 0x10, 0x15, … … 3381 3381 0x08, 0x06, 0x0C, 0x0E, 0x1F, 0x0F, 0x0A, 0x05 }; 3382 3382 3383 unsigned char table_158[256] = {3383 static const unsigned char table_158[256] = { 3384 3384 0x68, 0x26, 0x80, 0x0B, 0xB8, 0xD5, 0x8C, 0xB7, 3385 3385 0x65, 0xEF, 0xBC, 0x94, 0x28, 0xB9, 0xB2, 0xD2, … … 3415 3415 0x9A, 0x57, 0xA2, 0x74, 0xC6, 0xFE, 0x9B, 0x58 }; 3416 3416 3417 unsigned char table_159[256] = {3417 static const unsigned char table_159[256] = { 3418 3418 0xE5, 0xBF, 0x84, 0x56, 0xD6, 0x43, 0x3E, 0xA5, 3419 3419 0x64, 0x87, 0x44, 0x63, 0x4A, 0x4C, 0x8D, 0x24, … … 3449 3449 0xCB, 0x9B, 0x13, 0x8F, 0xA4, 0x28, 0x23, 0x85 }; 3450 3450 3451 unsigned char table_160[256] = {3451 static const unsigned char table_160[256] = { 3452 3452 0x35, 0x44, 0x0E, 0x92, 0x75, 0x83, 0x9D, 0x53, 3453 3453 0xA5, 0x90, 0xF8, 0xF7, 0x54, 0x74, 0xDF, 0x3D, … … 3483 3483 0xBB, 0x2C, 0xE5, 0xC3, 0x67, 0xA1, 0x10, 0xB9 }; 3484 3484 3485 unsigned char table_161[256] = {3485 static const unsigned char table_161[256] = { 3486 3486 0x8F, 0x1A, 0x81, 0xA2, 0x2C, 0x56, 0x6D, 0xCD, 3487 3487 0x4A, 0x33, 0x50, 0xE9, 0xE0, 0x12, 0x5A, 0x43, … … 3517 3517 0xBE, 0x0A, 0x36, 0x41, 0xC0, 0x8C, 0xE4, 0xAA }; 3518 3518 3519 unsigned char table_162[256] = {3519 static const unsigned char table_162[256] = { 3520 3520 0xF7, 0x1B, 0xC0, 0x31, 0x5A, 0x23, 0xEA, 0xE9, 3521 3521 0xFB, 0x14, 0x6A, 0xE8, 0x04, 0x65, 0x5B, 0x2C, … … 3551 3551 0x38, 0xCC, 0x58, 0x44, 0xBF, 0x93, 0x5D, 0xC7 }; 3552 3552 3553 unsigned char table_163[32] = {3553 static const unsigned char table_163[32] = { 3554 3554 0x1B, 0x14, 0x12, 0x15, 0x11, 0x1D, 0x17, 0x19, 3555 3555 0x10, 0x09, 0x08, 0x06, 0x1A, 0x16, 0x07, 0x13, … … 3557 3557 0x04, 0x01, 0x03, 0x0C, 0x0D, 0x1E, 0x02, 0x0F }; 3558 3558 3559 unsigned char table_164[32] = {3559 static const unsigned char table_164[32] = { 3560 3560 0x15, 0x00, 0x10, 0x0B, 0x1D, 0x0A, 0x06, 0x1C, 3561 3561 0x0D, 0x1F, 0x17, 0x0F, 0x03, 0x14, 0x13, 0x12, … … 3563 3563 0x02, 0x0C, 0x0E, 0x01, 0x07, 0x19, 0x11, 0x05 }; 3564 3564 3565 unsigned char table_165[256] = {3565 static const unsigned char table_165[256] = { 3566 3566 0x98, 0xF5, 0x1D, 0xFB, 0x13, 0x20, 0x41, 0xA3, 3567 3567 0xE3, 0x76, 0x49, 0x7E, 0x60, 0xD8, 0x68, 0x30, … … 3597 3597 0x1A, 0x26, 0xCC, 0xB1, 0xF9, 0xFA, 0x97, 0xE9 }; 3598 3598 3599 unsigned char table_166[256] = {3599 static const unsigned char table_166[256] = { 3600 3600 0xCB, 0xEA, 0x2A, 0x36, 0x6D, 0x93, 0x4E, 0xD5, 3601 3601 0xBC, 0x6A, 0xD4, 0x68, 0xF7, 0x18, 0xAB, 0x8B, … … 3631 3631 0x1C, 0xE0, 0x51, 0x16, 0x43, 0x07, 0x0A, 0x3F }; 3632 3632 3633 unsigned char table_167[256] = {3633 static const unsigned char table_167[256] = { 3634 3634 0x91, 0xEA, 0x4F, 0x6A, 0x6E, 0x2D, 0x27, 0x22, 3635 3635 0x44, 0xA5, 0x6D, 0xE3, 0x45, 0x06, 0xE2, 0x87, … … 3665 3665 0x14, 0x15, 0x25, 0x32, 0x6C, 0x69, 0x1A, 0xCF }; 3666 3666 3667 unsigned char table_168[256] = {3667 static const unsigned char table_168[256] = { 3668 3668 0x28, 0xEE, 0xB1, 0xFD, 0xB3, 0xEF, 0x36, 0x8E, 3669 3669 0x85, 0x5D, 0x1C, 0x53, 0x1E, 0xDA, 0xBA, 0x3C, … … 3699 3699 0x66, 0x2E, 0x08, 0x32, 0x4C, 0x33, 0x7E, 0xE1 }; 3700 3700 3701 unsigned char table_169[256] = {3701 static const unsigned char table_169[256] = { 3702 3702 0xA4, 0x31, 0xA9, 0x3F, 0x13, 0x4D, 0x1B, 0x29, 3703 3703 0x73, 0x43, 0xF1, 0xE7, 0x9C, 0xC2, 0xF6, 0xCD, … … 3733 3733 0x6B, 0x0A, 0x59, 0x9E, 0x5E, 0x38, 0x45, 0x80 }; 3734 3734 3735 unsigned char table_170[256] = {3735 static const unsigned char table_170[256] = { 3736 3736 0xE3, 0x00, 0x99, 0x03, 0xF6, 0xDD, 0xD1, 0x41, 3737 3737 0x58, 0x7E, 0xD9, 0x46, 0x04, 0xAF, 0x5C, 0x43, … … 3767 3767 0x48, 0x30, 0x87, 0x83, 0x12, 0x4D, 0x65, 0xDF }; 3768 3768 3769 unsigned char table_171[32] = {3769 static const unsigned char table_171[32] = { 3770 3770 0x07, 0x06, 0x11, 0x08, 0x0C, 0x1F, 0x19, 0x02, 3771 3771 0x14, 0x04, 0x0D, 0x18, 0x1A, 0x05, 0x17, 0x13, … … 3773 3773 0x1D, 0x10, 0x00, 0x12, 0x0B, 0x0E, 0x09, 0x0A }; 3774 3774 3775 unsigned char table_172[32] = {3775 static const unsigned char table_172[32] = { 3776 3776 0x11, 0x01, 0x1F, 0x06, 0x1A, 0x04, 0x02, 0x09, 3777 3777 0x05, 0x0D, 0x0B, 0x18, 0x0E, 0x12, 0x1B, 0x17, … … 3779 3779 0x03, 0x0C, 0x00, 0x10, 0x0A, 0x1C, 0x0F, 0x13 }; 3780 3780 3781 unsigned char table_173[32] = {3781 static const unsigned char table_173[32] = { 3782 3782 0x1F, 0x0B, 0x13, 0x00, 0x16, 0x15, 0x14, 0x0A, 3783 3783 0x1D, 0x05, 0x1E, 0x1A, 0x0F, 0x04, 0x0E, 0x01, … … 3785 3785 0x03, 0x11, 0x18, 0x10, 0x1C, 0x1B, 0x06, 0x0D }; 3786 3786 3787 unsigned char table_174[32] = {3787 static const unsigned char table_174[32] = { 3788 3788 0x02, 0x1B, 0x0C, 0x17, 0x1F, 0x05, 0x15, 0x1E, 3789 3789 0x16, 0x09, 0x1A, 0x12, 0x0F, 0x1C, 0x18, 0x0A, … … 3791 3791 0x1D, 0x0E, 0x06, 0x00, 0x01, 0x07, 0x0B, 0x03 }; 3792 3792 3793 unsigned char table_175[32] = {3793 static const unsigned char table_175[32] = { 3794 3794 0x00, 0x06, 0x0B, 0x08, 0x0C, 0x04, 0x1A, 0x1C, 3795 3795 0x05, 0x1E, 0x14, 0x03, 0x0A, 0x18, 0x12, 0x1D, … … 3797 3797 0x11, 0x19, 0x10, 0x0D, 0x1B, 0x02, 0x01, 0x15 }; 3798 3798 3799 unsigned char table_176[32] = {3799 static const unsigned char table_176[32] = { 3800 3800 0x12, 0x03, 0x1A, 0x15, 0x04, 0x19, 0x0B, 0x1B, 3801 3801 0x17, 0x1E, 0x0D, 0x05, 0x11, 0x14, 0x1C, 0x00, … … 3803 3803 0x13, 0x09, 0x16, 0x1D, 0x0F, 0x0C, 0x01, 0x1F }; 3804 3804 3805 unsigned char table_177[256] = {3805 static const unsigned char table_177[256] = { 3806 3806 0x5E, 0x4D, 0x76, 0xFE, 0xB5, 0x50, 0x83, 0x23, 3807 3807 0x72, 0xDD, 0x93, 0x08, 0x69, 0xAD, 0xEC, 0x3B, … … 3837 3837 0x5A, 0xC5, 0xE0, 0x58, 0x41, 0x4E, 0x4A, 0xAF }; 3838 3838 3839 unsigned char table_178[256] = {3839 static const unsigned char table_178[256] = { 3840 3840 0x33, 0xBA, 0x98, 0xDA, 0x07, 0x2C, 0x22, 0x9B, 3841 3841 0xE0, 0xED, 0xB7, 0xA1, 0x93, 0xEB, 0xDC, 0x49, … … 3871 3871 0x95, 0x9E, 0xBF, 0xEF, 0xF8, 0x45, 0x00, 0xB4 }; 3872 3872 3873 unsigned char table_179[256] = {3873 static const unsigned char table_179[256] = { 3874 3874 0x50, 0x3D, 0x41, 0x42, 0x06, 0x5B, 0xD6, 0x34, 3875 3875 0x9D, 0x3C, 0x7B, 0x14, 0xE2, 0x9B, 0x80, 0x15, … … 3905 3905 0x2A, 0x04, 0x18, 0xA5, 0xA2, 0x6E, 0x07, 0xE3 }; 3906 3906 3907 unsigned char table_180[256] = {3907 static const unsigned char table_180[256] = { 3908 3908 0xDA, 0xCC, 0x72, 0xA6, 0xE7, 0x07, 0xFD, 0x25, 3909 3909 0x92, 0x39, 0x49, 0x02, 0xD6, 0x09, 0xA8, 0x65, … … 3939 3939 0x62, 0x4F, 0xCF, 0xB2, 0xC2, 0x59, 0xDB, 0x67 }; 3940 3940 3941 unsigned char table_181[256] = {3941 static const unsigned char table_181[256] = { 3942 3942 0x2B, 0xED, 0x14, 0x05, 0x80, 0xCC, 0x5A, 0xF8, 3943 3943 0x43, 0xB7, 0x86, 0xC6, 0xEE, 0xA6, 0xD7, 0xD6, … … 3973 3973 0x32, 0x24, 0x7D, 0x9B, 0xD2, 0x83, 0x35, 0xCD }; 3974 3974 3975 unsigned char table_182[256] = {3975 static const unsigned char table_182[256] = { 3976 3976 0x06, 0x7F, 0x66, 0xB5, 0xBA, 0x1E, 0xFD, 0x51, 3977 3977 0x81, 0x8D, 0x28, 0xA3, 0x15, 0x37, 0xDC, 0x58, … … 4007 4007 0x7B, 0x17, 0x0B, 0x0A, 0x41, 0x03, 0xD4, 0x4B }; 4008 4008 4009 unsigned char table_183[32] = {4009 static const unsigned char table_183[32] = { 4010 4010 0x1E, 0x1B, 0x11, 0x07, 0x08, 0x06, 0x18, 0x17, 4011 4011 0x0D, 0x0F, 0x12, 0x03, 0x1D, 0x04, 0x0A, 0x1A, … … 4013 4013 0x16, 0x05, 0x1C, 0x0E, 0x02, 0x00, 0x09, 0x15 }; 4014 4014 4015 unsigned char table_184[32] = {4015 static const unsigned char table_184[32] = { 4016 4016 0x0F, 0x1D, 0x17, 0x16, 0x0D, 0x05, 0x13, 0x1F, 4017 4017 0x1B, 0x09, 0x1C, 0x1E, 0x15, 0x01, 0x06, 0x08, … … 4019 4019 0x18, 0x0E, 0x03, 0x11, 0x12, 0x14, 0x19, 0x00 }; 4020 4020 4021 unsigned char table_185[256] = {4021 static const unsigned char table_185[256] = { 4022 4022 0xA5, 0xEE, 0x2E, 0x28, 0xA7, 0xAC, 0xD9, 0xB2, 4023 4023 0x6E, 0x04, 0xB4, 0x03, 0xE8, 0x92, 0x5F, 0x4D, … … 4053 4053 0x2B, 0xC5, 0x98, 0x18, 0x66, 0x15, 0x9C, 0xBC }; 4054 4054 4055 unsigned char table_186[256] = {4055 static const unsigned char table_186[256] = { 4056 4056 0xB7, 0xFA, 0x03, 0x7C, 0x76, 0x43, 0xA7, 0x15, 4057 4057 0x4B, 0x4F, 0x04, 0xAA, 0x4E, 0xD2, 0x52, 0xC8, … … 4087 4087 0x11, 0x3B, 0x94, 0xE8, 0x7D, 0x7B, 0xD9, 0x5A }; 4088 4088 4089 unsigned char table_187[32] = {4089 static const unsigned char table_187[32] = { 4090 4090 0x0F, 0x04, 0x1D, 0x1B, 0x15, 0x10, 0x01, 0x0B, 4091 4091 0x00, 0x17, 0x13, 0x07, 0x1E, 0x1F, 0x08, 0x0A, … … 4093 4093 0x0E, 0x18, 0x03, 0x1C, 0x12, 0x11, 0x0D, 0x02 }; 4094 4094 4095 st ruct yahoo_fn yahoo_fntable[5][96] =4095 static const struct yahoo_fn yahoo_fntable[5][96] = 4096 4096 {{{ IDENT, 0, 0 }, 4097 4097 { IDENT, 0, 0 }, … … 4582 4582 int yahoo_xfrm( int table, int depth, int seed ) 4583 4583 { 4584 struct yahoo_fn *xfrm;4584 const struct yahoo_fn *xfrm; 4585 4585 int i, j, z; 4586 4586 unsigned int n = seed; -
protocols/yahoo/yahoo_util.c
r3e91c3e r8e419cb 50 50 51 51 return new_string; 52 }53 54 char * y_str_to_utf8(const char *in)55 {56 unsigned int n, i = 0;57 char *result = NULL;58 59 if(in == NULL || *in == '\0')60 return "";61 62 result = y_new(char, strlen(in) * 2 + 1);63 64 /* convert a string to UTF-8 Format */65 for (n = 0; n < strlen(in); n++) {66 unsigned char c = (unsigned char)in[n];67 68 if (c < 128) {69 result[i++] = (char) c;70 } else {71 result[i++] = (char) ((c >> 6) | 192);72 result[i++] = (char) ((c & 63) | 128);73 }74 }75 result[i] = '\0';76 return result;77 }78 79 char * y_utf8_to_str(const char *in)80 {81 int i = 0;82 unsigned int n;83 char *result = NULL;84 85 if(in == NULL || *in == '\0')86 return "";87 88 result = y_new(char, strlen(in) + 1);89 90 /* convert a string from UTF-8 Format */91 for (n = 0; n < strlen(in); n++) {92 unsigned char c = in[n];93 94 if (c < 128) {95 result[i++] = (char) c;96 } else {97 result[i++] = (c << 6) | (in[++n] & 63);98 }99 }100 result[i] = '\0';101 return result;102 52 } 103 53 -
sock.h
r3e91c3e r8e419cb 1 #include <errno.h> 2 #include <fcntl.h> 3 4 /* To cut down on the ifdef stuff a little bit in other places */ 5 #ifdef IPV6 6 #define AF_INETx AF_INET6 7 #else 8 #define AF_INETx AF_INET 9 #endif 10 1 11 #ifndef _WIN32 2 12 #include <unistd.h> -
storage_text.c
r3e91c3e r8e419cb 79 79 user_t *ru = user_find( irc, ROOT_NICK ); 80 80 81 if( irc->status == USTATUS_IDENTIFIED )81 if( irc->status >= USTATUS_IDENTIFIED ) 82 82 return( 1 ); 83 83 -
unix.c
r3e91c3e r8e419cb 32 32 #include <unistd.h> 33 33 #include <sys/time.h> 34 #include <sys/wait.h> 34 35 35 36 global_t global; /* Against global namespace pollution */ … … 46 47 global.loop = g_main_new( FALSE ); 47 48 48 log_init( 49 log_init(); 49 50 50 51 nogaim_init(); … … 76 77 log_message( LOGLVL_INFO, "Bitlbee %s starting in daemon mode.", BITLBEE_VERSION ); 77 78 } 79 else if( global.conf->runmode == RUNMODE_FORKDAEMON ) 80 { 81 i = bitlbee_daemon_init(); 82 log_message( LOGLVL_INFO, "Bitlbee %s starting in forking daemon mode.", BITLBEE_VERSION ); 83 } 78 84 if( i != 0 ) 79 85 return( i ); 80 86 81 global.storage = storage_init( global.conf->primary_storage, 82 global.conf->migrate_storage ); 87 global.storage = storage_init( global.conf->primary_storage, global.conf->migrate_storage ); 83 88 if ( global.storage == NULL) { 84 89 log_message( LOGLVL_ERROR, "Unable to load storage backend '%s'", global.conf->primary_storage ); … … 90 95 memset( &sig, 0, sizeof( sig ) ); 91 96 sig.sa_handler = sighandler; 97 sigaction( SIGCHLD, &sig, &old ); 92 98 sigaction( SIGPIPE, &sig, &old ); 93 99 sig.sa_flags = SA_RESETHAND; … … 113 119 static void sighandler( int signal ) 114 120 { 115 /* FIXME: In fact, calling log_message() here can be dangerous. But well, let's take the risk for now.*/121 /* FIXME: Calling log_message() here is not a very good idea! */ 116 122 117 123 if( signal == SIGTERM ) … … 139 145 } 140 146 } 147 else if( signal == SIGCHLD ) 148 { 149 pid_t pid; 150 int st; 151 152 while( ( pid = waitpid( 0, &st, WNOHANG ) ) > 0 ) 153 { 154 if( WIFSIGNALED( st ) ) 155 log_message( LOGLVL_INFO, "Client %d terminated normally. (status = %d)", pid, WEXITSTATUS( st ) ); 156 else if( WIFEXITED( st ) ) 157 log_message( LOGLVL_INFO, "Client %d killed by signal %d.", pid, WTERMSIG( st ) ); 158 } 159 } 141 160 else if( signal != SIGPIPE ) 142 161 { -
url.c
r3e91c3e r8e419cb 2 2 * BitlBee -- An IRC to other IM-networks gateway * 3 3 * * 4 * Copyright 2001-200 4Wilmer van der Gaast and others *4 * Copyright 2001-2005 Wilmer van der Gaast and others * 5 5 \********************************************************************/ 6 6 … … 30 30 { 31 31 char s[MAX_STRING]; 32 char *i , *j;32 char *i; 33 33 34 34 /* protocol:// */ … … 40 40 else 41 41 { 42 if( g_strncasecmp( set_url, "http", i - set_url ) == 0 ) 42 if( g_strncasecmp( set_url, "https", i - set_url ) == 0 ) 43 url->proto = PROTO_HTTPS; 44 else if( g_strncasecmp( set_url, "http", i - set_url ) == 0 ) 43 45 url->proto = PROTO_HTTP; 44 46 else if( g_strncasecmp( set_url, "socks4", i - set_url ) == 0 ) … … 56 58 if( ( i = strchr( s, '/' ) ) == NULL ) 57 59 { 58 strcpy( url-> dir, "/" );60 strcpy( url->file, "/" ); 59 61 } 60 62 else 61 63 { 64 strncpy( url->file, i, MAX_STRING ); 62 65 *i = 0; 63 g_snprintf( url->dir, MAX_STRING, "/%s", i + 1 );64 if( url->proto == PROTO_HTTP )65 http_encode( url->dir );66 66 } 67 67 strncpy( url->host, s, MAX_STRING ); 68 j = strchr( url->dir, '?' );69 if( j != NULL )70 *j = 0;71 i = strrchr( url->dir, '/' );72 *i = 0;73 if( j != NULL )74 *j = '?';75 if( i == NULL )76 {77 strcpy( url->file, url->dir );78 strcpy( url->dir, "/" );79 }80 else81 {82 strcpy( url->file, i + 1 );83 strcat( url->dir, "/" );84 }85 68 86 69 /* Check for username in host field */ … … 96 79 else 97 80 { 98 if( url->proto == PROTO_FTP ) 99 { 100 strcpy( url->user, "anonymous" ); 101 strcpy( url->pass, "-p.artmaps@lintux.cx" ); 102 } 103 else 104 { 105 *url->user = *url->pass = 0; 106 } 81 *url->user = *url->pass = 0; 107 82 } 108 83 … … 117 92 { 118 93 *i = 0; 119 sscanf( i + 1, "% i", &url->port );94 sscanf( i + 1, "%d", &url->port ); 120 95 } 121 /* Take default port numbers from /etc/services */122 96 else 123 97 { 124 98 if( url->proto == PROTO_HTTP ) 125 url->port = 8080; 99 url->port = 80; 100 else if( url->proto == PROTO_HTTPS ) 101 url->port = 443; 126 102 else if( url->proto == PROTO_SOCKS4 || url->proto == PROTO_SOCKS4 ) 127 103 url->port = 1080; -
url.h
r3e91c3e r8e419cb 26 26 #include "bitlbee.h" 27 27 28 #define PROTO_FTP 129 28 #define PROTO_HTTP 2 29 #define PROTO_HTTPS 5 30 30 #define PROTO_SOCKS4 3 31 31 #define PROTO_SOCKS5 4 … … 37 37 int port; 38 38 char host[MAX_STRING]; 39 char dir[MAX_STRING];40 39 char file[MAX_STRING]; 41 40 char user[MAX_STRING]; -
util.c
r3e91c3e r8e419cb 6 6 7 7 /* 8 * nogaim 9 * 10 * Gaim without gaim - for BitlBee 8 * Various utility functions. Some are copied from Gaim to support the 9 * IM-modules, most are from BitlBee. 11 10 * 12 11 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> 13 12 * (and possibly other members of the Gaim team) 14 * Copyright 2002-200 4 Wilmer van der Gaast <lintux@lintux.cx>13 * Copyright 2002-2005 Wilmer van der Gaast <wilmer@gaast.net> 15 14 */ 16 15 … … 32 31 */ 33 32 34 /* Parts from util.c from gaim needed by nogaim */35 33 #define BITLBEE_CORE 36 34 #include "nogaim.h" … … 38 36 #include <stdlib.h> 39 37 #include <string.h> 38 #include <ctype.h> 40 39 #include <glib.h> 41 40 #include <time.h> 42 43 char *utf8_to_str(const char *in)44 {45 int n = 0, i = 0;46 int inlen;47 char *result;48 49 if (!in)50 return NULL;51 52 inlen = strlen(in);53 54 result = g_malloc(inlen + 1);55 56 while (n <= inlen - 1) {57 long c = (long)in[n];58 if (c < 0x80)59 result[i++] = (char)c;60 else {61 if ((c & 0xC0) == 0xC0)62 result[i++] =63 (char)(((c & 0x03) << 6) | (((unsigned char)in[++n]) & 0x3F));64 else if ((c & 0xE0) == 0xE0) {65 if (n + 2 <= inlen) {66 result[i] =67 (char)(((c & 0xF) << 4) | (((unsigned char)in[++n]) & 0x3F));68 result[i] =69 (char)(((unsigned char)result[i]) |70 (((unsigned char)in[++n]) & 0x3F));71 i++;72 } else73 n += 2;74 } else if ((c & 0xF0) == 0xF0)75 n += 3;76 else if ((c & 0xF8) == 0xF8)77 n += 4;78 else if ((c & 0xFC) == 0xFC)79 n += 5;80 }81 n++;82 }83 result[i] = '\0';84 85 return result;86 }87 88 char *str_to_utf8(const char *in)89 {90 int n = 0, i = 0;91 int inlen;92 char *result = NULL;93 94 if (!in)95 return NULL;96 97 inlen = strlen(in);98 99 result = g_malloc(inlen * 2 + 1);100 101 while (n < inlen) {102 long c = (long)in[n];103 if (c == 27) {104 n += 2;105 if (in[n] == 'x')106 n++;107 if (in[n] == '3')108 n++;109 n += 2;110 continue;111 }112 /* why are we removing newlines and carriage returns?113 if ((c == 0x0D) || (c == 0x0A)) {114 n++;115 continue;116 }117 */118 if (c < 128)119 result[i++] = (char)c;120 else {121 result[i++] = (char)((c >> 6) | 192);122 result[i++] = (char)((c & 63) | 128);123 }124 n++;125 }126 result[i] = '\0';127 128 return result;129 }130 41 131 42 void strip_linefeed(gchar *text) … … 271 182 { 272 183 char code[8]; 273 char is ;184 char is[4]; 274 185 } htmlentity_t; 275 186 276 187 /* FIXME: This is ISO8859-1(5) centric, so might cause problems with other charsets. */ 277 188 278 static htmlentity_t ent[] = 279 { 280 { "lt", '<' }, 281 { "gt", '>' }, 282 { "amp", '&' }, 283 { "quot", '"' }, 284 { "aacute", 'á' }, 285 { "eacute", 'é' }, 286 { "iacute", 'é' }, 287 { "oacute", 'ó' }, 288 { "uacute", 'ú' }, 289 { "agrave", 'à' }, 290 { "egrave", 'è' }, 291 { "igrave", 'ì' }, 292 { "ograve", 'ò' }, 293 { "ugrave", 'ù' }, 294 { "acirc", 'â' }, 295 { "ecirc", 'ê' }, 296 { "icirc", 'î' }, 297 { "ocirc", 'ô' }, 298 { "ucirc", 'û' }, 299 { "nbsp", ' ' }, 300 { "", 0 } 189 static const htmlentity_t ent[] = 190 { 191 { "lt", "<" }, 192 { "gt", ">" }, 193 { "amp", "&" }, 194 { "quot", "\"" }, 195 { "aacute", "á" }, 196 { "eacute", "é" }, 197 { "iacute", "é" }, 198 { "oacute", "ó" }, 199 { "uacute", "ú" }, 200 { "agrave", "à" }, 201 { "egrave", "è" }, 202 { "igrave", "ì" }, 203 { "ograve", "ò" }, 204 { "ugrave", "ù" }, 205 { "acirc", "â" }, 206 { "ecirc", "ê" }, 207 { "icirc", "î" }, 208 { "ocirc", "ô" }, 209 { "ucirc", "û" }, 210 { "auml", "ä" }, 211 { "euml", "ë" }, 212 { "iuml", "ï" }, 213 { "ouml", "ö" }, 214 { "uuml", "ü" }, 215 { "nbsp", " " }, 216 { "", "" } 301 217 }; 302 218 … … 347 263 if( g_strncasecmp( ent[i].code, cs, strlen( ent[i].code ) ) == 0 ) 348 264 { 349 *(s++) = ent[i].is; 265 int j; 266 267 for( j = 0; ent[i].is[j]; j ++ ) 268 *(s++) = ent[i].is[j]; 269 350 270 matched = 1; 351 271 break; … … 412 332 g_string_sprintfa( str, "%s%s: %s", newline, name, value ); 413 333 } 334 335 /* Decode%20a%20file%20name */ 336 void http_decode( char *s ) 337 { 338 char *t; 339 int i, j, k; 340 341 t = g_new( char, strlen( s ) + 1 ); 342 343 for( i = j = 0; s[i]; i ++, j ++ ) 344 { 345 if( s[i] == '%' ) 346 { 347 if( sscanf( s + i + 1, "%2x", &k ) ) 348 { 349 t[j] = k; 350 i += 2; 351 } 352 else 353 { 354 *t = 0; 355 break; 356 } 357 } 358 else 359 { 360 t[j] = s[i]; 361 } 362 } 363 t[j] = 0; 364 365 strcpy( s, t ); 366 g_free( t ); 367 } 368 369 /* Warning: This one explodes the string. Worst-cases can make the string 3x its original size! */ 370 /* This fuction is safe, but make sure you call it safely as well! */ 371 void http_encode( char *s ) 372 { 373 char *t; 374 int i, j; 375 376 t = g_strdup( s ); 377 378 for( i = j = 0; t[i]; i ++, j ++ ) 379 { 380 /* if( t[i] <= ' ' || ((unsigned char *)t)[i] >= 128 || t[i] == '%' ) */ 381 if( !isalnum( t[i] ) ) 382 { 383 sprintf( s + j, "%%%02X", ((unsigned char*)t)[i] ); 384 j += 2; 385 } 386 else 387 { 388 s[j] = t[i]; 389 } 390 } 391 s[j] = 0; 392 393 g_free( t ); 394 } 395 396 /* Strip newlines from a string. Modifies the string passed to it. */ 397 char *strip_newlines( char *source ) 398 { 399 int i; 400 401 for( i = 0; source[i] != '\0'; i ++ ) 402 if( source[i] == '\n' || source[i] == '\r' ) 403 source[i] = ' '; 404 405 return source; 406 } 407 408 #ifdef IPV6 409 /* Wrap an IPv4 address into IPv6 space. Not thread-safe... */ 410 char *ipv6_wrap( char *src ) 411 { 412 static char dst[64]; 413 int i; 414 415 for( i = 0; src[i]; i ++ ) 416 if( ( src[i] < '0' || src[i] > '9' ) && src[i] != '.' ) 417 break; 418 419 /* Hmm, it's not even an IP... */ 420 if( src[i] ) 421 return src; 422 423 g_snprintf( dst, sizeof( dst ), "::ffff:%s", src ); 424 425 return dst; 426 } 427 428 /* Unwrap an IPv4 address into IPv6 space. Thread-safe, because it's very simple. :-) */ 429 char *ipv6_unwrap( char *src ) 430 { 431 int i; 432 433 if( g_strncasecmp( src, "::ffff:", 7 ) != 0 ) 434 return src; 435 436 for( i = 7; src[i]; i ++ ) 437 if( ( src[i] < '0' || src[i] > '9' ) && src[i] != '.' ) 438 break; 439 440 /* Hmm, it's not even an IP... */ 441 if( src[i] ) 442 return src; 443 444 return ( src + 7 ); 445 } 446 #endif
Note: See TracChangeset
for help on using the changeset viewer.