[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cups-commit
Subject:    [cups.commit] [CUPS] r9731 - in trunk: cups xcode/CUPS.xcodeproj
From:       cups-dev () easysw ! com
Date:       2011-04-29 22:45:48
Message-ID: 10502-cups.commit () news ! easysw ! com
[Download RAW message or body]

Author: mike
Date: 2011-04-29 15:45:35 -0700 (Fri, 29 Apr 2011)
New Revision: 9731
Log:
Update Bonjour support to resolve the server's hostname to a FQDN (not just a
.local name) when needed.


Modified:
   trunk/cups/backend.c
   trunk/cups/http-private.h
   trunk/cups/http-support.c
   trunk/cups/testhttp.c
   trunk/cups/util.c
   trunk/xcode/CUPS.xcodeproj/project.pbxproj

Modified: trunk/cups/backend.c
===================================================================
--- trunk/cups/backend.c	2011-04-29 15:35:23 UTC (rev 9730)
+++ trunk/cups/backend.c	2011-04-29 22:45:35 UTC (rev 9731)
@@ -50,8 +50,10 @@
 const char *				/* O - Device URI or @code NULL@ */
 cupsBackendDeviceURI(char **argv)	/* I - Command-line arguments */
 {
-  const char	*device_uri;		/* Device URI */
+  const char	*device_uri,		/* Device URI */
+		*auth_info_required;	/* AUTH_INFO_REQUIRED env var */
   _cups_globals_t *cg = _cupsGlobals();	/* Global info */
+  int		options;		/* Resolve options */
 
 
   if ((device_uri = getenv("DEVICE_URI")) == NULL)
@@ -62,8 +64,13 @@
     device_uri = argv[0];
   }
 
+  options = _HTTP_RESOLVE_STDERR;
+  if ((auth_info_required = getenv("AUTH_INFO_REQUIRED")) != NULL &&
+      !strcmp(auth_info_required, "negotiate"))
+    options |= _HTTP_RESOLVE_FQDN;
+
   return (_httpResolveURI(device_uri, cg->resolved_uri,
-                          sizeof(cg->resolved_uri), 1, NULL, NULL));
+                          sizeof(cg->resolved_uri), options, NULL, NULL));
 }
 
 

Modified: trunk/cups/http-private.h
===================================================================
--- trunk/cups/http-private.h	2011-04-29 15:35:23 UTC (rev 9730)
+++ trunk/cups/http-private.h	2011-04-29 22:45:35 UTC (rev 9731)
@@ -137,6 +137,16 @@
 
 
 /*
+ * Constants...
+ */
+
+
+#define _HTTP_RESOLVE_DEFAULT	0	/* Just resolve with default options */
+#define _HTTP_RESOLVE_STDERR	1	/* Log resolve progress to stderr */
+#define _HTTP_RESOLVE_FQDN	2	/* Resolve to a FQDN */
+
+
+/*
  * Types and functions for SSL support...
  */
 
@@ -215,7 +225,6 @@
 typedef void *http_tls_credentials_t;
 #  endif /* HAVE_LIBSSL */
 
-
 typedef int (*_http_timeout_cb_t)(http_t *http, void *user_data);
 
 struct _http_s				/**** HTTP connection structure. ****/
@@ -365,7 +374,7 @@
 extern void		_httpFreeCredentials(http_tls_credentials_t credentials);
 extern ssize_t		_httpPeek(http_t *http, char *buffer, size_t length);
 extern const char	*_httpResolveURI(const char *uri, char *resolved_uri,
-			                 size_t resolved_size, int log,
+			                 size_t resolved_size, int options,
 					 int (*cb)(void *context),
 					 void *context);
 extern void		_httpSetTimeout(http_t *http, double timeout,

Modified: trunk/cups/http-support.c
===================================================================
--- trunk/cups/http-support.c	2011-04-29 15:35:23 UTC (rev 9730)
+++ trunk/cups/http-support.c	2011-04-29 22:45:35 UTC (rev 9731)
@@ -36,13 +36,13 @@
  *                          components.
  *   httpStatus()         - Return a short string describing a HTTP status code.
  *   _cups_hstrerror()    - hstrerror() emulation function for Solaris and
- *                          others...
+ *                          others.
  *   _httpDecodeURI()     - Percent-decode a HTTP request URI.
  *   _httpEncodeURI()     - Percent-encode a HTTP request URI.
  *   _httpResolveURI()    - Resolve a DNS-SD URI.
  *   http_copy_decode()   - Copy and decode a URI.
  *   http_copy_encode()   - Copy and encode a URI.
- *   resolve_callback()   - Build a device URI for the given service name.
+ *   http_resolve_cb()    - Build a device URI for the given service name.
  */
 
 /*
@@ -70,6 +70,7 @@
 {
   char		*buffer;		/* Pointer to buffer */
   size_t	bufsize;		/* Size of buffer */
+  int		options;		/* Options passed to _httpResolveURI */
 } _http_uribuf_t;
 
 
@@ -115,15 +116,15 @@
 			                  char *dstend, const char *reserved,
 					  const char *term, int encode);
 #ifdef HAVE_DNSSD
-static void DNSSD_API	resolve_callback(DNSServiceRef sdRef,
-					 DNSServiceFlags flags,
-					 uint32_t interfaceIndex,
-					 DNSServiceErrorType errorCode,
-					 const char *fullName,
-					 const char *hostTarget,
-					 uint16_t port, uint16_t txtLen,
-					 const unsigned char *txtRecord,
-					 void *context);
+static void DNSSD_API	http_resolve_cb(DNSServiceRef sdRef,
+					DNSServiceFlags flags,
+					uint32_t interfaceIndex,
+					DNSServiceErrorType errorCode,
+					const char *fullName,
+					const char *hostTarget,
+					uint16_t port, uint16_t txtLen,
+					const unsigned char *txtRecord,
+					void *context);
 #endif /* HAVE_DNSSD */
 
 
@@ -1319,7 +1320,7 @@
 
 #ifndef HAVE_HSTRERROR
 /*
- * '_cups_hstrerror()' - hstrerror() emulation function for Solaris and others...
+ * '_cups_hstrerror()' - hstrerror() emulation function for Solaris and others.
  */
 
 const char *				/* O - Error string */
@@ -1382,7 +1383,7 @@
     const char *uri,			/* I - DNS-SD URI */
     char       *resolved_uri,		/* I - Buffer for resolved URI */
     size_t     resolved_size,		/* I - Size of URI buffer */
-    int        logit,			/* I - Log progress to stderr? */
+    int        options,			/* I - Resolve options */
     int        (*cb)(void *context),	/* I - Continue callback function */
     void       *context)		/* I - Context pointer for callback */
 {
@@ -1416,7 +1417,7 @@
 		      sizeof(resource)) < HTTP_URI_OK)
 #endif /* DEBUG */
   {
-    if (logit)
+    if (options & _HTTP_RESOLVE_STDERR)
       _cupsLangPrintFilter(stderr, "ERROR", _("Bad device-uri \"%s\"."), uri);
 
     DEBUG_printf(("6_httpResolveURI: httpSeparateURI returned %d!", status));
@@ -1449,7 +1450,7 @@
     struct timeval	stimeout;	/* Timeout value for select() */
 #endif /* HAVE_POLL */
 
-    if (logit)
+    if (options & _HTTP_RESOLVE_STDERR)
       fprintf(stderr, "DEBUG: Resolving \"%s\"...\n", hostname);
 
    /*
@@ -1484,14 +1485,14 @@
     if (domain)
       *domain++ = '\0';
 
-    uribuf.buffer  = resolved_uri;
-    uribuf.bufsize = resolved_size;
-
+    uribuf.buffer   = resolved_uri;
+    uribuf.bufsize  = resolved_size;
+    uribuf.options  = options;
     resolved_uri[0] = '\0';
 
     DEBUG_printf(("6_httpResolveURI: Resolving hostname=\"%s\", regtype=\"%s\", "
                   "domain=\"%s\"\n", hostname, regtype, domain));
-    if (logit)
+    if (options & _HTTP_RESOLVE_STDERR)
     {
       fputs("STATE: +connecting-to-device\n", stderr);
       fprintf(stderr, "DEBUG: Resolving \"%s\", regtype=\"%s\", "
@@ -1504,7 +1505,7 @@
     {
       localref = ref;
       if (DNSServiceResolve(&localref, kDNSServiceFlagsShareConnection, 0,
-			    hostname, regtype, "local.", resolve_callback,
+			    hostname, regtype, "local.", http_resolve_cb,
 			    &uribuf) == kDNSServiceErr_NoError)
       {
 	int	fds;			/* Number of ready descriptors */
@@ -1513,7 +1514,7 @@
 
 	for (;;)
 	{
-	  if (logit)
+	  if (options & _HTTP_RESOLVE_STDERR)
 	    _cupsLangPrintFilter(stderr, "INFO", _("Looking for printer."));
 
 	  if (cb && !(*cb)(context))
@@ -1561,17 +1562,19 @@
 	    * comes in, do an additional domain resolution...
 	    */
 
-	    if (domainsent == 0 && strcasecmp(domain, "local."))
+	    if (domainsent == 0 && (domain && strcasecmp(domain, "local.")))
 	    {
-	      if (logit)
+	      if (options & _HTTP_RESOLVE_STDERR)
 		fprintf(stderr,
 		        "DEBUG: Resolving \"%s\", regtype=\"%s\", "
-			"domain=\"%s\"...\n", hostname, regtype, domain);
+			"domain=\"%s\"...\n", hostname, regtype,
+			domain ? domain : "");
   
 	      domainref = ref;
-	      if (DNSServiceResolve(&domainref, kDNSServiceFlagsShareConnection, 0,
-				    hostname, regtype, domain, resolve_callback,
-				    &uribuf) == kDNSServiceErr_NoError)
+	      if (DNSServiceResolve(&domainref, kDNSServiceFlagsShareConnection,
+	                            0, hostname, regtype, domain,
+				    http_resolve_cb, &uribuf)
+		      == kDNSServiceErr_NoError)
 		domainsent = 1;
 	    }
 
@@ -1580,7 +1583,8 @@
 	    * printer-state-reason...
 	    */
 
-	    if (logit && offline == 0 && time(NULL) > (start_time + 5))
+	    if ((options & _HTTP_RESOLVE_STDERR) && offline == 0 &&
+	        time(NULL) > (start_time + 5))
 	    {
 	      fputs("STATE: +offline-report\n", stderr);
 	      offline = 1;
@@ -1605,7 +1609,7 @@
       DNSServiceRefDeallocate(ref);
     }
 
-    if (logit)
+    if (options & _HTTP_RESOLVE_STDERR)
     {
       if (uri)
         fprintf(stderr, "DEBUG: Resolved as \"%s\"...\n", uri);
@@ -1623,7 +1627,7 @@
     uri = NULL;
 #endif /* HAVE_DNSSD */
 
-    if (logit && !uri)
+    if ((options & _HTTP_RESOLVE_STDERR) && !uri)
       _cupsLangPrintFilter(stderr, "ERROR", _("Unable to find printer."));
   }
 
@@ -1752,11 +1756,11 @@
 
 #ifdef HAVE_DNSSD
 /*
- * 'resolve_callback()' - Build a device URI for the given service name.
+ * 'http_resolve_cb()' - Build a device URI for the given service name.
  */
 
 static void DNSSD_API
-resolve_callback(
+http_resolve_cb(
     DNSServiceRef       sdRef,		/* I - Service reference */
     DNSServiceFlags     flags,		/* I - Results flags */
     uint32_t            interfaceIndex,	/* I - Interface number */
@@ -1768,25 +1772,35 @@
     const unsigned char *txtRecord,	/* I - TXT record data */
     void                *context)	/* I - Pointer to URI buffer */
 {
-  const char		*scheme;	/* URI scheme */
-  char			rp[257];	/* Remote printer */
+  const char		*scheme,	/* URI scheme */
+			*hostptr;	/* Pointer into hostTarget */
+  char			rp[257],	/* Remote printer */
+			fqdn[256];	/* FQDN of the .local name */
   const void		*value;		/* Value from TXT record */
   uint8_t		valueLen;	/* Length of value */
   _http_uribuf_t	*uribuf;	/* URI buffer */
 
 
-  DEBUG_printf(("7resolve_callback(sdRef=%p, flags=%x, interfaceIndex=%u, "
+  DEBUG_printf(("7http_resolve_cb(sdRef=%p, flags=%x, interfaceIndex=%u, "
 	        "errorCode=%d, fullName=\"%s\", hostTarget=\"%s\", port=%u, "
 	        "txtLen=%u, txtRecord=%p, context=%p)", sdRef, flags,
 	        interfaceIndex, errorCode, fullName, hostTarget, port, txtLen,
 	        txtRecord, context));
 
+  uribuf = (_http_uribuf_t *)context;
+
  /*
   * Figure out the scheme from the full name...
   */
 
-  if (strstr(fullName, "._ipp") || strstr(fullName, "._fax-ipp"))
+  if (strstr(fullName, "._ipps") || strstr(fullName, "._ipp-tls"))
+    scheme = "ipps";
+  else if (strstr(fullName, "._ipp") || strstr(fullName, "._fax-ipp"))
     scheme = "ipp";
+  else if (strstr(fullName, "._http."))
+    scheme = "http";
+  else if (strstr(fullName, "._https."))
+    scheme = "https";
   else if (strstr(fullName, "._printer."))
     scheme = "lpd";
   else if (strstr(fullName, "._pdl-datastream."))
@@ -1813,16 +1827,61 @@
     rp[0] = '\0';
 
  /*
+  * Lookup the FQDN if needed...
+  */
+
+  if ((uribuf->options & _HTTP_RESOLVE_FQDN) &&
+      (hostptr = hostTarget + strlen(hostTarget) - 7) > hostTarget &&
+      !strcasecmp(hostptr, ".local."))
+  {
+   /*
+    * OK, we got a .local name but the caller needs a real domain.  Start by
+    * getting the IP address of the .local name and then do reverse-lookups...
+    */
+
+    http_addrlist_t	*addrlist,	/* List of addresses */
+			*addr;		/* Current address */
+
+    DEBUG_printf(("8http_resolve_cb: Looking up \"%s\".", hostTarget));
+
+    snprintf(fqdn, sizeof(fqdn), "%d", ntohs(port));
+    if ((addrlist = httpAddrGetList(hostTarget, AF_UNSPEC, fqdn)) != NULL)
+    {
+      for (addr = addrlist; addr; addr = addr->next)
+      {
+        int error = getnameinfo(&(addr->addr.addr),
+	                        httpAddrLength(&(addr->addr)),
+			        fqdn, sizeof(fqdn), NULL, 0, NI_NAMEREQD);
+
+        if (!error)
+	{
+	  DEBUG_printf(("8http_resolve_cb: Found \"%s\".", fqdn));
+
+	  if ((hostptr = fqdn + strlen(fqdn) - 6) <= fqdn ||
+	      strcasecmp(hostptr, ".local"))
+	  {
+	    hostTarget = fqdn;
+	    break;
+	  }
+	}
+#ifdef DEBUG
+	else
+	  DEBUG_printf(("8http_resolve_cb: \"%s\" did not resolve: %d",
+	                httpAddrString(&(addr->addr), fqdn, sizeof(fqdn)),
+			error));
+#endif /* DEBUG */
+      }
+    }
+  }
+
+ /*
   * Assemble the final device URI...
   */
 
-  uribuf = (_http_uribuf_t *)context;
-
   httpAssembleURI(HTTP_URI_CODING_ALL, uribuf->buffer, uribuf->bufsize, scheme,
                   NULL, hostTarget, ntohs(port), rp);
 
-  DEBUG_printf(("8resolve_callback: Resolved URI is \"%s\"...",
-                uribuf->buffer));
+  DEBUG_printf(("8http_resolve_cb: Resolved URI is \"%s\"...", uribuf->buffer));
 }
 #endif /* HAVE_DNSSD */
 

Modified: trunk/cups/testhttp.c
===================================================================
--- trunk/cups/testhttp.c	2011-04-29 15:35:23 UTC (rev 9730)
+++ trunk/cups/testhttp.c	2011-04-29 22:45:35 UTC (rev 9731)
@@ -465,16 +465,34 @@
     char	resolved[1024];		/* Resolved URI */
 
 
-    printf("_httpResolveURI(%s): ", argv[1]);
+    printf("_httpResolveURI(%s, _HTTP_RESOLVE_DEFAULT): ", argv[1]);
     fflush(stdout);
 
-    if (!_httpResolveURI(argv[1], resolved, sizeof(resolved), 1, NULL, NULL))
+    if (!_httpResolveURI(argv[1], resolved, sizeof(resolved),
+                         _HTTP_RESOLVE_DEFAULT, NULL, NULL))
     {
       puts("FAIL");
       return (1);
     }
     else
+      printf("PASS (%s)\n", resolved);
+
+    printf("_httpResolveURI(%s, _HTTP_RESOLVE_FQDN): ", argv[1]);
+    fflush(stdout);
+
+    if (!_httpResolveURI(argv[1], resolved, sizeof(resolved),
+                         _HTTP_RESOLVE_FQDN, NULL, NULL))
     {
+      puts("FAIL");
+      return (1);
+    }
+    else if (strstr(resolved, ".local:"))
+    {
+      printf("FAIL (%s)\n", resolved);
+      return (1);
+    }
+    else
+    {
       printf("PASS (%s)\n", resolved);
       return (0);
     }

Modified: trunk/cups/util.c
===================================================================
--- trunk/cups/util.c	2011-04-29 15:35:23 UTC (rev 9730)
+++ trunk/cups/util.c	2011-04-29 22:45:35 UTC (rev 9731)
@@ -3,7 +3,7 @@
  *
  *   Printing utilities for CUPS.
  *
- *   Copyright 2007-2010 by Apple Inc.
+ *   Copyright 2007-2011 by Apple Inc.
  *   Copyright 1997-2006 by Easy Software Products.
  *
  *   These coded instructions, statements, and computer programs are the
@@ -1762,7 +1762,8 @@
     {
       httpSeparateURI(HTTP_URI_CODING_ALL,
                       _httpResolveURI(attr->values[0].string.text, uri,
-		                      sizeof(uri), 0, NULL, NULL),
+		                      sizeof(uri), _HTTP_RESOLVE_DEFAULT,
+				      NULL, NULL),
                       scheme, sizeof(scheme), username, sizeof(username),
 		      host, hostsize, port, resource, resourcesize);
       ippDelete(response);

Modified: trunk/xcode/CUPS.xcodeproj/project.pbxproj
===================================================================
--- trunk/xcode/CUPS.xcodeproj/project.pbxproj	2011-04-29 15:35:23 UTC (rev 9730)
+++ trunk/xcode/CUPS.xcodeproj/project.pbxproj	2011-04-29 22:45:35 UTC (rev 9731)
@@ -14,8 +14,9 @@
 			);
 			dependencies = (
 				726AD704135E8AA1002C930D /* PBXTargetDependency */,
+				273BF6DE1333B6370022CAAB /* PBXTargetDependency */,
+				278C58D6136B641D00836530 /* PBXTargetDependency */,
 				270CCDB2135E3CDE00007BE2 /* PBXTargetDependency */,
-				273BF6DE1333B6370022CAAB /* PBXTargetDependency */,
 			);
 			name = Tests;
 			productName = Tests;
@@ -210,6 +211,23 @@
 		276683FD1337F7B8000D33D0 /* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; \
fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };  2766840F1337FA38000D33D0 \
/* libcups.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = \
72220EAE1333047D00FCA411 /* libcups.dylib */; };  276684111337FA7C000D33D0 /* \
cupsaddsmb.c in Sources */ = {isa = PBXBuildFile; fileRef = 276684101337FA7C000D33D0 \
/* cupsaddsmb.c */; }; +		278C58D9136B645C00836530 /* libcups_static.a in Frameworks \
*/ = {isa = PBXBuildFile; fileRef = 72F75A4C1336F31B004BB496 /* libcups_static.a */; \
}; +		278C58DE136B645C00836530 /* CoreFoundation.framework in Frameworks */ = {isa = \
PBXBuildFile; fileRef = 278C58DA136B645C00836530 /* CoreFoundation.framework */; }; \
+		278C58DF136B645C00836530 /* Kerberos.framework in Frameworks */ = {isa = \
PBXBuildFile; fileRef = 278C58DB136B645C00836530 /* Kerberos.framework */; }; \
+		278C58E0136B645C00836530 /* libresolv.dylib in Frameworks */ = {isa = \
PBXBuildFile; fileRef = 278C58DC136B645C00836530 /* libresolv.dylib */; }; \
+		278C58E1136B645C00836530 /* SystemConfiguration.framework in Frameworks */ = {isa \
= PBXBuildFile; fileRef = 278C58DD136B645C00836530 /* SystemConfiguration.framework \
*/; }; +		278C58E3136B647200836530 /* testhttp.c in Sources */ = {isa = PBXBuildFile; \
fileRef = 278C58E2136B647200836530 /* testhttp.c */; }; +		278C58E4136B649200836530 \
/* libcups_static.a in Frameworks */ = {isa = PBXBuildFile; fileRef = \
72F75A4C1336F31B004BB496 /* libcups_static.a */; }; +		278C58E9136B64B000836530 /* \
CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = \
278C58E5136B64AF00836530 /* CoreFoundation.framework */; }; \
+		278C58EA136B64B000836530 /* Kerberos.framework in Frameworks */ = {isa = \
PBXBuildFile; fileRef = 278C58E6136B64B000836530 /* Kerberos.framework */; }; \
+		278C58EB136B64B000836530 /* Security.framework in Frameworks */ = {isa = \
PBXBuildFile; fileRef = 278C58E7136B64B000836530 /* Security.framework */; }; \
+		278C58EC136B64B000836530 /* SystemConfiguration.framework in Frameworks */ = {isa \
= PBXBuildFile; fileRef = 278C58E8136B64B000836530 /* SystemConfiguration.framework \
*/; }; +		278C58EF136B64C400836530 /* libresolv.dylib in Frameworks */ = {isa = \
PBXBuildFile; fileRef = 278C58ED136B64C300836530 /* libresolv.dylib */; }; \
+		278C58F0136B64C400836530 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; \
fileRef = 278C58EE136B64C400836530 /* libz.dylib */; }; +		278C58F2136B64FE00836530 \
/* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = \
278C58F1136B64FD00836530 /* libiconv.dylib */; }; +		278C58F5136B652300836530 /* \
libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = \
278C58F3136B652300836530 /* libiconv.dylib */; }; +		278C58F6136B652300836530 /* \
Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = \
278C58F4136B652300836530 /* Security.framework */; }; +		278C58F8136B653800836530 /* \
libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 278C58F7136B653800836530 \
/* libz.dylib */; };  720DD6CD1358FD720064AA82 /* libcups.dylib in Frameworks */ = \
{isa = PBXBuildFile; fileRef = 72220EAE1333047D00FCA411 /* libcups.dylib */; };  \
720DD6D31358FDDE0064AA82 /* snmp.c in Sources */ = {isa = PBXBuildFile; fileRef = \
720DD6D21358FDDE0064AA82 /* snmp.c */; };  720DD6D413590AB90064AA82 /* ieee1284.c in \
Sources */ = {isa = PBXBuildFile; fileRef = 724379CA1334000E009631B9 /* ieee1284.c \
*/; }; @@ -699,6 +717,20 @@
 			remoteGlobalIDString = 276684031337FA1D000D33D0;
 			remoteInfo = cupsaddsmb;
 		};
+		278C58D5136B641D00836530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 278C58CA136B640300836530;
+			remoteInfo = testhttp;
+		};
+		278C58D7136B642F00836530 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 274FF6891333B1C400317ECB;
+			remoteInfo = libcups_static;
+		};
 		720DD6CE1358FD790064AA82 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 72BF96371333042100B1EAD7 /* Project object */;
@@ -1007,6 +1039,15 @@
 			);
 			runOnlyForDeploymentPostprocessing = 1;
 		};
+		278C58C9136B640300836530 /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = /usr/share/man/man1/;
+			dstSubfolderSpec = 0;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 1;
+		};
 		720DD6C01358FD5F0064AA82 /* CopyFiles */ = {
 			isa = PBXCopyFilesBuildPhase;
 			buildActionMask = 2147483647;
@@ -1164,6 +1205,22 @@
 		276683F91337F7A9000D33D0 /* ipptool.c */ = {isa = PBXFileReference; fileEncoding = \
4; lastKnownFileType = sourcecode.c.c; name = ipptool.c; path = ../test/ipptool.c; \
sourceTree = "<group>"; };  276684041337FA1D000D33D0 /* cupsaddsmb */ = {isa = \
PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = \
0; path = cupsaddsmb; sourceTree = BUILT_PRODUCTS_DIR; };  276684101337FA7C000D33D0 \
/* cupsaddsmb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = \
sourcecode.c.c; name = cupsaddsmb.c; path = ../systemv/cupsaddsmb.c; sourceTree = \
"<group>"; }; +		278C58CB136B640300836530 /* testhttp */ = {isa = PBXFileReference; \
explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = testhttp; \
sourceTree = BUILT_PRODUCTS_DIR; }; +		278C58DA136B645C00836530 /* \
CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = \
wrapper.framework; name = CoreFoundation.framework; path = \
SDKs/MacOSX10.6.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = \
DEVELOPER_DIR; }; +		278C58DB136B645C00836530 /* Kerberos.framework */ = {isa = \
PBXFileReference; lastKnownFileType = wrapper.framework; name = Kerberos.framework; \
path = SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Kerberos.framework; sourceTree = \
DEVELOPER_DIR; }; +		278C58DC136B645C00836530 /* libresolv.dylib */ = {isa = \
PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = \
libresolv.dylib; path = SDKs/MacOSX10.6.sdk/usr/lib/libresolv.dylib; sourceTree = \
DEVELOPER_DIR; }; +		278C58DD136B645C00836530 /* SystemConfiguration.framework */ = \
{isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = \
SystemConfiguration.framework; path = \
SDKs/MacOSX10.6.sdk/System/Library/Frameworks/SystemConfiguration.framework; \
sourceTree = DEVELOPER_DIR; }; +		278C58E2136B647200836530 /* testhttp.c */ = {isa = \
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = \
testhttp.c; path = ../cups/testhttp.c; sourceTree = "<group>"; }; \
+		278C58E5136B64AF00836530 /* CoreFoundation.framework */ = {isa = PBXFileReference; \
lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = \
../../../../../System/Library/Frameworks/CoreFoundation.framework; sourceTree = \
"<group>"; }; +		278C58E6136B64B000836530 /* Kerberos.framework */ = {isa = \
PBXFileReference; lastKnownFileType = wrapper.framework; name = Kerberos.framework; \
path = ../../../../../System/Library/Frameworks/Kerberos.framework; sourceTree = \
"<group>"; }; +		278C58E7136B64B000836530 /* Security.framework */ = {isa = \
PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; \
path = ../../../../../System/Library/Frameworks/Security.framework; sourceTree = \
"<group>"; }; +		278C58E8136B64B000836530 /* SystemConfiguration.framework */ = {isa \
= PBXFileReference; lastKnownFileType = wrapper.framework; name = \
SystemConfiguration.framework; path = \
../../../../../System/Library/Frameworks/SystemConfiguration.framework; sourceTree = \
"<group>"; }; +		278C58ED136B64C300836530 /* libresolv.dylib */ = {isa = \
PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = \
libresolv.dylib; path = ../../../../../usr/lib/libresolv.dylib; sourceTree = \
"<group>"; }; +		278C58EE136B64C400836530 /* libz.dylib */ = {isa = PBXFileReference; \
lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = \
../../../../../usr/lib/libz.dylib; sourceTree = "<group>"; }; \
+		278C58F1136B64FD00836530 /* libiconv.dylib */ = {isa = PBXFileReference; \
lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = \
../../../../../usr/lib/libiconv.dylib; sourceTree = "<group>"; }; \
+		278C58F3136B652300836530 /* libiconv.dylib */ = {isa = PBXFileReference; \
lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = \
SDKs/MacOSX10.6.sdk/usr/lib/libiconv.dylib; sourceTree = DEVELOPER_DIR; }; \
+		278C58F4136B652300836530 /* Security.framework */ = {isa = PBXFileReference; \
lastKnownFileType = wrapper.framework; name = Security.framework; path = \
SDKs/MacOSX10.6.sdk/System/Library/Frameworks/Security.framework; sourceTree = \
DEVELOPER_DIR; }; +		278C58F7136B653800836530 /* libz.dylib */ = {isa = \
PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; \
path = SDKs/MacOSX10.6.sdk/usr/lib/libz.dylib; sourceTree = DEVELOPER_DIR; };  \
27D3037C134148CB00F022B1 /* libcups_s.exp */ = {isa = PBXFileReference; \
lastKnownFileType = sourcecode.exports; name = libcups_s.exp; path = \
../cups/libcups_s.exp; sourceTree = "<group>"; };  27D3037D134148CB00F022B1 /* \
libcups2.def */ = {isa = PBXFileReference; lastKnownFileType = text; name = \
libcups2.def; path = ../cups/libcups2.def; sourceTree = "<group>"; };  \
720DD6C21358FD5F0064AA82 /* snmp */ = {isa = PBXFileReference; explicitFileType = \
"compiled.mach-o.executable"; includeInIndex = 0; path = snmp; sourceTree = \
BUILT_PRODUCTS_DIR; }; @@ -1341,8 +1398,15 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				278C58E9136B64B000836530 /* CoreFoundation.framework in Frameworks */,
+				278C58EA136B64B000836530 /* Kerberos.framework in Frameworks */,
+				278C58EB136B64B000836530 /* Security.framework in Frameworks */,
+				278C58EC136B64B000836530 /* SystemConfiguration.framework in Frameworks */,
 				270CCDB9135E3D0900007BE2 /* libcups_static.a in Frameworks */,
 				270CCDBA135E3D0900007BE2 /* libcupsmime.dylib in Frameworks */,
+				278C58F2136B64FE00836530 /* libiconv.dylib in Frameworks */,
+				278C58EF136B64C400836530 /* libresolv.dylib in Frameworks */,
+				278C58F0136B64C400836530 /* libz.dylib in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -1350,6 +1414,7 @@
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				278C58E4136B649200836530 /* libcups_static.a in Frameworks */,
 				273BF6CE1333B5950022CAAB /* CoreFoundation.framework in Frameworks */,
 				273BF6D31333B5C30022CAAB /* Kerberos.framework in Frameworks */,
 				273BF6D41333B5C30022CAAB /* Security.framework in Frameworks */,
@@ -1500,6 +1565,21 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		278C58C8136B640300836530 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				278C58DE136B645C00836530 /* CoreFoundation.framework in Frameworks */,
+				278C58DF136B645C00836530 /* Kerberos.framework in Frameworks */,
+				278C58F6136B652300836530 /* Security.framework in Frameworks */,
+				278C58E1136B645C00836530 /* SystemConfiguration.framework in Frameworks */,
+				278C58D9136B645C00836530 /* libcups_static.a in Frameworks */,
+				278C58F5136B652300836530 /* libiconv.dylib in Frameworks */,
+				278C58E0136B645C00836530 /* libresolv.dylib in Frameworks */,
+				278C58F8136B653800836530 /* libz.dylib in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		720DD6BF1358FD5F0064AA82 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -1639,8 +1719,9 @@
 		273BF6B81333B4A90022CAAB /* tests */ = {
 			isa = PBXGroup;
 			children = (
+				273BF6C61333B5370022CAAB /* testcups.c */,
+				278C58E2136B647200836530 /* testhttp.c */,
 				270CCDBB135E3D3E00007BE2 /* testmime.c */,
-				273BF6C61333B5370022CAAB /* testcups.c */,
 			);
 			name = tests;
 			sourceTree = "<group>";
@@ -1740,6 +1821,7 @@
 				720DD6C21358FD5F0064AA82 /* snmp */,
 				270CCDA7135E3C9E00007BE2 /* testmime */,
 				726AD6F7135E88F0002C930D /* ippserver */,
+				278C58CB136B640300836530 /* testhttp */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -1903,7 +1985,6 @@
 		72220FB113330B4A00FCA411 /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
-				72F75A4C1336F31B004BB496 /* libcups_static.a */,
 				72220FAC13330B2200FCA411 /* libcupsmime.dylib */,
 				72220EAE1333047D00FCA411 /* libcups.dylib */,
 				72F75A611336F9A3004BB496 /* libcupsimage.dylib */,
@@ -1969,6 +2050,21 @@
 		72BF96351333042100B1EAD7 = {
 			isa = PBXGroup;
 			children = (
+				278C58F7136B653800836530 /* libz.dylib */,
+				278C58F3136B652300836530 /* libiconv.dylib */,
+				278C58F4136B652300836530 /* Security.framework */,
+				278C58F1136B64FD00836530 /* libiconv.dylib */,
+				278C58ED136B64C300836530 /* libresolv.dylib */,
+				278C58EE136B64C400836530 /* libz.dylib */,
+				278C58E5136B64AF00836530 /* CoreFoundation.framework */,
+				278C58E6136B64B000836530 /* Kerberos.framework */,
+				278C58E7136B64B000836530 /* Security.framework */,
+				278C58E8136B64B000836530 /* SystemConfiguration.framework */,
+				72F75A4C1336F31B004BB496 /* libcups_static.a */,
+				278C58DA136B645C00836530 /* CoreFoundation.framework */,
+				278C58DB136B645C00836530 /* Kerberos.framework */,
+				278C58DC136B645C00836530 /* libresolv.dylib */,
+				278C58DD136B645C00836530 /* SystemConfiguration.framework */,
 				72220FB113330B4A00FCA411 /* Frameworks */,
 				72220F45133305D000FCA411 /* Public Headers */,
 				72220F461333060C00FCA411 /* Private Headers */,
@@ -2424,6 +2520,24 @@
 			productReference = 276684041337FA1D000D33D0 /* cupsaddsmb */;
 			productType = "com.apple.product-type.tool";
 		};
+		278C58CA136B640300836530 /* testhttp */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 278C58D3136B640300836530 /* Build configuration list for \
PBXNativeTarget "testhttp" */; +			buildPhases = (
+				278C58C7136B640300836530 /* Sources */,
+				278C58C8136B640300836530 /* Frameworks */,
+				278C58C9136B640300836530 /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				278C58D8136B642F00836530 /* PBXTargetDependency */,
+			);
+			name = testhttp;
+			productName = testhttp;
+			productReference = 278C58CB136B640300836530 /* testhttp */;
+			productType = "com.apple.product-type.tool";
+		};
 		720DD6C11358FD5F0064AA82 /* snmp */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 720DD6CB1358FD600064AA82 /* Build configuration list for \
PBXNativeTarget "snmp" */; @@ -2670,6 +2784,7 @@
 			};
 			buildConfigurationList = 72BF963A1333042100B1EAD7 /* Build configuration list for \
PBXProject "CUPS" */;  compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
 			hasScannedForEncodings = 0;
 			knownRegions = (
 				en,
@@ -2710,6 +2825,7 @@
 				720DD6C11358FD5F0064AA82 /* snmp */,
 				7243792F1333FB85009631B9 /* socket */,
 				273BF6BC1333B5000022CAAB /* testcups */,
+				278C58CA136B640300836530 /* testhttp */,
 				270CCDA6135E3C9E00007BE2 /* testmime */,
 				7243795A1333FF1D009631B9 /* usb */,
 			);
@@ -2926,6 +3042,14 @@
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
+		278C58C7136B640300836530 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				278C58E3136B647200836530 /* testhttp.c in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		720DD6BE1358FD5F0064AA82 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -3346,6 +3470,16 @@
 			target = 276684031337FA1D000D33D0 /* cupsaddsmb */;
 			targetProxy = 276684121337FA8D000D33D0 /* PBXContainerItemProxy */;
 		};
+		278C58D6136B641D00836530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 278C58CA136B640300836530 /* testhttp */;
+			targetProxy = 278C58D5136B641D00836530 /* PBXContainerItemProxy */;
+		};
+		278C58D8136B642F00836530 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 274FF6891333B1C400317ECB /* libcups_static */;
+			targetProxy = 278C58D7136B642F00836530 /* PBXContainerItemProxy */;
+		};
 		720DD6CF1358FD790064AA82 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = 72220EAD1333047D00FCA411 /* libcups */;
@@ -4178,6 +4312,46 @@
 			};
 			name = Release;
 		};
+		278C58D1136B640300836530 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+				COPY_PHASE_STRIP = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
+				ONLY_ACTIVE_ARCH = YES;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SDKROOT = macosx;
+			};
+			name = Debug;
+		};
+		278C58D2136B640300836530 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.6;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
 		720DD6C91358FD5F0064AA82 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -4897,6 +5071,14 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Release;
 		};
+		278C58D3136B640300836530 /* Build configuration list for PBXNativeTarget \
"testhttp" */ = { +			isa = XCConfigurationList;
+			buildConfigurations = (
+				278C58D1136B640300836530 /* Debug */,
+				278C58D2136B640300836530 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
 		720DD6CB1358FD600064AA82 /* Build configuration list for PBXNativeTarget "snmp" */ \
= {  isa = XCConfigurationList;
 			buildConfigurations = (

_______________________________________________
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