*
* HTML support functions for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
*
* Contents:
*
- * cgiEndHTML() - End a HTML page.
- * cgiEndMultipart() - End the delivery of a multipart web page.
- * cgiFormEncode() - Encode a string as a form variable...
- * cgiStartHTML() - Start a HTML page.
- * cgiStartMultipart() - Start a multipart delivery of a web page...
- * cgi_null_passwd() - Return a NULL password for authentication.
+ * cgiEndHTML() - End a HTML page.
+ * cgiEndMultipart() - End the delivery of a multipart web page.
+ * cgiFormEncode() - Encode a string as a form variable.
+ * cgiStartHTML() - Start a HTML page.
+ * cgiStartMultipart() - Start a multipart delivery of a web page.
+ * cgiSupportsMultipart() - Does the browser support multi-part documents?
+ * cgi_null_passwd() - Return a NULL password for authentication.
*/
/*
/*
- * 'cgiFormEncode()' - Encode a string as a form variable...
+ * 'cgiFormEncode()' - Encode a string as a form variable.
*/
char * /* O - Destination string */
/*
- * 'cgiStartMultipart()' - Start a multipart delivery of a web page...
+ * 'cgiStartMultipart()' - Start a multipart delivery of a web page.
*/
void
}
+/*
+ * 'cgiSupportsMultipart()' - Does the browser support multi-part documents?
+ */
+
+int /* O - 1 if multi-part supported, 0 otherwise */
+cgiSupportsMultipart(void)
+{
+ const char *user_agent; /* User-Agent string */
+ static int supports_multipart = -1;/* Cached value */
+
+
+ if (supports_multipart < 0)
+ {
+ /*
+ * CUPS STR #3049: Apparently some browsers don't support multi-part
+ * documents, which makes them useless for many web sites. Rather than
+ * abandoning those users, we'll offer a degraded single-part mode...
+ *
+ * Currently we know that anything based on Gecko, MSIE, and Safari all
+ * work. We'll add more as they are reported/tested.
+ */
+
+ if ((user_agent = getenv("HTTP_USER_AGENT")) != NULL &&
+ (strstr(user_agent, " Gecko/") != NULL ||
+ strstr(user_agent, " MSIE ") != NULL ||
+ strstr(user_agent, " Safari/") != NULL))
+ supports_multipart = 1;
+ else
+ supports_multipart = 0;
+ }
+
+ return (supports_multipart);
+}
+
+
/*
* 'cgi_null_passwd()' - Return a NULL password for authentication.
*/