netatalk  4.4.0
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 ; ",
}