Mercurial > illumos > onarm
annotate usr/src/cmd/lp/lib/filters/delfilter.c @ 4:1a15d5aaf794
synchronized with onnv_86 (6202) in onnv-gate
author | Koji Uno <koji.uno@sun.com> |
---|---|
date | Mon, 31 Aug 2009 14:38:03 +0900 |
parents | c9caec207d52 |
children |
rev | line source |
---|---|
0 | 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 /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ | |
23 /* All Rights Reserved */ | |
24 | |
25 | |
4
1a15d5aaf794
synchronized with onnv_86 (6202) in onnv-gate
Koji Uno <koji.uno@sun.com>
parents:
0
diff
changeset
|
26 #ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.7 */ |
0 | 27 /* EMACS_MODES: !fill, lnumb, !overwrite, !nodelete, !picture */ |
28 | |
29 #include "errno.h" | |
30 #include "string.h" | |
31 #include "stdlib.h" | |
32 | |
33 #include "lp.h" | |
34 #include "filters.h" | |
35 | |
36 /** | |
37 ** delfilter() - DELETE A FILTER FROM FILTER TABLE | |
38 **/ | |
39 | |
40 int | |
41 #if defined(__STDC__) | |
42 delfilter ( | |
43 char * name | |
44 ) | |
45 #else | |
46 delfilter (name) | |
47 char *name; | |
48 #endif | |
49 { | |
50 register _FILTER *pf; | |
51 | |
52 | |
53 if (!name || !*name) { | |
54 errno = EINVAL; | |
55 return (-1); | |
56 } | |
57 | |
58 if (STREQU(NAME_ALL, name)) { | |
59 trash_filters (); | |
60 goto Done; | |
61 } | |
62 | |
63 /* | |
64 * Don't need to check for ENOENT, because if it is set, | |
65 * well that's what we want to return anyway! | |
66 */ | |
67 if (!filters && get_and_load() == -1 /* && errno != ENOENT */ ) | |
68 return (-1); | |
69 | |
70 if (!(pf = search_filter(name))) { | |
71 errno = ENOENT; | |
72 return (-1); | |
73 } | |
74 | |
75 free_filter (pf); | |
76 for (; pf->name; pf++) | |
77 *pf = *(pf+1); | |
78 | |
79 nfilters--; | |
80 filters = (_FILTER *)Realloc( | |
81 (char *)filters, (nfilters + 1) * sizeof(_FILTER) | |
82 ); | |
83 if (!filters) { | |
84 errno = ENOMEM; | |
85 return (-1); | |
86 } | |
87 | |
88 /* filters[nfilters].name = 0; */ /* last for loop above did this */ | |
89 | |
90 Done: return (dumpfilters((char *)0)); | |
91 } |