8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / cmd / lp / lib / printers / delprinter.c
bloba7a183e90279117d12f5de7afc5e50486ceb511e
1 /*
2 * CDDL HEADER START
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.
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.
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]
20 * CDDL HEADER END
22 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
23 /* All Rights Reserved */
27 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
28 * Use is subject to license terms.
31 #pragma ident "%Z%%M% %I% %E% SMI"
33 /* EMACS_MODES: !fill, lnumb, !overwrite, !nodelete, !picture */
35 #include "errno.h"
36 #include "sys/types.h"
37 #include "stdlib.h"
39 #include "lp.h"
40 #include "printers.h"
42 #if defined(__STDC__)
43 static int _delprinter ( char * );
44 #else
45 static int _delprinter();
46 #endif
48 /**
49 ** delprinter()
50 **/
52 int
53 #if defined(__STDC__)
54 delprinter (
55 char * name
57 #else
58 delprinter (name)
59 char *name;
60 #endif
62 long lastdir;
65 if (!name || !*name) {
66 errno = EINVAL;
67 return (-1);
70 if (!Lp_A_Printers || !Lp_A_Interfaces) {
71 getadminpaths (LPUSER);
72 if (!Lp_A_Printers || !Lp_A_Interfaces)
73 return (0);
76 if (STREQU(NAME_ALL, name)) {
77 lastdir = -1;
78 while ((name = next_dir(Lp_A_Printers, &lastdir)))
79 if (_delprinter(name) == -1)
80 return (-1);
81 return (0);
82 } else
83 return (_delprinter(name));
86 /**
87 ** _delprinter()
88 **/
90 static int
91 #if defined(__STDC__)
92 _delprinter (
93 char * name
95 #else
96 _delprinter (name)
97 char *name;
98 #endif
100 register char *path;
101 #ifdef LP_USE_PAPI_ATTR
102 char ppdfile[BUFSIZ];
103 #endif
105 #define RMFILE(X) if (!(path = getprinterfile(name, X))) \
106 return (-1); \
107 if (rmfile(path) == -1) { \
108 Free (path); \
109 return (-1); \
111 Free (path)
112 RMFILE (COMMENTFILE);
113 RMFILE (CONFIGFILE);
114 RMFILE (FALLOWFILE);
115 RMFILE (FDENYFILE);
116 RMFILE (UALLOWFILE);
117 RMFILE (UDENYFILE);
118 RMFILE (STATUSFILE);
119 RMFILE (FAULTMESSAGEFILE);
121 delalert (Lp_A_Printers, name);
123 if (!(path = makepath(Lp_A_Interfaces, name, (char *)0)))
124 return (-1);
125 if (rmfile(path) == -1) {
126 Free (path);
127 return (-1);
129 Free (path);
131 #ifdef LP_USE_PAPI_ATTR
132 /* Check if the printer has a ppd file, if it does delete it */
133 (void) snprintf(ppdfile, sizeof (ppdfile), "%s.ppd", name);
135 if (!(path = makepath(ETCDIR, "ppd", ppdfile, (char *)0)))
137 return (-1);
139 if (rmfile(path) == -1)
141 Free(path);
142 return (-1);
144 Free(path);
145 #endif
147 if (!(path = getprinterfile(name, (char *)0)))
148 return (-1);
149 if (Rmdir(path) == -1) {
150 Free (path);
151 return (-1);
153 Free (path);
155 return (0);