diff options
Diffstat (limited to 'nx-X11/programs/nxauth/parsedpy.c')
-rw-r--r-- | nx-X11/programs/nxauth/parsedpy.c | 259 |
1 files changed, 0 insertions, 259 deletions
diff --git a/nx-X11/programs/nxauth/parsedpy.c b/nx-X11/programs/nxauth/parsedpy.c deleted file mode 100644 index d0f022574..000000000 --- a/nx-X11/programs/nxauth/parsedpy.c +++ /dev/null @@ -1,259 +0,0 @@ -/* - * $Xorg: parsedpy.c,v 1.4 2001/02/09 02:05:38 xorgcvs Exp $ - * - * parse_displayname - utility routine for splitting up display name strings - * - * -Copyright 1989, 1998 The Open Group - -Permission to use, copy, modify, distribute, and sell this software and its -documentation for any purpose is hereby granted without fee, provided that -the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation. - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name of The Open Group shall not be -used in advertising or otherwise to promote the sale, use or other dealings -in this Software without prior written authorization from The Open Group. - * * - * Author: Jim Fulton, MIT X Consortium - */ - -/* $XFree86: xc/programs/xauth/parsedpy.c,v 3.6 2001/12/14 20:01:15 dawes Exp $ */ -/**************************************************************************/ -/* */ -/* Copyright (c) 2001, 2010 NoMachine, http://www.nomachine.com/. */ -/* */ -/* NXAUTH, NX protocol compression and NX extensions to this software */ -/* are copyright of NoMachine. Redistribution and use of the present */ -/* software is allowed according to terms specified in the file LICENSE */ -/* which comes in the source distribution. */ -/* */ -/* Check http://www.nomachine.com/licensing.html for applicability. */ -/* */ -/* NX and NoMachine are trademarks of Medialogic S.p.A. */ -/* */ -/* All rights reserved. */ -/* */ -/**************************************************************************/ - -#include <stdio.h> /* for NULL */ -#include <ctype.h> /* for isascii() and isdigit() */ -#include <nx-X11/Xos.h> /* for strchr() and string routines */ -#include <nx-X11/Xlib.h> /* for Family contants */ -#ifdef hpux -#include <sys/utsname.h> /* for struct utsname */ -#endif -#include <nx-X11/Xauth.h> /* for FamilyLocal */ - -#if defined(UNIXCONN) || defined(LOCALCONN) -#define UNIX_CONNECTION "unix" -#define UNIX_CONNECTION_LENGTH 4 -#endif - -#include <stdlib.h> -#include "xauth.h" - -#define PANIC -#define WARNING -#undef TEST -#undef DEBUG - -/* - * private utility routines - */ - -char * -copystring (char *src, int len) -{ - char *cp; - - if (!src && len != 0) return NULL; - cp = malloc (len + 1); - if (cp) { - if (src) strncpy (cp, src, len); - cp[len] = '\0'; - } - return cp; -} - - -char * -get_local_hostname (char *buf, int maxlen) -{ - buf[0] = '\0'; -/* - (void) XmuGetHostname (buf, maxlen); -*/ - /*FIXME*/ - - (void) gethostname (buf, maxlen); - - buf [maxlen - 1] = '\0'; - - #ifdef TEST - printf("get_local_hostname: Host name is %s", buf); - #endif - - return (buf[0] ? buf : NULL); -} - -#ifndef UNIXCONN -static char * -copyhostname (void) -{ - char buf[256]; - - return (get_local_hostname (buf, sizeof buf) ? - copystring (buf, strlen (buf)) : NULL); -} -#endif - -/* - * parse_displayname - display a display string up into its component parts - */ -Bool -parse_displayname (char *displayname, - int *familyp, /* return */ - char **hostp, /* return */ - int *dpynump, /* return */ - int *scrnump, /* return */ - char **restp) /* return */ -{ - char *ptr; /* work variables */ - int len; /* work variable */ - int family = -1; /* value to be returned */ - char *host = NULL; /* must free if set and error return */ - int dpynum = -1; /* value to be returned */ - int scrnum = 0; /* value to be returned */ - char *rest = NULL; /* must free if set and error return */ - Bool dnet = False; /* if true then using DECnet */ - - /* check the name */ - if (!displayname || !displayname[0]) return False; - - /* must have at least :number */ - ptr = strchr(displayname, ':'); - if (!ptr || !ptr[1]) return False; - if (ptr[1] == ':') { - if (ptr[2] == '\0') return False; - dnet = True; - } - - - /* - * get the host string; if none is given, use the most effiecient path - */ - - len = (ptr - displayname); /* length of host name */ - if (len == 0) { /* choose most efficient path */ -#if defined(UNIXCONN) || defined(LOCALCONN) - host = copystring (UNIX_CONNECTION, UNIX_CONNECTION_LENGTH); - family = FamilyLocal; -#else - if (dnet) { - host = copystring ("0", 1); - family = FamilyDECnet; - } else { - host = copyhostname (); - family = FamilyInternet; - } -#endif - } else { - host = copystring (displayname, len); - if (dnet) { - family = dnet; - } else { -#if defined(UNIXCONN) || defined(LOCALCONN) - if (host && strcmp (host, UNIX_CONNECTION) == 0) - family = FamilyLocal; - else -#endif - family = FamilyInternet; - } - } - - if (!host) return False; - - - /* - * get the display number; we know that there is something after the - * colon (or colons) from above. note that host is now set and must - * be freed if there is an error. - */ - - if (dnet) ptr++; /* skip the extra DECnet colon */ - ptr++; /* move to start of display num */ - { - register char *cp; - - for (cp = ptr; *cp && isascii(*cp) && isdigit(*cp); cp++) ; - len = (cp - ptr); - /* check present and valid follow */ - if (len == 0 || (*cp && *cp != '.')) { - free (host); - return False; - } - - dpynum = atoi (ptr); /* it will handle num. as well */ - ptr = cp; - } - - /* - * now get screen number if given; ptr may point to nul at this point - */ - if (ptr[0] == '.') { - register char *cp; - - ptr++; - for (cp = ptr; *cp && isascii(*cp) && isdigit(*cp); cp++) ; - len = (cp - ptr); - if (len == 0 || (*cp && *cp != '.')) { /* all prop name */ - free (host); - return False; - } - - scrnum = atoi (ptr); /* it will handle num. as well */ - ptr = cp; - } - - /* - * and finally, get any additional stuff that might be following the - * the screen number; ptr must point to a period if there is anything - */ - - if (ptr[0] == '.') { - ptr++; - len = strlen (ptr); - if (len > 0) { - rest = copystring (ptr, len); - if (!rest) { - free (host); - return False; - } - } - } - - /* - * and we are done! - */ - - *familyp = family; - *hostp = host; - *dpynump = dpynum; - *scrnump = scrnum; - *restp = rest; - return True; -} - - |