]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Do some code reorganization so that all of the PPD code is separate from the rest.
authormsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Wed, 9 Dec 2015 16:56:00 +0000 (16:56 +0000)
committermsweet <msweet@a1ca3aef-8c08-0410-bb20-df032aa958be>
Wed, 9 Dec 2015 16:56:00 +0000 (16:56 +0000)
Note: cupsGetPPD* and friends are now in cups/ppd.h now - should not be an issue
but was necessary to leave a clean break for future code.

git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/trunk@13007 a1ca3aef-8c08-0410-bb20-df032aa958be

41 files changed:
backend/Dependencies
backend/ieee1284.c
backend/ipp.c
backend/snmp-supplies.c
backend/usb-darwin.c
berkeley/Dependencies
cups/Dependencies
cups/Makefile
cups/adminutil.c
cups/backend.c
cups/cups-private.h
cups/cups.h
cups/globals.c
cups/ppd-attr.c [moved from cups/attr.c with 100% similarity]
cups/ppd-cache.c
cups/ppd-conflicts.c [moved from cups/conflicts.c with 99% similarity]
cups/ppd-custom.c [moved from cups/custom.c with 59% similarity]
cups/ppd-emit.c [moved from cups/emit.c with 99% similarity]
cups/ppd-localize.c [moved from cups/localize.c with 100% similarity]
cups/ppd-mark.c [moved from cups/mark.c with 99% similarity]
cups/ppd-page.c [moved from cups/page.c with 90% similarity]
cups/ppd-private.h
cups/ppd-util.c [new file with mode: 0644]
cups/ppd.c
cups/ppd.h
cups/testlang.c
cups/testppd.c
cups/util.c
filter/Dependencies
filter/rastertopwg.c
locale/Dependencies
monitor/Dependencies
notifier/Dependencies
ppdc/Dependencies
scheduler/Dependencies
scheduler/cupsd.h
systemv/Dependencies
systemv/lpadmin.c
systemv/lpoptions.c
test/Dependencies
xcode/CUPS.xcodeproj/project.pbxproj

index 2d6e7eb0326e4684109481d4df2b66dcc917c012..66b2de5645cb03a726687b55e96cf14c2a3eacf7 100644 (file)
@@ -4,54 +4,50 @@ ipp.o: ipp.c backend-private.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
+  ../cups/ppd-private.h ../cups/ppd.h
 lpd.o: lpd.c ../cups/http-private.h ../config.h ../cups/language.h \
   ../cups/array.h ../cups/versioning.h ../cups/http.h \
   ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h \
   backend-private.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/debug-private.h ../cups/array-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
 dnssd.o: dnssd.c backend-private.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
 snmp.o: snmp.c backend-private.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
 socket.o: socket.c ../cups/http-private.h ../config.h ../cups/language.h \
   ../cups/array.h ../cups/versioning.h ../cups/http.h \
   ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h \
   backend-private.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/debug-private.h ../cups/array-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
 test1284.o: test1284.c ../cups/string-private.h ../config.h ieee1284.c \
   backend-private.h ../cups/cups-private.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
+  ../cups/ppd-private.h ../cups/ppd.h
 testbackend.o: testbackend.c ../cups/string-private.h ../config.h \
   ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
   ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
@@ -62,16 +58,15 @@ testsupplies.o: testsupplies.c backend-private.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h
 usb.o: usb.c backend-private.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/snmp-private.h \
-  ../cups/backend.h ../cups/sidechannel.h usb-darwin.c \
-  ../cups/file-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/snmp-private.h ../cups/backend.h ../cups/sidechannel.h \
+  usb-darwin.c ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h
index b4ded43ee394389fd9bdde70de05477ec2e9ce4d..6ffa31af7c5e079e3d80113bc929fc9e99ce8bd9 100644 (file)
@@ -3,7 +3,7 @@
  *
  * IEEE-1284 support functions for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -20,6 +20,7 @@
  */
 
 #include "backend-private.h"
+#include <cups/ppd-private.h>
 
 
 /*
index 5d0fc662d6496cd593625efc04f0ebf4c8430f53..44bbd0c9e0ec8bfa1cce4b1035dac0ab999ba0b1 100644 (file)
@@ -20,6 +20,7 @@
  */
 
 #include "backend-private.h"
+#include <cups/ppd-private.h>
 #include <cups/array-private.h>
 #include <sys/types.h>
 #include <sys/stat.h>
index 3f2869d6bce7650e50fc629ea83095d942685f11..129f70026ba0c5dba34897a7bfb3a9e1a233798a 100644 (file)
@@ -3,7 +3,7 @@
  *
  * SNMP supplies functions for CUPS.
  *
- * Copyright 2008-2014 by Apple Inc.
+ * Copyright 2008-2015 by Apple Inc.
  *
  * These coded instructions, statements, and computer programs are the
  * property of Apple Inc. and are protected by Federal copyright
@@ -19,6 +19,7 @@
  */
 
 #include "backend-private.h"
+#include <cups/ppd-private.h>
 #include <cups/array.h>
 
 
index 2df79f4fed3ee00c2ec80687f5d0ae911492075a..17d62902bf39198c350ada28956fa5c84fcb5715 100644 (file)
@@ -63,6 +63,7 @@
 #include <cups/file-private.h>
 #include <cups/sidechannel.h>
 #include <cups/language-private.h>
+#include <cups/ppd-private.h>
 #include "backend-private.h"
 #include <CoreFoundation/CoreFoundation.h>
 #include <IOKit/usb/IOUSBLib.h>
index 76b1f2a5e791f044a943b3dc70814ebf9e250b9b..8522b242db5e65894e8b415265ce4f151249f0f1 100644 (file)
@@ -3,26 +3,23 @@ lpc.o: lpc.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 lpq.o: lpq.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
   ../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 lpr.o: lpr.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
   ../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 lprm.o: lprm.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
index e667d3920f798d8d381a8c42e6c741fcf89debd7..6a9b80cf4f87bac3901c913e13d24a97f27be470 100644 (file)
@@ -2,99 +2,66 @@ adminutil.o: adminutil.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h adminutil.h
+  ../cups/cups.h file.h pwg.h thread-private.h ppd.h adminutil.h
 array.o: array.c ../cups/cups.h file.h versioning.h ipp.h http.h array.h \
   language.h pwg.h string-private.h ../config.h debug-private.h \
   array-private.h
-attr.o: attr.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
 auth.o: auth.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 backchannel.o: backchannel.c cups.h file.h versioning.h ipp.h http.h \
   array.h language.h pwg.h
 backend.o: backend.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h backend.h
-conflicts.o: conflicts.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
-custom.o: custom.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h backend.h ppd.h
 debug.o: debug.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 dest.o: dest.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 dest-job.o: dest-job.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 dest-localization.o: dest-localization.c cups-private.h string-private.h \
   ../config.h debug-private.h ../cups/versioning.h array-private.h \
   ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
   ../cups/language.h md5-private.h language-private.h \
   ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  thread-private.h
 dest-options.o: dest-options.c cups-private.h string-private.h \
   ../config.h debug-private.h ../cups/versioning.h array-private.h \
   ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
   ../cups/language.h md5-private.h language-private.h \
   ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  thread-private.h
 dir.o: dir.c string-private.h ../config.h debug-private.h \
   ../cups/versioning.h dir.h
-emit.o: emit.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
 encode.o: encode.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 file.o: file.c file-private.h cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 getdevices.o: getdevices.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 getifaddrs.o: getifaddrs.c http-private.h ../config.h ../cups/language.h \
   array.h versioning.h ../cups/http.h md5-private.h ipp-private.h \
   ../cups/ipp.h
@@ -102,79 +69,59 @@ getputfile.o: getputfile.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 globals.o: globals.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 hash.o: hash.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 http.o: http.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 http-addr.o: http-addr.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 http-addrlist.o: http-addrlist.c cups-private.h string-private.h \
   ../config.h debug-private.h ../cups/versioning.h array-private.h \
   ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
   ../cups/language.h md5-private.h language-private.h \
   ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  thread-private.h
 http-support.o: http-support.c cups-private.h string-private.h \
   ../config.h debug-private.h ../cups/versioning.h array-private.h \
   ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
   ../cups/language.h md5-private.h language-private.h \
   ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  thread-private.h
 ipp.o: ipp.c cups-private.h string-private.h ../config.h debug-private.h \
   ../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
   ../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
   language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
-  file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h
+  file.h pwg.h thread-private.h
 ipp-support.o: ipp-support.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 langprintf.o: langprintf.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 language.o: language.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
-localize.o: localize.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
-mark.o: mark.c cups-private.h string-private.h ../config.h \
-  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
-  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
-  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 md5.o: md5.c md5-private.h string-private.h ../config.h
 md5passwd.o: md5passwd.c http-private.h ../config.h ../cups/language.h \
   array.h versioning.h ../cups/http.h md5-private.h ipp-private.h \
@@ -183,94 +130,124 @@ notify.o: notify.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 options.o: options.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
-page.o: page.c string-private.h ../config.h debug-private.h \
-  ../cups/versioning.h ppd.h cups.h file.h ipp.h http.h array.h \
-  language.h pwg.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 ppd.o: ppd.c cups-private.h string-private.h ../config.h debug-private.h \
   ../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
   ../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
   language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
-  file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h
+  file.h pwg.h thread-private.h ppd-private.h ../cups/ppd.h
+ppd-attr.o: ppd-attr.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h
 ppd-cache.o: ppd-cache.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h
+ppd-conflicts.o: ppd-conflicts.c cups-private.h string-private.h \
+  ../config.h debug-private.h ../cups/versioning.h array-private.h \
+  ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
+  ../cups/language.h md5-private.h language-private.h \
+  ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
+  thread-private.h ppd-private.h ../cups/ppd.h
+ppd-custom.o: ppd-custom.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h
+ppd-emit.o: ppd-emit.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h ppd.h
+ppd-localize.o: ppd-localize.c cups-private.h string-private.h \
+  ../config.h debug-private.h ../cups/versioning.h array-private.h \
+  ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
+  ../cups/language.h md5-private.h language-private.h \
+  ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
+  thread-private.h ppd-private.h ../cups/ppd.h
+ppd-mark.o: ppd-mark.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h
+ppd-page.o: ppd-page.c string-private.h ../config.h debug-private.h \
+  ../cups/versioning.h ppd.h cups.h file.h ipp.h http.h array.h \
+  language.h pwg.h
+ppd-util.o: ppd-util.c cups-private.h string-private.h ../config.h \
+  debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
+  ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
+  md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h
 pwg-media.o: pwg-media.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 request.o: request.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 sidechannel.o: sidechannel.c sidechannel.h versioning.h cups-private.h \
   string-private.h ../config.h debug-private.h array-private.h \
   ../cups/array.h ipp-private.h ../cups/ipp.h http.h http-private.h \
   ../cups/language.h md5-private.h language-private.h \
   ../cups/transcode.h pwg-private.h ../cups/cups.h file.h pwg.h \
-  ppd-private.h ../cups/ppd.h thread-private.h
+  thread-private.h
 snmp.o: snmp.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h snmp-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h snmp-private.h
 snprintf.o: snprintf.c string-private.h ../config.h
 string.o: string.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 tempfile.o: tempfile.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 thread.o: thread.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 tls.o: tls.c cups-private.h string-private.h ../config.h debug-private.h \
   ../cups/versioning.h array-private.h ../cups/array.h ipp-private.h \
   ../cups/ipp.h http.h http-private.h ../cups/language.h md5-private.h \
   language-private.h ../cups/transcode.h pwg-private.h ../cups/cups.h \
-  file.h pwg.h ppd-private.h ../cups/ppd.h thread-private.h tls-darwin.c
+  file.h pwg.h thread-private.h tls-darwin.c
 transcode.o: transcode.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 usersys.o: usersys.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 util.o: util.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 testadmin.o: testadmin.c adminutil.h cups.h file.h versioning.h ipp.h \
   http.h array.h language.h pwg.h string-private.h ../config.h
 testarray.o: testarray.c string-private.h ../config.h debug-private.h \
@@ -292,8 +269,7 @@ testhttp.o: testhttp.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 testi18n.o: testi18n.c string-private.h ../config.h language-private.h \
   ../cups/transcode.h language.h array.h versioning.h
 testipp.o: testipp.c file.h versioning.h string-private.h ../config.h \
@@ -302,20 +278,19 @@ testoptions.o: testoptions.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
 testlang.o: testlang.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h
 testppd.o: testppd.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h ppd-private.h \
+  ../cups/ppd.h
 testpwg.o: testpwg.c ppd-private.h ../cups/cups.h file.h versioning.h \
   ipp.h http.h array.h language.h pwg.h ../cups/ppd.h pwg-private.h \
   file-private.h cups-private.h string-private.h ../config.h \
@@ -325,11 +300,9 @@ testsnmp.o: testsnmp.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h snmp-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h snmp-private.h
 tlscheck.o: tlscheck.c cups-private.h string-private.h ../config.h \
   debug-private.h ../cups/versioning.h array-private.h ../cups/array.h \
   ipp-private.h ../cups/ipp.h http.h http-private.h ../cups/language.h \
   md5-private.h language-private.h ../cups/transcode.h pwg-private.h \
-  ../cups/cups.h file.h pwg.h ppd-private.h ../cups/ppd.h \
-  thread-private.h
+  ../cups/cups.h file.h pwg.h thread-private.h
index dc6859b8c55233457b8ae11910953c1fbc1f3a76..83d7c35e2b444aee1eac01cdc3eed8300f851992 100644 (file)
@@ -3,7 +3,7 @@
 #
 # API library Makefile for CUPS.
 #
-# Copyright 2007-2014 by Apple Inc.
+# Copyright 2007-2015 by Apple Inc.
 # Copyright 1997-2006 by Easy Software Products, all rights reserved.
 #
 # These coded instructions, statements, and computer programs are the
@@ -32,19 +32,15 @@ OPTIONS     =       -D_CUPS_NO_DEPRECATED=1 -D_PPD_DEPRECATED=""
 LIBOBJS        =       \
                adminutil.o \
                array.o \
-               attr.o \
                auth.o \
                backchannel.o \
                backend.o \
-               conflicts.o \
-               custom.o \
                debug.o \
                dest.o \
                dest-job.o \
                dest-localization.o \
                dest-options.o \
                dir.o \
-               emit.o \
                encode.o \
                file.o \
                getdevices.o \
@@ -60,15 +56,20 @@ LIBOBJS     =       \
                ipp-support.o \
                langprintf.o \
                language.o \
-               localize.o \
-               mark.o \
                md5.o \
                md5passwd.o \
                notify.o \
                options.o \
-               page.o \
                ppd.o \
+               ppd-attr.o \
                ppd-cache.o \
+               ppd-conflicts.o \
+               ppd-custom.o \
+               ppd-emit.o \
+               ppd-localize.o \
+               ppd-mark.o \
+               ppd-page.o \
+               ppd-util.o \
                pwg-media.o \
                request.o \
                sidechannel.o \
index 424c02b4ca004b37e50be4ae9cdba9737dcd1ea6..7b487b378ced5107d7be71d15a5e602c08845e13 100644 (file)
@@ -20,6 +20,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd.h"
 #include "adminutil.h"
 #include <fcntl.h>
 #include <sys/stat.h>
index 372c04d81c77e193a42af5d94c110941063fe2a4..6e12c0f35d2619bc2fdf9e920fdab607c0e88257 100644 (file)
@@ -1,24 +1,18 @@
 /*
  * "$Id$"
  *
- *   Backend functions for CUPS.
+ * Backend functions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 2006 by Easy Software Products.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 2006 by Easy Software Products.
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   cupsBackendDeviceURI() - Get the device URI for a backend.
- *   cupsBackendReport()    - Write a device line from a backend.
- *   quote_string()         - Write a quoted string to stdout, escaping \ and ".
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -27,6 +21,7 @@
 
 #include "cups-private.h"
 #include "backend.h"
+#include "ppd.h"
 
 
 /*
index 940e593c7d32abc588e40ec4eb3d798c75fba189..d312320a41ccbfc1f2a185d1f3a43db2e2800043 100644 (file)
@@ -29,7 +29,6 @@
 #  include "http-private.h"
 #  include "language-private.h"
 #  include "pwg-private.h"
-#  include "ppd-private.h"
 #  include "thread-private.h"
 #  include <cups/cups.h>
 #  ifdef __APPLE__
@@ -122,11 +121,6 @@ typedef struct _cups_globals_s             /**** CUPS global state data ****/
   char                 language[32];   /* Cached language */
 #  endif /* __APPLE__ */
 
-  /* ppd.c */
-  ppd_status_t         ppd_status;     /* Status of last ppdOpen*() */
-  int                  ppd_line;       /* Current line number */
-  ppd_conform_t                ppd_conform;    /* Level of conformance required */
-
   /* pwg-media.c */
   cups_array_t         *leg_size_lut,  /* Lookup table for legacy names */
                        *ppd_size_lut,  /* Lookup table for PPD names */
@@ -173,8 +167,6 @@ typedef struct _cups_globals_s              /**** CUPS global state data ****/
   /* util.c */
   char                 def_printer[256];
                                        /* Default printer */
-  char                 ppd_filename[HTTP_MAX_URI];
-                                       /* PPD filename */
 } _cups_globals_t;
 
 typedef struct _cups_media_db_s                /* Media database */
index fbcc332a8e8144ee4942a14194c4bd83bb406d46..f478d2c49deb99d04d4ff1f3759a5db0eaae4ec5 100644 (file)
@@ -3,7 +3,7 @@
  *
  * API definitions for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -35,15 +35,6 @@ typedef off_t ssize_t;                       /* @private@ */
 #  include "language.h"
 #  include "pwg.h"
 
