netatalk  4.5.1
Free and Open Source Apple Filing Protocol (AFP) Server
Loading...
Searching...
No Matches
print_cups.c File Reference
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/param.h>
#include <errno.h>
#include <cups/ipp.h>
#include <cups/cups.h>
#include <cups/language.h>
#include <atalk/unicode.h>
#include <atalk/logger.h>
#include <atalk/atp.h>
#include <atalk/pap.h>
#include <atalk/util.h>
#include "printer.h"
#include "print_cups.h"

Macros

#define MAXCHOOSERLEN   31

Functions

static int convert_to_mac_name (const char *encoding, char *inptr, char *outptr, size_t outlen)
 Convert to Mac printer name.
static size_t to_ascii (char *inbuf, char **outbuf)
static int cups_mangle_printer_name (struct printer *pr, struct printer *printers)
 Mangles the printer name if two CUPS printer provide the same Chooser Name.
static void cups_free_printer (struct printer *pr)
const char * cups_get_language (void)
static const char * cups_passwd_cb (const char *prompt, http_t *http, const char *method, const char *resource, void *user_data)
 The CUPS password callback...
int cups_printername_ok (char *name)
 Verify supplied printer name is a valid cups printer.
const char * cups_get_printer_ppd (char *name)
int cups_get_printer_status (struct printer *pr)
int cups_print_job (char *name, const char *filename, char *job, char *username, char *cupsoptions)
struct printercups_autoadd_printers (struct printer *defprinter, struct printer *printers)
int cups_check_printer (struct printer *pr, struct printer *printers, int replace)
 check if a printer with this name already exists.

Variables

static const char * cups_status_msg []

Macro Definition Documentation

◆ MAXCHOOSERLEN

#define MAXCHOOSERLEN   31

Function Documentation

◆ convert_to_mac_name()

int convert_to_mac_name ( const char * encoding,
char * inptr,
char * outptr,
size_t outlen )
static

Convert to Mac printer name.

Note
1) Convert from encoding to MacRoman
2) Shorten to MAXCHOOSERLEN (31)
3) Replace @ and _ as they are illegal
Returns
-1 on failure, length of name on success; outpr contains name in MacRoman

◆ cups_autoadd_printers()

struct printer * cups_autoadd_printers ( struct printer * defprinter,
struct printer * printers )

◆ cups_check_printer()

int cups_check_printer ( struct printer * pr,
struct printer * printers,
int replace )

check if a printer with this name already exists.

Note
if yes, and replace = 1 the existing printer is replaced with the new one. This allows to overwrite printer settings
created by cupsautoadd. It also used by cups_mangle_printer.

◆ cups_free_printer()

void cups_free_printer ( struct printer * pr)
static

◆ cups_get_language()

const char * cups_get_language ( void )

◆ cups_get_printer_ppd()

const char * cups_get_printer_ppd ( char * name)

◆ cups_get_printer_status()

int cups_get_printer_status ( struct printer * pr)

◆ cups_mangle_printer_name()

int cups_mangle_printer_name ( struct printer * pr,
struct printer * printers )
static

Mangles the printer name if two CUPS printer provide the same Chooser Name.

Note
Append '#nn' to the chooser name, if it is longer than 28 char we overwrite the last three chars
Returns
0 on Success, 2 on Error

◆ cups_passwd_cb()

const char * cups_passwd_cb ( const char * prompt,
http_t * http,
const char * method,
const char * resource,
void * user_data )
static

The CUPS password callback...

Note
O - Password or NULL
I - Prompt
Returns
NULL (not implemented)

◆ cups_print_job()

int cups_print_job ( char * name,
const char * filename,
char * job,
char * username,
char * cupsoptions )

pass the job to cups

◆ cups_printername_ok()

int cups_printername_ok ( char * name)

Verify supplied printer name is a valid cups printer.

Note
O - 1 if printer name OK
I - Name of printer

◆ to_ascii()

size_t to_ascii ( char * inptr,
char ** outptr )
static

fallback ASCII conversion

Variable Documentation

◆ cups_status_msg

const char* cups_status_msg[]
static
Initial value:
= {
"status: busy; info: \"%s\" is rejecting jobs; ",
"status: idle; info: \"%s\" is stopped, accepting jobs ; ",
"status: idle; info: \"%s\" is ready ; ",
"status: busy; info: \"%s\" is processing a job ; ",
}