]>
git.ipfire.org Git - thirdparty/cups.git/blob - cups/attr.c
2 * "$Id: attr.c 5119 2006-02-16 15:52:06Z mike $"
4 * PPD model-specific attribute routines for the Common UNIX Printing System
7 * Copyright 1997-2006 by Easy Software Products.
9 * These coded instructions, statements, and computer programs are the
10 * property of Easy Software Products and are protected by Federal
11 * copyright law. Distribution and use rights are outlined in the file
12 * "LICENSE.txt" which should have been included with this file. If this
13 * file is missing or damaged please contact Easy Software Products
16 * Attn: CUPS Licensing Information
17 * Easy Software Products
18 * 44141 Airport View Drive, Suite 204
19 * Hollywood, Maryland 20636 USA
21 * Voice: (301) 373-9600
22 * EMail: cups-info@cups.org
23 * WWW: http://www.cups.org
27 * ppdFindAttr() - Find the first matching attribute...
28 * ppdFindNextAttr() - Find the next matching attribute...
32 * Include necessary headers...
42 * 'ppdFindAttr()' - Find the first matching attribute...
47 ppd_attr_t
* /* O - Attribute or NULL if not found */
48 ppdFindAttr(ppd_file_t
*ppd
, /* I - PPD file data */
49 const char *name
, /* I - Attribute name */
50 const char *spec
) /* I - Specifier string or NULL */
52 ppd_attr_t key
; /* Search key */
56 * Range check input...
59 if (!ppd
|| !name
|| ppd
->num_attrs
== 0)
63 * Search for a matching attribute...
66 memset(&key
, 0, sizeof(key
));
67 strlcpy(key
.name
, name
, sizeof(key
.name
));
69 strlcpy(key
.spec
, spec
, sizeof(key
.spec
));
72 * Return the first matching attribute, if any...
75 return ((ppd_attr_t
*)cupsArrayFind(ppd
->sorted_attrs
, &key
));
80 * 'ppdFindNextAttr()' - Find the next matching attribute...
85 ppd_attr_t
* /* O - Attribute or NULL if not found */
86 ppdFindNextAttr(ppd_file_t
*ppd
, /* I - PPD file data */
87 const char *name
, /* I - Attribute name */
88 const char *spec
) /* I - Specifier string or NULL */
90 ppd_attr_t
*attr
; /* Current attribute */
94 * Range check input...
97 if (!ppd
|| !name
|| ppd
->num_attrs
== 0 ||
98 !cupsArrayCurrent(ppd
->sorted_attrs
))
102 * See if there are more attributes to return...
105 if ((attr
= (ppd_attr_t
*)cupsArrayNext(ppd
->sorted_attrs
)) == NULL
)
109 * Check the next attribute to see if it is a match...
112 if (strcasecmp(attr
->name
, name
) || (spec
&& strcasecmp(attr
->spec
, spec
)))
115 * Nope, reset the current pointer to the end of the array...
118 cupsArrayIndex(ppd
->sorted_attrs
, cupsArrayCount(ppd
->sorted_attrs
));
124 * Return the next attribute's value...
132 * End of "$Id: attr.c 5119 2006-02-16 15:52:06Z mike $".