-/*
- * Define _PPD_DEPRECATED to silence the warnings about PPD functions being
- * deprecated...
- */
-
-#  ifndef _PPD_DEPRECATED
-#    define _PPD_DEPRECATED _CUPS_DEPRECATED_1_6_MSG("Use cupsCopyDestInfo and friends instead.")
-#  endif /* !_PPD_DEPRECATED */
-
 
 /*
  * C++ magic...
@@ -364,7 +355,6 @@ extern int          cupsGetClasses(char ***classes) _CUPS_DEPRECATED_MSG("Use cupsGetDes
 extern const char      *cupsGetDefault(void);
 extern int             cupsGetJobs(cups_job_t **jobs, const char *name,
                                    int myjobs, int whichjobs);
-extern const char      *cupsGetPPD(const char *name) _PPD_DEPRECATED;
 extern int             cupsGetPrinters(char ***printers) _CUPS_DEPRECATED_MSG("Use cupsGetDests instead.");
 extern ipp_status_t    cupsLastError(void);
 extern int             cupsPrintFile(const char *name, const char *filename,
@@ -422,7 +412,6 @@ extern int          cupsGetDests2(http_t *http, cups_dest_t **dests)
 extern int             cupsGetJobs2(http_t *http, cups_job_t **jobs,
                                     const char *name, int myjobs,
                                     int whichjobs) _CUPS_API_1_1_21;
-extern const char      *cupsGetPPD2(http_t *http, const char *name) _PPD_DEPRECATED;
 extern int             cupsPrintFile2(http_t *http, const char *name,
                                       const char *filename,
                                       const char *title, int num_options,
@@ -456,8 +445,6 @@ extern cups_file_t  *cupsTempFile2(char *filename, int len) _CUPS_API_1_2;
 extern ipp_t           *cupsDoIORequest(http_t *http, ipp_t *request,
                                         const char *resource, int infile,
                                         int outfile) _CUPS_API_1_3;
-extern char            *cupsGetServerPPD(http_t *http, const char *name)
-                                         _CUPS_API_1_3;
 extern int             cupsRemoveDest(const char *name,
                                       const char *instance,
                                       int num_dests, cups_dest_t **dests)
@@ -485,9 +472,6 @@ extern cups_dest_t  *cupsGetNamedDest(http_t *http, const char *name,
 extern const char      *cupsGetPassword2(const char *prompt, http_t *http,
                                          const char *method,
                                          const char *resource) _CUPS_API_1_4;
-extern http_status_t   cupsGetPPD3(http_t *http, const char *name,
-                                   time_t *modtime, char *buffer,
-                                   size_t bufsize) _PPD_DEPRECATED;
 extern ipp_t           *cupsGetResponse(http_t *http,
                                         const char *resource) _CUPS_API_1_4;
 extern ssize_t         cupsReadResponseData(http_t *http, char *buffer,
index 17f7891e31dee26be41464dee616dbd017821326..fa0feb4c546fad1c0833927a3db17190ee32912c 100644 (file)
@@ -1,29 +1,18 @@
 /*
  * "$Id$"
  *
- *   Global variable access routines for CUPS.
+ * Global variable access routines for CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   _cupsGlobalLock()    - Lock the global mutex.
- *   _cupsGlobals()       - Return a pointer to thread local storage
- *   _cupsGlobalUnlock()  - Unlock the global mutex.
- *   DllMain()            - Main entry for library.
- *   cups_fix_path()      - Fix a file path to use forward slashes consistently.
- *   cups_globals_alloc() - Allocate and initialize global data.
- *   cups_globals_free()  - Free global data.
- *   cups_globals_init()  - Initialize environment variables.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -37,7 +26,6 @@
  * Local globals...
  */
 
-
 #ifdef DEBUG
 static int             cups_global_index = 0;
                                        /* Next thread number */
similarity index 100%
rename from cups/attr.c
rename to cups/ppd-attr.c
index e02129106e0fb65c50802da9f15b1d954f7bb2f6..e02d443553023e2929f392ad7369fe387de44958 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd-private.h"
 #include <math.h>
 
 
similarity index 99%
rename from cups/conflicts.c
rename to cups/ppd-conflicts.c
index b3bdf529a1837d5f595147879f55aa8e6f1d933a..31a82d7792b78512179f8391cd3378a6c7a7d157 100644 (file)
@@ -1,9 +1,9 @@
 /*
  * "$Id$"
  *
- * Option marking routines for CUPS.
+ * Option conflict management routines for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
similarity index 59%
rename from cups/custom.c
rename to cups/ppd-custom.c
index 3d1d724fa778e05f93d74898b20164e4c21883bb..5f5272ce3338547f0c6b1b44ad55674c647505f7 100644 (file)
@@ -1,34 +1,27 @@
 /*
  * "$Id$"
  *
- *   PPD custom option routines for CUPS.
+ * PPD custom option routines for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2006 by Easy Software Products, all rights reserved.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products, all rights reserved.
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   PostScript is a trademark of Adobe Systems, Inc.
+ * PostScript is a trademark of Adobe Systems, Inc.
  *
- *   This code and any derivative of it may be used and distributed
- *   freely under the terms of the GNU General Public License when
- *   used with GNU Ghostscript or its derivatives.  Use of the code
- *   (or any derivative of it) with software other than GNU
- *   GhostScript (or its derivatives) is governed by the CUPS license
- *   agreement.
+ * This code and any derivative of it may be used and distributed
+ * freely under the terms of the GNU General Public License when
+ * used with GNU Ghostscript or its derivatives.  Use of the code
+ * (or any derivative of it) with software other than GNU
+ * GhostScript (or its derivatives) is governed by the CUPS license
+ * agreement.
  *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   ppdFindCustomOption() - Find a custom option.
- *   ppdFindCustomParam()  - Find a parameter for a custom option.
- *   ppdFirstCustomParam() - Return the first parameter for a custom option.
- *   ppdNextCustomParam()  - Return the next parameter for a custom option.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
@@ -36,6 +29,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd-private.h"
 
 
 /*
similarity index 99%
rename from cups/emit.c
rename to cups/ppd-emit.c
index 5efbb176ffad70d47ec6d4c44328aa841f197c1a..e750029efd2fbdee128041bf919ce20009f221f7 100644 (file)
@@ -3,7 +3,7 @@
  *
  * PPD code emission routines for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -22,6 +22,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd.h"
 #if defined(WIN32) || defined(__EMX__)
 #  include <io.h>
 #else
similarity index 100%
rename from cups/localize.c
rename to cups/ppd-localize.c
similarity index 99%
rename from cups/mark.c
rename to cups/ppd-mark.c
index 8a02f4d90ef56b8effe2cd2a6049e324cd10729e..0fddab5c31c11c3a17ebf6f00e057b0fd37bdc86 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Option marking routines for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
  * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  * These coded instructions, statements, and computer programs are the
@@ -22,6 +22,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd-private.h"
 
 
 /*
similarity index 90%
rename from cups/page.c
rename to cups/ppd-page.c
index 824393d902f415307ac172df53d3e0e46bf99259..f7eb62b4a756b45f7877959f80d73d9d72369e6a 100644 (file)
@@ -1,27 +1,20 @@
 /*
  * "$Id$"
  *
- *   Page size functions for CUPS.
+ * Page size functions for CUPS.
  *
- *   Copyright 2007-2012 by Apple Inc.
- *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "LICENSE.txt"
- *   which should have been included with this file.  If this file is
- *   file is missing or damaged, see the license at "http://www.cups.org/".
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
  *
- *   PostScript is a trademark of Adobe Systems, Inc.
+ * PostScript is a trademark of Adobe Systems, Inc.
  *
- *   This file is subject to the Apple OS-Developed Software exception.
- *
- * Contents:
- *
- *   ppdPageSize()       - Get the page size record for the given size.
- *   ppdPageSizeLimits() - Return the custom page size limits.
- *   ppdPageWidth()      - Get the page width for the given size.
- *   ppdPageLength()     - Get the page length for the given size.
+ * This file is subject to the Apple OS-Developed Software exception.
  */
 
 /*
index 34327027ab7245cdfb0ea34262b1180e46828f78..b8254446ad5b33a2be625dd1dae38278a833f7bd 100644 (file)
@@ -56,6 +56,18 @@ extern "C" {
  * Types and structures...
  */
 
