mariadb/extra/resolveip.c
unknown 16115af97c Changed to use my_global.h
Fixed problem with LIKE with latin1_de
Added parsing support of UNSIGNED LONG LONG


Docs/manual.texi:
  Changelog
client/client_priv.h:
  Changed to use my_global.h
client/completion_hash.cc:
  Changed to use my_global.h
client/errmsg.c:
  Changed to use my_global.h
client/get_password.c:
  Changed to use my_global.h
client/mysqldump.c:
  Changed to use my_global.h
client/mysqlshow.c:
  Changed to use my_global.h
client/mysqltest.c:
  Changed to use my_global.h
client/password.c:
  Changed to use my_global.h
client/readline.cc:
  Changed to use my_global.h
client/sql_string.cc:
  Changed to use my_global.h
client/thimble.cc:
  Changed to use my_global.h
client/thread_test.c:
  Changed to use my_global.h
dbug/dbug.c:
  Changed to use my_global.h
dbug/dbug_analyze.c:
  Changed to use my_global.h
dbug/example1.c:
  Changed to use my_global.h
dbug/example2.c:
  Changed to use my_global.h
dbug/example3.c:
  Changed to use my_global.h
dbug/factorial.c:
  Changed to use my_global.h
dbug/main.c:
  Changed to use my_global.h
dbug/sanity.c:
  Changed to use my_global.h
extra/comp_err.c:
  Changed to use my_global.h
extra/my_print_defaults.c:
  Changed to use my_global.h
extra/perror.c:
  Changed to use my_global.h
extra/replace.c:
  Changed to use my_global.h
extra/resolve_stack_dump.c:
  Changed to use my_global.h
extra/resolveip.c:
  Changed to use my_global.h
fs/libmysqlfs.h:
  Changed to use my_global.h
fs/mysqlcorbafs.h:
  Changed to use my_global.h
heap/hp_test1.c:
  Changed to use my_global.h
include/Makefile.am:
  Changed to use my_global.h
include/m_ctype.h:
  Changed to use my_global.h
include/my_base.h:
  Changed to use my_global.h
innobase/include/univ.i:
  Changed to use my_global.h
libmysql/dll.c:
  Changed to use my_global.h
libmysql/errmsg.c:
  Changed to use my_global.h
libmysql/get_password.c:
  Changed to use my_global.h
libmysql/libmysql.c:
  Changed to use my_global.h
libmysql/net.c:
  Changed to use my_global.h
libmysql/password.c:
  Changed to use my_global.h
libmysqld/lib_sql.cc:
  Changed to use my_global.h
libmysqld/lib_vio.c:
  Changed to use my_global.h
libmysqld/libmysqld.c:
  Changed to use my_global.h
mysql-test/mysql-test-run.sh:
  Changed to use latin1 as default character set
mysql-test/r/ctype_latin1_de.result:
  Changed to use my_global.h
mysql-test/r/func_like.result:
  New test
mysql-test/t/ctype_latin1_de.test:
  Added test of part keys
mysql-test/t/func_like.test:
  New test
mysys/checksum.c:
  Changed to use my_global.h
mysys/getopt.c:
  Changed to use my_global.h
mysys/getopt1.c:
  Changed to use my_global.h
mysys/make-conf.c:
  Changed to use my_global.h
mysys/my_alloc.c:
  Changed to use my_global.h
mysys/my_clock.c:
  Changed to use my_global.h
mysys/my_compress.c:
  Changed to use my_global.h
mysys/mysys_priv.h:
  Changed to use my_global.h
mysys/test_charset.c:
  Changed to use my_global.h
mysys/testhash.c:
  Changed to use my_global.h
mysys/thr_alarm.c:
  Changed to use my_global.h
mysys/thr_mutex.c:
  Changed to use my_global.h
regex/debug.c:
  Changed to use my_global.h
regex/main.c:
  Changed to use my_global.h
regex/regcomp.c:
  Changed to use my_global.h
regex/regerror.c:
  Changed to use my_global.h
regex/regexec.c:
  Changed to use my_global.h
regex/regexp.c:
  Changed to use my_global.h
regex/regfree.c:
  Changed to use my_global.h
regex/reginit.c:
  Changed to use my_global.h
sql/cache_manager.cc:
  Changed to use my_global.h
sql/gen_lex_hash.cc:
  Changed to use my_global.h
sql/ha_berkeley.cc:
  Fixed problem with UNIQUE keys that could contain NULL
sql/ha_gemini.h:
  Changed to use my_global.h
sql/handler.cc:
  Fixed problem after merge
sql/item.cc:
  Added Item_unit
sql/item.h:
  Added Item_uint
sql/matherr.c:
  Changed to use my_global.h
sql/md5.c:
  Changed to use my_global.h
sql/mini_client.cc:
  Changed to use my_global.h
sql/my_lock.c:
  Changed to use my_global.h
sql/mysql_priv.h:
  Changed to use my_global.h
sql/net_serv.cc:
  Changed to use my_global.h
sql/password.c:
  Changed to use my_global.h
sql/sql_lex.cc:
  Added parsing support of UNSIGNED LONG LONG
sql/sql_show.cc:
  Changed to use my_global.h
sql/sql_string.cc:
  Changed to use my_global.h
sql/sql_yacc.yy:
  Added usage of Int_uint
sql/stacktrace.c:
  Changed to use my_global.h
sql/udf_example.cc:
  Changed to use my_global.h
strings/atof.c:
  Changed to use my_global.h
strings/bchange.c:
  Changed to use my_global.h
strings/bcmp.c:
  Changed to use my_global.h
strings/bfill.c:
  Changed to use my_global.h
strings/bmove.c:
  Changed to use my_global.h
strings/bmove512.c:
  Changed to use my_global.h
strings/bmove_upp.c:
  Changed to use my_global.h
strings/ctype-big5.c:
  Changed to use my_global.h
strings/ctype-czech.c:
  Changed to use my_global.h
strings/ctype-euc_kr.c:
  Changed to use my_global.h
strings/ctype-gb2312.c:
  Changed to use my_global.h
strings/ctype-gbk.c:
  Changed to use my_global.h
strings/ctype-latin1_de.c:
  Fixed problem with LIKE
strings/ctype-sjis.c:
  Changed to use my_global.h
strings/ctype-tis620.c:
  Changed to use my_global.h
strings/ctype-ujis.c:
  Changed to use my_global.h
strings/ctype.c:
  Changed to use my_global.h
strings/do_ctype.c:
  Changed to use my_global.h
strings/int2str.c:
  Changed to use my_global.h
strings/is_prefix.c:
  Changed to use my_global.h
strings/llstr.c:
  Changed to use my_global.h
strings/longlong2str.c:
  Changed to use my_global.h
strings/r_strinstr.c:
  Changed to use my_global.h
strings/str2int.c:
  Changed to use my_global.h
strings/str_test.c:
  Changed to use my_global.h
strings/strappend.c:
  Changed to use my_global.h
strings/strcend.c:
  Changed to use my_global.h
strings/strcont.c:
  Changed to use my_global.h
strings/strend.c:
  Changed to use my_global.h
strings/strfill.c:
  Changed to use my_global.h
strings/strings-not-used.h:
  Changed to use my_global.h
strings/strinstr.c:
  Changed to use my_global.h
strings/strmake.c:
  Changed to use my_global.h
strings/strmov.c:
  Changed to use my_global.h
strings/strnlen.c:
  Changed to use my_global.h
strings/strnmov.c:
  Changed to use my_global.h
strings/strstr.c:
  Changed to use my_global.h
strings/strto.c:
  Changed to use my_global.h
strings/strtol.c:
  Changed to use my_global.h
strings/strtoll.c:
  Changed to use my_global.h
strings/strtoul.c:
  Changed to use my_global.h
strings/strtoull.c:
  Changed to use my_global.h
strings/strxmov.c:
  Changed to use my_global.h
strings/strxnmov.c:
  Changed to use my_global.h
strings/udiv.c:
  Changed to use my_global.h
tools/mysqlmanager.c:
  Changed to use my_global.h
vio/test-ssl.c:
  Changed to use my_global.h
vio/test-sslclient.c:
  Changed to use my_global.h
vio/test-sslserver.c:
  Changed to use my_global.h
vio/test-ssl:
  Changed to use my_global.h
vio/vio.c:
  Changed to use my_global.h
vio/viosocket.c:
  Changed to use my_global.h
vio/viossl.c:
  Changed to use my_global.h
vio/viosslfactories.c:
  Changed to use my_global.h
vio/viotest-ssl.c:
  Changed to use my_global.h
2001-09-14 02:54:33 +03:00

205 lines
4.7 KiB
C

