xref: /titanic_51/usr/src/cmd/lp/lib/access/files.c (revision 726fad2a65f16c200a03969c29cb5c86c2d427db)
1  /*
2   * CDDL HEADER START
3   *
4   * The contents of this file are subject to the terms of the
5   * Common Development and Distribution License, Version 1.0 only
6   * (the "License").  You may not use this file except in compliance
7   * with the License.
8   *
9   * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10   * or http://www.opensolaris.org/os/licensing.
11   * See the License for the specific language governing permissions
12   * and limitations under the License.
13   *
14   * When distributing Covered Code, include this CDDL HEADER in each
15   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16   * If applicable, add the following below this CDDL HEADER, with the
17   * fields enclosed by brackets "[]" replaced with your own identifying
18   * information: Portions Copyright [yyyy] [name of copyright owner]
19   *
20   * CDDL HEADER END
21   */
22  /*
23   * Copyright 1993 Sun Microsystems, Inc.  All rights reserved.
24   * Use is subject to license terms.
25   */
26  
27  /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
28  /*	  All Rights Reserved  	*/
29  
30  
31  #pragma ident	"%Z%%M%	%I%	%E% SMI"	/* SVr4.0 1.10	*/
32  /* EMACS_MODES: !fill, lnumb, !overwrite, !nodelete, !picture */
33  
34  #include "errno.h"
35  #include "stdio.h"
36  #include "string.h"
37  #include "unistd.h"
38  #include "stdlib.h"
39  
40  #include "lp.h"
41  
42  /**
43   ** getaccessfile() - BUILD NAME OF ALLOW OR DENY FILE
44   **/
45  
46  char *
47  #if	defined(__STDC__)
48  getaccessfile (
49  	char *			dir,
50  	char *			name,
51  	char *			prefix,
52  	char *			base
53  )
54  #else
55  getaccessfile (dir, name, prefix, base)
56  	char			*dir,
57  				*name,
58  				*prefix,
59  				*base;
60  #endif
61  {
62  	register char		*parent,
63  				*file,
64  				*f;
65  
66  	/*
67  	 * It makes no sense talking about the access files if
68  	 * the directory for the form or printer doesn't exist.
69  	 */
70  	parent = makepath(dir, name, (char *)0);
71  	if (!parent)
72  		return (0);
73  	if (Access(parent, F_OK) == -1) {
74  		Free(parent);
75  		return (0);
76  	}
77  
78  	if (!(f = makestr(prefix, base, (char *)0))) {
79  		Free(parent);
80  		errno = ENOMEM;
81  		return (0);
82  	}
83  	file = makepath(parent, f, (char *)0);
84  	Free (f);
85  	Free (parent);
86  
87  	return (file);
88  }
89