+typedef struct _ppd_globals_s          /**** CUPS PPD global state data ****/
+{
+  /* ppd.c */
+  ppd_status_t         ppd_status;     /* Status of last ppdOpen*() */
+  int                  ppd_line;       /* Current line number */
+  ppd_conform_t                ppd_conform;    /* Level of conformance required */
+
+  /* ppd-util.c */
+  char                 ppd_filename[HTTP_MAX_URI];
+                                       /* PPD filename */
+} _ppd_globals_t;
+
 typedef enum _ppd_localization_e       /**** Selector for _ppdOpen ****/
 {
   _PPD_LOCALIZATION_DEFAULT,           /* Load only the default localization */
@@ -205,6 +217,7 @@ extern char         *_ppdCreateFromIPP(char *buffer, size_t bufsize, ipp_t *response);
 extern void            _ppdFreeLanguages(cups_array_t *languages);
 extern cups_encoding_t _ppdGetEncoding(const char *name);
 extern cups_array_t    *_ppdGetLanguages(ppd_file_t *ppd);
+extern _ppd_globals_t  *_ppdGlobals(void);
 extern unsigned                _ppdHashName(const char *name);
 extern ppd_attr_t      *_ppdLocalizedAttr(ppd_file_t *ppd, const char *keyword,
                                           const char *spec, const char *ll_CC);
diff --git a/cups/ppd-util.c b/cups/ppd-util.c
new file mode 100644 (file)
index 0000000..918ab78
--- /dev/null
@@ -0,0 +1,723 @@
+/*
+ * "$Id$"
+ *
+ * PPD utilities for CUPS.
+ *
+ * Copyright 2007-2015 by Apple Inc.
+ * Copyright 1997-2006 by Easy Software Products.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law.  Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file.  If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
+ *
+ * This file is subject to the Apple OS-Developed Software exception.
+ */
+
+/*
+ * Include necessary headers...
+ */
+
+#include "cups-private.h"
+#include "ppd-private.h"
+#include <fcntl.h>
+#include <sys/stat.h>
+#if defined(WIN32) || defined(__EMX__)
+#  include <io.h>
+#else
+#  include <unistd.h>
+#endif /* WIN32 || __EMX__ */
+
+
+/*
+ * Local functions...
+ */
+
+static int     cups_get_printer_uri(http_t *http, const char *name,
+                                    char *host, int hostsize, int *port,
+                                    char *resource, int resourcesize,
+                                    int depth);
+
+
+/*
+ * 'cupsGetPPD()' - Get the PPD file for a printer on the default server.
+ *
+ * For classes, @code cupsGetPPD@ returns the PPD file for the first printer
+ * in the class.
+ *
+ * The returned filename is stored in a static buffer and is overwritten with
+ * each call to @code cupsGetPPD@ or @link cupsGetPPD2@.  The caller "owns" the
+ * file that is created and must @code unlink@ the returned filename.
+ */
+
+const char *                           /* O - Filename for PPD file */
+cupsGetPPD(const char *name)           /* I - Destination name */
+{
+  _ppd_globals_t *pg = _ppdGlobals();  /* Pointer to library globals */
+  time_t       modtime = 0;            /* Modification time */
+
+
+ /*
+  * Return the PPD file...
+  */
+
+  pg->ppd_filename[0] = '\0';
+
+  if (cupsGetPPD3(CUPS_HTTP_DEFAULT, name, &modtime, pg->ppd_filename,
+                  sizeof(pg->ppd_filename)) == HTTP_STATUS_OK)
+    return (pg->ppd_filename);
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'cupsGetPPD2()' - Get the PPD file for a printer from the specified server.
+ *
+ * For classes, @code cupsGetPPD2@ returns the PPD file for the first printer
+ * in the class.
+ *
+ * The returned filename is stored in a static buffer and is overwritten with
+ * each call to @link cupsGetPPD@ or @code cupsGetPPD2@.  The caller "owns" the
+ * file that is created and must @code unlink@ the returned filename.
+ *
+ * @since CUPS 1.1.21/OS X 10.4@
+ */
+
+const char *                           /* O - Filename for PPD file */
+cupsGetPPD2(http_t     *http,          /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
+            const char *name)          /* I - Destination name */
+{
+  _ppd_globals_t *pg = _ppdGlobals();  /* Pointer to library globals */
+  time_t       modtime = 0;            /* Modification time */
+
+
+  pg->ppd_filename[0] = '\0';
+
+  if (cupsGetPPD3(http, name, &modtime, pg->ppd_filename,
+                  sizeof(pg->ppd_filename)) == HTTP_STATUS_OK)
+    return (pg->ppd_filename);
+  else
+    return (NULL);
+}
+
+
+/*
+ * 'cupsGetPPD3()' - Get the PPD file for a printer on the specified
+ *                   server if it has changed.
+ *
+ * The "modtime" parameter contains the modification time of any
+ * locally-cached content and is updated with the time from the PPD file on
+ * the server.
+ *
+ * The "buffer" parameter contains the local PPD filename.  If it contains
+ * the empty string, a new temporary file is created, otherwise the existing
+ * file will be overwritten as needed.  The caller "owns" the file that is
+ * created and must @code unlink@ the returned filename.
+ *
+ * On success, @code HTTP_STATUS_OK@ is returned for a new PPD file and
+ * @code HTTP_STATUS_NOT_MODIFIED@ if the existing PPD file is up-to-date.  Any other
+ * status is an error.
+ *
+ * For classes, @code cupsGetPPD3@ returns the PPD file for the first printer
+ * in the class.
+ *
+ * @since CUPS 1.4/OS X 10.6@
+ */
+
+http_status_t                          /* O  - HTTP status */
+cupsGetPPD3(http_t     *http,          /* I  - HTTP connection or @code CUPS_HTTP_DEFAULT@ */
+            const char *name,          /* I  - Destination name */
+           time_t     *modtime,        /* IO - Modification time */
+           char       *buffer,         /* I  - Filename buffer */
+           size_t     bufsize)         /* I  - Size of filename buffer */
+{
+  int          http_port;              /* Port number */
+  char         http_hostname[HTTP_MAX_HOST];
+                                       /* Hostname associated with connection */
+  http_t       *http2;                 /* Alternate HTTP connection */
+  int          fd;                     /* PPD file */
+  char         localhost[HTTP_MAX_URI],/* Local hostname */
+               hostname[HTTP_MAX_URI], /* Hostname */
+               resource[HTTP_MAX_URI]; /* Resource name */
+  int          port;                   /* Port number */
+  http_status_t        status;                 /* HTTP status from server */
+  char         tempfile[1024] = "";    /* Temporary filename */
+  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
+
+
+ /*
+  * Range check input...
+  */
+
+  DEBUG_printf(("cupsGetPPD3(http=%p, name=\"%s\", modtime=%p(%d), buffer=%p, "
+                "bufsize=%d)", http, name, modtime,
+               modtime ? (int)*modtime : 0, buffer, (int)bufsize));
+
+  if (!name)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer name"), 1);
+    return (HTTP_STATUS_NOT_ACCEPTABLE);
+  }
+
+  if (!modtime)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No modification time"), 1);
+    return (HTTP_STATUS_NOT_ACCEPTABLE);
+  }
+
+  if (!buffer || bufsize <= 1)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad filename buffer"), 1);
+    return (HTTP_STATUS_NOT_ACCEPTABLE);
+  }
+
+#ifndef WIN32
+ /*
+  * See if the PPD file is available locally...
+  */
+
+  if (http)
+    httpGetHostname(http, hostname, sizeof(hostname));
+  else
+  {
+    strlcpy(hostname, cupsServer(), sizeof(hostname));
+    if (hostname[0] == '/')
+      strlcpy(hostname, "localhost", sizeof(hostname));
+  }
+
+  if (!_cups_strcasecmp(hostname, "localhost"))
+  {
+    char       ppdname[1024];          /* PPD filename */
+    struct stat        ppdinfo;                /* PPD file information */
+
+
+    snprintf(ppdname, sizeof(ppdname), "%s/ppd/%s.ppd", cg->cups_serverroot,
+             name);
+    if (!stat(ppdname, &ppdinfo) && !access(ppdname, R_OK))
+    {
+     /*
+      * OK, the file exists and is readable, use it!
+      */
+
+      if (buffer[0])
+      {
+        unlink(buffer);
+
+       if (symlink(ppdname, buffer) && errno != EEXIST)
+        {
+          _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
+
+         return (HTTP_STATUS_SERVER_ERROR);
+       }
+      }
+      else
+      {
+        int            tries;          /* Number of tries */
+        const char     *tmpdir;        /* TMPDIR environment variable */
+       struct timeval  curtime;        /* Current time */
+
+       /*
+       * Previously we put root temporary files in the default CUPS temporary
+       * directory under /var/spool/cups.  However, since the scheduler cleans
+       * out temporary files there and runs independently of the user apps, we
+       * don't want to use it unless specifically told to by cupsd.
+       */
+
+       if ((tmpdir = getenv("TMPDIR")) == NULL)
+#  ifdef __APPLE__
+         tmpdir = "/private/tmp";      /* /tmp is a symlink to /private/tmp */
+#  else
+          tmpdir = "/tmp";
+#  endif /* __APPLE__ */
+
+       /*
+       * Make the temporary name using the specified directory...
+       */
+
+       tries = 0;
+
+       do
+       {
+        /*
+         * Get the current time of day...
+         */
+
+         gettimeofday(&curtime, NULL);
+
+        /*
+         * Format a string using the hex time values...
+         */
+
+         snprintf(buffer, bufsize, "%s/%08lx%05lx", tmpdir,
+                  (unsigned long)curtime.tv_sec,
+                  (unsigned long)curtime.tv_usec);
+
+        /*
+         * Try to make a symlink...
+         */
+
+         if (!symlink(ppdname, buffer))
+           break;
+
+         tries ++;
+       }
+       while (tries < 1000);
+
+        if (tries >= 1000)
+       {
+          _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
+
+         return (HTTP_STATUS_SERVER_ERROR);
+       }
+      }
+
+      if (*modtime >= ppdinfo.st_mtime)
+        return (HTTP_STATUS_NOT_MODIFIED);
+      else
+      {
+        *modtime = ppdinfo.st_mtime;
+       return (HTTP_STATUS_OK);
+      }
+    }
+  }
+#endif /* !WIN32 */
+
+ /*
+  * Try finding a printer URI for this printer...
+  */
+
+  if (!http)
+    if ((http = _cupsConnect()) == NULL)
+      return (HTTP_STATUS_SERVICE_UNAVAILABLE);
+
+  if (!cups_get_printer_uri(http, name, hostname, sizeof(hostname), &port,
+                            resource, sizeof(resource), 0))
+    return (HTTP_STATUS_NOT_FOUND);
+
+  DEBUG_printf(("2cupsGetPPD3: Printer hostname=\"%s\", port=%d", hostname,
+                port));
+
+  if (cupsServer()[0] == '/' && !_cups_strcasecmp(hostname, "localhost") && port == ippPort())
+  {
+   /*
+    * Redirect localhost to domain socket...
+    */
+
+    strlcpy(hostname, cupsServer(), sizeof(hostname));
+    port = 0;
+
+    DEBUG_printf(("2cupsGetPPD3: Redirecting to \"%s\".", hostname));
+  }
+
+ /*
+  * Remap local hostname to localhost...
+  */
+
+  httpGetHostname(NULL, localhost, sizeof(localhost));
+
+  DEBUG_printf(("2cupsGetPPD3: Local hostname=\"%s\"", localhost));
+
+  if (!_cups_strcasecmp(localhost, hostname))
+    strlcpy(hostname, "localhost", sizeof(hostname));
+
+ /*
+  * Get the hostname and port number we are connected to...
+  */
+
+  httpGetHostname(http, http_hostname, sizeof(http_hostname));
+  http_port = httpAddrPort(http->hostaddr);
+
+  DEBUG_printf(("2cupsGetPPD3: Connection hostname=\"%s\", port=%d",
+                http_hostname, http_port));
+
+ /*
+  * Reconnect to the correct server as needed...
+  */
+
+  if (!_cups_strcasecmp(http_hostname, hostname) && port == http_port)
+    http2 = http;
+  else if ((http2 = httpConnect2(hostname, port, NULL, AF_UNSPEC,
+                                cupsEncryption(), 1, 30000, NULL)) == NULL)
+  {
+    DEBUG_puts("1cupsGetPPD3: Unable to connect to server");
+
+    return (HTTP_STATUS_SERVICE_UNAVAILABLE);
+  }
+
+ /*
+  * Get a temp file...
+  */
+
+  if (buffer[0])
+    fd = open(buffer, O_CREAT | O_TRUNC | O_WRONLY, 0600);
+  else
+    fd = cupsTempFd(tempfile, sizeof(tempfile));
+
+  if (fd < 0)
+  {
+   /*
+    * Can't open file; close the server connection and return NULL...
+    */
+
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
+
+    if (http2 != http)
+      httpClose(http2);
+
+    return (HTTP_STATUS_SERVER_ERROR);
+  }
+
+ /*
+  * And send a request to the HTTP server...
+  */
+
+  strlcat(resource, ".ppd", sizeof(resource));
+
+  if (*modtime > 0)
+    httpSetField(http2, HTTP_FIELD_IF_MODIFIED_SINCE,
+                 httpGetDateString(*modtime));
+
+  status = cupsGetFd(http2, resource, fd);
+
+  close(fd);
+
+ /*
+  * See if we actually got the file or an error...
+  */
+
+  if (status == HTTP_STATUS_OK)
+  {
+    *modtime = httpGetDateTime(httpGetField(http2, HTTP_FIELD_DATE));
+
+    if (tempfile[0])
+      strlcpy(buffer, tempfile, bufsize);
+  }
+  else if (status != HTTP_STATUS_NOT_MODIFIED)
+  {
+    _cupsSetHTTPError(status);
+
+    if (buffer[0])
+      unlink(buffer);
+    else if (tempfile[0])
+      unlink(tempfile);
+  }
+  else if (tempfile[0])
+    unlink(tempfile);
+
+  if (http2 != http)
+    httpClose(http2);
+
+ /*
+  * Return the PPD file...
+  */
+
+  DEBUG_printf(("1cupsGetPPD3: Returning status %d", status));
+
+  return (status);
+}
+
+
+/*
+ * 'cupsGetServerPPD()' - Get an available PPD file from the server.
+ *
+ * This function returns the named PPD file from the server.  The
+ * list of available PPDs is provided by the IPP @code CUPS_GET_PPDS@
+ * operation.
+ *
+ * You must remove (unlink) the PPD file when you are finished with
+ * it. The PPD filename is stored in a static location that will be
+ * overwritten on the next call to @link cupsGetPPD@, @link cupsGetPPD2@,
+ * or @link cupsGetServerPPD@.
+ *
+ * @since CUPS 1.3/OS X 10.5@
+ */
+
+char *                                 /* O - Name of PPD file or @code NULL@ on error */
+cupsGetServerPPD(http_t     *http,     /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
+                 const char *name)     /* I - Name of PPD file ("ppd-name") */
+{
+  int                  fd;             /* PPD file descriptor */
+  ipp_t                        *request;       /* IPP request */
+  _ppd_globals_t       *pg = _ppdGlobals();
+                                       /* Pointer to library globals */
+
+
+ /*
+  * Range check input...
+  */
+
+  if (!name)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No PPD name"), 1);
+
+    return (NULL);
+  }
+
+  if (!http)
+    if ((http = _cupsConnect()) == NULL)
+      return (NULL);
+
+ /*
+  * Get a temp file...
+  */
+
+  if ((fd = cupsTempFd(pg->ppd_filename, sizeof(pg->ppd_filename))) < 0)
+  {
+   /*
+    * Can't open file; close the server connection and return NULL...
+    */
+
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
+
+    return (NULL);
+  }
+
+ /*
+  * Get the PPD file...
+  */
+
+  request = ippNewRequest(IPP_OP_CUPS_GET_PPD);
+  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name", NULL,
+               name);
+
+  ippDelete(cupsDoIORequest(http, request, "/", -1, fd));
+
+  close(fd);
+
+  if (cupsLastError() != IPP_STATUS_OK)
+  {
+    unlink(pg->ppd_filename);
+    return (NULL);
+  }
+  else
+    return (pg->ppd_filename);
+}
+
+
+/*
+ * 'cups_get_printer_uri()' - Get the printer-uri-supported attribute for the
+ *                            first printer in a class.
+ */
+
+static int                             /* O - 1 on success, 0 on failure */
+cups_get_printer_uri(
+    http_t     *http,                  /* I - Connection to server */
+    const char *name,                  /* I - Name of printer or class */
+    char       *host,                  /* I - Hostname buffer */
+    int        hostsize,               /* I - Size of hostname buffer */
+    int        *port,                  /* O - Port number */
+    char       *resource,              /* I - Resource buffer */
+    int        resourcesize,           /* I - Size of resource buffer */
+    int        depth)                  /* I - Depth of query */
+{
+  int          i;                      /* Looping var */
+  int          http_port;              /* Port number */
+  http_t       *http2;                 /* Alternate HTTP connection */
+  ipp_t                *request,               /* IPP request */
+               *response;              /* IPP response */
+  ipp_attribute_t *attr;               /* Current attribute */
+  char         uri[HTTP_MAX_URI],      /* printer-uri attribute */
+               scheme[HTTP_MAX_URI],   /* Scheme name */
+               username[HTTP_MAX_URI], /* Username:password */
+               classname[255],         /* Temporary class name */
+               http_hostname[HTTP_MAX_HOST];
+                                       /* Hostname associated with connection */
+  static const char * const requested_attrs[] =
+               {                       /* Requested attributes */
+                 "device-uri",
+                 "member-uris",
+                 "printer-uri-supported",
+                 "printer-type"
+               };
+
+
+  DEBUG_printf(("4cups_get_printer_uri(http=%p, name=\"%s\", host=%p, hostsize=%d, resource=%p, resourcesize=%d, depth=%d)", http, name, host, hostsize, resource, resourcesize, depth));
+
+ /*
+  * Setup the printer URI...
+  */
+
+  if (httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, "localhost", 0, "/printers/%s", name) < HTTP_URI_STATUS_OK)
+  {
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to create printer-uri"), 1);
+
+    *host     = '\0';
+    *resource = '\0';
+
+    return (0);
+  }
+
+  DEBUG_printf(("5cups_get_printer_uri: printer-uri=\"%s\"", uri));
+
+ /*
+  * Get the hostname and port number we are connected to...
+  */
+
+  httpGetHostname(http, http_hostname, sizeof(http_hostname));
+  http_port = httpAddrPort(http->hostaddr);
+
+  DEBUG_printf(("5cups_get_printer_uri: http_hostname=\"%s\"", http_hostname));
+
+ /*
+  * Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
+  * attributes:
+  *
+  *    attributes-charset
+  *    attributes-natural-language
+  *    printer-uri
+  *    requested-attributes
+  */
+
+  request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
+
+  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
+
+  ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", sizeof(requested_attrs) / sizeof(requested_attrs[0]), NULL, requested_attrs);
+
+ /*
+  * Do the request and get back a response...
+  */
+
+  snprintf(resource, (size_t)resourcesize, "/printers/%s", name);
+
+  if ((response = cupsDoRequest(http, request, resource)) != NULL)
+  {
+    const char *device_uri = NULL;     /* device-uri value */
+
+    if ((attr = ippFindAttribute(response, "device-uri", IPP_TAG_URI)) != NULL)
+    {
+      device_uri = attr->values[0].string.text;
+      DEBUG_printf(("5cups_get_printer_uri: device-uri=\"%s\"", device_uri));
+    }
+
+    if (device_uri &&
+        (((!strncmp(device_uri, "ipp://", 6) || !strncmp(device_uri, "ipps://", 7)) &&
+         (strstr(device_uri, "/printers/") != NULL || strstr(device_uri, "/classes/") != NULL)) ||
+         ((strstr(device_uri, "._ipp.") != NULL || strstr(device_uri, "._ipps.") != NULL) &&
+          !strcmp(device_uri + strlen(device_uri) - 5, "/cups"))))
+    {
+     /*
+      * Statically-configured shared printer.
+      */
+
+      httpSeparateURI(HTTP_URI_CODING_ALL, _httpResolveURI(device_uri, uri, sizeof(uri), _HTTP_RESOLVE_DEFAULT, NULL, NULL), scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
+      ippDelete(response);
+
+      DEBUG_printf(("5cups_get_printer_uri: Resolved to host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
+      return (1);
+    }
+    else if ((attr = ippFindAttribute(response, "member-uris", IPP_TAG_URI)) != NULL)
+    {
+     /*
+      * Get the first actual printer name in the class...
+      */
+
+      DEBUG_printf(("5cups_get_printer_uri: Got member-uris with %d values.", ippGetCount(attr)));
+
+      for (i = 0; i < attr->num_values; i ++)
+      {
+        DEBUG_printf(("5cups_get_printer_uri: member-uris[%d]=\"%s\"", i, ippGetString(attr, i, NULL)));
+
+       httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text, scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
+       if (!strncmp(resource, "/printers/", 10))
+       {
+        /*
+         * Found a printer!
+         */
+
+          ippDelete(response);
+
+         DEBUG_printf(("5cups_get_printer_uri: Found printer member with host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
+         return (1);
+       }
+      }
+
+     /*
+      * No printers in this class - try recursively looking for a printer,
+      * but not more than 3 levels deep...
+      */
+
+      if (depth < 3)
+      {
+       for (i = 0; i < attr->num_values; i ++)
+       {
+         httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text,
+                         scheme, sizeof(scheme), username, sizeof(username),
+                         host, hostsize, port, resource, resourcesize);
+         if (!strncmp(resource, "/classes/", 9))
+         {
+          /*
+           * Found a class!  Connect to the right server...
+           */
+
+           if (!_cups_strcasecmp(http_hostname, host) && *port == http_port)
+             http2 = http;
+           else if ((http2 = httpConnect2(host, *port, NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL)) == NULL)
+           {
+             DEBUG_puts("8cups_get_printer_uri: Unable to connect to server");
+
+             continue;
+           }
+
+           /*
+           * Look up printers on that server...
+           */
+
+            strlcpy(classname, resource + 9, sizeof(classname));
+
+            cups_get_printer_uri(http2, classname, host, hostsize, port,
+                                resource, resourcesize, depth + 1);
+
+           /*
+           * Close the connection as needed...
+           */
+
+           if (http2 != http)
+             httpClose(http2);
+
+            if (*host)
+             return (1);
+         }
+       }
+      }
+    }
+    else if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
+    {
+      httpSeparateURI(HTTP_URI_CODING_ALL, _httpResolveURI(attr->values[0].string.text, uri, sizeof(uri), _HTTP_RESOLVE_DEFAULT, NULL, NULL), scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
+      ippDelete(response);
+
+      DEBUG_printf(("5cups_get_printer_uri: Resolved to host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
+
+      if (!strncmp(resource, "/classes/", 9))
+      {
+        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer-uri found for class"), 1);
+
+       *host     = '\0';
+       *resource = '\0';
+
+        DEBUG_puts("5cups_get_printer_uri: Not returning class.");
+       return (0);
+      }
+
+      return (1);
+    }
+
+    ippDelete(response);
+  }
+
+  if (cupsLastError() != IPP_STATUS_ERROR_NOT_FOUND)
+    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer-uri found"), 1);
+
+  *host     = '\0';
+  *resource = '\0';
+
+  DEBUG_puts("5cups_get_printer_uri: Printer URI not found.");
+  return (0);
+}
+
+
+/*
+ * End of "$Id$".
+ */
index 6547a2c0601e38baf94461afea89166588b34b7f..21443e6b02d3c204ae2544e5dbb07fb02d90e76d 100644 (file)
@@ -57,6 +57,18 @@ typedef struct _ppd_line_s
 } _ppd_line_t;
 
 
+/*
+ * Local globals...
+ */
+
+static _cups_threadkey_t ppd_globals_key = _CUPS_THREADKEY_INITIALIZER;
+                                       /* Thread local storage key */
+#ifdef HAVE_PTHREAD_H
+static pthread_once_t  ppd_globals_key_once = PTHREAD_ONCE_INIT;
+                                       /* One-time initialization object */
+#endif /* HAVE_PTHREAD_H */
+
+
 /*
  * Local functions...
  */
@@ -80,16 +92,23 @@ static ppd_cparam_t *ppd_get_cparam(ppd_coption_t *opt,
                                        const char *param,
                                        const char *text);
 static ppd_group_t     *ppd_get_group(ppd_file_t *ppd, const char *name,
-                                      const char *text, _cups_globals_t *cg,
+                                      const char *text, _ppd_globals_t *pg,
                                       cups_encoding_t encoding);
 static ppd_option_t    *ppd_get_option(ppd_group_t *group, const char *name);
+static _ppd_globals_t  *ppd_globals_alloc(void);
+#if defined(HAVE_PTHREAD_H) || defined(WIN32)
+static void            ppd_globals_free(_ppd_globals_t *g);
+#endif /* HAVE_PTHREAD_H || WIN32 */
+#ifdef HAVE_PTHREAD_H
+static void            ppd_globals_init(void);
+#endif /* HAVE_PTHREAD_H */
 static int             ppd_hash_option(ppd_option_t *option);
 static int             ppd_read(cups_file_t *fp, _ppd_line_t *line,
                                 char *keyword, char *option, char *text,
                                 char **string, int ignoreblank,
-                                _cups_globals_t *cg);
+                                _ppd_globals_t *pg);
 static int             ppd_update_filters(ppd_file_t *ppd,
-                                          _cups_globals_t *cg);
+                                          _ppd_globals_t *pg);
 
 
 /*
@@ -352,6 +371,46 @@ _ppdGetEncoding(const char *name)  /* I - LanguageEncoding string */
 }
 
 
+/*
+ * '_ppdGlobals()' - Return a pointer to thread local storage
+ */
+
+_ppd_globals_t *                       /* O - Pointer to global data */
+_ppdGlobals(void)
+{
+  _ppd_globals_t *pg;                  /* Pointer to global data */
+
+
+#ifdef HAVE_PTHREAD_H
+ /*
+  * Initialize the global data exactly once...
+  */
+
+  pthread_once(&ppd_globals_key_once, ppd_globals_init);
+#endif /* HAVE_PTHREAD_H */
+
+ /*
+  * See if we have allocated the data yet...
+  */
+
+  if ((pg = (_ppd_globals_t *)_cupsThreadGetData(ppd_globals_key)) == NULL)
+  {
+   /*
+    * No, allocate memory as set the pointer for the key...
+    */
+
+    if ((pg = ppd_globals_alloc()) != NULL)
+      _cupsThreadSetData(ppd_globals_key, pg);
+  }
+
+ /*
+  * Return the pointer to the data...
+  */
+
+  return (pg);
+}
+
+
 /*
  * 'ppdLastError()' - Return the status from the last ppdOpen*().
  *
@@ -361,14 +420,14 @@ _ppdGetEncoding(const char *name) /* I - LanguageEncoding string */
 ppd_status_t                           /* O - Status code */
 ppdLastError(int *line)                        /* O - Line number */
 {
-  _cups_globals_t      *cg = _cupsGlobals();
+  _ppd_globals_t       *pg = _ppdGlobals();
                                        /* Global data */
 
 
   if (line)
-    *line = cg->ppd_line;
+    *line = pg->ppd_line;
 
-  return (cg->ppd_status);
+  return (pg->ppd_status);
 }
 
 
@@ -413,7 +472,7 @@ _ppdOpen(
   int                  ui_keyword;     /* Is this line a UI keyword? */
   cups_lang_t          *lang;          /* Language data */
   cups_encoding_t      encoding;       /* Encoding of PPD file */
-  _cups_globals_t      *cg = _cupsGlobals();
+  _ppd_globals_t       *pg = _ppdGlobals();
                                        /* Global data */
   char                 custom_name[PPD_MAX_NAME];
                                        /* CustomFoo attribute name */
@@ -496,8 +555,8 @@ _ppdOpen(
   * Default to "OK" status...
   */
 
-  cg->ppd_status = PPD_OK;
-  cg->ppd_line   = 0;
+  pg->ppd_status = PPD_OK;
+  pg->ppd_line   = 0;
 
  /*
   * Range check input...
@@ -505,7 +564,7 @@ _ppdOpen(
 
   if (fp == NULL)
   {
-    cg->ppd_status = PPD_NULL_FILE;
+    pg->ppd_status = PPD_NULL_FILE;
     return (NULL);
   }
 
@@ -545,7 +604,7 @@ _ppdOpen(
   line.buffer  = NULL;
   line.bufsize = 0;
 
-  mask = ppd_read(fp, &line, keyword, name, text, &string, 0, cg);
+  mask = ppd_read(fp, &line, keyword, name, text, &string, 0, pg);
 
   DEBUG_printf(("2_ppdOpen: mask=%x, keyword=\"%s\"...", mask, keyword));
 
@@ -557,8 +616,8 @@ _ppdOpen(
     * Either this is not a PPD file, or it is not a 4.x PPD file.
     */
 
-    if (cg->ppd_status == PPD_OK)
-      cg->ppd_status = PPD_MISSING_PPDADOBE4;
+    if (pg->ppd_status == PPD_OK)
+      pg->ppd_status = PPD_MISSING_PPDADOBE4;
 
     _cupsStrFree(string);
     ppd_free(line.buffer);
@@ -576,7 +635,7 @@ _ppdOpen(
 
   if ((ppd = calloc(1, sizeof(ppd_file_t))) == NULL)
   {
-    cg->ppd_status = PPD_ALLOC_ERROR;
+    pg->ppd_status = PPD_ALLOC_ERROR;
 
     _cupsStrFree(string);
     ppd_free(line.buffer);
@@ -603,20 +662,20 @@ _ppdOpen(
   encoding   = CUPS_ISO8859_1;
   loc        = localeconv();
 
-  while ((mask = ppd_read(fp, &line, keyword, name, text, &string, 1, cg)) != 0)
+  while ((mask = ppd_read(fp, &line, keyword, name, text, &string, 1, pg)) != 0)
   {
     DEBUG_printf(("2_ppdOpen: mask=%x, keyword=\"%s\", name=\"%s\", "
                   "text=\"%s\", string=%d chars...", mask, keyword, name, text,
                  string ? (int)strlen(string) : 0));
 
     if (strncmp(keyword, "Default", 7) && !string &&
-        cg->ppd_conform != PPD_CONFORM_RELAXED)
+        pg->ppd_conform != PPD_CONFORM_RELAXED)
     {
      /*
       * Need a string value!
       */
 
-      cg->ppd_status = PPD_MISSING_VALUE;
+      pg->ppd_status = PPD_MISSING_VALUE;
 
       goto error;
     }
@@ -707,7 +766,7 @@ _ppdOpen(
 
         if (!group)
        {
-          if ((group = ppd_get_group(ppd, "General", _("General"), cg,
+          if ((group = ppd_get_group(ppd, "General", _("General"), pg,
                                     encoding)) == NULL)
            goto error;
 
@@ -720,7 +779,7 @@ _ppdOpen(
 
        if (option == NULL)
        {
-          cg->ppd_status = PPD_ALLOC_ERROR;
+          pg->ppd_status = PPD_ALLOC_ERROR;
 
           goto error;
        }
@@ -844,7 +903,7 @@ _ppdOpen(
 
       if (!profile)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -878,7 +937,7 @@ _ppdOpen(
 
       if (filter == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -908,7 +967,7 @@ _ppdOpen(
 
       if (tempfonts == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -933,14 +992,14 @@ _ppdOpen(
 
       if ((coption = ppd_get_coption(ppd, keyword + 11)) == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
 
       if ((cparam = ppd_get_cparam(coption, name, text)) == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -953,7 +1012,7 @@ _ppdOpen(
           sscanf(string, "%d%32s%64s%64s", &corder, ctype, cminimum,
                  cmaximum) != 4)
       {
-        cg->ppd_status = PPD_BAD_CUSTOM_PARAM;
+        pg->ppd_status = PPD_BAD_CUSTOM_PARAM;
 
        goto error;
       }
@@ -1010,7 +1069,7 @@ _ppdOpen(
       }
       else
       {
-        cg->ppd_status = PPD_BAD_CUSTOM_PARAM;
+        pg->ppd_status = PPD_BAD_CUSTOM_PARAM;
 
        goto error;
       }
@@ -1050,7 +1109,7 @@ _ppdOpen(
 
       if (!ppd_get_coption(ppd, keyword + 6))
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1071,7 +1130,7 @@ _ppdOpen(
          {
            DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
 
-           cg->ppd_status = PPD_ALLOC_ERROR;
+           pg->ppd_status = PPD_ALLOC_ERROR;
 
            goto error;
          }
@@ -1111,7 +1170,7 @@ _ppdOpen(
            {
              DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
 
-             cg->ppd_status = PPD_ALLOC_ERROR;
+             pg->ppd_status = PPD_ALLOC_ERROR;
 
              goto error;
            }
@@ -1141,7 +1200,7 @@ _ppdOpen(
       ppd->num_emulations = count;
       if ((ppd->emulations = calloc((size_t)count, sizeof(ppd_emul_t))) == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1198,19 +1257,19 @@ _ppdOpen(
           * Found "*JobPatchFile: int: string"...
           */
 
-          cg->ppd_status = PPD_BAD_VALUE;
+          pg->ppd_status = PPD_BAD_VALUE;
 
          goto error;
         }
       }
 
-      if (!name[0] && cg->ppd_conform == PPD_CONFORM_STRICT)
+      if (!name[0] && pg->ppd_conform == PPD_CONFORM_STRICT)
       {
        /*
         * Found "*JobPatchFile: string"...
         */
 
-        cg->ppd_status = PPD_MISSING_OPTION_KEYWORD;
+        pg->ppd_status = PPD_MISSING_OPTION_KEYWORD;
 
        goto error;
       }
@@ -1223,7 +1282,7 @@ _ppdOpen(
                                     strlen(string) + 1);
         if (temp == NULL)
        {
-          cg->ppd_status = PPD_ALLOC_ERROR;
+          pg->ppd_status = PPD_ALLOC_ERROR;
 
          goto error;
        }
@@ -1239,9 +1298,9 @@ _ppdOpen(
       * Don't allow nesting of options...
       */
 
-      if (option && cg->ppd_conform == PPD_CONFORM_STRICT)
+      if (option && pg->ppd_conform == PPD_CONFORM_STRICT)
       {
-        cg->ppd_status = PPD_NESTED_OPEN_UI;
+        pg->ppd_status = PPD_NESTED_OPEN_UI;
 
        goto error;
       }
@@ -1265,7 +1324,7 @@ _ppdOpen(
         option = ppd_get_option(subgroup, name);
       else if (group == NULL)
       {
-       if ((group = ppd_get_group(ppd, "General", _("General"), cg,
+       if ((group = ppd_get_group(ppd, "General", _("General"), pg,
                                   encoding)) == NULL)
          goto error;
 
@@ -1278,7 +1337,7 @@ _ppdOpen(
 
       if (option == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1293,9 +1352,9 @@ _ppdOpen(
         option->ui = PPD_UI_BOOLEAN;
       else if (string && !strcmp(string, "PickOne"))
         option->ui = PPD_UI_PICKONE;
-      else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+      else if (pg->ppd_conform == PPD_CONFORM_STRICT)
       {
-        cg->ppd_status = PPD_BAD_OPEN_UI;
+        pg->ppd_status = PPD_BAD_OPEN_UI;
 
        goto error;
       }
@@ -1355,7 +1414,7 @@ _ppdOpen(
          {
            DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
 
-           cg->ppd_status = PPD_ALLOC_ERROR;
+           pg->ppd_status = PPD_ALLOC_ERROR;
 
            goto error;
          }
@@ -1372,9 +1431,9 @@ _ppdOpen(
       * Don't allow nesting of options...
       */
 
-      if (option && cg->ppd_conform == PPD_CONFORM_STRICT)
+      if (option && pg->ppd_conform == PPD_CONFORM_STRICT)
       {
-        cg->ppd_status = PPD_NESTED_OPEN_UI;
+        pg->ppd_status = PPD_NESTED_OPEN_UI;
 
        goto error;
       }
@@ -1383,7 +1442,7 @@ _ppdOpen(
       * Find the JCL group, and add if needed...
       */
 
-      group = ppd_get_group(ppd, "JCL", _("JCL"), cg, encoding);
+      group = ppd_get_group(ppd, "JCL", _("JCL"), pg, encoding);
 
       if (group == NULL)
        goto error;
@@ -1399,7 +1458,7 @@ _ppdOpen(
 
       if (option == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1416,7 +1475,7 @@ _ppdOpen(
         option->ui = PPD_UI_PICKONE;
       else
       {
-        cg->ppd_status = PPD_BAD_OPEN_UI;
+        pg->ppd_status = PPD_BAD_OPEN_UI;
 
        goto error;
       }
@@ -1458,7 +1517,7 @@ _ppdOpen(
        {
          DEBUG_puts("1_ppdOpen: Unable to add Custom choice!");
 
-         cg->ppd_status = PPD_ALLOC_ERROR;
+         pg->ppd_status = PPD_ALLOC_ERROR;
 
          goto error;
        }
@@ -1484,14 +1543,14 @@ _ppdOpen(
 
       if (group != NULL)
       {
-        cg->ppd_status = PPD_NESTED_OPEN_GROUP;
+        pg->ppd_status = PPD_NESTED_OPEN_GROUP;
 
        goto error;
       }
 
       if (!string)
       {
-        cg->ppd_status = PPD_BAD_OPEN_GROUP;
+        pg->ppd_status = PPD_BAD_OPEN_GROUP;
 
        goto error;
       }
@@ -1515,7 +1574,7 @@ _ppdOpen(
       * Find/add the group...
       */
 
-      group = ppd_get_group(ppd, string, sptr, cg, encoding);
+      group = ppd_get_group(ppd, string, sptr, pg, encoding);
 
       if (group == NULL)
        goto error;
@@ -1536,7 +1595,7 @@ _ppdOpen(
 
       if (!sptr || sscanf(sptr, "%40s%40s", name, keyword) != 2)
       {
-        cg->ppd_status = PPD_BAD_ORDER_DEPENDENCY;
+        pg->ppd_status = PPD_BAD_ORDER_DEPENDENCY;
 
        goto error;
       }
@@ -1656,7 +1715,7 @@ _ppdOpen(
     {
       if (!string)
       {
-       cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+       pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
        goto error;
       }
 
@@ -1667,7 +1726,7 @@ _ppdOpen(
 
       if (constraint == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1682,7 +1741,7 @@ _ppdOpen(
       {
         case 0 : /* Error */
        case 1 : /* Error */
-           cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+           pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
            goto error;
 
        case 2 : /* Two options... */
@@ -1690,11 +1749,11 @@ _ppdOpen(
            * Check for broken constraints like "* Option"...
            */
 
-           if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+           if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                (!strcmp(constraint->option1, "*") ||
                 !strcmp(constraint->choice1, "*")))
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
@@ -1705,17 +1764,17 @@ _ppdOpen(
 
            if (constraint->option1[0] == '*')
              _cups_strcpy(constraint->option1, constraint->option1 + 1);
-           else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+           else if (pg->ppd_conform == PPD_CONFORM_STRICT)
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
            if (constraint->choice1[0] == '*')
              _cups_strcpy(constraint->option2, constraint->choice1 + 1);
-           else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+           else if (pg->ppd_conform == PPD_CONFORM_STRICT)
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
@@ -1728,12 +1787,12 @@ _ppdOpen(
            * Check for broken constraints like "* Option"...
            */
 
-           if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+           if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                (!strcmp(constraint->option1, "*") ||
                 !strcmp(constraint->choice1, "*") ||
                 !strcmp(constraint->option2, "*")))
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
@@ -1744,18 +1803,18 @@ _ppdOpen(
 
            if (constraint->option1[0] == '*')
              _cups_strcpy(constraint->option1, constraint->option1 + 1);
-           else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+           else if (pg->ppd_conform == PPD_CONFORM_STRICT)
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
            if (constraint->choice1[0] == '*')
            {
-             if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+             if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                  constraint->option2[0] == '*')
              {
-               cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+               pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
                goto error;
              }
 
@@ -1767,9 +1826,9 @@ _ppdOpen(
            {
              if (constraint->option2[0] == '*')
                _cups_strcpy(constraint->option2, constraint->option2 + 1);
-             else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+             else if (pg->ppd_conform == PPD_CONFORM_STRICT)
              {
-               cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+               pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
                goto error;
              }
 
@@ -1782,43 +1841,43 @@ _ppdOpen(
            * Check for broken constraints like "* Option"...
            */
 
-           if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+           if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                (!strcmp(constraint->option1, "*") ||
                 !strcmp(constraint->choice1, "*") ||
                 !strcmp(constraint->option2, "*") ||
                 !strcmp(constraint->choice2, "*")))
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
            if (constraint->option1[0] == '*')
              _cups_strcpy(constraint->option1, constraint->option1 + 1);
-           else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+           else if (pg->ppd_conform == PPD_CONFORM_STRICT)
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
-            if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+            if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                constraint->choice1[0] == '*')
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
            if (constraint->option2[0] == '*')
              _cups_strcpy(constraint->option2, constraint->option2 + 1);
-           else if (cg->ppd_conform == PPD_CONFORM_STRICT)
+           else if (pg->ppd_conform == PPD_CONFORM_STRICT)
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
 
-            if (cg->ppd_conform == PPD_CONFORM_STRICT &&
+            if (pg->ppd_conform == PPD_CONFORM_STRICT &&
                constraint->choice2[0] == '*')
            {
-             cg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
+             pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
              goto error;
            }
            break;
@@ -1842,7 +1901,7 @@ _ppdOpen(
         * Unable to add or find size!
        */
 
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1864,7 +1923,7 @@ _ppdOpen(
         * Unable to add or find size!
        */
 
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1900,7 +1959,7 @@ _ppdOpen(
 
       if ((choice = ppd_add_choice(option, name)) == NULL)
       {
-        cg->ppd_status = PPD_ALLOC_ERROR;
+        pg->ppd_status = PPD_ALLOC_ERROR;
 
        goto error;
       }
@@ -1937,9 +1996,9 @@ _ppdOpen(
   * Check for a missing CloseGroup...
   */
 
-  if (group && cg->ppd_conform == PPD_CONFORM_STRICT)
+  if (group && pg->ppd_conform == PPD_CONFORM_STRICT)
   {
-    cg->ppd_status = PPD_MISSING_CLOSE_GROUP;
+    pg->ppd_status = PPD_MISSING_CLOSE_GROUP;
     goto error;
   }
 
@@ -1955,7 +2014,7 @@ _ppdOpen(
                   (unsigned long)cupsFileTell(fp)));
 #endif /* DEBUG */
 
-  if (cg->ppd_status != PPD_OK)
+  if (pg->ppd_status != PPD_OK)
   {
    /*
     * Had an error reading the PPD file, cannot continue!
@@ -1970,7 +2029,7 @@ _ppdOpen(
   * Update the filters array as needed...
   */
 
-  if (!ppd_update_filters(ppd, cg))
+  if (!ppd_update_filters(ppd, pg))
   {
     ppdClose(ppd);
 
@@ -2090,7 +2149,7 @@ ppdOpenFd(int fd)                 /* I - File to read from */
 {
   cups_file_t          *fp;            /* CUPS file pointer */
   ppd_file_t           *ppd;           /* PPD file record */
-  _cups_globals_t      *cg = _cupsGlobals();
+  _ppd_globals_t       *pg = _ppdGlobals();
                                        /* Global data */
 
 
@@ -2098,7 +2157,7 @@ ppdOpenFd(int fd)                 /* I - File to read from */
   * Set the line number to 0...
   */
 
-  cg->ppd_line = 0;
+  pg->ppd_line = 0;
 
  /*
   * Range check input...
@@ -2106,7 +2165,7 @@ ppdOpenFd(int fd)                 /* I - File to read from */
 
   if (fd < 0)
   {
-    cg->ppd_status = PPD_NULL_FILE;
+    pg->ppd_status = PPD_NULL_FILE;
 
     return (NULL);
   }
@@ -2123,7 +2182,7 @@ ppdOpenFd(int fd)                 /* I - File to read from */
   }
   else
   {
-    cg->ppd_status = PPD_FILE_OPEN_ERROR;
+    pg->ppd_status = PPD_FILE_OPEN_ERROR;
     ppd            = NULL;
   }
 
@@ -2141,7 +2200,7 @@ _ppdOpenFile(const char             *filename,    /* I - File to read from */
 {
   cups_file_t          *fp;            /* File pointer */
   ppd_file_t           *ppd;           /* PPD file record */
-  _cups_globals_t      *cg = _cupsGlobals();
+  _ppd_globals_t       *pg = _ppdGlobals();
                                        /* Global data */
 
 
@@ -2149,7 +2208,7 @@ _ppdOpenFile(const char             *filename,    /* I - File to read from */
   * Set the line number to 0...
   */
 
-  cg->ppd_line = 0;
+  pg->ppd_line = 0;
 
  /*
   * Range check input...
@@ -2157,7 +2216,7 @@ _ppdOpenFile(const char             *filename,    /* I - File to read from */
 
   if (filename == NULL)
   {
-    cg->ppd_status = PPD_NULL_FILE;
+    pg->ppd_status = PPD_NULL_FILE;
 
     return (NULL);
   }
@@ -2174,7 +2233,7 @@ _ppdOpenFile(const char             *filename,    /* I - File to read from */
   }
   else
   {
-    cg->ppd_status = PPD_FILE_OPEN_ERROR;
+    pg->ppd_status = PPD_FILE_OPEN_ERROR;
     ppd            = NULL;
   }
 
@@ -2202,11 +2261,11 @@ ppdOpenFile(const char *filename)       /* I - File to read from */
 void
 ppdSetConformance(ppd_conform_t c)     /* I - Conformance level */
 {
-  _cups_globals_t      *cg = _cupsGlobals();
+  _ppd_globals_t       *pg = _ppdGlobals();
                                        /* Global data */
 
 
-  cg->ppd_conform = c;
+  pg->ppd_conform = c;
 }
 
 
@@ -2623,7 +2682,7 @@ static ppd_group_t *                      /* O - Named group */
 ppd_get_group(ppd_file_t      *ppd,    /* I - PPD file */
               const char      *name,   /* I - Name of group */
              const char      *text,    /* I - Text for group */
-              _cups_globals_t *cg,     /* I - Global data */
+              _ppd_globals_t  *pg,     /* I - Global data */
              cups_encoding_t encoding) /* I - Encoding of text */
 {
   int          i;                      /* Looping var */
@@ -2631,7 +2690,7 @@ ppd_get_group(ppd_file_t      *ppd,       /* I - PPD file */
 
 
   DEBUG_printf(("7ppd_get_group(ppd=%p, name=\"%s\", text=\"%s\", cg=%p)",
-                ppd, name, text, cg));
+                ppd, name, text, pg));
 
   for (i = ppd->num_groups, group = ppd->groups; i > 0; i --, group ++)
     if (!strcmp(group->name, name))
@@ -2641,9 +2700,9 @@ ppd_get_group(ppd_file_t      *ppd,       /* I - PPD file */
   {
     DEBUG_printf(("8ppd_get_group: Adding group %s...", name));
 
-    if (cg->ppd_conform == PPD_CONFORM_STRICT && strlen(text) >= sizeof(group->text))
+    if (pg->ppd_conform == PPD_CONFORM_STRICT && strlen(text) >= sizeof(group->text))
     {
-      cg->ppd_status = PPD_ILLEGAL_TRANSLATION;
+      pg->ppd_status = PPD_ILLEGAL_TRANSLATION;
 
       return (NULL);
     }
@@ -2655,7 +2714,7 @@ ppd_get_group(ppd_file_t      *ppd,       /* I - PPD file */
 
     if (group == NULL)
     {
-      cg->ppd_status = PPD_ALLOC_ERROR;
+      pg->ppd_status = PPD_ALLOC_ERROR;
 
       return (NULL);
     }
@@ -2716,6 +2775,47 @@ ppd_get_option(ppd_group_t *group,       /* I - Group */
 }
 
 
+/*
+ * 'ppd_globals_alloc()' - Allocate and initialize global data.
+ */
+
+static _ppd_globals_t *                /* O - Pointer to global data */
+ppd_globals_alloc(void)
+{
+  return ((_ppd_globals_t *)calloc(1, sizeof(_ppd_globals_t)));
+}
+
+
+/*
+ * 'ppd_globals_free()' - Free global data.
+ */
+
+#if defined(HAVE_PTHREAD_H) || defined(WIN32)
+static void
+ppd_globals_free(_ppd_globals_t *pg)   /* I - Pointer to global data */
+{
+  free(pg);
+}
+#endif /* HAVE_PTHREAD_H || WIN32 */
+
+
+#ifdef HAVE_PTHREAD_H
+/*
+ * 'ppd_globals_init()' - Initialize per-thread globals...
+ */
+
+static void
+ppd_globals_init(void)
+{
+ /*
+  * Register the global data for this thread...
+  */
+
+  pthread_key_create(&ppd_globals_key, (void (*)(void *))ppd_globals_free);
+}
+#endif /* HAVE_PTHREAD_H */
+
+
 /*
  * 'ppd_hash_option()' - Generate a hash of the option name...
  */
@@ -2747,7 +2847,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
          char           *text,         /* O - Human-readable text from line */
         char           **string,       /* O - Code/string data */
          int            ignoreblank,   /* I - Ignore blank lines? */
-        _cups_globals_t *cg)           /* I - Global data */
+        _ppd_globals_t *pg)            /* I - Global data */
 {
   int          ch,                     /* Character from file */
                col,                    /* Column in line */
@@ -2769,7 +2869,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
 
   *string   = NULL;
   col       = 0;
-  startline = cg->ppd_line + 1;
+  startline = pg->ppd_line + 1;
 
   if (!line->buffer)
   {
@@ -2808,8 +2908,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
          * Don't allow lines longer than 256k!
          */
 
-          cg->ppd_line   = startline;
-          cg->ppd_status = PPD_LINE_TOO_LONG;
+          pg->ppd_line   = startline;
+          pg->ppd_status = PPD_LINE_TOO_LONG;
 
          return (0);
        }
@@ -2817,8 +2917,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
         temp = realloc(line->buffer, line->bufsize);
        if (!temp)
        {
-          cg->ppd_line   = startline;
-          cg->ppd_status = PPD_LINE_TOO_LONG;
+          pg->ppd_line   = startline;
+          pg->ppd_status = PPD_LINE_TOO_LONG;
 
          return (0);
        }
@@ -2833,7 +2933,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
        * Line feed or carriage return...
        */
 
-        cg->ppd_line ++;
+        pg->ppd_line ++;
        col = 0;
 
        if (ch == '\r')
@@ -2862,14 +2962,14 @@ ppd_read(cups_file_t    *fp,            /* I - File to read from */
 
        *lineptr++ = '\n';
       }
-      else if (ch < ' ' && ch != '\t' && cg->ppd_conform == PPD_CONFORM_STRICT)
+      else if (ch < ' ' && ch != '\t' && pg->ppd_conform == PPD_CONFORM_STRICT)
       {
        /*
         * Other control characters...
        */
 
-        cg->ppd_line   = startline;
-        cg->ppd_status = PPD_ILLEGAL_CHARACTER;
+        pg->ppd_line   = startline;
+        pg->ppd_status = PPD_ILLEGAL_CHARACTER;
 
         return (0);
       }
@@ -2888,8 +2988,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
           * Line is too long...
          */
 
-          cg->ppd_line   = startline;
-          cg->ppd_status = PPD_LINE_TOO_LONG;
+          pg->ppd_line   = startline;
+          pg->ppd_status = PPD_LINE_TOO_LONG;
 
           return (0);
        }
@@ -2913,7 +3013,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
          break;
        else if (ch == '\r' || ch == '\n')
        {
-         cg->ppd_line ++;
+         pg->ppd_line ++;
          col = 0;
 
          if (ch == '\r')
@@ -2928,14 +3028,14 @@ ppd_read(cups_file_t    *fp,            /* I - File to read from */
              cupsFileGetChar(fp);
          }
        }
-       else if (ch < ' ' && ch != '\t' && cg->ppd_conform == PPD_CONFORM_STRICT)
+       else if (ch < ' ' && ch != '\t' && pg->ppd_conform == PPD_CONFORM_STRICT)
        {
         /*
           * Other control characters...
          */
 
-          cg->ppd_line   = startline;
-          cg->ppd_status = PPD_ILLEGAL_CHARACTER;
+          pg->ppd_line   = startline;
+          pg->ppd_status = PPD_ILLEGAL_CHARACTER;
 
           return (0);
        }
@@ -2949,8 +3049,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
             * Line is too long...
            */
 
-            cg->ppd_line   = startline;
-            cg->ppd_status = PPD_LINE_TOO_LONG;
+            pg->ppd_line   = startline;
+            pg->ppd_status = PPD_LINE_TOO_LONG;
 
             return (0);
          }
@@ -2970,7 +3070,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
          * Line feed or carriage return...
          */
 
-          cg->ppd_line ++;
+          pg->ppd_line ++;
          col = 0;
 
          if (ch == '\r')
@@ -2987,14 +3087,14 @@ ppd_read(cups_file_t    *fp,            /* I - File to read from */
 
          break;
        }
-       else if (ch < ' ' && ch != '\t' && cg->ppd_conform == PPD_CONFORM_STRICT)
+       else if (ch < ' ' && ch != '\t' && pg->ppd_conform == PPD_CONFORM_STRICT)
        {
         /*
           * Other control characters...
          */
 
-          cg->ppd_line   = startline;
-          cg->ppd_status = PPD_ILLEGAL_CHARACTER;
+          pg->ppd_line   = startline;
+          pg->ppd_status = PPD_ILLEGAL_CHARACTER;
 
           return (0);
        }
@@ -3008,8 +3108,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
             * Line is too long...
            */
 
-            cg->ppd_line   = startline;
-            cg->ppd_status = PPD_LINE_TOO_LONG;
+            pg->ppd_line   = startline;
+            pg->ppd_status = PPD_LINE_TOO_LONG;
 
             return (0);
          }
@@ -3053,21 +3153,21 @@ ppd_read(cups_file_t    *fp,            /* I - File to read from */
          !strcmp(line->buffer, "*End")) && /* End of multi-line string */
         ignoreblank)                   /* Ignore these? */
     {
-      startline = cg->ppd_line + 1;
+      startline = pg->ppd_line + 1;
       continue;
     }
 
     if (!strcmp(line->buffer, "*"))    /* (Bad) comment line */
     {
-      if (cg->ppd_conform == PPD_CONFORM_RELAXED)
+      if (pg->ppd_conform == PPD_CONFORM_RELAXED)
       {
-       startline = cg->ppd_line + 1;
+       startline = pg->ppd_line + 1;
        continue;
       }
       else
       {
-        cg->ppd_line   = startline;
-        cg->ppd_status = PPD_ILLEGAL_MAIN_KEYWORD;
+        pg->ppd_line   = startline;
+        pg->ppd_status = PPD_ILLEGAL_MAIN_KEYWORD;
 
         return (0);
       }
@@ -3085,7 +3185,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
 
       if (*lineptr)
       {
-        cg->ppd_status = PPD_MISSING_ASTERISK;
+        pg->ppd_status = PPD_MISSING_ASTERISK;
         return (0);
       }
       else if (ignoreblank)
@@ -3105,7 +3205,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
       if (*lineptr <= ' ' || *lineptr > 126 || *lineptr == '/' ||
           (keyptr - keyword) >= (PPD_MAX_NAME - 1))
       {
-        cg->ppd_status = PPD_ILLEGAL_MAIN_KEYWORD;
+        pg->ppd_status = PPD_ILLEGAL_MAIN_KEYWORD;
        return (0);
       }
 
@@ -3136,7 +3236,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
        if (*lineptr <= ' ' || *lineptr > 126 ||
            (optptr - option) >= (PPD_MAX_NAME - 1))
         {
-          cg->ppd_status = PPD_ILLEGAL_OPTION_KEYWORD;
+          pg->ppd_status = PPD_ILLEGAL_OPTION_KEYWORD;
          return (0);
        }
 
@@ -3145,9 +3245,9 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
 
       *optptr = '\0';
 
-      if (_cups_isspace(*lineptr) && cg->ppd_conform == PPD_CONFORM_STRICT)
+      if (_cups_isspace(*lineptr) && pg->ppd_conform == PPD_CONFORM_STRICT)
       {
-        cg->ppd_status = PPD_ILLEGAL_WHITESPACE;
+        pg->ppd_status = PPD_ILLEGAL_WHITESPACE;
        return (0);
       }
 
@@ -3171,7 +3271,7 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
          if (((unsigned char)*lineptr < ' ' && *lineptr != '\t') ||
              (textptr - text) >= (PPD_MAX_LINE - 1))
          {
-           cg->ppd_status = PPD_ILLEGAL_TRANSLATION;
+           pg->ppd_status = PPD_ILLEGAL_TRANSLATION;
            return (0);
          }
 
@@ -3181,9 +3281,9 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
        *textptr = '\0';
        textlen  = ppd_decode(text);
 
-       if (textlen > PPD_MAX_TEXT && cg->ppd_conform == PPD_CONFORM_STRICT)
+       if (textlen > PPD_MAX_TEXT && pg->ppd_conform == PPD_CONFORM_STRICT)
        {
-         cg->ppd_status = PPD_ILLEGAL_TRANSLATION;
+         pg->ppd_status = PPD_ILLEGAL_TRANSLATION;
          return (0);
        }
 
@@ -3191,9 +3291,9 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
       }
     }
 
-    if (_cups_isspace(*lineptr) && cg->ppd_conform == PPD_CONFORM_STRICT)
+    if (_cups_isspace(*lineptr) && pg->ppd_conform == PPD_CONFORM_STRICT)
     {
-      cg->ppd_status = PPD_ILLEGAL_WHITESPACE;
+      pg->ppd_status = PPD_ILLEGAL_WHITESPACE;
       return (0);
     }
 
@@ -3245,8 +3345,8 @@ ppd_read(cups_file_t    *fp,              /* I - File to read from */
  */
 
 static int                             /* O - 1 on success, 0 on failure */
-ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
-                   _cups_globals_t *cg)        /* I - Global data */
+ppd_update_filters(ppd_file_t     *ppd,        /* I - PPD file */
+                   _ppd_globals_t *pg) /* I - Global data */
 {
   ppd_attr_t   *attr;                  /* Current cupsFilter2 value */
   char         srcsuper[16],           /* Source MIME media type */
@@ -3260,7 +3360,7 @@ ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
   int          cost;                   /* Cost of filter */
 
 
-  DEBUG_printf(("4ppd_update_filters(ppd=%p, cg=%p)", ppd, cg));
+  DEBUG_printf(("4ppd_update_filters(ppd=%p, cg=%p)", ppd, pg));
 
  /*
   * See if we have any cupsFilter2 lines...
@@ -3293,7 +3393,7 @@ ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
               srcsuper, srctype, dstsuper, dsttype, &cost, program) != 6)
     {
       DEBUG_puts("5ppd_update_filters: Bad cupsFilter2 line.");
-      cg->ppd_status = PPD_BAD_VALUE;
+      pg->ppd_status = PPD_BAD_VALUE;
 
       return (0);
     }
@@ -3337,7 +3437,7 @@ ppd_update_filters(ppd_file_t      *ppd,/* I - PPD file */
     if (filter == NULL)
     {
       DEBUG_puts("5ppd_update_filters: Out of memory.");
-      cg->ppd_status = PPD_ALLOC_ERROR;
+      pg->ppd_status = PPD_ALLOC_ERROR;
 
       return (0);
     }
index 56d2b0eae94d22911c826d4cbd00b55aa8b880ed..34d1b4f7339c7a41fa6aa006e0b9a8a8c3551380 100644 (file)
@@ -7,7 +7,7 @@
  *   -D_PPD_DEPRECATED="" TO YOUR COMPILE OPTIONS.  THIS HEADER AND THESE
  *   FUNCTIONS WILL BE REMOVED IN A FUTURE RELEASE OF CUPS.
  *
- *   Copyright 2007-2013 by Apple Inc.
+ *   Copyright 2007-2015 by Apple Inc.
  *   Copyright 1997-2007 by Easy Software Products, all rights reserved.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -362,8 +362,12 @@ typedef struct ppd_file_s          /**** PPD File ****/
  * Prototypes...
  */
 
-extern int             cupsMarkOptions(ppd_file_t *ppd, int num_options,
-                                       cups_option_t *options) _PPD_DEPRECATED;
+extern const char      *cupsGetPPD(const char *name) _PPD_DEPRECATED;
+extern const char      *cupsGetPPD2(http_t *http, const char *name) _PPD_DEPRECATED;
+extern http_status_t   cupsGetPPD3(http_t *http, const char *name, time_t *modtime, char *buffer, size_t bufsize) _PPD_DEPRECATED;
+extern char            *cupsGetServerPPD(http_t *http, const char *name) _PPD_DEPRECATED;
+extern int             cupsMarkOptions(ppd_file_t *ppd, int num_options, cups_option_t *options) _PPD_DEPRECATED;
+
 extern void            ppdClose(ppd_file_t *ppd) _PPD_DEPRECATED;
 extern int             ppdCollect(ppd_file_t *ppd, ppd_section_t section,
                                   ppd_choice_t  ***choices) _PPD_DEPRECATED;
index b00505da4e7bb168d8c638d89016c551e3b465d9..cc7b4f699e8191a56832af8d02ce92bd9e65562d 100644 (file)
@@ -24,6 +24,7 @@
  */
 
 #include "cups-private.h"
+#include "ppd-private.h"
 
 
 /*
index e87435fd8ef5353b53b88d813509e1d979827cfe..b211d1d75a0c134e2f145a4c01603a924d317313 100644 (file)
@@ -21,6 +21,7 @@
 
 #undef _CUPS_NO_DEPRECATED
 #include "cups-private.h"
+#include "ppd-private.h"
 #include <sys/stat.h>
 #ifdef WIN32
 #  include <io.h>
index 839bbf9992682e901345396d9015f48df82d575c..48b5bfa553273b06c39db210297e9c6156a11893 100644 (file)
 #endif /* WIN32 || __EMX__ */
 
 
-/*
- * Local functions...
- */
-
-static int     cups_get_printer_uri(http_t *http, const char *name,
-                                    char *host, int hostsize, int *port,
-                                    char *resource, int resourcesize,
-                                    int depth);
-
-
 /*
  * 'cupsCancelJob()' - Cancel a print job on the default server.
  *
@@ -691,385 +681,6 @@ cupsGetJobs2(http_t     *http,            /* I - Connection to server or @code CUPS_HTTP_D
 }
 
 
-/*
- * 'cupsGetPPD()' - Get the PPD file for a printer on the default server.
- *
- * For classes, @code cupsGetPPD@ returns the PPD file for the first printer
- * in the class.
- *
- * The returned filename is stored in a static buffer and is overwritten with
- * each call to @code cupsGetPPD@ or @link cupsGetPPD2@.  The caller "owns" the
- * file that is created and must @code unlink@ the returned filename.
- */
-
-const char *                           /* O - Filename for PPD file */
-cupsGetPPD(const char *name)           /* I - Destination name */
-{
-  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
-  time_t       modtime = 0;            /* Modification time */
-
-
- /*
-  * Return the PPD file...
-  */
-
-  cg->ppd_filename[0] = '\0';
-
-  if (cupsGetPPD3(CUPS_HTTP_DEFAULT, name, &modtime, cg->ppd_filename,
-                  sizeof(cg->ppd_filename)) == HTTP_STATUS_OK)
-    return (cg->ppd_filename);
-  else
-    return (NULL);
-}
-
-
-/*
- * 'cupsGetPPD2()' - Get the PPD file for a printer from the specified server.
- *
- * For classes, @code cupsGetPPD2@ returns the PPD file for the first printer
- * in the class.
- *
- * The returned filename is stored in a static buffer and is overwritten with
- * each call to @link cupsGetPPD@ or @code cupsGetPPD2@.  The caller "owns" the
- * file that is created and must @code unlink@ the returned filename.
- *
- * @since CUPS 1.1.21/OS X 10.4@
- */
-
-const char *                           /* O - Filename for PPD file */
-cupsGetPPD2(http_t     *http,          /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
-            const char *name)          /* I - Destination name */
-{
-  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
-  time_t       modtime = 0;            /* Modification time */
-
-
-  cg->ppd_filename[0] = '\0';
-
-  if (cupsGetPPD3(http, name, &modtime, cg->ppd_filename,
-                  sizeof(cg->ppd_filename)) == HTTP_STATUS_OK)
-    return (cg->ppd_filename);
-  else
-    return (NULL);
-}
-
-
-/*
- * 'cupsGetPPD3()' - Get the PPD file for a printer on the specified
- *                   server if it has changed.
- *
- * The "modtime" parameter contains the modification time of any
- * locally-cached content and is updated with the time from the PPD file on
- * the server.
- *
- * The "buffer" parameter contains the local PPD filename.  If it contains
- * the empty string, a new temporary file is created, otherwise the existing
- * file will be overwritten as needed.  The caller "owns" the file that is
- * created and must @code unlink@ the returned filename.
- *
- * On success, @code HTTP_STATUS_OK@ is returned for a new PPD file and
- * @code HTTP_STATUS_NOT_MODIFIED@ if the existing PPD file is up-to-date.  Any other
- * status is an error.
- *
- * For classes, @code cupsGetPPD3@ returns the PPD file for the first printer
- * in the class.
- *
- * @since CUPS 1.4/OS X 10.6@
- */
-
-http_status_t                          /* O  - HTTP status */
-cupsGetPPD3(http_t     *http,          /* I  - HTTP connection or @code CUPS_HTTP_DEFAULT@ */
-            const char *name,          /* I  - Destination name */
-           time_t     *modtime,        /* IO - Modification time */
-           char       *buffer,         /* I  - Filename buffer */
-           size_t     bufsize)         /* I  - Size of filename buffer */
-{
-  int          http_port;              /* Port number */
-  char         http_hostname[HTTP_MAX_HOST];
-                                       /* Hostname associated with connection */
-  http_t       *http2;                 /* Alternate HTTP connection */
-  int          fd;                     /* PPD file */
-  char         localhost[HTTP_MAX_URI],/* Local hostname */
-               hostname[HTTP_MAX_URI], /* Hostname */
-               resource[HTTP_MAX_URI]; /* Resource name */
-  int          port;                   /* Port number */
-  http_status_t        status;                 /* HTTP status from server */
-  char         tempfile[1024] = "";    /* Temporary filename */
-  _cups_globals_t *cg = _cupsGlobals();        /* Pointer to library globals */
-
-
- /*
-  * Range check input...
-  */
-
-  DEBUG_printf(("cupsGetPPD3(http=%p, name=\"%s\", modtime=%p(%d), buffer=%p, "
-                "bufsize=%d)", http, name, modtime,
-               modtime ? (int)*modtime : 0, buffer, (int)bufsize));
-
-  if (!name)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer name"), 1);
-    return (HTTP_STATUS_NOT_ACCEPTABLE);
-  }
-
-  if (!modtime)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No modification time"), 1);
-    return (HTTP_STATUS_NOT_ACCEPTABLE);
-  }
-
-  if (!buffer || bufsize <= 1)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Bad filename buffer"), 1);
-    return (HTTP_STATUS_NOT_ACCEPTABLE);
-  }
-
-#ifndef WIN32
- /*
-  * See if the PPD file is available locally...
-  */
-
-  if (http)
-    httpGetHostname(http, hostname, sizeof(hostname));
-  else
-  {
-    strlcpy(hostname, cupsServer(), sizeof(hostname));
-    if (hostname[0] == '/')
-      strlcpy(hostname, "localhost", sizeof(hostname));
-  }
-
-  if (!_cups_strcasecmp(hostname, "localhost"))
-  {
-    char       ppdname[1024];          /* PPD filename */
-    struct stat        ppdinfo;                /* PPD file information */
-
-
-    snprintf(ppdname, sizeof(ppdname), "%s/ppd/%s.ppd", cg->cups_serverroot,
-             name);
-    if (!stat(ppdname, &ppdinfo) && !access(ppdname, R_OK))
-    {
-     /*
-      * OK, the file exists and is readable, use it!
-      */
-
-      if (buffer[0])
-      {
-        unlink(buffer);
-
-       if (symlink(ppdname, buffer) && errno != EEXIST)
-        {
-          _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
-
-         return (HTTP_STATUS_SERVER_ERROR);
-       }
-      }
-      else
-      {
-        int            tries;          /* Number of tries */
-        const char     *tmpdir;        /* TMPDIR environment variable */
-       struct timeval  curtime;        /* Current time */
-
-       /*
-       * Previously we put root temporary files in the default CUPS temporary
-       * directory under /var/spool/cups.  However, since the scheduler cleans
-       * out temporary files there and runs independently of the user apps, we
-       * don't want to use it unless specifically told to by cupsd.
-       */
-
-       if ((tmpdir = getenv("TMPDIR")) == NULL)
-#  ifdef __APPLE__
-         tmpdir = "/private/tmp";      /* /tmp is a symlink to /private/tmp */
-#  else
-          tmpdir = "/tmp";
-#  endif /* __APPLE__ */
-
-       /*
-       * Make the temporary name using the specified directory...
-       */
-
-       tries = 0;
-
-       do
-       {
-        /*
-         * Get the current time of day...
-         */
-
-         gettimeofday(&curtime, NULL);
-
-        /*
-         * Format a string using the hex time values...
-         */
-
-         snprintf(buffer, bufsize, "%s/%08lx%05lx", tmpdir,
-                  (unsigned long)curtime.tv_sec,
-                  (unsigned long)curtime.tv_usec);
-
-        /*
-         * Try to make a symlink...
-         */
-
-         if (!symlink(ppdname, buffer))
-           break;
-
-         tries ++;
-       }
-       while (tries < 1000);
-
-        if (tries >= 1000)
-       {
-          _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
-
-         return (HTTP_STATUS_SERVER_ERROR);
-       }
-      }
-
-      if (*modtime >= ppdinfo.st_mtime)
-        return (HTTP_STATUS_NOT_MODIFIED);
-      else
-      {
-        *modtime = ppdinfo.st_mtime;
-       return (HTTP_STATUS_OK);
-      }
-    }
-  }
-#endif /* !WIN32 */
-
- /*
-  * Try finding a printer URI for this printer...
-  */
-
-  if (!http)
-    if ((http = _cupsConnect()) == NULL)
-      return (HTTP_STATUS_SERVICE_UNAVAILABLE);
-
-  if (!cups_get_printer_uri(http, name, hostname, sizeof(hostname), &port,
-                            resource, sizeof(resource), 0))
-    return (HTTP_STATUS_NOT_FOUND);
-
-  DEBUG_printf(("2cupsGetPPD3: Printer hostname=\"%s\", port=%d", hostname,
-                port));
-
-  if (cupsServer()[0] == '/' && !_cups_strcasecmp(hostname, "localhost") && port == ippPort())
-  {
-   /*
-    * Redirect localhost to domain socket...
-    */
-
-    strlcpy(hostname, cupsServer(), sizeof(hostname));
-    port = 0;
-
-    DEBUG_printf(("2cupsGetPPD3: Redirecting to \"%s\".", hostname));
-  }
-
- /*
-  * Remap local hostname to localhost...
-  */
-
-  httpGetHostname(NULL, localhost, sizeof(localhost));
-
-  DEBUG_printf(("2cupsGetPPD3: Local hostname=\"%s\"", localhost));
-
-  if (!_cups_strcasecmp(localhost, hostname))
-    strlcpy(hostname, "localhost", sizeof(hostname));
-
- /*
-  * Get the hostname and port number we are connected to...
-  */
-
-  httpGetHostname(http, http_hostname, sizeof(http_hostname));
-  http_port = httpAddrPort(http->hostaddr);
-
-  DEBUG_printf(("2cupsGetPPD3: Connection hostname=\"%s\", port=%d",
-                http_hostname, http_port));
-
- /*
-  * Reconnect to the correct server as needed...
-  */
-
-  if (!_cups_strcasecmp(http_hostname, hostname) && port == http_port)
-    http2 = http;
-  else if ((http2 = httpConnect2(hostname, port, NULL, AF_UNSPEC,
-                                cupsEncryption(), 1, 30000, NULL)) == NULL)
-  {
-    DEBUG_puts("1cupsGetPPD3: Unable to connect to server");
-
-    return (HTTP_STATUS_SERVICE_UNAVAILABLE);
-  }
-
- /*
-  * Get a temp file...
-  */
-
-  if (buffer[0])
-    fd = open(buffer, O_CREAT | O_TRUNC | O_WRONLY, 0600);
-  else
-    fd = cupsTempFd(tempfile, sizeof(tempfile));
-
-  if (fd < 0)
-  {
-   /*
-    * Can't open file; close the server connection and return NULL...
-    */
-
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
-
-    if (http2 != http)
-      httpClose(http2);
-
-    return (HTTP_STATUS_SERVER_ERROR);
-  }
-
- /*
-  * And send a request to the HTTP server...
-  */
-
-  strlcat(resource, ".ppd", sizeof(resource));
-
-  if (*modtime > 0)
-    httpSetField(http2, HTTP_FIELD_IF_MODIFIED_SINCE,
-                 httpGetDateString(*modtime));
-
-  status = cupsGetFd(http2, resource, fd);
-
-  close(fd);
-
- /*
-  * See if we actually got the file or an error...
-  */
-
-  if (status == HTTP_STATUS_OK)
-  {
-    *modtime = httpGetDateTime(httpGetField(http2, HTTP_FIELD_DATE));
-
-    if (tempfile[0])
-      strlcpy(buffer, tempfile, bufsize);
-  }
-  else if (status != HTTP_STATUS_NOT_MODIFIED)
-  {
-    _cupsSetHTTPError(status);
-
-    if (buffer[0])
-      unlink(buffer);
-    else if (tempfile[0])
-      unlink(tempfile);
-  }
-  else if (tempfile[0])
-    unlink(tempfile);
-
-  if (http2 != http)
-    httpClose(http2);
-
- /*
-  * Return the PPD file...
-  */
-
-  DEBUG_printf(("1cupsGetPPD3: Returning status %d", status));
-
-  return (status);
-}
-
-
 /*
  * 'cupsGetPrinters()' - Get a list of printers from the default server.
  *
@@ -1089,83 +700,6 @@ cupsGetPrinters(char ***printers) /* O - Printers */
 }
 
 
-/*
- * 'cupsGetServerPPD()' - Get an available PPD file from the server.
- *
- * This function returns the named PPD file from the server.  The
- * list of available PPDs is provided by the IPP @code CUPS_GET_PPDS@
- * operation.
- *
- * You must remove (unlink) the PPD file when you are finished with
- * it. The PPD filename is stored in a static location that will be
- * overwritten on the next call to @link cupsGetPPD@, @link cupsGetPPD2@,
- * or @link cupsGetServerPPD@.
- *
- * @since CUPS 1.3/OS X 10.5@
- */
-
-char *                                 /* O - Name of PPD file or @code NULL@ on error */
-cupsGetServerPPD(http_t     *http,     /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
-                 const char *name)     /* I - Name of PPD file ("ppd-name") */
-{
-  int                  fd;             /* PPD file descriptor */
-  ipp_t                        *request;       /* IPP request */
-  _cups_globals_t      *cg = _cupsGlobals();
-                                       /* Pointer to library globals */
-
-
- /*
-  * Range check input...
-  */
-
-  if (!name)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No PPD name"), 1);
-
-    return (NULL);
-  }
-
-  if (!http)
-    if ((http = _cupsConnect()) == NULL)
-      return (NULL);
-
- /*
-  * Get a temp file...
-  */
-
-  if ((fd = cupsTempFd(cg->ppd_filename, sizeof(cg->ppd_filename))) < 0)
-  {
-   /*
-    * Can't open file; close the server connection and return NULL...
-    */
-
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, NULL, 0);
-
-    return (NULL);
-  }
-
- /*
-  * Get the PPD file...
-  */
-
-  request = ippNewRequest(IPP_OP_CUPS_GET_PPD);
-  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME, "ppd-name", NULL,
-               name);
-
-  ippDelete(cupsDoIORequest(http, request, "/", -1, fd));
-
-  close(fd);
-
-  if (cupsLastError() != IPP_STATUS_OK)
-  {
-    unlink(cg->ppd_filename);
-    return (NULL);
-  }
-  else
-    return (cg->ppd_filename);
-}
-
-
 /*
  * 'cupsPrintFile()' - Print a file to a printer or class on the default server.
  */
@@ -1431,228 +965,6 @@ cupsStartDocument(
 }
 
 
-/*
- * 'cups_get_printer_uri()' - Get the printer-uri-supported attribute for the
- *                            first printer in a class.
- */
-
-static int                             /* O - 1 on success, 0 on failure */
-cups_get_printer_uri(
-    http_t     *http,                  /* I - Connection to server */
-    const char *name,                  /* I - Name of printer or class */
-    char       *host,                  /* I - Hostname buffer */
-    int        hostsize,               /* I - Size of hostname buffer */
-    int        *port,                  /* O - Port number */
-    char       *resource,              /* I - Resource buffer */
-    int        resourcesize,           /* I - Size of resource buffer */
-    int        depth)                  /* I - Depth of query */
-{
-  int          i;                      /* Looping var */
-  int          http_port;              /* Port number */
-  http_t       *http2;                 /* Alternate HTTP connection */
-  ipp_t                *request,               /* IPP request */
-               *response;              /* IPP response */
-  ipp_attribute_t *attr;               /* Current attribute */
-  char         uri[HTTP_MAX_URI],      /* printer-uri attribute */
-               scheme[HTTP_MAX_URI],   /* Scheme name */
-               username[HTTP_MAX_URI], /* Username:password */
-               classname[255],         /* Temporary class name */
-               http_hostname[HTTP_MAX_HOST];
-                                       /* Hostname associated with connection */
-  static const char * const requested_attrs[] =
-               {                       /* Requested attributes */
-                 "device-uri",
-                 "member-uris",
-                 "printer-uri-supported",
-                 "printer-type"
-               };
-
-
-  DEBUG_printf(("4cups_get_printer_uri(http=%p, name=\"%s\", host=%p, hostsize=%d, resource=%p, resourcesize=%d, depth=%d)", http, name, host, hostsize, resource, resourcesize, depth));
-
- /*
-  * Setup the printer URI...
-  */
-
-  if (httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL, "localhost", 0, "/printers/%s", name) < HTTP_URI_STATUS_OK)
-  {
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("Unable to create printer-uri"), 1);
-
-    *host     = '\0';
-    *resource = '\0';
-
-    return (0);
-  }
-
-  DEBUG_printf(("5cups_get_printer_uri: printer-uri=\"%s\"", uri));
-
- /*
-  * Get the hostname and port number we are connected to...
-  */
-
-  httpGetHostname(http, http_hostname, sizeof(http_hostname));
-  http_port = httpAddrPort(http->hostaddr);
-
-  DEBUG_printf(("5cups_get_printer_uri: http_hostname=\"%s\"", http_hostname));
-
- /*
-  * Build an IPP_GET_PRINTER_ATTRIBUTES request, which requires the following
-  * attributes:
-  *
-  *    attributes-charset
-  *    attributes-natural-language
-  *    printer-uri
-  *    requested-attributes
-  */
-
-  request = ippNewRequest(IPP_OP_GET_PRINTER_ATTRIBUTES);
-
-  ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
-
-  ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", sizeof(requested_attrs) / sizeof(requested_attrs[0]), NULL, requested_attrs);
-
- /*
-  * Do the request and get back a response...
-  */
-
-  snprintf(resource, (size_t)resourcesize, "/printers/%s", name);
-
-  if ((response = cupsDoRequest(http, request, resource)) != NULL)
-  {
-    const char *device_uri = NULL;     /* device-uri value */
-
-    if ((attr = ippFindAttribute(response, "device-uri", IPP_TAG_URI)) != NULL)
-    {
-      device_uri = attr->values[0].string.text;
-      DEBUG_printf(("5cups_get_printer_uri: device-uri=\"%s\"", device_uri));
-    }
-
-    if (device_uri &&
-        (((!strncmp(device_uri, "ipp://", 6) || !strncmp(device_uri, "ipps://", 7)) &&
-         (strstr(device_uri, "/printers/") != NULL || strstr(device_uri, "/classes/") != NULL)) ||
-         ((strstr(device_uri, "._ipp.") != NULL || strstr(device_uri, "._ipps.") != NULL) &&
-          !strcmp(device_uri + strlen(device_uri) - 5, "/cups"))))
-    {
-     /*
-      * Statically-configured shared printer.
-      */
-
-      httpSeparateURI(HTTP_URI_CODING_ALL, _httpResolveURI(device_uri, uri, sizeof(uri), _HTTP_RESOLVE_DEFAULT, NULL, NULL), scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
-      ippDelete(response);
-
-      DEBUG_printf(("5cups_get_printer_uri: Resolved to host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
-      return (1);
-    }
-    else if ((attr = ippFindAttribute(response, "member-uris", IPP_TAG_URI)) != NULL)
-    {
-     /*
-      * Get the first actual printer name in the class...
-      */
-
-      DEBUG_printf(("5cups_get_printer_uri: Got member-uris with %d values.", ippGetCount(attr)));
-
-      for (i = 0; i < attr->num_values; i ++)
-      {
-        DEBUG_printf(("5cups_get_printer_uri: member-uris[%d]=\"%s\"", i, ippGetString(attr, i, NULL)));
-
-       httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text, scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
-       if (!strncmp(resource, "/printers/", 10))
-       {
-        /*
-         * Found a printer!
-         */
-
-          ippDelete(response);
-
-         DEBUG_printf(("5cups_get_printer_uri: Found printer member with host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
-         return (1);
-       }
-      }
-
-     /*
-      * No printers in this class - try recursively looking for a printer,
-      * but not more than 3 levels deep...
-      */
-
-      if (depth < 3)
-      {
-       for (i = 0; i < attr->num_values; i ++)
-       {
-         httpSeparateURI(HTTP_URI_CODING_ALL, attr->values[i].string.text,
-                         scheme, sizeof(scheme), username, sizeof(username),
-                         host, hostsize, port, resource, resourcesize);
-         if (!strncmp(resource, "/classes/", 9))
-         {
-          /*
-           * Found a class!  Connect to the right server...
-           */
-
-           if (!_cups_strcasecmp(http_hostname, host) && *port == http_port)
-             http2 = http;
-           else if ((http2 = httpConnect2(host, *port, NULL, AF_UNSPEC, cupsEncryption(), 1, 30000, NULL)) == NULL)
-           {
-             DEBUG_puts("8cups_get_printer_uri: Unable to connect to server");
-
-             continue;
-           }
-
-           /*
-           * Look up printers on that server...
-           */
-
-            strlcpy(classname, resource + 9, sizeof(classname));
-
-            cups_get_printer_uri(http2, classname, host, hostsize, port,
-                                resource, resourcesize, depth + 1);
-
-           /*
-           * Close the connection as needed...
-           */
-
-           if (http2 != http)
-             httpClose(http2);
-
-            if (*host)
-             return (1);
-         }
-       }
-      }
-    }
-    else if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
-    {
-      httpSeparateURI(HTTP_URI_CODING_ALL, _httpResolveURI(attr->values[0].string.text, uri, sizeof(uri), _HTTP_RESOLVE_DEFAULT, NULL, NULL), scheme, sizeof(scheme), username, sizeof(username), host, hostsize, port, resource, resourcesize);
-      ippDelete(response);
-
-      DEBUG_printf(("5cups_get_printer_uri: Resolved to host=\"%s\", port=%d, resource=\"%s\"", host, *port, resource));
-
-      if (!strncmp(resource, "/classes/", 9))
-      {
-        _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer-uri found for class"), 1);
-
-       *host     = '\0';
-       *resource = '\0';
-
-        DEBUG_puts("5cups_get_printer_uri: Not returning class.");
-       return (0);
-      }
-
-      return (1);
-    }
-
-    ippDelete(response);
-  }
-
-  if (cupsLastError() != IPP_STATUS_ERROR_NOT_FOUND)
-    _cupsSetError(IPP_STATUS_ERROR_INTERNAL, _("No printer-uri found"), 1);
-
-  *host     = '\0';
-  *resource = '\0';
-
-  DEBUG_puts("5cups_get_printer_uri: Printer URI not found.");
-  return (0);
-}
-
-
 /*
  * End of "$Id$".
  */
index 3087485a7f196cfa0971ba61231d1050fa5d486b..bacd5646fdd592c8a3751e541064802c4854265f 100644 (file)
@@ -18,15 +18,15 @@ commandtops.o: commandtops.c ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/sidechannel.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/ppd.h ../cups/sidechannel.h
 gziptoany.o: gziptoany.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 common.o: common.c common.h ../cups/string-private.h ../config.h \
   ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
   ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
@@ -59,8 +59,8 @@ rastertopwg.o: rastertopwg.c ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/raster.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
 testraster.o: testraster.c ../cups/raster-private.h ../cups/raster.h \
   ../cups/cups.h ../cups/file.h ../cups/versioning.h ../cups/ipp.h \
   ../cups/http.h ../cups/array.h ../cups/language.h ../cups/pwg.h \
index e4fe25b32fce5ce75a130816969a7bddaa752dc2..7e17f533108b6ab228885b7d6c6a56c745f9701a 100644 (file)
@@ -19,6 +19,7 @@
  */
 
 #include <cups/cups-private.h>
+#include <cups/ppd-private.h>
 #include <cups/raster.h>
 #include <unistd.h>
 #include <fcntl.h>
index 29e13cec6e4242e1ffb363e5cf3cdf2327d29dfa..0aa4636c2ad24f1c6fc32d1b686d1bac885b61a3 100644 (file)
@@ -4,13 +4,12 @@ checkpo.o: checkpo.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 po2strings.o: po2strings.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 strings2po.o: strings2po.c
index 10a252aaa39f588c387af3fe7ad0b5c071f04c99..acc2157cbd5c1939ca765f3b034b85c8f6c0db2c 100644 (file)
@@ -3,12 +3,12 @@ bcp.o: bcp.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/ppd.h
 tbcp.o: tbcp.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h ../cups/ppd.h
index d844f9de40050694785380fcff0ef34135899ccd..a6bc421868f8cbbbf21f6647a4efa1c9b04d0f86 100644 (file)
@@ -7,7 +7,7 @@ mailto.o: mailto.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 rss.o: rss.c ../cups/cups.h ../cups/file.h ../cups/versioning.h \
   ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
   ../cups/pwg.h ../cups/string-private.h ../config.h \
@@ -18,5 +18,4 @@ testnotify.o: testnotify.c ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
index 9feb967572b2925f324c77b37b6e0b57b0d4786a..c08ea55628244e1bb151233fec0c9d888c59bfd2 100644 (file)
@@ -4,32 +4,28 @@ ppdc-array.o: ppdc-array.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-attr.o: ppdc-attr.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-catalog.o: ppdc-catalog.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-choice.o: ppdc-choice.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-constraint.o: ppdc-constraint.cxx ppdc-private.h ppdc.h \
   ../cups/file.h ../cups/versioning.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
@@ -37,172 +33,152 @@ ppdc-constraint.o: ppdc-constraint.cxx ppdc-private.h ppdc.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 ppdc-driver.o: ppdc-driver.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-file.o: ppdc-file.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-filter.o: ppdc-filter.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-font.o: ppdc-font.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-group.o: ppdc-group.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-import.o: ppdc-import.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h ../cups/ppd.h
 ppdc-mediasize.o: ppdc-mediasize.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-message.o: ppdc-message.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-option.o: ppdc-option.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-profile.o: ppdc-profile.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-shared.o: ppdc-shared.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-source.o: ppdc-source.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h ../cups/raster.h ../data/epson.h ../data/hp.h \
-  ../data/label.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h ../cups/raster.h \
+  ../cups/ppd.h ../data/epson.h ../data/hp.h ../data/label.h
 ppdc-string.o: ppdc-string.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc-variable.o: ppdc-variable.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 genstrings.o: genstrings.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdc.o: ppdc.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdhtml.o: ppdhtml.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdi.o: ppdi.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 ppdmerge.o: ppdmerge.cxx ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h ../cups/ppd-private.h ../cups/ppd.h
 ppdpo.o: ppdpo.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
 testcatalog.o: testcatalog.cxx ppdc-private.h ppdc.h ../cups/file.h \
   ../cups/versioning.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/pwg.h ../cups/ppd-private.h ../cups/ppd.h \
-  ../cups/thread-private.h
+  ../cups/cups.h ../cups/pwg.h ../cups/thread-private.h
index e61c28800047704a73f75c894fb333f2d05564d1..fac4b488a2eca36493549a68b7e6eb48fb621b14 100644 (file)
@@ -4,18 +4,18 @@ auth.o: auth.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
-  client.h policy.h printers.h classes.h job.h colorman.h conf.h \
-  banners.h dirsvc.h network.h subscriptions.h
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 banners.o: banners.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h ../cups/dir.h
@@ -25,18 +25,18 @@ cert.o: cert.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
-  client.h policy.h printers.h classes.h job.h colorman.h conf.h \
-  banners.h dirsvc.h network.h subscriptions.h
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 classes.o: classes.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -46,8 +46,8 @@ client.o: client.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -57,8 +57,8 @@ colorman.o: colorman.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -68,18 +68,18 @@ conf.o: conf.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
-  client.h policy.h printers.h classes.h job.h colorman.h conf.h \
-  banners.h dirsvc.h network.h subscriptions.h
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 dirsvc.o: dirsvc.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -89,48 +89,48 @@ env.o: env.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
-  client.h policy.h printers.h classes.h job.h colorman.h conf.h \
-  banners.h dirsvc.h network.h subscriptions.h
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 file.o: file.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
-  client.h policy.h printers.h classes.h job.h colorman.h conf.h \
-  banners.h dirsvc.h network.h subscriptions.h ../cups/dir.h
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h ../cups/dir.h
 main.o: main.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
-  client.h policy.h printers.h classes.h job.h colorman.h conf.h \
-  banners.h dirsvc.h network.h subscriptions.h
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 ipp.o: ipp.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
-  client.h policy.h printers.h classes.h job.h colorman.h conf.h \
-  banners.h dirsvc.h network.h subscriptions.h
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 listen.o: listen.c cupsd.h ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -140,29 +140,28 @@ job.o: job.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
-  client.h policy.h printers.h classes.h job.h colorman.h conf.h \
-  banners.h dirsvc.h network.h subscriptions.h ../cups/backend.h \
-  ../cups/dir.h
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h ../cups/backend.h ../cups/dir.h
 log.o: log.c cupsd.h ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h mime.h sysman.h statbuf.h cert.h auth.h \
-  client.h policy.h printers.h classes.h job.h colorman.h conf.h \
-  banners.h dirsvc.h network.h subscriptions.h
+  ../cups/thread-private.h ../cups/file-private.h ../cups/ppd-private.h \
+  ../cups/ppd.h mime.h sysman.h statbuf.h cert.h auth.h client.h \
+  policy.h printers.h classes.h job.h colorman.h conf.h banners.h \
+  dirsvc.h network.h subscriptions.h
 network.o: network.c ../cups/http-private.h ../config.h \
   ../cups/language.h ../cups/array.h ../cups/versioning.h ../cups/http.h \
   ../cups/md5-private.h ../cups/ipp-private.h ../cups/ipp.h cupsd.h \
   ../cups/cups-private.h ../cups/string-private.h \
   ../cups/debug-private.h ../cups/array-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -172,8 +171,8 @@ policy.o: policy.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -183,8 +182,8 @@ printers.o: printers.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h ../cups/dir.h
@@ -194,8 +193,8 @@ process.o: process.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -205,8 +204,8 @@ quotas.o: quotas.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -216,8 +215,8 @@ select.o: select.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -227,8 +226,8 @@ server.o: server.c ../cups/http-private.h ../config.h ../cups/language.h \
   ../cups/cups-private.h ../cups/string-private.h \
   ../cups/debug-private.h ../cups/array-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -238,8 +237,8 @@ statbuf.o: statbuf.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -249,8 +248,8 @@ subscriptions.o: subscriptions.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -260,8 +259,8 @@ sysman.o: sysman.c cupsd.h ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h \
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h \
   sysman.h statbuf.h cert.h auth.h client.h policy.h printers.h \
   classes.h job.h colorman.h conf.h banners.h dirsvc.h network.h \
   subscriptions.h
@@ -281,8 +280,8 @@ cupsfilter.o: cupsfilter.c ../cups/cups-private.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/file-private.h mime.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/file-private.h ../cups/ppd-private.h ../cups/ppd.h mime.h
 cups-deviced.o: cups-deviced.c util.h ../cups/array-private.h \
   ../cups/array.h ../cups/versioning.h ../cups/file-private.h \
   ../cups/cups-private.h ../cups/string-private.h ../config.h \
@@ -290,8 +289,7 @@ cups-deviced.o: cups-deviced.c util.h ../cups/array-private.h \
   ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/dir.h
+  ../cups/thread-private.h ../cups/dir.h
 cups-exec.o: cups-exec.c ../cups/string-private.h ../config.h \
   ../cups/file.h ../cups/versioning.h
 cups-lpd.o: cups-lpd.c ../cups/cups-private.h ../cups/string-private.h \
@@ -300,7 +298,7 @@ cups-lpd.o: cups-lpd.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 testlpd.o: testlpd.c ../cups/cups.h ../cups/file.h ../cups/versioning.h \
   ../cups/ipp.h ../cups/http.h ../cups/array.h ../cups/language.h \
   ../cups/pwg.h ../cups/string-private.h ../config.h
@@ -323,8 +321,7 @@ util.o: util.c util.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 cups-driverd.o: cups-driverd.cxx util.h ../cups/array-private.h \
   ../cups/array.h ../cups/versioning.h ../cups/file-private.h \
   ../cups/cups-private.h ../cups/string-private.h ../config.h \
@@ -332,5 +329,5 @@ cups-driverd.o: cups-driverd.cxx util.h ../cups/array-private.h \
   ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/dir.h ../ppdc/ppdc.h
+  ../cups/thread-private.h ../cups/dir.h ../cups/ppd-private.h \
+  ../cups/ppd.h ../ppdc/ppdc.h
index 3885305a7c09c9eabfbb979c98e2423d7924420b..2d8247f699d81287ae5ef9c7b3c897dfe48387ee 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <cups/cups-private.h>
 #include <cups/file-private.h>
+#include <cups/ppd-private.h>
 
 #include <limits.h>
 #include <time.h>
index effbf99f0563a5c60d45d777c7a9f969aa4abe39..585e9c6d3035fa2d2a0f39518a11ef01feb5427c 100644 (file)
@@ -4,86 +4,82 @@ cancel.o: cancel.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 cupsaccept.o: cupsaccept.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 cupsaddsmb.o: cupsaddsmb.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/adminutil.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/adminutil.h
 cupsctl.o: cupsctl.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/adminutil.h
+  ../cups/thread-private.h ../cups/adminutil.h
 cupstestdsc.o: cupstestdsc.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 cupstestppd.o: cupstestppd.c ../cups/cups-private.h \
   ../cups/string-private.h ../config.h ../cups/debug-private.h \
   ../cups/versioning.h ../cups/array-private.h ../cups/array.h \
   ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h ../cups/dir.h ../cups/raster.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h \
+  ../cups/dir.h ../cups/ppd-private.h ../cups/ppd.h ../cups/raster.h
 lp.o: lp.c ../cups/cups-private.h ../cups/string-private.h ../config.h \
   ../cups/debug-private.h ../cups/versioning.h ../cups/array-private.h \
   ../cups/array.h ../cups/ipp-private.h ../cups/ipp.h ../cups/http.h \
   ../cups/http-private.h ../cups/language.h ../cups/md5-private.h \
   ../cups/language-private.h ../cups/transcode.h ../cups/pwg-private.h \
-  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/ppd-private.h \
-  ../cups/ppd.h ../cups/thread-private.h
+  ../cups/cups.h ../cups/file.h ../cups/pwg.h ../cups/thread-private.h
 lpadmin.o: lpadmin.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h ../cups/ppd-private.h ../cups/ppd.h
 lpinfo.o: lpinfo.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 lpmove.o: lpmove.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 lpoptions.o: lpoptions.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h ../cups/ppd-private.h ../cups/ppd.h
 lpstat.o: lpstat.c ../cups/cups-private.h ../cups/string-private.h \
   ../config.h ../cups/debug-private.h ../cups/versioning.h \
   ../cups/array-private.h ../cups/array.h ../cups/ipp-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
index eb7ce0fb2f33acec24c0d67e3307afb3f574378e..cff71b695f060e9f5e7a7240a243153e55705662 100644 (file)
@@ -20,6 +20,7 @@
 #define _CUPS_NO_DEPRECATED
 #define _PPD_DEPRECATED
 #include <cups/cups-private.h>
+#include <cups/ppd-private.h>
 
 
 /*
index 36d98998606c50be6f771a3f758b018484a142ad..df7c2d63d078d264368ec1e29e5350f038b9f0b3 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Printer option program for CUPS.
  *
- * Copyright 2007-2014 by Apple Inc.
+ * Copyright 2007-2015 by Apple Inc.
  * Copyright 1997-2006 by Easy Software Products.
  *
  * These coded instructions, statements, and computer programs are the
@@ -18,6 +18,7 @@
  */
 
 #include <cups/cups-private.h>
+#include <cups/ppd-private.h>
 
 
 /*
index e2822d07306140023322640005af3e929445eb24..322301a94cabeec006bd8f70885c0f4f68b11919 100644 (file)
@@ -4,7 +4,7 @@ ippfind.o: ippfind.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h
+  ../cups/thread-private.h
 ippinfra.o: ippinfra.c ../config.h ../cups/cups.h ../cups/file.h \
   ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
   ../cups/language.h ../cups/pwg.h ../cups/string-private.h \
@@ -22,8 +22,7 @@ ipptool.o: ipptool.c ../cups/cups-private.h ../cups/string-private.h \
   ../cups/ipp.h ../cups/http.h ../cups/http-private.h ../cups/language.h \
   ../cups/md5-private.h ../cups/language-private.h ../cups/transcode.h \
   ../cups/pwg-private.h ../cups/cups.h ../cups/file.h ../cups/pwg.h \
-  ../cups/ppd-private.h ../cups/ppd.h ../cups/thread-private.h \
-  ../cups/file-private.h
+  ../cups/thread-private.h ../cups/file-private.h
 xmltotest.o: xmltotest.c ../config.h ../cups/cups.h ../cups/file.h \
   ../cups/versioning.h ../cups/ipp.h ../cups/http.h ../cups/array.h \
   ../cups/language.h ../cups/pwg.h
index 5575db3418fb555e38ccfa22e4ee89c1589f8847..c8c3bcfcecf3415f081f00aca259b0548183097d 100644 (file)
                274FF68813333B6E00317ECB /* cupsfilter.c in Sources */ = {isa = PBXBuildFile; fileRef = 274FF68713333B6E00317ECB /* cupsfilter.c */; };
                274FF68B1333B1C400317ECB /* adminutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EB51333052D00FCA411 /* adminutil.c */; };
                274FF68C1333B1C400317ECB /* array.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EB81333056300FCA411 /* array.c */; };
-               274FF68D1333B1C400317ECB /* attr.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBA1333056300FCA411 /* attr.c */; };
+               274FF68D1333B1C400317ECB /* ppd-attr.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBA1333056300FCA411 /* ppd-attr.c */; };
                274FF68E1333B1C400317ECB /* auth.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBB1333056300FCA411 /* auth.c */; };
                274FF68F1333B1C400317ECB /* backchannel.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBC1333056300FCA411 /* backchannel.c */; };
                274FF6901333B1C400317ECB /* backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBD1333056300FCA411 /* backend.c */; };
-               274FF6911333B1C400317ECB /* conflicts.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBF1333056300FCA411 /* conflicts.c */; };
-               274FF6921333B1C400317ECB /* custom.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EC21333056300FCA411 /* custom.c */; };
+               274FF6911333B1C400317ECB /* ppd-conflicts.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBF1333056300FCA411 /* ppd-conflicts.c */; };
+               274FF6921333B1C400317ECB /* ppd-custom.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EC21333056300FCA411 /* ppd-custom.c */; };
                274FF6931333B1C400317ECB /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED1133305BB00FCA411 /* debug.c */; };
                274FF6941333B1C400317ECB /* dest.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED2133305BB00FCA411 /* dest.c */; };
                274FF6951333B1C400317ECB /* dir.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED3133305BB00FCA411 /* dir.c */; };
-               274FF6961333B1C400317ECB /* emit.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED5133305BB00FCA411 /* emit.c */; };
+               274FF6961333B1C400317ECB /* ppd-emit.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED5133305BB00FCA411 /* ppd-emit.c */; };
                274FF6971333B1C400317ECB /* encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED6133305BB00FCA411 /* encode.c */; };
                274FF6981333B1C400317ECB /* file.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED8133305BB00FCA411 /* file.c */; };
                274FF6991333B1C400317ECB /* getdevices.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EDA133305BB00FCA411 /* getdevices.c */; };
                274FF6A21333B1C400317ECB /* ipp.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EE6133305BB00FCA411 /* ipp.c */; };
                274FF6A31333B1C400317ECB /* langprintf.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EE8133305BB00FCA411 /* langprintf.c */; };
                274FF6A41333B1C400317ECB /* language.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEA133305BB00FCA411 /* language.c */; };
-               274FF6A51333B1C400317ECB /* localize.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEC133305BB00FCA411 /* localize.c */; };
-               274FF6A61333B1C400317ECB /* mark.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EED133305BB00FCA411 /* mark.c */; };
+               274FF6A51333B1C400317ECB /* ppd-localize.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEC133305BB00FCA411 /* ppd-localize.c */; };
+               274FF6A61333B1C400317ECB /* ppd-mark.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EED133305BB00FCA411 /* ppd-mark.c */; };
                274FF6A71333B1C400317ECB /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEF133305BB00FCA411 /* md5.c */; };
                274FF6A81333B1C400317ECB /* md5passwd.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF0133305BB00FCA411 /* md5passwd.c */; };
                274FF6A91333B1C400317ECB /* notify.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF1133305BB00FCA411 /* notify.c */; };
                274FF6AA1333B1C400317ECB /* options.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF2133305BB00FCA411 /* options.c */; };
-               274FF6AB1333B1C400317ECB /* page.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF3133305BB00FCA411 /* page.c */; };
+               274FF6AB1333B1C400317ECB /* ppd-page.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF3133305BB00FCA411 /* ppd-page.c */; };
                274FF6AC1333B1C400317ECB /* ppd-cache.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF4133305BB00FCA411 /* ppd-cache.c */; };
                274FF6AD1333B1C400317ECB /* ppd.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF6133305BB00FCA411 /* ppd.c */; };
                274FF6AE1333B1C400317ECB /* pwg-media.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF8133305BB00FCA411 /* pwg-media.c */; };
                72220EC41333056300FCA411 /* adminutil.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EB71333056300FCA411 /* adminutil.h */; settings = {ATTRIBUTES = (Public, ); }; };
                72220EC51333056300FCA411 /* array.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EB81333056300FCA411 /* array.c */; };
                72220EC61333056300FCA411 /* array.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EB91333056300FCA411 /* array.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               72220EC71333056300FCA411 /* attr.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBA1333056300FCA411 /* attr.c */; };
+               72220EC71333056300FCA411 /* ppd-attr.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBA1333056300FCA411 /* ppd-attr.c */; };
                72220EC81333056300FCA411 /* auth.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBB1333056300FCA411 /* auth.c */; };
                72220EC91333056300FCA411 /* backchannel.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBC1333056300FCA411 /* backchannel.c */; };
                72220ECA1333056300FCA411 /* backend.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBD1333056300FCA411 /* backend.c */; };
                72220ECB1333056300FCA411 /* backend.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EBE1333056300FCA411 /* backend.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               72220ECC1333056300FCA411 /* conflicts.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBF1333056300FCA411 /* conflicts.c */; };
+               72220ECC1333056300FCA411 /* ppd-conflicts.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EBF1333056300FCA411 /* ppd-conflicts.c */; };
                72220ECD1333056300FCA411 /* cups-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EC01333056300FCA411 /* cups-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220ECE1333056300FCA411 /* cups.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EC11333056300FCA411 /* cups.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               72220ECF1333056300FCA411 /* custom.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EC21333056300FCA411 /* custom.c */; };
+               72220ECF1333056300FCA411 /* ppd-custom.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EC21333056300FCA411 /* ppd-custom.c */; };
                72220ED01333056300FCA411 /* debug-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EC31333056300FCA411 /* debug-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220F0B133305BB00FCA411 /* debug.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED1133305BB00FCA411 /* debug.c */; };
                72220F0C133305BB00FCA411 /* dest.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED2133305BB00FCA411 /* dest.c */; };
                72220F0D133305BB00FCA411 /* dir.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED3133305BB00FCA411 /* dir.c */; };
                72220F0E133305BB00FCA411 /* dir.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220ED4133305BB00FCA411 /* dir.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               72220F0F133305BB00FCA411 /* emit.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED5133305BB00FCA411 /* emit.c */; };
+               72220F0F133305BB00FCA411 /* ppd-emit.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED5133305BB00FCA411 /* ppd-emit.c */; };
                72220F10133305BB00FCA411 /* encode.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED6133305BB00FCA411 /* encode.c */; };
                72220F11133305BB00FCA411 /* file-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220ED7133305BB00FCA411 /* file-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220F12133305BB00FCA411 /* file.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220ED8133305BB00FCA411 /* file.c */; };
                72220F23133305BB00FCA411 /* language-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EE9133305BB00FCA411 /* language-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220F24133305BB00FCA411 /* language.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEA133305BB00FCA411 /* language.c */; };
                72220F25133305BB00FCA411 /* language.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EEB133305BB00FCA411 /* language.h */; settings = {ATTRIBUTES = (Public, ); }; };
-               72220F26133305BB00FCA411 /* localize.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEC133305BB00FCA411 /* localize.c */; };
-               72220F27133305BB00FCA411 /* mark.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EED133305BB00FCA411 /* mark.c */; };
+               72220F26133305BB00FCA411 /* ppd-localize.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEC133305BB00FCA411 /* ppd-localize.c */; };
+               72220F27133305BB00FCA411 /* ppd-mark.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EED133305BB00FCA411 /* ppd-mark.c */; };
                72220F28133305BB00FCA411 /* md5-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EEE133305BB00FCA411 /* md5-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220F29133305BB00FCA411 /* md5.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EEF133305BB00FCA411 /* md5.c */; };
                72220F2A133305BB00FCA411 /* md5passwd.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF0133305BB00FCA411 /* md5passwd.c */; };
                72220F2B133305BB00FCA411 /* notify.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF1133305BB00FCA411 /* notify.c */; };
                72220F2C133305BB00FCA411 /* options.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF2133305BB00FCA411 /* options.c */; };
