4.4BSD/usr/src/contrib/X11R5-lib/lib/Xau/AuFileName.c

/*
 * Xau - X Authorization Database Library
 *
 * $XConsortium: AuFileName.c,v 1.2 91/01/08 15:09:00 gildea Exp $
 *
 * Copyright 1988 Massachusetts Institute of Technology
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose and without fee is hereby granted, provided
 * that the above copyright notice appear in all copies and that both that
 * copyright notice and this permission notice appear in supporting
 * documentation, and that the name of M.I.T. not be used in advertising or
 * publicity pertaining to distribution of the software without specific,
 * written prior permission.  M.I.T. makes no representations about the
 * suitability of this software for any purpose.  It is provided "as is"
 * without express or implied warranty.
 *
 * Author:  Keith Packard, MIT X Consortium
 */

#include <X11/Xauth.h>

char *
XauFileName ()
{
    char    *name, *malloc (), *getenv ();
    char    *strcat (), *strcpy ();
    static char	*buf;
    static int	bsize;
    int	    size;

    if (name = getenv ("XAUTHORITY")) {
	return name;
    } else if (name = getenv ("HOME")) {
	size = strlen (name) + strlen(".Xauthority") + 2;
	if (size > bsize) {
	    if (buf)
		free (buf);
	    buf = malloc ((unsigned) size);
	    if (!buf)
		return 0;
	    bsize = size;
	}
	strcpy (buf, name);
	strcat (buf, "/.Xauthority" + (name[1] == '\0' ? 1 : 0));
	return buf;
    }
    return 0;
}