本文整理汇总了C++中cupsServer函数的典型用法代码示例。如果您正苦于以下问题:C++ cupsServer函数的具体用法?C++ cupsServer怎么用?C++ cupsServer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了cupsServer函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的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();
}
示例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;
}
示例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;
}
示例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;
}
示例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);
}
}
示例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;
}
示例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;
}
示例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;
}
示例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_;
}
示例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);
}
示例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;
}
示例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);
}
示例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);
示例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)
//.........这里部分代码省略.........
示例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);
}