-               72220F2D133305BB00FCA411 /* page.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF3133305BB00FCA411 /* page.c */; };
+               72220F2D133305BB00FCA411 /* ppd-page.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF3133305BB00FCA411 /* ppd-page.c */; };
                72220F2E133305BB00FCA411 /* ppd-cache.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF4133305BB00FCA411 /* ppd-cache.c */; };
                72220F2F133305BB00FCA411 /* ppd-private.h in Headers */ = {isa = PBXBuildFile; fileRef = 72220EF5133305BB00FCA411 /* ppd-private.h */; settings = {ATTRIBUTES = (Private, ); }; };
                72220F30133305BB00FCA411 /* ppd.c in Sources */ = {isa = PBXBuildFile; fileRef = 72220EF6133305BB00FCA411 /* ppd.c */; };
                728FB7EE15361642005426E1 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework */; };
                728FB7F11536167A005426E1 /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7EF1536167A005426E1 /* libiconv.dylib */; };
                728FB7F21536167A005426E1 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 728FB7F01536167A005426E1 /* libresolv.dylib */; };
+               72A8B3D71C188CB800A1A547 /* ppd-util.c in Sources */ = {isa = PBXBuildFile; fileRef = 72A8B3D61C188BDE00A1A547 /* ppd-util.c */; };
+               72A8B3D81C188CB900A1A547 /* ppd-util.c in Sources */ = {isa = PBXBuildFile; fileRef = 72A8B3D61C188BDE00A1A547 /* ppd-util.c */; };
                72BFD5FB191AF0A30005DA37 /* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 72A4332F155844CF002E172D /* libcups_static.a */; };
                72BFD5FC191AF0A30005DA37 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E5136B64AF00836530 /* CoreFoundation.framework */; };
                72BFD5FD191AF0A30005DA37 /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; };
                72220EB71333056300FCA411 /* adminutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = adminutil.h; path = ../cups/adminutil.h; sourceTree = "<group>"; };
                72220EB81333056300FCA411 /* array.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = array.c; path = ../cups/array.c; sourceTree = "<group>"; };
                72220EB91333056300FCA411 /* array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = array.h; path = ../cups/array.h; sourceTree = "<group>"; };
-               72220EBA1333056300FCA411 /* attr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = attr.c; path = ../cups/attr.c; sourceTree = "<group>"; };
+               72220EBA1333056300FCA411 /* ppd-attr.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-attr.c"; path = "../cups/ppd-attr.c"; sourceTree = "<group>"; };
                72220EBB1333056300FCA411 /* auth.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = auth.c; path = ../cups/auth.c; sourceTree = "<group>"; };
                72220EBC1333056300FCA411 /* backchannel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = backchannel.c; path = ../cups/backchannel.c; sourceTree = "<group>"; };
                72220EBD1333056300FCA411 /* backend.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = backend.c; path = ../cups/backend.c; sourceTree = "<group>"; };
                72220EBE1333056300FCA411 /* backend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = backend.h; path = ../cups/backend.h; sourceTree = "<group>"; };
-               72220EBF1333056300FCA411 /* conflicts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = conflicts.c; path = ../cups/conflicts.c; sourceTree = "<group>"; };
+               72220EBF1333056300FCA411 /* ppd-conflicts.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-conflicts.c"; path = "../cups/ppd-conflicts.c"; sourceTree = "<group>"; };
                72220EC01333056300FCA411 /* cups-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "cups-private.h"; path = "../cups/cups-private.h"; sourceTree = "<group>"; };
                72220EC11333056300FCA411 /* cups.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = cups.h; path = ../cups/cups.h; sourceTree = "<group>"; };
-               72220EC21333056300FCA411 /* custom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = custom.c; path = ../cups/custom.c; sourceTree = "<group>"; };
+               72220EC21333056300FCA411 /* ppd-custom.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-custom.c"; path = "../cups/ppd-custom.c"; sourceTree = "<group>"; };
                72220EC31333056300FCA411 /* debug-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "debug-private.h"; path = "../cups/debug-private.h"; sourceTree = "<group>"; };
                72220ED1133305BB00FCA411 /* debug.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = debug.c; path = ../cups/debug.c; sourceTree = "<group>"; };
                72220ED2133305BB00FCA411 /* dest.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dest.c; path = ../cups/dest.c; sourceTree = "<group>"; };
                72220ED3133305BB00FCA411 /* dir.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = dir.c; path = ../cups/dir.c; sourceTree = "<group>"; };
                72220ED4133305BB00FCA411 /* dir.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = dir.h; path = ../cups/dir.h; sourceTree = "<group>"; };
-               72220ED5133305BB00FCA411 /* emit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = emit.c; path = ../cups/emit.c; sourceTree = "<group>"; };
+               72220ED5133305BB00FCA411 /* ppd-emit.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-emit.c"; path = "../cups/ppd-emit.c"; sourceTree = "<group>"; };
                72220ED6133305BB00FCA411 /* encode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = encode.c; path = ../cups/encode.c; sourceTree = "<group>"; };
                72220ED7133305BB00FCA411 /* file-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "file-private.h"; path = "../cups/file-private.h"; sourceTree = "<group>"; };
                72220ED8133305BB00FCA411 /* file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = file.c; path = ../cups/file.c; sourceTree = "<group>"; };
                72220EE9133305BB00FCA411 /* language-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "language-private.h"; path = "../cups/language-private.h"; sourceTree = "<group>"; };
                72220EEA133305BB00FCA411 /* language.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = language.c; path = ../cups/language.c; sourceTree = "<group>"; };
                72220EEB133305BB00FCA411 /* language.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = language.h; path = ../cups/language.h; sourceTree = "<group>"; };
-               72220EEC133305BB00FCA411 /* localize.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = localize.c; path = ../cups/localize.c; sourceTree = "<group>"; };
-               72220EED133305BB00FCA411 /* mark.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = mark.c; path = ../cups/mark.c; sourceTree = "<group>"; };
+               72220EEC133305BB00FCA411 /* ppd-localize.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-localize.c"; path = "../cups/ppd-localize.c"; sourceTree = "<group>"; };
+               72220EED133305BB00FCA411 /* ppd-mark.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-mark.c"; path = "../cups/ppd-mark.c"; sourceTree = "<group>"; };
                72220EEE133305BB00FCA411 /* md5-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "md5-private.h"; path = "../cups/md5-private.h"; sourceTree = "<group>"; };
                72220EEF133305BB00FCA411 /* md5.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5.c; path = ../cups/md5.c; sourceTree = "<group>"; };
                72220EF0133305BB00FCA411 /* md5passwd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = md5passwd.c; path = ../cups/md5passwd.c; sourceTree = "<group>"; };
                72220EF1133305BB00FCA411 /* notify.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = notify.c; path = ../cups/notify.c; sourceTree = "<group>"; };
                72220EF2133305BB00FCA411 /* options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = options.c; path = ../cups/options.c; sourceTree = "<group>"; };
-               72220EF3133305BB00FCA411 /* page.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = page.c; path = ../cups/page.c; sourceTree = "<group>"; };
+               72220EF3133305BB00FCA411 /* ppd-page.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-page.c"; path = "../cups/ppd-page.c"; sourceTree = "<group>"; };
                72220EF4133305BB00FCA411 /* ppd-cache.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-cache.c"; path = "../cups/ppd-cache.c"; sourceTree = "<group>"; };
                72220EF5133305BB00FCA411 /* ppd-private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "ppd-private.h"; path = "../cups/ppd-private.h"; sourceTree = "<group>"; };
                72220EF6133305BB00FCA411 /* ppd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = ppd.c; path = ../cups/ppd.c; sourceTree = "<group>"; };
                729D4B561A2CB48700692B21 /* CHANGES-2.0.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "CHANGES-2.0.txt"; path = "../CHANGES-2.0.txt"; sourceTree = "<group>"; };
                729D4B571A2CB48700692B21 /* CHANGES-IPPTOOL.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = "CHANGES-IPPTOOL.txt"; path = "../CHANGES-IPPTOOL.txt"; sourceTree = "<group>"; };
                72A4332F155844CF002E172D /* libcups_static.a */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; path = libcups_static.a; sourceTree = BUILT_PRODUCTS_DIR; };
