本文整理汇总了C++中cupsServer函数的典型用法代码示例。如果您正苦于以下问题:C++ cupsServer函数的具体用法?C++ cupsServer怎么用?C++ cupsServer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cupsServer函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: DEBUG
static const char *iprint_server(void)
{
if ((lp_iprint_server() != NULL) && (strlen(lp_iprint_server()) > 0)) {
DEBUG(10, ("iprint server explicitly set to %s\n",
lp_iprint_server()));
return lp_iprint_server();
}
DEBUG(10, ("iprint server left to default %s\n", cupsServer()));
return cupsServer();
}
开发者ID:arthur-zhang,项目名称:android_samba,代码行数:11,代码来源:print_iprint.c
示例2: gtk_cups_connection_test_new
/* This function allocates new instance of GtkCupsConnectionTest() and creates
* a socket for communication with a CUPS server 'server'.
*/
GtkCupsConnectionTest *
gtk_cups_connection_test_new (const char *server,
const int port)
{
GtkCupsConnectionTest *result = NULL;
gchar *port_str = NULL;
result = g_new (GtkCupsConnectionTest, 1);
if (port >= 0)
port_str = g_strdup_printf ("%d", port);
else
port_str = g_strdup_printf ("%d", ippPort ());
if (server != NULL)
result->addrlist = httpAddrGetList (server, AF_UNSPEC, port_str);
else
result->addrlist = httpAddrGetList (cupsServer (), AF_UNSPEC, port_str);
g_free (port_str);
result->socket = -1;
result->current_addr = NULL;
result->last_wrong_addr = NULL;
result->at_init = GTK_CUPS_CONNECTION_NOT_AVAILABLE;
result->at_init = gtk_cups_connection_test_get_state (result);
return result;
}
开发者ID:Distrotech,项目名称:gtk,代码行数:33,代码来源:gtkcupsutils.c
示例3: getPrinterSharingStatus
int getPrinterSharingStatus() {
http_t* cups = nullptr;
int num_settings = 0;
cups_option_t* settings = nullptr;
const char* value = nullptr;
cups = httpConnect2(cupsServer(),
ippPort(),
nullptr,
AF_INET,
cupsEncryption(),
1,
30000,
nullptr);
if (cups == nullptr) {
return 0;
}
int ret = cupsAdminGetServerSettings(cups, &num_settings, &settings);
if (ret != 0) {
value = cupsGetOption("_share_printers", num_settings, settings);
cupsFreeOptions(num_settings, settings);
} else {
VLOG(1) << "Unable to get CUPS server settings: " << cupsLastErrorString();
}
httpClose(cups);
if (value != nullptr) {
return *value == '1' ? 1 : 0;
}
return 0;
}
开发者ID:FritzX6,项目名称:osquery,代码行数:31,代码来源:sharing_preferences.cpp
示例4: job_init
/*
* call-seq:
* PrintJob.new(filename, printer=nil)
*
* Initializes a new PrintJob object. If no target printer/class is specified, the default is chosen.
* Note the specified file does not have to exist until print is called.
*/
static VALUE job_init(int argc, VALUE* argv, VALUE self)
{
VALUE filename, printer, job_options;
rb_scan_args(argc, argv, "12", &filename, &printer, &job_options);
rb_iv_set(self, "@filename", filename);
rb_iv_set(self, "@url_path", rb_str_new2(cupsServer()));
if (NIL_P(job_options)) {
rb_iv_set(self, "@job_options", rb_hash_new());
} else {
rb_iv_set(self, "@job_options", job_options);
}
if (NIL_P(printer)) {
// Fall back to default printer
VALUE def_p = rb_funcall(rubyCups, rb_intern("default_printer"), 0);
if (def_p == Qfalse) {
rb_raise(rb_eRuntimeError, "There is no default printer!");
} else {
rb_iv_set(self, "@printer", def_p);
}
} else {
if (printer_exists(printer)) {
rb_iv_set(self, "@printer", printer);
} else {
rb_raise(rb_eRuntimeError, "The printer or destination doesn't exist!");
}
}
return self;
}
开发者ID:bigtunacan,项目名称:cups,代码行数:42,代码来源:cups.c
示例5: main
int /* O - Exit status */
main(int argc, /* I - Number of command-line args */
char *argv[]) /* I - Command-line arguments */
{
int i, /* Looping var */
num_settings; /* Number of settings */
cups_option_t *settings; /* Settings */
http_t *http; /* Connection to server */
/*
* Connect to the server using the defaults...
*/
http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC,
cupsEncryption(), 1, 30000, NULL);
/*
* Set the current configuration if we have anything on the command-line...
*/
if (argc > 1)
{
for (i = 1, num_settings = 0, settings = NULL; i < argc; i ++)
num_settings = cupsParseOptions(argv[i], num_settings, &settings);
if (cupsAdminSetServerSettings(http, num_settings, settings))
{
puts("New server settings:");
cupsFreeOptions(num_settings, settings);
}
else
{
printf("Server settings not changed: %s\n", cupsLastErrorString());
return (1);
}
}
else
puts("Current server settings:");
/*
* Get the current configuration...
*/
if (cupsAdminGetServerSettings(http, &num_settings, &settings))
{
show_settings(num_settings, settings);
cupsFreeOptions(num_settings, settings);
return (0);
}
else
{
printf(" %s\n", cupsLastErrorString());
return (1);
}
}
开发者ID:AndychenCL,项目名称:cups,代码行数:56,代码来源:testadmin.c
示例6: printer_cups_create_printjob
static rdpPrintJob* printer_cups_create_printjob(rdpPrinter* printer, UINT32 id)
{
rdpCupsPrinter* cups_printer = (rdpCupsPrinter*) printer;
rdpCupsPrintJob* cups_printjob;
if (cups_printer->printjob != NULL)
return NULL;
cups_printjob = (rdpCupsPrintJob*) malloc(sizeof(rdpCupsPrintJob));
ZeroMemory(cups_printjob, sizeof(rdpCupsPrintJob));
cups_printjob->printjob.id = id;
cups_printjob->printjob.printer = printer;
cups_printjob->printjob.Write = printer_cups_write_printjob;
cups_printjob->printjob.Close = printer_cups_close_printjob;
#ifndef _CUPS_API_1_4
cups_printjob->printjob_object = _strdup(tmpnam(NULL));
#else
{
char buf[100];
cups_printjob->printjob_object = httpConnectEncrypt(cupsServer(), ippPort(), HTTP_ENCRYPT_IF_REQUESTED);
if (cups_printjob->printjob_object == NULL)
{
DEBUG_WARN("httpConnectEncrypt: %s", cupsLastErrorString());
free(cups_printjob);
return NULL;
}
printer_cups_get_printjob_name(buf, sizeof(buf));
cups_printjob->printjob_id = cupsCreateJob((http_t*) cups_printjob->printjob_object,
printer->name, buf, 0, NULL);
if (cups_printjob->printjob_id == 0)
{
DEBUG_WARN("cupsCreateJob: %s", cupsLastErrorString());
httpClose((http_t*) cups_printjob->printjob_object);
free(cups_printjob);
return NULL;
}
cupsStartDocument((http_t*) cups_printjob->printjob_object,
printer->name, cups_printjob->printjob_id, buf, CUPS_FORMAT_AUTO, 1);
}
#endif
cups_printer->printjob = cups_printjob;
return (rdpPrintJob*)cups_printjob;
}
开发者ID:4hosi,项目名称:FreeRDP,代码行数:56,代码来源:printer_cups.c
示例7: printer_hw_create
uint32
printer_hw_create(IRP * irp, const char * path)
{
PRINTER_DEVICE_INFO * info;
info = (PRINTER_DEVICE_INFO *) irp->dev->info;
/* Server's print queue will ensure no two print jobs will be sent to the same printer.
However, we still want to do a simple locking just to ensure we are safe. */
if (info->printjob_object)
{
return RD_STATUS_DEVICE_BUSY;
}
#ifndef _CUPS_API_1_4
info->printjob_id++;
info->printjob_object = strdup(tmpnam(NULL));
#else
{
char buf[100];
info->printjob_object = httpConnectEncrypt(cupsServer(), ippPort(), HTTP_ENCRYPT_IF_REQUESTED);
if (info->printjob_object == NULL)
{
LLOGLN(0, ("printer_hw_create: httpConnectEncrypt: %s", cupsLastErrorString()));
return RD_STATUS_DEVICE_BUSY;
}
printer_hw_get_printjob_name(buf, sizeof(buf));
info->printjob_id = cupsCreateJob((http_t *) info->printjob_object,
info->printer_name, buf,
0, NULL);
if (info->printjob_id == 0)
{
LLOGLN(0, ("printer_hw_create: cupsCreateJob: %s", cupsLastErrorString()));
httpClose((http_t *) info->printjob_object);
info->printjob_object = NULL;
/* Should get the right return code based on printer status */
return RD_STATUS_DEVICE_BUSY;
}
cupsStartDocument((http_t *) info->printjob_object,
info->printer_name, info->printjob_id, buf,
CUPS_FORMAT_POSTSCRIPT, 1);
}
#endif
LLOGLN(10, ("printe_hw_create: %s id=%d", info->printer_name, info->printjob_id));
irp->fileID = info->printjob_id;
return RD_STATUS_SUCCESS;
}
开发者ID:LawrenceK,项目名称:FreeRDP,代码行数:55,代码来源:printer_cups.c
示例8: lp_cups_connection_timeout
static http_t *cups_connect(TALLOC_CTX *frame)
{
http_t *http = NULL;
char *server = NULL, *p = NULL;
int port;
int timeout = lp_cups_connection_timeout();
size_t size;
if (lp_cups_server(talloc_tos()) != NULL && strlen(lp_cups_server(talloc_tos())) > 0) {
if (!push_utf8_talloc(frame, &server, lp_cups_server(talloc_tos()), &size)) {
return NULL;
}
} else {
server = talloc_strdup(frame,cupsServer());
}
if (!server) {
return NULL;
}
p = strchr(server, ':');
if (p) {
port = atoi(p+1);
*p = '\0';
} else {
port = ippPort();
}
DEBUG(10, ("connecting to cups server %s:%d\n",
server, port));
gotalarm = 0;
if (timeout) {
CatchSignal(SIGALRM, gotalarm_sig);
alarm(timeout);
}
#ifdef HAVE_HTTPCONNECTENCRYPT
http = httpConnectEncrypt(server, port, lp_cups_encrypt());
#else
http = httpConnect(server, port);
#endif
CatchSignal(SIGALRM, SIG_IGN);
alarm(0);
if (http == NULL) {
DEBUG(0,("Unable to connect to CUPS server %s:%d - %s\n",
server, port, strerror(errno)));
}
return http;
}
开发者ID:ebrainte,项目名称:Samba,代码行数:54,代码来源:print_cups.c
示例9: oyGetCUPSConnection
http_t * oyGetCUPSConnection()
{
if(!cups_http_)
{
httpInitialize();
/* Open access to printer(s) installed on system. */
cups_http_ = httpConnectEncrypt ( cupsServer(),
ippPort(),
cupsEncryption());
}
return cups_http_;
}
开发者ID:a17r,项目名称:oyranos,代码行数:12,代码来源:oyranos_cmm_CUPS.c
示例10: connection_test_thread
static void
connection_test_thread (GTask *task,
gpointer source_object,
gpointer task_data,
GCancellable *cancellable)
{
http_t *http;
http = httpConnectEncrypt (cupsServer (), ippPort (), cupsEncryption ());
g_task_return_boolean (task, http != NULL);
httpClose (http);
}
开发者ID:mariospr,项目名称:gnome-control-center,代码行数:13,代码来源:pp-cups.c
示例11: GetCupsPrinters
static int GetCupsPrinters(char ***printer)
{
http_t *http=NULL; /* HTTP object */
ipp_t *request=NULL; /* IPP request object */
ipp_t *response=NULL; /* IPP response object */
ipp_attribute_t *attr; /* Current IPP attribute */
int cnt=0;
/* Connect to the HTTP server */
if ((http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption())) == NULL)
goto bugout;
/* Assemble the IPP request */
request = ippNew();
ippSetOperation( request, CUPS_GET_PRINTERS );
ippSetRequestId( request, 1 );
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, "utf-8");
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, "en");
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", NULL, "device-uri");
/* Send the request and get a response. */
if ((response = cupsDoRequest(http, request, "/")) == NULL)
goto bugout;
for (attr = ippFirstAttribute ( response ); attr != NULL; attr = ippNextAttribute( response ))
{
/* Skip leading attributes until we hit a printer. */
while (attr != NULL && ippGetGroupTag( attr ) != IPP_TAG_PRINTER)
attr = ippNextAttribute( response );
if (attr == NULL)
break;
while (attr != NULL && ippGetGroupTag( attr ) == IPP_TAG_PRINTER)
{
if (strcmp(ippGetName( attr ), "device-uri") == 0 && ippGetValueTag( attr ) == IPP_TAG_URI && AddCupsList(ippGetString( attr, 0, NULL ), printer) == 0)
cnt++;
attr = ippNextAttribute( response );
}
if (attr == NULL)
break;
}
ippDelete(response);
bugout:
return cnt;
}
开发者ID:zdohnal,项目名称:hplip,代码行数:51,代码来源:hpaio.c
示例12: connect_server
static http_t * /* O - New HTTP connection */
connect_server(const char *command, /* I - Command name */
http_t *http) /* I - Current HTTP connection */
{
if (!http)
{
http = httpConnectEncrypt(cupsServer(), ippPort(),
cupsEncryption());
if (http == NULL)
{
_cupsLangPrintf(stderr, _("%s: Unable to connect to server."), command);
exit(1);
}
}
return (http);
}
开发者ID:alfintatorkace,项目名称:osx-10.9-opensource,代码行数:18,代码来源:lpq.c
示例13: main
//.........这里部分代码省略.........
* Delete the specified job ID.
*/
dest = NULL;
op = IPP_CANCEL_JOB;
job_id = atoi(argv[i]);
}
else
{
/*
* Bad printer name!
*/
_cupsLangPrintf(stderr,
_("%s: Error - unknown destination \"%s\"!\n"),
argv[0], argv[i]);
return (1);
}
/*
* For Solaris LP compatibility, ignore a destination name after
* cancelling a specific job ID...
*/
if (job_id && (i + 1) < argc &&
cupsGetDest(argv[i + 1], NULL, num_dests, dests) != NULL)
i ++;
/*
* Open a connection to the server...
*/
if (http == NULL)
if ((http = httpConnectEncrypt(cupsServer(), ippPort(),
cupsEncryption())) == NULL)
{
_cupsLangPrintf(stderr,
_("%s: Unable to contact server!\n"),
argv[0]);
return (1);
}
/*
* Build an IPP request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* printer-uri + job-id *or* job-uri
* [requesting-user-name]
*/
request = ippNewRequest(op);
if (dest)
{
httpAssembleURIf(HTTP_URI_CODING_ALL, uri, sizeof(uri), "ipp", NULL,
"localhost", 0, "/printers/%s", dest);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
ippAddInteger(request, IPP_TAG_OPERATION, IPP_TAG_INTEGER, "job-id",
job_id);
}
else
{
sprintf(uri, "ipp://localhost/jobs/%d", job_id);
开发者ID:ystk,项目名称:debian-cups,代码行数:67,代码来源:cancel.c
示例14: main
int /* O - Exit status */
main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
const char *printer; /* Printer name */
const char *user; /* Username */
http_t *http; /* Connection to the server */
ipp_t *request, /* IPP request */
*response; /* IPP response */
ipp_attribute_t *attr; /* IPP attribute */
const char *op; /* Operation to perform, if any */
static const char *def_attrs[] = /* Attributes for default printer */
{
"printer-name",
"printer-uri-supported"
};
/*
* Get any form variables...
*/
cgiInitialize();
op = cgiGetVariable("OP");
/*
* Set the web interface section...
*/
cgiSetVariable("SECTION", "printers");
cgiSetVariable("REFRESH_PAGE", "");
/*
* See if we are displaying a printer or all printers...
*/
if ((printer = getenv("PATH_INFO")) != NULL)
{
printer ++;
if (!*printer)
printer = NULL;
if (printer)
cgiSetVariable("PRINTER_NAME", printer);
}
/*
* See who is logged in...
*/
user = getenv("REMOTE_USER");
/*
* Connect to the HTTP server...
*/
http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption());
/*
* Get the default printer...
*/
if (!op || !cgiIsPOST())
{
/*
* Get the default destination...
*/
request = ippNewRequest(CUPS_GET_DEFAULT);
ippAddStrings(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD,
"requested-attributes",
sizeof(def_attrs) / sizeof(def_attrs[0]), NULL, def_attrs);
if ((response = cupsDoRequest(http, request, "/")) != NULL)
{
if ((attr = ippFindAttribute(response, "printer-name", IPP_TAG_NAME)) != NULL)
cgiSetVariable("DEFAULT_NAME", attr->values[0].string.text);
if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
char url[HTTP_MAX_URI]; /* New URL */
cgiSetVariable("DEFAULT_URI",
cgiRewriteURL(attr->values[0].string.text,
url, sizeof(url), NULL));
}
ippDelete(response);
}
/*
* See if we need to show a list of printers or the status of a
* single printer...
*/
if (!printer)
//.........这里部分代码省略.........
开发者ID:josephgbr,项目名称:cups-pt_BR,代码行数:101,代码来源:printers.c
示例15: _cupsConnect
http_t * /* O - HTTP connection */
_cupsConnect(void)
{
_cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */
/*
* See if we are connected to the same server...
*/
if (cg->http)
{
/*
* Compare the connection hostname, port, and encryption settings to
* the cached defaults; these were initialized the first time we
* connected...
*/
if (strcmp(cg->http->hostname, cg->server) ||
cg->ipp_port != httpAddrPort(cg->http->hostaddr) ||
(cg->http->encryption != cg->encryption &&
cg->http->encryption == HTTP_ENCRYPTION_NEVER))
{
/*
* Need to close the current connection because something has changed...
*/
httpClose(cg->http);
cg->http = NULL;
}
else
{
/*
* Same server, see if the connection is still established...
*/
char ch; /* Connection check byte */
ssize_t n; /* Number of bytes */
#ifdef WIN32
if ((n = recv(cg->http->fd, &ch, 1, MSG_PEEK)) == 0 ||
(n < 0 && WSAGetLastError() != WSAEWOULDBLOCK))
#else
if ((n = recv(cg->http->fd, &ch, 1, MSG_PEEK | MSG_DONTWAIT)) == 0 ||
(n < 0 && errno != EWOULDBLOCK))
#endif /* WIN32 */
{
/*
* Nope, close the connection...
*/
httpClose(cg->http);
cg->http = NULL;
}
}
}
/*
* (Re)connect as needed...
*/
if (!cg->http)
{
if ((cg->http = httpConnect2(cupsServer(), ippPort(), NULL, AF_UNSPEC,
cupsEncryption(), 1, 30000, NULL)) == NULL)
{
if (errno)
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, NULL, 0);
else
_cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE,
_("Unable to connect to host."), 1);
}
}
/*
* Return the cached connection...
*/
return (cg->http);
}
开发者ID:jelmer,项目名称:cups,代码行数:80,代码来源:request.c
示例16: recv_print_job
static int /* O - Command status */
recv_print_job(
const char *queue, /* I - Printer name */
int num_defaults, /* I - Number of default options */
cups_option_t *defaults) /* I - Default options */
{
http_t *http; /* HTTP connection */
int i; /* Looping var */
int status; /* Command status */
int fd; /* Temporary file */
FILE *fp; /* File pointer */
char filename[1024]; /* Temporary filename */
ssize_t bytes; /* Bytes received */
size_t total; /* Total bytes */
char line[256], /* Line from file/stdin */
command, /* Command from line */
*count, /* Number of bytes */
*name; /* Name of file */
const char *job_sheets; /* Job sheets */
int num_data; /* Number of data files */
char control[1024], /* Control filename */
data[100][256], /* Data files */
temp[100][1024]; /* Temporary files */
char user[1024], /* User name */
title[1024], /* Job title */
docname[1024], /* Document name */
dest[256]; /* Printer/class queue */
int accepting, /* printer-is-accepting */
shared, /* printer-is-shared */
num_options; /* Number of options */
cups_option_t *options; /* Options */
int id; /* Job ID */
int docnumber, /* Current document number */
doccount; /* Count of documents */
/*
* Connect to the server...
*/
http = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption());
if (!http)
{
syslog(LOG_ERR, "Unable to connect to server: %s", strerror(errno));
putchar(1);
return (1);
}
/*
* See if the printer is available...
*/
num_options = get_printer(http, queue, dest, sizeof(dest), &options,
&accepting, &shared, NULL);
if (num_options < 0 || !accepting || !shared)
{
if (dest[0])
syslog(LOG_INFO, "Rejecting job because \"%s\" is not %s", dest,
!accepting ? "accepting jobs" : "shared");
else
syslog(LOG_ERR, "Unable to get printer information for \"%s\"", queue);
httpClose(http);
putchar(1);
return (1);
}
putchar(0); /* OK so far... */
/*
* Read the request...
*/
status = 0;
num_data = 0;
fd = -1;
control[0] = '\0';
while (smart_gets(line, sizeof(line), stdin) != NULL)
{
if (strlen(line) < 2)
{
status = 1;
break;
}
command = line[0];
count = line + 1;
for (name = count + 1; *name && !isspace(*name & 255); name ++);
while (isspace(*name & 255))
*name++ = '\0';
switch (command)
//.........这里部分代码省略.........
开发者ID:jianglei12138,项目名称:cups,代码行数:101,代码来源:cups-lpd.c
示例17: send_state
static int /* O - Command status */
send_state(const char *queue, /* I - Destination */
const char *list, /* I - Job or user */
int longstatus) /* I - List of jobs or users */
{
int id; /* Job ID from list */
http_t *http; /* HTTP server connection */
ipp_t *request, /* IPP Request */
*response; /* IPP Response */
ipp_attribute_t *attr; /* Current attribute */
ipp_pstate_t state; /* Printer state */
const char *jobdest, /* Pointer into job-printer-uri */
*jobuser, /* Pointer to job-originating-user-name */
*jobname; /* Pointer to job-name */
ipp_jstate_t jobstate; /* job-state */
int jobid, /* job-id */
jobsize, /* job-k-octets */
jobcount, /* Number of jobs */
jobcopies, /* Number of copies */
rank; /* Rank of job */
char rankstr[255]; /* Rank string */
char namestr[1024]; /* Job name string */
char uri[HTTP_MAX_URI]; /* Printer URI */
char dest[256]; /* Printer/class queue */
static const char * const ranks[10] = /* Ranking strings */
{
"th",
"st",
"nd",
"rd",
"th",
"th",
"th",
"th",
"th",
"th"
};
static const char * const requested[] =
{ /* Requested attributes */
"job-id",
"job-k-octets",
"job-state",
"job-printer-uri",
"job-originating-user-name",
"job-name",
"copies"
};
/*
* Try connecting to the local server...
*/
if ((http = httpConnectEncrypt(cupsServer(), ippPort(),
cupsEncryption())) == NULL)
{
syslog(LOG_ERR, "Unable to connect to server %s: %s", cupsServer(),
strerror(errno));
printf("Unable to connect to server %s: %s", cupsServer(), strerror(errno));
return (1);
}
/*
* Get the actual destination name and printer state...
*/
if (get_printer(http, queue, dest, sizeof(dest), NULL, NULL, NULL, &state))
{
syslog(LOG_ERR, "Unable to get printer %s: %s", queue,
cupsLastErrorString());
printf("Unable to get printer %s: %s", queue, cupsLastErrorString());
return (1);
}
/*
* Show the queue state...
*/
switch (state)
{
case IPP_PRINTER_IDLE :
printf("%s is ready\n", dest);
break;
case IPP_PRINTER_PROCESSING :
printf("%s is ready and printing\n", dest);
break;
case IPP_PRINTER_STOPPED :
printf("%s is not ready\n", dest);
break;
}
/*
* Build an IPP_GET_JOBS or IPP_GET_JOB_ATTRIBUTES request, which requires
* the following attributes:
*
* attributes-charset
* attributes-natural-language
* job-uri or printer-uri
*/
//.........这里部分代码省略.........
开发者ID:jianglei12138,项目名称:cups,代码行数:101,代码来源:cups-lpd.c
示例18: remove_jobs
static int /* O - Command status */
remove_jobs(const char *dest, /* I - Destination */
const char *agent, /* I - User agent */
const char *list) /* I - List of jobs or users */
{
int id; /* Job ID */
http_t *http; /* HTTP server connection */
ipp_t *request; /* IPP Request */
char uri[HTTP_MAX_URI]; /* Job URI */
(void)dest; /* Suppress compiler warnings... */
/*
* Try connecting to the local server...
*/
if ((http = httpConnectEncrypt(cupsServer(), ippPort(),
cupsEncryption())) == NULL)
{
syslog(LOG_ERR, "Unable to connect to server %s: %s", cupsServer(),
strerror(errno));
return (1);
}
/*
* Loop for each job...
*/
while ((id = atoi(list)) > 0)
{
/*
* Skip job ID in list...
*/
while (isdigit(*list & 255))
list ++;
while (isspace(*list & 255))
list ++;
/*
* Build an IPP_CANCEL_JOB request, which requires the following
* attributes:
*
* attributes-charset
* attributes-natural-language
* job-uri
* requesting-user-name
*/
request = ippNewRequest(IPP_CANCEL_JOB);
sprintf(uri, "ipp://localhost/jobs/%d", id);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri", NULL, uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, agent);
/*
* Do the request and get back a response...
*/
ippDelete(cupsDoRequest(http, request, "/jobs"));
if (cupsLastError() > IPP_OK_CONFLICT)
{
syslog(LOG_WARNING, "Cancel of job ID %d failed: %s\n", id,
cupsLastErrorString());
httpClose(http);
return (1);
}
else
syslog(LOG_INFO, "Job ID %d canceled", id);
}
httpClose(http);
return (0);
}
开发者ID:jianglei12138,项目名称:cups,代码行数:79,代码来源:cups-lpd.c
示例19: main
//.........这里部分代码省略.........
else if (!strcmp(argv[i], "--no-remote-any"))
num_settings = cupsAddOption(CUPS_SERVER_REMOTE_ANY, "0",
num_settings, &settings);
else if (!strcmp(argv[i], "--share-printers"))
num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS, "1",
num_settings, &settings);
else if (!strcmp(argv[i], "--no-share-printers"))
num_settings = cupsAddOption(CUPS_SERVER_SHARE_PRINTERS, "0",
num_settings, &settings);
else if (!strcmp(argv[i], "--user-cancel-any"))
num_settings = cupsAddOption(CUPS_SERVER_USER_CANCEL_ANY, "1",
num_settings, &settings);
else if (!strcmp(argv[i], "--no-user-cancel-any"))
num_settings = cupsAddOption(CUPS_SERVER_USER_CANCEL_ANY, "0",
num_settings, &settings);
else
usage(argv[i]);
}
else
{
for (opt = argv[i] + 1; *opt; opt ++)
switch (*opt)
{
case 'E' :
cupsSetEncryption(HTTP_ENCRYPT_REQUIRED);
break;
case 'U' :
i ++;
if (i >= argc)
usage(NULL);
cupsSetUser(argv[i]);
break;
case 'h' :
i ++;
if (i >= argc)
usage(NULL);
cupsSetServer(argv[i]);
break;
default :
usage(opt);
break;
}
}
}
else if (strchr(argv[i], '='))
num_settings = cupsParseOptions(argv[i], num_settings, &settings);
else
usage(argv[i]);
}
if (cupsGetOption("Listen", num_settings, settings) ||
cupsGetOption("Port", num_settings, settings))
{
_cupsLangPuts(stderr, _("cupsctl: Cannot set Listen or Port directly."));
return (1);
}
/*
* Connect to the server using the defaults...
*/
if ((http = httpConnectEncrypt(cupsServer(), ippPort(),
cupsEncryption())) == NULL)
{
_cupsLangPrintf(stderr, _("cupsctl: Unable to connect to server: %s"),
strerror(errno));
return (1);
}
/*
* Set the current configuration if we have anything on the command-line...
*/
if (num_settings > 0)
{
if (!cupsAdminSetServerSettings(http, num_settings, settings))
{
_cupsLangPrintf(stderr, "cupsctl: %s", cupsLastErrorString());
return (1);
}
}
else if (!cupsAdminGetServerSettings(http, &num_settings, &settings))
{
_cupsLangPrintf(stderr, "cupsctl: %s", cupsLastErrorString());
return (1);
}
else
{
for (i = 0; i < num_settings; i ++)
_cupsLangPrintf(stdout, "%s=%s", settings[i].name, settings[i].value);
}
cupsFreeOptions(num_settings, settings);
return (0);
}
开发者ID:zdohnal,项目名称:cups,代码行数:101,代码来源:cupsctl.c
示例20: getPrinterURI
///////////////////////////////////////////////////////////////////////////////////////////
//
// CS : PRIVATE gint getPrinterURI(gchar *pDestName, gchar *pURI, gchar *pServerName, gint bufSize)
// IN : gchar *pDestName : Printer name.
// gint bufSize : Size of output buffer.
// OUT : gchar *pURI : Printer URI.
// gchar *pServerName : Server name.
// RETURN : ID_ERR_NO_ERROR : No error.
// ID_ERR_CUPS_API_FAILED : Error occured in CUPS API.
//
PRIVATE gint getPrinterURI(gchar *pDestName, gchar *pURI, gchar *pServerName, gint bufSize)
{
/*** Parameters start ***/
http_t *pHTTP; // Pointer to HTTP connection.
ipp_t *pRequest, // Pointer to CUPS IPP request.
*pResponse; // Pointer to CUPS IPP response.
ipp_attribute_t *pAttribute; // Pointer to CUPS attributes.
cups_lang_t *pLanguage; // Pointer to language.
gchar *pPrinter = NULL; // Pointer to printer name.
gchar *pUri = NULL; // Pointer to printer uri.
gchar *pTemp = NULL; // Temporary pointer.
gint i; // Counter.
gint retVal = ID_ERR_NO_ERROR; // Return value.
const char *attributes[] = { // Attributes name set.
"printer-name",
"printer-uri-supported",
};
/*** Parameters end ***/
// CUPS http connect.
if ((pHTTP = httpConnectEncrypt(cupsServer(), ippPort(), cupsEncryption())) == NULL) {
retVal = ID_ERR_CUPS_API_FAILED;
}
else {
pRequest = ippNew();
ippSetOperation(pRequest, CUPS_GET_PRINTERS);
ippSetRequestId(pRequest, 1);
pLanguage = bjcupsLangDefault(); // cupsLangDefault() -> bjcupsLangDefault() for cups-1.1.19
ippAddString(pRequest, IPP_TAG_OPERATION, IPP_TAG_CHARSET, "attributes-charset", NULL, cupsLangEncoding(pLanguage));
ippAddString(pRequest, IPP_TAG_OPERATION, IPP_TAG_LANGUAGE, "attributes-natural-language", NULL, pLanguage->language);
ippAddStrings(pRequest, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "requested-attributes", sizeof(attributes) / sizeof(attributes[0]), NULL, attributes);
if ((pResponse = cupsDoRequest(pHTTP, pRequest, "/")) != NULL) {
if (ippGetStatusCode(pResponse) > IPP_OK_CONFLICT) {
retVal = ID_ERR_CUPS_API_FAILED;
}
else {
pAttribute = ippFirstAttribute(pResponse);
while (pAttribute != NULL) {
while (pAttribute != NULL && ippGetGroupTag(pAttribute) != IPP_TAG_PRINTER) {
pAttribute = bjcups_ippNextAttribute(pRequest, pAttribute);
}
if (pAttribute == NULL) {
break;
}
while (pAttribute != NULL && ippGetGroupTag(pAttribute) == IPP_TAG_PRINTER) {
if (strcmp(ippGetName(pAttribute), "printer-name") == 0 && ippGetValueTag(pAttribute) == IPP_TAG_NAME) {
pPrinter = ippGetString(pAttribute, 0, NULL);
}
if (strcmp(ippGetName(pAttribute), "printer-uri-supported") == 0 && ippGetValueTag(pAttribute) == IPP_TAG_URI) {
pUri = ippGetString(pAttribute, 0, NULL);
}
pAttribute = bjcups_ippNextAttribute(pRequest, pAttribute);
}
// Tora 020418: Compare two printer names ignoring the character case.
if (strcasecmp(pDestName, pPrinter) == 0) {
strncpy(pURI, pUri, bufSize);
pTemp = strstr(pURI, "//");
pTemp += 2;
for (i = 0; *pTemp != '/' && *pTemp != ':'; i++, pTemp++) {
pServerName[i] = *pTemp;
}
break;
}
if (pAttribute != NULL)
pAttribute = bjcups_ippNextAttribute(pRequest, pAttribute);
}
}
ippDelete(pResponse);
}
else {
retVal = ID_ERR_CUPS_API_FAILED;
}
cupsLangFree(pLanguage);
httpClose(pHTTP);
}
if (pURI[0] == '\0') {
snprintf(pURI, bufSize, "ipp://localhost/printers/%s", pDestName);
//.........这里部分代码省略.........
开发者ID:Magister,项目名称:bjcups-2.50,代码行数:101,代码来源:bjcupsmon_cups.c
注:本文中的cupsServer函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论