/*
- * "$Id: getputfile.c 5633 2006-06-06 14:47:42Z mike $"
+ * "$Id: getputfile.c 7359 2008-02-29 19:01:35Z mike $"
*
* Get/put file functions for the Common UNIX Printing System (CUPS).
*
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
- * property of Easy Software Products 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 missing or damaged please contact Easy Software Products
- * at:
- *
- * Attn: CUPS Licensing Information
- * Easy Software Products
- * 44141 Airport View Drive, Suite 204
- * Hollywood, Maryland 20636 USA
- *
- * Voice: (301) 373-9600
- * EMail: cups-info@cups.org
- * WWW: http://www.cups.org
+ * 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 "http-private.h"
+#include "globals.h"
#include "cups.h"
#include "language.h"
-#include "string.h"
#include "debug.h"
#include <stdlib.h>
#include <ctype.h>
/*
* 'cupsGetFd()' - Get a file from the server.
*
- * This function returns HTTP_OK when the file is successfully retrieved.
+ * This function returns @code HTTP_OK@ when the file is successfully retrieved.
*
- * @since CUPS 1.1.20@
+ * @since CUPS 1.1.20/Mac OS X 10.4@
*/
http_status_t /* O - HTTP status */
-cupsGetFd(http_t *http, /* I - HTTP connection to server */
+cupsGetFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
const char *resource, /* I - Resource name */
int fd) /* I - File descriptor */
{
* Range check input...
*/
- DEBUG_printf(("cupsGetFd(http=%p, resource=\"%s\", fd=%d)\n", http,
+ DEBUG_printf(("cupsGetFd(http=%p, resource=\"%s\", fd=%d)", http,
resource, fd));
- if (!http || !resource || fd < 0)
+ if (!resource || fd < 0)
{
if (http)
http->error = EINVAL;
return (HTTP_ERROR);
}
+ if (!http)
+ if ((http = _cupsConnect()) == NULL)
+ return (HTTP_SERVICE_UNAVAILABLE);
+
/*
* Then send GET requests to the HTTP server...
*/
*/
if (cupsDoAuthentication(http, "GET", resource))
+ {
+ status = HTTP_AUTHORIZATION_CANCELED;
break;
+ }
if (httpReconnect(http))
{
write(fd, buffer, bytes);
}
else
+ {
+ _cupsSetHTTPError(status);
httpFlush(http);
+ }
/*
* Return the request status...
*/
+ DEBUG_printf(("1cupsGetFd: Returning %d...", status));
+
return (status);
}
/*
* 'cupsGetFile()' - Get a file from the server.
*
- * This function returns HTTP_OK when the file is successfully retrieved.
+ * This function returns @code HTTP_OK@ when the file is successfully retrieved.
*
- * @since CUPS 1.1.20@
+ * @since CUPS 1.1.20/Mac OS X 10.4@
*/
http_status_t /* O - HTTP status */
-cupsGetFile(http_t *http, /* I - HTTP connection to server */
+cupsGetFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
const char *resource, /* I - Resource name */
const char *filename) /* I - Filename */
{
/*
* 'cupsPutFd()' - Put a file on the server.
*
- * This function returns HTTP_CREATED when the file is stored successfully.
+ * This function returns @code HTTP_CREATED@ when the file is stored
+ * successfully.
*
- * @since CUPS 1.1.20@
+ * @since CUPS 1.1.20/Mac OS X 10.4@
*/
http_status_t /* O - HTTP status */
-cupsPutFd(http_t *http, /* I - HTTP connection to server */
+cupsPutFd(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
const char *resource, /* I - Resource name */
int fd) /* I - File descriptor */
{
* Range check input...
*/
- DEBUG_printf(("cupsPutFd(http=%p, resource=\"%s\", fd=%d)\n", http,
+ DEBUG_printf(("cupsPutFd(http=%p, resource=\"%s\", fd=%d)", http,
resource, fd));
- if (!http || !resource || fd < 0)
+ if (!resource || fd < 0)
{
if (http)
http->error = EINVAL;
return (HTTP_ERROR);
}
+ if (!http)
+ if ((http = _cupsConnect()) == NULL)
+ return (HTTP_SERVICE_UNAVAILABLE);
+
/*
* Then send PUT requests to the HTTP server...
*/
do
{
- DEBUG_printf(("cupsPutFd: starting attempt, authstring=\"%s\"...\n",
+ DEBUG_printf(("2cupsPutFd: starting attempt, authstring=\"%s\"...",
http->authstring));
httpClearFields(http);
if (status == HTTP_ERROR && !retries)
{
- DEBUG_printf(("cupsPutFd: retry on status %d\n", status));
+ DEBUG_printf(("2cupsPutFd: retry on status %d", status));
retries ++;
continue;
}
- DEBUG_printf(("cupsPutFd: status=%d\n", status));
+ DEBUG_printf(("2cupsPutFd: status=%d", status));
if (status == HTTP_UNAUTHORIZED)
{
*/
if (cupsDoAuthentication(http, "PUT", resource))
+ {
+ status = HTTP_AUTHORIZATION_CANCELED;
break;
+ }
if (httpReconnect(http))
{
*/
if (status != HTTP_CREATED)
+ {
+ _cupsSetHTTPError(status);
httpFlush(http);
+ }
+
+ DEBUG_printf(("1cupsPutFd: Returning %d...", status));
return (status);
}
/*
* 'cupsPutFile()' - Put a file on the server.
*
- * This function returns HTTP_CREATED when the file is stored successfully.
+ * This function returns @code HTTP_CREATED@ when the file is stored
+ * successfully.
*
- * @since CUPS 1.1.20@
+ * @since CUPS 1.1.20/Mac OS X 10.4@
*/
http_status_t /* O - HTTP status */
-cupsPutFile(http_t *http, /* I - HTTP connection to server */
+cupsPutFile(http_t *http, /* I - Connection to server or @code CUPS_HTTP_DEFAULT@ */
const char *resource, /* I - Resource name */
const char *filename) /* I - Filename */
{
/*
- * End of "$Id: getputfile.c 5633 2006-06-06 14:47:42Z mike $".
+ * End of "$Id: getputfile.c 7359 2008-02-29 19:01:35Z mike $".
*/