-/*
- * 'exec_code()' - Execute PostScript setpagedevice commands as appropriate.
- */
-
-static void
-exec_code(cups_page_header2_t *header, /* I - Page header */
- const char *code) /* I - Option choice to execute */
-{
- char *ptr, /* Pointer into name/value string */
- name[255], /* Name of pagedevice entry */
- value[1024]; /* Value of pagedevice entry */
-
-
- for (; *code != '\0';)
- {
- /*
- * Search for the start of a dictionary name...
- */
-
- while (*code != '/' && *code != '\0')
- code ++;
-
- if (*code == '\0')
- break;
-
- /*
- * Get the name...
- */
-
- code ++;
- for (ptr = name; isalnum(*code & 255) && (ptr - name) < (sizeof(name) - 1);)
- *ptr++ = *code++;
- *ptr = '\0';
-
- /*
- * The parse the value as needed...
- */
-
- while (isspace(*code & 255))
- code ++;
-
- if (*code == '\0')
- break;
-
- if (*code == '[')
- {
- /*
- * Read array of values...
- */
-
- code ++;
- for (ptr = value;
- *code != ']' && *code != '\0' &&
- (ptr - value) < (sizeof(value) - 1);)
- *ptr++ = *code++;
- *ptr = '\0';
- }
- else if (*code == '(')
- {
- /*
- * Read string value...
- */
-
- code ++;
- for (ptr = value;
- *code != ')' && *code != '\0' &&
- (ptr - value) < (sizeof(value) - 1);)
- if (*code == '\\')
- {
- code ++;
- if (isdigit(*code & 255))
- *ptr++ = (char)strtol(code, (char **)&code, 8);
- else
- *ptr++ = *code++;
- }
- else
- *ptr++ = *code++;
-
- *ptr = '\0';
- }
- else if (isdigit(*code & 255) || *code == '-')
- {
- /*
- * Read single number...
- */
-
- for (ptr = value;
- (isdigit(*code & 255) || *code == '-') &&
- (ptr - value) < (sizeof(value) - 1);)
- *ptr++ = *code++;
- *ptr = '\0';
- }
- else
- {
- /*
- * Read a single name...
- */
-
- for (ptr = value;
- (isalnum(*code & 255) || *code == '_') &&
- (ptr - value) < (sizeof(value) - 1);)
- *ptr++ = *code++;
- *ptr = '\0';
- }
-
- /*
- * Assign the value as needed...
- */
-
- if (!strcmp(name, "MediaClass"))
- strlcpy(header->MediaClass, value, sizeof(header->MediaClass));
- else if (!strcmp(name, "MediaColor"))
- strlcpy(header->MediaColor, value, sizeof(header->MediaColor));
- else if (!strcmp(name, "MediaType"))
- strlcpy(header->MediaType, value, sizeof(header->MediaType));
- else if (!strcmp(name, "OutputType"))
- strlcpy(header->OutputType, value, sizeof(header->OutputType));
- else if (!strcmp(name, "AdvanceDistance"))
- header->AdvanceDistance = atoi(value);
- else if (!strcmp(name, "AdvanceMedia"))
- header->AdvanceMedia = atoi(value);
- else if (!strcmp(name, "Collate"))
- header->Collate = !strcmp(value, "true");
- else if (!strcmp(name, "CutMedia"))
- header->CutMedia = (cups_cut_t)atoi(value);
- else if (!strcmp(name, "Duplex"))
- header->Duplex = !strcmp(value, "true");
- else if (!strcmp(name, "HWResolution"))
- sscanf(value, "%d%d", header->HWResolution + 0, header->HWResolution + 1);
- else if (!strcmp(name, "InsertSheet"))
- header->InsertSheet = !strcmp(value, "true");
- else if (!strcmp(name, "Jog"))
- header->Jog = atoi(value);
- else if (!strcmp(name, "LeadingEdge"))
- header->LeadingEdge = atoi(value);
- else if (!strcmp(name, "Margins"))
- sscanf(value, "%d%d", header->Margins + 0, header->Margins + 1);
- else if (!strcmp(name, "ManualFeed"))
- header->ManualFeed = !strcmp(value, "true");
- else if (!strcmp(name, "cupsMediaPosition") || /* Compatibility */
- !strcmp(name, "MediaPosition"))
- header->MediaPosition = atoi(value);
- else if (!strcmp(name, "MediaWeight"))
- header->MediaWeight = atoi(value);
- else if (!strcmp(name, "MirrorPrint"))
- header->MirrorPrint = !strcmp(value, "true");
- else if (!strcmp(name, "NegativePrint"))
- header->NegativePrint = !strcmp(value, "true");
- else if (!strcmp(name, "Orientation"))
- header->Orientation = atoi(value);
- else if (!strcmp(name, "OutputFaceUp"))
- header->OutputFaceUp = !strcmp(value, "true");
- else if (!strcmp(name, "Separations"))
- header->Separations = !strcmp(value, "true");
- else if (!strcmp(name, "TraySwitch"))
- header->TraySwitch = !strcmp(value, "true");
- else if (!strcmp(name, "Tumble"))
- header->Tumble = !strcmp(value, "true");
- else if (!strcmp(name, "cupsMediaType"))
- header->cupsMediaType = atoi(value);
- else if (!strcmp(name, "cupsBitsPerColor"))
- header->cupsBitsPerColor = atoi(value);
- else if (!strcmp(name, "cupsColorOrder"))
- header->cupsColorOrder = (cups_order_t)atoi(value);
- else if (!strcmp(name, "cupsColorSpace"))
- header->cupsColorSpace = (cups_cspace_t)atoi(value);
- else if (!strcmp(name, "cupsCompression"))
- header->cupsCompression = atoi(value);
- else if (!strcmp(name, "cupsRowCount"))
- header->cupsRowCount = atoi(value);
- else if (!strcmp(name, "cupsRowFeed"))
- header->cupsRowFeed = atoi(value);
- else if (!strcmp(name, "cupsRowStep"))
- header->cupsRowStep = atoi(value);
- }
-}
-
-