]> git.ipfire.org Git - thirdparty/cups.git/blame - cups/notify.c
Move debug printfs to internal usage only.
[thirdparty/cups.git] / cups / notify.c
CommitLineData
fa73b229 1/*
503b54c9 2 * Notification routines for CUPS.
fa73b229 3 *
503b54c9
MS
4 * Copyright 2007-2013 by Apple Inc.
5 * Copyright 2005-2006 by Easy Software Products.
fa73b229 6 *
e3101897 7 * Licensed under Apache License v2.0. See the file "LICENSE" for more information.
fa73b229 8 */
9
10/*
11 * Include necessary headers...
12 */
13
71e16022 14#include "cups-private.h"
fb863569 15#include "debug-internal.h"
fa73b229 16
17
18/*
19 * 'cupsNotifySubject()' - Return the subject for the given notification message.
20 *
568fa3fa 21 * The returned string must be freed by the caller using @code free@.
fa73b229 22 *
8072030b 23 * @since CUPS 1.2/macOS 10.5@
fa73b229 24 */
25
5a738aea 26char * /* O - Subject string or @code NULL@ */
fa73b229 27cupsNotifySubject(cups_lang_t *lang, /* I - Language data */
28 ipp_t *event) /* I - Event data */
29{
30 char buffer[1024]; /* Subject buffer */
31 const char *prefix, /* Prefix on subject */
32 *state; /* Printer/job state string */
33 ipp_attribute_t *job_id, /* notify-job-id */
34 *job_name, /* job-name */
35 *job_state, /* job-state */
36 *printer_name, /* printer-name */
37 *printer_state, /* printer-state */
38 *printer_uri, /* notify-printer-uri */
39 *subscribed; /* notify-subscribed-event */
40
41
42 /*
43 * Range check input...
44 */
45
46 if (!event || !lang)
47 return (NULL);
48
49 /*
50 * Get the required attributes...
51 */
52
53 job_id = ippFindAttribute(event, "notify-job-id", IPP_TAG_INTEGER);
54 job_name = ippFindAttribute(event, "job-name", IPP_TAG_NAME);
55 job_state = ippFindAttribute(event, "job-state", IPP_TAG_ENUM);
56 printer_name = ippFindAttribute(event, "printer-name", IPP_TAG_NAME);
57 printer_state = ippFindAttribute(event, "printer-state", IPP_TAG_ENUM);
58 printer_uri = ippFindAttribute(event, "notify-printer-uri", IPP_TAG_URI);
59 subscribed = ippFindAttribute(event, "notify-subscribed-event",
60 IPP_TAG_KEYWORD);
61
62
63 if (job_id && printer_name && printer_uri && job_state)
64 {
65 /*
66 * Job event...
67 */
68
69 prefix = _cupsLangString(lang, _("Print Job:"));
70
71 switch (job_state->values[0].integer)
72 {
cb7f98ee 73 case IPP_JSTATE_PENDING :
fa73b229 74 state = _cupsLangString(lang, _("pending"));
75 break;
cb7f98ee 76 case IPP_JSTATE_HELD :
fa73b229 77 state = _cupsLangString(lang, _("held"));
78 break;
cb7f98ee 79 case IPP_JSTATE_PROCESSING :
fa73b229 80 state = _cupsLangString(lang, _("processing"));
81 break;
cb7f98ee 82 case IPP_JSTATE_STOPPED :
fa73b229 83 state = _cupsLangString(lang, _("stopped"));
84 break;
cb7f98ee 85 case IPP_JSTATE_CANCELED :
fa73b229 86 state = _cupsLangString(lang, _("canceled"));
87 break;
cb7f98ee 88 case IPP_JSTATE_ABORTED :
fa73b229 89 state = _cupsLangString(lang, _("aborted"));
90 break;
cb7f98ee 91 case IPP_JSTATE_COMPLETED :
fa73b229 92 state = _cupsLangString(lang, _("completed"));
93 break;
94 default :
95 state = _cupsLangString(lang, _("unknown"));
96 break;
97 }
98
99 snprintf(buffer, sizeof(buffer), "%s %s-%d (%s) %s",
100 prefix,
101 printer_name->values[0].string.text,
102 job_id->values[0].integer,
103 job_name ? job_name->values[0].string.text :
104 _cupsLangString(lang, _("untitled")),
105 state);
106 }
107 else if (printer_uri && printer_name && printer_state)
108 {
109 /*
110 * Printer event...
111 */
112
113 prefix = _cupsLangString(lang, _("Printer:"));
114
115 switch (printer_state->values[0].integer)
116 {
cb7f98ee 117 case IPP_PSTATE_IDLE :
fa73b229 118 state = _cupsLangString(lang, _("idle"));
119 break;
cb7f98ee 120 case IPP_PSTATE_PROCESSING :
fa73b229 121 state = _cupsLangString(lang, _("processing"));
122 break;
cb7f98ee 123 case IPP_PSTATE_STOPPED :
fa73b229 124 state = _cupsLangString(lang, _("stopped"));
125 break;
126 default :
127 state = _cupsLangString(lang, _("unknown"));
128 break;
129 }
130
131 snprintf(buffer, sizeof(buffer), "%s %s %s",
132 prefix,
133 printer_name->values[0].string.text,
134 state);
135 }
136 else if (subscribed)
137 strlcpy(buffer, subscribed->values[0].string.text, sizeof(buffer));
138 else
139 return (NULL);
140
141 /*
142 * Duplicate and return the subject string...
143 */
144
145 return (strdup(buffer));
146}
147
148
149/*
150 * 'cupsNotifyText()' - Return the text for the given notification message.
151 *
5a738aea 152 * The returned string must be freed by the caller using @code free@.
fa73b229 153 *
8072030b 154 * @since CUPS 1.2/macOS 10.5@
fa73b229 155 */
156
5a738aea 157char * /* O - Message text or @code NULL@ */
fa73b229 158cupsNotifyText(cups_lang_t *lang, /* I - Language data */
159 ipp_t *event) /* I - Event data */
160{
161 ipp_attribute_t *notify_text; /* notify-text */
162
163
164 /*
165 * Range check input...
166 */
167
168 if (!event || !lang)
169 return (NULL);
170
171 /*
172 * Get the notify-text attribute from the server...
173 */
174
175 if ((notify_text = ippFindAttribute(event, "notify-text",
176 IPP_TAG_TEXT)) == NULL)
177 return (NULL);
178
179 /*
180 * Return a copy...
181 */
182
183 return (strdup(notify_text->values[0].string.text));
184}