]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Add cupsGetClock API.
authorMichael R Sweet <msweet@msweet.org>
Tue, 22 Oct 2024 20:24:44 +0000 (16:24 -0400)
committerMichael R Sweet <msweet@msweet.org>
Tue, 22 Oct 2024 20:24:44 +0000 (16:24 -0400)
12 files changed:
CHANGES.md
cups/Dependencies
cups/Makefile
cups/cups.h
cups/libcups2.def
doc/help/api-admin.html
doc/help/api-filter.html
doc/help/api-ppd.html
doc/help/cupspm.epub
doc/help/cupspm.html
vcnet/libcups2.vcxproj
xcode/CUPS.xcodeproj/project.pbxproj

index 7d28892c49c15bbd23e53bbdeb0126cfa39d3ded..b2a70d176a33881af02e5693c45c44cd1b2b6cc7 100644 (file)
@@ -32,6 +32,7 @@ Changes in CUPS v2.5b1 (TBA)
 - Added a systemd slice to the systemd services included with the scheduler
 - Added localizations for deprecated IPP attributes/options (Issue #1020)
 - Added support for specifying permissions with the `cupsFileOpen` API.
+- Added new `cupsGetClock` API.
 - Added new `cupsParseOptions2` API with "end" argument.
 - Updated documentation (Issue #984)
 - Updated the configure script to default to installing to /usr/local.
index 95b7f9b752af5baca813fd2a760db0182b8bef4b..57960c61b95e55dfb00988f67d42512dfd606d64 100644 (file)
-array.o: array.c ../cups/cups.h file.h base.h ipp.h http.h array.h \
-  language.h pwg.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h
+array.o: array.c ../cups/cups.h ../cups/file.h ../cups/base.h \
+  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
+  ../cups/pwg.h string-private.h ../config.h debug-internal.h \
+  debug-private.h
 auth.o: auth.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
+clock.o: clock.c cups-private.h string-private.h ../config.h \
+  ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 debug.o: debug.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 dest.o: dest.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h dnssd.h
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h dnssd.h
 dest-job.o: dest-job.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 dest-localization.o: dest-localization.c cups-private.h string-private.h \
   ../config.h ../cups/base.h debug-internal.h debug-private.h \
-  ipp-private.h ../cups/cups.h file.h base.h ipp.h http.h array.h \
-  language.h pwg.h http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 dest-options.o: dest-options.c cups-private.h string-private.h \
   ../config.h ../cups/base.h debug-internal.h debug-private.h \
-  ipp-private.h ../cups/cups.h file.h base.h ipp.h http.h array.h \
-  language.h pwg.h http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 dir.o: dir.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h dir.h
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h dir.h
 dnssd.o: dnssd.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h dnssd.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h dnssd.h
 encode.o: encode.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 file.o: file.c file-private.h cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 form.o: form.c form.h cups.h file.h base.h ipp.h http.h array.h \
   language.h pwg.h cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
   ../cups/cups.h http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
   language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
   thread.h
 getputfile.o: getputfile.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 globals.o: globals.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 hash.o: hash.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h md5-internal.h
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h md5-internal.h
 http.o: http.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 http-addr.o: http-addr.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 http-addrlist.o: http-addrlist.c cups-private.h string-private.h \
   ../config.h ../cups/base.h debug-internal.h debug-private.h \
-  ipp-private.h ../cups/cups.h file.h base.h ipp.h http.h array.h \
-  language.h pwg.h http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 http-support.o: http-support.c cups-private.h string-private.h \
   ../config.h ../cups/base.h debug-internal.h debug-private.h \
-  ipp-private.h ../cups/cups.h file.h base.h ipp.h http.h array.h \
-  language.h pwg.h http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h dnssd.h
+  ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h dnssd.h
 ipp.o: ipp.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 ipp-file.o: ipp-file.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 ipp-support.o: ipp-support.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 json.o: json.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h json-private.h json.h
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h json-private.h json.h
 jwt.o: jwt.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h jwt.h json.h json-private.h \
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h jwt.h json.h json-private.h
 langprintf.o: langprintf.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 language.o: language.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 md5.o: md5.c md5-internal.h base.h string-private.h ../config.h \
   ../cups/base.h
-md5passwd.o: md5passwd.c ../cups/cups.h file.h base.h ipp.h http.h \
-  array.h language.h pwg.h http-private.h ../config.h ../cups/language.h \
-  ../cups/http.h ipp-private.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  string-private.h ../cups/base.h
+md5passwd.o: md5passwd.c ../cups/cups.h ../cups/file.h ../cups/base.h \
+  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
+  ../cups/pwg.h http-private.h ../config.h ipp-private.h \
+  string-private.h
 notify.o: notify.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 oauth.o: oauth.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h oauth.h jwt.h json.h form.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h oauth.h jwt.h json.h form.h
 options.o: options.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 pwg-media.o: pwg-media.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 rand.o: rand.c cups.h file.h base.h ipp.h http.h array.h language.h pwg.h
 raster-error.o: raster-error.c cups-private.h string-private.h \
   ../config.h ../cups/base.h debug-internal.h debug-private.h \
-  ipp-private.h ../cups/cups.h file.h base.h ipp.h http.h array.h \
-  language.h pwg.h http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h raster-private.h raster.h ../cups/debug-private.h \
+  ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h raster-private.h raster.h ../cups/debug-private.h \
   ../cups/string-private.h
 raster-stream.o: raster-stream.c raster-private.h raster.h cups.h file.h \
   base.h ipp.h http.h array.h language.h pwg.h ../cups/cups.h \
@@ -811,715 +211,210 @@ raster-stubs.o: raster-stubs.c raster-private.h raster.h cups.h file.h \
   ../config.h
 request.o: request.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 string.o: string.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 tempfile.o: tempfile.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 thread.o: thread.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 tls.o: tls.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h dir.h tls-openssl.c \
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h dir.h tls-openssl.c \
  
 transcode.o: transcode.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 usersys.o: usersys.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 util.o: util.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 adminutil.o: adminutil.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd.h raster.h adminutil.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd.h array.h file.h raster.h adminutil.h
 backchannel.o: backchannel.c cups.h file.h base.h ipp.h http.h array.h \
   language.h pwg.h sidechannel.h
 backend.o: backend.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h backend.h ppd.h raster.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h backend.h ppd.h array.h file.h raster.h
 getdevices.o: getdevices.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h adminutil.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h adminutil.h
 getifaddrs.o: getifaddrs.c getifaddrs-internal.h ../config.h base.h
 ppd.o: ppd.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd-private.h ../cups/ppd.h raster.h
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd-private.h ../cups/ppd.h ../cups/raster.h
 ppd-attr.o: ppd-attr.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd-private.h ../cups/ppd.h raster.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd-private.h ../cups/ppd.h ../cups/raster.h
 ppd-cache.o: ppd-cache.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd-private.h ../cups/ppd.h raster.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd-private.h ../cups/ppd.h ../cups/raster.h
 ppd-conflicts.o: ppd-conflicts.c cups-private.h string-private.h \
   ../config.h ../cups/base.h debug-internal.h debug-private.h \
-  ipp-private.h ../cups/cups.h file.h base.h ipp.h http.h array.h \
-  language.h pwg.h http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd-private.h ../cups/ppd.h raster.h
+  ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd-private.h ../cups/ppd.h ../cups/raster.h
 ppd-custom.o: ppd-custom.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd-private.h ../cups/ppd.h raster.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd-private.h ../cups/ppd.h ../cups/raster.h
 ppd-emit.o: ppd-emit.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd.h raster.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd.h array.h file.h raster.h
 ppd-localize.o: ppd-localize.c cups-private.h string-private.h \
   ../config.h ../cups/base.h debug-internal.h debug-private.h \
-  ipp-private.h ../cups/cups.h file.h base.h ipp.h http.h array.h \
-  language.h pwg.h http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd-private.h ../cups/ppd.h raster.h
+  ipp-private.h ../cups/cups.h ../cups/file.h ../cups/ipp.h \
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd-private.h ../cups/ppd.h ../cups/raster.h
 ppd-mark.o: ppd-mark.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd-private.h ../cups/ppd.h raster.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd-private.h ../cups/ppd.h ../cups/raster.h
 ppd-page.o: ppd-page.c string-private.h ../config.h ../cups/base.h \
   debug-internal.h debug-private.h ppd.h cups.h file.h base.h ipp.h \
   http.h array.h language.h pwg.h raster.h
 ppd-util.o: ppd-util.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd-private.h ../cups/ppd.h raster.h
-raster-interpret.o: raster-interpret.c ../cups/raster-private.h raster.h \
-  cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  ../cups/cups.h ../cups/debug-private.h ../cups/base.h \
-  ../cups/string-private.h ../config.h ../cups/ppd-private.h \
-  ../cups/ppd.h pwg-private.h ../cups/pwg.h debug-internal.h \
-  debug-private.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd-private.h ../cups/ppd.h ../cups/raster.h
+raster-interpret.o: raster-interpret.c ../cups/raster-private.h \
+  ../cups/raster.h ../cups/cups.h ../cups/file.h ../cups/base.h \
+  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
+  ../cups/pwg.h ../cups/debug-private.h ../cups/string-private.h \
+  ../config.h ../cups/ppd-private.h ../cups/ppd.h ../cups/pwg-private.h \
+  debug-internal.h debug-private.h
 raster-interstub.o: raster-interstub.c ../cups/ppd-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  ../cups/ppd.h cups.h raster.h pwg-private.h ../cups/pwg.h
+  ../cups/cups.h ../cups/file.h ../cups/base.h ../cups/ipp.h \
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  ../cups/ppd.h ../cups/raster.h ../cups/pwg-private.h
 sidechannel.o: sidechannel.c sidechannel.h base.h cups-private.h \
   string-private.h ../config.h ../cups/base.h debug-internal.h \
-  debug-private.h ipp-private.h ../cups/cups.h file.h ipp.h http.h \
-  array.h language.h pwg.h http-private.h ../cups/language.h \
-  ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  debug-private.h ipp-private.h ../cups/cups.h ../cups/file.h \
+  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
+  ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h cups.h
 snmp.o: snmp.c cups-private.h string-private.h ../config.h ../cups/base.h \
-  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h http-private.h \
-  ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h snmp-private.h
+  debug-internal.h debug-private.h ipp-private.h ../cups/cups.h \
+  ../cups/file.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h snmp-private.h
 raster-interstub.o: raster-interstub.c ../cups/ppd-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  ../cups/ppd.h cups.h raster.h pwg-private.h ../cups/pwg.h
+  ../cups/cups.h ../cups/file.h ../cups/base.h ../cups/ipp.h \
+  ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
+  ../cups/ppd.h ../cups/raster.h ../cups/pwg-private.h
 raster-stubs.o: raster-stubs.c raster-private.h raster.h cups.h file.h \
   base.h ipp.h http.h array.h language.h pwg.h ../cups/cups.h \
   ../cups/debug-private.h ../cups/base.h ../cups/string-private.h \
   ../config.h
-cachebench.o: cachebench.c ppd-private.h ../cups/cups.h file.h base.h \
-  ipp.h http.h array.h language.h pwg.h ../cups/ppd.h cups.h raster.h \
-  pwg-private.h ../cups/pwg.h file-private.h cups-private.h \
-  string-private.h ../config.h ../cups/base.h debug-internal.h \
-  debug-private.h ipp-private.h http-private.h ../cups/language.h \
-  ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h thread.h
+cachebench.o: cachebench.c ppd-private.h ../cups/cups.h ../cups/file.h \
+  ../cups/base.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h ../cups/ppd.h ../cups/raster.h \
+  pwg-private.h file-private.h cups-private.h string-private.h \
+  ../config.h debug-internal.h debug-private.h ipp-private.h \
+  http-private.h \
+  language-private.h ../cups/transcode.h thread.h base.h cups.h
 fuzzipp.o: fuzzipp.c file.h base.h string-private.h ../config.h \
-  ../cups/base.h ipp-private.h ../cups/cups.h ipp.h http.h array.h \
-  language.h pwg.h
-rasterbench.o: rasterbench.c ../config.h ../cups/raster.h cups.h file.h \
-  base.h ipp.h http.h array.h language.h pwg.h
+  ../cups/base.h ipp-private.h ../cups/cups.h ../cups/file.h \
+  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
+  ../cups/pwg.h
+rasterbench.o: rasterbench.c ../config.h ../cups/raster.h ../cups/cups.h \
+  ../cups/file.h ../cups/base.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h
 testadmin.o: testadmin.c adminutil.h cups.h file.h base.h ipp.h http.h \
   array.h language.h pwg.h string-private.h ../config.h ../cups/base.h
 testarray.o: testarray.c string-private.h ../config.h ../cups/base.h \
   debug-private.h cups.h file.h base.h ipp.h http.h array.h language.h \
   pwg.h dir.h test-internal.h
-testcache.o: testcache.c ppd-private.h ../cups/cups.h file.h base.h ipp.h \
-  http.h array.h language.h pwg.h ../cups/ppd.h cups.h raster.h \
-  pwg-private.h ../cups/pwg.h file-private.h cups-private.h \
-  string-private.h ../config.h ../cups/base.h debug-internal.h \
-  debug-private.h ipp-private.h http-private.h ../cups/language.h \
-  ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h thread.h
-testclient.o: testclient.c ../config.h ../cups/cups.h file.h base.h ipp.h \
-  http.h array.h language.h pwg.h ../cups/raster.h cups.h \
-  ../cups/string-private.h ../cups/base.h ../cups/thread.h
+testcache.o: testcache.c ppd-private.h ../cups/cups.h ../cups/file.h \
+  ../cups/base.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h ../cups/ppd.h ../cups/raster.h \
+  pwg-private.h file-private.h cups-private.h string-private.h \
+  ../config.h debug-internal.h debug-private.h ipp-private.h \
+  http-private.h \
+  language-private.h ../cups/transcode.h thread.h base.h cups.h
+testclient.o: testclient.c ../config.h ../cups/cups.h ../cups/file.h \
+  ../cups/base.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h ../cups/raster.h \
+  ../cups/string-private.h ../cups/thread.h
+testclock.o: testclock.c cups.h file.h base.h ipp.h http.h array.h \
+  language.h pwg.h test-internal.h
 testconflicts.o: testconflicts.c cups.h file.h base.h ipp.h http.h \
   array.h language.h pwg.h ppd.h raster.h string-private.h ../config.h \
   ../cups/base.h
 testcreds.o: testcreds.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h test-internal.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h test-internal.h
 testcups.o: testcups.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd.h raster.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd.h array.h file.h raster.h
 testdest.o: testdest.c cups.h file.h base.h ipp.h http.h array.h \
   language.h pwg.h
 testdnssd.o: testdnssd.c test-internal.h dnssd.h cups.h file.h base.h \
@@ -1533,206 +428,69 @@ testgetdests.o: testgetdests.c cups.h file.h base.h ipp.h http.h array.h \
   language.h pwg.h test-internal.h
 testhttp.o: testhttp.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h test-internal.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h test-internal.h
 testi18n.o: testi18n.c cups.h file.h base.h ipp.h http.h array.h \
   language.h pwg.h string-private.h ../config.h ../cups/base.h \
-  language-private.h ../cups/transcode.h
+  language-private.h ../cups/transcode.h ../cups/language.h
 testipp.o: testipp.c file.h base.h string-private.h ../config.h \
-  ../cups/base.h ipp-private.h ../cups/cups.h ipp.h http.h array.h \
-  language.h pwg.h test-internal.h
+  ../cups/base.h ipp-private.h ../cups/cups.h ../cups/file.h \
+  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
+  ../cups/pwg.h test-internal.h
 testjson.o: testjson.c cups.h file.h base.h ipp.h http.h array.h \
   language.h pwg.h json.h test-internal.h
 testjwt.o: testjwt.c cups.h file.h base.h ipp.h http.h array.h language.h \
   pwg.h jwt.h json.h test-internal.h
 testlang.o: testlang.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd-private.h ../cups/ppd.h raster.h ../cups/dir.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd-private.h ../cups/ppd.h ../cups/raster.h ../cups/dir.h
 testoauth.o: testoauth.c cups.h file.h base.h ipp.h http.h array.h \
   language.h pwg.h oauth.h jwt.h json.h test-internal.h
 testoptions.o: testoptions.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
 testppd.o: testppd.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h ppd-private.h ../cups/ppd.h raster.h raster-private.h \
-  ../cups/debug-private.h ../cups/string-private.h
-testpwg.o: testpwg.c ppd-private.h ../cups/cups.h file.h base.h ipp.h \
-  http.h array.h language.h pwg.h ../cups/ppd.h cups.h raster.h \
-  pwg-private.h ../cups/pwg.h file-private.h cups-private.h \
-  string-private.h ../config.h ../cups/base.h debug-internal.h \
-  debug-private.h ipp-private.h http-private.h ../cups/language.h \
-  ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h thread.h
-testraster.o: testraster.c ../cups/raster-private.h raster.h cups.h \
-  file.h base.h ipp.h http.h array.h language.h pwg.h ../cups/cups.h \
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h ppd-private.h ../cups/ppd.h ../cups/raster.h raster-private.h \
+  raster.h ../cups/debug-private.h ../cups/string-private.h
+testpwg.o: testpwg.c ppd-private.h ../cups/cups.h ../cups/file.h \
+  ../cups/base.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
+  ../cups/language.h ../cups/pwg.h ../cups/ppd.h ../cups/raster.h \
+  pwg-private.h file-private.h cups-private.h string-private.h \
+  ../config.h debug-internal.h debug-private.h ipp-private.h \
+  http-private.h \
+  language-private.h ../cups/transcode.h thread.h base.h cups.h
+testraster.o: testraster.c raster-private.h raster.h cups.h file.h base.h \
+  ipp.h http.h array.h language.h pwg.h ../cups/cups.h \
   ../cups/debug-private.h ../cups/base.h ../cups/string-private.h \
-  ../config.h
+  ../config.h test-internal.h
 testsnmp.o: testsnmp.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h snmp-private.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h snmp-private.h
 testtestpage.o: testtestpage.c raster-testpage.h raster-private.h \
   raster.h cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
   ../cups/cups.h ../cups/debug-private.h ../cups/base.h \
   ../cups/string-private.h ../config.h test-internal.h
-testthreads.o: testthreads.c ../cups/cups.h file.h base.h ipp.h http.h \
-  array.h language.h pwg.h ../cups/thread.h
+testthreads.o: testthreads.c ../cups/cups.h ../cups/file.h ../cups/base.h \
+  ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
+  ../cups/pwg.h ../cups/thread.h
 tlscheck.o: tlscheck.c cups-private.h string-private.h ../config.h \
   ../cups/base.h debug-internal.h debug-private.h ipp-private.h \
-  ../cups/cups.h file.h base.h ipp.h http.h array.h language.h pwg.h \
-  http-private.h ../cups/language.h ../cups/http.h \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  \
-  language-private.h ../cups/transcode.h pwg-private.h ../cups/pwg.h \
-  thread.h cups.h
+  ../cups/cups.h ../cups/file.h ../cups/ipp.h ../cups/http.h \
+  ../cups/array.h ../cups/language.h ../cups/pwg.h http-private.h \
+  language-private.h ../cups/transcode.h pwg-private.h thread.h base.h \
+  cups.h
index fadd00624a7abce33a74595fe167bf6733a2d56e..6795322e2e54b965b98fcb021800d817d8d2042d 100644 (file)
@@ -19,6 +19,7 @@ include ../Makedefs
 COREOBJS       =       \
                array.o \
                auth.o \
+               clock.o \
                debug.o \
                dest.o \
                dest-job.o \
@@ -98,6 +99,7 @@ TESTOBJS      = \
                testarray.o \
                testcache.o \
                testclient.o \
+               testclock.o \
                testconflicts.o \
                testcreds.o \
                testcups.o \
@@ -196,6 +198,7 @@ UNITTARGETS =       \
                testarray \
                testcache \
                testclient \
+               testclock \
                testconflicts \
                testcreds \
                testcups \
@@ -246,6 +249,8 @@ test:               unittests
        echo "Tests started at $$(date)..." >test.log
        echo Running array API tests...
        ./testarray >>test.log
+       echo Running clock API tests...
+       ./testclock >>test.log
        echo Running file API tests...
        ./testfile >>test.log
        echo Running form API tests...
@@ -308,7 +313,7 @@ clean:
 #
 
 depend:
-       $(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) | sed -e '1,$$s/ \/usr\/include\/[^ ]*//g' -e '1,$$s/ \/usr\/local\/include\/[^ ]*//g' >Dependencies
+       $(CC) -MM $(ALL_CFLAGS) $(OBJS:.o=.c) | sed -e '1,$$s/ \/usr\/include\/[^ ]*//g' -e '1,$$s/ \/usr\/local\/include\/[^ ]*//g' | grep -e '^  \\$$' -v >Dependencies
 
 
 #
@@ -604,6 +609,16 @@ testclient:        testclient.o $(LIBCUPSSTATIC)
        $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
 
 
+#
+# testclock (dependency on static libraries is intentional)
+#
+
+testclock:     testclock.o $(LIBCUPSSTATIC)
+       echo Linking $@...
+       $(LD_CC) $(ALL_LDFLAGS) -o $@ testclock.o $(LINKCUPSSTATIC)
+       $(CODE_SIGN) -s "$(CODE_SIGN_IDENTITY)" $@
+
+
 #
 # testconflicts (dependency on static CUPS library is intentional)
 #
index 1ea78f36ce50feeebefc64402422fa8af44a4d9c..a81262428fb53041fa9c21058a450b26bc01edbb 100644 (file)
@@ -428,6 +428,7 @@ extern void         cupsFreeJobs(int num_jobs, cups_job_t *jobs) _CUPS_PUBLIC;
 extern void            cupsFreeOptions(int num_options, cups_option_t *options) _CUPS_PUBLIC;
 
 extern int             cupsGetClasses(char ***classes) _CUPS_DEPRECATED_MSG("Use cupsEnumDests instead.");
+extern double          cupsGetClock(void) _CUPS_PUBLIC;
 extern time_t          cupsGetCredentialsExpiration(const char *credentials) _CUPS_PUBLIC;
 extern char            *cupsGetCredentialsInfo(const char *credentials, char *buffer, size_t bufsize) _CUPS_PUBLIC;
 extern http_trust_t    cupsGetCredentialsTrust(const char *path, const char *common_name, const char *credentials, bool require_ca) _CUPS_PUBLIC;
index 0b08bd317d7891437d56d5def103fde60281342a..3a07324d80c7be4d200965dc98ac325a1c3bf398 100644 (file)
@@ -262,6 +262,7 @@ cupsFreeDests
 cupsFreeJobs
 cupsFreeOptions
 cupsGetClasses
+cupsGetClock
 cupsGetConflicts
 cupsGetCredentialsExpiration
 cupsGetCredentialsInfo
@@ -430,6 +431,7 @@ cupsSaveCredentials
 cupsSendRequest
 cupsServer
 cupsSetClientCertCB
+cupsSetClientCredentials
 cupsSetCredentials
 cupsSetDefaultDest
 cupsSetDests
index dca4fa927cb94bf449f474a1ee3e9a2578d31f97..a65e97a8203833277ffc0e55d9441af5a73f0d0f 100644 (file)
@@ -87,6 +87,12 @@ blockquote {
   padding: 10px;
   page-break-inside: avoid;
 }
+blockquote :first-child {
+  margin-top: 0;
+}
+blockquote :first-child {
+  margin-bottom: 0;
+}
 p code, li code, p.code, pre, ul.code li {
   font-family: monospace;
   hyphens: manual;
@@ -187,13 +193,13 @@ span.comment {
   color: darkgreen;
 }
 span.directive {
-  color: purple;
+  color: red;
 }
 span.number {
   color: brown;
 }
 span.reserved {
-  color: darkcyan;
+  color: blue;
 }
 span.string {
   color: magenta;
@@ -302,6 +308,7 @@ span.string {
 <!--
   Administrative API documentation for CUPS.
 
+  Copyright Â©Â 2020-2024 by OpenPrinting.
   Copyright Â©Â 2016 by Apple Inc.
 
   Licensed under Apache License v2.0.  See the file "LICENSE" for more
@@ -396,7 +403,7 @@ show_devices(void)
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsAdminCreateWindowsPPD">cupsAdminCreateWindowsPPD</a></h3>
 <p class="description">Create the Windows PPD file for a printer.</p>
 <p class="code">
-char *cupsAdminCreateWindowsPPD(http_t *http, const char *dest, char *buffer, int bufsize);</p>
+<span class="reserved">char</span> *cupsAdminCreateWindowsPPD(http_t *http, <span class="reserved">const</span> <span class="reserved">char</span> *dest, <span class="reserved">char</span> *buffer, <span class="reserved">int</span> bufsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -413,7 +420,7 @@ char *cupsAdminCreateWindowsPPD(http_t *http, const char *dest, char *buffer, in
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsAdminExportSamba">cupsAdminExportSamba</a></h3>
 <p class="description">Export a printer to Samba.</p>
 <p class="code">
-int cupsAdminExportSamba(const char *dest, const char *ppd, const char *samba_server, const char *samba_user, const char *samba_password, FILE *logfile);</p>
+<span class="reserved">int</span> cupsAdminExportSamba(<span class="reserved">const</span> <span class="reserved">char</span> *dest, <span class="reserved">const</span> <span class="reserved">char</span> *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *samba_server, <span class="reserved">const</span> <span class="reserved">char</span> *samba_user, <span class="reserved">const</span> <span class="reserved">char</span> *samba_password, FILE *logfile);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dest</th>
@@ -434,7 +441,7 @@ int cupsAdminExportSamba(const char *dest, const char *ppd, const char *samba_se
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsAdminGetServerSettings">cupsAdminGetServerSettings</a></h3>
 <p class="description">Get settings from the server.</p>
 <p class="code">
-int cupsAdminGetServerSettings(http_t *http, int *num_settings, cups_option_t **settings);</p>
+<span class="reserved">int</span> cupsAdminGetServerSettings(http_t *http, <span class="reserved">int</span> *num_settings, cups_option_t **settings);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -454,7 +461,7 @@ you are done with them.
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsAdminSetServerSettings">cupsAdminSetServerSettings</a></h3>
 <p class="description">Set settings on the server.</p>
 <p class="code">
-int cupsAdminSetServerSettings(http_t *http, int num_settings, cups_option_t *settings);</p>
+<span class="reserved">int</span> cupsAdminSetServerSettings(http_t *http, <span class="reserved">int</span> num_settings, cups_option_t *settings);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -469,7 +476,7 @@ int cupsAdminSetServerSettings(http_t *http, int num_settings, cups_option_t *se
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsGetDevices">cupsGetDevices</a></h3>
 <p class="description">Get available printer devices.</p>
 <p class="code">
-ipp_status_t cupsGetDevices(http_t *http, int timeout, const char *include_schemes, const char *exclude_schemes, <a href="#cups_device_cb_t">cups_device_cb_t</a> callback, void *user_data);</p>
+ipp_status_t cupsGetDevices(http_t *http, <span class="reserved">int</span> timeout, <span class="reserved">const</span> <span class="reserved">char</span> *include_schemes, <span class="reserved">const</span> <span class="reserved">char</span> *exclude_schemes, <a href="#cups_device_cb_t">cups_device_cb_t</a> callback, <span class="reserved">void</span> *user_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
index 23fb5fb9dc80d4a6b68859c155ae75a61bb76b5c..b08c8c03fc6dace9c5cd6a68ab92a7485956a9d7 100644 (file)
@@ -87,6 +87,12 @@ blockquote {
   padding: 10px;
   page-break-inside: avoid;
 }
+blockquote :first-child {
+  margin-top: 0;
+}
+blockquote :first-child {
+  margin-bottom: 0;
+}
 p code, li code, p.code, pre, ul.code li {
   font-family: monospace;
   hyphens: manual;
@@ -187,13 +193,13 @@ span.comment {
   color: darkgreen;
 }
 span.directive {
-  color: purple;
+  color: red;
 }
 span.number {
   color: brown;
 }
 span.reserved {
-  color: darkcyan;
+  color: blue;
 }
 span.string {
   color: magenta;
@@ -336,6 +342,7 @@ span.string {
 <!--
   Filter and backend programming introduction for CUPS.
 
+  Copyright Â©Â 2020-2024 by OpenPrinting.
   Copyright Â©Â 2007-2016 by Apple Inc.
   Copyright Â©Â 1997-2006 by Easy Software Products, all rights reserved.
 
@@ -1211,7 +1218,7 @@ void *my_data;
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsBackChannelRead">cupsBackChannelRead</a></h3>
 <p class="description">Read data from the backchannel.</p>
 <p class="code">
-ssize_t cupsBackChannelRead(char *buffer, size_t bytes, double timeout);</p>
+ssize_t cupsBackChannelRead(<span class="reserved">char</span> *buffer, size_t bytes, <span class="reserved">double</span> timeout);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>buffer</th>
@@ -1232,7 +1239,7 @@ return immediately if there is no data, -1.0 to wait for data indefinitely.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsBackChannelWrite">cupsBackChannelWrite</a></h3>
 <p class="description">Write data to the backchannel.</p>
 <p class="code">
-ssize_t cupsBackChannelWrite(const char *buffer, size_t bytes, double timeout);</p>
+ssize_t cupsBackChannelWrite(<span class="reserved">const</span> <span class="reserved">char</span> *buffer, size_t bytes, <span class="reserved">double</span> timeout);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>buffer</th>
@@ -1254,7 +1261,7 @@ indefinitely.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsBackendDeviceURI">cupsBackendDeviceURI</a></h3>
 <p class="description">Get the device URI for a backend.</p>
 <p class="code">
-const char *cupsBackendDeviceURI(char **argv);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsBackendDeviceURI(<span class="reserved">char</span> **argv);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>argv</th>
@@ -1272,7 +1279,7 @@ first.
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsBackendReport">cupsBackendReport</a></h3>
 <p class="description">Write a device line from a backend.</p>
 <p class="code">
-void cupsBackendReport(const char *device_scheme, const char *device_uri, const char *device_make_and_model, const char *device_info, const char *device_id, const char *device_location);</p>
+<span class="reserved">void</span> cupsBackendReport(<span class="reserved">const</span> <span class="reserved">char</span> *device_scheme, <span class="reserved">const</span> <span class="reserved">char</span> *device_uri, <span class="reserved">const</span> <span class="reserved">char</span> *device_make_and_model, <span class="reserved">const</span> <span class="reserved">char</span> *device_info, <span class="reserved">const</span> <span class="reserved">char</span> *device_id, <span class="reserved">const</span> <span class="reserved">char</span> *device_location);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>device_scheme</th>
@@ -1297,7 +1304,7 @@ device-info, device-id, and device-location strings.
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsSideChannelDoRequest">cupsSideChannelDoRequest</a></h3>
 <p class="description">Send a side-channel command to a backend and wait for a response.</p>
 <p class="code">
-<a href="#cups_sc_status_t">cups_sc_status_t</a> cupsSideChannelDoRequest(<a href="#cups_sc_command_t">cups_sc_command_t</a> command, char *data, int *datalen, double timeout);</p>
+<a href="#cups_sc_status_t">cups_sc_status_t</a> cupsSideChannelDoRequest(<a href="#cups_sc_command_t">cups_sc_command_t</a> command, <span class="reserved">char</span> *data, <span class="reserved">int</span> *datalen, <span class="reserved">double</span> timeout);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>command</th>
@@ -1326,7 +1333,7 @@ update the value to contain the number of data bytes in the buffer.
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsSideChannelRead">cupsSideChannelRead</a></h3>
 <p class="description">Read a side-channel message.</p>
 <p class="code">
-int cupsSideChannelRead(<a href="#cups_sc_command_t">cups_sc_command_t</a> *command, <a href="#cups_sc_status_t">cups_sc_status_t</a> *status, char *data, int *datalen, double timeout);</p>
+<span class="reserved">int</span> cupsSideChannelRead(<a href="#cups_sc_command_t">cups_sc_command_t</a> *command, <a href="#cups_sc_status_t">cups_sc_status_t</a> *status, <span class="reserved">char</span> *data, <span class="reserved">int</span> *datalen, <span class="reserved">double</span> timeout);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>command</th>
@@ -1356,7 +1363,7 @@ update the value to contain the number of data bytes in the buffer.
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsSideChannelSNMPGet">cupsSideChannelSNMPGet</a></h3>
 <p class="description">Query a SNMP OID's value.</p>
 <p class="code">
-<a href="#cups_sc_status_t">cups_sc_status_t</a> cupsSideChannelSNMPGet(const char *oid, char *data, int *datalen, double timeout);</p>
+<a href="#cups_sc_status_t">cups_sc_status_t</a> cupsSideChannelSNMPGet(<span class="reserved">const</span> <span class="reserved">char</span> *oid, <span class="reserved">char</span> *data, <span class="reserved">int</span> *datalen, <span class="reserved">double</span> timeout);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>oid</th>
@@ -1392,7 +1399,7 @@ the printer does not respond to the SNMP query.
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsSideChannelSNMPWalk">cupsSideChannelSNMPWalk</a></h3>
 <p class="description">Query multiple SNMP OID values.</p>
 <p class="code">
-<a href="#cups_sc_status_t">cups_sc_status_t</a> cupsSideChannelSNMPWalk(const char *oid, double timeout, <a href="#cups_sc_walk_func_t">cups_sc_walk_func_t</a> cb, void *context);</p>
+<a href="#cups_sc_status_t">cups_sc_status_t</a> cupsSideChannelSNMPWalk(<span class="reserved">const</span> <span class="reserved">char</span> *oid, <span class="reserved">double</span> timeout, <a href="#cups_sc_walk_func_t">cups_sc_walk_func_t</a> cb, <span class="reserved">void</span> *context);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>oid</th>
@@ -1433,7 +1440,7 @@ the printer does not respond to the first SNMP query.
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsSideChannelWrite">cupsSideChannelWrite</a></h3>
 <p class="description">Write a side-channel message.</p>
 <p class="code">
-int cupsSideChannelWrite(<a href="#cups_sc_command_t">cups_sc_command_t</a> command, <a href="#cups_sc_status_t">cups_sc_status_t</a> status, const char *data, int datalen, double timeout);</p>
+<span class="reserved">int</span> cupsSideChannelWrite(<a href="#cups_sc_command_t">cups_sc_command_t</a> command, <a href="#cups_sc_status_t">cups_sc_status_t</a> status, <span class="reserved">const</span> <span class="reserved">char</span> *data, <span class="reserved">int</span> datalen, <span class="reserved">double</span> timeout);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>command</th>
index e43354907677ff307c29a15dfc16352fc27c0616..d6ef5eb7f68b38ba64d301b084669f0638cbf5cb 100644 (file)
@@ -87,6 +87,12 @@ blockquote {
   padding: 10px;
   page-break-inside: avoid;
 }
+blockquote :first-child {
+  margin-top: 0;
+}
+blockquote :first-child {
+  margin-bottom: 0;
+}
 p code, li code, p.code, pre, ul.code li {
   font-family: monospace;
   hyphens: manual;
@@ -187,13 +193,13 @@ span.comment {
   color: darkgreen;
 }
 span.directive {
-  color: purple;
+  color: red;
 }
 span.number {
   color: brown;
 }
 span.reserved {
-  color: darkcyan;
+  color: blue;
 }
 span.string {
   color: magenta;
@@ -366,6 +372,7 @@ span.string {
 <!--
   PPD API introduction for CUPS.
 
+  Copyright Â©Â 2020-2024 by OpenPrinting.
   Copyright Â©Â 2007-2019 by Apple Inc.
   Copyright Â©Â 1997-2006 by Easy Software Products, all rights reserved.
 
@@ -588,7 +595,7 @@ for (attr = <a href="#ppdFindAttr">ppdFindAttr</a>(ppd, "Product", NULL);
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsGetConflicts">cupsGetConflicts</a></h3>
 <p class="description">Get a list of conflicting options in a marked PPD.</p>
 <p class="code">
-int cupsGetConflicts(ppd_file_t *ppd, const char *option, const char *choice, cups_option_t **options);</p>
+<span class="reserved">int</span> cupsGetConflicts(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *option, <span class="reserved">const</span> <span class="reserved">char</span> *choice, cups_option_t **options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -616,7 +623,7 @@ the conflicting options.  The returned option array must be freed using
 <h3 class="function"><a id="cupsGetPPD">cupsGetPPD</a></h3>
 <p class="description">Get the PPD file for a printer on the default server.</p>
 <p class="code">
-const char *cupsGetPPD(const char *name);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetPPD(<span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -634,7 +641,7 @@ file that is created and must <code>unlink</code> the returned filename.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.21/macOS 10.4&#160;</span><a id="cupsGetPPD2">cupsGetPPD2</a></h3>
 <p class="description">Get the PPD file for a printer from the specified server.</p>
 <p class="code">
-const char *cupsGetPPD2(http_t *http, const char *name);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetPPD2(http_t *http, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -657,7 +664,7 @@ file that is created and must <code>unlink</code> the returned filename.
 <p class="description">Get the PPD file for a printer on the specified
                   server if it has changed.</p>
 <p class="code">
-http_status_t cupsGetPPD3(http_t *http, const char *name, time_t *modtime, char *buffer, size_t bufsize);</p>
+http_status_t cupsGetPPD3(http_t *http, <span class="reserved">const</span> <span class="reserved">char</span> *name, time_t *modtime, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -694,7 +701,7 @@ in the class.
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsGetServerPPD">cupsGetServerPPD</a></h3>
 <p class="description">Get an available PPD file from the server.</p>
 <p class="code">
-char *cupsGetServerPPD(http_t *http, const char *name);</p>
+<span class="reserved">char</span> *cupsGetServerPPD(http_t *http, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -718,7 +725,7 @@ or <a href="#cupsGetServerPPD"><code>cupsGetServerPPD</code></a>.
 <h3 class="function"><a id="cupsMarkOptions">cupsMarkOptions</a></h3>
 <p class="description">Mark command-line options in a PPD file.</p>
 <p class="code">
-int cupsMarkOptions(ppd_file_t *ppd, int num_options, cups_option_t *options);</p>
+<span class="reserved">int</span> cupsMarkOptions(ppd_file_t *ppd, <span class="reserved">int</span> num_options, cups_option_t *options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -738,7 +745,7 @@ corresponding PPD options and choices.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsRasterInterpretPPD">cupsRasterInterpretPPD</a></h3>
 <p class="description">Interpret PPD commands to create a page header.</p>
 <p class="code">
-int cupsRasterInterpretPPD(cups_page_header2_t *h, ppd_file_t *ppd, int num_options, cups_option_t *options, <a href="#cups_interpret_cb_t">cups_interpret_cb_t</a> func);</p>
+<span class="reserved">int</span> cupsRasterInterpretPPD(cups_page_header2_t *h, ppd_file_t *ppd, <span class="reserved">int</span> num_options, cups_option_t *options, <a href="#cups_interpret_cb_t">cups_interpret_cb_t</a> func);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>h</th>
@@ -783,7 +790,7 @@ are supported.
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsResolveConflicts">cupsResolveConflicts</a></h3>
 <p class="description">Resolve conflicts in a marked PPD.</p>
 <p class="code">
-int cupsResolveConflicts(ppd_file_t *ppd, const char *option, const char *choice, int *num_options, cups_option_t **options);</p>
+<span class="reserved">int</span> cupsResolveConflicts(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *option, <span class="reserved">const</span> <span class="reserved">char</span> *choice, <span class="reserved">int</span> *num_options, cups_option_t **options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -836,7 +843,7 @@ until a non-conflicting option choice is found.
 <p class="description">Collect all marked options that reside in the specified
                  section.</p>
 <p class="code">
-int ppdCollect(ppd_file_t *ppd, <a href="#ppd_section_t">ppd_section_t</a> section, <a href="#ppd_choice_t">ppd_choice_t</a> ***choices);</p>
+<span class="reserved">int</span> ppdCollect(ppd_file_t *ppd, <a href="#ppd_section_t">ppd_section_t</a> section, <a href="#ppd_choice_t">ppd_choice_t</a> ***choices);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -855,7 +862,7 @@ finished with it.</p>
 <p class="description">Collect all marked options that reside in the
                   specified section and minimum order.</p>
 <p class="code">
-int ppdCollect2(ppd_file_t *ppd, <a href="#ppd_section_t">ppd_section_t</a> section, float min_order, <a href="#ppd_choice_t">ppd_choice_t</a> ***choices);</p>
+<span class="reserved">int</span> ppdCollect2(ppd_file_t *ppd, <a href="#ppd_section_t">ppd_section_t</a> section, <span class="reserved">float</span> min_order, <a href="#ppd_choice_t">ppd_choice_t</a> ***choices);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -878,7 +885,7 @@ finished with it.
 <p class="description">Check to see if there are any conflicts among the
                    marked option choices.</p>
 <p class="code">
-int ppdConflicts(ppd_file_t *ppd);</p>
+<span class="reserved">int</span> ppdConflicts(ppd_file_t *ppd);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -891,7 +898,7 @@ int ppdConflicts(ppd_file_t *ppd);</p>
 <h3 class="function"><a id="ppdEmit">ppdEmit</a></h3>
 <p class="description">Emit code for marked options to a file.</p>
 <p class="code">
-int ppdEmit(ppd_file_t *ppd, FILE *fp, <a href="#ppd_section_t">ppd_section_t</a> section);</p>
+<span class="reserved">int</span> ppdEmit(ppd_file_t *ppd, FILE *fp, <a href="#ppd_section_t">ppd_section_t</a> section);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -906,7 +913,7 @@ int ppdEmit(ppd_file_t *ppd, FILE *fp, <a href="#ppd_section_t">ppd_section_t</a
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ppdEmitAfterOrder">ppdEmitAfterOrder</a></h3>
 <p class="description">Emit a subset of the code for marked options to a file.</p>
 <p class="code">
-int ppdEmitAfterOrder(ppd_file_t *ppd, FILE *fp, <a href="#ppd_section_t">ppd_section_t</a> section, int limit, float min_order);</p>
+<span class="reserved">int</span> ppdEmitAfterOrder(ppd_file_t *ppd, FILE *fp, <a href="#ppd_section_t">ppd_section_t</a> section, <span class="reserved">int</span> limit, <span class="reserved">float</span> min_order);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -932,7 +939,7 @@ When &quot;limit&quot; is zero, this function is identical to ppdEmit().
 <h3 class="function"><a id="ppdEmitFd">ppdEmitFd</a></h3>
 <p class="description">Emit code for marked options to a file.</p>
 <p class="code">
-int ppdEmitFd(ppd_file_t *ppd, int fd, <a href="#ppd_section_t">ppd_section_t</a> section);</p>
+<span class="reserved">int</span> ppdEmitFd(ppd_file_t *ppd, <span class="reserved">int</span> fd, <a href="#ppd_section_t">ppd_section_t</a> section);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -947,7 +954,7 @@ int ppdEmitFd(ppd_file_t *ppd, int fd, <a href="#ppd_section_t">ppd_section_t</a
 <h3 class="function"><a id="ppdEmitJCL">ppdEmitJCL</a></h3>
 <p class="description">Emit code for JCL options to a file.</p>
 <p class="code">
-int ppdEmitJCL(ppd_file_t *ppd, FILE *fp, int job_id, const char *user, const char *title);</p>
+<span class="reserved">int</span> ppdEmitJCL(ppd_file_t *ppd, FILE *fp, <span class="reserved">int</span> job_id, <span class="reserved">const</span> <span class="reserved">char</span> *user, <span class="reserved">const</span> <span class="reserved">char</span> *title);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -966,7 +973,7 @@ int ppdEmitJCL(ppd_file_t *ppd, FILE *fp, int job_id, const char *user, const ch
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ppdEmitJCLEnd">ppdEmitJCLEnd</a></h3>
 <p class="description">Emit JCLEnd code to a file.</p>
 <p class="code">
-int ppdEmitJCLEnd(ppd_file_t *ppd, FILE *fp);</p>
+<span class="reserved">int</span> ppdEmitJCLEnd(ppd_file_t *ppd, FILE *fp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -979,7 +986,7 @@ int ppdEmitJCLEnd(ppd_file_t *ppd, FILE *fp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ppdEmitString">ppdEmitString</a></h3>
 <p class="description">Get a string containing the code for marked options.</p>
 <p class="code">
-char *ppdEmitString(ppd_file_t *ppd, <a href="#ppd_section_t">ppd_section_t</a> section, float min_order);</p>
+<span class="reserved">char</span> *ppdEmitString(ppd_file_t *ppd, <a href="#ppd_section_t">ppd_section_t</a> section, <span class="reserved">float</span> min_order);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1004,7 +1011,7 @@ The return string is allocated on the heap and should be freed using
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="ppdFindAttr">ppdFindAttr</a></h3>
 <p class="description">Find the first matching attribute.</p>
 <p class="code">
-<a href="#ppd_attr_t">ppd_attr_t</a> *ppdFindAttr(ppd_file_t *ppd, const char *name, const char *spec);</p>
+<a href="#ppd_attr_t">ppd_attr_t</a> *ppdFindAttr(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *spec);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1019,7 +1026,7 @@ The return string is allocated on the heap and should be freed using
 <h3 class="function"><a id="ppdFindChoice">ppdFindChoice</a></h3>
 <p class="description">Return a pointer to an option choice.</p>
 <p class="code">
-<a href="#ppd_choice_t">ppd_choice_t</a> *ppdFindChoice(<a href="#ppd_option_t">ppd_option_t</a> *o, const char *choice);</p>
+<a href="#ppd_choice_t">ppd_choice_t</a> *ppdFindChoice(<a href="#ppd_option_t">ppd_option_t</a> *o, <span class="reserved">const</span> <span class="reserved">char</span> *choice);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>o</th>
@@ -1032,7 +1039,7 @@ The return string is allocated on the heap and should be freed using
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ppdFindCustomOption">ppdFindCustomOption</a></h3>
 <p class="description">Find a custom option.</p>
 <p class="code">
-ppd_coption_t *ppdFindCustomOption(ppd_file_t *ppd, const char *keyword);</p>
+ppd_coption_t *ppdFindCustomOption(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *keyword);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1045,7 +1052,7 @@ ppd_coption_t *ppdFindCustomOption(ppd_file_t *ppd, const char *keyword);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ppdFindCustomParam">ppdFindCustomParam</a></h3>
 <p class="description">Find a parameter for a custom option.</p>
 <p class="code">
-ppd_cparam_t *ppdFindCustomParam(ppd_coption_t *opt, const char *name);</p>
+ppd_cparam_t *ppdFindCustomParam(ppd_coption_t *opt, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>opt</th>
@@ -1058,7 +1065,7 @@ ppd_cparam_t *ppdFindCustomParam(ppd_coption_t *opt, const char *name);</p>
 <h3 class="function"><a id="ppdFindMarkedChoice">ppdFindMarkedChoice</a></h3>
 <p class="description">Return the marked choice for the specified option.</p>
 <p class="code">
-<a href="#ppd_choice_t">ppd_choice_t</a> *ppdFindMarkedChoice(ppd_file_t *ppd, const char *option);</p>
+<a href="#ppd_choice_t">ppd_choice_t</a> *ppdFindMarkedChoice(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *option);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1071,7 +1078,7 @@ ppd_cparam_t *ppdFindCustomParam(ppd_coption_t *opt, const char *name);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="ppdFindNextAttr">ppdFindNextAttr</a></h3>
 <p class="description">Find the next matching attribute.</p>
 <p class="code">
-<a href="#ppd_attr_t">ppd_attr_t</a> *ppdFindNextAttr(ppd_file_t *ppd, const char *name, const char *spec);</p>
+<a href="#ppd_attr_t">ppd_attr_t</a> *ppdFindNextAttr(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *spec);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1086,7 +1093,7 @@ ppd_cparam_t *ppdFindCustomParam(ppd_coption_t *opt, const char *name);</p>
 <h3 class="function"><a id="ppdFindOption">ppdFindOption</a></h3>
 <p class="description">Return a pointer to the specified option.</p>
 <p class="code">
-<a href="#ppd_option_t">ppd_option_t</a> *ppdFindOption(ppd_file_t *ppd, const char *option);</p>
+<a href="#ppd_option_t">ppd_option_t</a> *ppdFindOption(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *option);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1126,7 +1133,7 @@ ppd_cparam_t *ppdFirstCustomParam(ppd_coption_t *opt);</p>
 <p class="description">Test whether an option choice conflicts with
                              an installable option.</p>
 <p class="code">
-int ppdInstallableConflict(ppd_file_t *ppd, const char *option, const char *choice);</p>
+<span class="reserved">int</span> ppdInstallableConflict(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *option, <span class="reserved">const</span> <span class="reserved">char</span> *choice);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1146,7 +1153,7 @@ on constraints against options in the &quot;InstallableOptions&quot; group.
 <h3 class="function"><a id="ppdIsMarked">ppdIsMarked</a></h3>
 <p class="description">Check to see if an option is marked.</p>
 <p class="code">
-int ppdIsMarked(ppd_file_t *ppd, const char *option, const char *choice);</p>
+<span class="reserved">int</span> ppdIsMarked(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *option, <span class="reserved">const</span> <span class="reserved">char</span> *choice);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1161,7 +1168,7 @@ int ppdIsMarked(ppd_file_t *ppd, const char *option, const char *choice);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ppdLocalize">ppdLocalize</a></h3>
 <p class="description">Localize the PPD file to the current locale.</p>
 <p class="code">
-int ppdLocalize(ppd_file_t *ppd);</p>
+<span class="reserved">int</span> ppdLocalize(ppd_file_t *ppd);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1178,7 +1185,7 @@ localized string uses the UTF-8 character encoding.
 <h3 class="function"><a id="ppdLocalizeAttr">ppdLocalizeAttr</a></h3>
 <p class="description">Localize an attribute.</p>
 <p class="code">
-<a href="#ppd_attr_t">ppd_attr_t</a> *ppdLocalizeAttr(ppd_file_t *ppd, const char *keyword, const char *spec);</p>
+<a href="#ppd_attr_t">ppd_attr_t</a> *ppdLocalizeAttr(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *keyword, <span class="reserved">const</span> <span class="reserved">char</span> *spec);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1198,7 +1205,7 @@ attribute exists for the current locale, the unlocalized version is returned.</p
 <p class="description">Get the localized version of a cupsIPPReason
                            attribute.</p>
 <p class="code">
-const char *ppdLocalizeIPPReason(ppd_file_t *ppd, const char *reason, const char *scheme, char *buffer, size_t bufsize);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ppdLocalizeIPPReason(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *reason, <span class="reserved">const</span> <span class="reserved">char</span> *scheme, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1227,7 +1234,7 @@ If no value of the requested scheme can be found, NULL is returned.
 <p class="description">Get the localized version of a marker-names
                             attribute value.</p>
 <p class="code">
-const char *ppdLocalizeMarkerName(ppd_file_t *ppd, const char *name);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ppdLocalizeMarkerName(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1246,7 +1253,7 @@ name can be found, <code>NULL</code> is returned.
 <h3 class="function"><a id="ppdMarkDefaults">ppdMarkDefaults</a></h3>
 <p class="description">Mark all default options in the PPD file.</p>
 <p class="code">
-void ppdMarkDefaults(ppd_file_t *ppd);</p>
+<span class="reserved">void</span> ppdMarkDefaults(ppd_file_t *ppd);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1256,7 +1263,7 @@ void ppdMarkDefaults(ppd_file_t *ppd);</p>
 <p class="description">Mark an option in a PPD file and return the number of
                     conflicts.</p>
 <p class="code">
-int ppdMarkOption(ppd_file_t *ppd, const char *option, const char *choice);</p>
+<span class="reserved">int</span> ppdMarkOption(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *option, <span class="reserved">const</span> <span class="reserved">char</span> *choice);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1297,7 +1304,7 @@ ppd_cparam_t *ppdNextCustomParam(ppd_coption_t *opt);</p>
 <h3 class="function"><a id="ppdPageLength">ppdPageLength</a></h3>
 <p class="description">Get the page length for the given size.</p>
 <p class="code">
-float ppdPageLength(ppd_file_t *ppd, const char *name);</p>
+<span class="reserved">float</span> ppdPageLength(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1310,7 +1317,7 @@ float ppdPageLength(ppd_file_t *ppd, const char *name);</p>
 <h3 class="function"><a id="ppdPageSize">ppdPageSize</a></h3>
 <p class="description">Get the page size record for the named size.</p>
 <p class="code">
-ppd_size_t *ppdPageSize(ppd_file_t *ppd, const char *name);</p>
+ppd_size_t *ppdPageSize(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1323,7 +1330,7 @@ ppd_size_t *ppdPageSize(ppd_file_t *ppd, const char *name);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="ppdPageSizeLimits">ppdPageSizeLimits</a></h3>
 <p class="description">Return the custom page size limits.</p>
 <p class="code">
-int ppdPageSizeLimits(ppd_file_t *ppd, ppd_size_t *minimum, ppd_size_t *maximum);</p>
+<span class="reserved">int</span> ppdPageSizeLimits(ppd_file_t *ppd, ppd_size_t *minimum, ppd_size_t *maximum);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1346,7 +1353,7 @@ If the specified PPD file does not support custom page sizes, both
 <h3 class="function"><a id="ppdPageWidth">ppdPageWidth</a></h3>
 <p class="description">Get the page width for the given size.</p>
 <p class="code">
-float ppdPageWidth(ppd_file_t *ppd, const char *name);</p>
+<span class="reserved">float</span> ppdPageWidth(ppd_file_t *ppd, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -1405,11 +1412,11 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 <h2 class="title"><a id="STRUCTURES">Structures</a></h2>
 <h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_attr_s">ppd_attr_s</a></h3>
 <p class="description">PPD Attribute Structure </p>
-<p class="code">struct ppd_attr_s {<br>
-&#160;&#160;&#160;&#160;char name[PPD_MAX_NAME];<br>
-&#160;&#160;&#160;&#160;char spec[PPD_MAX_NAME];<br>
-&#160;&#160;&#160;&#160;char text[PPD_MAX_TEXT];<br>
-&#160;&#160;&#160;&#160;char *value;<br>
+<p class="code"><span class="reserved">struct</span> ppd_attr_s {<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> name[PPD_MAX_NAME];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> spec[PPD_MAX_NAME];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> text[PPD_MAX_TEXT];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> *value;<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -1424,12 +1431,12 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 </tbody></table>
 <h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_choice_s">ppd_choice_s</a></h3>
 <p class="description">Option choices </p>
-<p class="code">struct ppd_choice_s {<br>
-&#160;&#160;&#160;&#160;char choice[PPD_MAX_NAME];<br>
-&#160;&#160;&#160;&#160;char *code;<br>
-&#160;&#160;&#160;&#160;char marked;<br>
+<p class="code"><span class="reserved">struct</span> ppd_choice_s {<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> choice[PPD_MAX_NAME];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> *code;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> marked;<br>
 &#160;&#160;&#160;&#160;<a href="#ppd_option_t">ppd_option_t</a> *option;<br>
-&#160;&#160;&#160;&#160;char text[PPD_MAX_TEXT];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> text[PPD_MAX_TEXT];<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -1446,22 +1453,22 @@ typedef enum <a href="#ppd_ui_e">ppd_ui_e</a> ppd_ui_t;
 </tbody></table>
 <h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_group_s">ppd_group_s</a></h3>
 <p class="description">Groups </p>
-<p class="code">struct ppd_group_s {<br>
+<p class="code"><span class="reserved">struct</span> ppd_group_s {<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
 </tbody></table>
 <h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="ppd_option_s">ppd_option_s</a></h3>
 <p class="description">Options </p>
-<p class="code">struct ppd_option_s {<br>
+<p class="code"><span class="reserved">struct</span> ppd_option_s {<br>
 &#160;&#160;&#160;&#160;<a href="#ppd_choice_t">ppd_choice_t</a> *choices;<br>
-&#160;&#160;&#160;&#160;char conflicted;<br>
-&#160;&#160;&#160;&#160;char defchoice[PPD_MAX_NAME];<br>
-&#160;&#160;&#160;&#160;char keyword[PPD_MAX_NAME];<br>
-&#160;&#160;&#160;&#160;int num_choices;<br>
-&#160;&#160;&#160;&#160;float order;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> conflicted;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> defchoice[PPD_MAX_NAME];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> keyword[PPD_MAX_NAME];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">int</span> num_choices;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">float</span> order;<br>
 &#160;&#160;&#160;&#160;<a href="#ppd_section_t">ppd_section_t</a> section;<br>
-&#160;&#160;&#160;&#160;char text[PPD_MAX_TEXT];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> text[PPD_MAX_TEXT];<br>
 &#160;&#160;&#160;&#160;<a href="#ppd_ui_t">ppd_ui_t</a> ui;<br>
 };</p>
 <h4 class="members">Members</h4>
index 30b067d48ff8991e483df06afe8c05e1430242c9..3d69b9bd4d08dc81f01727c5ef619a58c34058ae 100644 (file)
Binary files a/doc/help/cupspm.epub and b/doc/help/cupspm.epub differ
index 8ef4dbe7fe767d2b4f122a003a96463cfacf0f42..2b8c0c402fc64f023d6835f49c09c0cf7bbfaea2 100644 (file)
@@ -8,7 +8,7 @@
 <meta name="generator" content="codedoc v3.7">
 <meta name="author" content="Michael R Sweet">
 <meta name="language" content="en-US">
-<meta name="copyright" content="Copyright Â© 2020-2024 OpenPrinting. All Rights Reserved.">
+<meta name="copyright" content="Copyright Â© 2020-2024 by OpenPrinting. All Rights Reserved.">
 <meta name="version" content="2.5.0">
 <style type="text/css"><!--
 body {
@@ -87,6 +87,12 @@ blockquote {
   padding: 10px;
   page-break-inside: avoid;
 }
+blockquote :first-child {
+  margin-top: 0;
+}
+blockquote :first-child {
+  margin-bottom: 0;
+}
 p code, li code, p.code, pre, ul.code li {
   font-family: monospace;
   hyphens: manual;
@@ -187,13 +193,13 @@ span.comment {
   color: darkgreen;
 }
 span.directive {
-  color: purple;
+  color: red;
 }
 span.number {
   color: brown;
 }
 span.reserved {
-  color: darkcyan;
+  color: blue;
 }
 span.string {
   color: magenta;
@@ -323,6 +329,7 @@ span.string {
 <li><a href="#cupsCopyDest">cupsCopyDest</a></li>
 <li><a href="#cupsCopyDestConflicts">cupsCopyDestConflicts</a></li>
 <li><a href="#cupsCopyDestInfo">cupsCopyDestInfo</a></li>
+<li><a href="#cupsCopyDestInfo2">cupsCopyDestInfo2</a></li>
 <li><a href="#cupsCopyString">cupsCopyString</a></li>
 <li><a href="#cupsCreateCredentials">cupsCreateCredentials</a></li>
 <li><a href="#cupsCreateCredentialsRequest">cupsCreateCredentialsRequest</a></li>
@@ -333,6 +340,7 @@ span.string {
 <li><a href="#cupsDNSSDBrowseDelete">cupsDNSSDBrowseDelete</a></li>
 <li><a href="#cupsDNSSDBrowseGetContext">cupsDNSSDBrowseGetContext</a></li>
 <li><a href="#cupsDNSSDBrowseNew">cupsDNSSDBrowseNew</a></li>
+<li><a href="#cupsDNSSDCopyComputerName">cupsDNSSDCopyComputerName</a></li>
 <li><a href="#cupsDNSSDCopyHostName">cupsDNSSDCopyHostName</a></li>
 <li><a href="#cupsDNSSDDecodeTXT">cupsDNSSDDecodeTXT</a></li>
 <li><a href="#cupsDNSSDDelete">cupsDNSSDDelete</a></li>
@@ -398,10 +406,13 @@ span.string {
 <li><a href="#cupsFinishDestDocument">cupsFinishDestDocument</a></li>
 <li><a href="#cupsFormDecode">cupsFormDecode</a></li>
 <li><a href="#cupsFormEncode">cupsFormEncode</a></li>
+<li><a href="#cupsFormatString">cupsFormatString</a></li>
+<li><a href="#cupsFormatStringv">cupsFormatStringv</a></li>
 <li><a href="#cupsFreeDestInfo">cupsFreeDestInfo</a></li>
 <li><a href="#cupsFreeDests">cupsFreeDests</a></li>
 <li><a href="#cupsFreeJobs">cupsFreeJobs</a></li>
 <li><a href="#cupsFreeOptions">cupsFreeOptions</a></li>
+<li><a href="#cupsGetClock">cupsGetClock</a></li>
 <li><a href="#cupsGetCredentialsExpiration">cupsGetCredentialsExpiration</a></li>
 <li><a href="#cupsGetCredentialsInfo">cupsGetCredentialsInfo</a></li>
 <li><a href="#cupsGetCredentialsTrust">cupsGetCredentialsTrust</a></li>
@@ -435,6 +446,7 @@ span.string {
 <li><a href="#cupsHMACData">cupsHMACData</a></li>
 <li><a href="#cupsHashData">cupsHashData</a></li>
 <li><a href="#cupsHashString">cupsHashString</a></li>
+<li><a href="#cupsJSONAdd">cupsJSONAdd</a></li>
 <li><a href="#cupsJSONDelete">cupsJSONDelete</a></li>
 <li><a href="#cupsJSONExportFile">cupsJSONExportFile</a></li>
 <li><a href="#cupsJSONExportString">cupsJSONExportString</a></li>
@@ -487,6 +499,7 @@ span.string {
 <li><a href="#cupsLastError">cupsLastError</a></li>
 <li><a href="#cupsLastErrorString">cupsLastErrorString</a></li>
 <li><a href="#cupsLocalizeDestMedia">cupsLocalizeDestMedia</a></li>
+<li><a href="#cupsLocalizeDestMedia2">cupsLocalizeDestMedia2</a></li>
 <li><a href="#cupsLocalizeDestOption">cupsLocalizeDestOption</a></li>
 <li><a href="#cupsLocalizeDestValue">cupsLocalizeDestValue</a></li>
 <li><a href="#cupsMutexDestroy">cupsMutexDestroy</a></li>
@@ -495,7 +508,21 @@ span.string {
 <li><a href="#cupsMutexUnlock">cupsMutexUnlock</a></li>
 <li><a href="#cupsNotifySubject">cupsNotifySubject</a></li>
 <li><a href="#cupsNotifyText">cupsNotifyText</a></li>
+<li><a href="#cupsOAuthClearTokens">cupsOAuthClearTokens</a></li>
+<li><a href="#cupsOAuthCopyAccessToken">cupsOAuthCopyAccessToken</a></li>
+<li><a href="#cupsOAuthCopyClientId">cupsOAuthCopyClientId</a></li>
+<li><a href="#cupsOAuthCopyRefreshToken">cupsOAuthCopyRefreshToken</a></li>
+<li><a href="#cupsOAuthCopyUserId">cupsOAuthCopyUserId</a></li>
+<li><a href="#cupsOAuthGetAuthorizationCode">cupsOAuthGetAuthorizationCode</a></li>
+<li><a href="#cupsOAuthGetClientId">cupsOAuthGetClientId</a></li>
+<li><a href="#cupsOAuthGetMetadata">cupsOAuthGetMetadata</a></li>
+<li><a href="#cupsOAuthGetTokens">cupsOAuthGetTokens</a></li>
+<li><a href="#cupsOAuthMakeAuthorizationURL">cupsOAuthMakeAuthorizationURL</a></li>
+<li><a href="#cupsOAuthMakeBase64Random">cupsOAuthMakeBase64Random</a></li>
+<li><a href="#cupsOAuthSaveClientData">cupsOAuthSaveClientData</a></li>
+<li><a href="#cupsOAuthSaveTokens">cupsOAuthSaveTokens</a></li>
 <li><a href="#cupsParseOptions">cupsParseOptions</a></li>
+<li><a href="#cupsParseOptions2">cupsParseOptions2</a></li>
 <li><a href="#cupsPutFd">cupsPutFd</a></li>
 <li><a href="#cupsPutFile">cupsPutFile</a></li>
 <li><a href="#cupsRWDestroy">cupsRWDestroy</a></li>
@@ -521,6 +548,7 @@ span.string {
 <li><a href="#cupsSendRequest">cupsSendRequest</a></li>
 <li><a href="#cupsServer">cupsServer</a></li>
 <li><a href="#cupsSetClientCertCB">cupsSetClientCertCB</a></li>
+<li><a href="#cupsSetClientCredentials">cupsSetClientCredentials</a></li>
 <li><a href="#cupsSetCredentials">cupsSetCredentials</a></li>
 <li><a href="#cupsSetDefaultDest">cupsSetDefaultDest</a></li>
 <li><a href="#cupsSetDests2">cupsSetDests2</a></li>
@@ -572,6 +600,8 @@ span.string {
 <li><a href="#httpClearFields">httpClearFields</a></li>
 <li><a href="#httpClose">httpClose</a></li>
 <li><a href="#httpConnect2">httpConnect2</a></li>
+<li><a href="#httpConnectAgain">httpConnectAgain</a></li>
+<li><a href="#httpConnectURI">httpConnectURI</a></li>
 <li><a href="#httpCopyPeerCredentials">httpCopyPeerCredentials</a></li>
 <li><a href="#httpDecode64_3">httpDecode64_3</a></li>
 <li><a href="#httpEncode64_3">httpEncode64_3</a></li>
@@ -611,7 +641,6 @@ span.string {
 <li><a href="#httpPeek">httpPeek</a></li>
 <li><a href="#httpRead2">httpRead2</a></li>
 <li><a href="#httpReadRequest">httpReadRequest</a></li>
-<li><a href="#httpReconnect2">httpReconnect2</a></li>
 <li><a href="#httpResolveHostname">httpResolveHostname</a></li>
 <li><a href="#httpResolveURI">httpResolveURI</a></li>
 <li><a href="#httpSeparateURI">httpSeparateURI</a></li>
@@ -807,6 +836,7 @@ span.string {
 <li><a href="#cups_media_t">cups_media_t</a></li>
 <li><a href="#cups_mutex_t">cups_mutex_t</a></li>
 <li><a href="#cups_oauth_cb_t">cups_oauth_cb_t</a></li>
+<li><a href="#cups_ogrant_t">cups_ogrant_t</a></li>
 <li><a href="#cups_option_t">cups_option_t</a></li>
 <li><a href="#cups_order_t">cups_order_t</a></li>
 <li><a href="#cups_orient_t">cups_orient_t</a></li>
@@ -891,6 +921,7 @@ span.string {
 <li><a href="#cups_jwa_e">cups_jwa_e</a></li>
 <li><a href="#cups_jws_format_e">cups_jws_format_e</a></li>
 <li><a href="#cups_media_flags_e">cups_media_flags_e</a></li>
+<li><a href="#cups_ogrant_e">cups_ogrant_e</a></li>
 <li><a href="#cups_order_e">cups_order_e</a></li>
 <li><a href="#cups_orient_e">cups_orient_e</a></li>
 <li><a href="#cups_ptype_e">cups_ptype_e</a></li>
@@ -1763,7 +1794,7 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD reason, LPVOID reserved);</p>
 <h3 class="function"><a id="cupsAddDest">cupsAddDest</a></h3>
 <p class="description">Add a destination to the list of destinations.</p>
 <p class="code">
-int cupsAddDest(const char *name, const char *instance, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
+<span class="reserved">int</span> cupsAddDest(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *instance, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -1791,7 +1822,7 @@ destinations to the user's lpoptions file.</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.3/macOS 10.14&#160;</span><a id="cupsAddDestMediaOptions">cupsAddDestMediaOptions</a></h3>
 <p class="description">Add the option corresponding to the specified media size.</p>
 <p class="code">
-int cupsAddDestMediaOptions(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsAddDestMediaOptions(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -1814,7 +1845,7 @@ int cupsAddDestMediaOptions(<a href="#http_t">http_t</a> *http, <a href="#cups_d
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsAddDestMediaOptions2">cupsAddDestMediaOptions2</a></h3>
 <p class="description">Add the options corresponding to the specified media information.</p>
 <p class="code">
-int cupsAddDestMediaOptions2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_media_t">cups_media_t</a> *media, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsAddDestMediaOptions2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -1837,7 +1868,7 @@ int cupsAddDestMediaOptions2(<a href="#http_t">http_t</a> *http, <a href="#cups_
 <h3 class="function"><span class="info">&#160;CUPS 2.2.4/macOS 10.13&#160;</span><a id="cupsAddIntegerOption">cupsAddIntegerOption</a></h3>
 <p class="description">Add an integer option to an option array.</p>
 <p class="code">
-int cupsAddIntegerOption(const char *name, int value, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsAddIntegerOption(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> value, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -1859,7 +1890,7 @@ int cupsAddIntegerOption(const char *name, int value, int num_options, <a href="
 <h3 class="function"><a id="cupsAddOption">cupsAddOption</a></h3>
 <p class="description">Add an option to an option array.</p>
 <p class="code">
-int cupsAddOption(const char *name, const char *value, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsAddOption(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *value, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -1880,7 +1911,7 @@ int cupsAddOption(const char *name, const char *value, int num_options, <a href=
 <p class="description">Return whether the credentials are valid
                                      for the given name.</p>
 <p class="code">
-bool cupsAreCredentialsValidForName(const char *common_name, const char *credentials);</p>
+<span class="reserved">bool</span> cupsAreCredentialsValidForName(<span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *credentials);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>common_name</th>
@@ -1893,7 +1924,7 @@ bool cupsAreCredentialsValidForName(const char *common_name, const char *credent
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsArrayAdd">cupsArrayAdd</a></h3>
 <p class="description">Add an element to the array.</p>
 <p class="code">
-int cupsArrayAdd(<a href="#cups_array_t">cups_array_t</a> *a, void *e);</p>
+<span class="reserved">int</span> cupsArrayAdd(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">void</span> *e);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -1912,7 +1943,7 @@ the element is appended to the end of the array.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsArrayAddStrings">cupsArrayAddStrings</a></h3>
 <p class="description">Add zero or more delimited strings to an array.</p>
 <p class="code">
-bool cupsArrayAddStrings(<a href="#cups_array_t">cups_array_t</a> *a, const char *s, char delim);</p>
+<span class="reserved">bool</span> cupsArrayAddStrings(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">const</span> <span class="reserved">char</span> *s, <span class="reserved">char</span> delim);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -1933,7 +1964,7 @@ or the empty string, no strings are added to the array.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsArrayClear">cupsArrayClear</a></h3>
 <p class="description">Clear the array.</p>
 <p class="code">
-void cupsArrayClear(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> cupsArrayClear(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -1948,7 +1979,7 @@ elements themselves.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsArrayDelete">cupsArrayDelete</a></h3>
 <p class="description">Free all memory used by the array.</p>
 <p class="code">
-void cupsArrayDelete(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> cupsArrayDelete(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -1973,7 +2004,7 @@ elements themselves.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsArrayFind">cupsArrayFind</a></h3>
 <p class="description">Find an element in the array.</p>
 <p class="code">
-void *cupsArrayFind(<a href="#cups_array_t">cups_array_t</a> *a, void *e);</p>
+<span class="reserved">void</span> *cupsArrayFind(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">void</span> *e);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -1986,7 +2017,7 @@ void *cupsArrayFind(<a href="#cups_array_t">cups_array_t</a> *a, void *e);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsArrayGetCount">cupsArrayGetCount</a></h3>
 <p class="description">Get the number of elements in the array.</p>
 <p class="code">
-int cupsArrayGetCount(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">int</span> cupsArrayGetCount(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -1997,7 +2028,7 @@ int cupsArrayGetCount(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsArrayGetCurrent">cupsArrayGetCurrent</a></h3>
 <p class="description">Return the current element in the array.</p>
 <p class="code">
-void *cupsArrayGetCurrent(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetCurrent(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2013,7 +2044,7 @@ void *cupsArrayGetCurrent(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsArrayGetElement">cupsArrayGetElement</a></h3>
 <p class="description">Get the N-th element in the array.</p>
 <p class="code">
-void *cupsArrayGetElement(<a href="#cups_array_t">cups_array_t</a> *a, int n);</p>
+<span class="reserved">void</span> *cupsArrayGetElement(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">int</span> n);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2026,7 +2057,7 @@ void *cupsArrayGetElement(<a href="#cups_array_t">cups_array_t</a> *a, int n);</
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsArrayGetFirst">cupsArrayGetFirst</a></h3>
 <p class="description">Get the first element in the array.</p>
 <p class="code">
-void *cupsArrayGetFirst(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetFirst(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2037,7 +2068,7 @@ void *cupsArrayGetFirst(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsArrayGetIndex">cupsArrayGetIndex</a></h3>
 <p class="description">Get the index of the current element.</p>
 <p class="code">
-int cupsArrayGetIndex(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">int</span> cupsArrayGetIndex(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2053,7 +2084,7 @@ int cupsArrayGetIndex(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsArrayGetInsert">cupsArrayGetInsert</a></h3>
 <p class="description">Get the index of the last inserted element.</p>
 <p class="code">
-int cupsArrayGetInsert(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">int</span> cupsArrayGetInsert(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2064,7 +2095,7 @@ int cupsArrayGetInsert(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsArrayGetLast">cupsArrayGetLast</a></h3>
 <p class="description">Get the last element in the array.</p>
 <p class="code">
-void *cupsArrayGetLast(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetLast(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2075,7 +2106,7 @@ void *cupsArrayGetLast(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsArrayGetNext">cupsArrayGetNext</a></h3>
 <p class="description">Get the next element in the array.</p>
 <p class="code">
-void *cupsArrayGetNext(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetNext(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2094,7 +2125,7 @@ to set the current element.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsArrayGetPrev">cupsArrayGetPrev</a></h3>
 <p class="description">Get the previous element in the array.</p>
 <p class="code">
-void *cupsArrayGetPrev(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetPrev(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2113,7 +2144,7 @@ to set the current element.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsArrayGetUserData">cupsArrayGetUserData</a></h3>
 <p class="description">Return the user data for an array.</p>
 <p class="code">
-void *cupsArrayGetUserData(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetUserData(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2124,7 +2155,7 @@ void *cupsArrayGetUserData(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsArrayInsert">cupsArrayInsert</a></h3>
 <p class="description">Insert an element in the array.</p>
 <p class="code">
-int cupsArrayInsert(<a href="#cups_array_t">cups_array_t</a> *a, void *e);</p>
+<span class="reserved">int</span> cupsArrayInsert(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">void</span> *e);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2143,7 +2174,7 @@ arrays, the element is inserted at the beginning of the array.
 <h3 class="function"><span class="info">&#160;CUPS 1.5/macOS 10.7&#160;</span><a id="cupsArrayNew3">cupsArrayNew3</a></h3>
 <p class="description">Create a new array with optional compare, hash, copy, and/or free callbacks.</p>
 <p class="code">
-<a href="#cups_array_t">cups_array_t</a> *cupsArrayNew3(<a href="#cups_array_cb_t">cups_array_cb_t</a> f, void *d, <a href="#cups_ahash_cb_t">cups_ahash_cb_t</a> h, int hsize, <a href="#cups_acopy_cb_t">cups_acopy_cb_t</a> cf, <a href="#cups_afree_cb_t">cups_afree_cb_t</a> ff);</p>
+<a href="#cups_array_t">cups_array_t</a> *cupsArrayNew3(<a href="#cups_array_cb_t">cups_array_cb_t</a> f, <span class="reserved">void</span> *d, <a href="#cups_ahash_cb_t">cups_ahash_cb_t</a> h, <span class="reserved">int</span> hsize, <a href="#cups_acopy_cb_t">cups_acopy_cb_t</a> cf, <a href="#cups_afree_cb_t">cups_afree_cb_t</a> ff);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>f</th>
@@ -2181,7 +2212,7 @@ removed with <a href="#cupsArrayRemove"><code>cupsArrayRemove</code></a> or the
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsArrayNewStrings">cupsArrayNewStrings</a></h3>
 <p class="description">Create a new array of delimited strings.</p>
 <p class="code">
-<a href="#cups_array_t">cups_array_t</a> *cupsArrayNewStrings(const char *s, char delim);</p>
+<a href="#cups_array_t">cups_array_t</a> *cupsArrayNewStrings(<span class="reserved">const</span> <span class="reserved">char</span> *s, <span class="reserved">char</span> delim);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>s</th>
@@ -2201,7 +2232,7 @@ are added to the newly created array.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsArrayRemove">cupsArrayRemove</a></h3>
 <p class="description">Remove an element from the array.</p>
 <p class="code">
-int cupsArrayRemove(<a href="#cups_array_t">cups_array_t</a> *a, void *e);</p>
+<span class="reserved">int</span> cupsArrayRemove(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">void</span> *e);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2222,7 +2253,7 @@ removed element.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsArrayRestore">cupsArrayRestore</a></h3>
 <p class="description">Reset the current element to the last <a href="#cupsArraySave"><code>cupsArraySave</code></a>.</p>
 <p class="code">
-void *cupsArrayRestore(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayRestore(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2233,7 +2264,7 @@ void *cupsArrayRestore(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsArraySave">cupsArraySave</a></h3>
 <p class="description">Mark the current element for a later <a href="#cupsArrayRestore"><code>cupsArrayRestore</code></a>.</p>
 <p class="code">
-int cupsArraySave(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">int</span> cupsArraySave(<a href="#cups_array_t">cups_array_t</a> *a);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>a</th>
@@ -2252,7 +2283,7 @@ The save/restore stack is guaranteed to be at least 32 elements deep.
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsCancelDestJob">cupsCancelDestJob</a></h3>
 <p class="description">Cancel a job on a destination.</p>
 <p class="code">
-ipp_status_t cupsCancelDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, int job_id);</p>
+ipp_status_t cupsCancelDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <span class="reserved">int</span> job_id);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -2275,7 +2306,7 @@ Returns <code>IPP_STATUS_OK</code> on success and
 <h3 class="function"><a id="cupsCharsetToUTF8">cupsCharsetToUTF8</a></h3>
 <p class="description">Convert legacy character set to UTF-8.</p>
 <p class="code">
-int cupsCharsetToUTF8(<a href="#cups_utf8_t">cups_utf8_t</a> *dest, const char *src, const int maxout, const <a href="#cups_encoding_t">cups_encoding_t</a> encoding);</p>
+<span class="reserved">int</span> cupsCharsetToUTF8(<a href="#cups_utf8_t">cups_utf8_t</a> *dest, <span class="reserved">const</span> <span class="reserved">char</span> *src, <span class="reserved">const</span> <span class="reserved">int</span> maxout, <span class="reserved">const</span> <a href="#cups_encoding_t">cups_encoding_t</a> encoding);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dest</th>
@@ -2293,7 +2324,7 @@ int cupsCharsetToUTF8(<a href="#cups_utf8_t">cups_utf8_t</a> *dest, const char *
 <p class="description">Check that the option and value are supported
                              by the destination.</p>
 <p class="code">
-int cupsCheckDestSupported(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option, const char *value);</p>
+<span class="reserved">int</span> cupsCheckDestSupported(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -2316,7 +2347,7 @@ int cupsCheckDestSupported(<a href="#http_t">http_t</a> *http, <a href="#cups_de
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsCloseDestJob">cupsCloseDestJob</a></h3>
 <p class="description">Close a job and start printing.</p>
 <p class="code">
-ipp_status_t cupsCloseDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, int job_id);</p>
+ipp_status_t cupsCloseDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, <span class="reserved">int</span> job_id);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -2336,10 +2367,10 @@ ipp_status_t cupsCloseDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups
 on success.
 
 </p>
-<h3 class="function"><a id="cupsConcatString">cupsConcatString</a></h3>
-<p class="description">Safely concatenate two strings.</p>
+<h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsConcatString">cupsConcatString</a></h3>
+<p class="description">Safely concatenate two UTF-8 strings.</p>
 <p class="code">
-size_t cupsConcatString(char *dst, const char *src, size_t dstsize);</p>
+size_t cupsConcatString(<span class="reserved">char</span> *dst, <span class="reserved">const</span> <span class="reserved">char</span> *src, size_t dstsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dst</th>
@@ -2354,7 +2385,7 @@ size_t cupsConcatString(char *dst, const char *src, size_t dstsize);</p>
 <h3 class="function"><a id="cupsCondBroadcast">cupsCondBroadcast</a></h3>
 <p class="description">Wake up waiting threads.</p>
 <p class="code">
-void cupsCondBroadcast(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
+<span class="reserved">void</span> cupsCondBroadcast(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>cond</th>
@@ -2363,7 +2394,7 @@ void cupsCondBroadcast(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
 <h3 class="function"><a id="cupsCondDestroy">cupsCondDestroy</a></h3>
 <p class="description">Destroy a condition variable.</p>
 <p class="code">
-void cupsCondDestroy(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
+<span class="reserved">void</span> cupsCondDestroy(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>cond</th>
@@ -2372,7 +2403,7 @@ void cupsCondDestroy(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
 <h3 class="function"><a id="cupsCondInit">cupsCondInit</a></h3>
 <p class="description">Initialize a condition variable.</p>
 <p class="code">
-void cupsCondInit(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
+<span class="reserved">void</span> cupsCondInit(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>cond</th>
@@ -2381,7 +2412,7 @@ void cupsCondInit(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
 <h3 class="function"><a id="cupsCondWait">cupsCondWait</a></h3>
 <p class="description">Wait for a condition with optional timeout.</p>
 <p class="code">
-void cupsCondWait(<a href="#cups_cond_t">cups_cond_t</a> *cond, <a href="#cups_mutex_t">cups_mutex_t</a> *mutex, double timeout);</p>
+<span class="reserved">void</span> cupsCondWait(<a href="#cups_cond_t">cups_cond_t</a> *cond, <a href="#cups_mutex_t">cups_mutex_t</a> *mutex, <span class="reserved">double</span> timeout);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>cond</th>
@@ -2394,7 +2425,7 @@ void cupsCondWait(<a href="#cups_cond_t">cups_cond_t</a> *cond, <a href="#cups_m
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsConnectDest">cupsConnectDest</a></h3>
 <p class="description">Open a connection to the destination.</p>
 <p class="code">
-<a href="#http_t">http_t</a> *cupsConnectDest(<a href="#cups_dest_t">cups_dest_t</a> *dest, unsigned flags, int msec, int *cancel, char *resource, size_t resourcesize, <a href="#cups_dest_cb_t">cups_dest_cb_t</a> cb, void *user_data);</p>
+<a href="#http_t">http_t</a> *cupsConnectDest(<a href="#cups_dest_t">cups_dest_t</a> *dest, <span class="reserved">unsigned</span> flags, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel, <span class="reserved">char</span> *resource, size_t resourcesize, <a href="#cups_dest_cb_t">cups_dest_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dest</th>
@@ -2433,7 +2464,7 @@ associated with the destination.
 <h3 class="function"><a id="cupsCopyCredentials">cupsCopyCredentials</a></h3>
 <p class="description"></p>
 <p class="code">
-char *cupsCopyCredentials(const char *path, const char *common_name);</p>
+<span class="reserved">char</span> *cupsCopyCredentials(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>path</th>
@@ -2446,7 +2477,7 @@ char *cupsCopyCredentials(const char *path, const char *common_name);</p>
 <h3 class="function"><a id="cupsCopyCredentialsKey">cupsCopyCredentialsKey</a></h3>
 <p class="description"></p>
 <p class="code">
-char *cupsCopyCredentialsKey(const char *path, const char *common_name);</p>
+<span class="reserved">char</span> *cupsCopyCredentialsKey(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>path</th>
@@ -2459,7 +2490,7 @@ char *cupsCopyCredentialsKey(const char *path, const char *common_name);</p>
 <h3 class="function"><a id="cupsCopyCredentialsRequest">cupsCopyCredentialsRequest</a></h3>
 <p class="description"></p>
 <p class="code">
-char *cupsCopyCredentialsRequest(const char *path, const char *common_name);</p>
+<span class="reserved">char</span> *cupsCopyCredentialsRequest(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>path</th>
@@ -2472,7 +2503,7 @@ char *cupsCopyCredentialsRequest(const char *path, const char *common_name);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsCopyDest">cupsCopyDest</a></h3>
 <p class="description">Copy a destination.</p>
 <p class="code">
-int cupsCopyDest(<a href="#cups_dest_t">cups_dest_t</a> *dest, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
+<span class="reserved">int</span> cupsCopyDest(<a href="#cups_dest_t">cups_dest_t</a> *dest, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dest</th>
@@ -2494,7 +2525,7 @@ for calling cupsFreeDests() on the returned object(s).
 <p class="description">Get conflicts and resolutions for a new
                             option/value pair.</p>
 <p class="code">
-int cupsCopyDestConflicts(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, int num_options, <a href="#cups_option_t">cups_option_t</a> *options, const char *new_option, const char *new_value, int *num_conflicts, <a href="#cups_option_t">cups_option_t</a> **conflicts, int *num_resolved, <a href="#cups_option_t">cups_option_t</a> **resolved);</p>
+<span class="reserved">int</span> cupsCopyDestConflicts(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options, <span class="reserved">const</span> <span class="reserved">char</span> *new_option, <span class="reserved">const</span> <span class="reserved">char</span> *new_value, <span class="reserved">int</span> *num_conflicts, <a href="#cups_option_t">cups_option_t</a> **conflicts, <span class="reserved">int</span> *num_resolved, <a href="#cups_option_t">cups_option_t</a> **resolved);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -2539,7 +2570,7 @@ If cupsCopyDestConflicts returns 1 but &quot;num_resolved&quot; and &quot;resolv
 to 0 and <code>NULL</code>, respectively, then the conflict cannot be resolved.
 
 </p>
-<h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsCopyDestInfo">cupsCopyDestInfo</a></h3>
+<h3 class="function"><span class="info">&#160;CUPS 1.6&#160;</span><a id="cupsCopyDestInfo">cupsCopyDestInfo</a></h3>
 <p class="description">Get the supported values/capabilities for the
                        destination.</p>
 <p class="code">
@@ -2558,10 +2589,31 @@ to 0 and <code>NULL</code>, respectively, then the conflict cannot be resolved.
 value. <code>NULL</code> is returned on error.
 
 </p>
-<h3 class="function"><a id="cupsCopyString">cupsCopyString</a></h3>
-<p class="description">Safely copy two strings.</p>
+<h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsCopyDestInfo2">cupsCopyDestInfo2</a></h3>
+<p class="description">Get the supported values/capabilities for the
+                        destination.</p>
+<p class="code">
+<a href="#cups_dinfo_t">cups_dinfo_t</a> *cupsCopyDestInfo2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dest_flags_t">cups_dest_flags_t</a> dflags);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>http</th>
+<td class="description">Connection to destination</td></tr>
+<tr><th>dest</th>
+<td class="description">Destination</td></tr>
+<tr><th>dflags</th>
+<td class="description">Destination flags</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Destination information</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The caller is responsible for calling <a href="#cupsFreeDestInfo"><code>cupsFreeDestInfo</code></a> on the return
+value. <code>NULL</code> is returned on error.
+
+</p>
+<h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsCopyString">cupsCopyString</a></h3>
+<p class="description">Safely copy a UTF-8 string.</p>
 <p class="code">
-size_t cupsCopyString(char *dst, const char *src, size_t dstsize);</p>
+size_t cupsCopyString(<span class="reserved">char</span> *dst, <span class="reserved">const</span> <span class="reserved">char</span> *src, size_t dstsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dst</th>
@@ -2576,7 +2628,7 @@ size_t cupsCopyString(char *dst, const char *src, size_t dstsize);</p>
 <h3 class="function"><a id="cupsCreateCredentials">cupsCreateCredentials</a></h3>
 <p class="description">Make an X.509 certificate and private key pair.</p>
 <p class="code">
-bool cupsCreateCredentials(const char *path, bool ca_cert, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> purpose, <a href="#cups_credtype_t">cups_credtype_t</a> type, <a href="#cups_credusage_t">cups_credusage_t</a> usage, const char *organization, const char *org_unit, const char *locality, const char *state_province, const char *country, const char *common_name, const char *email, size_t num_alt_names, const char *const *alt_names, const char *root_name, time_t expiration_date);</p>
+<span class="reserved">bool</span> cupsCreateCredentials(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">bool</span> ca_cert, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> purpose, <a href="#cups_credtype_t">cups_credtype_t</a> type, <a href="#cups_credusage_t">cups_credusage_t</a> usage, <span class="reserved">const</span> <span class="reserved">char</span> *organization, <span class="reserved">const</span> <span class="reserved">char</span> *org_unit, <span class="reserved">const</span> <span class="reserved">char</span> *locality, <span class="reserved">const</span> <span class="reserved">char</span> *state_province, <span class="reserved">const</span> <span class="reserved">char</span> *country, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *email, size_t num_alt_names, <span class="reserved">const</span> <span class="reserved">char</span> *const *alt_names, <span class="reserved">const</span> <span class="reserved">char</span> *root_name, time_t expiration_date);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>path</th>
@@ -2701,7 +2753,7 @@ Unix <code>time_t</code> value in seconds.</p>
 <h3 class="function"><a id="cupsCreateCredentialsRequest">cupsCreateCredentialsRequest</a></h3>
 <p class="description">Make an X.509 Certificate Signing Request.</p>
 <p class="code">
-bool cupsCreateCredentialsRequest(const char *path, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> purpose, <a href="#cups_credtype_t">cups_credtype_t</a> type, <a href="#cups_credusage_t">cups_credusage_t</a> usage, const char *organization, const char *org_unit, const char *locality, const char *state_province, const char *country, const char *common_name, const char *email, size_t num_alt_names, const char *const *alt_names);</p>
+<span class="reserved">bool</span> cupsCreateCredentialsRequest(<span class="reserved">const</span> <span class="reserved">char</span> *path, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> purpose, <a href="#cups_credtype_t">cups_credtype_t</a> type, <a href="#cups_credusage_t">cups_credusage_t</a> usage, <span class="reserved">const</span> <span class="reserved">char</span> *organization, <span class="reserved">const</span> <span class="reserved">char</span> *org_unit, <span class="reserved">const</span> <span class="reserved">char</span> *locality, <span class="reserved">const</span> <span class="reserved">char</span> *state_province, <span class="reserved">const</span> <span class="reserved">char</span> *country, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *email, size_t num_alt_names, <span class="reserved">const</span> <span class="reserved">char</span> *const *alt_names);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>path</th>
@@ -2812,7 +2864,7 @@ certificate.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsCreateDestJob">cupsCreateDestJob</a></h3>
 <p class="description">Create a job on a destination.</p>
 <p class="code">
-ipp_status_t cupsCreateDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, int *job_id, const char *title, int num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
+ipp_status_t cupsCreateDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, <span class="reserved">int</span> *job_id, <span class="reserved">const</span> <span class="reserved">char</span> *title, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -2840,7 +2892,7 @@ in the variable pointed to by &quot;job_id&quot;.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsCreateTempFd">cupsCreateTempFd</a></h3>
 <p class="description">Creates a temporary file descriptor.</p>
 <p class="code">
-int cupsCreateTempFd(const char *prefix, const char *suffix, char *filename, size_t len);</p>
+<span class="reserved">int</span> cupsCreateTempFd(<span class="reserved">const</span> <span class="reserved">char</span> *prefix, <span class="reserved">const</span> <span class="reserved">char</span> *suffix, <span class="reserved">char</span> *filename, size_t len);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>prefix</th>
@@ -2864,7 +2916,7 @@ writing.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsCreateTempFile">cupsCreateTempFile</a></h3>
 <p class="description">Creates a temporary CUPS file.</p>
 <p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsCreateTempFile(const char *prefix, const char *suffix, char *filename, size_t len);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsCreateTempFile(<span class="reserved">const</span> <span class="reserved">char</span> *prefix, <span class="reserved">const</span> <span class="reserved">char</span> *suffix, <span class="reserved">char</span> *filename, size_t len);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>prefix</th>
@@ -2888,7 +2940,7 @@ returned in the &quot;filename&quot; buffer.  The temporary file is opened for w
 <p class="description">Create a full service name from the instance
                                 name, registration type, and domain.</p>
 <p class="code">
-bool cupsDNSSDAssembleFullName(char *fullname, size_t fullsize, const char *name, const char *type, const char *domain);</p>
+<span class="reserved">bool</span> cupsDNSSDAssembleFullName(<span class="reserved">char</span> *fullname, size_t fullsize, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *type, <span class="reserved">const</span> <span class="reserved">char</span> *domain);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fullname</th>
@@ -2911,7 +2963,7 @@ service name (&quot;Example032Name._ipp._tcp.local.&quot;).</p>
 <h3 class="function"><a id="cupsDNSSDBrowseDelete">cupsDNSSDBrowseDelete</a></h3>
 <p class="description">Cancel and delete a browse request.</p>
 <p class="code">
-void cupsDNSSDBrowseDelete(<a href="#cups_dnssd_browse_t">cups_dnssd_browse_t</a> *browse);</p>
+<span class="reserved">void</span> cupsDNSSDBrowseDelete(<a href="#cups_dnssd_browse_t">cups_dnssd_browse_t</a> *browse);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>browse</th>
@@ -2931,13 +2983,13 @@ void cupsDNSSDBrowseDelete(<a href="#cups_dnssd_browse_t">cups_dnssd_browse_t</a
 <h3 class="function"><a id="cupsDNSSDBrowseNew">cupsDNSSDBrowseNew</a></h3>
 <p class="description">Create a new DNS-SD browse request.</p>
 <p class="code">
-<a href="#cups_dnssd_browse_t">cups_dnssd_browse_t</a> *cupsDNSSDBrowseNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, const char *types, const char *domain, <a href="#cups_dnssd_browse_cb_t">cups_dnssd_browse_cb_t</a> browse_cb, void *cb_data);</p>
+<a href="#cups_dnssd_browse_t">cups_dnssd_browse_t</a> *cupsDNSSDBrowseNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, <span class="reserved">const</span> <span class="reserved">char</span> *types, <span class="reserved">const</span> <span class="reserved">char</span> *domain, <a href="#cups_dnssd_browse_cb_t">cups_dnssd_browse_cb_t</a> browse_cb, <span class="reserved">void</span> *cb_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dnssd</th>
 <td class="description">DNS-SD context</td></tr>
 <tr><th>if_index</th>
-<td class="description">Interface index, <code>CUPS_DNSSD_IF_ANY</code>, or <code>CUPS_DNSSD_IF_LOCAL</code></td></tr>
+<td class="description">Interface index, <code>CUPS_DNSSD_IF_INDEX_ANY</code>, or <code>CUPS_DNSSD_IF_INDEX_LOCAL</code></td></tr>
 <tr><th>types</th>
 <td class="description">Service types</td></tr>
 <tr><th>domain</th>
@@ -2975,10 +3027,31 @@ browse_cb(
 }
 </pre>
 </p>
+<h3 class="function"><a id="cupsDNSSDCopyComputerName">cupsDNSSDCopyComputerName</a></h3>
+<p class="description">Copy the current human-readable name for the system.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsDNSSDCopyComputerName(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>dnssd</th>
+<td class="description">DNS-SD context</td></tr>
+<tr><th>buffer</th>
+<td class="description">Computer name buffer</td></tr>
+<tr><th>bufsize</th>
+<td class="description">Size of computer name buffer (at least 128 bytes)</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Computer name or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function copies the current human-readable name (&quot;My Computer&quot;) to the
+provided buffer.  The &quot;dnssd&quot; parameter is a DNS-SD context created with
+<a href="#cupsDNSSDNew"><code>cupsDNSSDNew</code></a>.  The &quot;buffer&quot; parameter points to a character array of
+at least 128 bytes and the &quot;bufsize&quot; parameter specifies the actual size of
+the array.</p>
 <h3 class="function"><a id="cupsDNSSDCopyHostName">cupsDNSSDCopyHostName</a></h3>
 <p class="description">Copy the current mDNS hostname for the system.</p>
 <p class="code">
-char *cupsDNSSDCopyHostName(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, char *buffer, size_t bufsize);</p>
+<span class="reserved">char</span> *cupsDNSSDCopyHostName(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dnssd</th>
@@ -2999,7 +3072,7 @@ the array.</p>
 <h3 class="function"><a id="cupsDNSSDDecodeTXT">cupsDNSSDDecodeTXT</a></h3>
 <p class="description">Decode a TXT record into key/value pairs.</p>
 <p class="code">
-int cupsDNSSDDecodeTXT(const unsigned char *txtrec, uint16_t txtlen, <a href="#cups_option_t">cups_option_t</a> **txt);</p>
+<span class="reserved">int</span> cupsDNSSDDecodeTXT(<span class="reserved">const</span> <span class="reserved">unsigned</span> <span class="reserved">char</span> *txtrec, uint16_t txtlen, <a href="#cups_option_t">cups_option_t</a> **txt);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>txtrec</th>
@@ -3018,7 +3091,7 @@ function and freed using the <a href="#cupsFreeOptions"><code>cupsFreeOptions</c
 <h3 class="function"><a id="cupsDNSSDDelete">cupsDNSSDDelete</a></h3>
 <p class="description">Delete a DNS-SD context and all its requests.</p>
 <p class="code">
-void cupsDNSSDDelete(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd);</p>
+<span class="reserved">void</span> cupsDNSSDDelete(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dnssd</th>
@@ -3046,7 +3119,7 @@ the &quot;flags&quot; argument for host name changes and/or
 <h3 class="function"><a id="cupsDNSSDNew">cupsDNSSDNew</a></h3>
 <p class="description">Create a new DNS-SD context.</p>
 <p class="code">
-<a href="#cups_dnssd_t">cups_dnssd_t</a> *cupsDNSSDNew(<a href="#cups_dnssd_error_cb_t">cups_dnssd_error_cb_t</a> error_cb, void *cb_data);</p>
+<a href="#cups_dnssd_t">cups_dnssd_t</a> *cupsDNSSDNew(<a href="#cups_dnssd_error_cb_t">cups_dnssd_error_cb_t</a> error_cb, <span class="reserved">void</span> *cb_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>error_cb</th>
@@ -3064,7 +3137,7 @@ context.</p>
 <h3 class="function"><a id="cupsDNSSDQueryDelete">cupsDNSSDQueryDelete</a></h3>
 <p class="description">Cancel and delete a query request.</p>
 <p class="code">
-void cupsDNSSDQueryDelete(<a href="#cups_dnssd_query_t">cups_dnssd_query_t</a> *query);</p>
+<span class="reserved">void</span> cupsDNSSDQueryDelete(<a href="#cups_dnssd_query_t">cups_dnssd_query_t</a> *query);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>query</th>
@@ -3084,13 +3157,13 @@ void cupsDNSSDQueryDelete(<a href="#cups_dnssd_query_t">cups_dnssd_query_t</a> *
 <h3 class="function"><a id="cupsDNSSDQueryNew">cupsDNSSDQueryNew</a></h3>
 <p class="description">Create a new query request.</p>
 <p class="code">
-<a href="#cups_dnssd_query_t">cups_dnssd_query_t</a> *cupsDNSSDQueryNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, const char *fullname, uint16_t rrtype, <a href="#cups_dnssd_query_cb_t">cups_dnssd_query_cb_t</a> query_cb, void *cb_data);</p>
+<a href="#cups_dnssd_query_t">cups_dnssd_query_t</a> *cupsDNSSDQueryNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, <span class="reserved">const</span> <span class="reserved">char</span> *fullname, uint16_t rrtype, <a href="#cups_dnssd_query_cb_t">cups_dnssd_query_cb_t</a> query_cb, <span class="reserved">void</span> *cb_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dnssd</th>
 <td class="description">DNS-SD context</td></tr>
 <tr><th>if_index</th>
-<td class="description">Interface index or <code>CUPS_DNSSD_IF_ANY</code> or <code>CUPS_DNSSD_IF_LOCAL</code></td></tr>
+<td class="description">Interface index or <code>CUPS_DNSSD_IF_INDEX_ANY</code> or <code>CUPS_DNSSD_IF_INDEX_LOCAL</code></td></tr>
 <tr><th>fullname</th>
 <td class="description">Full DNS name including types and domain</td></tr>
 <tr><th>rrtype</th>
@@ -3129,7 +3202,7 @@ query_cb(
 <h3 class="function"><a id="cupsDNSSDResolveDelete">cupsDNSSDResolveDelete</a></h3>
 <p class="description">Cancel and free a resolve request.</p>
 <p class="code">
-void cupsDNSSDResolveDelete(<a href="#cups_dnssd_resolve_t">cups_dnssd_resolve_t</a> *res);</p>
+<span class="reserved">void</span> cupsDNSSDResolveDelete(<a href="#cups_dnssd_resolve_t">cups_dnssd_resolve_t</a> *res);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>res</th>
@@ -3149,13 +3222,13 @@ void cupsDNSSDResolveDelete(<a href="#cups_dnssd_resolve_t">cups_dnssd_resolve_t
 <h3 class="function"><a id="cupsDNSSDResolveNew">cupsDNSSDResolveNew</a></h3>
 <p class="description">Create a new DNS-SD resolve request.</p>
 <p class="code">
-<a href="#cups_dnssd_resolve_t">cups_dnssd_resolve_t</a> *cupsDNSSDResolveNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, const char *name, const char *type, const char *domain, <a href="#cups_dnssd_resolve_cb_t">cups_dnssd_resolve_cb_t</a> resolve_cb, void *cb_data);</p>
+<a href="#cups_dnssd_resolve_t">cups_dnssd_resolve_t</a> *cupsDNSSDResolveNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *type, <span class="reserved">const</span> <span class="reserved">char</span> *domain, <a href="#cups_dnssd_resolve_cb_t">cups_dnssd_resolve_cb_t</a> resolve_cb, <span class="reserved">void</span> *cb_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dnssd</th>
 <td class="description">DNS-SD context</td></tr>
 <tr><th>if_index</th>
-<td class="description">Interface index or <code>CUPS_DNSSD_IF_ANY</code> or <code>CUPS_DNSSD_IF_LOCAL</code></td></tr>
+<td class="description">Interface index or <code>CUPS_DNSSD_IF_INDEX_ANY</code> or <code>CUPS_DNSSD_IF_INDEX_LOCAL</code></td></tr>
 <tr><th>name</th>
 <td class="description">Service name</td></tr>
 <tr><th>type</th>
@@ -3186,7 +3259,7 @@ resolve_cb(
     const char           *fullname,
     const char           *host,
     uint16_t             port,
-    int                  num_txt,
+    size_t               num_txt,
     cups_option_t        *txt)
 {
     // Process resolved service
@@ -3197,7 +3270,7 @@ resolve_cb(
 <p class="description">Separate a full service name into an instance
                                 name, registration type, and domain.</p>
 <p class="code">
-bool cupsDNSSDSeparateFullName(const char *fullname, char *name, size_t namesize, char *type, size_t typesize, char *domain, size_t domainsize);</p>
+<span class="reserved">bool</span> cupsDNSSDSeparateFullName(<span class="reserved">const</span> <span class="reserved">char</span> *fullname, <span class="reserved">char</span> *name, size_t namesize, <span class="reserved">char</span> *type, size_t typesize, <span class="reserved">char</span> *domain, size_t domainsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fullname</th>
@@ -3224,7 +3297,7 @@ registration type (&quot;_ipp._tcp&quot;), and domain (&quot;local.&quot;).</p>
 <h3 class="function"><a id="cupsDNSSDServiceAdd">cupsDNSSDServiceAdd</a></h3>
 <p class="description">Add a service instance.</p>
 <p class="code">
-bool cupsDNSSDServiceAdd(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service, const char *types, const char *domain, const char *host, uint16_t port, int num_txt, <a href="#cups_option_t">cups_option_t</a> *txt);</p>
+<span class="reserved">bool</span> cupsDNSSDServiceAdd(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service, <span class="reserved">const</span> <span class="reserved">char</span> *types, <span class="reserved">const</span> <span class="reserved">char</span> *domain, <span class="reserved">const</span> <span class="reserved">char</span> *host, uint16_t port, <span class="reserved">int</span> num_txt, <a href="#cups_option_t">cups_option_t</a> *txt);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>service</th>
@@ -3255,7 +3328,7 @@ have been added.</p>
 <h3 class="function"><a id="cupsDNSSDServiceDelete">cupsDNSSDServiceDelete</a></h3>
 <p class="description">Cancel and free a service registration.</p>
 <p class="code">
-void cupsDNSSDServiceDelete(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
+<span class="reserved">void</span> cupsDNSSDServiceDelete(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>service</th>
@@ -3276,7 +3349,7 @@ void cupsDNSSDServiceDelete(<a href="#cups_dnssd_service_t">cups_dnssd_service_t
 <h3 class="function"><a id="cupsDNSSDServiceGetName">cupsDNSSDServiceGetName</a></h3>
 <p class="description">Get the service instance name for the service registration.</p>
 <p class="code">
-const char *cupsDNSSDServiceGetName(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsDNSSDServiceGetName(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>service</th>
@@ -3287,13 +3360,13 @@ const char *cupsDNSSDServiceGetName(<a href="#cups_dnssd_service_t">cups_dnssd_s
 <h3 class="function"><a id="cupsDNSSDServiceNew">cupsDNSSDServiceNew</a></h3>
 <p class="description">Create a new named service.</p>
 <p class="code">
-<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *cupsDNSSDServiceNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, const char *name, <a href="#cups_dnssd_service_cb_t">cups_dnssd_service_cb_t</a> cb, void *cb_data);</p>
+<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *cupsDNSSDServiceNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, <span class="reserved">const</span> <span class="reserved">char</span> *name, <a href="#cups_dnssd_service_cb_t">cups_dnssd_service_cb_t</a> cb, <span class="reserved">void</span> *cb_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dnssd</th>
 <td class="description">DNS-SD context</td></tr>
 <tr><th>if_index</th>
-<td class="description">Interface index, <code>CUPS_DNSSD_IF_ANY</code>, or <code>CUPS_DNSSD_IF_LOCAL</code></td></tr>
+<td class="description">Interface index, <code>CUPS_DNSSD_IF_INDEX_ANY</code>, or <code>CUPS_DNSSD_IF_INDEX_LOCAL</code></td></tr>
 <tr><th>name</th>
 <td class="description">Name of service</td></tr>
 <tr><th>cb</th>
@@ -3316,7 +3389,7 @@ registration.</p>
 <h3 class="function"><a id="cupsDNSSDServicePublish">cupsDNSSDServicePublish</a></h3>
 <p class="description">Publish a service.</p>
 <p class="code">
-bool cupsDNSSDServicePublish(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
+<span class="reserved">bool</span> cupsDNSSDServicePublish(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>service</th>
@@ -3331,7 +3404,7 @@ bool cupsDNSSDServicePublish(<a href="#cups_dnssd_service_t">cups_dnssd_service_
 <p class="description">Set the geolocation (LOC record) of a
                                   service.</p>
 <p class="code">
-bool cupsDNSSDServiceSetLocation(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service, const char *geo_uri);</p>
+<span class="reserved">bool</span> cupsDNSSDServiceSetLocation(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service, <span class="reserved">const</span> <span class="reserved">char</span> *geo_uri);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>service</th>
@@ -3352,7 +3425,7 @@ You must call this function prior to <a href="#cupsDNSSDServiceAdd"><code>cupsDN
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsDirClose">cupsDirClose</a></h3>
 <p class="description">Close a directory.</p>
 <p class="code">
-void cupsDirClose(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
+<span class="reserved">void</span> cupsDirClose(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dp</th>
@@ -3361,7 +3434,7 @@ void cupsDirClose(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsDirOpen">cupsDirOpen</a></h3>
 <p class="description">Open a directory.</p>
 <p class="code">
-<a href="#cups_dir_t">cups_dir_t</a> *cupsDirOpen(const char *directory);</p>
+<a href="#cups_dir_t">cups_dir_t</a> *cupsDirOpen(<span class="reserved">const</span> <span class="reserved">char</span> *directory);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>directory</th>
@@ -3383,7 +3456,7 @@ void cupsDirClose(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsDirRewind">cupsDirRewind</a></h3>
 <p class="description">Rewind to the start of the directory.</p>
 <p class="code">
-void cupsDirRewind(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
+<span class="reserved">void</span> cupsDirRewind(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dp</th>
@@ -3392,7 +3465,7 @@ void cupsDirRewind(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.20/macOS 10.4&#160;</span><a id="cupsDoAuthentication">cupsDoAuthentication</a></h3>
 <p class="description">Authenticate a request.</p>
 <p class="code">
-int cupsDoAuthentication(<a href="#http_t">http_t</a> *http, const char *method, const char *resource);</p>
+<span class="reserved">int</span> cupsDoAuthentication(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *method, <span class="reserved">const</span> <span class="reserved">char</span> *resource);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -3412,7 +3485,7 @@ status, prior to resubmitting your request.
 <h3 class="function"><a id="cupsDoFileRequest">cupsDoFileRequest</a></h3>
 <p class="description">Do an IPP request with a file.</p>
 <p class="code">
-<a href="#ipp_t">ipp_t</a> *cupsDoFileRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, const char *resource, const char *filename);</p>
+<a href="#ipp_t">ipp_t</a> *cupsDoFileRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">const</span> <span class="reserved">char</span> *filename);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -3433,7 +3506,7 @@ server, retrying and authenticating as necessary.  The request is freed with
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsDoIORequest">cupsDoIORequest</a></h3>
 <p class="description">Do an IPP request with file descriptors.</p>
 <p class="code">
-<a href="#ipp_t">ipp_t</a> *cupsDoIORequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, const char *resource, int infile, int outfile);</p>
+<a href="#ipp_t">ipp_t</a> *cupsDoIORequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">int</span> infile, <span class="reserved">int</span> outfile);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -3464,7 +3537,7 @@ all of the data after the IPP response message to the file.
 <h3 class="function"><a id="cupsDoRequest">cupsDoRequest</a></h3>
 <p class="description">Do an IPP request.</p>
 <p class="code">
-<a href="#ipp_t">ipp_t</a> *cupsDoRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, const char *resource);</p>
+<a href="#ipp_t">ipp_t</a> *cupsDoRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, <span class="reserved">const</span> <span class="reserved">char</span> *resource);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -3482,7 +3555,7 @@ and authenticating as necessary.  The request is freed with <a href="#ippDelete"
 <h3 class="function"><span class="info">&#160;CUPS 2.3/macOS 10.14&#160;</span><a id="cupsEncodeOption">cupsEncodeOption</a></h3>
 <p class="description">Encode a single option into an IPP attribute.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsEncodeOption(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group_tag, const char *name, const char *value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsEncodeOption(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -3499,7 +3572,7 @@ and authenticating as necessary.  The request is freed with <a href="#ippDelete"
 <h3 class="function"><a id="cupsEncodeOptions">cupsEncodeOptions</a></h3>
 <p class="description">Encode printer options into IPP attributes.</p>
 <p class="code">
-void cupsEncodeOptions(<a href="#ipp_t">ipp_t</a> *ipp, int num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
+<span class="reserved">void</span> cupsEncodeOptions(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -3516,7 +3589,7 @@ for a single group.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsEncodeOptions2">cupsEncodeOptions2</a></h3>
 <p class="description">Encode printer options into IPP attributes for a group.</p>
 <p class="code">
-void cupsEncodeOptions2(<a href="#ipp_t">ipp_t</a> *ipp, int num_options, <a href="#cups_option_t">cups_option_t</a> *options, ipp_tag_t group_tag);</p>
+<span class="reserved">void</span> cupsEncodeOptions2(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options, ipp_tag_t group_tag);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -3537,13 +3610,13 @@ to add the standard groups.
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsEncryption">cupsEncryption</a></h3>
 <p class="description">Get the current encryption settings.</p>
 <p class="code">
-<a href="#http_encryption_t">http_encryption_t</a> cupsEncryption(void);</p>
+<a href="#http_encryption_t">http_encryption_t</a> cupsEncryption(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Encryption settings</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsEnumDests">cupsEnumDests</a></h3>
 <p class="description">Enumerate available destinations with a callback function.</p>
 <p class="code">
-int cupsEnumDests(unsigned flags, int msec, int *cancel, <a href="#cups_ptype_t">cups_ptype_t</a> type, <a href="#cups_ptype_t">cups_ptype_t</a> mask, <a href="#cups_dest_cb_t">cups_dest_cb_t</a> cb, void *user_data);</p>
+<span class="reserved">int</span> cupsEnumDests(<span class="reserved">unsigned</span> flags, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel, <a href="#cups_ptype_t">cups_ptype_t</a> type, <a href="#cups_ptype_t">cups_ptype_t</a> mask, <a href="#cups_dest_cb_t">cups_dest_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>flags</th>
@@ -3584,7 +3657,7 @@ destinations - it is up to the caller to suppress any duplicate destinations.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileClose">cupsFileClose</a></h3>
 <p class="description">Close a CUPS file.</p>
 <p class="code">
-int cupsFileClose(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileClose(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3595,7 +3668,7 @@ int cupsFileClose(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileEOF">cupsFileEOF</a></h3>
 <p class="description">Return the end-of-file status.</p>
 <p class="code">
-int cupsFileEOF(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileEOF(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3606,7 +3679,7 @@ int cupsFileEOF(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileFind">cupsFileFind</a></h3>
 <p class="description">Find a file using the specified path.</p>
 <p class="code">
-const char *cupsFileFind(const char *filename, const char *path, int executable, char *buffer, int bufsize);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsFileFind(<span class="reserved">const</span> <span class="reserved">char</span> *filename, <span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">int</span> executable, <span class="reserved">char</span> *buffer, <span class="reserved">int</span> bufsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>filename</th>
@@ -3633,7 +3706,7 @@ matches the current directory.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileFlush">cupsFileFlush</a></h3>
 <p class="description">Flush pending output.</p>
 <p class="code">
-int cupsFileFlush(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileFlush(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3644,7 +3717,7 @@ int cupsFileFlush(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileGetChar">cupsFileGetChar</a></h3>
 <p class="description">Get a single character from a file.</p>
 <p class="code">
-int cupsFileGetChar(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileGetChar(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3655,7 +3728,7 @@ int cupsFileGetChar(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileGetConf">cupsFileGetConf</a></h3>
 <p class="description">Get a line from a configuration file.</p>
 <p class="code">
-char *cupsFileGetConf(<a href="#cups_file_t">cups_file_t</a> *fp, char *buf, size_t buflen, char **value, int *linenum);</p>
+<span class="reserved">char</span> *cupsFileGetConf(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">char</span> *buf, size_t buflen, <span class="reserved">char</span> **value, <span class="reserved">int</span> *linenum);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3675,7 +3748,7 @@ char *cupsFileGetConf(<a href="#cups_file_t">cups_file_t</a> *fp, char *buf, siz
 <p class="description">Get a CR and/or LF-terminated line that may
                       contain binary data.</p>
 <p class="code">
-size_t cupsFileGetLine(<a href="#cups_file_t">cups_file_t</a> *fp, char *buf, size_t buflen);</p>
+size_t cupsFileGetLine(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">char</span> *buf, size_t buflen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3697,7 +3770,7 @@ the number of bytes on the line.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileGets">cupsFileGets</a></h3>
 <p class="description">Get a CR and/or LF-terminated line.</p>
 <p class="code">
-char *cupsFileGets(<a href="#cups_file_t">cups_file_t</a> *fp, char *buf, size_t buflen);</p>
+<span class="reserved">char</span> *cupsFileGets(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">char</span> *buf, size_t buflen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3712,7 +3785,7 @@ char *cupsFileGets(<a href="#cups_file_t">cups_file_t</a> *fp, char *buf, size_t
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsFileIsCompressed">cupsFileIsCompressed</a></h3>
 <p class="description">Return whether a file is compressed.</p>
 <p class="code">
-bool cupsFileIsCompressed(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">bool</span> cupsFileIsCompressed(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3723,7 +3796,7 @@ bool cupsFileIsCompressed(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileLock">cupsFileLock</a></h3>
 <p class="description">Temporarily lock access to a file.</p>
 <p class="code">
-int cupsFileLock(<a href="#cups_file_t">cups_file_t</a> *fp, int block);</p>
+<span class="reserved">int</span> cupsFileLock(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">int</span> block);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3736,7 +3809,7 @@ int cupsFileLock(<a href="#cups_file_t">cups_file_t</a> *fp, int block);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileNumber">cupsFileNumber</a></h3>
 <p class="description">Return the file descriptor associated with a CUPS file.</p>
 <p class="code">
-int cupsFileNumber(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileNumber(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3747,7 +3820,7 @@ int cupsFileNumber(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileOpen">cupsFileOpen</a></h3>
 <p class="description">Open a CUPS file.</p>
 <p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsFileOpen(const char *filename, const char *mode);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsFileOpen(<span class="reserved">const</span> <span class="reserved">char</span> *filename, <span class="reserved">const</span> <span class="reserved">char</span> *mode);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>filename</th>
@@ -3766,6 +3839,9 @@ When opening for writing (&quot;w&quot;), an optional number from 1 to 9 can be
 supplied which enables Flate compression of the file.  Compression is
 not supported for the &quot;a&quot; (append) mode.<br>
 <br>
+When opening for writing (&quot;w&quot;) or append (&quot;a&quot;), an optional 'm###' suffix
+can be used to set the permissions of the opened file.<br>
+<br>
 When opening a socket connection, the filename is a string of the form
 &quot;address:port&quot; or &quot;hostname:port&quot;. The socket will make an IPv4 or IPv6
 connection as needed, generally preferring IPv6 connections when there is
@@ -3775,7 +3851,7 @@ a choice.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileOpenFd">cupsFileOpenFd</a></h3>
 <p class="description">Open a CUPS file using a file descriptor.</p>
 <p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsFileOpenFd(int fd, const char *mode);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsFileOpenFd(<span class="reserved">int</span> fd, <span class="reserved">const</span> <span class="reserved">char</span> *mode);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fd</th>
@@ -3797,7 +3873,7 @@ not supported for the &quot;a&quot; (append) mode.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFilePeekChar">cupsFilePeekChar</a></h3>
 <p class="description">Peek at the next character from a file.</p>
 <p class="code">
-int cupsFilePeekChar(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFilePeekChar(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3808,7 +3884,7 @@ int cupsFilePeekChar(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFilePrintf">cupsFilePrintf</a></h3>
 <p class="description">Write a formatted string.</p>
 <p class="code">
-int cupsFilePrintf(<a href="#cups_file_t">cups_file_t</a> *fp, const char *format, ...);</p>
+<span class="reserved">int</span> cupsFilePrintf(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">const</span> <span class="reserved">char</span> *format, ...);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3823,7 +3899,7 @@ int cupsFilePrintf(<a href="#cups_file_t">cups_file_t</a> *fp, const char *forma
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFilePutChar">cupsFilePutChar</a></h3>
 <p class="description">Write a character.</p>
 <p class="code">
-int cupsFilePutChar(<a href="#cups_file_t">cups_file_t</a> *fp, int c);</p>
+<span class="reserved">int</span> cupsFilePutChar(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">int</span> c);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3836,7 +3912,7 @@ int cupsFilePutChar(<a href="#cups_file_t">cups_file_t</a> *fp, int c);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsFilePutConf">cupsFilePutConf</a></h3>
 <p class="description">Write a configuration line.</p>
 <p class="code">
-ssize_t cupsFilePutConf(<a href="#cups_file_t">cups_file_t</a> *fp, const char *directive, const char *value);</p>
+ssize_t cupsFilePutConf(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">const</span> <span class="reserved">char</span> *directive, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3855,7 +3931,7 @@ ssize_t cupsFilePutConf(<a href="#cups_file_t">cups_file_t</a> *fp, const char *
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFilePuts">cupsFilePuts</a></h3>
 <p class="description">Write a string.</p>
 <p class="code">
-int cupsFilePuts(<a href="#cups_file_t">cups_file_t</a> *fp, const char *s);</p>
+<span class="reserved">int</span> cupsFilePuts(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">const</span> <span class="reserved">char</span> *s);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3872,7 +3948,7 @@ int cupsFilePuts(<a href="#cups_file_t">cups_file_t</a> *fp, const char *s);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileRead">cupsFileRead</a></h3>
 <p class="description">Read from a file.</p>
 <p class="code">
-ssize_t cupsFileRead(<a href="#cups_file_t">cups_file_t</a> *fp, char *buf, size_t bytes);</p>
+ssize_t cupsFileRead(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">char</span> *buf, size_t bytes);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3912,19 +3988,19 @@ off_t cupsFileSeek(<a href="#cups_file_t">cups_file_t</a> *fp, off_t pos);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileStderr">cupsFileStderr</a></h3>
 <p class="description">Return a CUPS file associated with stderr.</p>
 <p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsFileStderr(void);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsFileStderr(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">CUPS file</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileStdin">cupsFileStdin</a></h3>
 <p class="description">Return a CUPS file associated with stdin.</p>
 <p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsFileStdin(void);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsFileStdin(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">CUPS file</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileStdout">cupsFileStdout</a></h3>
 <p class="description">Return a CUPS file associated with stdout.</p>
 <p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsFileStdout(void);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsFileStdout(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">CUPS file</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileTell">cupsFileTell</a></h3>
@@ -3941,7 +4017,7 @@ off_t cupsFileTell(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileUnlock">cupsFileUnlock</a></h3>
 <p class="description">Unlock access to a file.</p>
 <p class="code">
-int cupsFileUnlock(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileUnlock(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3952,7 +4028,7 @@ int cupsFileUnlock(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsFileWrite">cupsFileWrite</a></h3>
 <p class="description">Write to a file.</p>
 <p class="code">
-ssize_t cupsFileWrite(<a href="#cups_file_t">cups_file_t</a> *fp, const char *buf, size_t bytes);</p>
+ssize_t cupsFileWrite(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">const</span> <span class="reserved">char</span> *buf, size_t bytes);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fp</th>
@@ -3967,7 +4043,7 @@ ssize_t cupsFileWrite(<a href="#cups_file_t">cups_file_t</a> *fp, const char *bu
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="cupsFindDestDefault">cupsFindDestDefault</a></h3>
 <p class="description">Find the default value(s) for the given option.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestDefault(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestDefault(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -3992,7 +4068,7 @@ functions to inspect the default value(s) as needed.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="cupsFindDestReady">cupsFindDestReady</a></h3>
 <p class="description">Find the default value(s) for the given option.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestReady(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestReady(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4017,7 +4093,7 @@ functions to inspect the default value(s) as needed.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="cupsFindDestSupported">cupsFindDestSupported</a></h3>
 <p class="description">Find the default value(s) for the given option.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestSupported(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestSupported(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4061,7 +4137,7 @@ ipp_status_t cupsFinishDestDocument(<a href="#http_t">http_t</a> *http, <a href=
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsFormDecode">cupsFormDecode</a></h3>
 <p class="description">Decode URL-encoded form data.</p>
 <p class="code">
-int cupsFormDecode(const char *data, <a href="#cups_option_t">cups_option_t</a> **vars);</p>
+<span class="reserved">int</span> cupsFormDecode(<span class="reserved">const</span> <span class="reserved">char</span> *data, <a href="#cups_option_t">cups_option_t</a> **vars);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>data</th>
@@ -4082,7 +4158,7 @@ are done with the form variables.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsFormEncode">cupsFormEncode</a></h3>
 <p class="description">Encode options as URL-encoded form data.</p>
 <p class="code">
-char *cupsFormEncode(const char *url, int num_vars, <a href="#cups_option_t">cups_option_t</a> *vars);</p>
+<span class="reserved">char</span> *cupsFormEncode(<span class="reserved">const</span> <span class="reserved">char</span> *url, <span class="reserved">int</span> num_vars, <a href="#cups_option_t">cups_option_t</a> *vars);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>url</th>
@@ -4100,12 +4176,58 @@ optional URL prefix, returning an allocated string.<br>
 <br>
 Use <code>free</code> to return the memory used for the string.
 
+</p>
+<h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsFormatString">cupsFormatString</a></h3>
+<p class="description">Format a UTF-8 string into a fixed size buffer.</p>
+<p class="code">
+ssize_t cupsFormatString(<span class="reserved">char</span> *buffer, size_t bufsize, <span class="reserved">const</span> <span class="reserved">char</span> *format, ...);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>buffer</th>
+<td class="description">Output buffer</td></tr>
+<tr><th>bufsize</th>
+<td class="description">Size of output buffer</td></tr>
+<tr><th>format</th>
+<td class="description"><code>printf</code>-style format string</td></tr>
+<tr><th>...</th>
+<td class="description">Additional arguments</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of bytes formatted</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function formats a UTF-8 string into a fixed size buffer, escaping
+special/control characters as needed so they can be safely displayed or
+logged.
+
+</p>
+<h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsFormatStringv">cupsFormatStringv</a></h3>
+<p class="description">Format a UTF-8 string into a fixed size buffer (<code>va_list</code> version).</p>
+<p class="code">
+ssize_t cupsFormatStringv(<span class="reserved">char</span> *buffer, size_t bufsize, <span class="reserved">const</span> <span class="reserved">char</span> *format, va_list ap);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>buffer</th>
+<td class="description">Output buffer</td></tr>
+<tr><th>bufsize</th>
+<td class="description">Size of output buffer</td></tr>
+<tr><th>format</th>
+<td class="description">printf-style format string</td></tr>
+<tr><th>ap</th>
+<td class="description">Pointer to additional arguments</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of bytes formatted</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function formats a UTF-8 string into a fixed size buffer using a
+variable argument pointer, escaping special/control characters as needed so
+they can be safely displayed or logged.
+
 </p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsFreeDestInfo">cupsFreeDestInfo</a></h3>
 <p class="description">Free destination information obtained using
                        <a href="#cupsCopyDestInfo"><code>cupsCopyDestInfo</code></a>.</p>
 <p class="code">
-void cupsFreeDestInfo(<a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo);</p>
+<span class="reserved">void</span> cupsFreeDestInfo(<a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dinfo</th>
@@ -4114,7 +4236,7 @@ void cupsFreeDestInfo(<a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo);</p>
 <h3 class="function"><a id="cupsFreeDests">cupsFreeDests</a></h3>
 <p class="description">Free the memory used by the list of destinations.</p>
 <p class="code">
-void cupsFreeDests(int num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
+<span class="reserved">void</span> cupsFreeDests(<span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>num_dests</th>
@@ -4125,7 +4247,7 @@ void cupsFreeDests(int num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests)
 <h3 class="function"><a id="cupsFreeJobs">cupsFreeJobs</a></h3>
 <p class="description">Free memory used by job data.</p>
 <p class="code">
-void cupsFreeJobs(int num_jobs, <a href="#cups_job_t">cups_job_t</a> *jobs);</p>
+<span class="reserved">void</span> cupsFreeJobs(<span class="reserved">int</span> num_jobs, <a href="#cups_job_t">cups_job_t</a> *jobs);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>num_jobs</th>
@@ -4136,7 +4258,7 @@ void cupsFreeJobs(int num_jobs, <a href="#cups_job_t">cups_job_t</a> *jobs);</p>
 <h3 class="function"><a id="cupsFreeOptions">cupsFreeOptions</a></h3>
 <p class="description">Free all memory used by options.</p>
 <p class="code">
-void cupsFreeOptions(int num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
+<span class="reserved">void</span> cupsFreeOptions(<span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>num_options</th>
@@ -4144,10 +4266,24 @@ void cupsFreeOptions(int num_options, <a href="#cups_option_t">cups_option_t</a>
 <tr><th>options</th>
 <td class="description">Pointer to options</td></tr>
 </tbody></table>
+<h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsGetClock">cupsGetClock</a></h3>
+<p class="description">Get a monotonic clock value in seconds.</p>
+<p class="code">
+<span class="reserved">double</span> cupsGetClock(<span class="reserved">void</span>);</p>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Elapsed seconds</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns a monotonically increasing clock value in seconds.  The
+first call will always return 0.0.  Subsequent calls will return the number
+of seconds that have elapsed since the first call, regardless of system time
+changes, sleep, etc.  The sub-second accuracy varies based on the operating
+system and hardware but is typically 10ms or better.
+
+</p>
 <h3 class="function"><a id="cupsGetCredentialsExpiration">cupsGetCredentialsExpiration</a></h3>
 <p class="description">Return the expiration date of the credentials.</p>
 <p class="code">
-time_t cupsGetCredentialsExpiration(const char *credentials);</p>
+time_t cupsGetCredentialsExpiration(<span class="reserved">const</span> <span class="reserved">char</span> *credentials);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>credentials</th>
@@ -4158,7 +4294,7 @@ time_t cupsGetCredentialsExpiration(const char *credentials);</p>
 <h3 class="function"><a id="cupsGetCredentialsInfo">cupsGetCredentialsInfo</a></h3>
 <p class="description">Return a string describing the credentials.</p>
 <p class="code">
-char *cupsGetCredentialsInfo(const char *credentials, char *buffer, size_t bufsize);</p>
+<span class="reserved">char</span> *cupsGetCredentialsInfo(<span class="reserved">const</span> <span class="reserved">char</span> *credentials, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>credentials</th>
@@ -4173,7 +4309,7 @@ char *cupsGetCredentialsInfo(const char *credentials, char *buffer, size_t bufsi
 <h3 class="function"><a id="cupsGetCredentialsTrust">cupsGetCredentialsTrust</a></h3>
 <p class="description">Return the trust of credentials.</p>
 <p class="code">
-<a href="#http_trust_t">http_trust_t</a> cupsGetCredentialsTrust(const char *path, const char *common_name, const char *credentials);</p>
+<a href="#http_trust_t">http_trust_t</a> cupsGetCredentialsTrust(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *credentials, <span class="reserved">bool</span> require_ca);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>path</th>
@@ -4182,13 +4318,45 @@ char *cupsGetCredentialsInfo(const char *credentials, char *buffer, size_t bufsi
 <td class="description">Common name for trust lookup</td></tr>
 <tr><th>credentials</th>
 <td class="description">Credentials</td></tr>
+<tr><th>require_ca</th>
+<td class="description">Require a CA-signed certificate?</td></tr>
 </tbody></table>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Level of trust</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function determines the level of trust for the supplied credentials.
+The &quot;path&quot; parameter specifies the certificate/key store for known
+credentials and certificate authorities.  The &quot;common_name&quot; parameter
+specifies the FQDN of the service being accessed such as
+&quot;printer.example.com&quot;.  The &quot;credentials&quot; parameter provides the credentials
+being evaluated, which are usually obtained with the
+<a href="#httpCopyPeerCredentials"><code>httpCopyPeerCredentials</code></a> function.  The &quot;require_ca&quot; parameter
+specifies whether a CA-signed certificate is required for trust.<br>
+<br>
+The <code>AllowAnyRoot</code>, <code>AllowExpiredCerts</code>, <code>TrustOnFirstUse</code>, and
+<code>ValidateCerts</code> options in the &quot;client.conf&quot; file (or corresponding
+preferences file on macOS) control the trust policy, which defaults to
+AllowAnyRoot=Yes, AllowExpiredCerts=No, TrustOnFirstUse=Yes, and
+ValidateCerts=No.  When the &quot;require_ca&quot; parameter is <code>true</code> the AllowAnyRoot
+and TrustOnFirstUse policies are turned off (&quot;No&quot;).<br>
+<br>
+The returned trust value can be one of the following:
+
+</p><ul>
+<li><code>HTTP_TRUST_OK</code>: Credentials are OK/trusted
+</li>
+<li><code>HTTP_TRUST_INVALID</code>: Credentials are invalid
+</li>
+<li><code>HTTP_TRUST_EXPIRED</code>: Credentials are expired
+</li>
+<li><code>HTTP_TRUST_RENEWED</code>: Credentials have been renewed
+</li>
+<li><code>HTTP_TRUST_UNKNOWN</code>: Credentials are unknown/new</li>
+</ul>
 <h3 class="function"><a id="cupsGetDest">cupsGetDest</a></h3>
 <p class="description">Get the named destination from the list.</p>
 <p class="code">
-<a href="#cups_dest_t">cups_dest_t</a> *cupsGetDest(const char *name, const char *instance, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
+<a href="#cups_dest_t">cups_dest_t</a> *cupsGetDest(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *instance, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -4209,7 +4377,7 @@ list of supported destinations for the current user.</p>
 <p class="description">Get a media name, dimension, and margins for a
                               specific size.</p>
 <p class="code">
-int cupsGetDestMediaByIndex(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, int n, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
+<span class="reserved">int</span> cupsGetDestMediaByIndex(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">int</span> n, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4236,7 +4404,7 @@ borderless size supported by the printer.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsGetDestMediaByIndex2">cupsGetDestMediaByIndex2</a></h3>
 <p class="description">Get specific media information.</p>
 <p class="code">
-bool cupsGetDestMediaByIndex2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, size_t n, unsigned flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
+<span class="reserved">bool</span> cupsGetDestMediaByIndex2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, size_t n, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4263,7 +4431,7 @@ borderless size supported by the printer.
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsGetDestMediaByName">cupsGetDestMediaByName</a></h3>
 <p class="description">Get media names, dimensions, and margins.</p>
 <p class="code">
-int cupsGetDestMediaByName(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *name, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
+<span class="reserved">int</span> cupsGetDestMediaByName(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4300,7 +4468,7 @@ Returns 1 when there is a match and 0 if there is not a match.
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsGetDestMediaByName2">cupsGetDestMediaByName2</a></h3>
 <p class="description">Get media names, dimensions, and margins.</p>
 <p class="code">
-bool cupsGetDestMediaByName2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *name, unsigned flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
+<span class="reserved">bool</span> cupsGetDestMediaByName2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4337,7 +4505,7 @@ Returns <code>true</code> when there is a match and <code>false</code> if there
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsGetDestMediaBySize">cupsGetDestMediaBySize</a></h3>
 <p class="description">Get media names, dimensions, and margins.</p>
 <p class="code">
-int cupsGetDestMediaBySize(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, int width, int length, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
+<span class="reserved">int</span> cupsGetDestMediaBySize(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">int</span> width, <span class="reserved">int</span> length, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4378,7 +4546,7 @@ Returns 1 when there is a match and 0 if there is not a match.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsGetDestMediaBySize2">cupsGetDestMediaBySize2</a></h3>
 <p class="description">Get media names, dimensions, and margins.</p>
 <p class="code">
-bool cupsGetDestMediaBySize2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, int width, int length, unsigned flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
+<span class="reserved">bool</span> cupsGetDestMediaBySize2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">int</span> width, <span class="reserved">int</span> length, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4418,7 +4586,7 @@ Returns <code>true</code> when there is a match and <code>false</code> if there
 <p class="description">Get the number of sizes supported by a
                             destination.</p>
 <p class="code">
-int cupsGetDestMediaCount(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags);</p>
+<span class="reserved">int</span> cupsGetDestMediaCount(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4441,7 +4609,7 @@ the number of borderless sizes.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="cupsGetDestMediaDefault">cupsGetDestMediaDefault</a></h3>
 <p class="description">Get the default size for a destination.</p>
 <p class="code">
-int cupsGetDestMediaDefault(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
+<span class="reserved">int</span> cupsGetDestMediaDefault(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4466,7 +4634,7 @@ borderless size, typically US Letter or A4, but sometimes 4x6 photo media.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsGetDestMediaDefault2">cupsGetDestMediaDefault2</a></h3>
 <p class="description">Get the default size for a destination.</p>
 <p class="code">
-bool cupsGetDestMediaDefault2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
+<span class="reserved">bool</span> cupsGetDestMediaDefault2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4491,7 +4659,7 @@ borderless size, typically US Letter or A4, but sometimes 4x6 photo media.
 <h3 class="function"><span class="info">&#160;CUPS 2.0/macOS 10.10&#160;</span><a id="cupsGetDestWithURI">cupsGetDestWithURI</a></h3>
 <p class="description">Get a destination associated with a URI.</p>
 <p class="code">
-<a href="#cups_dest_t">cups_dest_t</a> *cupsGetDestWithURI(const char *name, const char *uri);</p>
+<a href="#cups_dest_t">cups_dest_t</a> *cupsGetDestWithURI(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *uri);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -4511,7 +4679,7 @@ created using the URI.<br>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.21/macOS 10.4&#160;</span><a id="cupsGetDests2">cupsGetDests2</a></h3>
 <p class="description">Get the list of destinations from the specified server.</p>
 <p class="code">
-int cupsGetDests2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
+<span class="reserved">int</span> cupsGetDests2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4543,7 +4711,7 @@ the <a href="#cupsGetDest"><code>cupsGetDest</code></a> function to find a parti
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsGetEncryption">cupsGetEncryption</a></h3>
 <p class="description">Get the current encryption settings.</p>
 <p class="code">
-<a href="#http_encryption_t">http_encryption_t</a> cupsGetEncryption(void);</p>
+<a href="#http_encryption_t">http_encryption_t</a> cupsGetEncryption(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Encryption settings</p>
 <h4 class="discussion">Discussion</h4>
@@ -4561,19 +4729,19 @@ setting to be used.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsGetError">cupsGetError</a></h3>
 <p class="description">Return the last IPP status code received on the current thread.</p>
 <p class="code">
-ipp_status_t cupsGetError(void);</p>
+ipp_status_t cupsGetError(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">IPP status code from last request</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsGetErrorString">cupsGetErrorString</a></h3>
 <p class="description">Return the last IPP status-message received on the current thread.</p>
 <p class="code">
-const char *cupsGetErrorString(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetErrorString(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">status-message text from last request</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.20/macOS 10.4&#160;</span><a id="cupsGetFd">cupsGetFd</a></h3>
 <p class="description">Get a file from the server.</p>
 <p class="code">
-http_status_t cupsGetFd(<a href="#http_t">http_t</a> *http, const char *resource, int fd);</p>
+http_status_t cupsGetFd(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">int</span> fd);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4592,7 +4760,7 @@ http_status_t cupsGetFd(<a href="#http_t">http_t</a> *http, const char *resource
 <h3 class="function"><span class="info">&#160;CUPS 1.1.20/macOS 10.4&#160;</span><a id="cupsGetFile">cupsGetFile</a></h3>
 <p class="description">Get a file from the server.</p>
 <p class="code">
-http_status_t cupsGetFile(<a href="#http_t">http_t</a> *http, const char *resource, const char *filename);</p>
+http_status_t cupsGetFile(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">const</span> <span class="reserved">char</span> *filename);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4611,7 +4779,7 @@ http_status_t cupsGetFile(<a href="#http_t">http_t</a> *http, const char *resour
 <h3 class="function"><span class="info">&#160;CUPS 2.2.4/macOS 10.13&#160;</span><a id="cupsGetIntegerOption">cupsGetIntegerOption</a></h3>
 <p class="description">Get an integer option value.</p>
 <p class="code">
-int cupsGetIntegerOption(const char *name, int num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
+<span class="reserved">int</span> cupsGetIntegerOption(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -4631,7 +4799,7 @@ exceeds the range of values for the &quot;int&quot; type.
 <h3 class="function"><span class="info">&#160;CUPS 1.1.21/macOS 10.4&#160;</span><a id="cupsGetJobs2">cupsGetJobs2</a></h3>
 <p class="description">Get the jobs from the specified server.</p>
 <p class="code">
-int cupsGetJobs2(<a href="#http_t">http_t</a> *http, <a href="#cups_job_t">cups_job_t</a> **jobs, const char *name, int myjobs, int whichjobs);</p>
+<span class="reserved">int</span> cupsGetJobs2(<a href="#http_t">http_t</a> *http, <a href="#cups_job_t">cups_job_t</a> **jobs, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> myjobs, <span class="reserved">int</span> whichjobs);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4657,7 +4825,7 @@ jobs that are stopped, canceled, aborted, or completed.
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsGetNamedDest">cupsGetNamedDest</a></h3>
 <p class="description">Get options for the named destination.</p>
 <p class="code">
-<a href="#cups_dest_t">cups_dest_t</a> *cupsGetNamedDest(<a href="#http_t">http_t</a> *http, const char *name, const char *instance);</p>
+<a href="#cups_dest_t">cups_dest_t</a> *cupsGetNamedDest(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *instance);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4689,7 +4857,7 @@ The returned destination must be freed using <a href="#cupsFreeDests"><code>cups
 <h3 class="function"><a id="cupsGetOption">cupsGetOption</a></h3>
 <p class="description">Get an option value.</p>
 <p class="code">
-const char *cupsGetOption(const char *name, int num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetOption(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -4705,7 +4873,7 @@ const char *cupsGetOption(const char *name, int num_options, <a href="#cups_opti
 <p class="description">Get a password from the user using the current
                        password callback.</p>
 <p class="code">
-const char *cupsGetPassword2(const char *prompt, <a href="#http_t">http_t</a> *http, const char *method, const char *resource);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetPassword2(<span class="reserved">const</span> <span class="reserved">char</span> *prompt, <a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *method, <span class="reserved">const</span> <span class="reserved">char</span> *resource);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>prompt</th>
@@ -4732,7 +4900,7 @@ same function to be used.
 <h3 class="function"><a id="cupsGetRand">cupsGetRand</a></h3>
 <p class="description">Return a 32-bit pseudo-random number.</p>
 <p class="code">
-unsigned cupsGetRand(void);</p>
+<span class="reserved">unsigned</span> cupsGetRand(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Random number</p>
 <h4 class="discussion">Discussion</h4>
@@ -4742,7 +4910,7 @@ using system entropy.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsGetResponse">cupsGetResponse</a></h3>
 <p class="description">Get a response to an IPP request.</p>
 <p class="code">
-<a href="#ipp_t">ipp_t</a> *cupsGetResponse(<a href="#http_t">http_t</a> *http, const char *resource);</p>
+<a href="#ipp_t">ipp_t</a> *cupsGetResponse(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *resource);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -4762,7 +4930,7 @@ otherwise call <a href="#httpFlush"><code>httpFlush</code></a> to complete the r
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsGetServer">cupsGetServer</a></h3>
 <p class="description">Return the hostname/address of the current server.</p>
 <p class="code">
-const char *cupsGetServer(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetServer(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Server name</p>
 <h4 class="discussion">Discussion</h4>
@@ -4783,7 +4951,7 @@ server to be used.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsGetUser">cupsGetUser</a></h3>
 <p class="description">Return the current user's name.</p>
 <p class="code">
-const char *cupsGetUser(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetUser(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">User name</p>
 <h4 class="discussion">Discussion</h4>
@@ -4796,13 +4964,13 @@ name to be used.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsGetUserAgent">cupsGetUserAgent</a></h3>
 <p class="description">Return the default HTTP User-Agent string.</p>
 <p class="code">
-const char *cupsGetUserAgent(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetUserAgent(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">User-Agent string</p>
 <h3 class="function"><a id="cupsHMACData">cupsHMACData</a></h3>
 <p class="description">Perform a HMAC function on the given data.</p>
 <p class="code">
-ssize_t cupsHMACData(const char *algorithm, const unsigned char *key, size_t keylen, const void *data, size_t datalen, unsigned char *hmac, size_t hmacsize);</p>
+ssize_t cupsHMACData(<span class="reserved">const</span> <span class="reserved">char</span> *algorithm, <span class="reserved">const</span> <span class="reserved">unsigned</span> <span class="reserved">char</span> *key, size_t keylen, <span class="reserved">const</span> <span class="reserved">void</span> *data, size_t datalen, <span class="reserved">unsigned</span> <span class="reserved">char</span> *hmac, size_t hmacsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>algorithm</th>
@@ -4835,7 +5003,7 @@ The returned HMAC is binary data.</p>
 <h3 class="function"><a id="cupsHashData">cupsHashData</a></h3>
 <p class="description">Perform a hash function on the given data.</p>
 <p class="code">
-ssize_t cupsHashData(const char *algorithm, const void *data, size_t datalen, unsigned char *hash, size_t hashsize);</p>
+ssize_t cupsHashData(<span class="reserved">const</span> <span class="reserved">char</span> *algorithm, <span class="reserved">const</span> <span class="reserved">void</span> *data, size_t datalen, <span class="reserved">unsigned</span> <span class="reserved">char</span> *hash, size_t hashsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>algorithm</th>
@@ -4864,7 +5032,7 @@ The returned hash is binary data.</p>
 <h3 class="function"><a id="cupsHashString">cupsHashString</a></h3>
 <p class="description">Format a hash value as a hexadecimal string.</p>
 <p class="code">
-const char *cupsHashString(const unsigned char *hash, size_t hashsize, char *buffer, size_t bufsize);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsHashString(<span class="reserved">const</span> <span class="reserved">unsigned</span> <span class="reserved">char</span> *hash, size_t hashsize, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>hash</th>
@@ -4880,10 +5048,30 @@ const char *cupsHashString(const unsigned char *hash, size_t hashsize, char *buf
 <p class="description">Formatted string</p>
 <h4 class="discussion">Discussion</h4>
 <p class="discussion">The passed buffer must be at least 2 * hashsize + 1 characters in length.</p>
+<h3 class="function"><a id="cupsJSONAdd">cupsJSONAdd</a></h3>
+<p class="description">Add a node to a JSON node.</p>
+<p class="code">
+<span class="reserved">void</span> cupsJSONAdd(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, <a href="#cups_json_t">cups_json_t</a> *node);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>parent</th>
+<td class="description">Parent JSON node</td></tr>
+<tr><th>after</th>
+<td class="description">Previous sibling node or <code>NULL</code> to append to the end</td></tr>
+<tr><th>node</th>
+<td class="description">JSON node to add</td></tr>
+</tbody></table>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function adds an existing JSON node as a child of other JSON node.
+The &quot;parent&quot; argument specifies the node to add to.  The &quot;after&quot; argument
+specifies a child of the parent node or <code>NULL</code> to append to the end of the
+children.<br>
+<br>
+Note: The node being added must not already be the child of another parent.</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONDelete">cupsJSONDelete</a></h3>
 <p class="description">Delete a JSON node and all of its children.</p>
 <p class="code">
-void cupsJSONDelete(<a href="#cups_json_t">cups_json_t</a> *json);</p>
+<span class="reserved">void</span> cupsJSONDelete(<a href="#cups_json_t">cups_json_t</a> *json);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>json</th>
@@ -4892,7 +5080,7 @@ void cupsJSONDelete(<a href="#cups_json_t">cups_json_t</a> *json);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONExportFile">cupsJSONExportFile</a></h3>
 <p class="description">Save a JSON node tree to a file.</p>
 <p class="code">
-bool cupsJSONExportFile(<a href="#cups_json_t">cups_json_t</a> *json, const char *filename);</p>
+<span class="reserved">bool</span> cupsJSONExportFile(<a href="#cups_json_t">cups_json_t</a> *json, <span class="reserved">const</span> <span class="reserved">char</span> *filename);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>json</th>
@@ -4905,7 +5093,7 @@ bool cupsJSONExportFile(<a href="#cups_json_t">cups_json_t</a> *json, const char
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONExportString">cupsJSONExportString</a></h3>
 <p class="description">Save a JSON node tree to a string.</p>
 <p class="code">
-char *cupsJSONExportString(<a href="#cups_json_t">cups_json_t</a> *json);</p>
+<span class="reserved">char</span> *cupsJSONExportString(<a href="#cups_json_t">cups_json_t</a> *json);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>json</th>
@@ -4921,7 +5109,7 @@ string must be freed using the <code>free</code> function.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONFind">cupsJSONFind</a></h3>
 <p class="description">Find the value(s) associated with a given key.</p>
 <p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONFind(<a href="#cups_json_t">cups_json_t</a> *json, const char *key);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONFind(<a href="#cups_json_t">cups_json_t</a> *json, <span class="reserved">const</span> <span class="reserved">char</span> *key);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>json</th>
@@ -4958,7 +5146,7 @@ size_t cupsJSONGetCount(<a href="#cups_json_t">cups_json_t</a> *json);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONGetKey">cupsJSONGetKey</a></h3>
 <p class="description">Get the key string, if any.</p>
 <p class="code">
-const char *cupsJSONGetKey(<a href="#cups_json_t">cups_json_t</a> *json);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsJSONGetKey(<a href="#cups_json_t">cups_json_t</a> *json);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>json</th>
@@ -4974,7 +5162,7 @@ the node is not a key.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONGetNumber">cupsJSONGetNumber</a></h3>
 <p class="description">Get the number value, if any.</p>
 <p class="code">
-double cupsJSONGetNumber(<a href="#cups_json_t">cups_json_t</a> *json);</p>
+<span class="reserved">double</span> cupsJSONGetNumber(<a href="#cups_json_t">cups_json_t</a> *json);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>json</th>
@@ -5012,7 +5200,7 @@ the node is not a number.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONGetString">cupsJSONGetString</a></h3>
 <p class="description">Get the string value, if any.</p>
 <p class="code">
-const char *cupsJSONGetString(<a href="#cups_json_t">cups_json_t</a> *json);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsJSONGetString(<a href="#cups_json_t">cups_json_t</a> *json);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>json</th>
@@ -5039,7 +5227,7 @@ the node is not a string.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONImportFile">cupsJSONImportFile</a></h3>
 <p class="description">Load a JSON object file.</p>
 <p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportFile(const char *filename);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportFile(<span class="reserved">const</span> <span class="reserved">char</span> *filename);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>filename</th>
@@ -5050,7 +5238,7 @@ the node is not a string.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONImportString">cupsJSONImportString</a></h3>
 <p class="description">Load a JSON object from a string.</p>
 <p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportString(const char *s);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportString(<span class="reserved">const</span> <span class="reserved">char</span> *s);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>s</th>
@@ -5061,7 +5249,7 @@ the node is not a string.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONImportURL">cupsJSONImportURL</a></h3>
 <p class="description">Load a JSON object from a URL.</p>
 <p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportURL(const char *url, time_t *last_modified);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportURL(<span class="reserved">const</span> <span class="reserved">char</span> *url, time_t *last_modified);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>url</th>
@@ -5104,7 +5292,7 @@ or a suitable <code>IPP_STATUS_ERROR_</code> value if an error occurred.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONNewKey">cupsJSONNewKey</a></h3>
 <p class="description">Create a new JSON key node.</p>
 <p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewKey(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, const char *value);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewKey(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>parent</th>
@@ -5119,7 +5307,7 @@ or a suitable <code>IPP_STATUS_ERROR_</code> value if an error occurred.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONNewNumber">cupsJSONNewNumber</a></h3>
 <p class="description">Create a new JSON number node.</p>
 <p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewNumber(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, double value);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewNumber(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, <span class="reserved">double</span> value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>parent</th>
@@ -5134,7 +5322,7 @@ or a suitable <code>IPP_STATUS_ERROR_</code> value if an error occurred.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJSONNewString">cupsJSONNewString</a></h3>
 <p class="description">Create a new JSON string node.</p>
 <p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewString(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, const char *value);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewString(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>parent</th>
@@ -5149,7 +5337,7 @@ or a suitable <code>IPP_STATUS_ERROR_</code> value if an error occurred.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTDelete">cupsJWTDelete</a></h3>
 <p class="description">Free the memory used for a JSON Web Token.</p>
 <p class="code">
-void cupsJWTDelete(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt);</p>
+<span class="reserved">void</span> cupsJWTDelete(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5158,7 +5346,7 @@ void cupsJWTDelete(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTExportString">cupsJWTExportString</a></h3>
 <p class="description">Export a JWT with the JWS Compact or JWS JSON (Flattened) Serialization format.</p>
 <p class="code">
-char *cupsJWTExportString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_jws_format_t">cups_jws_format_t</a> format);</p>
+<span class="reserved">char</span> *cupsJWTExportString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_jws_format_t">cups_jws_format_t</a> format);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5190,7 +5378,7 @@ The return value must be freed using the <code>free</code> function.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTGetClaimNumber">cupsJWTGetClaimNumber</a></h3>
 <p class="description">Get the number value of a claim.</p>
 <p class="code">
-double cupsJWTGetClaimNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim);</p>
+<span class="reserved">double</span> cupsJWTGetClaimNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5203,7 +5391,7 @@ double cupsJWTGetClaimNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const ch
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTGetClaimString">cupsJWTGetClaimString</a></h3>
 <p class="description">Get the string value of a claim.</p>
 <p class="code">
-const char *cupsJWTGetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsJWTGetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5216,7 +5404,7 @@ const char *cupsJWTGetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, con
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTGetClaimType">cupsJWTGetClaimType</a></h3>
 <p class="description">Get the value type of a claim.</p>
 <p class="code">
-<a href="#cups_jtype_t">cups_jtype_t</a> cupsJWTGetClaimType(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim);</p>
+<a href="#cups_jtype_t">cups_jtype_t</a> cupsJWTGetClaimType(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5229,7 +5417,7 @@ const char *cupsJWTGetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, con
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTGetClaimValue">cupsJWTGetClaimValue</a></h3>
 <p class="description">Get the value node of a claim.</p>
 <p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJWTGetClaimValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJWTGetClaimValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5253,7 +5441,7 @@ const char *cupsJWTGetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, con
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTGetHeaderNumber">cupsJWTGetHeaderNumber</a></h3>
 <p class="description">Get the number value of a protected header.</p>
 <p class="code">
-double cupsJWTGetHeaderNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header);</p>
+<span class="reserved">double</span> cupsJWTGetHeaderNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5266,7 +5454,7 @@ double cupsJWTGetHeaderNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const c
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTGetHeaderString">cupsJWTGetHeaderString</a></h3>
 <p class="description">Get the string value of a protected header.</p>
 <p class="code">
-const char *cupsJWTGetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsJWTGetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5279,7 +5467,7 @@ const char *cupsJWTGetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, co
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTGetHeaderType">cupsJWTGetHeaderType</a></h3>
 <p class="description">Get the value type of a protected header.</p>
 <p class="code">
-<a href="#cups_jtype_t">cups_jtype_t</a> cupsJWTGetHeaderType(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header);</p>
+<a href="#cups_jtype_t">cups_jtype_t</a> cupsJWTGetHeaderType(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5292,7 +5480,7 @@ const char *cupsJWTGetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, co
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTGetHeaderValue">cupsJWTGetHeaderValue</a></h3>
 <p class="description">Get the value node of a protected header.</p>
 <p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJWTGetHeaderValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJWTGetHeaderValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5316,7 +5504,7 @@ const char *cupsJWTGetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, co
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTHasValidSignature">cupsJWTHasValidSignature</a></h3>
 <p class="description">Determine whether the JWT has a valid signature.</p>
 <p class="code">
-bool cupsJWTHasValidSignature(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_json_t">cups_json_t</a> *jwk);</p>
+<span class="reserved">bool</span> cupsJWTHasValidSignature(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_json_t">cups_json_t</a> *jwk);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5329,7 +5517,7 @@ bool cupsJWTHasValidSignature(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTImportString">cupsJWTImportString</a></h3>
 <p class="description">Import a JSON Web Token or JSON Web Signature.</p>
 <p class="code">
-<a href="#cups_jwt_t">cups_jwt_t</a> *cupsJWTImportString(const char *s, <a href="#cups_jws_format_t">cups_jws_format_t</a> format);</p>
+<a href="#cups_jwt_t">cups_jwt_t</a> *cupsJWTImportString(<span class="reserved">const</span> <span class="reserved">char</span> *s, <a href="#cups_jws_format_t">cups_jws_format_t</a> format);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>s</th>
@@ -5376,7 +5564,7 @@ JWK suitable for use when decrypting or verifying a JWE/JWS message.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTNew">cupsJWTNew</a></h3>
 <p class="description">Create a new, empty JSON Web Token.</p>
 <p class="code">
-<a href="#cups_jwt_t">cups_jwt_t</a> *cupsJWTNew(const char *type);</p>
+<a href="#cups_jwt_t">cups_jwt_t</a> *cupsJWTNew(<span class="reserved">const</span> <span class="reserved">char</span> *type);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>type</th>
@@ -5387,7 +5575,7 @@ JWK suitable for use when decrypting or verifying a JWE/JWS message.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTSetClaimNumber">cupsJWTSetClaimNumber</a></h3>
 <p class="description">Set a claim number.</p>
 <p class="code">
-void cupsJWTSetClaimNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim, double value);</p>
+<span class="reserved">void</span> cupsJWTSetClaimNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim, <span class="reserved">double</span> value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5400,7 +5588,7 @@ void cupsJWTSetClaimNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTSetClaimString">cupsJWTSetClaimString</a></h3>
 <p class="description">Set a claim string.</p>
 <p class="code">
-void cupsJWTSetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim, const char *value);</p>
+<span class="reserved">void</span> cupsJWTSetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5413,7 +5601,7 @@ void cupsJWTSetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTSetClaimValue">cupsJWTSetClaimValue</a></h3>
 <p class="description">Set a claim value.</p>
 <p class="code">
-void cupsJWTSetClaimValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim, <a href="#cups_json_t">cups_json_t</a> *value);</p>
+<span class="reserved">void</span> cupsJWTSetClaimValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim, <a href="#cups_json_t">cups_json_t</a> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5426,7 +5614,7 @@ void cupsJWTSetClaimValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTSetHeaderNumber">cupsJWTSetHeaderNumber</a></h3>
 <p class="description">Set a protected header number.</p>
 <p class="code">
-void cupsJWTSetHeaderNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header, double value);</p>
+<span class="reserved">void</span> cupsJWTSetHeaderNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header, <span class="reserved">double</span> value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5439,7 +5627,7 @@ void cupsJWTSetHeaderNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const cha
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTSetHeaderString">cupsJWTSetHeaderString</a></h3>
 <p class="description">Set a protected header string.</p>
 <p class="code">
-void cupsJWTSetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header, const char *value);</p>
+<span class="reserved">void</span> cupsJWTSetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5452,7 +5640,7 @@ void cupsJWTSetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const cha
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTSetHeaderValue">cupsJWTSetHeaderValue</a></h3>
 <p class="description">Set a protected header value.</p>
 <p class="code">
-void cupsJWTSetHeaderValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header, <a href="#cups_json_t">cups_json_t</a> *value);</p>
+<span class="reserved">void</span> cupsJWTSetHeaderValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header, <a href="#cups_json_t">cups_json_t</a> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5465,7 +5653,7 @@ void cupsJWTSetHeaderValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsJWTSign">cupsJWTSign</a></h3>
 <p class="description">Sign a JSON Web Token, creating a JSON Web Signature.</p>
 <p class="code">
-bool cupsJWTSign(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_jwa_t">cups_jwa_t</a> alg, <a href="#cups_json_t">cups_json_t</a> *jwk);</p>
+<span class="reserved">bool</span> cupsJWTSign(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_jwa_t">cups_jwa_t</a> alg, <a href="#cups_json_t">cups_json_t</a> *jwk);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>jwt</th>
@@ -5480,14 +5668,14 @@ bool cupsJWTSign(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_jwa_t
 <h3 class="function"><a id="cupsLangDefault">cupsLangDefault</a></h3>
 <p class="description">Return the default language.</p>
 <p class="code">
-<a href="#cups_lang_t">cups_lang_t</a> *cupsLangDefault(void);</p>
+<a href="#cups_lang_t">cups_lang_t</a> *cupsLangDefault(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Language data</p>
 <h3 class="function"><a id="cupsLangEncoding">cupsLangEncoding</a></h3>
 <p class="description">Return the character encoding (us-ascii, etc.)
                        for the given language.</p>
 <p class="code">
-const char *cupsLangEncoding(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLangEncoding(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>lang</th>
@@ -5498,11 +5686,11 @@ const char *cupsLangEncoding(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
 <h3 class="function"><a id="cupsLangFlush">cupsLangFlush</a></h3>
 <p class="description">Flush all language data out of the cache.</p>
 <p class="code">
-void cupsLangFlush(void);</p>
+<span class="reserved">void</span> cupsLangFlush(<span class="reserved">void</span>);</p>
 <h3 class="function"><a id="cupsLangFree">cupsLangFree</a></h3>
 <p class="description">Free language data.</p>
 <p class="code">
-void cupsLangFree(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
+<span class="reserved">void</span> cupsLangFree(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>lang</th>
@@ -5513,7 +5701,7 @@ void cupsLangFree(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
 <h3 class="function"><a id="cupsLangGet">cupsLangGet</a></h3>
 <p class="description">Get a language.</p>
 <p class="code">
-<a href="#cups_lang_t">cups_lang_t</a> *cupsLangGet(const char *language);</p>
+<a href="#cups_lang_t">cups_lang_t</a> *cupsLangGet(<span class="reserved">const</span> <span class="reserved">char</span> *language);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>language</th>
@@ -5524,20 +5712,20 @@ void cupsLangFree(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsLastError">cupsLastError</a></h3>
 <p class="description">Return the last IPP status code received on the current thread.</p>
 <p class="code">
-ipp_status_t cupsLastError(void);</p>
+ipp_status_t cupsLastError(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">IPP status code from last request</p>
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsLastErrorString">cupsLastErrorString</a></h3>
 <p class="description">Return the last IPP status-message received on the current thread.</p>
 <p class="code">
-const char *cupsLastErrorString(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLastErrorString(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">status-message text from last request</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.0/macOS 10.10&#160;</span><a id="cupsLocalizeDestMedia">cupsLocalizeDestMedia</a></h3>
 <p class="description">Get the localized string for a destination media
                             size.</p>
 <p class="code">
-const char *cupsLocalizeDestMedia(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLocalizeDestMedia(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -5554,7 +5742,37 @@ const char *cupsLocalizeDestMedia(<a href="#http_t">http_t</a> *http, <a href="#
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Localized string</p>
 <h4 class="discussion">Discussion</h4>
-<p class="discussion">The returned string is stored in the destination information and will become
+<p class="discussion">This function returns the localized string for the specified media size
+information.<br>
+<br>
+The returned string is stored in the destination information and will become
+invalid if the destination information is deleted.
+
+</p>
+<h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsLocalizeDestMedia2">cupsLocalizeDestMedia2</a></h3>
+<p class="description">Get the localized string for a destination media.</p>
+<p class="code">
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLocalizeDestMedia2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>http</th>
+<td class="description">Connection to destination</td></tr>
+<tr><th>dest</th>
+<td class="description">Destination</td></tr>
+<tr><th>dinfo</th>
+<td class="description">Destination information</td></tr>
+<tr><th>flags</th>
+<td class="description">Media flags</td></tr>
+<tr><th>media</th>
+<td class="description">Media</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Localized string</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns the localized string for the specified media
+information.<br>
+<br>
+The returned string is stored in the destination information and will become
 invalid if the destination information is deleted.
 
 </p>
@@ -5562,7 +5780,7 @@ invalid if the destination information is deleted.
 <p class="description">Get the localized string for a destination
                              option.</p>
 <p class="code">
-const char *cupsLocalizeDestOption(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLocalizeDestOption(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -5585,7 +5803,7 @@ invalid if the destination information is deleted.
 <p class="description">Get the localized string for a destination
                             option+value pair.</p>
 <p class="code">
-const char *cupsLocalizeDestValue(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option, const char *value);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLocalizeDestValue(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -5609,7 +5827,7 @@ invalid if the destination information is deleted.
 <h3 class="function"><a id="cupsMutexDestroy">cupsMutexDestroy</a></h3>
 <p class="description">Destroy a mutex.</p>
 <p class="code">
-void cupsMutexDestroy(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
+<span class="reserved">void</span> cupsMutexDestroy(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>mutex</th>
@@ -5618,7 +5836,7 @@ void cupsMutexDestroy(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
 <h3 class="function"><a id="cupsMutexInit">cupsMutexInit</a></h3>
 <p class="description">Initialize a mutex.</p>
 <p class="code">
-void cupsMutexInit(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
+<span class="reserved">void</span> cupsMutexInit(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>mutex</th>
@@ -5627,7 +5845,7 @@ void cupsMutexInit(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
 <h3 class="function"><a id="cupsMutexLock">cupsMutexLock</a></h3>
 <p class="description">Lock a mutex.</p>
 <p class="code">
-void cupsMutexLock(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
+<span class="reserved">void</span> cupsMutexLock(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>mutex</th>
@@ -5636,7 +5854,7 @@ void cupsMutexLock(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
 <h3 class="function"><a id="cupsMutexUnlock">cupsMutexUnlock</a></h3>
 <p class="description">Unlock a mutex.</p>
 <p class="code">
-void cupsMutexUnlock(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
+<span class="reserved">void</span> cupsMutexUnlock(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>mutex</th>
@@ -5645,7 +5863,7 @@ void cupsMutexUnlock(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsNotifySubject">cupsNotifySubject</a></h3>
 <p class="description">Return the subject for the given notification message.</p>
 <p class="code">
-char *cupsNotifySubject(<a href="#cups_lang_t">cups_lang_t</a> *lang, <a href="#ipp_t">ipp_t</a> *event);</p>
+<span class="reserved">char</span> *cupsNotifySubject(<a href="#cups_lang_t">cups_lang_t</a> *lang, <a href="#ipp_t">ipp_t</a> *event);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>lang</th>
@@ -5662,7 +5880,7 @@ char *cupsNotifySubject(<a href="#cups_lang_t">cups_lang_t</a> *lang, <a href="#
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsNotifyText">cupsNotifyText</a></h3>
 <p class="description">Return the text for the given notification message.</p>
 <p class="code">
-char *cupsNotifyText(<a href="#cups_lang_t">cups_lang_t</a> *lang, <a href="#ipp_t">ipp_t</a> *event);</p>
+<span class="reserved">char</span> *cupsNotifyText(<a href="#cups_lang_t">cups_lang_t</a> *lang, <a href="#ipp_t">ipp_t</a> *event);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>lang</th>
@@ -5676,10 +5894,388 @@ char *cupsNotifyText(<a href="#cups_lang_t">cups_lang_t</a> *lang, <a href="#ipp
 <p class="discussion">The returned string must be freed by the caller using <code>free</code>.
 
 </p>
+<h3 class="function"><a id="cupsOAuthClearTokens">cupsOAuthClearTokens</a></h3>
+<p class="description">Clear any cached authorization information.</p>
+<p class="code">
+<span class="reserved">void</span> cupsOAuthClearTokens(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization server URI</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource server URI</td></tr>
+</tbody></table>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function clears cached authorization information for the given
+Authorization Server &quot;auth_uri&quot; and Resource &quot;resource_uri&quot; combination.</p>
+<h3 class="function"><a id="cupsOAuthCopyAccessToken">cupsOAuthCopyAccessToken</a></h3>
+<p class="description">Get a cached access token.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthCopyAccessToken(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri, time_t *access_expires);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+<tr><th>access_expires</th>
+<td class="description">Access expiration time or <code>NULL</code> for don't care</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Access token</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function makes a copy of a cached access token and any
+associated expiration time for the given Authorization Server &quot;auth_uri&quot; and
+Resource &quot;resource_uri&quot; combination.  The returned access token must be freed
+using the <code>free</code> function.<br>
+<br>
+<code>NULL</code> is returned if no token is cached.</p>
+<h3 class="function"><a id="cupsOAuthCopyClientId">cupsOAuthCopyClientId</a></h3>
+<p class="description">Get the cached <code>client_id</code> value.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthCopyClientId(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirection URI</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description"><code>client_id</code> value</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function makes a copy of the cached <code>client_id</code> value for a given
+Authorization Server &quot;auth_uri&quot; and Redirection URI &quot;resource_uri&quot;. The
+returned value must be freed using the <code>free</code> function.<br>
+<br>
+<code>NULL</code> is returned if no <code>client_id</code> is cached.</p>
+<h3 class="function"><a id="cupsOAuthCopyRefreshToken">cupsOAuthCopyRefreshToken</a></h3>
+<p class="description">Get a cached refresh token.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthCopyRefreshToken(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Refresh token</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function makes a copy of a cached refresh token for the given
+given Authorization Server &quot;auth_uri&quot; and Resource &quot;resource_uri&quot;
+combination.  The returned refresh token must be freed using the <code>free</code>
+function.<br>
+<br>
+<code>NULL</code> is returned if no refresh token is cached.</p>
+<h3 class="function"><a id="cupsOAuthCopyUserId">cupsOAuthCopyUserId</a></h3>
+<p class="description">Get cached user identification information.</p>
+<p class="code">
+<a href="#cups_jwt_t">cups_jwt_t</a> *cupsOAuthCopyUserId(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Identification information</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function makes a copy of cached user identification information for the
+given Authorization Server &quot;auth_uri&quot; and Resource &quot;resource_uri&quot;
+combination. The returned user information must be freed using the
+<a href="#cupsJWTDelete"><code>cupsJWTDelete</code></a> function.<br>
+<br>
+<code>NULL</code> is returned if no identification information is cached.</p>
+<h3 class="function"><a id="cupsOAuthGetAuthorizationCode">cupsOAuthGetAuthorizationCode</a></h3>
+<p class="description">Authorize access using a web browser.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthGetAuthorizationCode(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <a href="#cups_json_t">cups_json_t</a> *metadata, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri, <span class="reserved">const</span> <span class="reserved">char</span> *scopes, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>metadata</th>
+<td class="description">Authorization Server metadata</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+<tr><th>scopes</th>
+<td class="description">Space-delimited scopes</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirect URI or <code>NULL</code> for default</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Authorization code or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function performs a local/&quot;native&quot; OAuth authorization flow to obtain an
+authorization code for use with the <a href="#cupsOAuthGetTokens"><code>cupsOAuthGetTokens</code></a> function.<br>
+<br>
+The &quot;auth_uri&quot; parameter specifies the URI for the OAuth Authorization
+Server.  The &quot;metadata&quot; parameter specifies the Authorization Server metadata
+as obtained using <a href="#cupsOAuthCopyMetadata"><code>cupsOAuthCopyMetadata</code></a> and/or
+<a href="#cupsOAuthGetMetadata"><code>cupsOAuthGetMetadata</code></a>.<br>
+<br>
+The &quot;resource_uri&quot; parameter specifies the URI for a resource (printer, web
+file, etc.) that you which to access.<br>
+<br>
+The &quot;scopes&quot; parameter specifies zero or more whitespace-delimited scope
+names to request during authorization.  The list of supported scope names are
+available from the Authorization Server metadata, for example:<br>
+<br>
+The &quot;redirect_uri&quot; parameter specifies a 'http:' URL with a listen address,
+port, and path to use.  If <code>NULL</code>, 127.0.0.1 on a random port is used with a
+path of &quot;/&quot;.
+
+<pre>
+cups_json_t *metadata = cupsOAuthGetMetadata(auth_uri);
+cups_json_t *scopes_supported = cupsJSONFind(metadata, &quot;scopes_supported&quot;);
+</pre>
+
+The returned authorization code must be freed using the <code>free</code> function.</p>
+<h3 class="function"><a id="cupsOAuthGetClientId">cupsOAuthGetClientId</a></h3>
+<p class="description">Register a client application and get its ID.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthGetClientId(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <a href="#cups_json_t">cups_json_t</a> *metadata, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri, <span class="reserved">const</span> <span class="reserved">char</span> *logo_uri, <span class="reserved">const</span> <span class="reserved">char</span> *tos_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>metadata</th>
+<td class="description">Authorization Server metadata</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirection URL</td></tr>
+<tr><th>logo_uri</th>
+<td class="description">Logo URL or <code>NULL</code> for none</td></tr>
+<tr><th>tos_uri</th>
+<td class="description">Terms-of-service URL or <code>NULL</code> for none</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description"><code>client_id</code> string or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function registers a client application with the specified OAuth
+Authorization Server.<br>
+<br>
+The &quot;auth_uri&quot; parameter specifies the URI for the OAuth Authorization
+Server. The &quot;metadata&quot; parameter specifies the Authorization Server metadata
+as obtained using <a href="#cupsOAuthCopyMetadata"><code>cupsOAuthCopyMetadata</code></a> and/or
+<a href="#cupsOAuthGetMetadata"><code>cupsOAuthGetMetadata</code></a>.<br>
+<br>
+The &quot;redirect_uri&quot; argument specifies the URL to use for providing
+authorization results to a WWW application.<br>
+<br>
+The &quot;logo_uri&quot; argument specifies a public URL for the logo of your
+application, while the &quot;tos_uri&quot; specifies a public URL for the terms of
+service for your application.<br>
+<br>
+The returned &quot;client_id&quot; string must be freed using the <code>free</code> function.<br>
+<br>
+<em>Note</em>: This function should only be used to register WWW applications. The
+<a href="#cupsOAuthGetAuthorizationCode"><code>cupsOAuthGetAuthorizationCode</code></a> function handles registration of
+local/&quot;native&quot; applications for you.</p>
+<h3 class="function"><a id="cupsOAuthGetMetadata">cupsOAuthGetMetadata</a></h3>
+<p class="description">Get the metadata for an Authorization Server.</p>
+<p class="code">
+<a href="#cups_json_t">cups_json_t</a> *cupsOAuthGetMetadata(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">JSON metadata or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function gets the metadata for the specified Authorization Server URI
+&quot;auth_uri&quot;. Metadata is cached per-user for better performance.<br>
+<br>
+The returned metadata must be freed using the <a href="#cupsJSONDelete"><code>cupsJSONDelete</code></a> function.</p>
+<h3 class="function"><a id="cupsOAuthGetTokens">cupsOAuthGetTokens</a></h3>
+<p class="description">Obtain access and refresh tokens.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthGetTokens(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <a href="#cups_json_t">cups_json_t</a> *metadata, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri, <span class="reserved">const</span> <span class="reserved">char</span> *grant_code, <a href="#cups_ogrant_t">cups_ogrant_t</a> grant_type, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri, time_t *access_expires);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>metadata</th>
+<td class="description">Authorization Server metadata</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+<tr><th>grant_code</th>
+<td class="description">Authorization code or refresh token</td></tr>
+<tr><th>grant_type</th>
+<td class="description">Grant code type</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirect URI</td></tr>
+<tr><th>access_expires</th>
+<td class="description">Expiration time for access token</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Access token or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function obtains a access and refresh tokens from an OAuth Authorization
+Server. OpenID Authorization Servers also provide user identification
+information.<br>
+<br>
+The &quot;auth_uri&quot; parameter specifies the URI for the OAuth Authorization
+Server.  The &quot;metadata&quot; parameter specifies the Authorization Server metadata
+as obtained using <a href="#cupsOAuthCopyMetadata"><code>cupsOAuthCopyMetadata</code></a> and/or
+<a href="#cupsOAuthGetMetadata"><code>cupsOAuthGetMetadata</code></a>.<br>
+<br>
+The &quot;resource_uri&quot; parameter specifies the URI for a resource (printer, web
+file, etc.) that you which to access.<br>
+<br>
+The &quot;grant_code&quot; parameter specifies the code or token to use while the
+&quot;grant_type&quot; parameter specifies the type of code:
+
+</p><ul>
+<li><code>CUPS_OGRANT_AUTHORIZATION_CODE</code>: A user authorization grant code.
+</li>
+<li><code>CUPS_OGRANT_DEVICE_CODE</code>: A device authorization grant code.
+</li>
+<li><code>CUPS_OGRANT_REFRESH_TOKEN</code>: A refresh token.</li>
+</ul>
+<p class="discussion">The &quot;redirect_uri&quot; specifies the redirection URI used to obtain the code. The
+constant <code>CUPS_OAUTH_REDIRECT_URI</code> should be used for codes obtained using
+the <a href="#cupsOAuthGetAuthorizationCode"><code>cupsOAuthGetAuthorizationCode</code></a> function.<br>
+<br>
+When successful, the access token and expiration time are returned. The
+access token must be freed using the <code>free</code> function. The new refresh token
+and any user ID information can be obtained using the
+<a href="#cupsOAuthCopyRefreshToken"><code>cupsOAuthCopyRefreshToken</code></a> and <a href="#cupsOAuthCopyUserId"><code>cupsOAuthCopyUserId</code></a> functions
+respectively.</p>
+<h3 class="function"><a id="cupsOAuthMakeAuthorizationURL">cupsOAuthMakeAuthorizationURL</a></h3>
+<p class="description">Make an authorization URL.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthMakeAuthorizationURL(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <a href="#cups_json_t">cups_json_t</a> *metadata, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri, <span class="reserved">const</span> <span class="reserved">char</span> *scopes, <span class="reserved">const</span> <span class="reserved">char</span> *client_id, <span class="reserved">const</span> <span class="reserved">char</span> *code_verifier, <span class="reserved">const</span> <span class="reserved">char</span> *nonce, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri, <span class="reserved">const</span> <span class="reserved">char</span> *state);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>metadata</th>
+<td class="description">Authorization Server metadata</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+<tr><th>scopes</th>
+<td class="description">Space-delimited scope(s)</td></tr>
+<tr><th>client_id</th>
+<td class="description">Client ID</td></tr>
+<tr><th>code_verifier</th>
+<td class="description">Code verifier string</td></tr>
+<tr><th>nonce</th>
+<td class="description">Nonce</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirection URI</td></tr>
+<tr><th>state</th>
+<td class="description">State</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Authorization URL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function makes an authorization URL for the specified authorization
+server and resource.<br>
+<br>
+The &quot;auth_uri&quot; parameter specifies the URI for the OAuth Authorization
+Server.  The &quot;metadata&quot; parameter specifies the Authorization Server metadata
+as obtained using <a href="#cupsOAuthCopyMetadata"><code>cupsOAuthCopyMetadata</code></a> and/or
+<a href="#cupsOAuthGetMetadata"><code>cupsOAuthGetMetadata</code></a>.<br>
+<br>
+The &quot;resource_uri&quot; parameter specifies the URI for a resource (printer, web
+file, etc.) that you which to access.<br>
+<br>
+The &quot;scopes&quot; parameter specifies zero or more whitespace-delimited scope
+names to request during authorization.  The list of supported scope names are
+available from the Authorization Server metadata, for example:
+
+<pre>
+cups_json_t *metadata = cupsOAuthGetMetadata(auth_uri);
+cups_json_t *scopes_supported = cupsJSONFind(metadata, &quot;scopes_supported&quot;);
+</pre>
+
+The &quot;client_id&quot; parameter specifies the client identifier obtained using
+<a href="#cupsOAuthCopyClientId"><code>cupsOAuthCopyClientId</code></a> and/or <a href="#cupsOAuthGetClientId"><code>cupsOAuthGetClientId</code></a>.<br>
+<br>
+The &quot;client_id&quot; parameter is the string returned by
+<a href="#cupsOAuthCopyClientId"><code>cupsOAuthCopyClientId</code></a> or <a href="#cupsOAuthGetClientId"><code>cupsOAuthGetClientId</code></a>.<br>
+<br>
+The &quot;code_verifier&quot; parameter specifies a random Base64URL-encoded string
+that is used by the Proof Key for Code Exchange [RFC7636] extension to help
+secure the authorization flow.  The <a href="#cupsOAuthMakeBase64Random"><code>cupsOAuthMakeBase64Random</code></a> function
+can be used to generate this string.<br>
+<br>
+The &quot;nonce&quot; parameter specifies a random Base64URL-encoded string that is
+used by OpenID to validate the ID token. The <a href="#cupsOAuthMakeBase64Random"><code>cupsOAuthMakeBase64Random</code></a>
+function can be used to generate this string.<br>
+<br>
+The &quot;redirect_uri&quot; parameter specifies the URI that will receive the
+authorization grant code.<br>
+<br>
+The &quot;state&quot; parameter is a unique (random) identifier for the authorization
+request.  It is provided to the redirection URI as a form parameter.</p>
+<h3 class="function"><a id="cupsOAuthMakeBase64Random">cupsOAuthMakeBase64Random</a></h3>
+<p class="description">Make a random data string.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthMakeBase64Random(size_t len);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>len</th>
+<td class="description">Number of bytes</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Random string</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function creates a string containing random data that has been Base64URL
+encoded. &quot;len&quot; specifies the number of random bytes to include in the string.
+The returned string must be freed using the <code>free</code> function.</p>
+<h3 class="function"><a id="cupsOAuthSaveClientData">cupsOAuthSaveClientData</a></h3>
+<p class="description">Save client_id and client_secret values.</p>
+<p class="code">
+<span class="reserved">void</span> cupsOAuthSaveClientData(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri, <span class="reserved">const</span> <span class="reserved">char</span> *client_id, <span class="reserved">const</span> <span class="reserved">char</span> *client_secret);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirection URI</td></tr>
+<tr><th>client_id</th>
+<td class="description">client_id or <code>NULL</code> to delete</td></tr>
+<tr><th>client_secret</th>
+<td class="description">client_secret value or <code>NULL</code> for none</td></tr>
+</tbody></table>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function saves the &quot;client_id&quot; and &quot;client_secret&quot; values for the given
+Authorization Server &quot;auth_uri&quot; and redirection URI &quot;redirect_uri&quot;. If the
+&quot;client_id&quot; is <code>NULL</code> then any saved values are deleted from the per-user
+store.</p>
+<h3 class="function"><a id="cupsOAuthSaveTokens">cupsOAuthSaveTokens</a></h3>
+<p class="description">Save authorization and refresh tokens.</p>
+<p class="code">
+<span class="reserved">void</span> cupsOAuthSaveTokens(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri, <span class="reserved">const</span> <span class="reserved">char</span> *access_token, time_t access_expires, <span class="reserved">const</span> <span class="reserved">char</span> *user_id, <span class="reserved">const</span> <span class="reserved">char</span> *refresh_token);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+<tr><th>access_token</th>
+<td class="description">Access token or <code>NULL</code> to delete</td></tr>
+<tr><th>access_expires</th>
+<td class="description">Access expiration time</td></tr>
+<tr><th>user_id</th>
+<td class="description">User ID or <code>NULL</code> to delete</td></tr>
+<tr><th>refresh_token</th>
+<td class="description">Refresh token or <code>NULL</code> to delete</td></tr>
+</tbody></table>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function saves the access token &quot;access_token&quot;, user ID &quot;user_id&quot;, and
+refresh token &quot;refresh_token&quot; values for the given Authorization Server
+&quot;auth_uri&quot; and resource &quot;resource_uri&quot;. Specifying <code>NULL</code> for any of the
+values will delete the corresponding saved values from the per-user store.</p>
 <h3 class="function"><a id="cupsParseOptions">cupsParseOptions</a></h3>
 <p class="description">Parse options from a command-line argument.</p>
 <p class="code">
-int cupsParseOptions(const char *arg, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsParseOptions(<span class="reserved">const</span> <span class="reserved">char</span> *arg, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>arg</th>
@@ -5697,10 +6293,38 @@ to the PAPI text option ABNF specification. Collection values
 (&quot;name={a=... b=... c=...}&quot;) are stored with the curley brackets
 intact - use <code>cupsParseOptions</code> on the value to extract the
 collection attributes.</p>
+<h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsParseOptions2">cupsParseOptions2</a></h3>
+<p class="description">Parse options from a command-line argument.</p>
+<p class="code">
+<span class="reserved">int</span> cupsParseOptions2(<span class="reserved">const</span> <span class="reserved">char</span> *arg, <span class="reserved">const</span> <span class="reserved">char</span> **end, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>arg</th>
+<td class="description">Argument to parse</td></tr>
+<tr><th>end</th>
+<td class="description">Pointer to end of options or <code>NULL</code> for &quot;don't care&quot;</td></tr>
+<tr><th>num_options</th>
+<td class="description">Number of options</td></tr>
+<tr><th>options</th>
+<td class="description">Options found</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of options found</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function converts space-delimited name/value pairs according
+to the PAPI text option ABNF specification. Collection values
+(&quot;name={a=... b=... c=...}&quot;) are stored with the curley brackets
+intact - use <code>cupsParseOptions</code> on the value to extract the
+collection attributes.<br>
+<br>
+The &quot;end&quot; argument, if not <code>NULL</code>, receives a pointer to the end of the
+options.
+
+</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.20/macOS 10.4&#160;</span><a id="cupsPutFd">cupsPutFd</a></h3>
 <p class="description">Put a file on the server.</p>
 <p class="code">
-http_status_t cupsPutFd(<a href="#http_t">http_t</a> *http, const char *resource, int fd);</p>
+http_status_t cupsPutFd(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">int</span> fd);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -5720,7 +6344,7 @@ successfully.
 <h3 class="function"><span class="info">&#160;CUPS 1.1.20/macOS 10.4&#160;</span><a id="cupsPutFile">cupsPutFile</a></h3>
 <p class="description">Put a file on the server.</p>
 <p class="code">
-http_status_t cupsPutFile(<a href="#http_t">http_t</a> *http, const char *resource, const char *filename);</p>
+http_status_t cupsPutFile(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">const</span> <span class="reserved">char</span> *filename);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -5740,7 +6364,7 @@ successfully.
 <h3 class="function"><a id="cupsRWDestroy">cupsRWDestroy</a></h3>
 <p class="description">Destroy a reader/writer lock.</p>
 <p class="code">
-void cupsRWDestroy(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
+<span class="reserved">void</span> cupsRWDestroy(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>rwlock</th>
@@ -5749,7 +6373,7 @@ void cupsRWDestroy(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
 <h3 class="function"><a id="cupsRWInit">cupsRWInit</a></h3>
 <p class="description">Initialize a reader/writer lock.</p>
 <p class="code">
-void cupsRWInit(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
+<span class="reserved">void</span> cupsRWInit(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>rwlock</th>
@@ -5758,7 +6382,7 @@ void cupsRWInit(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
 <h3 class="function"><a id="cupsRWLockRead">cupsRWLockRead</a></h3>
 <p class="description">Acquire a reader/writer lock for reading.</p>
 <p class="code">
-void cupsRWLockRead(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
+<span class="reserved">void</span> cupsRWLockRead(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>rwlock</th>
@@ -5767,7 +6391,7 @@ void cupsRWLockRead(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
 <h3 class="function"><a id="cupsRWLockWrite">cupsRWLockWrite</a></h3>
 <p class="description">Acquire a reader/writer lock for writing.</p>
 <p class="code">
-void cupsRWLockWrite(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
+<span class="reserved">void</span> cupsRWLockWrite(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>rwlock</th>
@@ -5776,7 +6400,7 @@ void cupsRWLockWrite(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
 <h3 class="function"><a id="cupsRWUnlock">cupsRWUnlock</a></h3>
 <p class="description">Release a reader/writer lock.</p>
 <p class="code">
-void cupsRWUnlock(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
+<span class="reserved">void</span> cupsRWUnlock(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>rwlock</th>
@@ -5785,7 +6409,7 @@ void cupsRWUnlock(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
 <h3 class="function"><a id="cupsRasterClose">cupsRasterClose</a></h3>
 <p class="description">Close a raster stream.</p>
 <p class="code">
-void cupsRasterClose(<a href="#cups_raster_t">cups_raster_t</a> *r);</p>
+<span class="reserved">void</span> cupsRasterClose(<a href="#cups_raster_t">cups_raster_t</a> *r);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>r</th>
@@ -5797,7 +6421,7 @@ separately as needed.</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsRasterGetErrorString">cupsRasterGetErrorString</a></h3>
 <p class="description">Return the last error from a raster function.</p>
 <p class="code">
-const char *cupsRasterGetErrorString(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsRasterGetErrorString(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Last error</p>
 <h4 class="discussion">Discussion</h4>
@@ -5807,7 +6431,7 @@ const char *cupsRasterGetErrorString(void);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsRasterInitHeader">cupsRasterInitHeader</a></h3>
 <p class="description">Initialize a page header for PWG Raster output.</p>
 <p class="code">
-bool cupsRasterInitHeader(<a href="#cups_page_header2_t">cups_page_header2_t</a> *h, <a href="#cups_media_t">cups_media_t</a> *media, const char *optimize, <a href="#ipp_quality_t">ipp_quality_t</a> quality, const char *intent, <a href="#ipp_orient_t">ipp_orient_t</a> orientation, const char *sides, const char *type, int xdpi, int ydpi, const char *sheet_back);</p>
+<span class="reserved">bool</span> cupsRasterInitHeader(<a href="#cups_page_header2_t">cups_page_header2_t</a> *h, <a href="#cups_media_t">cups_media_t</a> *media, <span class="reserved">const</span> <span class="reserved">char</span> *optimize, <a href="#ipp_quality_t">ipp_quality_t</a> quality, <span class="reserved">const</span> <span class="reserved">char</span> *intent, <a href="#ipp_orient_t">ipp_orient_t</a> orientation, <span class="reserved">const</span> <span class="reserved">char</span> *sides, <span class="reserved">const</span> <span class="reserved">char</span> *type, <span class="reserved">int</span> xdpi, <span class="reserved">int</span> ydpi, <span class="reserved">const</span> <span class="reserved">char</span> *sheet_back);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>h</th>
@@ -5887,7 +6511,7 @@ to apply for the back side of a page.  Pass <code>NULL</code> for the front side
 <h3 class="function"><a id="cupsRasterOpen">cupsRasterOpen</a></h3>
 <p class="description">Open a raster stream using a file descriptor.</p>
 <p class="code">
-<a href="#cups_raster_t">cups_raster_t</a> *cupsRasterOpen(int fd, cups_mode_t mode);</p>
+<a href="#cups_raster_t">cups_raster_t</a> *cupsRasterOpen(<span class="reserved">int</span> fd, cups_mode_t mode);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fd</th>
@@ -5913,7 +6537,7 @@ be used - compressed and PWG output is generally 25-50% smaller but adds a
 <h3 class="function"><a id="cupsRasterOpenIO">cupsRasterOpenIO</a></h3>
 <p class="description">Open a raster stream using a callback function.</p>
 <p class="code">
-<a href="#cups_raster_t">cups_raster_t</a> *cupsRasterOpenIO(<a href="#cups_raster_cb_t">cups_raster_cb_t</a> iocb, void *ctx, <a href="#cups_raster_mode_t">cups_raster_mode_t</a> mode);</p>
+<a href="#cups_raster_t">cups_raster_t</a> *cupsRasterOpenIO(<a href="#cups_raster_cb_t">cups_raster_cb_t</a> iocb, <span class="reserved">void</span> *ctx, <a href="#cups_raster_mode_t">cups_raster_mode_t</a> mode);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>iocb</th>
@@ -5940,7 +6564,7 @@ be used - compressed and PWG output is generally 25-50% smaller but adds a
 <p class="description">Read a raster page header and store it in a
                            version 1 page header structure.</p>
 <p class="code">
-unsigned cupsRasterReadHeader(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header_t">cups_page_header_t</a> *h);</p>
+<span class="reserved">unsigned</span> cupsRasterReadHeader(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header_t">cups_page_header_t</a> *h);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>r</th>
@@ -5962,7 +6586,7 @@ page headers and copying only the version 1 data into the provided buffer.
 <p class="description">Read a raster page header and store it in a
                             version 2 page header structure.</p>
 <p class="code">
-unsigned cupsRasterReadHeader2(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header2_t">cups_page_header2_t</a> *h);</p>
+<span class="reserved">unsigned</span> cupsRasterReadHeader2(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header2_t">cups_page_header2_t</a> *h);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>r</th>
@@ -5975,7 +6599,7 @@ unsigned cupsRasterReadHeader2(<a href="#cups_raster_t">cups_raster_t</a> *r, <a
 <h3 class="function"><a id="cupsRasterReadPixels">cupsRasterReadPixels</a></h3>
 <p class="description">Read raster pixels.</p>
 <p class="code">
-unsigned cupsRasterReadPixels(<a href="#cups_raster_t">cups_raster_t</a> *r, unsigned char *p, unsigned len);</p>
+<span class="reserved">unsigned</span> cupsRasterReadPixels(<a href="#cups_raster_t">cups_raster_t</a> *r, <span class="reserved">unsigned</span> <span class="reserved">char</span> *p, <span class="reserved">unsigned</span> len);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>r</th>
@@ -5995,7 +6619,7 @@ the line buffer and as the number of bytes to read.</p>
 <p class="description">Write a raster page header from a version 1 page
                             header structure.</p>
 <p class="code">
-unsigned cupsRasterWriteHeader(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header_t">cups_page_header_t</a> *h);</p>
+<span class="reserved">unsigned</span> cupsRasterWriteHeader(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header_t">cups_page_header_t</a> *h);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>r</th>
@@ -6013,7 +6637,7 @@ unsigned cupsRasterWriteHeader(<a href="#cups_raster_t">cups_raster_t</a> *r, <a
 <p class="description">Write a raster page header from a version 2
                              page header structure.</p>
 <p class="code">
-unsigned cupsRasterWriteHeader2(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header2_t">cups_page_header2_t</a> *h);</p>
+<span class="reserved">unsigned</span> cupsRasterWriteHeader2(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header2_t">cups_page_header2_t</a> *h);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>r</th>
@@ -6030,7 +6654,7 @@ unsigned cupsRasterWriteHeader2(<a href="#cups_raster_t">cups_raster_t</a> *r, <
 <h3 class="function"><a id="cupsRasterWritePixels">cupsRasterWritePixels</a></h3>
 <p class="description">Write raster pixels.</p>
 <p class="code">
-unsigned cupsRasterWritePixels(<a href="#cups_raster_t">cups_raster_t</a> *r, unsigned char *p, unsigned len);</p>
+<span class="reserved">unsigned</span> cupsRasterWritePixels(<a href="#cups_raster_t">cups_raster_t</a> *r, <span class="reserved">unsigned</span> <span class="reserved">char</span> *p, <span class="reserved">unsigned</span> len);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>r</th>
@@ -6049,7 +6673,7 @@ the line buffer and as the number of bytes to write.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsReadResponseData">cupsReadResponseData</a></h3>
 <p class="description">Read additional data after the IPP response.</p>
 <p class="code">
-ssize_t cupsReadResponseData(<a href="#http_t">http_t</a> *http, char *buffer, size_t length);</p>
+ssize_t cupsReadResponseData(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *buffer, size_t length);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -6070,7 +6694,7 @@ respectively.
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsRemoveDest">cupsRemoveDest</a></h3>
 <p class="description">Remove a destination from the destination list.</p>
 <p class="code">
-int cupsRemoveDest(const char *name, const char *instance, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
+<span class="reserved">int</span> cupsRemoveDest(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *instance, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -6094,7 +6718,7 @@ options for the user.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cupsRemoveOption">cupsRemoveOption</a></h3>
 <p class="description">Remove an option from an option array.</p>
 <p class="code">
-int cupsRemoveOption(const char *name, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsRemoveOption(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -6109,7 +6733,7 @@ int cupsRemoveOption(const char *name, int num_options, <a href="#cups_option_t"
 <h3 class="function"><a id="cupsSaveCredentials">cupsSaveCredentials</a></h3>
 <p class="description">Save the credentials associated with a printer/server.</p>
 <p class="code">
-bool cupsSaveCredentials(const char *path, const char *common_name, const char *credentials, const char *key);</p>
+<span class="reserved">bool</span> cupsSaveCredentials(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *credentials, <span class="reserved">const</span> <span class="reserved">char</span> *key);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>path</th>
@@ -6117,7 +6741,7 @@ bool cupsSaveCredentials(const char *path, const char *common_name, const char *
 <tr><th>common_name</th>
 <td class="description">Common name for certificate</td></tr>
 <tr><th>credentials</th>
-<td class="description">PEM-encoded certificate chain</td></tr>
+<td class="description">PEM-encoded certificate chain or <code>NULL</code> to remove</td></tr>
 <tr><th>key</th>
 <td class="description">PEM-encoded private key or <code>NULL</code> for none</td></tr>
 </tbody></table>
@@ -6130,7 +6754,7 @@ in a per-user or system-wide (when running as root) certificate/key store.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsSendRequest">cupsSendRequest</a></h3>
 <p class="description">Send an IPP request.</p>
 <p class="code">
-http_status_t cupsSendRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, const char *resource, size_t length);</p>
+http_status_t cupsSendRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, <span class="reserved">const</span> <span class="reserved">char</span> *resource, size_t length);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -6161,7 +6785,7 @@ Note: Unlike <a href="#cupsDoFileRequest"><code>cupsDoFileRequest</code></a>, <a
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsServer">cupsServer</a></h3>
 <p class="description">Return the hostname/address of the current server.</p>
 <p class="code">
-const char *cupsServer(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsServer(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Server name</p>
 <h4 class="discussion">Discussion</h4>
@@ -6182,7 +6806,7 @@ server to be used.
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsSetClientCertCB">cupsSetClientCertCB</a></h3>
 <p class="description">Set the client certificate callback.</p>
 <p class="code">
-void cupsSetClientCertCB(<a href="#cups_client_cert_cb_t">cups_client_cert_cb_t</a> cb, void *user_data);</p>
+<span class="reserved">void</span> cupsSetClientCertCB(<a href="#cups_client_cert_cb_t">cups_client_cert_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>cb</th>
@@ -6197,12 +6821,31 @@ Note: The current certificate callback is tracked separately for each thread
 in a program. Multi-threaded programs that override the callback need to do
 so in each thread for the same callback to be used.
 
+</p>
+<h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cupsSetClientCredentials">cupsSetClientCredentials</a></h3>
+<p class="description">Set the default credentials to be used for TLS connections.</p>
+<p class="code">
+<span class="reserved">bool</span> cupsSetClientCredentials(<span class="reserved">const</span> <span class="reserved">char</span> *credentials, <span class="reserved">const</span> <span class="reserved">char</span> *key);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>credentials</th>
+<td class="description">PEM-encoded X.509 credentials string</td></tr>
+<tr><th>key</th>
+<td class="description">PEM-encoded private key</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description"><code>true</code> on success, <code>false</code> on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Note: The default credentials are tracked separately for each thread in a
+program. Multi-threaded programs that override the setting need to do so in
+each thread for the same setting to be used.
+
 </p>
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsSetCredentials">cupsSetCredentials</a></h3>
 <p class="description">Set the default credentials to be used for SSL/TLS
                            connections.</p>
 <p class="code">
-int cupsSetCredentials(<a href="#cups_array_t">cups_array_t</a> *credentials);</p>
+<span class="reserved">int</span> cupsSetCredentials(<a href="#cups_array_t">cups_array_t</a> *credentials);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>credentials</th>
@@ -6213,7 +6856,7 @@ int cupsSetCredentials(<a href="#cups_array_t">cups_array_t</a> *credentials);</
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="cupsSetDefaultDest">cupsSetDefaultDest</a></h3>
 <p class="description">Set the default destination.</p>
 <p class="code">
-void cupsSetDefaultDest(const char *name, const char *instance, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
+<span class="reserved">void</span> cupsSetDefaultDest(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *instance, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -6228,7 +6871,7 @@ void cupsSetDefaultDest(const char *name, const char *instance, int num_dests, <
 <h3 class="function"><span class="info">&#160;CUPS 1.1.21/macOS 10.4&#160;</span><a id="cupsSetDests2">cupsSetDests2</a></h3>
 <p class="description">Save the list of destinations for the specified server.</p>
 <p class="code">
-int cupsSetDests2(<a href="#http_t">http_t</a> *http, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
+<span class="reserved">int</span> cupsSetDests2(<a href="#http_t">http_t</a> *http, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -6248,7 +6891,7 @@ as root and ~/.cups/lpoptions when run as a normal user.
 <h3 class="function"><a id="cupsSetEncryption">cupsSetEncryption</a></h3>
 <p class="description">Set the encryption preference.</p>
 <p class="code">
-void cupsSetEncryption(<a href="#http_encryption_t">http_encryption_t</a> e);</p>
+<span class="reserved">void</span> cupsSetEncryption(<a href="#http_encryption_t">http_encryption_t</a> e);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>e</th>
@@ -6266,7 +6909,7 @@ so in each thread for the same setting to be used.</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.4&#160;</span><a id="cupsSetOAuthCB">cupsSetOAuthCB</a></h3>
 <p class="description">Set the OAuth 2.0 callback for CUPS.</p>
 <p class="code">
-void cupsSetOAuthCB(<a href="#cups_oauth_cb_t">cups_oauth_cb_t</a> cb, void *user_data);</p>
+<span class="reserved">void</span> cupsSetOAuthCB(<a href="#cups_oauth_cb_t">cups_oauth_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>cb</th>
@@ -6297,7 +6940,7 @@ each thread for the same callback to be used.
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsSetPasswordCB2">cupsSetPasswordCB2</a></h3>
 <p class="description">Set the advanced password callback for CUPS.</p>
 <p class="code">
-void cupsSetPasswordCB2(<a href="#cups_password_cb2_t">cups_password_cb2_t</a> cb, void *user_data);</p>
+<span class="reserved">void</span> cupsSetPasswordCB2(<a href="#cups_password_cb2_t">cups_password_cb2_t</a> cb, <span class="reserved">void</span> *user_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>cb</th>
@@ -6319,7 +6962,7 @@ so in each thread for the same callback to be used.
 <h3 class="function"><a id="cupsSetServer">cupsSetServer</a></h3>
 <p class="description">Set the default server name and port.</p>
 <p class="code">
-void cupsSetServer(const char *server);</p>
+<span class="reserved">void</span> cupsSetServer(<span class="reserved">const</span> <span class="reserved">char</span> *server);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>server</th>
@@ -6338,7 +6981,7 @@ thread for the same server to be used.</p>
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsSetServerCertCB">cupsSetServerCertCB</a></h3>
 <p class="description">Set the server certificate callback.</p>
 <p class="code">
-void cupsSetServerCertCB(<a href="#cups_server_cert_cb_t">cups_server_cert_cb_t</a> cb, void *user_data);</p>
+<span class="reserved">void</span> cupsSetServerCertCB(<a href="#cups_server_cert_cb_t">cups_server_cert_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>cb</th>
@@ -6357,7 +7000,7 @@ so in each thread for the same callback to be used.
 <h3 class="function"><a id="cupsSetServerCredentials">cupsSetServerCredentials</a></h3>
 <p class="description">Set the default server credentials.</p>
 <p class="code">
-int cupsSetServerCredentials(const char *path, const char *common_name, int auto_create);</p>
+<span class="reserved">int</span> cupsSetServerCredentials(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">int</span> auto_create);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>path</th>
@@ -6375,7 +7018,7 @@ This function is threadsafe.</p>
 <h3 class="function"><a id="cupsSetUser">cupsSetUser</a></h3>
 <p class="description">Set the default user name.</p>
 <p class="code">
-void cupsSetUser(const char *user);</p>
+<span class="reserved">void</span> cupsSetUser(<span class="reserved">const</span> <span class="reserved">char</span> *user);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>user</th>
@@ -6390,7 +7033,7 @@ in each thread for the same user name to be used.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="cupsSetUserAgent">cupsSetUserAgent</a></h3>
 <p class="description">Set the default HTTP User-Agent string.</p>
 <p class="code">
-void cupsSetUserAgent(const char *user_agent);</p>
+<span class="reserved">void</span> cupsSetUserAgent(<span class="reserved">const</span> <span class="reserved">char</span> *user_agent);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>user_agent</th>
@@ -6404,7 +7047,7 @@ version, IPP version, and operating system version and architecture.
 <h3 class="function"><a id="cupsSignCredentialsRequest">cupsSignCredentialsRequest</a></h3>
 <p class="description">Sign an X.509 certificate signing request to produce an X.509 certificate chain.</p>
 <p class="code">
-bool cupsSignCredentialsRequest(const char *path, const char *common_name, const char *request, const char *root_name, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> allowed_purpose, <a href="#cups_credusage_t">cups_credusage_t</a> allowed_usage, <a href="#cups_cert_san_cb_t">cups_cert_san_cb_t</a> cb, void *cb_data, time_t expiration_date);</p>
+<span class="reserved">bool</span> cupsSignCredentialsRequest(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *request, <span class="reserved">const</span> <span class="reserved">char</span> *root_name, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> allowed_purpose, <a href="#cups_credusage_t">cups_credusage_t</a> allowed_usage, <a href="#cups_cert_san_cb_t">cups_cert_san_cb_t</a> cb, <span class="reserved">void</span> *cb_data, time_t expiration_date);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>path</th>
@@ -6499,7 +7142,7 @@ Unix <code>time_t</code> value in seconds.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="cupsStartDestDocument">cupsStartDestDocument</a></h3>
 <p class="description">Start a new document.</p>
 <p class="code">
-http_status_t cupsStartDestDocument(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, int job_id, const char *docname, const char *format, int num_options, <a href="#cups_option_t">cups_option_t</a> *options, int last_document);</p>
+http_status_t cupsStartDestDocument(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, <span class="reserved">int</span> job_id, <span class="reserved">const</span> <span class="reserved">char</span> *docname, <span class="reserved">const</span> <span class="reserved">char</span> *format, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options, <span class="reserved">int</span> last_document);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -6535,7 +7178,7 @@ if this is the last document to be submitted in the job.  Returns
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsTempFd">cupsTempFd</a></h3>
 <p class="description">Create a temporary file descriptor.</p>
 <p class="code">
-int cupsTempFd(char *filename, int len);</p>
+<span class="reserved">int</span> cupsTempFd(<span class="reserved">char</span> *filename, <span class="reserved">int</span> len);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>filename</th>
@@ -6558,7 +7201,7 @@ function instead.</blockquote>
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsTempFile">cupsTempFile</a></h3>
 <p class="description">Generate a temporary filename (deprecated).</p>
 <p class="code">
-char *cupsTempFile(char *filename, int len);</p>
+<span class="reserved">char</span> *cupsTempFile(<span class="reserved">char</span> *filename, <span class="reserved">int</span> len);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>filename</th>
@@ -6576,7 +7219,7 @@ Use <a href="#cupsCreateTempFd"><code>cupsCreateTempFd</code></a> or <a href="#c
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsTempFile2">cupsTempFile2</a></h3>
 <p class="description">Creates a temporary CUPS file.</p>
 <p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsTempFile2(char *filename, int len);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsTempFile2(<span class="reserved">char</span> *filename, <span class="reserved">int</span> len);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>filename</th>
@@ -6598,7 +7241,7 @@ function instead.</blockquote>
 <h3 class="function"><a id="cupsThreadCancel">cupsThreadCancel</a></h3>
 <p class="description">Cancel (kill) a thread.</p>
 <p class="code">
-void cupsThreadCancel(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
+<span class="reserved">void</span> cupsThreadCancel(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>thread</th>
@@ -6607,7 +7250,7 @@ void cupsThreadCancel(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
 <h3 class="function"><a id="cupsThreadCreate">cupsThreadCreate</a></h3>
 <p class="description">Create a thread.</p>
 <p class="code">
-<a href="#cups_thread_t">cups_thread_t</a> cupsThreadCreate(<a href="#cups_thread_func_t">cups_thread_func_t</a> func, void *arg);</p>
+<a href="#cups_thread_t">cups_thread_t</a> cupsThreadCreate(<a href="#cups_thread_func_t">cups_thread_func_t</a> func, <span class="reserved">void</span> *arg);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>func</th>
@@ -6620,7 +7263,7 @@ void cupsThreadCancel(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
 <h3 class="function"><a id="cupsThreadDetach">cupsThreadDetach</a></h3>
 <p class="description">Tell the OS that the thread is running independently.</p>
 <p class="code">
-void cupsThreadDetach(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
+<span class="reserved">void</span> cupsThreadDetach(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>thread</th>
@@ -6629,7 +7272,7 @@ void cupsThreadDetach(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
 <h3 class="function"><a id="cupsThreadWait">cupsThreadWait</a></h3>
 <p class="description">Wait for a thread to exit.</p>
 <p class="code">
-void *cupsThreadWait(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
+<span class="reserved">void</span> *cupsThreadWait(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>thread</th>
@@ -6640,7 +7283,7 @@ void *cupsThreadWait(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
 <h3 class="function"><a id="cupsUTF32ToUTF8">cupsUTF32ToUTF8</a></h3>
 <p class="description">Convert UTF-32 to UTF-8.</p>
 <p class="code">
-int cupsUTF32ToUTF8(<a href="#cups_utf8_t">cups_utf8_t</a> *dest, const <a href="#cups_utf32_t">cups_utf32_t</a> *src, const int maxout);</p>
+<span class="reserved">int</span> cupsUTF32ToUTF8(<a href="#cups_utf8_t">cups_utf8_t</a> *dest, <span class="reserved">const</span> <a href="#cups_utf32_t">cups_utf32_t</a> *src, <span class="reserved">const</span> <span class="reserved">int</span> maxout);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dest</th>
@@ -6667,7 +7310,7 @@ which would convert to five- or six-octet UTF-8 sequences...</p>
 <h3 class="function"><a id="cupsUTF8ToCharset">cupsUTF8ToCharset</a></h3>
 <p class="description">Convert UTF-8 to legacy character set.</p>
 <p class="code">
-int cupsUTF8ToCharset(char *dest, const <a href="#cups_utf8_t">cups_utf8_t</a> *src, const int maxout, const <a href="#cups_encoding_t">cups_encoding_t</a> encoding);</p>
+<span class="reserved">int</span> cupsUTF8ToCharset(<span class="reserved">char</span> *dest, <span class="reserved">const</span> <a href="#cups_utf8_t">cups_utf8_t</a> *src, <span class="reserved">const</span> <span class="reserved">int</span> maxout, <span class="reserved">const</span> <a href="#cups_encoding_t">cups_encoding_t</a> encoding);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dest</th>
@@ -6684,7 +7327,7 @@ int cupsUTF8ToCharset(char *dest, const <a href="#cups_utf8_t">cups_utf8_t</a> *
 <h3 class="function"><a id="cupsUTF8ToUTF32">cupsUTF8ToUTF32</a></h3>
 <p class="description">Convert UTF-8 to UTF-32.</p>
 <p class="code">
-int cupsUTF8ToUTF32(<a href="#cups_utf32_t">cups_utf32_t</a> *dest, const <a href="#cups_utf8_t">cups_utf8_t</a> *src, const int maxout);</p>
+<span class="reserved">int</span> cupsUTF8ToUTF32(<a href="#cups_utf32_t">cups_utf32_t</a> *dest, <span class="reserved">const</span> <a href="#cups_utf8_t">cups_utf8_t</a> *src, <span class="reserved">const</span> <span class="reserved">int</span> maxout);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dest</th>
@@ -6711,7 +7354,7 @@ which would convert to five- or six-octet UTF-8 sequences...</p>
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsUser">cupsUser</a></h3>
 <p class="description">Return the current user's name.</p>
 <p class="code">
-const char *cupsUser(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsUser(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">User name</p>
 <h4 class="discussion">Discussion</h4>
@@ -6724,13 +7367,13 @@ name to be used.
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="cupsUserAgent">cupsUserAgent</a></h3>
 <p class="description">Return the default HTTP User-Agent string.</p>
 <p class="code">
-const char *cupsUserAgent(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsUserAgent(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">User-Agent string</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="cupsWriteRequestData">cupsWriteRequestData</a></h3>
 <p class="description">Write additional data after an IPP request.</p>
 <p class="code">
-http_status_t cupsWriteRequestData(<a href="#http_t">http_t</a> *http, const char *buffer, size_t length);</p>
+http_status_t cupsWriteRequestData(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *buffer, size_t length);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -6750,7 +7393,7 @@ after <a href="#cupsStartDocument"><code>cupsStartDocument</code></a> to provide
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="httpAcceptConnection">httpAcceptConnection</a></h3>
 <p class="description">Accept a new HTTP client connection.</p>
 <p class="code">
-<a href="#http_t">http_t</a> *httpAcceptConnection(int fd, int blocking);</p>
+<a href="#http_t">http_t</a> *httpAcceptConnection(<span class="reserved">int</span> fd, <span class="reserved">int</span> blocking);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fd</th>
@@ -6770,7 +7413,7 @@ HTTP connection is blocking.
 <p class="description">Close a socket created by <a href="#httpAddrConnect"><code>httpAddrConnect</code></a> or
                     <a href="#httpAddrListen"><code>httpAddrListen</code></a>.</p>
 <p class="code">
-int httpAddrClose(<a href="#http_addr_t">http_addr_t</a> *addr, int fd);</p>
+<span class="reserved">int</span> httpAddrClose(<a href="#http_addr_t">http_addr_t</a> *addr, <span class="reserved">int</span> fd);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr</th>
@@ -6790,7 +7433,7 @@ ensures that domain sockets are removed when closed.
 <p class="description">Connect to any of the addresses in the list with a
                        timeout and optional cancel.</p>
 <p class="code">
-<a href="#http_addrlist_t">http_addrlist_t</a> *httpAddrConnect2(<a href="#http_addrlist_t">http_addrlist_t</a> *addrlist, int *sock, int msec, int *cancel);</p>
+<a href="#http_addrlist_t">http_addrlist_t</a> *httpAddrConnect2(<a href="#http_addrlist_t">http_addrlist_t</a> *addrlist, <span class="reserved">int</span> *sock, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addrlist</th>
@@ -6818,7 +7461,7 @@ ensures that domain sockets are removed when closed.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpAddrFreeList">httpAddrFreeList</a></h3>
 <p class="description">Free an address list.</p>
 <p class="code">
-void httpAddrFreeList(<a href="#http_addrlist_t">http_addrlist_t</a> *addrlist);</p>
+<span class="reserved">void</span> httpAddrFreeList(<a href="#http_addrlist_t">http_addrlist_t</a> *addrlist);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addrlist</th>
@@ -6827,7 +7470,7 @@ void httpAddrFreeList(<a href="#http_addrlist_t">http_addrlist_t</a> *addrlist);
 <h3 class="function"><a id="httpAddrGetFamily">httpAddrGetFamily</a></h3>
 <p class="description">Get the address family of an address.</p>
 <p class="code">
-int httpAddrGetFamily(<a href="#http_addr_t">http_addr_t</a> *addr);</p>
+<span class="reserved">int</span> httpAddrGetFamily(<a href="#http_addr_t">http_addr_t</a> *addr);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr</th>
@@ -6838,7 +7481,7 @@ int httpAddrGetFamily(<a href="#http_addr_t">http_addr_t</a> *addr);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpAddrGetLength">httpAddrGetLength</a></h3>
 <p class="description">Return the length of the address in bytes.</p>
 <p class="code">
-size_t httpAddrGetLength(const <a href="#http_addr_t">http_addr_t</a> *addr);</p>
+size_t httpAddrGetLength(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr</th>
@@ -6849,7 +7492,7 @@ size_t httpAddrGetLength(const <a href="#http_addr_t">http_addr_t</a> *addr);</p
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpAddrGetList">httpAddrGetList</a></h3>
 <p class="description">Get a list of addresses for a hostname.</p>
 <p class="code">
-<a href="#http_addrlist_t">http_addrlist_t</a> *httpAddrGetList(const char *hostname, int family, const char *service);</p>
+<a href="#http_addrlist_t">http_addrlist_t</a> *httpAddrGetList(<span class="reserved">const</span> <span class="reserved">char</span> *hostname, <span class="reserved">int</span> family, <span class="reserved">const</span> <span class="reserved">char</span> *service);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>hostname</th>
@@ -6864,7 +7507,7 @@ size_t httpAddrGetLength(const <a href="#http_addr_t">http_addr_t</a> *addr);</p
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpAddrGetPort">httpAddrGetPort</a></h3>
 <p class="description">Get the port number associated with an address.</p>
 <p class="code">
-int httpAddrGetPort(<a href="#http_addr_t">http_addr_t</a> *addr);</p>
+<span class="reserved">int</span> httpAddrGetPort(<a href="#http_addr_t">http_addr_t</a> *addr);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr</th>
@@ -6875,7 +7518,7 @@ int httpAddrGetPort(<a href="#http_addr_t">http_addr_t</a> *addr);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpAddrGetString">httpAddrGetString</a></h3>
 <p class="description">Convert an address to a numeric string.</p>
 <p class="code">
-char *httpAddrGetString(const <a href="#http_addr_t">http_addr_t</a> *addr, char *s, size_t slen);</p>
+<span class="reserved">char</span> *httpAddrGetString(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr, <span class="reserved">char</span> *s, size_t slen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr</th>
@@ -6890,7 +7533,7 @@ char *httpAddrGetString(const <a href="#http_addr_t">http_addr_t</a> *addr, char
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpAddrIsAny">httpAddrIsAny</a></h3>
 <p class="description">Check for the &quot;any&quot; address.</p>
 <p class="code">
-bool httpAddrIsAny(const <a href="#http_addr_t">http_addr_t</a> *addr);</p>
+<span class="reserved">bool</span> httpAddrIsAny(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr</th>
@@ -6901,7 +7544,7 @@ bool httpAddrIsAny(const <a href="#http_addr_t">http_addr_t</a> *addr);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpAddrIsEqual">httpAddrIsEqual</a></h3>
 <p class="description">Compare two addresses.</p>
 <p class="code">
-bool httpAddrIsEqual(const <a href="#http_addr_t">http_addr_t</a> *addr1, const <a href="#http_addr_t">http_addr_t</a> *addr2);</p>
+<span class="reserved">bool</span> httpAddrIsEqual(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr1, <span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr2);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr1</th>
@@ -6914,7 +7557,7 @@ bool httpAddrIsEqual(const <a href="#http_addr_t">http_addr_t</a> *addr1, const
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpAddrIsLocalhost">httpAddrIsLocalhost</a></h3>
 <p class="description">Check for the local loopback address.</p>
 <p class="code">
-bool httpAddrIsLocalhost(const <a href="#http_addr_t">http_addr_t</a> *addr);</p>
+<span class="reserved">bool</span> httpAddrIsLocalhost(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr</th>
@@ -6926,7 +7569,7 @@ bool httpAddrIsLocalhost(const <a href="#http_addr_t">http_addr_t</a> *addr);</p
 <p class="description">Create a listening socket bound to the specified
                      address and port.</p>
 <p class="code">
-int httpAddrListen(<a href="#http_addr_t">http_addr_t</a> *addr, int port);</p>
+<span class="reserved">int</span> httpAddrListen(<a href="#http_addr_t">http_addr_t</a> *addr, <span class="reserved">int</span> port);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr</th>
@@ -6939,7 +7582,7 @@ int httpAddrListen(<a href="#http_addr_t">http_addr_t</a> *addr, int port);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpAddrLookup">httpAddrLookup</a></h3>
 <p class="description">Lookup the hostname associated with the address.</p>
 <p class="code">
-char *httpAddrLookup(const <a href="#http_addr_t">http_addr_t</a> *addr, char *name, int namelen);</p>
+<span class="reserved">char</span> *httpAddrLookup(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr, <span class="reserved">char</span> *name, <span class="reserved">int</span> namelen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr</th>
@@ -6954,7 +7597,7 @@ char *httpAddrLookup(const <a href="#http_addr_t">http_addr_t</a> *addr, char *n
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpAddrSetPort">httpAddrSetPort</a></h3>
 <p class="description">Set the port number associated with an address.</p>
 <p class="code">
-void httpAddrSetPort(<a href="#http_addr_t">http_addr_t</a> *addr, int port);</p>
+<span class="reserved">void</span> httpAddrSetPort(<a href="#http_addr_t">http_addr_t</a> *addr, <span class="reserved">int</span> port);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>addr</th>
@@ -6966,7 +7609,7 @@ void httpAddrSetPort(<a href="#http_addr_t">http_addr_t</a> *addr, int port);</p
 <p class="description">Assemble a uniform resource identifier from its
                       components.</p>
 <p class="code">
-<a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURI(<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding, char *uri, int urilen, const char *scheme, const char *username, const char *host, int port, const char *resource);</p>
+<a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURI(<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding, <span class="reserved">char</span> *uri, <span class="reserved">int</span> urilen, <span class="reserved">const</span> <span class="reserved">char</span> *scheme, <span class="reserved">const</span> <span class="reserved">char</span> *username, <span class="reserved">const</span> <span class="reserved">char</span> *host, <span class="reserved">int</span> port, <span class="reserved">const</span> <span class="reserved">char</span> *resource);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>encoding</th>
@@ -6998,7 +7641,7 @@ URI string.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpAssembleURIf">httpAssembleURIf</a></h3>
 <p class="description">Assemble a uniform resource identifier from its components with a formatted resource.</p>
 <p class="code">
-<a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURIf(<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding, char *uri, int urilen, const char *scheme, const char *username, const char *host, int port, const char *resourcef, ...);</p>
+<a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURIf(<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding, <span class="reserved">char</span> *uri, <span class="reserved">int</span> urilen, <span class="reserved">const</span> <span class="reserved">char</span> *scheme, <span class="reserved">const</span> <span class="reserved">char</span> *username, <span class="reserved">const</span> <span class="reserved">char</span> *host, <span class="reserved">int</span> port, <span class="reserved">const</span> <span class="reserved">char</span> *resourcef, ...);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>encoding</th>
@@ -7033,7 +7676,7 @@ you need to create a URI string.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="httpAssembleUUID">httpAssembleUUID</a></h3>
 <p class="description">Assemble a name-based UUID URN conforming to RFC 4122.</p>
 <p class="code">
-char *httpAssembleUUID(const char *server, int port, const char *name, int number, char *buffer, size_t bufsize);</p>
+<span class="reserved">char</span> *httpAssembleUUID(<span class="reserved">const</span> <span class="reserved">char</span> *server, <span class="reserved">int</span> port, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> number, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>server</th>
@@ -7062,7 +7705,7 @@ The buffer needs to be at least 46 bytes in size.
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="httpBlocking">httpBlocking</a></h3>
 <p class="description">Set blocking/non-blocking behavior on a connection.</p>
 <p class="code">
-void httpBlocking(<a href="#http_t">http_t</a> *http, int b);</p>
+<span class="reserved">void</span> httpBlocking(<a href="#http_t">http_t</a> *http, <span class="reserved">int</span> b);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7073,7 +7716,7 @@ void httpBlocking(<a href="#http_t">http_t</a> *http, int b);</p>
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="httpCheck">httpCheck</a></h3>
 <p class="description">Check to see if there is a pending response from the server.</p>
 <p class="code">
-int httpCheck(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpCheck(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7084,7 +7727,7 @@ int httpCheck(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="httpClearCookie">httpClearCookie</a></h3>
 <p class="description">Clear the cookie value(s).</p>
 <p class="code">
-void httpClearCookie(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">void</span> httpClearCookie(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7093,7 +7736,7 @@ void httpClearCookie(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><a id="httpClearFields">httpClearFields</a></h3>
 <p class="description">Clear HTTP request/response fields.</p>
 <p class="code">
-void httpClearFields(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">void</span> httpClearFields(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7102,7 +7745,7 @@ void httpClearFields(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><a id="httpClose">httpClose</a></h3>
 <p class="description">Close a HTTP connection.</p>
 <p class="code">
-void httpClose(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">void</span> httpClose(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7111,7 +7754,7 @@ void httpClose(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="httpConnect2">httpConnect2</a></h3>
 <p class="description">Connect to a HTTP server.</p>
 <p class="code">
-<a href="#http_t">http_t</a> *httpConnect2(const char *host, int port, <a href="#http_addrlist_t">http_addrlist_t</a> *addrlist, int family, <a href="#http_encryption_t">http_encryption_t</a> encryption, int blocking, int msec, int *cancel);</p>
+<a href="#http_t">http_t</a> *httpConnect2(<span class="reserved">const</span> <span class="reserved">char</span> *host, <span class="reserved">int</span> port, <a href="#http_addrlist_t">http_addrlist_t</a> *addrlist, <span class="reserved">int</span> family, <a href="#http_encryption_t">http_encryption_t</a> encryption, <span class="reserved">int</span> blocking, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>host</th>
@@ -7150,11 +7793,71 @@ to just create an unconnected <code>http_t</code> object.  The &quot;cancel&quot
 specifies an integer variable that can be set to a non-zero value to cancel
 the connection process.
 
+</p>
+<h3 class="function"><a id="httpConnectAgain">httpConnectAgain</a></h3>
+<p class="description">Reconnect to a HTTP server with timeout and optional cancel variable.</p>
+<p class="code">
+<span class="reserved">bool</span> httpConnectAgain(<a href="#http_t">http_t</a> *http, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>http</th>
+<td class="description">HTTP connection</td></tr>
+<tr><th>msec</th>
+<td class="description">Timeout in milliseconds</td></tr>
+<tr><th>cancel</th>
+<td class="description">Pointer to &quot;cancel&quot; variable</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description"><code>true</code> on success, <code>false</code> on failure</p>
+<h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpConnectURI">httpConnectURI</a></h3>
+<p class="description">Connect to a HTTP service using a URI.</p>
+<p class="code">
+<a href="#http_t">http_t</a> *httpConnectURI(<span class="reserved">const</span> <span class="reserved">char</span> *uri, <span class="reserved">char</span> *host, size_t hsize, <span class="reserved">int</span> *port, <span class="reserved">char</span> *resource, size_t rsize, <span class="reserved">bool</span> blocking, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel, <span class="reserved">bool</span> require_ca);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>uri</th>
+<td class="description">Service to connect to</td></tr>
+<tr><th>host</th>
+<td class="description">Host name buffer (<code>NULL</code> for don't care)</td></tr>
+<tr><th>hsize</th>
+<td class="description">Size of host name buffer</td></tr>
+<tr><th>port</th>
+<td class="description">Port number (<code>NULL</code> for don't care)</td></tr>
+<tr><th>resource</th>
+<td class="description">Resource path buffer (<code>NULL</code> for don't care)</td></tr>
+<tr><th>rsize</th>
+<td class="description">Size of resource path buffer</td></tr>
+<tr><th>blocking</th>
+<td class="description"><code>true</code> for blocking connection, <code>false</code> for non-blocking</td></tr>
+<tr><th>msec</th>
+<td class="description">Connection timeout in milliseconds, <code>0</code> means don't connect</td></tr>
+<tr><th>cancel</th>
+<td class="description">Pointer to &quot;cancel&quot; variable or <code>NULL</code> for none</td></tr>
+<tr><th>require_ca</th>
+<td class="description"><code>true</code> to require a CA-signed X.509 certificate</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New HTTP connection</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function creates a connection to a HTTP server.  The &quot;uri&quot; argument
+specifies a &quot;http&quot;, &quot;https&quot;, &quot;ipp&quot;, or &quot;ipps&quot; URI for the service.<br>
+<br>
+The resource path for the service is returned in the buffer pointed to by
+the &quot;resource&quot; argument of size &quot;rsize&quot;.<br>
+<br>
+The &quot;msec&quot; argument specifies how long to try to connect to the server or <code>0</code>
+to just create an unconnected <code>http_t</code> object.  The &quot;cancel&quot; argument
+specifies an integer variable that can be set to a non-zero value to cancel
+the connection process.<br>
+<br>
+The &quot;require_ca&quot; argument specifies whether to verify that the service
+connection is using a CA-signed X.509 certificate.
+
 </p>
 <h3 class="function"><a id="httpCopyPeerCredentials">httpCopyPeerCredentials</a></h3>
 <p class="description">Copy the credentials associated with the peer in an encrypted connection.</p>
 <p class="code">
-char *httpCopyPeerCredentials(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">char</span> *httpCopyPeerCredentials(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7165,7 +7868,7 @@ char *httpCopyPeerCredentials(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpDecode64_3">httpDecode64_3</a></h3>
 <p class="description">Base64-decode a string.</p>
 <p class="code">
-char *httpDecode64_3(char *out, size_t *outlen, const char *in, const char **end);</p>
+<span class="reserved">char</span> *httpDecode64_3(<span class="reserved">char</span> *out, size_t *outlen, <span class="reserved">const</span> <span class="reserved">char</span> *in, <span class="reserved">const</span> <span class="reserved">char</span> **end);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>out</th>
@@ -7197,7 +7900,7 @@ This function supports both Base64 and Base64url strings.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpEncode64_3">httpEncode64_3</a></h3>
 <p class="description">Base64-encode a string.</p>
 <p class="code">
-char *httpEncode64_3(char *out, size_t outlen, const char *in, size_t inlen, bool url);</p>
+<span class="reserved">char</span> *httpEncode64_3(<span class="reserved">char</span> *out, size_t outlen, <span class="reserved">const</span> <span class="reserved">char</span> *in, size_t inlen, <span class="reserved">bool</span> url);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>out</th>
@@ -7222,7 +7925,7 @@ Base64url (&quot;url&quot; = <code>true</code>) alphabet is used.
 <h3 class="function"><a id="httpFieldValue">httpFieldValue</a></h3>
 <p class="description">Return the HTTP field enumeration value for a field name.</p>
 <p class="code">
-<a href="#http_field_t">http_field_t</a> httpFieldValue(const char *name);</p>
+<a href="#http_field_t">http_field_t</a> httpFieldValue(<span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -7233,7 +7936,7 @@ Base64url (&quot;url&quot; = <code>true</code>) alphabet is used.
 <h3 class="function"><a id="httpFlush">httpFlush</a></h3>
 <p class="description">Flush data read from a HTTP connection.</p>
 <p class="code">
-void httpFlush(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">void</span> httpFlush(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7242,7 +7945,7 @@ void httpFlush(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpFlushWrite">httpFlushWrite</a></h3>
 <p class="description">Flush data written to a HTTP connection.</p>
 <p class="code">
-int httpFlushWrite(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpFlushWrite(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7287,7 +7990,7 @@ Returns <code>NULL</code> if the socket is currently unconnected.
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="httpGetAuthString">httpGetAuthString</a></h3>
 <p class="description">Get the current authorization string.</p>
 <p class="code">
-char *httpGetAuthString(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">char</span> *httpGetAuthString(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7305,7 +8008,7 @@ string to use with <a href="#httpSetField"><code>httpSetField</code></a> for the
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpGetBlocking">httpGetBlocking</a></h3>
 <p class="description">Get the blocking/non-blocking state of a connection.</p>
 <p class="code">
-int httpGetBlocking(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpGetBlocking(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7317,7 +8020,7 @@ int httpGetBlocking(<a href="#http_t">http_t</a> *http);</p>
 <p class="description">Get a common content encoding, if any, between
                              the client and server.</p>
 <p class="code">
-const char *httpGetContentEncoding(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpGetContentEncoding(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7335,7 +8038,7 @@ or in the response (for servers) in order to compress the content stream.
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="httpGetCookie">httpGetCookie</a></h3>
 <p class="description">Get any cookie data from the response.</p>
 <p class="code">
-const char *httpGetCookie(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpGetCookie(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7346,7 +8049,7 @@ const char *httpGetCookie(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpGetDateString2">httpGetDateString2</a></h3>
 <p class="description">Get a formatted date/time string from a time value.</p>
 <p class="code">
-const char *httpGetDateString2(time_t t, char *s, int slen);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpGetDateString2(time_t t, <span class="reserved">char</span> *s, <span class="reserved">int</span> slen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>t</th>
@@ -7361,7 +8064,7 @@ const char *httpGetDateString2(time_t t, char *s, int slen);</p>
 <h3 class="function"><a id="httpGetDateTime">httpGetDateTime</a></h3>
 <p class="description">Get a time value from a formatted date/time string.</p>
 <p class="code">
-time_t httpGetDateTime(const char *s);</p>
+time_t httpGetDateTime(<span class="reserved">const</span> <span class="reserved">char</span> *s);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>s</th>
@@ -7389,7 +8092,7 @@ been established.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpGetError">httpGetError</a></h3>
 <p class="description">Get the last error on a connection.</p>
 <p class="code">
-int httpGetError(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpGetError(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7416,7 +8119,7 @@ returns the expected HTTP status code, typically <code>HTTP_STATUS_CONTINUE</cod
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpGetFd">httpGetFd</a></h3>
 <p class="description">Get the file descriptor associated with a connection.</p>
 <p class="code">
-int httpGetFd(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpGetFd(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7427,7 +8130,7 @@ int httpGetFd(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><a id="httpGetField">httpGetField</a></h3>
 <p class="description">Get a field value from a request/response.</p>
 <p class="code">
-const char *httpGetField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpGetField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7440,7 +8143,7 @@ const char *httpGetField(<a href="#http_t">http_t</a> *http, <a href="#http_fiel
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpGetHostname">httpGetHostname</a></h3>
 <p class="description">Get the FQDN for the connection or local system.</p>
 <p class="code">
-const char *httpGetHostname(<a href="#http_t">http_t</a> *http, char *s, int slen);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpGetHostname(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *s, <span class="reserved">int</span> slen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7550,7 +8253,7 @@ http_status_t httpGetStatus(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpGetSubField2">httpGetSubField2</a></h3>
 <p class="description">Get a sub-field value.</p>
 <p class="code">
-char *httpGetSubField2(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, const char *name, char *value, int valuelen);</p>
+<span class="reserved">char</span> *httpGetSubField2(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">char</span> *value, <span class="reserved">int</span> valuelen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7580,7 +8283,7 @@ char *httpGetSubField2(<a href="#http_t">http_t</a> *http, <a href="#http_field_
 <h3 class="function"><a id="httpGets2">httpGets2</a></h3>
 <p class="description">Get a line of text from a HTTP connection.</p>
 <p class="code">
-char *httpGets2(<a href="#http_t">http_t</a> *http, char *line, size_t length);</p>
+<span class="reserved">char</span> *httpGets2(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *line, size_t length);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7596,11 +8299,11 @@ char *httpGets2(<a href="#http_t">http_t</a> *http, char *line, size_t length);<
 <p class="description">Initialize the HTTP interface library and set the
                      default HTTP proxy (if any).</p>
 <p class="code">
-void httpInitialize(void);</p>
+<span class="reserved">void</span> httpInitialize(<span class="reserved">void</span>);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.0/OS 10.10&#160;</span><a id="httpIsChunked">httpIsChunked</a></h3>
 <p class="description">Report whether a message body is chunked.</p>
 <p class="code">
-int httpIsChunked(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpIsChunked(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7616,7 +8319,7 @@ variable-length chunks.
 <h3 class="function"><span class="info">&#160;CUPS 2.0/OS 10.10&#160;</span><a id="httpIsEncrypted">httpIsEncrypted</a></h3>
 <p class="description">Report whether a connection is encrypted.</p>
 <p class="code">
-int httpIsEncrypted(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpIsEncrypted(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7631,7 +8334,7 @@ int httpIsEncrypted(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="httpMD5">httpMD5</a></h3>
 <p class="description">Compute the MD5 sum of the username:group:password.</p>
 <p class="code">
-char *httpMD5(const char *username, const char *realm, const char *passwd, char md5[33]);</p>
+<span class="reserved">char</span> *httpMD5(<span class="reserved">const</span> <span class="reserved">char</span> *username, <span class="reserved">const</span> <span class="reserved">char</span> *realm, <span class="reserved">const</span> <span class="reserved">char</span> *passwd, <span class="reserved">char</span> md5[33]);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>username</th>
@@ -7655,7 +8358,7 @@ it produces an empty string. Please use <a href="#cupsDoAuthentication"><code>cu
                    with the server-supplied nonce value, method, and
                    request-uri.</p>
 <p class="code">
-char *httpMD5Final(const char *nonce, const char *method, const char *resource, char md5[33]);</p>
+<span class="reserved">char</span> *httpMD5Final(<span class="reserved">const</span> <span class="reserved">char</span> *nonce, <span class="reserved">const</span> <span class="reserved">char</span> *method, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">char</span> md5[33]);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>nonce</th>
@@ -7677,7 +8380,7 @@ it produces an empty string. Please use <a href="#cupsDoAuthentication"><code>cu
 <h3 class="function"><span class="info">&#160;DEPRECATED&#160;</span><a id="httpMD5String">httpMD5String</a></h3>
 <p class="description">Convert an MD5 sum to a character string.</p>
 <p class="code">
-char *httpMD5String(const unsigned char *sum, char md5[33]);</p>
+<span class="reserved">char</span> *httpMD5String(<span class="reserved">const</span> <span class="reserved">unsigned</span> <span class="reserved">char</span> *sum, <span class="reserved">char</span> md5[33]);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>sum</th>
@@ -7695,7 +8398,7 @@ it produces an empty string. Please use <a href="#cupsDoAuthentication"><code>cu
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="httpPeek">httpPeek</a></h3>
 <p class="description">Peek at data from a HTTP connection.</p>
 <p class="code">
-ssize_t httpPeek(<a href="#http_t">http_t</a> *http, char *buffer, size_t length);</p>
+ssize_t httpPeek(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *buffer, size_t length);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7718,7 +8421,7 @@ For non-blocking connections the usual timeouts apply.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpRead2">httpRead2</a></h3>
 <p class="description">Read data from a HTTP connection.</p>
 <p class="code">
-ssize_t httpRead2(<a href="#http_t">http_t</a> *http, char *buffer, size_t length);</p>
+ssize_t httpRead2(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *buffer, size_t length);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7733,7 +8436,7 @@ ssize_t httpRead2(<a href="#http_t">http_t</a> *http, char *buffer, size_t lengt
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="httpReadRequest">httpReadRequest</a></h3>
 <p class="description">Read a HTTP request from a connection.</p>
 <p class="code">
-<a href="#http_state_t">http_state_t</a> httpReadRequest(<a href="#http_t">http_t</a> *http, char *uri, size_t urilen);</p>
+<a href="#http_state_t">http_state_t</a> httpReadRequest(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *uri, size_t urilen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7745,27 +8448,11 @@ ssize_t httpRead2(<a href="#http_t">http_t</a> *http, char *buffer, size_t lengt
 </tbody></table>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New state of connection</p>
-<h3 class="function"><a id="httpReconnect2">httpReconnect2</a></h3>
-<p class="description">Reconnect to a HTTP server with timeout and optional
-                     cancel.</p>
-<p class="code">
-int httpReconnect2(<a href="#http_t">http_t</a> *http, int msec, int *cancel);</p>
-<h4 class="parameters">Parameters</h4>
-<table class="list"><tbody>
-<tr><th>http</th>
-<td class="description">HTTP connection</td></tr>
-<tr><th>msec</th>
-<td class="description">Timeout in milliseconds</td></tr>
-<tr><th>cancel</th>
-<td class="description">Pointer to &quot;cancel&quot; variable</td></tr>
-</tbody></table>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">0 on success, non-zero on failure</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.0/OS 10.10&#160;</span><a id="httpResolveHostname">httpResolveHostname</a></h3>
 <p class="description">Resolve the hostname of the HTTP connection
                           address.</p>
 <p class="code">
-const char *httpResolveHostname(<a href="#http_t">http_t</a> *http, char *buffer, size_t bufsize);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpResolveHostname(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7780,7 +8467,7 @@ const char *httpResolveHostname(<a href="#http_t">http_t</a> *http, char *buffer
 <h3 class="function"><a id="httpResolveURI">httpResolveURI</a></h3>
 <p class="description">Resolve a DNS-SD URI.</p>
 <p class="code">
-const char *httpResolveURI(const char *uri, char *resolved_uri, size_t resolved_size, <a href="#http_resolve_t">http_resolve_t</a> options, <a href="#http_resolve_cb_t">http_resolve_cb_t</a> cb, void *cb_data);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpResolveURI(<span class="reserved">const</span> <span class="reserved">char</span> *uri, <span class="reserved">char</span> *resolved_uri, size_t resolved_size, <a href="#http_resolve_t">http_resolve_t</a> options, <a href="#http_resolve_cb_t">http_resolve_cb_t</a> cb, <span class="reserved">void</span> *cb_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>uri</th>
@@ -7819,7 +8506,7 @@ to resolve the specified URI.</p>
 <p class="description">Separate a Universal Resource Identifier into its
                       components.</p>
 <p class="code">
-<a href="#http_uri_status_t">http_uri_status_t</a> httpSeparateURI(<a href="#http_uri_coding_t">http_uri_coding_t</a> decoding, const char *uri, char *scheme, int schemelen, char *username, int usernamelen, char *host, int hostlen, int *port, char *resource, int resourcelen);</p>
+<a href="#http_uri_status_t">http_uri_status_t</a> httpSeparateURI(<a href="#http_uri_coding_t">http_uri_coding_t</a> decoding, <span class="reserved">const</span> <span class="reserved">char</span> *uri, <span class="reserved">char</span> *scheme, <span class="reserved">int</span> schemelen, <span class="reserved">char</span> *username, <span class="reserved">int</span> usernamelen, <span class="reserved">char</span> *host, <span class="reserved">int</span> hostlen, <span class="reserved">int</span> *port, <span class="reserved">char</span> *resource, <span class="reserved">int</span> resourcelen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>decoding</th>
@@ -7850,7 +8537,7 @@ to resolve the specified URI.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.3/macOS 10.5&#160;</span><a id="httpSetAuthString">httpSetAuthString</a></h3>
 <p class="description">Set the current authorization string.</p>
 <p class="code">
-void httpSetAuthString(<a href="#http_t">http_t</a> *http, const char *scheme, const char *data);</p>
+<span class="reserved">void</span> httpSetAuthString(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *scheme, <span class="reserved">const</span> <span class="reserved">char</span> *data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7870,7 +8557,7 @@ the HTTP connection object.  You must still call <a href="#httpSetField"><code>h
 <h3 class="function"><a id="httpSetBlocking">httpSetBlocking</a></h3>
 <p class="description">Set blocking/non-blocking behavior on a connection.</p>
 <p class="code">
-void httpSetBlocking(<a href="#http_t">http_t</a> *http, bool b);</p>
+<span class="reserved">void</span> httpSetBlocking(<a href="#http_t">http_t</a> *http, <span class="reserved">bool</span> b);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7881,7 +8568,7 @@ void httpSetBlocking(<a href="#http_t">http_t</a> *http, bool b);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="httpSetCookie">httpSetCookie</a></h3>
 <p class="description">Set the cookie value(s).</p>
 <p class="code">
-void httpSetCookie(<a href="#http_t">http_t</a> *http, const char *cookie);</p>
+<span class="reserved">void</span> httpSetCookie(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *cookie);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7892,7 +8579,7 @@ void httpSetCookie(<a href="#http_t">http_t</a> *http, const char *cookie);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="httpSetDefaultField">httpSetDefaultField</a></h3>
 <p class="description">Set the default value of an HTTP header.</p>
 <p class="code">
-void httpSetDefaultField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, const char *value);</p>
+<span class="reserved">void</span> httpSetDefaultField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7910,7 +8597,7 @@ and <code>HTTP_FIELD_USER_AGENT</code> can be set.
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpSetEncryption">httpSetEncryption</a></h3>
 <p class="description">Set the required encryption on the link.</p>
 <p class="code">
-bool httpSetEncryption(<a href="#http_t">http_t</a> *http, <a href="#http_encryption_t">http_encryption_t</a> e);</p>
+<span class="reserved">bool</span> httpSetEncryption(<a href="#http_t">http_t</a> *http, <a href="#http_encryption_t">http_encryption_t</a> e);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7923,7 +8610,7 @@ bool httpSetEncryption(<a href="#http_t">http_t</a> *http, <a href="#http_encryp
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpSetExpect">httpSetExpect</a></h3>
 <p class="description">Set the Expect: header in a request.</p>
 <p class="code">
-void httpSetExpect(<a href="#http_t">http_t</a> *http, http_status_t expect);</p>
+<span class="reserved">void</span> httpSetExpect(<a href="#http_t">http_t</a> *http, http_status_t expect);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7939,7 +8626,7 @@ argument.
 <h3 class="function"><a id="httpSetField">httpSetField</a></h3>
 <p class="description">Set the value of an HTTP header.</p>
 <p class="code">
-void httpSetField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, const char *value);</p>
+<span class="reserved">void</span> httpSetField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7952,7 +8639,7 @@ void httpSetField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">ht
 <h3 class="function"><span class="info">&#160;CUPS 2.0/OS 10.10&#160;</span><a id="httpSetKeepAlive">httpSetKeepAlive</a></h3>
 <p class="description">Set the current Keep-Alive state of a connection.</p>
 <p class="code">
-void httpSetKeepAlive(<a href="#http_t">http_t</a> *http, <a href="#http_keepalive_t">http_keepalive_t</a> keep_alive);</p>
+<span class="reserved">void</span> httpSetKeepAlive(<a href="#http_t">http_t</a> *http, <a href="#http_keepalive_t">http_keepalive_t</a> keep_alive);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7963,7 +8650,7 @@ void httpSetKeepAlive(<a href="#http_t">http_t</a> *http, <a href="#http_keepali
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpSetLength">httpSetLength</a></h3>
 <p class="description">Set the content-length and content-encoding.</p>
 <p class="code">
-void httpSetLength(<a href="#http_t">http_t</a> *http, size_t length);</p>
+<span class="reserved">void</span> httpSetLength(<a href="#http_t">http_t</a> *http, size_t length);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7974,7 +8661,7 @@ void httpSetLength(<a href="#http_t">http_t</a> *http, size_t length);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.5/macOS 10.7&#160;</span><a id="httpSetTimeout">httpSetTimeout</a></h3>
 <p class="description">Set read/write timeouts and an optional callback.</p>
 <p class="code">
-void httpSetTimeout(<a href="#http_t">http_t</a> *http, double timeout, <a href="#http_timeout_cb_t">http_timeout_cb_t</a> cb, void *user_data);</p>
+<span class="reserved">void</span> httpSetTimeout(<a href="#http_t">http_t</a> *http, <span class="reserved">double</span> timeout, <a href="#http_timeout_cb_t">http_timeout_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -7994,7 +8681,7 @@ data pointer and must return 1 to continue or 0 to error (time) out.
 <h3 class="function"><span class="info">&#160;CUPS 2.0/OS 10.10&#160;</span><a id="httpShutdown">httpShutdown</a></h3>
 <p class="description">Shutdown one side of an HTTP connection.</p>
 <p class="code">
-void httpShutdown(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">void</span> httpShutdown(<a href="#http_t">http_t</a> *http);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -8003,7 +8690,7 @@ void httpShutdown(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.0/OS 10.10&#160;</span><a id="httpStateString">httpStateString</a></h3>
 <p class="description">Return the string describing a HTTP state value.</p>
 <p class="code">
-const char *httpStateString(<a href="#http_state_t">http_state_t</a> state);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpStateString(<a href="#http_state_t">http_state_t</a> state);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>state</th>
@@ -8014,7 +8701,7 @@ const char *httpStateString(<a href="#http_state_t">http_state_t</a> state);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpStatusString">httpStatusString</a></h3>
 <p class="description">Return a short string describing a HTTP status code.</p>
 <p class="code">
-const char *httpStatusString(http_status_t status);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpStatusString(http_status_t status);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>status</th>
@@ -8030,7 +8717,7 @@ on the status strings defined in RFC 7231.
 <h3 class="function"><span class="info">&#160;CUPS 2.0/OS 10.10&#160;</span><a id="httpURIStatusString">httpURIStatusString</a></h3>
 <p class="description">Return a string describing a URI status code.</p>
 <p class="code">
-const char *httpURIStatusString(<a href="#http_uri_status_t">http_uri_status_t</a> status);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpURIStatusString(<a href="#http_uri_status_t">http_uri_status_t</a> status);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>status</th>
@@ -8052,7 +8739,7 @@ http_status_t httpUpdate(<a href="#http_t">http_t</a> *http);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="httpWait">httpWait</a></h3>
 <p class="description">Wait for data available on a connection.</p>
 <p class="code">
-int httpWait(<a href="#http_t">http_t</a> *http, int msec);</p>
+<span class="reserved">int</span> httpWait(<a href="#http_t">http_t</a> *http, <span class="reserved">int</span> msec);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -8065,7 +8752,7 @@ int httpWait(<a href="#http_t">http_t</a> *http, int msec);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="httpWrite2">httpWrite2</a></h3>
 <p class="description">Write data to a HTTP connection.</p>
 <p class="code">
-ssize_t httpWrite2(<a href="#http_t">http_t</a> *http, const char *buffer, size_t length);</p>
+ssize_t httpWrite2(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *buffer, size_t length);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -8080,7 +8767,7 @@ ssize_t httpWrite2(<a href="#http_t">http_t</a> *http, const char *buffer, size_
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="httpWriteRequest">httpWriteRequest</a></h3>
 <p class="description">Send a HTTP request.</p>
 <p class="code">
-bool httpWriteRequest(<a href="#http_t">http_t</a> *http, const char *method, const char *uri);</p>
+<span class="reserved">bool</span> httpWriteRequest(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *method, <span class="reserved">const</span> <span class="reserved">char</span> *uri);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -8095,7 +8782,7 @@ bool httpWriteRequest(<a href="#http_t">http_t</a> *http, const char *method, co
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="httpWriteResponse">httpWriteResponse</a></h3>
 <p class="description">Write a HTTP response to a client connection.</p>
 <p class="code">
-int httpWriteResponse(<a href="#http_t">http_t</a> *http, http_status_t status);</p>
+<span class="reserved">int</span> httpWriteResponse(<a href="#http_t">http_t</a> *http, http_status_t status);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>http</th>
@@ -8108,7 +8795,7 @@ int httpWriteResponse(<a href="#http_t">http_t</a> *http, http_status_t status);
 <h3 class="function"><a id="ippAddBoolean">ippAddBoolean</a></h3>
 <p class="description">Add a boolean attribute to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBoolean(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, char value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBoolean(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">char</span> value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8134,7 +8821,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h3 class="function"><a id="ippAddBooleans">ippAddBooleans</a></h3>
 <p class="description">Add an array of boolean values.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBooleans(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, int num_values, const char *values);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBooleans(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <span class="reserved">const</span> <span class="reserved">char</span> *values);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8162,7 +8849,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="ippAddCollection">ippAddCollection</a></h3>
 <p class="description">Add a collection value.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollection(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, <a href="#ipp_t">ipp_t</a> *value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollection(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <a href="#ipp_t">ipp_t</a> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8190,7 +8877,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="ippAddCollections">ippAddCollections</a></h3>
 <p class="description">Add an array of collection values.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollections(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, int num_values, const <a href="#ipp_t">ipp_t</a> **values);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollections(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <span class="reserved">const</span> <a href="#ipp_t">ipp_t</a> **values);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8220,7 +8907,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="ippAddCredentialsString">ippAddCredentialsString</a></h3>
 <p class="description">Add a credentials string attribute to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCredentialsString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, const char *credentials);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCredentialsString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *credentials);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8251,7 +8938,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h3 class="function"><a id="ippAddDate">ippAddDate</a></h3>
 <p class="description">Add a dateTime attribute to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddDate(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, const <a href="#ipp_uchar_t">ipp_uchar_t</a> *value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddDate(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <a href="#ipp_uchar_t">ipp_uchar_t</a> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8277,7 +8964,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h3 class="function"><a id="ippAddInteger">ippAddInteger</a></h3>
 <p class="description">Add a integer attribute to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddInteger(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, int value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddInteger(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8310,7 +8997,7 @@ Supported values include enum (<code>IPP_TAG_ENUM</code>) and integer
 <h3 class="function"><a id="ippAddIntegers">ippAddIntegers</a></h3>
 <p class="description">Add an array of integer values.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddIntegers(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, int num_values, const int *values);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddIntegers(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <span class="reserved">const</span> <span class="reserved">int</span> *values);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8343,7 +9030,7 @@ Supported values include enum (<code>IPP_TAG_ENUM</code>) and integer
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ippAddOctetString">ippAddOctetString</a></h3>
 <p class="description">Add an octetString value to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOctetString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, const void *data, int datalen);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOctetString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">void</span> *data, <span class="reserved">int</span> datalen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8373,7 +9060,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippAddOutOfBand">ippAddOutOfBand</a></h3>
 <p class="description">Add an out-of-band value to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOutOfBand(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOutOfBand(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8407,7 +9094,7 @@ admin-define (<code>IPP_TAG_ADMINDEFINE</code>).
 <h3 class="function"><a id="ippAddRange">ippAddRange</a></h3>
 <p class="description">Add a range of values to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRange(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, int lower, int upper);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRange(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> lower, <span class="reserved">int</span> upper);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8437,7 +9124,7 @@ The &quot;lower&quot; parameter must be less than or equal to the &quot;upper&qu
 <h3 class="function"><a id="ippAddRanges">ippAddRanges</a></h3>
 <p class="description">Add ranges of values to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRanges(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, int num_values, const int *lower, const int *upper);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRanges(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <span class="reserved">const</span> <span class="reserved">int</span> *lower, <span class="reserved">const</span> <span class="reserved">int</span> *upper);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8467,7 +9154,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h3 class="function"><a id="ippAddResolution">ippAddResolution</a></h3>
 <p class="description">Add a resolution value to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolution(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, <a href="#ipp_res_t">ipp_res_t</a> units, int xres, int yres);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolution(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <a href="#ipp_res_t">ipp_res_t</a> units, <span class="reserved">int</span> xres, <span class="reserved">int</span> yres);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8497,7 +9184,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h3 class="function"><a id="ippAddResolutions">ippAddResolutions</a></h3>
 <p class="description">Add resolution values to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolutions(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, int num_values, <a href="#ipp_res_t">ipp_res_t</a> units, const int *xres, const int *yres);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolutions(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <a href="#ipp_res_t">ipp_res_t</a> units, <span class="reserved">const</span> <span class="reserved">int</span> *xres, <span class="reserved">const</span> <span class="reserved">int</span> *yres);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8543,7 +9230,7 @@ the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ip
 <h3 class="function"><a id="ippAddString">ippAddString</a></h3>
 <p class="description">Add a language-encoded string to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, const char *language, const char *value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *language, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8583,7 +9270,7 @@ textWithLanguage string values and must be `NULL` for all other string values.</
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="ippAddStringf">ippAddStringf</a></h3>
 <p class="description">Add a formatted string to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringf(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, const char *language, const char *format, ...);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringf(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *language, <span class="reserved">const</span> <span class="reserved">char</span> *format, ...);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8634,7 +9321,7 @@ the corresponding value type.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="ippAddStringfv">ippAddStringfv</a></h3>
 <p class="description">Add a formatted string to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringfv(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, const char *language, const char *format, va_list ap);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringfv(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *language, <span class="reserved">const</span> <span class="reserved">char</span> *format, va_list ap);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8685,7 +9372,7 @@ maximum length of the corresponding value type.
 <h3 class="function"><a id="ippAddStrings">ippAddStrings</a></h3>
 <p class="description">Add language-encoded strings to an IPP message.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStrings(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, int num_values, const char *language, const char *const *values);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStrings(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <span class="reserved">const</span> <span class="reserved">char</span> *language, <span class="reserved">const</span> <span class="reserved">char</span> *const *values);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8727,7 +9414,7 @@ textWithLanguage string values and must be `NULL` for all other string values.</
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippAttributeString">ippAttributeString</a></h3>
 <p class="description">Convert the attribute's value to a string.</p>
 <p class="code">
-size_t ippAttributeString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, char *buffer, size_t bufsize);</p>
+size_t ippAttributeString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -8749,7 +9436,7 @@ just like (v)snprintf.
 <p class="description">Determine whether an attribute contains the
                          specified value or is within the list of ranges.</p>
 <p class="code">
-int ippContainsInteger(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int value);</p>
+<span class="reserved">int</span> ippContainsInteger(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -8769,7 +9456,7 @@ the attribute.
 <p class="description">Determine whether an attribute contains the
                         specified string value.</p>
 <p class="code">
-int ippContainsString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, const char *value);</p>
+<span class="reserved">int</span> ippContainsString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -8787,7 +9474,7 @@ naturalLanguage, mimeMediaType, name, text, uri, or uriScheme value.
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippCopyAttribute">ippCopyAttribute</a></h3>
 <p class="description">Copy an attribute.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippCopyAttribute(<a href="#ipp_t">ipp_t</a> *dst, <a href="#ipp_attribute_t">ipp_attribute_t</a> *srcattr, int quickcopy);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippCopyAttribute(<a href="#ipp_t">ipp_t</a> *dst, <a href="#ipp_attribute_t">ipp_attribute_t</a> *srcattr, <span class="reserved">int</span> quickcopy);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dst</th>
@@ -8809,7 +9496,7 @@ not be freed for the life of the destination.
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippCopyAttributes">ippCopyAttributes</a></h3>
 <p class="description">Copy attributes from one IPP message to another.</p>
 <p class="code">
-int ippCopyAttributes(<a href="#ipp_t">ipp_t</a> *dst, <a href="#ipp_t">ipp_t</a> *src, int quickcopy, <a href="#ipp_copy_cb_t">ipp_copy_cb_t</a> cb, void *context);</p>
+<span class="reserved">int</span> ippCopyAttributes(<a href="#ipp_t">ipp_t</a> *dst, <a href="#ipp_t">ipp_t</a> *src, <span class="reserved">int</span> quickcopy, <a href="#ipp_copy_cb_t">ipp_copy_cb_t</a> cb, <span class="reserved">void</span> *context);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dst</th>
@@ -8841,7 +9528,7 @@ itself.
 <h3 class="function"><a id="ippCopyCredentialsString">ippCopyCredentialsString</a></h3>
 <p class="description">Copy a credentials value from an IPP attribute.</p>
 <p class="code">
-char *ippCopyCredentialsString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
+<span class="reserved">char</span> *ippCopyCredentialsString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -8884,7 +9571,7 @@ using the <code>cupsArrayDelete</code> function.
 <p class="description">Convert from RFC 2579 Date/Time format to time in
                     seconds.</p>
 <p class="code">
-time_t ippDateToTime(const <a href="#ipp_uchar_t">ipp_uchar_t</a> *date);</p>
+time_t ippDateToTime(<span class="reserved">const</span> <a href="#ipp_uchar_t">ipp_uchar_t</a> *date);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>date</th>
@@ -8895,7 +9582,7 @@ time_t ippDateToTime(const <a href="#ipp_uchar_t">ipp_uchar_t</a> *date);</p>
 <h3 class="function"><a id="ippDelete">ippDelete</a></h3>
 <p class="description">Delete an IPP message.</p>
 <p class="code">
-void ippDelete(<a href="#ipp_t">ipp_t</a> *ipp);</p>
+<span class="reserved">void</span> ippDelete(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8904,7 +9591,7 @@ void ippDelete(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="ippDeleteAttribute">ippDeleteAttribute</a></h3>
 <p class="description">Delete a single attribute in an IPP message.</p>
 <p class="code">
-void ippDeleteAttribute(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
+<span class="reserved">void</span> ippDeleteAttribute(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8915,7 +9602,7 @@ void ippDeleteAttribute(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippDeleteValues">ippDeleteValues</a></h3>
 <p class="description">Delete values in an attribute.</p>
 <p class="code">
-int ippDeleteValues(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, int count);</p>
+<span class="reserved">int</span> ippDeleteValues(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">int</span> count);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -8943,7 +9630,7 @@ Deleting all values in an attribute deletes the attribute.
 <h3 class="function"><a id="ippEnumString">ippEnumString</a></h3>
 <p class="description">Return a string corresponding to the enum value.</p>
 <p class="code">
-const char *ippEnumString(const char *attrname, int enumvalue);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippEnumString(<span class="reserved">const</span> <span class="reserved">char</span> *attrname, <span class="reserved">int</span> enumvalue);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attrname</th>
@@ -8956,7 +9643,7 @@ const char *ippEnumString(const char *attrname, int enumvalue);</p>
 <h3 class="function"><a id="ippEnumValue">ippEnumValue</a></h3>
 <p class="description">Return the value associated with a given enum string.</p>
 <p class="code">
-int ippEnumValue(const char *attrname, const char *enumstring);</p>
+<span class="reserved">int</span> ippEnumValue(<span class="reserved">const</span> <span class="reserved">char</span> *attrname, <span class="reserved">const</span> <span class="reserved">char</span> *enumstring);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attrname</th>
@@ -8969,7 +9656,7 @@ int ippEnumValue(const char *attrname, const char *enumstring);</p>
 <h3 class="function"><a id="ippErrorString">ippErrorString</a></h3>
 <p class="description">Return a name for the given status code.</p>
 <p class="code">
-const char *ippErrorString(ipp_status_t error);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippErrorString(ipp_status_t error);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>error</th>
@@ -8980,7 +9667,7 @@ const char *ippErrorString(ipp_status_t error);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ippErrorValue">ippErrorValue</a></h3>
 <p class="description">Return a status code for the given name.</p>
 <p class="code">
-ipp_status_t ippErrorValue(const char *name);</p>
+ipp_status_t ippErrorValue(<span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -8991,7 +9678,7 @@ ipp_status_t ippErrorValue(const char *name);</p>
 <h3 class="function"><a id="ippFileClose">ippFileClose</a></h3>
 <p class="description">Close an IPP data file.</p>
 <p class="code">
-bool ippFileClose(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">bool</span> ippFileClose(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9005,7 +9692,7 @@ be reused for another file as needed.</p>
 <h3 class="function"><a id="ippFileDelete">ippFileDelete</a></h3>
 <p class="description">Close an IPP data file and free all memory.</p>
 <p class="code">
-bool ippFileDelete(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">bool</span> ippFileDelete(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9019,7 +9706,7 @@ associated with it.</p>
 <h3 class="function"><a id="ippFileExpandVars">ippFileExpandVars</a></h3>
 <p class="description">Expand IPP data file and environment variables in a string.</p>
 <p class="code">
-size_t ippFileExpandVars(<a href="#ipp_file_t">ipp_file_t</a> *file, char *dst, const char *src, size_t dstsize);</p>
+size_t ippFileExpandVars(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">char</span> *dst, <span class="reserved">const</span> <span class="reserved">char</span> *src, size_t dstsize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9040,7 +9727,7 @@ destination string.  The</p>
 <h3 class="function"><a id="ippFileGetAttribute">ippFileGetAttribute</a></h3>
 <p class="description">Get a single named attribute from an IPP data file.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFileGetAttribute(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *name, ipp_tag_t value_tag);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFileGetAttribute(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *name, ipp_tag_t value_tag);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9073,7 +9760,7 @@ state.</p>
 <h3 class="function"><a id="ippFileGetFilename">ippFileGetFilename</a></h3>
 <p class="description">Get the filename for an IPP data file.</p>
 <p class="code">
-const char *ippFileGetFilename(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippFileGetFilename(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9086,7 +9773,7 @@ const char *ippFileGetFilename(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
 <h3 class="function"><a id="ippFileGetLineNumber">ippFileGetLineNumber</a></h3>
 <p class="description">Get the current line number in an IPP data file.</p>
 <p class="code">
-int ippFileGetLineNumber(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">int</span> ippFileGetLineNumber(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9099,7 +9786,7 @@ int ippFileGetLineNumber(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
 <h3 class="function"><a id="ippFileGetVar">ippFileGetVar</a></h3>
 <p class="description">Get the value of an IPP data file variable.</p>
 <p class="code">
-const char *ippFileGetVar(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *name);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippFileGetVar(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9115,7 +9802,7 @@ returned if the variable is not set.</p>
 <h3 class="function"><a id="ippFileNew">ippFileNew</a></h3>
 <p class="description">Create a new IPP data file object for reading or writing.</p>
 <p class="code">
-<a href="#ipp_file_t">ipp_file_t</a> *ippFileNew(<a href="#ipp_file_t">ipp_file_t</a> *parent, <a href="#ipp_fattr_cb_t">ipp_fattr_cb_t</a> attr_cb, <a href="#ipp_ferror_cb_t">ipp_ferror_cb_t</a> error_cb, void *cb_data);</p>
+<a href="#ipp_file_t">ipp_file_t</a> *ippFileNew(<a href="#ipp_file_t">ipp_file_t</a> *parent, <a href="#ipp_fattr_cb_t">ipp_fattr_cb_t</a> attr_cb, <a href="#ipp_ferror_cb_t">ipp_ferror_cb_t</a> error_cb, <span class="reserved">void</span> *cb_data);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>parent</th>
@@ -9136,7 +9823,7 @@ parent data file are copied to the new file.</p>
 <h3 class="function"><a id="ippFileOpen">ippFileOpen</a></h3>
 <p class="description">Open an IPP data file for reading or writing.</p>
 <p class="code">
-bool ippFileOpen(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *filename, const char *mode);</p>
+<span class="reserved">bool</span> ippFileOpen(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *filename, <span class="reserved">const</span> <span class="reserved">char</span> *mode);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9155,7 +9842,7 @@ parent data file are copied to the new file.</p>
 <h3 class="function"><a id="ippFileRead">ippFileRead</a></h3>
 <p class="description">Read an IPP data file.</p>
 <p class="code">
-bool ippFileRead(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_ftoken_cb_t">ipp_ftoken_cb_t</a> token_cb, bool with_groups);</p>
+<span class="reserved">bool</span> ippFileRead(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_ftoken_cb_t">ipp_ftoken_cb_t</a> token_cb, <span class="reserved">bool</span> with_groups);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9185,7 +9872,7 @@ directives to define member attributes in the collection.</p>
 <h3 class="function"><a id="ippFileReadToken">ippFileReadToken</a></h3>
 <p class="description">Read a token from an IPP data file.</p>
 <p class="code">
-bool ippFileReadToken(<a href="#ipp_file_t">ipp_file_t</a> *file, char *token, size_t tokensize);</p>
+<span class="reserved">bool</span> ippFileReadToken(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">char</span> *token, size_t tokensize);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9203,7 +9890,7 @@ comments and whitespace as needed.</p>
 <h3 class="function"><a id="ippFileRestorePosition">ippFileRestorePosition</a></h3>
 <p class="description">Restore the previous position in an IPP data file.</p>
 <p class="code">
-bool ippFileRestorePosition(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">bool</span> ippFileRestorePosition(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9217,7 +9904,7 @@ for reading.</p>
 <h3 class="function"><a id="ippFileSavePosition">ippFileSavePosition</a></h3>
 <p class="description">Save the current position in an IPP data file.</p>
 <p class="code">
-bool ippFileSavePosition(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">bool</span> ippFileSavePosition(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9231,7 +9918,7 @@ for reading.</p>
 <h3 class="function"><a id="ippFileSetAttributes">ippFileSetAttributes</a></h3>
 <p class="description">Set the attributes for an IPP data file.</p>
 <p class="code">
-bool ippFileSetAttributes(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_t">ipp_t</a> *attrs);</p>
+<span class="reserved">bool</span> ippFileSetAttributes(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_t">ipp_t</a> *attrs);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9247,7 +9934,7 @@ typically an empty collection created with <a href="#ippNew"><code>ippNew</code>
 <h3 class="function"><a id="ippFileSetGroupTag">ippFileSetGroupTag</a></h3>
 <p class="description">Set the group tag for an IPP data file.</p>
 <p class="code">
-bool ippFileSetGroupTag(<a href="#ipp_file_t">ipp_file_t</a> *file, ipp_tag_t group_tag);</p>
+<span class="reserved">bool</span> ippFileSetGroupTag(<a href="#ipp_file_t">ipp_file_t</a> *file, ipp_tag_t group_tag);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9263,7 +9950,7 @@ from an IPP data file.</p>
 <h3 class="function"><a id="ippFileSetVar">ippFileSetVar</a></h3>
 <p class="description">Set an IPP data file variable to a constant value.</p>
 <p class="code">
-bool ippFileSetVar(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *name, const char *value);</p>
+<span class="reserved">bool</span> ippFileSetVar(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9282,7 +9969,7 @@ the &quot;uri&quot; variable also initializes the &quot;scheme&quot;, &quot;uriu
 <h3 class="function"><a id="ippFileSetVarf">ippFileSetVarf</a></h3>
 <p class="description">Set an IPP data file variable to a formatted value.</p>
 <p class="code">
-bool ippFileSetVarf(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *name, const char *value, ...);</p>
+<span class="reserved">bool</span> ippFileSetVarf(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *value, ...);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9303,7 +9990,7 @@ the &quot;uri&quot; variable also initializes the &quot;scheme&quot;, &quot;uriu
 <h3 class="function"><a id="ippFileWriteAttributes">ippFileWriteAttributes</a></h3>
 <p class="description">Write an IPP message to an IPP data file.</p>
 <p class="code">
-bool ippFileWriteAttributes(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_t">ipp_t</a> *ipp, bool with_groups);</p>
+<span class="reserved">bool</span> ippFileWriteAttributes(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">bool</span> with_groups);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9323,7 +10010,7 @@ in the correct groups.</p>
 <h3 class="function"><a id="ippFileWriteComment">ippFileWriteComment</a></h3>
 <p class="description">Write a comment to an IPP data file.</p>
 <p class="code">
-bool ippFileWriteComment(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *comment, ...);</p>
+<span class="reserved">bool</span> ippFileWriteComment(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *comment, ...);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9341,7 +10028,7 @@ is prefixed with the &quot;#&quot; character and indented as needed.</p>
 <h3 class="function"><a id="ippFileWriteToken">ippFileWriteToken</a></h3>
 <p class="description">Write a token or value string to an IPP data file.</p>
 <p class="code">
-bool ippFileWriteToken(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *token);</p>
+<span class="reserved">bool</span> ippFileWriteToken(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *token);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9357,7 +10044,7 @@ and indenting the string as needed.</p>
 <h3 class="function"><a id="ippFileWriteTokenf">ippFileWriteTokenf</a></h3>
 <p class="description">Write a formatted token or value string to an IPP data file.</p>
 <p class="code">
-bool ippFileWriteTokenf(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *token, ...);</p>
+<span class="reserved">bool</span> ippFileWriteTokenf(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *token, ...);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>file</th>
@@ -9375,7 +10062,7 @@ quoting and indenting the string as needed.</p>
 <h3 class="function"><a id="ippFindAttribute">ippFindAttribute</a></h3>
 <p class="description">Find a named attribute in a request.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindAttribute(<a href="#ipp_t">ipp_t</a> *ipp, const char *name, ipp_tag_t type);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindAttribute(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">const</span> <span class="reserved">char</span> *name, ipp_tag_t type);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9394,7 +10081,7 @@ member names separated by slashes, for example &quot;media-col/media-size&quot;.
 <h3 class="function"><a id="ippFindNextAttribute">ippFindNextAttribute</a></h3>
 <p class="description">Find the next named attribute in a request.</p>
 <p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindNextAttribute(<a href="#ipp_t">ipp_t</a> *ipp, const char *name, ipp_tag_t type);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindNextAttribute(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">const</span> <span class="reserved">char</span> *name, ipp_tag_t type);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9413,7 +10100,7 @@ separated by slashes, for example &quot;media-col/media-size&quot;.</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippGetBoolean">ippGetBoolean</a></h3>
 <p class="description">Get a boolean value for an attribute.</p>
 <p class="code">
-int ippGetBoolean(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element);</p>
+<span class="reserved">int</span> ippGetBoolean(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -9431,7 +10118,7 @@ int ippGetBoolean(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int elem
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippGetCollection">ippGetCollection</a></h3>
 <p class="description">Get a collection value for an attribute.</p>
 <p class="code">
-<a href="#ipp_t">ipp_t</a> *ippGetCollection(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element);</p>
+<a href="#ipp_t">ipp_t</a> *ippGetCollection(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -9449,7 +10136,7 @@ int ippGetBoolean(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int elem
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippGetCount">ippGetCount</a></h3>
 <p class="description">Get the number of values in an attribute.</p>
 <p class="code">
-int ippGetCount(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
+<span class="reserved">int</span> ippGetCount(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -9460,7 +10147,7 @@ int ippGetCount(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippGetDate">ippGetDate</a></h3>
 <p class="description">Get a dateTime value for an attribute.</p>
 <p class="code">
-const <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippGetDate(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element);</p>
+<span class="reserved">const</span> <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippGetDate(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -9500,7 +10187,7 @@ ipp_tag_t ippGetGroupTag(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);<
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippGetInteger">ippGetInteger</a></h3>
 <p class="description">Get the integer/enum value for an attribute.</p>
 <p class="code">
-int ippGetInteger(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element);</p>
+<span class="reserved">int</span> ippGetInteger(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -9529,7 +10216,7 @@ size_t ippGetLength(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippGetName">ippGetName</a></h3>
 <p class="description">Get the attribute name.</p>
 <p class="code">
-const char *ippGetName(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippGetName(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -9551,7 +10238,7 @@ const char *ippGetName(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="ippGetOctetString">ippGetOctetString</a></h3>
 <p class="description">Get an octetString value from an IPP attribute.</p>
 <p class="code">
-void *ippGetOctetString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element, int *datalen);</p>
+<span class="reserved">void</span> *ippGetOctetString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element, <span class="reserved">int</span> *datalen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -9582,13 +10269,13 @@ void *ippGetOctetString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, in
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="ippGetPort">ippGetPort</a></h3>
 <p class="description">Return the default IPP port number.</p>
 <p class="code">
-int ippGetPort(void);</p>
+<span class="reserved">int</span> ippGetPort(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">Port number</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippGetRange">ippGetRange</a></h3>
 <p class="description">Get a rangeOfInteger value from an attribute.</p>
 <p class="code">
-int ippGetRange(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element, int *uppervalue);</p>
+<span class="reserved">int</span> ippGetRange(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element, <span class="reserved">int</span> *uppervalue);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -9608,7 +10295,7 @@ int ippGetRange(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int elemen
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippGetRequestId">ippGetRequestId</a></h3>
 <p class="description">Get the request ID from an IPP message.</p>
 <p class="code">
-int ippGetRequestId(<a href="#ipp_t">ipp_t</a> *ipp);</p>
+<span class="reserved">int</span> ippGetRequestId(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9619,7 +10306,7 @@ int ippGetRequestId(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippGetResolution">ippGetResolution</a></h3>
 <p class="description">Get a resolution value for an attribute.</p>
 <p class="code">
-int ippGetResolution(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element, int *yres, <a href="#ipp_res_t">ipp_res_t</a> *units);</p>
+<span class="reserved">int</span> ippGetResolution(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element, <span class="reserved">int</span> *yres, <a href="#ipp_res_t">ipp_res_t</a> *units);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -9663,7 +10350,7 @@ ipp_status_t ippGetStatusCode(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h3 class="function"><a id="ippGetString">ippGetString</a></h3>
 <p class="description"></p>
 <p class="code">
-const char *ippGetString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element, const char **language);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippGetString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <span class="reserved">char</span> **language);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -9693,7 +10380,7 @@ ipp_tag_t ippGetValueTag(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);<
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippGetVersion">ippGetVersion</a></h3>
 <p class="description">Get the major and minor version number from an IPP message.</p>
 <p class="code">
-int ippGetVersion(<a href="#ipp_t">ipp_t</a> *ipp, int *minor);</p>
+<span class="reserved">int</span> ippGetVersion(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">int</span> *minor);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9706,7 +10393,7 @@ int ippGetVersion(<a href="#ipp_t">ipp_t</a> *ipp, int *minor);</p>
 <h3 class="function"><a id="ippNew">ippNew</a></h3>
 <p class="description">Allocate a new IPP message.</p>
 <p class="code">
-<a href="#ipp_t">ipp_t</a> *ippNew(void);</p>
+<a href="#ipp_t">ipp_t</a> *ippNew(<span class="reserved">void</span>);</p>
 <h4 class="returnvalue">Return Value</h4>
 <p class="description">New IPP message</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ippNewRequest">ippNewRequest</a></h3>
@@ -9749,7 +10436,7 @@ respectively.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ippOpString">ippOpString</a></h3>
 <p class="description">Return a name for the given operation id.</p>
 <p class="code">
-const char *ippOpString(<a href="#ipp_op_t">ipp_op_t</a> op);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippOpString(<a href="#ipp_op_t">ipp_op_t</a> op);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>op</th>
@@ -9760,7 +10447,7 @@ const char *ippOpString(<a href="#ipp_op_t">ipp_op_t</a> op);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ippOpValue">ippOpValue</a></h3>
 <p class="description">Return an operation id for the given name.</p>
 <p class="code">
-<a href="#ipp_op_t">ipp_op_t</a> ippOpValue(const char *name);</p>
+<a href="#ipp_op_t">ipp_op_t</a> ippOpValue(<span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -9784,7 +10471,7 @@ const char *ippOpString(<a href="#ipp_op_t">ipp_op_t</a> op);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="ippReadFile">ippReadFile</a></h3>
 <p class="description">Read data for an IPP message from a file.</p>
 <p class="code">
-<a href="#ipp_state_t">ipp_state_t</a> ippReadFile(int fd, <a href="#ipp_t">ipp_t</a> *ipp);</p>
+<a href="#ipp_state_t">ipp_state_t</a> ippReadFile(<span class="reserved">int</span> fd, <a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fd</th>
@@ -9797,7 +10484,7 @@ const char *ippOpString(<a href="#ipp_op_t">ipp_op_t</a> op);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ippReadIO">ippReadIO</a></h3>
 <p class="description">Read data for an IPP message.</p>
 <p class="code">
-<a href="#ipp_state_t">ipp_state_t</a> ippReadIO(void *src, <a href="#ipp_io_cb_t">ipp_io_cb_t</a> cb, int blocking, <a href="#ipp_t">ipp_t</a> *parent, <a href="#ipp_t">ipp_t</a> *ipp);</p>
+<a href="#ipp_state_t">ipp_state_t</a> ippReadIO(<span class="reserved">void</span> *src, <a href="#ipp_io_cb_t">ipp_io_cb_t</a> cb, <span class="reserved">int</span> blocking, <a href="#ipp_t">ipp_t</a> *parent, <a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>src</th>
@@ -9816,7 +10503,7 @@ const char *ippOpString(<a href="#ipp_op_t">ipp_op_t</a> op);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="ippRestore">ippRestore</a></h3>
 <p class="description">Restore a previously saved find position.</p>
 <p class="code">
-void ippRestore(<a href="#ipp_t">ipp_t</a> *ipp);</p>
+<span class="reserved">void</span> ippRestore(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9825,7 +10512,7 @@ void ippRestore(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 2.5&#160;</span><a id="ippSave">ippSave</a></h3>
 <p class="description">Save the current find position.</p>
 <p class="code">
-void ippSave(<a href="#ipp_t">ipp_t</a> *ipp);</p>
+<span class="reserved">void</span> ippSave(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9834,7 +10521,7 @@ void ippSave(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetBoolean">ippSetBoolean</a></h3>
 <p class="description">Set a boolean value in an attribute.</p>
 <p class="code">
-int ippSetBoolean(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, int boolvalue);</p>
+<span class="reserved">int</span> ippSetBoolean(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">int</span> boolvalue);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9861,7 +10548,7 @@ The &quot;element&quot; parameter specifies which value to set from 0 to
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetCollection">ippSetCollection</a></h3>
 <p class="description">Set a collection value in an attribute.</p>
 <p class="code">
-int ippSetCollection(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, <a href="#ipp_t">ipp_t</a> *colvalue);</p>
+<span class="reserved">int</span> ippSetCollection(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <a href="#ipp_t">ipp_t</a> *colvalue);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9888,7 +10575,7 @@ The &quot;element&quot; parameter specifies which value to set from 0 to
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetDate">ippSetDate</a></h3>
 <p class="description">Set a dateTime value in an attribute.</p>
 <p class="code">
-int ippSetDate(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, const <a href="#ipp_uchar_t">ipp_uchar_t</a> *datevalue);</p>
+<span class="reserved">int</span> ippSetDate(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <a href="#ipp_uchar_t">ipp_uchar_t</a> *datevalue);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9915,7 +10602,7 @@ The &quot;element&quot; parameter specifies which value to set from 0 to
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetGroupTag">ippSetGroupTag</a></h3>
 <p class="description">Set the group tag of an attribute.</p>
 <p class="code">
-int ippSetGroupTag(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, ipp_tag_t group_tag);</p>
+<span class="reserved">int</span> ippSetGroupTag(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, ipp_tag_t group_tag);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9943,7 +10630,7 @@ event notification (<code>IPP_TAG_EVENT_NOTIFICATION</code>), operation
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetInteger">ippSetInteger</a></h3>
 <p class="description">Set an integer or enum value in an attribute.</p>
 <p class="code">
-int ippSetInteger(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, int intvalue);</p>
+<span class="reserved">int</span> ippSetInteger(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">int</span> intvalue);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9970,7 +10657,7 @@ The &quot;element&quot; parameter specifies which value to set from 0 to
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetName">ippSetName</a></h3>
 <p class="description">Set the name of an attribute.</p>
 <p class="code">
-int ippSetName(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, const char *name);</p>
+<span class="reserved">int</span> ippSetName(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -9992,7 +10679,7 @@ The &quot;attr&quot; parameter may be modified as a result of setting the value.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="ippSetOctetString">ippSetOctetString</a></h3>
 <p class="description">Set an octetString value in an IPP attribute.</p>
 <p class="code">
-int ippSetOctetString(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, const void *data, int datalen);</p>
+<span class="reserved">int</span> ippSetOctetString(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <span class="reserved">void</span> *data, <span class="reserved">int</span> datalen);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10021,7 +10708,7 @@ The &quot;element&quot; parameter specifies which value to set from 0 to
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetOperation">ippSetOperation</a></h3>
 <p class="description">Set the operation ID in an IPP request message.</p>
 <p class="code">
-int ippSetOperation(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_op_t">ipp_op_t</a> op);</p>
+<span class="reserved">int</span> ippSetOperation(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_op_t">ipp_op_t</a> op);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10039,7 +10726,7 @@ the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ip
 <h3 class="function"><a id="ippSetPort">ippSetPort</a></h3>
 <p class="description">Set the default port number.</p>
 <p class="code">
-void ippSetPort(int p);</p>
+<span class="reserved">void</span> ippSetPort(<span class="reserved">int</span> p);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>p</th>
@@ -10048,7 +10735,7 @@ void ippSetPort(int p);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetRange">ippSetRange</a></h3>
 <p class="description">Set a rangeOfInteger value in an attribute.</p>
 <p class="code">
-int ippSetRange(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, int lowervalue, int uppervalue);</p>
+<span class="reserved">int</span> ippSetRange(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">int</span> lowervalue, <span class="reserved">int</span> uppervalue);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10077,7 +10764,7 @@ The &quot;element&quot; parameter specifies which value to set from 0 to
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetRequestId">ippSetRequestId</a></h3>
 <p class="description">Set the request ID in an IPP message.</p>
 <p class="code">
-int ippSetRequestId(<a href="#ipp_t">ipp_t</a> *ipp, int request_id);</p>
+<span class="reserved">int</span> ippSetRequestId(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">int</span> request_id);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10097,7 +10784,7 @@ The <code>request_id</code> parameter must be greater than 0.
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetResolution">ippSetResolution</a></h3>
 <p class="description">Set a resolution value in an attribute.</p>
 <p class="code">
-int ippSetResolution(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, <a href="#ipp_res_t">ipp_res_t</a> unitsvalue, int xresvalue, int yresvalue);</p>
+<span class="reserved">int</span> ippSetResolution(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <a href="#ipp_res_t">ipp_res_t</a> unitsvalue, <span class="reserved">int</span> xresvalue, <span class="reserved">int</span> yresvalue);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10128,7 +10815,7 @@ The &quot;element&quot; parameter specifies which value to set from 0 to
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetState">ippSetState</a></h3>
 <p class="description">Set the current state of the IPP message.</p>
 <p class="code">
-int ippSetState(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_state_t">ipp_state_t</a> state);</p>
+<span class="reserved">int</span> ippSetState(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_state_t">ipp_state_t</a> state);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10141,7 +10828,7 @@ int ippSetState(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_state_t">ipp_stat
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetStatusCode">ippSetStatusCode</a></h3>
 <p class="description">Set the status code in an IPP response or event message.</p>
 <p class="code">
-int ippSetStatusCode(<a href="#ipp_t">ipp_t</a> *ipp, ipp_status_t status);</p>
+<span class="reserved">int</span> ippSetStatusCode(<a href="#ipp_t">ipp_t</a> *ipp, ipp_status_t status);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10159,7 +10846,7 @@ the <a href="#ippNew"><code>ippNew</code></a>, <a href="#ippNewRequest"><code>ip
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetString">ippSetString</a></h3>
 <p class="description">Set a string value in an attribute.</p>
 <p class="code">
-int ippSetString(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, const char *strvalue);</p>
+<span class="reserved">int</span> ippSetString(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <span class="reserved">char</span> *strvalue);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10186,7 +10873,7 @@ The &quot;element&quot; parameter specifies which value to set from 0 to
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="ippSetStringf">ippSetStringf</a></h3>
 <p class="description">Set a formatted string value of an attribute.</p>
 <p class="code">
-int ippSetStringf(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, const char *format, ...);</p>
+<span class="reserved">int</span> ippSetStringf(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <span class="reserved">char</span> *format, ...);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10220,7 +10907,7 @@ the corresponding value type.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="ippSetStringfv">ippSetStringfv</a></h3>
 <p class="description">Set a formatted string value of an attribute.</p>
 <p class="code">
-int ippSetStringfv(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, const char *format, va_list ap);</p>
+<span class="reserved">int</span> ippSetStringfv(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <span class="reserved">char</span> *format, va_list ap);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10254,7 +10941,7 @@ the corresponding value type.
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetValueTag">ippSetValueTag</a></h3>
 <p class="description">Set the value tag of an attribute.</p>
 <p class="code">
-int ippSetValueTag(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, ipp_tag_t value_tag);</p>
+<span class="reserved">int</span> ippSetValueTag(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, ipp_tag_t value_tag);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10288,7 +10975,7 @@ code for the current locale.
 <h3 class="function"><span class="info">&#160;CUPS 1.6/macOS 10.8&#160;</span><a id="ippSetVersion">ippSetVersion</a></h3>
 <p class="description">Set the version number in an IPP message.</p>
 <p class="code">
-int ippSetVersion(<a href="#ipp_t">ipp_t</a> *ipp, int major, int minor);</p>
+<span class="reserved">int</span> ippSetVersion(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">int</span> major, <span class="reserved">int</span> minor);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10310,7 +10997,7 @@ The valid version numbers are currently 1.0, 1.1, 2.0, 2.1, and 2.2.
 <h3 class="function"><span class="info">&#160;CUPS 2.0/OS 10.10&#160;</span><a id="ippStateString">ippStateString</a></h3>
 <p class="description">Return the name corresponding to a state value.</p>
 <p class="code">
-const char *ippStateString(<a href="#ipp_state_t">ipp_state_t</a> state);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippStateString(<a href="#ipp_state_t">ipp_state_t</a> state);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>state</th>
@@ -10321,7 +11008,7 @@ const char *ippStateString(<a href="#ipp_state_t">ipp_state_t</a> state);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="ippTagString">ippTagString</a></h3>
 <p class="description">Return the tag name corresponding to a tag value.</p>
 <p class="code">
-const char *ippTagString(ipp_tag_t tag);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippTagString(ipp_tag_t tag);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>tag</th>
@@ -10336,7 +11023,7 @@ const char *ippTagString(ipp_tag_t tag);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.4/macOS 10.6&#160;</span><a id="ippTagValue">ippTagValue</a></h3>
 <p class="description">Return the tag value corresponding to a tag name.</p>
 <p class="code">
-ipp_tag_t ippTagValue(const char *name);</p>
+ipp_tag_t ippTagValue(<span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>name</th>
@@ -10351,7 +11038,7 @@ ipp_tag_t ippTagValue(const char *name);</p>
 <h3 class="function"><a id="ippTimeToDate">ippTimeToDate</a></h3>
 <p class="description">Convert from time in seconds to RFC 2579 format.</p>
 <p class="code">
-const <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippTimeToDate(time_t t);</p>
+<span class="reserved">const</span> <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippTimeToDate(time_t t);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>t</th>
@@ -10362,7 +11049,7 @@ const <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippTimeToDate(time_t t);</p>
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="ippValidateAttribute">ippValidateAttribute</a></h3>
 <p class="description">Validate the contents of an attribute.</p>
 <p class="code">
-int ippValidateAttribute(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
+<span class="reserved">int</span> ippValidateAttribute(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>attr</th>
@@ -10379,7 +11066,7 @@ failure, <a href="#cupsGetErrorString"><code>cupsGetErrorString</code></a> is se
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="ippValidateAttributes">ippValidateAttributes</a></h3>
 <p class="description">Validate all attributes in an IPP message.</p>
 <p class="code">
-int ippValidateAttributes(<a href="#ipp_t">ipp_t</a> *ipp);</p>
+<span class="reserved">int</span> ippValidateAttributes(<a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ipp</th>
@@ -10409,7 +11096,7 @@ set to a human-readable message on failure.
 <h3 class="function"><span class="info">&#160;CUPS 1.1.19/macOS 10.3&#160;</span><a id="ippWriteFile">ippWriteFile</a></h3>
 <p class="description">Write data for an IPP message to a file.</p>
 <p class="code">
-<a href="#ipp_state_t">ipp_state_t</a> ippWriteFile(int fd, <a href="#ipp_t">ipp_t</a> *ipp);</p>
+<a href="#ipp_state_t">ipp_state_t</a> ippWriteFile(<span class="reserved">int</span> fd, <a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>fd</th>
@@ -10422,7 +11109,7 @@ set to a human-readable message on failure.
 <h3 class="function"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="ippWriteIO">ippWriteIO</a></h3>
 <p class="description">Write data for an IPP message.</p>
 <p class="code">
-<a href="#ipp_state_t">ipp_state_t</a> ippWriteIO(void *dst, <a href="#ipp_io_cb_t">ipp_io_cb_t</a> cb, int blocking, <a href="#ipp_t">ipp_t</a> *parent, <a href="#ipp_t">ipp_t</a> *ipp);</p>
+<a href="#ipp_state_t">ipp_state_t</a> ippWriteIO(<span class="reserved">void</span> *dst, <a href="#ipp_io_cb_t">ipp_io_cb_t</a> cb, <span class="reserved">int</span> blocking, <a href="#ipp_t">ipp_t</a> *parent, <a href="#ipp_t">ipp_t</a> *ipp);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>dst</th>
@@ -10441,7 +11128,7 @@ set to a human-readable message on failure.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="pwgFormatSizeName">pwgFormatSizeName</a></h3>
 <p class="description">Generate a PWG self-describing media size name.</p>
 <p class="code">
-int pwgFormatSizeName(char *keyword, size_t keysize, const char *prefix, const char *name, int width, int length, const char *units);</p>
+<span class="reserved">int</span> pwgFormatSizeName(<span class="reserved">char</span> *keyword, size_t keysize, <span class="reserved">const</span> <span class="reserved">char</span> *prefix, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> width, <span class="reserved">int</span> length, <span class="reserved">const</span> <span class="reserved">char</span> *units);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>keyword</th>
@@ -10482,7 +11169,7 @@ are used.
 <p class="description">Initialize a pwg_size_t structure using IPP Job Template
                   attributes.</p>
 <p class="code">
-int pwgInitSize(<a href="#pwg_size_t">pwg_size_t</a> *size, <a href="#ipp_t">ipp_t</a> *job, int *margins_set);</p>
+<span class="reserved">int</span> pwgInitSize(<a href="#pwg_size_t">pwg_size_t</a> *size, <a href="#ipp_t">ipp_t</a> *job, <span class="reserved">int</span> *margins_set);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>size</th>
@@ -10507,7 +11194,7 @@ otherwise it is initialized to 0.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="pwgMediaForLegacy">pwgMediaForLegacy</a></h3>
 <p class="description">Find a PWG media size by ISO/IPP legacy name.</p>
 <p class="code">
-<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForLegacy(const char *legacy);</p>
+<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForLegacy(<span class="reserved">const</span> <span class="reserved">char</span> *legacy);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>legacy</th>
@@ -10523,7 +11210,7 @@ otherwise it is initialized to 0.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="pwgMediaForPPD">pwgMediaForPPD</a></h3>
 <p class="description">Find a PWG media size by Adobe PPD name.</p>
 <p class="code">
-<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForPPD(const char *ppd);</p>
+<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForPPD(<span class="reserved">const</span> <span class="reserved">char</span> *ppd);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>ppd</th>
@@ -10545,7 +11232,7 @@ thread.  Custom names can be of the form &quot;Custom.WIDTHxLENGTH[units]&quot;
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="pwgMediaForPWG">pwgMediaForPWG</a></h3>
 <p class="description">Find a PWG media size by 5101.1 self-describing name.</p>
 <p class="code">
-<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForPWG(const char *pwg);</p>
+<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForPWG(<span class="reserved">const</span> <span class="reserved">char</span> *pwg);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>pwg</th>
@@ -10565,7 +11252,7 @@ thread.
 <h3 class="function"><span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span><a id="pwgMediaForSize">pwgMediaForSize</a></h3>
 <p class="description">Get the PWG media size for the given dimensions.</p>
 <p class="code">
-<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForSize(int width, int length);</p>
+<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForSize(<span class="reserved">int</span> width, <span class="reserved">int</span> length);</p>
 <h4 class="parameters">Parameters</h4>
 <table class="list"><tbody>
 <tr><th>width</th>
@@ -10820,6 +11507,11 @@ typedef pthread_mutex_t cups_mutex_t;
 <p class="code">
 typedef const char *(*)(http_t *http, const char *realm, const char *scope, const char *resource, void *user_data)cups_oauth_cb_t;
 </p>
+<h3 class="typedef"><a id="cups_ogrant_t">cups_ogrant_t</a></h3>
+<p class="description">OAuth Grant Types</p>
+<p class="code">
+typedef enum <a href="#cups_ogrant_e">cups_ogrant_e</a> cups_ogrant_t;
+</p>
 <h3 class="typedef"><a id="cups_option_t">cups_option_t</a></h3>
 <p class="description">Printer Options</p>
 <p class="code">
@@ -10935,7 +11627,7 @@ typedef unsigned long cups_vbcs_t;
 <p class="code">
 typedef enum <a href="#cups_whichjobs_e">cups_whichjobs_e</a> cups_whichjobs_t;
 </p>
-<h3 class="typedef"><a id="http_addr_t"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span>http_addr_t</a></h3>
+<h3 class="typedef"><a id="http_addr_t"><span class="info">&#160;CUPS 1.2&#160;</span>http_addr_t</a></h3>
 <p class="description">Socket address union, which makes using IPv6 and other address types easier and more portable. </p>
 <p class="code">
 typedef union _http_addr_u http_addr_t;
@@ -10980,7 +11672,7 @@ typedef enum <a href="#http_state_e">http_state_e</a> http_state_t;
 <p class="code">
 typedef struct _http_s http_t;
 </p>
-<h3 class="typedef"><a id="http_timeout_cb_t"><span class="info">&#160;CUPS 1.5/macOS 10.7&#160;</span>http_timeout_cb_t</a></h3>
+<h3 class="typedef"><a id="http_timeout_cb_t"><span class="info">&#160;CUPS 1.5&#160;</span>http_timeout_cb_t</a></h3>
 <p class="description">HTTP timeout callback </p>
 <p class="code">
 typedef int(*)(http_t *http, void *user_data)http_timeout_cb_t;
@@ -11093,9 +11785,9 @@ typedef struct <a href="#pwg_media_s">pwg_media_s</a> pwg_media_t;
 <h2 class="title"><a id="STRUCTURES">Structures</a></h2>
 <h3 class="struct"><a id="cups_dentry_s">cups_dentry_s</a></h3>
 <p class="description">Directory entry type</p>
-<p class="code">struct cups_dentry_s {<br>
-&#160;&#160;&#160;&#160;struct stat fileinfo;<br>
-&#160;&#160;&#160;&#160;char filename[260];<br>
+<p class="code"><span class="reserved">struct</span> cups_dentry_s {<br>
+&#160;&#160;&#160;&#160;<span class="reserved">struct</span> stat fileinfo;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> filename[260];<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -11106,10 +11798,10 @@ typedef struct <a href="#pwg_media_s">pwg_media_s</a> pwg_media_t;
 </tbody></table>
 <h3 class="struct"><a id="cups_dest_s">cups_dest_s</a></h3>
 <p class="description">Destination</p>
-<p class="code">struct cups_dest_s {<br>
-&#160;&#160;&#160;&#160;char *name, *instance;<br>
-&#160;&#160;&#160;&#160;int is_default;<br>
-&#160;&#160;&#160;&#160;int num_options;<br>
+<p class="code"><span class="reserved">struct</span> cups_dest_s {<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> *name, *instance;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">int</span> is_default;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">int</span> num_options;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_option_t">cups_option_t</a> *options;<br>
 };</p>
 <h4 class="members">Members</h4>
@@ -11125,18 +11817,18 @@ typedef struct <a href="#pwg_media_s">pwg_media_s</a> pwg_media_t;
 </tbody></table>
 <h3 class="struct"><a id="cups_job_s">cups_job_s</a></h3>
 <p class="description">Job information</p>
-<p class="code">struct cups_job_s {<br>
+<p class="code"><span class="reserved">struct</span> cups_job_s {<br>
 &#160;&#160;&#160;&#160;time_t completed_time;<br>
 &#160;&#160;&#160;&#160;time_t creation_time;<br>
-&#160;&#160;&#160;&#160;char *dest;<br>
-&#160;&#160;&#160;&#160;char *format;<br>
-&#160;&#160;&#160;&#160;int id;<br>
-&#160;&#160;&#160;&#160;int priority;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> *dest;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> *format;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">int</span> id;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">int</span> priority;<br>
 &#160;&#160;&#160;&#160;time_t processing_time;<br>
-&#160;&#160;&#160;&#160;int size;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">int</span> size;<br>
 &#160;&#160;&#160;&#160;<a href="#ipp_jstate_t">ipp_jstate_t</a> state;<br>
-&#160;&#160;&#160;&#160;char *title;<br>
-&#160;&#160;&#160;&#160;char *user;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> *title;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> *user;<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -11165,11 +11857,11 @@ typedef struct <a href="#pwg_media_s">pwg_media_s</a> pwg_media_t;
 </tbody></table>
 <h3 class="struct"><a id="cups_lang_s">cups_lang_s</a></h3>
 <p class="description">Language Cache Structure</p>
-<p class="code">struct cups_lang_s {<br>
+<p class="code"><span class="reserved">struct</span> cups_lang_s {<br>
 &#160;&#160;&#160;&#160;<a href="#cups_encoding_t">cups_encoding_t</a> encoding;<br>
-&#160;&#160;&#160;&#160;char language[16];<br>
-&#160;&#160;&#160;&#160;struct <a href="#cups_lang_s">cups_lang_s</a> *next;<br>
-&#160;&#160;&#160;&#160;int used;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> language[16];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">struct</span> <a href="#cups_lang_s">cups_lang_s</a> *next;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">int</span> used;<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -11184,9 +11876,9 @@ typedef struct <a href="#pwg_media_s">pwg_media_s</a> pwg_media_t;
 </tbody></table>
 <h3 class="struct"><span class="info">&#160;CUPS 2.5&#160;</span><a id="cups_media_s">cups_media_s</a></h3>
 <p class="description">Media information </p>
-<p class="code">struct cups_media_s {<br>
-&#160;&#160;&#160;&#160;int width, length, bottom, left, right, top;<br>
-&#160;&#160;&#160;&#160;char media[128], color[128], source[128], type[128];<br>
+<p class="code"><span class="reserved">struct</span> cups_media_s {<br>
+&#160;&#160;&#160;&#160;<span class="reserved">int</span> width, length, bottom, left, right, top;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> media[128], color[128], source[128], type[128];<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -11197,9 +11889,9 @@ typedef struct <a href="#pwg_media_s">pwg_media_s</a> pwg_media_t;
 </tbody></table>
 <h3 class="struct"><a id="cups_option_s">cups_option_s</a></h3>
 <p class="description">Printer Options</p>
-<p class="code">struct cups_option_s {<br>
-&#160;&#160;&#160;&#160;char *name;<br>
-&#160;&#160;&#160;&#160;char *value;<br>
+<p class="code"><span class="reserved">struct</span> cups_option_s {<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> *name;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> *value;<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -11210,56 +11902,56 @@ typedef struct <a href="#pwg_media_s">pwg_media_s</a> pwg_media_t;
 </tbody></table>
 <h3 class="struct"><span class="info">&#160;CUPS 1.2/macOS 10.5&#160;</span><a id="cups_page_header2_s">cups_page_header2_s</a></h3>
 <p class="description">Version 2 page header </p>
-<p class="code">struct cups_page_header2_s {<br>
-&#160;&#160;&#160;&#160;unsigned AdvanceDistance;<br>
+<p class="code"><span class="reserved">struct</span> cups_page_header2_s {<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> AdvanceDistance;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_adv_t">cups_adv_t</a> AdvanceMedia;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> Collate;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_cut_t">cups_cut_t</a> CutMedia;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> Duplex;<br>
-&#160;&#160;&#160;&#160;unsigned HWResolution[2];<br>
-&#160;&#160;&#160;&#160;unsigned ImagingBoundingBox[4];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> HWResolution[2];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> ImagingBoundingBox[4];<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> InsertSheet;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_jog_t">cups_jog_t</a> Jog;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_edge_t">cups_edge_t</a> LeadingEdge;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> ManualFeed;<br>
-&#160;&#160;&#160;&#160;unsigned Margins[2];<br>
-&#160;&#160;&#160;&#160;char MediaClass[64];<br>
-&#160;&#160;&#160;&#160;char MediaColor[64];<br>
-&#160;&#160;&#160;&#160;unsigned MediaPosition;<br>
-&#160;&#160;&#160;&#160;char MediaType[64];<br>
-&#160;&#160;&#160;&#160;unsigned MediaWeight;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> Margins[2];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> MediaClass[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> MediaColor[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> MediaPosition;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> MediaType[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> MediaWeight;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> MirrorPrint;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> NegativePrint;<br>
-&#160;&#160;&#160;&#160;unsigned NumCopies;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> NumCopies;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_orient_t">cups_orient_t</a> Orientation;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> OutputFaceUp;<br>
-&#160;&#160;&#160;&#160;char OutputType[64];<br>
-&#160;&#160;&#160;&#160;unsigned PageSize[2];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> OutputType[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> PageSize[2];<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> Separations;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> TraySwitch;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> Tumble;<br>
-&#160;&#160;&#160;&#160;unsigned cupsBitsPerColor;<br>
-&#160;&#160;&#160;&#160;unsigned cupsBitsPerPixel;<br>
-&#160;&#160;&#160;&#160;float cupsBorderlessScalingFactor;<br>
-&#160;&#160;&#160;&#160;unsigned cupsBytesPerLine;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsBitsPerColor;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsBitsPerPixel;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">float</span> cupsBorderlessScalingFactor;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsBytesPerLine;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_order_t">cups_order_t</a> cupsColorOrder;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_cspace_t">cups_cspace_t</a> cupsColorSpace;<br>
-&#160;&#160;&#160;&#160;unsigned cupsCompression;<br>
-&#160;&#160;&#160;&#160;unsigned cupsHeight;<br>
-&#160;&#160;&#160;&#160;float cupsImagingBBox[4];<br>
-&#160;&#160;&#160;&#160;unsigned cupsInteger[16];<br>
-&#160;&#160;&#160;&#160;char cupsMarkerType[64];<br>
-&#160;&#160;&#160;&#160;unsigned cupsMediaType;<br>
-&#160;&#160;&#160;&#160;unsigned cupsNumColors;<br>
-&#160;&#160;&#160;&#160;char cupsPageSizeName[64];<br>
-&#160;&#160;&#160;&#160;float cupsPageSize[2];<br>
-&#160;&#160;&#160;&#160;float cupsReal[16];<br>
-&#160;&#160;&#160;&#160;char cupsRenderingIntent[64];<br>
-&#160;&#160;&#160;&#160;unsigned cupsRowCount;<br>
-&#160;&#160;&#160;&#160;unsigned cupsRowFeed;<br>
-&#160;&#160;&#160;&#160;unsigned cupsRowStep;<br>
-&#160;&#160;&#160;&#160;char cupsString[16][64];<br>
-&#160;&#160;&#160;&#160;unsigned cupsWidth;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsCompression;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsHeight;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">float</span> cupsImagingBBox[4];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsInteger[16];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> cupsMarkerType[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsMediaType;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsNumColors;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> cupsPageSizeName[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">float</span> cupsPageSize[2];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">float</span> cupsReal[16];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> cupsRenderingIntent[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsRowCount;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsRowFeed;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsRowStep;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> cupsString[16][64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsWidth;<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -11367,46 +12059,46 @@ factor not applied) </td></tr>
 </tbody></table>
 <h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="cups_page_header_s">cups_page_header_s</a></h3>
 <p class="description">Version 1 page header </p>
-<p class="code">struct cups_page_header_s {<br>
-&#160;&#160;&#160;&#160;unsigned AdvanceDistance;<br>
+<p class="code"><span class="reserved">struct</span> cups_page_header_s {<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> AdvanceDistance;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_adv_t">cups_adv_t</a> AdvanceMedia;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> Collate;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_cut_t">cups_cut_t</a> CutMedia;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> Duplex;<br>
-&#160;&#160;&#160;&#160;unsigned HWResolution[2];<br>
-&#160;&#160;&#160;&#160;unsigned ImagingBoundingBox[4];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> HWResolution[2];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> ImagingBoundingBox[4];<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> InsertSheet;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_jog_t">cups_jog_t</a> Jog;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_edge_t">cups_edge_t</a> LeadingEdge;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> ManualFeed;<br>
-&#160;&#160;&#160;&#160;unsigned Margins[2];<br>
-&#160;&#160;&#160;&#160;char MediaClass[64];<br>
-&#160;&#160;&#160;&#160;char MediaColor[64];<br>
-&#160;&#160;&#160;&#160;unsigned MediaPosition;<br>
-&#160;&#160;&#160;&#160;char MediaType[64];<br>
-&#160;&#160;&#160;&#160;unsigned MediaWeight;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> Margins[2];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> MediaClass[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> MediaColor[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> MediaPosition;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> MediaType[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> MediaWeight;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> MirrorPrint;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> NegativePrint;<br>
-&#160;&#160;&#160;&#160;unsigned NumCopies;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> NumCopies;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_orient_t">cups_orient_t</a> Orientation;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> OutputFaceUp;<br>
-&#160;&#160;&#160;&#160;char OutputType[64];<br>
-&#160;&#160;&#160;&#160;unsigned PageSize[2];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> OutputType[64];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> PageSize[2];<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> Separations;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> TraySwitch;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_bool_t">cups_bool_t</a> Tumble;<br>
-&#160;&#160;&#160;&#160;unsigned cupsBitsPerColor;<br>
-&#160;&#160;&#160;&#160;unsigned cupsBitsPerPixel;<br>
-&#160;&#160;&#160;&#160;unsigned cupsBytesPerLine;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsBitsPerColor;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsBitsPerPixel;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsBytesPerLine;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_order_t">cups_order_t</a> cupsColorOrder;<br>
 &#160;&#160;&#160;&#160;<a href="#cups_cspace_t">cups_cspace_t</a> cupsColorSpace;<br>
-&#160;&#160;&#160;&#160;unsigned cupsCompression;<br>
-&#160;&#160;&#160;&#160;unsigned cupsHeight;<br>
-&#160;&#160;&#160;&#160;unsigned cupsMediaType;<br>
-&#160;&#160;&#160;&#160;unsigned cupsRowCount;<br>
-&#160;&#160;&#160;&#160;unsigned cupsRowFeed;<br>
-&#160;&#160;&#160;&#160;unsigned cupsRowStep;<br>
-&#160;&#160;&#160;&#160;unsigned cupsWidth;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsCompression;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsHeight;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsMediaType;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsRowCount;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsRowFeed;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsRowStep;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">unsigned</span> cupsWidth;<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -11491,9 +12183,9 @@ factor not applied) </td></tr>
 </tbody></table>
 <h3 class="struct"><span class="info">&#160;DEPRECATED&#160;</span><a id="cups_size_s">cups_size_s</a></h3>
 <p class="description">Media Size </p>
-<p class="code">struct cups_size_s {<br>
-&#160;&#160;&#160;&#160;char media[128];<br>
-&#160;&#160;&#160;&#160;int width, length, bottom, left, right, top;<br>
+<p class="code"><span class="reserved">struct</span> cups_size_s {<br>
+&#160;&#160;&#160;&#160;<span class="reserved">char</span> media[128];<br>
+&#160;&#160;&#160;&#160;<span class="reserved">int</span> width, length, bottom, left, right, top;<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -11504,9 +12196,9 @@ factor not applied) </td></tr>
 </tbody></table>
 <h3 class="struct"><a id="pwg_media_s">pwg_media_s</a></h3>
 <p class="description">Common media size data</p>
-<p class="code">struct pwg_media_s {<br>
-&#160;&#160;&#160;&#160;int width, length;<br>
-&#160;&#160;&#160;&#160;const char *pwg, *legacy, *ppd;<br>
+<p class="code"><span class="reserved">struct</span> pwg_media_s {<br>
+&#160;&#160;&#160;&#160;<span class="reserved">int</span> width, length;<br>
+&#160;&#160;&#160;&#160;<span class="reserved">const</span> <span class="reserved">char</span> *pwg, *legacy, *ppd;<br>
 };</p>
 <h4 class="members">Members</h4>
 <table class="list"><tbody>
@@ -11753,6 +12445,14 @@ factor not applied) </td></tr>
 <tr><th>CUPS_MEDIA_FLAGS_EXACT </th><td class="description">Find an exact match for the size</td></tr>
 <tr><th>CUPS_MEDIA_FLAGS_READY </th><td class="description">If the printer supports media sensing, find the size amongst the &quot;ready&quot; media.</td></tr>
 </tbody></table>
+<h3 class="enumeration"><a id="cups_ogrant_e">cups_ogrant_e</a></h3>
+<p class="description">OAuth Grant Types</p>
+<h4 class="constants">Constants</h4>
+<table class="list"><tbody>
+<tr><th>CUPS_OGRANT_AUTHORIZATION_CODE </th><td class="description">Authorization code</td></tr>
+<tr><th>CUPS_OGRANT_DEVICE_CODE </th><td class="description">Device code</td></tr>
+<tr><th>CUPS_OGRANT_REFRESH_TOKEN </th><td class="description">Refresh token</td></tr>
+</tbody></table>
 <h3 class="enumeration"><a id="cups_order_e">cups_order_e</a></h3>
 <p class="description">cupsColorOrder attribute values</p>
 <h4 class="constants">Constants</h4>
@@ -11840,7 +12540,8 @@ factor not applied) </td></tr>
 <p class="description">HTTP field names</p>
 <h4 class="constants">Constants</h4>
 <table class="list"><tbody>
-<tr><th>HTTP_FIELD_ACCEPT_ENCODING <span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span></th><td class="description">Accepting-Encoding field </td></tr>
+<tr><th>HTTP_FIELD_ACCEPT <span class="info">&#160;CUPS 2.5&#160;</span></th><td class="description">Accept field </td></tr>
+<tr><th>HTTP_FIELD_ACCEPT_ENCODING <span class="info">&#160;CUPS 1.7&#160;</span></th><td class="description">Accepting-Encoding field </td></tr>
 <tr><th>HTTP_FIELD_ACCEPT_LANGUAGE </th><td class="description">Accept-Language field</td></tr>
 <tr><th>HTTP_FIELD_ACCEPT_RANGES </th><td class="description">Accept-Ranges field</td></tr>
 <tr><th>HTTP_FIELD_ACCESS_CONTROL_ALLOW_CREDENTIALS <span class="info">&#160;CUPS 2.4&#160;</span></th><td class="description">CORS/Fetch Access-Control-Allow-Credentials field </td></tr>
@@ -11851,7 +12552,7 @@ factor not applied) </td></tr>
 <tr><th>HTTP_FIELD_ACCESS_CONTROL_MAX_AGE <span class="info">&#160;CUPS 2.4&#160;</span></th><td class="description">CORS/Fetch Access-Control-Max-Age field </td></tr>
 <tr><th>HTTP_FIELD_ACCESS_CONTROL_REQUEST_HEADERS <span class="info">&#160;CUPS 2.4&#160;</span></th><td class="description">CORS/Fetch Access-Control-Request-Headers field </td></tr>
 <tr><th>HTTP_FIELD_ACCESS_CONTROL_REQUEST_METHOD <span class="info">&#160;CUPS 2.4&#160;</span></th><td class="description">CORS/Fetch Access-Control-Request-Method field </td></tr>
-<tr><th>HTTP_FIELD_ALLOW <span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span></th><td class="description">Allow field </td></tr>
+<tr><th>HTTP_FIELD_ALLOW <span class="info">&#160;CUPS 1.7&#160;</span></th><td class="description">Allow field </td></tr>
 <tr><th>HTTP_FIELD_AUTHENTICATION_INFO <span class="info">&#160;CUPS 2.2.9&#160;</span></th><td class="description">Authentication-Info field </td></tr>
 <tr><th>HTTP_FIELD_AUTHORIZATION </th><td class="description">Authorization field</td></tr>
 <tr><th>HTTP_FIELD_CONNECTION </th><td class="description">Connection field</td></tr>
@@ -11878,7 +12579,7 @@ factor not applied) </td></tr>
 <tr><th>HTTP_FIELD_RANGE </th><td class="description">Range field</td></tr>
 <tr><th>HTTP_FIELD_REFERER </th><td class="description">Referer field</td></tr>
 <tr><th>HTTP_FIELD_RETRY_AFTER </th><td class="description">Retry-After field</td></tr>
-<tr><th>HTTP_FIELD_SERVER <span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span></th><td class="description">Server field </td></tr>
+<tr><th>HTTP_FIELD_SERVER <span class="info">&#160;CUPS 1.7&#160;</span></th><td class="description">Server field </td></tr>
 <tr><th>HTTP_FIELD_STRICT_TRANSPORT_SECURITY <span class="info">&#160;CUPS 2.4&#160;</span></th><td class="description">HSTS Strict-Transport-Security field </td></tr>
 <tr><th>HTTP_FIELD_TRANSFER_ENCODING </th><td class="description">Transfer-Encoding field</td></tr>
 <tr><th>HTTP_FIELD_UNKNOWN </th><td class="description">Unknown field</td></tr>
@@ -11919,8 +12620,8 @@ factor not applied) </td></tr>
 <tr><th>HTTP_STATE_PUT_RECV </th><td class="description">PUT command, receiving data</td></tr>
 <tr><th>HTTP_STATE_STATUS </th><td class="description">Command complete, sending status</td></tr>
 <tr><th>HTTP_STATE_TRACE </th><td class="description">TRACE command, waiting for blank line</td></tr>
-<tr><th>HTTP_STATE_UNKNOWN_METHOD <span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span></th><td class="description">Unknown request method, waiting for blank line </td></tr>
-<tr><th>HTTP_STATE_UNKNOWN_VERSION <span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span></th><td class="description">Unknown request method, waiting for blank line </td></tr>
+<tr><th>HTTP_STATE_UNKNOWN_METHOD <span class="info">&#160;CUPS 1.7&#160;</span></th><td class="description">Unknown request method, waiting for blank line </td></tr>
+<tr><th>HTTP_STATE_UNKNOWN_VERSION <span class="info">&#160;CUPS 1.7&#160;</span></th><td class="description">Unknown request method, waiting for blank line </td></tr>
 <tr><th>HTTP_STATE_WAITING </th><td class="description">Waiting for command</td></tr>
 </tbody></table>
 <h3 class="enumeration"><a id="http_status_e">http_status_e</a></h3>
@@ -11936,7 +12637,7 @@ factor not applied) </td></tr>
 <tr><th>HTTP_STATUS_CONTINUE </th><td class="description">Everything OK, keep going...</td></tr>
 <tr><th>HTTP_STATUS_CREATED </th><td class="description">PUT command was successful</td></tr>
 <tr><th>HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED <span class="info">&#160;CUPS 1.4&#160;</span></th><td class="description">User canceled authorization </td></tr>
-<tr><th>HTTP_STATUS_CUPS_PKI_ERROR <span class="info">&#160;CUPS 1.5/macOS 10.7&#160;</span></th><td class="description">Error negotiating a secure connection </td></tr>
+<tr><th>HTTP_STATUS_CUPS_PKI_ERROR <span class="info">&#160;CUPS 1.5&#160;</span></th><td class="description">Error negotiating a secure connection </td></tr>
 <tr><th>HTTP_STATUS_ERROR </th><td class="description">An error response from httpXxxx()</td></tr>
 <tr><th>HTTP_STATUS_EXPECTATION_FAILED </th><td class="description">The expectation given in an Expect header field was not met</td></tr>
 <tr><th>HTTP_STATUS_FAILED_DEPENDENCY </th><td class="description">Failed dependency (WebDAV)</td></tr>
@@ -11954,7 +12655,7 @@ factor not applied) </td></tr>
 <tr><th>HTTP_STATUS_MULTIPLE_CHOICES </th><td class="description">Multiple files match request</td></tr>
 <tr><th>HTTP_STATUS_MULTI_STATUS </th><td class="description">Multiple status codes (WebDAV)</td></tr>
 <tr><th>HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED </th><td class="description">Network Authentication Required (WebDAV)</td></tr>
-<tr><th>HTTP_STATUS_NONE <span class="info">&#160;CUPS 1.7/macOS 10.9&#160;</span></th><td class="description">No Expect value </td></tr>
+<tr><th>HTTP_STATUS_NONE <span class="info">&#160;CUPS 1.7&#160;</span></th><td class="description">No Expect value </td></tr>
 <tr><th>HTTP_STATUS_NOT_ACCEPTABLE </th><td class="description">Not Acceptable</td></tr>
 <tr><th>HTTP_STATUS_NOT_AUTHORITATIVE </th><td class="description">Information isn't authoritative</td></tr>
 <tr><th>HTTP_STATUS_NOT_FOUND </th><td class="description">URI was not found</td></tr>
@@ -12282,6 +12983,7 @@ factor not applied) </td></tr>
 <tr><th>IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED <span class="info">&#160;DEPRECATED&#160;</span></th><td class="description">cups-error-account-info-needed </td></tr>
 <tr><th>IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED <span class="info">&#160;DEPRECATED&#160;</span></th><td class="description">cups-error-account-limit-reached </td></tr>
 <tr><th>IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED <span class="info">&#160;CUPS 1.5/macOS 10.7&#160;</span></th><td class="description">cups-authentication-canceled - Authentication canceled by user </td></tr>
+<tr><th>IPP_STATUS_ERROR_CUPS_OAUTH </th><td class="description">cups-oauth - OAuth error</td></tr>
 <tr><th>IPP_STATUS_ERROR_CUPS_PKI <span class="info">&#160;CUPS 1.5/macOS 10.7&#160;</span></th><td class="description">cups-pki-error - Error negotiating a secure connection </td></tr>
 <tr><th>IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED <span class="info">&#160;CUPS 1.5/macOS 10.7&#160;</span></th><td class="description">cups-upgrade-required - TLS upgrade required </td></tr>
 <tr><th>IPP_STATUS_ERROR_DEVICE </th><td class="description">server-error-device-error</td></tr>
@@ -12338,6 +13040,7 @@ factor not applied) </td></tr>
 <tr><th>IPP_TAG_END </th><td class="description">End-of-attributes</td></tr>
 <tr><th>IPP_TAG_ENUM </th><td class="description">Enumeration value</td></tr>
 <tr><th>IPP_TAG_EVENT_NOTIFICATION </th><td class="description">Event group</td></tr>
+<tr><th>IPP_TAG_EXTENSION </th><td class="description">Extension point for 32-bit tags (part of value)</td></tr>
 <tr><th>IPP_TAG_INTEGER </th><td class="description">Integer value</td></tr>
 <tr><th>IPP_TAG_JOB </th><td class="description">Job group</td></tr>
 <tr><th>IPP_TAG_KEYWORD </th><td class="description">Keyword value</td></tr>
index 12d950a6ad9401cd8b8808e12247b7ad8f06a0c6..0cca4c507abc15235819530d68599d2c7da96cc2 100644 (file)
     <ClCompile Include="..\cups\adminutil.c" />
     <ClCompile Include="..\cups\array.c" />
     <ClCompile Include="..\cups\auth.c" />
+    <ClCompile Include="..\cups\clock.c" />
     <ClCompile Include="..\cups\debug.c" />
     <ClCompile Include="..\cups\dest-job.c" />
     <ClCompile Include="..\cups\dest-localization.c" />
index ad287fe009869b7a580c93ad6f3ac0c10d0b08f3..878f557a7b513ec7003dfb176e572055d51d6236 100644 (file)
@@ -13,6 +13,7 @@
                        buildPhases = (
                        );
                        dependencies = (
+                               275CEA452CC8411A008FBB27 /* PBXTargetDependency */,
                                271284911CC11FA500E517C7 /* PBXTargetDependency */,
                                271284931CC11FA500E517C7 /* PBXTargetDependency */,
                                271284951CC11FA500E517C7 /* PBXTargetDependency */,
                2758FE282C8FBE0F0078480C /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 275125E02AB7480D001F69F2 /* libssl.a */; };
                2758FE292C8FBE300078480C /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 275125DF2AB7480D001F69F2 /* libcrypto.a */; };
                2758FE2A2C8FBE300078480C /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 275125E02AB7480D001F69F2 /* libssl.a */; };
+               275CEA292CC840B1008FBB27 /* clock.c in Sources */ = {isa = PBXBuildFile; fileRef = 275CEA282CC840B1008FBB27 /* clock.c */; };
+               275CEA2A2CC840B1008FBB27 /* clock.c in Sources */ = {isa = PBXBuildFile; fileRef = 275CEA282CC840B1008FBB27 /* clock.c */; };
+               275CEA2B2CC840B1008FBB27 /* clock.c in Sources */ = {isa = PBXBuildFile; fileRef = 275CEA282CC840B1008FBB27 /* clock.c */; };
+               275CEA332CC840EE008FBB27 /* libcupsimage2_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 724FA70F1CC03A490092477B /* libcupsimage2_static.a */; };
+               275CEA342CC840EE008FBB27 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 275125DF2AB7480D001F69F2 /* libcrypto.a */; };
+               275CEA352CC840EE008FBB27 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 275125E02AB7480D001F69F2 /* libssl.a */; };
+               275CEA362CC840EE008FBB27 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC591926750C000F61D3 /* CoreFoundation.framework */; };
+               275CEA372CC840EE008FBB27 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5A1926750C000F61D3 /* libiconv.dylib */; };
+               275CEA382CC840EE008FBB27 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5B1926750C000F61D3 /* libresolv.dylib */; };
+               275CEA392CC840EE008FBB27 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5C1926750C000F61D3 /* libz.dylib */; };
+               275CEA3A2CC840EE008FBB27 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5D1926750C000F61D3 /* Security.framework */; };
+               275CEA3B2CC840EE008FBB27 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2767FC5E1926750C000F61D3 /* SystemConfiguration.framework */; };
+               275CEA3C2CC840EE008FBB27 /* GSS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 72D53A2915B49110003F877F /* GSS.framework */; };
+               275CEA3D2CC840EE008FBB27 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
+               275CEA432CC8410C008FBB27 /* testclock.c in Sources */ = {isa = PBXBuildFile; fileRef = 275CEA2C2CC840DF008FBB27 /* testclock.c */; };
                276683671337A9E0000D33D0 /* libcups2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups2.dylib */; };
                276683691337AA00000D33D0 /* cupsctl.c in Sources */ = {isa = PBXBuildFile; fileRef = 276683681337AA00000D33D0 /* cupsctl.c */; };
                276683B11337AD06000D33D0 /* libcups2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups2.dylib */; };
                        remoteGlobalIDString = 2758FDE62C8F9C240078480C;
                        remoteInfo = testoauth;
                };
+               275CEA2F2CC840EE008FBB27 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 274FF6891333B1C400317ECB;
+                       remoteInfo = libcups_static;
+               };
+               275CEA442CC8411A008FBB27 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 275CEA2D2CC840EE008FBB27;
+                       remoteInfo = testclock;
+               };
                276683651337A9D6000D33D0 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
                        );
                        runOnlyForDeploymentPostprocessing = 1;
                };
+               275CEA3E2CC840EE008FBB27 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = /usr/share/man/man1/;
+                       dstSubfolderSpec = 0;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 1;
+               };
                2766835A1337A9B6000D33D0 /* CopyFiles */ = {
                        isa = PBXCopyFilesBuildPhase;
                        buildActionMask = 2147483647;
                2758FE1C2C8FBD2B0078480C /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
                2758FE1E2C8FBD390078480C /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
                2758FE202C8FBD420078480C /* libresolv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libresolv.tbd; path = usr/lib/libresolv.tbd; sourceTree = SDKROOT; };
-               276683561337A8C5000D33D0 /* cups.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = cups.strings; path = ../locale/cups.strings; sourceTree = "<group>"; };
+               275CEA282CC840B1008FBB27 /* clock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = clock.c; path = ../cups/clock.c; sourceTree = SOURCE_ROOT; };
+               275CEA2C2CC840DF008FBB27 /* testclock.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = testclock.c; path = ../cups/testclock.c; sourceTree = SOURCE_ROOT; };
+               275CEA422CC840EE008FBB27 /* testclock */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testclock; sourceTree = BUILT_PRODUCTS_DIR; };
                2766835C1337A9B6000D33D0 /* cupsctl */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = cupsctl; sourceTree = BUILT_PRODUCTS_DIR; };
                276683681337AA00000D33D0 /* cupsctl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = cupsctl.c; path = ../systemv/cupsctl.c; sourceTree = "<group>"; };
                276683701337AC79000D33D0 /* ppdc */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ppdc; sourceTree = BUILT_PRODUCTS_DIR; };
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
+               275CEA322CC840EE008FBB27 /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               275CEA332CC840EE008FBB27 /* libcupsimage2_static.a in Frameworks */,
+                               275CEA342CC840EE008FBB27 /* libcrypto.a in Frameworks */,
+                               275CEA352CC840EE008FBB27 /* libssl.a in Frameworks */,
+                               275CEA362CC840EE008FBB27 /* CoreFoundation.framework in Frameworks */,
+                               275CEA372CC840EE008FBB27 /* libiconv.dylib in Frameworks */,
+                               275CEA382CC840EE008FBB27 /* libresolv.dylib in Frameworks */,
+                               275CEA392CC840EE008FBB27 /* libz.dylib in Frameworks */,
+                               275CEA3A2CC840EE008FBB27 /* Security.framework in Frameworks */,
+                               275CEA3B2CC840EE008FBB27 /* SystemConfiguration.framework in Frameworks */,
+                               275CEA3C2CC840EE008FBB27 /* GSS.framework in Frameworks */,
+                               275CEA3D2CC840EE008FBB27 /* libcups_static.a in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                276683591337A9B6000D33D0 /* Frameworks */ = {
                        isa = PBXFrameworksBuildPhase;
                        buildActionMask = 2147483647;
                                724FA6EC1CC03A1D0092477B /* testcatalog.cxx */,
                                727EF03D192E3498001EF690 /* testcgi.c */,
                                729181AB20115597005E7560 /* testclient.c */,
+                               275CEA2C2CC840DF008FBB27 /* testclock.c */,
                                727EF044192E3544001EF690 /* testconflicts.c */,
                                270D02251D707E3700EA9403 /* testcreds.c */,
                                273BF6C61333B5370022CAAB /* testcups.c */,
                                2758FDE52C8F9C210078480C /* testjwt */,
                                2758FDF62C8F9C240078480C /* testoauth */,
                                2758FE072C8F9C5B0078480C /* testform */,
+                               275CEA422CC840EE008FBB27 /* testclock */,
                        );
                        name = Products;
                        sourceTree = "<group>";
                                72220EBB1333056300FCA411 /* auth.c */,
                                72220EBC1333056300FCA411 /* backchannel.c */,
                                72220EBD1333056300FCA411 /* backend.c */,
-                               276683561337A8C5000D33D0 /* cups.strings */,
+                               275CEA282CC840B1008FBB27 /* clock.c */,
                                722A24EE2178D00C000CAB20 /* debug-internal.h */,
                                72220ED1133305BB00FCA411 /* debug.c */,
                                72220ED2133305BB00FCA411 /* dest.c */,
                        productReference = 2758FE072C8F9C5B0078480C /* testform */;
                        productType = "com.apple.product-type.tool";
                };
+               275CEA2D2CC840EE008FBB27 /* testclock */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 275CEA3F2CC840EE008FBB27 /* Build configuration list for PBXNativeTarget "testclock" */;
+                       buildPhases = (
+                               275CEA302CC840EE008FBB27 /* Sources */,
+                               275CEA322CC840EE008FBB27 /* Frameworks */,
+                               275CEA3E2CC840EE008FBB27 /* CopyFiles */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                               275CEA2E2CC840EE008FBB27 /* PBXTargetDependency */,
+                       );
+                       name = testclock;
+                       productName = testmime;
+                       productReference = 275CEA422CC840EE008FBB27 /* testclock */;
+                       productType = "com.apple.product-type.tool";
+               };
                2766835B1337A9B6000D33D0 /* cupsctl */ = {
                        isa = PBXNativeTarget;
                        buildConfigurationList = 276683621337A9B6000D33D0 /* Build configuration list for PBXNativeTarget "cupsctl" */;
                                724FA6ED1CC03A210092477B /* testcatalog */,
                                724FA6991CC039200092477B /* testcgi */,
                                729181AC201155C1005E7560 /* testclient */,
+                               275CEA2D2CC840EE008FBB27 /* testclock */,
                                724FA55D1CC037670092477B /* testconflicts */,
                                270D02131D707E0200EA9403 /* testcreds */,
                                273BF6BC1333B5000022CAAB /* testcups */,
                                27F515682AB1F7440045EE21 /* form.c in Sources */,
                                7253C458216E981200494ADD /* raster-stream.c in Sources */,
                                270696161CADF3E200FFE5FB /* dest-options.c in Sources */,
+                               275CEA2A2CC840B1008FBB27 /* clock.c in Sources */,
                                270696171CADF3E200FFE5FB /* ipp-support.c in Sources */,
                                270696181CADF3E200FFE5FB /* ipp.c in Sources */,
                                270696191CADF3E200FFE5FB /* langprintf.c in Sources */,
                                274FF6A31333B1C400317ECB /* langprintf.c in Sources */,
                                274FF6A41333B1C400317ECB /* language.c in Sources */,
                                274FF6A51333B1C400317ECB /* ppd-localize.c in Sources */,
+                               275CEA2B2CC840B1008FBB27 /* clock.c in Sources */,
                                274FF6A61333B1C400317ECB /* ppd-mark.c in Sources */,
                                274FF6A71333B1C400317ECB /* md5.c in Sources */,
                                274FF6A81333B1C400317ECB /* md5passwd.c in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
+               275CEA302CC840EE008FBB27 /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               275CEA432CC8410C008FBB27 /* testclock.c in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                276683581337A9B6000D33D0 /* Sources */ = {
                        isa = PBXSourcesBuildPhase;
                        buildActionMask = 2147483647;
                                72220F22133305BB00FCA411 /* langprintf.c in Sources */,
                                72220F24133305BB00FCA411 /* language.c in Sources */,
                                72220F26133305BB00FCA411 /* ppd-localize.c in Sources */,
+                               275CEA292CC840B1008FBB27 /* clock.c in Sources */,
                                27F515702AB1F7440045EE21 /* jwt.c in Sources */,
                                72220F27133305BB00FCA411 /* ppd-mark.c in Sources */,
                                72220F29133305BB00FCA411 /* md5.c in Sources */,
                        target = 2758FDE62C8F9C240078480C /* testoauth */;
                        targetProxy = 2758FE162C8F9D130078480C /* PBXContainerItemProxy */;
                };
+               275CEA2E2CC840EE008FBB27 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 274FF6891333B1C400317ECB /* libcups2_static */;
+                       targetProxy = 275CEA2F2CC840EE008FBB27 /* PBXContainerItemProxy */;
+               };
+               275CEA452CC8411A008FBB27 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 275CEA2D2CC840EE008FBB27 /* testclock */;
+                       targetProxy = 275CEA442CC8411A008FBB27 /* PBXContainerItemProxy */;
+               };
                276683661337A9D6000D33D0 /* PBXTargetDependency */ = {
                        isa = PBXTargetDependency;
                        target = 72220EAD1333047D00FCA411 /* libcups2 */;
                        };
                        name = Release;
                };
+               275CEA402CC840EE008FBB27 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CLANG_ENABLE_OBJC_WEAK = YES;
+                               CODE_SIGN_IDENTITY = "-";
+                               DEAD_CODE_STRIPPING = YES;
+                               GCC_C_LANGUAGE_STANDARD = c99;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Debug;
+               };
+               275CEA412CC840EE008FBB27 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               CLANG_ENABLE_OBJC_WEAK = YES;
+                               CODE_SIGN_IDENTITY = "-";
+                               DEAD_CODE_STRIPPING = YES;
+                               GCC_C_LANGUAGE_STANDARD = c99;
+                               PRODUCT_NAME = "$(TARGET_NAME)";
+                       };
+                       name = Release;
+               };
                276683631337A9B6000D33D0 /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
+               275CEA3F2CC840EE008FBB27 /* Build configuration list for PBXNativeTarget "testclock" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               275CEA402CC840EE008FBB27 /* Debug */,
+                               275CEA412CC840EE008FBB27 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
                276683621337A9B6000D33D0 /* Build configuration list for PBXNativeTarget "cupsctl" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (