#include <stdio.h>
#include <stdlib.h>
#include "string.h"
#include "language.h"
#include "ipp.h"
#include "globals.h"
#include "debug.h"
#include <ctype.h>
const char *
ippErrorString(ipp_status_t error)
{
cups_globals_t *cg = _cups_globals();
static const char * const status_oks[] =
{
"successful-ok",
"successful-ok-ignored-or-substituted-attributes",
"successful-ok-conflicting-attributes",
"successful-ok-ignored-subscriptions",
"successful-ok-ignored-notifications",
"successful-ok-too-many-events",
"successful-ok-but-cancel-subscription"
},
* const status_400s[] =
{
"client-error-bad-request",
"client-error-forbidden",
"client-error-not-authenticated",
"client-error-not-authorized",
"client-error-not-possible",
"client-error-timeout",
"client-error-not-found",
"client-error-gone",
"client-error-request-entity-too-large",
"client-error-request-value-too-long",
"client-error-document-format-not-supported",
"client-error-attributes-or-values-not-supported",
"client-error-uri-scheme-not-supported",
"client-error-charset-not-supported",
"client-error-conflicting-attributes",
"client-error-compression-not-supported",
"client-error-compression-error",
"client-error-document-format-error",
"client-error-document-access-error",
"client-error-attributes-not-settable",
"client-error-ignored-all-subscriptions",
"client-error-too-many-subscriptions",
"client-error-ignored-all-notifications",
"client-error-print-support-file-not-found"
},
* const status_500s[] =
{
"server-error-internal-error",
"server-error-operation-not-supported",
"server-error-service-unavailable",
"server-error-version-not-supported",
"server-error-device-error",
"server-error-temporary-error",
"server-error-not-accepting-jobs",
"server-error-busy",
"server-error-job-canceled",
"server-error-multiple-document-jobs-not-supported",
"server-error-printer-is-deactivated"
};
if (error >= IPP_OK && error <= IPP_OK_BUT_CANCEL_SUBSCRIPTION)
return (status_oks[error]);
else if (error == IPP_REDIRECTION_OTHER_SITE)
return ("redirection-other-site");
else if (error >= IPP_BAD_REQUEST && error <= IPP_PRINT_SUPPORT_FILE_NOT_FOUND)
return (status_400s[error - IPP_BAD_REQUEST]);
else if (error >= IPP_INTERNAL_ERROR && error <= IPP_PRINTER_IS_DEACTIVATED)
return (status_500s[error - IPP_INTERNAL_ERROR]);
sprintf(cg->unknown, "unknown-%04x", error);
return (cg->unknown);
}
int
ippPort(void)
{
const char *server_port;
struct servent *port;
cups_globals_t *cg = _cups_globals();
if (cg->ipp_port)
return (cg->ipp_port);
else if ((server_port = getenv("IPP_PORT")) != NULL)
return (cg->ipp_port = atoi(server_port));
else if ((port = getservbyname("ipp", NULL)) == NULL)
return (cg->ipp_port = IPP_PORT);
else
return (cg->ipp_port = ntohs(port->s_port));
}
void
ippSetPort(int p)
{
_cups_globals()->ipp_port = p;
}