+               72A8B3D61C188BDE00A1A547 /* ppd-util.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "ppd-util.c"; path = "../cups/ppd-util.c"; sourceTree = "<group>"; };
                72C16CB8137B195D007E4BF4 /* file.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = file.c; path = ../scheduler/file.c; sourceTree = SOURCE_ROOT; };
                72CF95E018A13543000FCAE4 /* dest-job.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "dest-job.c"; path = "../cups/dest-job.c"; sourceTree = "<group>"; };
                72CF95E118A13543000FCAE4 /* dest-localization.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "dest-localization.c"; path = "../cups/dest-localization.c"; sourceTree = "<group>"; };
                                27D3037D134148CB00F022B1 /* libcups2.def */,
                                72220EB51333052D00FCA411 /* adminutil.c */,
                                72220EB81333056300FCA411 /* array.c */,
-                               72220EBA1333056300FCA411 /* attr.c */,
                                72220EBB1333056300FCA411 /* auth.c */,
                                72220EBC1333056300FCA411 /* backchannel.c */,
                                72220EBD1333056300FCA411 /* backend.c */,
-                               72220EBF1333056300FCA411 /* conflicts.c */,
-                               72220EC21333056300FCA411 /* custom.c */,
                                72220ED1133305BB00FCA411 /* debug.c */,
