+++ /dev/null
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-#include <cups/cups.h>
-#include <cups/http.h>
-#include <cups/ipp.h>
-#include <cups/language.h>
-#include <cups/ppd.h>
-
-static int
-not_here(char *s)
-{
- croak("%s not implemented on this architecture", s);
- return -1;
-}
-
-static double
-constant_PPD_M(char *name, int len, int arg)
-{
- if (5 + 3 >= len ) {
- errno = EINVAL;
- return 0;
- }
- switch (name[5 + 3]) {
- case 'L':
- if (strEQ(name + 5, "AX_LINE")) { /* PPD_M removed */
-#ifdef PPD_MAX_LINE
- return PPD_MAX_LINE;
-#else
- goto not_there;
-#endif
- }
- case 'N':
- if (strEQ(name + 5, "AX_NAME")) { /* PPD_M removed */
-#ifdef PPD_MAX_NAME
- return PPD_MAX_NAME;
-#else
- goto not_there;
-#endif
- }
- case 'T':
- if (strEQ(name + 5, "AX_TEXT")) { /* PPD_M removed */
-#ifdef PPD_MAX_TEXT
- return PPD_MAX_TEXT;
-#else
- goto not_there;
-#endif
- }
- }
- errno = EINVAL;
- return 0;
-
-not_there:
- errno = ENOENT;
- return 0;
-}
-
-static double
-constant_P(char *name, int len, int arg)
-{
- if (1 + 3 >= len ) {
- errno = EINVAL;
- return 0;
- }
- switch (name[1 + 3]) {
- case 'M':
- if (!strnEQ(name + 1,"PD_", 3))
- break;
- return constant_PPD_M(name, len, arg);
- case 'V':
- if (strEQ(name + 1, "PD_VERSION")) { /* P removed */
-#ifdef PPD_VERSION
- return PPD_VERSION;
-#else
- goto not_there;
-#endif
- }
- }
- errno = EINVAL;
- return 0;
-
-not_there:
- errno = ENOENT;
- return 0;
-}
-
-static double
-constant_H(char *name, int len, int arg)
-{
- if (1 + 8 >= len ) {
- errno = EINVAL;
- return 0;
- }
- switch (name[1 + 8]) {
- case 'B':
- if (strEQ(name + 1, "TTP_MAX_BUFFER")) { /* H removed */
-#ifdef HTTP_MAX_BUFFER
- return HTTP_MAX_BUFFER;
-#else
- goto not_there;
-#endif
- }
- case 'H':
- if (strEQ(name + 1, "TTP_MAX_HOST")) { /* H removed */
-#ifdef HTTP_MAX_HOST
- return HTTP_MAX_HOST;
-#else
- goto not_there;
-#endif
- }
- case 'U':
- if (strEQ(name + 1, "TTP_MAX_URI")) { /* H removed */
-#ifdef HTTP_MAX_URI
- return HTTP_MAX_URI;
-#else
- goto not_there;
-#endif
- }
- case 'V':
- if (strEQ(name + 1, "TTP_MAX_VALUE")) { /* H removed */
-#ifdef HTTP_MAX_VALUE
- return HTTP_MAX_VALUE;
-#else
- goto not_there;
-#endif
- }
- }
- errno = EINVAL;
- return 0;
-
-not_there:
- errno = ENOENT;
- return 0;
-}
-
-static double
-constant_IPP_M(char *name, int len, int arg)
-{
- if (5 + 3 >= len ) {
- errno = EINVAL;
- return 0;
- }
- switch (name[5 + 3]) {
- case 'N':
- if (strEQ(name + 5, "AX_NAME")) { /* IPP_M removed */
-#ifdef IPP_MAX_NAME
- return IPP_MAX_NAME;
-#else
- goto not_there;
-#endif
- }
- case 'V':
- if (strEQ(name + 5, "AX_VALUES")) { /* IPP_M removed */
-#ifdef IPP_MAX_VALUES
- return IPP_MAX_VALUES;
-#else
- goto not_there;
-#endif
- }
- }
- errno = EINVAL;
- return 0;
-
-not_there:
- errno = ENOENT;
- return 0;
-}
-
-static double
-constant_I(char *name, int len, int arg)
-{
- if (1 + 3 >= len ) {
- errno = EINVAL;
- return 0;
- }
- switch (name[1 + 3]) {
- case 'M':
- if (!strnEQ(name + 1,"PP_", 3))
- break;
- return constant_IPP_M(name, len, arg);
- case 'P':
- if (strEQ(name + 1, "PP_PORT")) { /* I removed */
-#ifdef IPP_PORT
- return IPP_PORT;
-#else
- goto not_there;
-#endif
- }
- }
- errno = EINVAL;
- return 0;
-
-not_there:
- errno = ENOENT;
- return 0;
-}
-
-static double
-constant_C(char *name, int len, int arg)
-{
- if (1 + 4 >= len ) {
- errno = EINVAL;
- return 0;
- }
- switch (name[1 + 4]) {
- case 'D':
- if (strEQ(name + 1, "UPS_DATE_ANY")) { /* C removed */
-#ifdef CUPS_DATE_ANY
- return CUPS_DATE_ANY;
-#else
- goto not_there;
-#endif
- }
- case 'V':
- if (strEQ(name + 1, "UPS_VERSION")) { /* C removed */
-#ifdef CUPS_VERSION
- return CUPS_VERSION;
-#else
- goto not_there;
-#endif
- }
- }
- errno = EINVAL;
- return 0;
-
-not_there:
- errno = ENOENT;
- return 0;
-}
-
-static double
-constant(char *name, int len, int arg)
-{
- errno = 0;
- switch (name[0 + 0]) {
- case 'C':
- return constant_C(name, len, arg);
- case 'H':
- return constant_H(name, len, arg);
- case 'I':
- return constant_I(name, len, arg);
- case 'P':
- return constant_P(name, len, arg);
- }
- errno = EINVAL;
- return 0;
-
-not_there:
- errno = ENOENT;
- return 0;
-}
-
-
-MODULE = CUPS PACKAGE = CUPS
-
-
-double
-constant(sv,arg)
- PREINIT:
- STRLEN len;
- INPUT:
- SV * sv
- char * s = SvPV(sv, len);
- int arg
- CODE:
- RETVAL = constant(s,len,arg);
- OUTPUT:
- RETVAL
-