355b4669e025ff377602b6fc7caaf30dbc218371jacobs/*
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * CDDL HEADER START
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * The contents of this file are subject to the terms of the
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * Common Development and Distribution License (the "License").
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * You may not use this file except in compliance with the License.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * or http://www.opensolaris.org/os/licensing.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * See the License for the specific language governing permissions
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * and limitations under the License.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * When distributing Covered Code, include this CDDL HEADER in each
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * If applicable, add the following below this CDDL HEADER, with the
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * fields enclosed by brackets "[]" replaced with your own identifying
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * information: Portions Copyright [yyyy] [name of copyright owner]
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * CDDL HEADER END
355b4669e025ff377602b6fc7caaf30dbc218371jacobs */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs/*
ebae6f6e2612e1adcdfc2fa7fcf218d072d2a229ps * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs * Use is subject to license terms.
355b4669e025ff377602b6fc7caaf30dbc218371jacobs *
355b4669e025ff377602b6fc7caaf30dbc218371jacobs */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs/* $Id: lpr.c 146 2006-03-24 00:26:54Z njacobs $ */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#pragma ident "%Z%%M% %I% %E% SMI"
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <stdio.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <stdlib.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <unistd.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <string.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <locale.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <libintl.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <papi.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include "common.h"
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#ifdef HAVE_LIBMAGIC /* for mimetype auto-detection */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#include <magic.h>
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#endif /* HAVE_LIBMAGIC */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobsstatic void
355b4669e025ff377602b6fc7caaf30dbc218371jacobsusage(char *program)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs{
355b4669e025ff377602b6fc7caaf30dbc218371jacobs char *name;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if ((name = strrchr(program, '/')) == NULL)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs name = program;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs else
355b4669e025ff377602b6fc7caaf30dbc218371jacobs name++;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs fprintf(stdout,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs gettext("Usage: %s [-P printer] [-# copies] [-C class] "
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "[-J job] [-T title] "
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "[-p [-i indent] [-w width]] "
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "[-1|-2|-3|-4 font] [-m] [-h] [-s] "
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "[-filter_option] [file ..]\n"), name);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs exit(1);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs}
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobsint
355b4669e025ff377602b6fc7caaf30dbc218371jacobsmain(int ac, char *av[])
355b4669e025ff377602b6fc7caaf30dbc218371jacobs{
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papi_status_t status;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papi_service_t svc = NULL;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papi_attribute_t **list = NULL;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papi_job_t job = NULL;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int exit_code = 0;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs char *printer = NULL;
c1ecd8b9404ee0d96d93f02e82c441b9bb149a3djacobs char prefetch[3];
c1ecd8b9404ee0d96d93f02e82c441b9bb149a3djacobs int prefetch_len = sizeof (prefetch);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papi_encryption_t encryption = PAPI_ENCRYPT_NEVER;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int dump = 0;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int validate = 0;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int remove = 0;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int copy = 1; /* default is to copy the data */
0a44ef6d9afbfe052a7e975f55ea0d2954b62a82jacobs char *document_format = "text/plain";
355b4669e025ff377602b6fc7caaf30dbc218371jacobs int c;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs (void) setlocale(LC_ALL, "");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs (void) textdomain("SUNW_OST_OSCMD");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs while ((c = getopt(ac, av,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "EP:#:C:DVJ:T:w:i:hplrstdgvcfmn1:2:3:4:")) != EOF)
355b4669e025ff377602b6fc7caaf30dbc218371jacobs switch (c) {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'E':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs encryption = PAPI_ENCRYPT_REQUIRED;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'P':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs printer = optarg;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case '#':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddInteger(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "copies", atoi(optarg));
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'C':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "rfc-1179-class", optarg);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'D':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs dump = 1;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'J':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "job-name", optarg);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'T':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "pr-title", optarg);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'p':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", "application/x-pr");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddBoolean(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "pr-filter", 1);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'i':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddInteger(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "pr-indent", atoi(optarg));
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'w':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddInteger(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "pr-width", atoi(optarg));
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'h':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "job-sheets", "none");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'l':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", "application/octet-stream");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'o':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", "application/postscript");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'c':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", "application/x-cif");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'd':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", "application/x-dvi");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'f':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", "application/x-fortran");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'g':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", "application/x-plot");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'n':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", "application/x-ditroff");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 't':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", "application/x-troff");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'v':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", "application/x-raster");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'm':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddBoolean(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "rfc-1179-mail", 1);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'r':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs remove = 1;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 's':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs copy = 0;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case 'V': /* validate */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs validate = 1;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case '1':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "rfc-1179-font-r", optarg);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case '2':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "rfc-1179-font-i", optarg);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case '3':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "rfc-1179-font-b", optarg);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs case '4':
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "rfc-1179-font-s", optarg);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs break;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs default:
355b4669e025ff377602b6fc7caaf30dbc218371jacobs usage(av[0]);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs }
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if ((printer == NULL) &&
355b4669e025ff377602b6fc7caaf30dbc218371jacobs ((printer = getenv("PRINTER")) == NULL) &&
355b4669e025ff377602b6fc7caaf30dbc218371jacobs ((printer = getenv("LPDEST")) == NULL))
355b4669e025ff377602b6fc7caaf30dbc218371jacobs printer = DEFAULT_DEST;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
e2738c5e21a9e5d9a6525e48af4738deda3df455jacobs if (((optind + 1) == ac) && (strcmp(av[optind], "-") == 0))
e2738c5e21a9e5d9a6525e48af4738deda3df455jacobs optind = ac;
e2738c5e21a9e5d9a6525e48af4738deda3df455jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (optind != ac) {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs /* get the mime type of the file data */
0a44ef6d9afbfe052a7e975f55ea0d2954b62a82jacobs#ifdef MAGIC_MIME
355b4669e025ff377602b6fc7caaf30dbc218371jacobs magic_t ms;
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if ((ms = magic_open(MAGIC_MIME)) != NULL) {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs document_format = magic_file(ms, av[optind]);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs magic_close(ms);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs }
0a44ef6d9afbfe052a7e975f55ea0d2954b62a82jacobs#else
0a44ef6d9afbfe052a7e975f55ea0d2954b62a82jacobs if (is_postscript(av[optind]) == 1)
0a44ef6d9afbfe052a7e975f55ea0d2954b62a82jacobs document_format = "application/postscript";
355b4669e025ff377602b6fc7caaf30dbc218371jacobs#endif
c1ecd8b9404ee0d96d93f02e82c441b9bb149a3djacobs } else {
c1ecd8b9404ee0d96d93f02e82c441b9bb149a3djacobs if (is_postscript_stream(0, prefetch, &prefetch_len) == 1)
c1ecd8b9404ee0d96d93f02e82c441b9bb149a3djacobs document_format = "application/postscript";
0a44ef6d9afbfe052a7e975f55ea0d2954b62a82jacobs }
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddInteger(&list, PAPI_ATTR_EXCL, "copies", 1);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "document-format", document_format);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListAddString(&list, PAPI_ATTR_EXCL,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "job-sheets", "standard");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs status = papiServiceCreate(&svc, printer, NULL, NULL, cli_auth_callback,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs encryption, NULL);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (status != PAPI_OK) {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs fprintf(stderr, gettext(
355b4669e025ff377602b6fc7caaf30dbc218371jacobs "Failed to contact service for %s: %s\n"), printer,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs verbose_papi_message(svc, status));
355b4669e025ff377602b6fc7caaf30dbc218371jacobs exit(1);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs }
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (validate == 1) /* validate the request can be processed */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs status = papiJobValidate(svc, printer, list,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs NULL, &av[optind], &job);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs else if (optind == ac) /* no file list, use stdin */
c1ecd8b9404ee0d96d93f02e82c441b9bb149a3djacobs status = jobSubmitSTDIN(svc, printer, prefetch, prefetch_len,
c1ecd8b9404ee0d96d93f02e82c441b9bb149a3djacobs list, &job);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs else if (copy == 0) /* reference the files in the job, default */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs status = papiJobSubmitByReference(svc, printer, list,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs NULL, &av[optind], &job);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs else /* copy the files before return, -c */
355b4669e025ff377602b6fc7caaf30dbc218371jacobs status = papiJobSubmit(svc, printer, list,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs NULL, &av[optind], &job);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListFree(list);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (status != PAPI_OK) {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs fprintf(stderr, gettext("%s: %s\n"), printer,
355b4669e025ff377602b6fc7caaf30dbc218371jacobs verbose_papi_message(svc, status));
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiJobFree(job);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiServiceDestroy(svc);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs exit(1);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs }
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs if (dump != 0) {
355b4669e025ff377602b6fc7caaf30dbc218371jacobs list = papiJobGetAttributeList(job);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs printf("job attributes:\n");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiAttributeListPrint(stdout, list, "\t");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs printf("\n");
355b4669e025ff377602b6fc7caaf30dbc218371jacobs }
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiJobFree(job);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs papiServiceDestroy(svc);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs
355b4669e025ff377602b6fc7caaf30dbc218371jacobs return (exit_code);
355b4669e025ff377602b6fc7caaf30dbc218371jacobs}