-                               72220ED2133305BB00FCA411 /* dest.c */,
                                72CF95E018A13543000FCAE4 /* dest-job.c */,
                                72CF95E118A13543000FCAE4 /* dest-localization.c */,
                                72CF95E218A13543000FCAE4 /* dest-options.c */,
+                               72220ED2133305BB00FCA411 /* dest.c */,
                                72220ED3133305BB00FCA411 /* dir.c */,
                                72220ED4133305BB00FCA411 /* dir.h */,
-                               72220ED5133305BB00FCA411 /* emit.c */,
                                72220ED6133305BB00FCA411 /* encode.c */,
                                72220ED8133305BB00FCA411 /* file.c */,
                                72220EDA133305BB00FCA411 /* getdevices.c */,
                                72220EDC133305BB00FCA411 /* getputfile.c */,
                                72220EDD133305BB00FCA411 /* globals.c */,
                                7284F9EF1BFCCD940026F886 /* hash.c */,
-                               72220EE2133305BB00FCA411 /* http.c */,
                                72220EDE133305BB00FCA411 /* http-addr.c */,
                                72220EDF133305BB00FCA411 /* http-addrlist.c */,
                                72220EE1133305BB00FCA411 /* http-support.c */,
-                               72220EE6133305BB00FCA411 /* ipp.c */,
+                               72220EE2133305BB00FCA411 /* http.c */,
                                72220EE5133305BB00FCA411 /* ipp-support.c */,