/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA */
/* Resolves IP's to hostname and hostnames to IP's */
#define RESOLVE_VERSION "2.0"
#include <my_global.h>
#include <sys/types.h>
#include <sys/socket.h>
#ifndef HAVE_BROKEN_NETINET_INCLUDES
#include <netinet/in.h>
#endif
#include <arpa/inet.h>
#include <netdb.h>
#include <m_ctype.h>
#include <my_sys.h>
#include <m_string.h>
#include <getopt.h>
#if !defined(_AIX) && !defined(HAVE_UNIXWARE7_THREADS) && !defined(HAVE_UNIXWARE7_POSIX) && !defined(h_errno)
extern int h_errno;
#endif
static int silent=0;
static struct option long_options[] =
{
{"help", no_argument, 0, '?'},
{"info", no_argument, 0, 'I'},
{"silent", no_argument, 0, 's'},
{"version", no_argument, 0, 'V'},
{0, 0, 0, 0}
};
static void print_version(void)
{
printf("%s Ver %s, for %s (%s)\n",my_progname,RESOLVE_VERSION,
SYSTEM_TYPE,MACHINE_TYPE);
}
static void usage(void)
{
print_version();
puts("This software comes with ABSOLUTELY NO WARRANTY. This is free software,\nand you are welcome to modify and redistribute it under the GPL license\n");
puts("Get hostname based on IP-address or IP-address based on hostname.\n");
printf("Usage: %s [OPTIONS] hostname or IP-address\n",my_progname);
printf("\n\
-?, --help Displays this help and exits.\n\
-I, --info Synonym for the above.\n\
-s, --silent Be more silent.\n\
-V, --version Displays version information and exits.\n");
}
/*static my_string load_default_groups[]= { "resolveip","client",0 }; */
static int get_options(int *argc,char ***argv)
{
int c,option_index;
/* load_defaults("my",load_default_groups,argc,argv); */
while ((c=getopt_long(*argc,*argv,"?IsV",
long_options, &option_index)) != EOF)
{
switch (c) {
case 's':
silent=1;
break;
case 'V': print_version(); exit(0);
case 'I':
case '?':
usage();
exit(0);
default:
fprintf(stderr,"%s: Illegal option character '%c'\n",
my_progname,opterr);
return(1);
break;
}
}
(*argc)-=optind;
(*argv)+=optind;
if (*argc == 0)
{
usage();
return 1;
}
return 0;
} /* get_options */
int main(int argc, char **argv)
{
struct hostent *hpaddr;
u_long taddr;
char *ip,**q;
int error=0;
MY_INIT(argv[0]);
if (get_options(&argc,&argv))
exit(1);
while (argc--)
{
ip = *argv++;
if (isdigit(ip[0]))
{
taddr = inet_addr(ip);
if (taddr == htonl(INADDR_BROADCAST))
{
puts("Broadcast");
continue;
}
if (taddr == htonl(INADDR_ANY))
{
if (!taddr)
puts("Null-IP-Addr");
else
puts("Old-Bcast");
continue;
}
hpaddr = gethostbyaddr((char*) &(taddr), sizeof(struct in_addr),AF_INET);
if (hpaddr)
{
if (silent)
puts(hpaddr->h_name);
else
{
printf ("Host name of %s is %s", ip,hpaddr->h_name);
for (q = hpaddr->h_aliases; *q != 0; q++)
(void) printf(", %s", *q);
puts("");
}
}
else
{
error=2;
fprintf(stderr,"%s: Unable to find hostname for '%s'\n",my_progname,
ip);
}
}
else
{
hpaddr = gethostbyname(ip);
if (!hpaddr)
{
const char *err;
fprintf(stderr,"%s: Unable to find hostid for '%s'",my_progname,ip);
switch (h_errno) {
case HOST_NOT_FOUND: err="host not found"; break;
case TRY_AGAIN: err="try again"; break;
case NO_RECOVERY: err="no recovery"; break;
case NO_DATA: err="no_data"; break;
default: err=0;
}
if (err)
fprintf(stderr,": %s\n",err);
else
fprintf(stderr,"\n");
error=2;
}
else if (silent)
{
struct in_addr in;
memcpy((char*) &in.s_addr, (char*) *hpaddr->h_addr_list,
sizeof (in.s_addr));
puts(inet_ntoa(in));
}
else
{
char **p;
for (p = hpaddr->h_addr_list; *p != 0; p++)
{
struct in_addr in;
memcpy(&in.s_addr, *p, sizeof (in.s_addr));
printf ("IP address of %s is %s\n",ip,inet_ntoa(in));
}
}
}
}
exit(error);
}