1 /*
2 * PPD custom option routines for CUPS.
3 *
4 * Copyright 2007-2015 by Apple Inc.
5 * Copyright 1997-2006 by Easy Software Products, all rights reserved.
6 *
7 * Licensed under Apache License v2.0. See the file "LICENSE" for more
8 * information.
9 *
10 * PostScript is a trademark of Adobe Systems, Inc.
11 */
12
13 /*
14 * Include necessary headers.
15 */
16
17 #include "cups-private.h"
18 #include "ppd-private.h"
19 #include "debug-internal.h"
20
21
22 /*
23 * 'ppdFindCustomOption()' - Find a custom option.
24 *
25 * @since CUPS 1.2/macOS 10.5@
26 */
27
28 ppd_coption_t * /* O - Custom option or NULL */
ppdFindCustomOption(ppd_file_t * ppd,const char * keyword)29 ppdFindCustomOption(ppd_file_t *ppd, /* I - PPD file */
30 const char *keyword)/* I - Custom option name */
31 {
32 ppd_coption_t key; /* Custom option search key */
33
34
35 if (!ppd)
36 return (NULL);
37
38 strlcpy(key.keyword, keyword, sizeof(key.keyword));
39 return ((ppd_coption_t *)cupsArrayFind(ppd->coptions, &key));
40 }
41
42
43 /*
44 * 'ppdFindCustomParam()' - Find a parameter for a custom option.
45 *
46 * @since CUPS 1.2/macOS 10.5@
47 */
48
49 ppd_cparam_t * /* O - Custom parameter or NULL */
ppdFindCustomParam(ppd_coption_t * opt,const char * name)50 ppdFindCustomParam(ppd_coption_t *opt, /* I - Custom option */
51 const char *name) /* I - Parameter name */
52 {
53 ppd_cparam_t *param; /* Current custom parameter */
54
55
56 if (!opt)
57 return (NULL);
58
59 for (param = (ppd_cparam_t *)cupsArrayFirst(opt->params);
60 param;
61 param = (ppd_cparam_t *)cupsArrayNext(opt->params))
62 if (!_cups_strcasecmp(param->name, name))
63 break;
64
65 return (param);
66 }
67
68
69 /*
70 * 'ppdFirstCustomParam()' - Return the first parameter for a custom option.
71 *
72 * @since CUPS 1.2/macOS 10.5@
73 */
74
75 ppd_cparam_t * /* O - Custom parameter or NULL */
ppdFirstCustomParam(ppd_coption_t * opt)76 ppdFirstCustomParam(ppd_coption_t *opt) /* I - Custom option */
77 {
78 if (!opt)
79 return (NULL);
80
81 return ((ppd_cparam_t *)cupsArrayFirst(opt->params));
82 }
83
84
85 /*
86 * 'ppdNextCustomParam()' - Return the next parameter for a custom option.
87 *
88 * @since CUPS 1.2/macOS 10.5@
89 */
90
91 ppd_cparam_t * /* O - Custom parameter or NULL */
ppdNextCustomParam(ppd_coption_t * opt)92 ppdNextCustomParam(ppd_coption_t *opt) /* I - Custom option */
93 {
94 if (!opt)
95 return (NULL);
96
97 return ((ppd_cparam_t *)cupsArrayNext(opt->params));
98 }
99