+                               72220EE6133305BB00FCA411 /* ipp.c */,
                                72220EE8133305BB00FCA411 /* langprintf.c */,
                                72220EEA133305BB00FCA411 /* language.c */,
-                               72220EEC133305BB00FCA411 /* localize.c */,
-                               72220EED133305BB00FCA411 /* mark.c */,
                                72220EEF133305BB00FCA411 /* md5.c */,
                                72220EF0133305BB00FCA411 /* md5passwd.c */,
                                72220EF1133305BB00FCA411 /* notify.c */,
                                72220EF2133305BB00FCA411 /* options.c */,
-                               72220EF3133305BB00FCA411 /* page.c */,
-                               72220EF4133305BB00FCA411 /* ppd-cache.c */,
                                72220EF6133305BB00FCA411 /* ppd.c */,
+                               72220EBA1333056300FCA411 /* ppd-attr.c */,
+                               72220EF4133305BB00FCA411 /* ppd-cache.c */,
+                               72220EBF1333056300FCA411 /* ppd-conflicts.c */,
+                               72220EC21333056300FCA411 /* ppd-custom.c */,
+                               72220ED5133305BB00FCA411 /* ppd-emit.c */,
+                               72220EEC133305BB00FCA411 /* ppd-localize.c */,
+                               72220EED133305BB00FCA411 /* ppd-mark.c */,
+                               72220EF3133305BB00FCA411 /* ppd-page.c */,
+                               72A8B3D61C188BDE00A1A547 /* ppd-util.c */,
                                72220EF8133305BB00FCA411 /* pwg-media.c */,
                                72220EFB133305BB00FCA411 /* request.c */,
                                72220EFC133305BB00FCA411 /* sidechannel.c */,
                                72220F02133305BB00FCA411 /* string.c */,
                                72220F03133305BB00FCA411 /* tempfile.c */,
                                72220F05133305BB00FCA411 /* thread.c */,
