]>
git.ipfire.org Git - thirdparty/cups.git/blob - cups/notify.c
2 * Notification routines for CUPS.
4 * Copyright 2007-2013 by Apple Inc.
5 * Copyright 2005-2006 by Easy Software Products.
7 * Licensed under Apache License v2.0. See the file "LICENSE" for more information.
11 * Include necessary headers...
14 #include "cups-private.h"
18 * 'cupsNotifySubject()' - Return the subject for the given notification message.
20 * The returned string must be freed by the caller using @code free@.
22 * @since CUPS 1.2/macOS 10.5@
25 char * /* O - Subject string or @code NULL@ */
26 cupsNotifySubject(cups_lang_t
*lang
, /* I - Language data */
27 ipp_t
*event
) /* I - Event data */
29 char buffer
[1024]; /* Subject buffer */
30 const char *prefix
, /* Prefix on subject */
31 *state
; /* Printer/job state string */
32 ipp_attribute_t
*job_id
, /* notify-job-id */
33 *job_name
, /* job-name */
34 *job_state
, /* job-state */
35 *printer_name
, /* printer-name */
36 *printer_state
, /* printer-state */
37 *printer_uri
, /* notify-printer-uri */
38 *subscribed
; /* notify-subscribed-event */
42 * Range check input...
49 * Get the required attributes...
52 job_id
= ippFindAttribute(event
, "notify-job-id", IPP_TAG_INTEGER
);
53 job_name
= ippFindAttribute(event
, "job-name", IPP_TAG_NAME
);
54 job_state
= ippFindAttribute(event
, "job-state", IPP_TAG_ENUM
);
55 printer_name
= ippFindAttribute(event
, "printer-name", IPP_TAG_NAME
);
56 printer_state
= ippFindAttribute(event
, "printer-state", IPP_TAG_ENUM
);
57 printer_uri
= ippFindAttribute(event
, "notify-printer-uri", IPP_TAG_URI
);
58 subscribed
= ippFindAttribute(event
, "notify-subscribed-event",
62 if (job_id
&& printer_name
&& printer_uri
&& job_state
)
68 prefix
= _cupsLangString(lang
, _("Print Job:"));
70 switch (job_state
->values
[0].integer
)
72 case IPP_JSTATE_PENDING
:
73 state
= _cupsLangString(lang
, _("pending"));
75 case IPP_JSTATE_HELD
:
76 state
= _cupsLangString(lang
, _("held"));
78 case IPP_JSTATE_PROCESSING
:
79 state
= _cupsLangString(lang
, _("processing"));
81 case IPP_JSTATE_STOPPED
:
82 state
= _cupsLangString(lang
, _("stopped"));
84 case IPP_JSTATE_CANCELED
:
85 state
= _cupsLangString(lang
, _("canceled"));
87 case IPP_JSTATE_ABORTED
:
88 state
= _cupsLangString(lang
, _("aborted"));
90 case IPP_JSTATE_COMPLETED
:
91 state
= _cupsLangString(lang
, _("completed"));
94 state
= _cupsLangString(lang
, _("unknown"));
98 snprintf(buffer
, sizeof(buffer
), "%s %s-%d (%s) %s",
100 printer_name
->values
[0].string
.text
,
101 job_id
->values
[0].integer
,
102 job_name
? job_name
->values
[0].string
.text
:
103 _cupsLangString(lang
, _("untitled")),
106 else if (printer_uri
&& printer_name
&& printer_state
)
112 prefix
= _cupsLangString(lang
, _("Printer:"));
114 switch (printer_state
->values
[0].integer
)
116 case IPP_PSTATE_IDLE
:
117 state
= _cupsLangString(lang
, _("idle"));
119 case IPP_PSTATE_PROCESSING
:
120 state
= _cupsLangString(lang
, _("processing"));
122 case IPP_PSTATE_STOPPED
:
123 state
= _cupsLangString(lang
, _("stopped"));
126 state
= _cupsLangString(lang
, _("unknown"));
130 snprintf(buffer
, sizeof(buffer
), "%s %s %s",
132 printer_name
->values
[0].string
.text
,
136 strlcpy(buffer
, subscribed
->values
[0].string
.text
, sizeof(buffer
));
141 * Duplicate and return the subject string...
144 return (strdup(buffer
));
149 * 'cupsNotifyText()' - Return the text for the given notification message.
151 * The returned string must be freed by the caller using @code free@.
153 * @since CUPS 1.2/macOS 10.5@
156 char * /* O - Message text or @code NULL@ */
157 cupsNotifyText(cups_lang_t
*lang
, /* I - Language data */
158 ipp_t
*event
) /* I - Event data */
160 ipp_attribute_t
*notify_text
; /* notify-text */
164 * Range check input...
171 * Get the notify-text attribute from the server...
174 if ((notify_text
= ippFindAttribute(event
, "notify-text",
175 IPP_TAG_TEXT
)) == NULL
)
182 return (strdup(notify_text
->values
[0].string
.text
));