--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/open-src/app/xhost/xhost.patch Thu Jan 24 15:06:03 2008 -0800
@@ -0,0 +1,392 @@
+--- xhost.c Mon Jul 10 19:53:04 2006
++++ filemerge.out Wed Jan 23 14:22:49 2008
+@@ -124,6 +124,11 @@
+ #endif
+ #endif
+
++/* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++#include <locale.h> /* setlocale() */
++#include <libintl.h> /* gettext(), textdomain(), etc. */
++#include <stdlib.h> /* getenv() */
++
+ static int change_host(Display *dpy, char *name, Bool add);
+ static char *get_hostname(XHostAddress *ha);
+ static int local_xerror(Display *dpy, XErrorEvent *rep);
+@@ -193,10 +198,24 @@
+ char *cp;
+ #endif
+
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ char *domaindir;
++ setlocale(LC_ALL,"");
++ textdomain("xhost");
++
++ /* mainly for debugging */
++ if((domaindir=getenv("TEXTDOMAINDIR")) == NULL) {
++ domaindir = "/usr/X11/share/locale"; /*XLOCALEDIR;*/
++ }
++ bindtextdomain("xhost",domaindir);
++
++
+ ProgramName = argv[0];
+
+ if ((dpy = XOpenDisplay(NULL)) == NULL) {
+- fprintf(stderr, "%s: unable to open display \"%s\"\n",
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf(stderr,
++ gettext("%s: unable to open display \"%s\"\n"),
+ ProgramName, XDisplayName (NULL));
+ exit(1);
+ }
+@@ -211,9 +230,11 @@
+ sethostent(1); /* don't close the data base each time */
+ list = XListHosts(dpy, &nhosts, &enabled);
+ if (enabled)
+- printf ("access control enabled, only authorized clients can connect\n");
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ printf (gettext("access control enabled, only authorized clients can connect\n"));
+ else
+- printf ("access control disabled, clients can connect from any host\n");
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ printf (gettext("access control disabled, clients can connect from any host\n"));
+
+ if (nhosts != 0) {
+ for (i = 0; i < nhosts; i++ ) {
+@@ -242,16 +263,18 @@
+ printf("SI:");
+ break;
+ default:
+- printf("<unknown family type %d>:", list[i].family);
++ printf(gettext("<unknown family type %d>:"), list[i].family);
+ break;
+ }
+ printf ("%s", hostname);
+ } else {
+- printf ("<unknown address in family %d>",
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ printf (gettext("<unknown address in family %d>"),
+ list[i].family);
+ }
+ if (nameserver_timedout) {
+- printf("\t(no nameserver response within %d seconds)\n",
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ printf(gettext("\t(no nameserver response within %d seconds)\n"),
+ NAMESERVER_TIMEOUT);
+ nameserver_timedout = 0;
+ } else
+@@ -264,7 +287,8 @@
+ }
+
+ if (argc == 2 && !strcmp(argv[1], "-help")) {
+- fprintf(stderr, "usage: %s [[+-]hostname ...]\n", argv[0]);
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf(stderr, gettext("usage: %s [[+-]hostname ...]\n"), argv[0]);
+ exit(1);
+ }
+
+@@ -273,12 +297,14 @@
+ if (*arg == '-') {
+
+ if (!argv[i][1] && ((i+1) == argc)) {
+- printf ("access control enabled, only authorized clients can connect\n");
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ printf (gettext("access control enabled, only authorized clients can connect\n"));
+ XEnableAccessControl(dpy);
+ } else {
+ arg = argv[i][1]? &argv[i][1] : argv[++i];
+ if (!change_host (dpy, arg, False)) {
+- fprintf (stderr, "%s: bad hostname \"%s\"\n",
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: bad hostname \"%s\"\n"),
+ ProgramName, arg);
+ nfailed++;
+ }
+@@ -285,7 +311,8 @@
+ }
+ } else {
+ if (*arg == '+' && !argv[i][1] && ((i+1) == argc)) {
+- printf ("access control disabled, clients can connect from any host\n");
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ printf (gettext("access control disabled, clients can connect from any host\n"));
+ XDisableAccessControl(dpy);
+ } else {
+ if (*arg == '+') {
+@@ -292,7 +319,8 @@
+ arg = argv[i][1]? &argv[i][1] : argv[++i];
+ }
+ if (!change_host (dpy, arg, True)) {
+- fprintf (stderr, "%s: bad hostname \"%s\"\n",
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: bad hostname \"%s\"\n"),
+ ProgramName, arg);
+ nfailed++;
+ }
+@@ -324,6 +352,7 @@
+ krb5_data kbuf;
+ #endif
+ #ifdef NEEDSOCKETS
++#ifndef AMTCPCONN
+ static struct in_addr addr; /* so we can point at it */
+ #if defined(IPv6) && defined(AF_INET6)
+ static struct in6_addr addr6; /* so we can point at it */
+@@ -330,7 +359,10 @@
+ #else
+ struct hostent *hp;
+ #endif
++#else
++ static ipaddr_t addr;
+ #endif
++#endif
+ char *cp;
+ #ifdef DNETCONN
+ struct dn_naddr *dnaddrp;
+@@ -337,12 +369,14 @@
+ struct nodeent *np;
+ static struct dn_naddr dnaddr;
+ #endif /* DNETCONN */
+- static char *add_msg = "being added to access control list";
+- static char *remove_msg = "being removed from access control list";
++ const char *add_msg = gettext("being added to access control list");
++ const char *remove_msg = gettext("being removed from access control list");
+
+ namelen = strlen(name);
+ if ((lname = (char *)malloc(namelen+1)) == NULL) {
+- fprintf (stderr, "%s: malloc bombed in change_host\n", ProgramName);
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: malloc bombed in change_host\n"),
++ ProgramName);
+ exit (1);
+ }
+ for (i = 0; i < namelen; i++) {
+@@ -350,12 +384,12 @@
+ }
+ lname[namelen] = '\0';
+ if (!strncmp("inet:", lname, 5)) {
+-#if defined(TCPCONN) || defined(STREAMSCONN)
++#if defined(TCPCONN) || defined(STREAMSCONN) || defined(AMTCPCONN)
+ family = FamilyInternet;
+ name += 5;
+ #else
+- fprintf (stderr, "%s: not compiled for TCP/IP\n", ProgramName);
+- free(lname);
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: not compiled for TCP/IP\n"), ProgramName);
+ return 0;
+ #endif
+ }
+@@ -365,8 +399,8 @@
+ family = FamilyInternet6;
+ name += 6;
+ #else
+- fprintf (stderr, "%s: not compiled for IPv6\n", ProgramName);
+- free(lname);
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: not compiled for IPv6\n"), ProgramName);
+ return 0;
+ #endif
+ }
+@@ -378,8 +412,8 @@
+ family = FamilyInternet6;
+ name += 7;
+ #else
+- fprintf (stderr, "%s: not compiled for IPv6\n", ProgramName);
+- free(lname);
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: not compiled for IPv6\n"), ProgramName);
+ return 0;
+ #endif
+ }
+@@ -389,8 +423,8 @@
+ family = FamilyDECnet;
+ name += 5;
+ #else
+- fprintf (stderr, "%s: not compiled for DECnet\n", ProgramName);
+- free(lname);
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: not compiled for DECnet\n"), ProgramName);
+ return 0;
+ #endif
+ }
+@@ -399,8 +433,8 @@
+ family = FamilyNetname;
+ name += 4;
+ #else
+- fprintf (stderr, "%s: not compiled for Secure RPC\n", ProgramName);
+- free(lname);
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: not compiled for Secure RPC\n"), ProgramName);
+ return 0;
+ #endif
+ }
+@@ -409,8 +443,8 @@
+ family = FamilyKrb5Principal;
+ name +=4;
+ #else
+- fprintf (stderr, "%s: not compiled for Kerberos 5\n", ProgramName);
+- free(lname);
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: not compiled for Kerberos 5\n"), ProgramName);
+ return 0;
+ #endif
+ }
+@@ -422,11 +456,21 @@
+ name += 3;
+ }
+ if (family == FamilyWild && (cp = strchr(lname, ':'))) {
+- *cp = '\0';
+- fprintf (stderr, "%s: unknown address family \"%s\"\n",
+- ProgramName, lname);
+- free(lname);
+- return 0;
++#ifdef IPv6
++ /*
++ * Check to see if inet_pton() can grok it as an IPv6 address
++ */
++ if (inet_pton(AF_INET6, lname, &addr6.s6_addr) == 1) {
++ family = FamilyInternet6;
++ } else
++#endif
++ {
++ *cp = '\0';
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: unknown address family \"%s\"\n"),
++ ProgramName, lname);
++ return 0;
++ }
+ }
+ free(lname);
+
+@@ -436,8 +480,8 @@
+
+ cp = strchr(name, ':');
+ if (cp == NULL || cp == name) {
+- fprintf(stderr,
+- "%s: type must be specified for server interpreted family \"%s\"\n",
++ fprintf(stderr, gettext(
++ "%s: type must be specified for server interpreted family \"%s\"\n"),
+ ProgramName, name);
+ return 0;
+ }
+@@ -471,7 +515,8 @@
+ dnaddr = *dnaddrp;
+ } else {
+ if ((np = getnodebyname (name)) == NULL) {
+- fprintf (stderr, "%s: unable to get node name for \"%s::\"\n",
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf (stderr, gettext("%s: unable to get node name for \"%s::\"\n"),
+ ProgramName, name);
+ return 0;
+ }
+@@ -497,7 +542,8 @@
+ retval = krb5_parse_name(name, &princ);
+ if (retval) {
+ krb5_init_ets(); /* init krb errs for error_message() */
+- fprintf(stderr, "%s: cannot parse Kerberos name: %s\n",
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf(stderr, gettext("%s: cannot parse Kerberos name: %s\n"),
+ ProgramName, error_message(retval));
+ return 0;
+ }
+@@ -523,7 +569,7 @@
+ XAddHost(dpy, &ha);
+ else
+ XRemoveHost(dpy, &ha);
+- printf( "non-network local connections %s\n", add ? add_msg : remove_msg);
++ printf( gettext("non-network local connections %s\n"), add ? add_msg : remove_msg);
+ return 1;
+ }
+ /*
+@@ -542,12 +588,14 @@
+ *cp = '\0';
+ pwd = getpwnam(name);
+ if (!pwd) {
+- fprintf(stderr, "no such user \"%s\"\n", name);
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf(stderr, gettext("no such user \"%s\"\n"), name);
+ return 0;
+ }
+ getdomainname(domainname, sizeof(domainname));
+ if (!user2netname(username, pwd->pw_uid, domainname)) {
+- fprintf(stderr, "failed to get netname for \"%s\"\n", name);
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
++ fprintf(stderr, gettext("failed to get netname for \"%s\"\n"), name);
+ return 0;
+ }
+ netname = username;
+@@ -570,8 +618,13 @@
+ /*
+ * First see if inet_addr() can grok the name; if so, then use it.
+ */
++#ifndef AMTCPCONN
+ if (((family == FamilyWild) || (family == FamilyInternet)) &&
+ ((addr.s_addr = inet_addr(name)) != -1)) {
++#else
++ if (((family == FamilyWild) || (family == FamilyInternet)) &&
++ ((addr = inet_addr(name)) != -1)) {
++#endif
+ ha.family = FamilyInternet;
+ ha.length = 4; /* but for Cray would be sizeof(addr.s_addr) */
+ ha.address = (char *)&addr; /* but for Cray would be &addr.s_addr */
+@@ -654,8 +707,11 @@
+ familyMsg = "inet ";
+ }
+
+- fprintf(stderr, "%s: unable to get %saddress for \"%s\"\n",
+- ProgramName, familyMsg, name);
++ /* L10N_Comments - Parts composed to make full error string
++ 'unable to get' ['inet'|'inetv6'|''] 'address for' <address> */
++ fprintf (stderr, "%s: %s %s%s \"%s\"\n", ProgramName,
++ gettext("unable to get"), familyMsg, gettext("address for"),
++ name);
+ }
+ freeaddrinfo(addresses);
+ return 1;
+@@ -715,7 +771,7 @@
+ static char *
+ get_hostname(XHostAddress *ha)
+ {
+-#if (defined(TCPCONN) || defined(STREAMSCONN)) && \
++#if (defined(TCPCONN) || defined(STREAMSCONN) || defined(AMTCPCONN)) && \
+ (!defined(IPv6) || !defined(AF_INET6))
+ static struct hostent *hp = NULL;
+ #endif
+@@ -733,7 +789,7 @@
+ struct sigaction sa;
+ #endif
+
+-#if defined(TCPCONN) || defined(STREAMSCONN)
++#if defined(TCPCONN) || defined(STREAMSCONN) || defined(AMTCPCONN)
+ #if defined(IPv6) && defined(AF_INET6)
+ if ((ha->family == FamilyInternet) || (ha->family == FamilyInternet6)) {
+ struct sockaddr_storage saddr;
+@@ -823,7 +879,11 @@
+ alarm(0);
+ if (hp)
+ return (hp->h_name);
++#ifndef AMTCPCONN
+ else return (inet_ntoa(*((struct in_addr *)(ha->address))));
++#else
++ else return (inet_ntoa(*((ipaddr_t *)(ha->address))));
++#endif
+ }
+ #endif /* IPv6 */
+ #endif
+@@ -933,14 +993,16 @@
+ local_xerror(Display *dpy, XErrorEvent *rep)
+ {
+ if ((rep->error_code == BadAccess) && (rep->request_code == X_ChangeHosts)) {
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
+ fprintf (stderr,
+- "%s: must be on local machine to add or remove hosts.\n",
++ gettext("%s: must be on local machine to add or remove hosts.\n"),
+ ProgramName);
+ return 1;
+ } else if ((rep->error_code == BadAccess) &&
+ (rep->request_code == X_SetAccessControl)) {
++ /* Internationalize messages for bug 4256527... S Swales 5/25/00 */
+ fprintf (stderr,
+- "%s: must be on local machine to enable or disable access control.\n",
++ gettext("%s: must be on local machine to enable or disable access control.\n"),
+ ProgramName);
+ return 1;
+ } else if ((rep->error_code == BadValue) &&