-                               727AD5B619100A58009F6862 /* tls.c */,
                                270B267D17F5C06700C8A3A9 /* tls-darwin.c */,
                                270B267E17F5C06700C8A3A9 /* tls-gnutls.c */,
                                270B268117F5C5D600C8A3A9 /* tls-sspi.c */,
+                               727AD5B619100A58009F6862 /* tls.c */,
                                72220F06133305BB00FCA411 /* transcode.c */,
                                72220F08133305BB00FCA411 /* usersys.c */,
                                72220F09133305BB00FCA411 /* util.c */,
                        files = (
                                274FF68B1333B1C400317ECB /* adminutil.c in Sources */,
                                274FF68C1333B1C400317ECB /* array.c in Sources */,
-                               274FF68D1333B1C400317ECB /* attr.c in Sources */,
+                               274FF68D1333B1C400317ECB /* ppd-attr.c in Sources */,
                                274FF68E1333B1C400317ECB /* auth.c in Sources */,
                                274FF68F1333B1C400317ECB /* backchannel.c in Sources */,
                                274FF6901333B1C400317ECB /* backend.c in Sources */,
-                               274FF6911333B1C400317ECB /* conflicts.c in Sources */,
-                               274FF6921333B1C400317ECB /* custom.c in Sources */,
+                               274FF6911333B1C400317ECB /* ppd-conflicts.c in Sources */,
+                               274FF6921333B1C400317ECB /* ppd-custom.c in Sources */,
                                274FF6931333B1C400317ECB /* debug.c in Sources */,
                                274FF6941333B1C400317ECB /* dest.c in Sources */,
                                274FF6951333B1C400317ECB /* dir.c in Sources */,
-                               274FF6961333B1C400317ECB /* emit.c in Sources */,
+                               274FF6961333B1C400317ECB /* ppd-emit.c in Sources */,
                                274FF6971333B1C400317ECB /* encode.c in Sources */,
                                274FF6981333B1C400317ECB /* file.c in Sources */,
                                274FF6991333B1C400317ECB /* getdevices.c in Sources */,
                                274FF69E1333B1C400317ECB /* http-addrlist.c in Sources */,
                                274FF69F1333B1C400317ECB /* http-support.c in Sources */,
                                274FF6A01333B1C400317ECB /* http.c in Sources */,
+                               72A8B3D81C188CB900A1A547 /* ppd-util.c in Sources */,
                                2767FC7419268F0C000F61D3 /* dest-options.c in Sources */,
                                274FF6A11333B1C400317ECB /* ipp-support.c in Sources */,
                                274FF6A21333B1C400317ECB /* ipp.c in Sources */,
                                274FF6A31333B1C400317ECB /* langprintf.c in Sources */,
                                274FF6A41333B1C400317ECB /* language.c in Sources */,
-                               274FF6A51333B1C400317ECB /* localize.c in Sources */,
-                               274FF6A61333B1C400317ECB /* mark.c in Sources */,
+                               274FF6A51333B1C400317ECB /* ppd-localize.c in Sources */,
+                               274FF6A61333B1C400317ECB /* ppd-mark.c in Sources */,
                                274FF6A71333B1C400317ECB /* md5.c in Sources */,
                                274FF6A81333B1C400317ECB /* md5passwd.c in Sources */,
                                7284F9F11BFCCDB20026F886 /* hash.c in Sources */,
                                274FF6A91333B1C400317ECB /* notify.c in Sources */,
                                274FF6AA1333B1C400317ECB /* options.c in Sources */,
                                727AD5B819100A58009F6862 /* tls.c in Sources */,
-                               274FF6AB1333B1C400317ECB /* page.c in Sources */,
+                               274FF6AB1333B1C400317ECB /* ppd-page.c in Sources */,
                                274FF6AC1333B1C400317ECB /* ppd-cache.c in Sources */,
                                2767FC7219268F06000F61D3 /* dest-job.c in Sources */,
                                274FF6AD1333B1C400317ECB /* ppd.c in Sources */,
                        files = (
                                72220EB61333052D00FCA411 /* adminutil.c in Sources */,
                                72220EC51333056300FCA411 /* array.c in Sources */,
-                               72220EC71333056300FCA411 /* attr.c in Sources */,
+                               72220EC71333056300FCA411 /* ppd-attr.c in Sources */,
                                727AD5B719100A58009F6862 /* tls.c in Sources */,
                                72220EC81333056300FCA411 /* auth.c in Sources */,
                                72220EC91333056300FCA411 /* backchannel.c in Sources */,
                                72220ECA1333056300FCA411 /* backend.c in Sources */,
-                               72220ECC1333056300FCA411 /* conflicts.c in Sources */,
-                               72220ECF1333056300FCA411 /* custom.c in Sources */,
+                               72220ECC1333056300FCA411 /* ppd-conflicts.c in Sources */,
+                               72220ECF1333056300FCA411 /* ppd-custom.c in Sources */,
                                72220F0B133305BB00FCA411 /* debug.c in Sources */,
                                72220F0C133305BB00FCA411 /* dest.c in Sources */,
                                72220F0D133305BB00FCA411 /* dir.c in Sources */,
-                               72220F0F133305BB00FCA411 /* emit.c in Sources */,
+                               72220F0F133305BB00FCA411 /* ppd-emit.c in Sources */,
                                72220F10133305BB00FCA411 /* encode.c in Sources */,
                                72220F12133305BB00FCA411 /* file.c in Sources */,
                                72220F14133305BB00FCA411 /* getdevices.c in Sources */,
                                72220F18133305BB00FCA411 /* http-addr.c in Sources */,
                                72220F19133305BB00FCA411 /* http-addrlist.c in Sources */,
                                72220F1B133305BB00FCA411 /* http-support.c in Sources */,
+                               72A8B3D71C188CB800A1A547 /* ppd-util.c in Sources */,
                                72220F1C133305BB00FCA411 /* http.c in Sources */,
                                72CF95E518A13543000FCAE4 /* dest-options.c in Sources */,
                                72220F1F133305BB00FCA411 /* ipp-support.c in Sources */,
                                72220F20133305BB00FCA411 /* ipp.c in Sources */,
                                72220F22133305BB00FCA411 /* langprintf.c in Sources */,
                                72220F24133305BB00FCA411 /* language.c in Sources */,
-                               72220F26133305BB00FCA411 /* localize.c in Sources */,
-                               72220F27133305BB00FCA411 /* mark.c in Sources */,
+                               72220F26133305BB00FCA411 /* ppd-localize.c in Sources */,
+                               72220F27133305BB00FCA411 /* ppd-mark.c in Sources */,
                                72220F29133305BB00FCA411 /* md5.c in Sources */,
                                7284F9F01BFCCDB10026F886 /* hash.c in Sources */,
                                72220F2A133305BB00FCA411 /* md5passwd.c in Sources */,
                                72220F2B133305BB00FCA411 /* notify.c in Sources */,
                                72220F2C133305BB00FCA411 /* options.c in Sources */,
-                               72220F2D133305BB00FCA411 /* page.c in Sources */,
+                               72220F2D133305BB00FCA411 /* ppd-page.c in Sources */,
                                72220F2E133305BB00FCA411 /* ppd-cache.c in Sources */,
                                72220F30133305BB00FCA411 /* ppd.c in Sources */,
                                72220F32133305BB00FCA411 /* pwg-media.c in Sources */,