[prev in list] [next in list] [prev in thread] [next in thread]
List: cups-commit
Subject: [cups.commit] [CUPS] r9703 - trunk/scheduler
From: cups-dev () easysw ! com
Date: 2011-04-20 21:59:16
Message-ID: 10474-cups.commit () news ! easysw ! com
[Download RAW message or body]
Author: mike
Date: 2011-04-20 14:59:16 -0700 (Wed, 20 Apr 2011)
New Revision: 9703
Log:
Add support for Mac OS X driver bundles.
Modified:
trunk/scheduler/cups-driverd.cxx
Modified: trunk/scheduler/cups-driverd.cxx
===================================================================
--- trunk/scheduler/cups-driverd.cxx 2011-04-20 21:16:08 UTC (rev 9702)
+++ trunk/scheduler/cups-driverd.cxx 2011-04-20 21:59:16 UTC (rev 9703)
@@ -543,8 +543,11 @@
const char *datadir; /* CUPS_DATADIR env var */
char line[1024], /* Line/filename */
message[2048]; /* status-message */
+#ifdef __APPLE__
+ const char *printerDriver, /* Pointer to .printerDriver extension */
+ *slash; /* Pointer to next slash */
+#endif /* __APPLE__ */
-
if (name[0] == '/' || strstr(name, "../") || strstr(name, "/.."))
{
/*
@@ -575,7 +578,19 @@
#ifdef __APPLE__
if (!strncmp(name, "System/Library/Printers/PPDs/Contents/Resources/", 48) ||
- !strncmp(name, "Library/Printers/PPDs/Contents/Resources/", 41))
+ !strncmp(name, "Library/Printers/PPDs/Contents/Resources/", 41) ||
+ (!strncmp(name, "System/Library/Printers/", 24) &&
+ (printerDriver =
+ strstr(name + 24,
+ ".printerDriver/Contents/Resources/PPDs")) != NULL &&
+ (slash = strchr(name + 24, '/')) != NULL &&
+ slash > printerDriver) ||
+ (!strncmp(name, "Library/Printers/", 17) &&
+ (printerDriver =
+ strstr(name + 17,
+ ".printerDriver/Contents/Resources/PPDs")) != NULL &&
+ (slash = strchr(name + 17, '/')) != NULL &&
+ slash > printerDriver))
{
/*
* Map ppd-name to Mac OS X standard locations...
@@ -583,7 +598,6 @@
snprintf(line, sizeof(line), "/%s", name);
}
- else
#elif defined(__linux)
if (!strncmp(name, "lsb/usr/", 8))
@@ -872,10 +886,14 @@
* Load PPDs from standard Mac OS X locations...
*/
+ load_ppds("/Library/Printers",
+ "Library/Printers", 0);
load_ppds("/Library/Printers/PPDs/Contents/Resources",
"Library/Printers/PPDs/Contents/Resources", 0);
load_ppds("/Library/Printers/PPDs/Contents/Resources/en.lproj",
"Library/Printers/PPDs/Contents/Resources/en.lproj", 0);
+ load_ppds("/System/Library/Printers",
+ "System/Library/Printers", 0);
load_ppds("/System/Library/Printers/PPDs/Contents/Resources",
"System/Library/Printers/PPDs/Contents/Resources", 0);
load_ppds("/System/Library/Printers/PPDs/Contents/Resources/en.lproj",
@@ -1850,12 +1868,30 @@
*/
if (descend)
+ {
if (!load_ppds(filename, name, 1))
{
cupsDirClose(dir);
return (1);
}
+ }
+ else if ((ptr = filename + strlen(filename) - 14) > filename &&
+ !strcmp(ptr, ".printerDriver"))
+ {
+ /*
+ * Load PPDs in a printer driver bundle.
+ */
+ strlcat(filename, "/Contents/Resources/PPDs", sizeof(filename));
+ strlcat(name, "/Contents/Resources/PPDs", sizeof(name));
+
+ if (!load_ppds(filename, name, 0))
+ {
+ cupsDirClose(dir);
+ return (1);
+ }
+ }
+
continue;
}
else if ((ptr = filename + strlen(filename) - 6) > filename &&
_______________________________________________
cups-commit mailing list
cups-commit@easysw.com
http://lists.easysw.com/mailman/listinfo/cups-commit
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic