Comparar commits

..

2 Commits

Autor SHA1 Mensagem Data
Michael Sweet 00d0ae86f6 Import CUPS v2.0.4 2016-03-15 10:40:47 -04:00
Michael Sweet a215cf8413 Import CUPS v2.0.3 2016-03-15 10:40:44 -04:00
196 arquivos alterados com 10808 adições e 7062 exclusões
+51 -1
Ver Arquivo
@@ -1,6 +1,56 @@
CHANGES.txt - 2.0.2 - 2015-02-03
CHANGES.txt - 2.0.4 - 2015-07-31
--------------------------------
CHANGES IN CUPS V2.0.4
- Fixed a bug in cupsRasterWritePixels (STR #4650)
- Fixed redirection in the web interface (STR #4538)
- The IPP backend did not respond to side-channel requests (STR #4645)
- The scheduler did not start all pending jobs at once (STR #4646)
- The web search incorrectly searched time-at-xxx values (STR #4652)
- Fixed an RPM spec file issue (STR #4657)
- The scheduler incorrectly started jobs while canceling multiple jobs
(STR #4648)
- Fixed processing of server overrides without port numbers (STR #4675)
- Documentation changes (STR #4651, STR #4674)
CHANGES IN CUPS V2.0.3
- Security: Fixed CERT VU #810572 exploiting the dynamic linker
(STR #4609)
- Security: The scheduler could hang with malformed gzip data
(STR #4602)
- Restored missing generic printer icon file (STR #4587)
- Fixed logging of configuration errors to show up as errors (STR #4582)
- Fixed potential buffer overflows in raster code and filters
(STR #4598, STR #4599, STR #4600, STR #4601)
- Fixed a gzip processing bug (#4602)
- Fixed <Limit> inside <Location> (STR #4575)
- Fixed lpadmin when both -m and -o are used (STR #4578)
- The web interface always showed support for 2-sided printing
(STR #4595)
- cupsRasterReadHeader did not fully validate the raster header
(STR #4596)
- The rastertopwg filter did not check for truncated input (STR #4597)
- The cups-lpd mini-daemon did not check for request parameters
(STR #4603)
- The scheduler could get caught in a busy loop (STR #4605)
- The sample Epson driver could crash (STR #4616)
- The IPP backend now correctly monitors jobs
(<rdar://problem/20495955>)
- The ppdhtml and ppdpo utilities crashed when the -D option was used
before a driver information file (STR #4627)
- ippfind incorrectly substituted "=port" for service_port.
- The IPP/1.1 test file did not handle the initial print job
completing early (STR #4576)
- Fixed a memory leak in cupsConnectDest (STR #4634)
- PWG Raster Format output contained invalid ImageBox values
(<rdar://problem/21144309>)
- Added Russian translation (STR #4577)
- Added German translation (STR #4635)
CHANGES IN CUPS V2.0.2
- Security: cupsRasterReadPixels buffer overflow with invalid page
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
INSTALL - CUPS v2.0.2 - 2015-02-03
INSTALL - CUPS v2.0.4 - 2015-07-31
----------------------------------
This file describes how to compile and install CUPS from source code. For more
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
README - CUPS v2.0.2 - 2015-02-03
README - CUPS v2.0.4 - 2015-07-31
---------------------------------
Looking for compile instructions? Read the file "INSTALL.txt" instead...
+5 -5
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: dnssd.c 11969 2014-06-30 14:27:01Z msweet $"
* "$Id: dnssd.c 12660 2015-05-22 19:09:57Z msweet $"
*
* DNS-SD discovery backend for CUPS.
*
* Copyright 2008-2014 by Apple Inc.
* Copyright 2008-2015 by Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
@@ -318,7 +318,7 @@ main(int argc, /* I - Number of command-line args */
if ((simple_poll = avahi_simple_poll_new()) == NULL)
{
fputs("DEBUG: Unable to create Avahi simple poll object.\n", stderr);
return (1);
return (0);
}
avahi_simple_poll_set_func(simple_poll, poll_callback, NULL);
@@ -328,7 +328,7 @@ main(int argc, /* I - Number of command-line args */
if (!client)
{
fputs("DEBUG: Unable to create Avahi client.\n", stderr);
return (1);
return (0);
}
browsers = 6;
@@ -1330,5 +1330,5 @@ unquote(char *dst, /* I - Destination buffer */
/*
* End of "$Id: dnssd.c 11969 2014-06-30 14:27:01Z msweet $".
* End of "$Id: dnssd.c 12660 2015-05-22 19:09:57Z msweet $".
*/
+16 -2
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: ipp.c 12048 2014-07-18 14:26:14Z msweet $"
* "$Id: ipp.c 12759 2015-06-24 20:06:30Z msweet $"
*
* IPP backend for CUPS.
*
@@ -64,6 +64,7 @@ typedef struct _cups_monitor_s /**** Monitoring data ****/
version, /* IPP version */
job_id, /* Job ID for submitted job */
job_reasons, /* Job state reasons bits */
create_job, /* Support Create-Job? */
get_job_attrs; /* Support Get-Job-Attributes? */
const char *job_name; /* Job name for submitted job */
http_encryption_t encryption; /* Use encryption? */
@@ -1396,6 +1397,7 @@ main(int argc, /* I - Number of command-line args */
monitor.port = port;
monitor.version = version;
monitor.job_id = 0;
monitor.create_job = create_job;
monitor.get_job_attrs = get_job_attrs;
monitor.encryption = cupsEncryption();
monitor.job_state = IPP_JOB_PENDING;
@@ -1560,6 +1562,7 @@ main(int argc, /* I - Number of command-line args */
FD_ZERO(&input);
FD_SET(fd, &input);
FD_SET(snmp_fd, &input);
FD_SET(CUPS_SC_FD, &input);
while (select(fd > snmp_fd ? fd + 1 : snmp_fd + 1, &input, NULL, NULL,
NULL) <= 0 && !job_canceled);
@@ -2336,6 +2339,15 @@ monitor_printer(
if (cupsLastError() <= IPP_OK_CONFLICT)
password_tries = 0;
if (monitor->job_id == 0 && monitor->create_job)
{
/*
* No job-id yet, so continue...
*/
goto monitor_disconnect;
}
/*
* Check the status of the job itself...
*/
@@ -2485,6 +2497,8 @@ monitor_printer(
* Disconnect from the printer - we'll reconnect on the next poll...
*/
monitor_disconnect:
_httpDisconnect(http);
}
@@ -3756,5 +3770,5 @@ update_reasons(ipp_attribute_t *attr, /* I - printer-state-reasons or NULL */
}
/*
* End of "$Id: ipp.c 12048 2014-07-18 14:26:14Z msweet $".
* End of "$Id: ipp.c 12759 2015-06-24 20:06:30Z msweet $".
*/
+552 -403
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+7 -18
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: ipp-var.c 11889 2014-05-22 13:54:15Z msweet $"
* "$Id: ipp-var.c 12769 2015-06-30 16:13:48Z msweet $"
*
* CGI <-> IPP variable routines for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -222,6 +222,9 @@ cgiGetIPPObjects(ipp_t *response, /* I - IPP response */
break;
case IPP_TAG_INTEGER :
if (!strncmp(ippGetName(attr), "time-at-", 8))
break; /* Ignore time-at-xxx */
for (i = 0; !add && i < attr->num_values; i ++)
{
char buf[255]; /* Number buffer */
@@ -1202,21 +1205,7 @@ cgiSetIPPObjectVars(
* Rewrite URIs...
*/
if (!strcmp(name, "member_uris"))
{
char url[1024]; /* URL for class member... */
cgiRewriteURL(attr->values[i].string.text, url,
sizeof(url), NULL);
snprintf(valptr, sizeof(value) - (size_t)(valptr - value),
"<A HREF=\"%s\">%s</A>", url,
strrchr(attr->values[i].string.text, '/') + 1);
}
else
cgiRewriteURL(attr->values[i].string.text, valptr,
(int)(sizeof(value) - (size_t)(valptr - value)), NULL);
cgiRewriteURL(attr->values[i].string.text, valptr, (int)(sizeof(value) - (size_t)(valptr - value)), NULL);
break;
}
@@ -1561,5 +1550,5 @@ cgiText(const char *message) /* I - Message */
/*
* End of "$Id: ipp-var.c 11889 2014-05-22 13:54:15Z msweet $".
* End of "$Id: ipp-var.c 12769 2015-06-30 16:13:48Z msweet $".
*/
+4 -36
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: template.c 11685 2014-03-05 20:03:29Z msweet $"
* "$Id: template.c 12701 2015-06-08 18:33:44Z msweet $"
*
* CGI template function.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -648,39 +648,7 @@ cgi_puts(const char *s, /* I - String to output */
while (*s)
{
if (*s == '<')
{
/*
* Pass <A HREF="url"> and </A>, otherwise quote it...
*/
if (!_cups_strncasecmp(s, "<A HREF=\"", 9))
{
fputs("<A HREF=\"", out);
s += 9;
while (*s && *s != '\"')
{
if (*s == '&')
fputs("&amp;", out);
else
putc(*s, out);
s ++;
}
if (*s)
s ++;
fputs("\">", out);
}
else if (!_cups_strncasecmp(s, "</A>", 4))
{
fputs("</A>", out);
s += 3;
}
else
fputs("&lt;", out);
}
fputs("&lt;", out);
else if (*s == '>')
fputs("&gt;", out);
else if (*s == '\"')
@@ -718,5 +686,5 @@ cgi_puturi(const char *s, /* I - String to output */
/*
* End of "$Id: template.c 11685 2014-03-05 20:03:29Z msweet $".
* End of "$Id: template.c 12701 2015-06-08 18:33:44Z msweet $".
*/
+1 -1
Ver Arquivo
@@ -20,7 +20,7 @@ dnl Set the name of the config header file...
AC_CONFIG_HEADER(config.h)
dnl Version number information...
CUPS_VERSION=2.0.2
CUPS_VERSION=2.0.4
CUPS_REVISION=
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
+11 -2
Ver Arquivo
@@ -1,5 +1,5 @@
dnl
dnl "$Id: cups-compiler.m4 12122 2014-08-28 12:55:52Z msweet $"
dnl "$Id: cups-compiler.m4 12743 2015-06-23 14:49:09Z msweet $"
dnl
dnl Compiler stuff for CUPS.
dnl
@@ -156,6 +156,15 @@ if test -n "$GCC"; then
# Add useful warning options for tracking down problems...
OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
AC_MSG_CHECKING(whether compiler supports -Wno-unused-result)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror -Wno-unused-result"
AC_TRY_COMPILE(,,
[OPTIM="$OPTIM -Wno-unused-result"
AC_MSG_RESULT(yes)],
AC_MSG_RESULT(no))
CFLAGS="$OLDCFLAGS"
AC_MSG_CHECKING(whether compiler supports -Wsign-conversion)
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror -Wsign-conversion"
@@ -237,5 +246,5 @@ case $uname in
esac
dnl
dnl End of "$Id: cups-compiler.m4 12122 2014-08-28 12:55:52Z msweet $".
dnl End of "$Id: cups-compiler.m4 12743 2015-06-23 14:49:09Z msweet $".
dnl
externo
+27 -1
Ver Arquivo
@@ -2537,7 +2537,7 @@ esac
ac_config_headers="$ac_config_headers config.h"
CUPS_VERSION=2.0.2
CUPS_VERSION=2.0.4
CUPS_REVISION=
#if test -z "$CUPS_REVISION" -a -d .svn; then
# CUPS_REVISION="-r`svnversion . | awk -F: '{print $NF}' | sed -e '1,$s/[[a-zA-Z]]*//g'`"
@@ -6786,6 +6786,32 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
# Add useful warning options for tracking down problems...
OPTIM="-Wall -Wno-format-y2k -Wunused $OPTIM"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -Wno-unused-result" >&5
$as_echo_n "checking whether compiler supports -Wno-unused-result... " >&6; }
OLDCFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -Werror -Wno-unused-result"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
OPTIM="$OPTIM -Wno-unused-result"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS="$OLDCFLAGS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler supports -Wsign-conversion" >&5
$as_echo_n "checking whether compiler supports -Wsign-conversion... " >&6; }
OLDCFLAGS="$CFLAGS"
+5 -5
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: cups.h 12266 2014-11-19 16:05:28Z msweet $"
* "$Id: cups.h 12761 2015-06-24 20:10:19Z msweet $"
*
* API definitions for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -49,10 +49,10 @@ extern "C" {
* Constants...
*/
# define CUPS_VERSION 2.0002
# define CUPS_VERSION 2.0004
# define CUPS_VERSION_MAJOR 2
# define CUPS_VERSION_MINOR 0
# define CUPS_VERSION_PATCH 2
# define CUPS_VERSION_PATCH 4
# define CUPS_BC_FD 3
/* Back-channel file descriptor for
@@ -628,5 +628,5 @@ extern int cupsSetServerCredentials(const char *path, const char *common_name,
#endif /* !_CUPS_CUPS_H_ */
/*
* End of "$Id: cups.h 12266 2014-11-19 16:05:28Z msweet $".
* End of "$Id: cups.h 12761 2015-06-24 20:10:19Z msweet $".
*/
+4 -3
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: dest.c 12094 2014-08-19 12:15:11Z msweet $"
* "$Id: dest.c 12665 2015-05-25 15:08:55Z msweet $"
*
* User-defined destination (and option) support for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -657,6 +657,7 @@ cupsConnectDest(
http = httpConnect2(hostname, port, addrlist, AF_UNSPEC, encryption, 1, 0,
NULL);
httpAddrFreeList(addrlist);
/*
* Connect if requested...
@@ -3942,5 +3943,5 @@ cups_make_string(
/*
* End of "$Id: dest.c 12094 2014-08-19 12:15:11Z msweet $".
* End of "$Id: dest.c 12665 2015-05-25 15:08:55Z msweet $".
*/
+114 -34
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: file.c 12297 2014-12-08 19:26:32Z msweet $"
* "$Id: file.c 12642 2015-05-19 15:04:47Z msweet $"
*
* File functions for CUPS.
*
@@ -8,7 +8,7 @@
* our own file functions allows us to provide transparent support of
* gzip'd print files, PPD files, etc.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -639,6 +639,8 @@ cupsFileGetChar(cups_file_t *fp) /* I - CUPS file */
* Range check input...
*/
DEBUG_printf(("4cupsFileGetChar(fp=%p)", fp));
if (!fp || (fp->mode != 'r' && fp->mode != 's'))
{
DEBUG_puts("5cupsFileGetChar: Bad arguments!");
@@ -649,8 +651,10 @@ cupsFileGetChar(cups_file_t *fp) /* I - CUPS file */
* If the input buffer is empty, try to read more data...
*/
DEBUG_printf(("5cupsFileGetChar: fp->eof=%d, fp->ptr=%p, fp->end=%p", fp->eof, fp->ptr, fp->end));
if (fp->ptr >= fp->end)
if (cups_fill(fp) < 0)
if (cups_fill(fp) <= 0)
{
DEBUG_puts("5cupsFileGetChar: Unable to fill buffer!");
return (-1);
@@ -1284,7 +1288,7 @@ cupsFilePeekChar(cups_file_t *fp) /* I - CUPS file */
*/
if (fp->ptr >= fp->end)
if (cups_fill(fp) < 0)
if (cups_fill(fp) <= 0)
return (-1);
/*
@@ -1779,7 +1783,7 @@ cupsFileSeek(cups_file_t *fp, /* I - CUPS file */
* Preload a buffer to determine whether the file is compressed...
*/
if (cups_fill(fp) < 0)
if (cups_fill(fp) <= 0)
return (-1);
}
#endif /* HAVE_LIBZ */
@@ -2195,6 +2199,8 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
DEBUG_printf(("9cups_fill: cups_read() returned " CUPS_LLFMT,
CUPS_LLCAST bytes));
fp->eof = 1;
return (-1);
}
@@ -2234,6 +2240,11 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
* Can't read from file!
*/
DEBUG_puts("9cups_fill: Extra gzip header data missing, returning -1.");
fp->eof = 1;
errno = EIO;
return (-1);
}
@@ -2246,6 +2257,11 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
* Can't read from file!
*/
DEBUG_puts("9cups_fill: Extra gzip header data does not fit in initial buffer, returning -1.");
fp->eof = 1;
errno = EIO;
return (-1);
}
}
@@ -2267,6 +2283,11 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
* Can't read from file!
*/
DEBUG_puts("9cups_fill: Original filename in gzip header data does not fit in initial buffer, returning -1.");
fp->eof = 1;
errno = EIO;
return (-1);
}
}
@@ -2288,6 +2309,11 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
* Can't read from file!
*/
DEBUG_puts("9cups_fill: Comment in gzip header data does not fit in initial buffer, returning -1.");
fp->eof = 1;
errno = EIO;
return (-1);
}
}
@@ -2306,6 +2332,11 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
* Can't read from file!
*/
DEBUG_puts("9cups_fill: Header CRC in gzip header data does not fit in initial buffer, returning -1.");
fp->eof = 1;
errno = EIO;
return (-1);
}
}
@@ -2330,8 +2361,15 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
fp->stream.avail_out = 0;
fp->crc = crc32(0L, Z_NULL, 0);
if (inflateInit2(&(fp->stream), -15) != Z_OK)
if ((status = inflateInit2(&(fp->stream), -15)) != Z_OK)
{
DEBUG_printf(("9cups_fill: inflateInit2 returned %d, returning -1.", status));
fp->eof = 1;
errno = EIO;
return (-1);
}
fp->compressed = 1;
}
@@ -2343,7 +2381,11 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
*/
if (fp->eof)
return (-1);
{
DEBUG_puts("9cups_fill: EOF, returning 0.");
return (0);
}
/*
* Fill the decompression buffer as needed...
@@ -2352,7 +2394,13 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
if (fp->stream.avail_in == 0)
{
if ((bytes = cups_read(fp, (char *)fp->cbuf, sizeof(fp->cbuf))) <= 0)
return (-1);
{
DEBUG_printf(("9cups_fill: cups_read error, returning %d.", (int)bytes));
fp->eof = 1;
return (bytes);
}
fp->stream.next_in = fp->cbuf;
fp->stream.avail_in = (uInt)bytes;
@@ -2379,42 +2427,69 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
unsigned char trailer[8]; /* Trailer bytes */
uLong tcrc; /* Trailer CRC */
ssize_t tbytes = 0; /* Number of bytes */
if (read(fp->fd, trailer, sizeof(trailer)) < (ssize_t)sizeof(trailer))
if (fp->stream.avail_in > 0)
{
/*
* Can't get it, so mark end-of-file...
*/
if (fp->stream.avail_in > sizeof(trailer))
tbytes = (ssize_t)sizeof(trailer);
else
tbytes = (ssize_t)fp->stream.avail_in;
fp->eof = 1;
memcpy(trailer, fp->stream.next_in, (size_t)tbytes);
fp->stream.next_in += tbytes;
fp->stream.avail_in -= (size_t)tbytes;
}
else
{
tcrc = ((((((uLong)trailer[3] << 8) | (uLong)trailer[2]) << 8) |
(uLong)trailer[1]) << 8) | (uLong)trailer[0];
if (tcrc != fp->crc)
if (tbytes < (ssize_t)sizeof(trailer))
{
if (read(fp->fd, trailer + tbytes, sizeof(trailer) - (size_t)tbytes) < ((ssize_t)sizeof(trailer) - tbytes))
{
/*
* Bad CRC, mark end-of-file...
* Can't get it, so mark end-of-file...
*/
DEBUG_printf(("9cups_fill: tcrc=%08x != fp->crc=%08x",
(unsigned int)tcrc, (unsigned int)fp->crc));
DEBUG_puts("9cups_fill: Unable to read gzip CRC trailer, returning -1.");
fp->eof = 1;
errno = EIO;
return (-1);
}
}
tcrc = ((((((uLong)trailer[3] << 8) | (uLong)trailer[2]) << 8) |
(uLong)trailer[1]) << 8) | (uLong)trailer[0];
if (tcrc != fp->crc)
{
/*
* Otherwise, reset the compressed flag so that we re-read the
* file header...
* Bad CRC, mark end-of-file...
*/
fp->compressed = 0;
DEBUG_printf(("9cups_fill: tcrc=%08x != fp->crc=%08x, returning -1.", (unsigned int)tcrc, (unsigned int)fp->crc));
fp->eof = 1;
errno = EIO;
return (-1);
}
/*
* Otherwise, reset the compressed flag so that we re-read the
* file header...
*/
fp->compressed = 0;
}
else if (status < Z_OK)
{
DEBUG_printf(("9cups_fill: inflate returned %d, returning -1.", status));
fp->eof = 1;
errno = EIO;
return (-1);
}
bytes = (ssize_t)sizeof(fp->buf) - (ssize_t)fp->stream.avail_out;
@@ -2427,7 +2502,10 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
fp->end = fp->buf + bytes;
if (bytes)
{
DEBUG_printf(("9cups_fill: Returning %d.", (int)bytes));
return (bytes);
}
}
}
#endif /* HAVE_LIBZ */
@@ -2445,17 +2523,19 @@ cups_fill(cups_file_t *fp) /* I - CUPS file */
fp->eof = 1;
fp->ptr = fp->buf;
fp->end = fp->buf;
}
else
{
/*
* Return the bytes we read...
*/
return (-1);
fp->eof = 0;
fp->ptr = fp->buf;
fp->end = fp->buf + bytes;
}
/*
* Return the bytes we read...
*/
fp->eof = 0;
fp->ptr = fp->buf;
fp->end = fp->buf + bytes;
DEBUG_printf(("9cups_fill: Not gzip, returning %d.", (int)bytes));
return (bytes);
}
@@ -2672,5 +2752,5 @@ cups_write(cups_file_t *fp, /* I - CUPS file */
/*
* End of "$Id: file.c 12297 2014-12-08 19:26:32Z msweet $".
* End of "$Id: file.c 12642 2015-05-19 15:04:47Z msweet $".
*/
+22 -6
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: testfile.c 11558 2014-02-06 18:33:34Z msweet $"
* "$Id: testfile.c 12578 2015-03-30 19:07:29Z msweet $"
*
* File test program for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -205,14 +205,14 @@ main(int argc, /* I - Number of command-line arguments */
* Cat the filename on the command-line...
*/
char line[1024]; /* Line from file */
char line[8192]; /* Line from file */
if ((fp = cupsFileOpen(argv[1], "r")) == NULL)
{
perror(argv[1]);
status = 1;
}
else
else if (argc == 2)
{
status = 0;
@@ -224,6 +224,21 @@ main(int argc, /* I - Number of command-line arguments */
cupsFileClose(fp);
}
else
{
status = 0;
ssize_t bytes;
while ((bytes = cupsFileRead(fp, line, sizeof(line))) > 0)
printf("%s: %d bytes\n", argv[1], (int)bytes);
if (cupsFileEOF(fp))
printf("%s: EOF\n", argv[1]);
else
perror(argv[1]);
cupsFileClose(fp);
}
}
return (status);
@@ -798,7 +813,8 @@ read_write_tests(int compression) /* I - Use compression? */
* Remove the test file...
*/
unlink(compression ? "testfile.dat.gz" : "testfile.dat");
if (!status)
unlink(compression ? "testfile.dat.gz" : "testfile.dat");
/*
* Return the test status...
@@ -809,5 +825,5 @@ read_write_tests(int compression) /* I - Use compression? */
/*
* End of "$Id: testfile.c 11558 2014-02-06 18:33:34Z msweet $".
* End of "$Id: testfile.c 12578 2015-03-30 19:07:29Z msweet $".
*/
+15 -3
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: testppd.c 11594 2014-02-14 20:09:01Z msweet $"
* "$Id: testppd.c 12604 2015-05-06 01:43:05Z msweet $"
*
* PPD test program for CUPS.
*
@@ -859,7 +859,19 @@ main(int argc, /* I - Number of command-line arguments */
struct stat fileinfo; /* File information */
if (!strncmp(argv[1], "-d", 2))
if (strchr(argv[1], ':'))
{
/*
* Server PPD...
*/
if ((filename = cupsGetServerPPD(CUPS_HTTP_DEFAULT, argv[1])) == NULL)
{
printf("%s: %s\n", argv[1], cupsLastErrorString());
return (1);
}
}
else if (!strncmp(argv[1], "-d", 2))
{
const char *printer; /* Printer name */
@@ -1107,5 +1119,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: testppd.c 11594 2014-02-14 20:09:01Z msweet $".
* End of "$Id: testppd.c 12604 2015-05-06 01:43:05Z msweet $".
*/
+28 -13
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: usersys.c 12481 2015-02-03 12:45:14Z msweet $"
* "$Id: usersys.c 12813 2015-07-30 15:00:40Z msweet $"
*
* User, system, and password routines for CUPS.
*
@@ -68,6 +68,7 @@ typedef struct _cups_client_conf_s /**** client.conf config data ****/
static void cups_finalize_client_conf(_cups_client_conf_t *cc);
static void cups_init_client_conf(_cups_client_conf_t *cc);
static void cups_read_client_conf(cups_file_t *fp, _cups_client_conf_t *cc);
static void cups_set_default_ipp_port(_cups_globals_t *cg);
static void cups_set_encryption(_cups_client_conf_t *cc, const char *value);
#ifdef HAVE_GSSAPI
static void cups_set_gss_service_name(_cups_client_conf_t *cc, const char *value);
@@ -382,6 +383,9 @@ cupsSetServer(const char *server) /* I - Server name */
cg->ipp_port = atoi(port);
}
if (!cg->ipp_port)
cups_set_default_ipp_port(cg);
if (cg->server[0] == '/')
strlcpy(cg->servername, "localhost", sizeof(cg->servername));
else
@@ -392,6 +396,7 @@ cupsSetServer(const char *server) /* I - Server name */
cg->server[0] = '\0';
cg->servername[0] = '\0';
cg->server_version = 20;
cg->ipp_port = 0;
}
if (cg->http)
@@ -908,17 +913,7 @@ _cupsSetDefaults(void)
cupsSetServer(cc.server_name);
if (!cg->ipp_port)
{
const char *ipp_port; /* IPP_PORT environment variable */
if ((ipp_port = getenv("IPP_PORT")) != NULL)
{
if ((cg->ipp_port = atoi(ipp_port)) <= 0)
cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
}
else
cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
}
cups_set_default_ipp_port(cg);
if (!cg->user[0])
strlcpy(cg->user, cc.user, sizeof(cg->user));
@@ -1150,6 +1145,26 @@ cups_read_client_conf(
}
/*
* 'cups_set_default_ipp_port()' - Set the default IPP port value.
*/
static void
cups_set_default_ipp_port(
_cups_globals_t *cg) /* I - Global data */
{
const char *ipp_port; /* IPP_PORT environment variable */
if ((ipp_port = getenv("IPP_PORT")) != NULL)
{
if ((cg->ipp_port = atoi(ipp_port)) <= 0)
cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
}
else
cg->ipp_port = CUPS_DEFAULT_IPP_PORT;
}
/*
* 'cups_set_encryption()' - Set the Encryption value.
*/
@@ -1264,5 +1279,5 @@ cups_set_user(
/*
* End of "$Id: usersys.c 12481 2015-02-03 12:45:14Z msweet $".
* End of "$Id: usersys.c 12813 2015-07-30 15:00:40Z msweet $".
*/
+55
Ver Arquivo
@@ -0,0 +1,55 @@
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="/cups.css" type="text/css">
<link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta name="viewport" content="width=device-width">
<title>Home - CUPS @CUPS_VERSION@@CUPS_REVISION@</title>
</head>
<body>
<div class="header">
<ul>
<li><a href="http://www.cups.org/" target="_blank">CUPS.org</a></li>
<li><a class="active" href="/">Home</a></li>
<li><a href="/admin">Verwaltung</a></li>
<li><a href="/classes/">Klassen</a></li>
<li><a href="/help/">Hilfe</a></li>
<li><a href="/jobs/">Aufträge</a></li>
<li><a href="/printers/">Drucker</a></li>
</ul>
</div>
<div class="body">
<div class="row">
<h1>CUPS 2.0.2</h1>
<p>CUPS basiert auf Standards, Open Source Drucksystem entwickelt durch <a href="http://www.apple.com/">Apple Inc.</a> für OS X<sup>&reg;</sup> und andere UNIX<sup>&reg;</sup>-artige Betriebssysteme.</p>
</div>
<div class="row">
<div class="thirds">
<h2>CUPS für Benutzer</h2>
<p><a href="help/overview.html">Überblick über CUPS</a></p>
<p><a href="help/options.html">Befehlszeilen-Druck und Optionen</a></p>
<p><a href="http://www.cups.org/lists.php?LIST=cups">Benutzerforum</a></p>
</div>
<div class="thirds">
<h2>CUPS für Administratoren</h2>
<p><a href="admin">Drucker und Klassen hinzufügen</a></p>
<p><a href="help/policies.html">Betriebs-Richtlinie festlegen</a></p>
<p><a href="help/network.html">Benutzung von Netzwerk-Druckern</a></p>
<p><a href="help/man-cupsd.conf.html">cupsd.conf Referenz</a></p>
</div>
<div class="thirds">
<h2>CUPS für Entwickler</h2>
<p><a href="help/api-overview.html">Einführung in die CUPS Programmierung</a></p>
<p><a href="help/api-cups.html">CUPS API</a></p>
<p><a href="help/api-filter.html">Filter und Backend Programmierung</a></p>
<p><a href="help/api-httpipp.html">HTTP und IPP APIs</a></p>
<p><a href="http://www.cups.org/lists.php?LIST=cups-devel">Entwicklerforum</a></p>
</div>
</div>
</div>
<div class="footer">CUPS und das CUPS Logo sind Warenzeichen der <a href="http://www.apple.com">Apple Inc.</a> Copyright &copy; 2007-2015 Apple Inc. Alle Rechte vorbehalten.</div>
</body>
</html>
+3 -2
Ver Arquivo
@@ -240,7 +240,8 @@ The following percent sequences are recognized:
"%u" inserts the username.
</pre>
The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".
The default is the empty string, which disables page logging.
The string "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}" creates a page log with the standard items.
<dt><a name="PassEnv"></a><b>PassEnv </b><i>variable </i>[ ... <i>variable </i>]
<dd style="margin-left: 5.0em">Passes the specified environment variable(s) to child processes.
<dt><a name="Policy"></a><b>&lt;Policy </b><i>name</i><b>> </b>... <b>&lt;/Policy></b>
@@ -588,7 +589,7 @@ Require authentication for accesses from outside the 10. network:
<a href="man-subscriptions.conf.html?TOPIC=Man+Pages"><b>subscriptions.conf</b>(5),</a>
CUPS Online Help (<a href="http://localhost:631/help">http://localhost:631/help</a>)
<h2 class="title"><a name="COPYRIGHT">Copyright</a></h2>
Copyright &copy; 2007-2014 by Apple Inc.
Copyright &copy; 2007-2015 by Apple Inc.
</body>
</html>
+1 -1
Ver Arquivo
@@ -14,7 +14,7 @@
<H2 CLASS="title"><A NAME="OVERVIEW">Overview</A></H2>
<P>CUPS is developed by Apple Inc. and distributed as open source software under a combination of GNU GPL2 and GNU LGPL2 licenses with exceptions to allow linking to OpenSSL (which has a GPL-incompatible license) and for developers on Apple's operating systems to develop CUPS-based software until alternate license terms. Significant contributions to CUPS must be licensed to Apple using the <A HREF="https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf">Apple Contributor Agreement</A>.</P>
<P>CUPS is developed by Apple Inc. and distributed as open source software under a combination of GNU GPL2 and GNU LGPL2 licenses with exceptions to allow linking to OpenSSL (which has a GPL-incompatible license) and for developers on Apple's operating systems to develop CUPS-based software under alternate license terms. Significant contributions to CUPS must be licensed to Apple using the <A HREF="https://www.cups.org/AppleContributorAgreement_2011-03-10.pdf">Apple Contributor Agreement</A>.</P>
<P>Apple releases updates to the CUPS software approximately every three months. Each release has a version number consisting of the major version (currently 1), minor version (currently 6), and patch version (starting at 0) separated by the period, for example "1.6.0". Releases where only the patch version number changes will contain only bug fixes to the previous release, for example "1.6.1" includes bug fixes for the "1.6.0" release. New features require the major or minor version numbers to change, for example "1.6.0" release contains new features compared to the "1.5.3" release. Multiple beta and "candidate" releases generally precede each new feature release, for example "1.5b1", "1.5b2", and "1.5rc1" preceded the "1.5.0" release. Finally, we also post regular Subversion snapshot releases, for example "1.6svn-r10486", which represent a snapshot of the development for the next feature release.</P>
Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 6.6 KiB

+56
Ver Arquivo
@@ -0,0 +1,56 @@
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="/cups.css" type="text/css">
<link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta name="viewport" content="width=device-width">
<title>Home - CUPS @CUPS_VERSION@@CUPS_REVISION@</title>
</head>
<body>
<div class="header">
<ul>
<li><a href="http://www.cups.org/" target="_blank">CUPS.org</a></li>
<li><a class="active" href="/">Начало</a></li>
<li><a href="/admin">Администрирование</a></li>
<li><a href="/classes/">Группы</a></li>
<li><a href="/help/">Справка</a></li>
<li><a href="/jobs/">Задания</a></li>
<li><a href="/printers/">Принтеры</a></li>
</ul>
</div>
<div class="body">
<div class="row">
<h1>CUPS 2.0.1</h1>
<P>CUPS — поддерживающая большинство стандартов, свободная подсистема печати, разрабатываемая компанией <A HREF="http://www.apple.com/">Apple Inc.</A> для операционной системы Mac OS<SUP>&reg;</SUP> X и других UNIX<SUP>&reg;</SUP>-подобных операционных систем.</P>
</div>
<div class="row">
<div class="thirds">
<H2>CUPS для пользователей</H2>
<P><A HREF="help/overview.html">Введение в CUPS</A></P>
<P><A HREF="help/options.html">Печать из командной строки</A></P>
<P><A HREF="http://www.cups.org/lists.php?LIST=cups">Форум пользователей</A></P>
</div>
<div class="thirds">
<H2>CUPS для администраторов</H2>
<P><A HREF="admin">Добавление принтеров и групп</A></P>
<P><A HREF="help/policies.html">Управление доступом</A></P>
<P><A HREF="help/network.html">Использование сетевых принтеров</A></P>
<p><a href="help/man-cupsd.conf.html">Справочник по cupsd.conf</a></p>
</div>
<div class="thirds">
<H2>CUPS для разработчиков</H2>
<P><A HREF="help/api-overview.html">Введение в разработку CUPS</A></P>
<P><A HREF="help/api-cups.html">CUPS API</A></P>
<P><A HREF="help/api-filter.html">Разработка фильтров и модулей</A></P>
<P><A HREF="help/api-httpipp.html">API доступа по HTTP и IPP</A></P>
<P><A HREF="http://www.cups.org/lists.php?LIST=cups-devel">Форум разработчиков</A></P>
</div>
</div>
</div>
<div class="footer">CUPS а также логотип CUPS являются зарегистрированными торговыми марками <A HREF="http://www.apple.com">Apple Inc.</A> Авторские права на CUPS принадлежат (2007-2014) компании Apple Inc. Все права защищены.</div>
</body>
</html>
+12 -9
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: error.c 11558 2014-02-06 18:33:34Z msweet $"
* "$Id: error.c 12748 2015-06-24 15:58:40Z msweet $"
*
* Raster error handling for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -56,6 +56,8 @@ _cupsRasterAddError(const char *f, /* I - Printf-style error message */
ssize_t bytes; /* Bytes in message string */
DEBUG_printf(("_cupsRasterAddError(f=\"%s\", ...)", f));
va_start(ap, f);
bytes = vsnprintf(s, sizeof(s), f, ap);
va_end(ap);
@@ -63,6 +65,8 @@ _cupsRasterAddError(const char *f, /* I - Printf-style error message */
if (bytes <= 0)
return;
DEBUG_printf(("1_cupsRasterAddError: %s", s));
bytes ++;
if ((size_t)bytes >= sizeof(s))
@@ -185,7 +189,7 @@ get_error_buffer(void)
* Initialize the global data exactly once...
*/
DEBUG_puts("get_error_buffer()");
DEBUG_puts("3get_error_buffer()");
pthread_once(&raster_key_once, raster_init);
@@ -196,7 +200,7 @@ get_error_buffer(void)
if ((buf = (_cups_raster_error_t *)pthread_getspecific(raster_key))
== NULL)
{
DEBUG_puts("get_error_buffer: allocating memory for thread...");
DEBUG_puts("4get_error_buffer: allocating memory for thread.");
/*
* No, allocate memory as set the pointer for the key...
@@ -205,7 +209,7 @@ get_error_buffer(void)
buf = calloc(1, sizeof(_cups_raster_error_t));
pthread_setspecific(raster_key, buf);
DEBUG_printf((" buf=%p\n", buf));
DEBUG_printf(("4get_error_buffer: buf=%p", buf));
}
/*
@@ -225,8 +229,7 @@ raster_init(void)
{
pthread_key_create(&raster_key, raster_destructor);
DEBUG_printf(("raster_init(): raster_key=%x(%u)\n", (unsigned)raster_key,
(unsigned)raster_key));
DEBUG_printf(("3raster_init(): raster_key=%x(%u)", (unsigned)raster_key, (unsigned)raster_key));
}
@@ -241,7 +244,7 @@ raster_destructor(void *value) /* I - Data to free */
/* Error buffer */
DEBUG_printf(("raster_destructor(value=%p)\n", value));
DEBUG_printf(("3raster_destructor(value=%p)", value));
if (buf->start)
free(buf->start);
@@ -272,5 +275,5 @@ get_error_buffer(void)
/*
* End of "$Id: error.c 11558 2014-02-06 18:33:34Z msweet $".
* End of "$Id: error.c 12748 2015-06-24 15:58:40Z msweet $".
*/
+15 -7
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: gziptoany.c 11558 2014-02-06 18:33:34Z msweet $"
* "$Id: gziptoany.c 12656 2015-05-22 17:27:37Z msweet $"
*
* GZIP/raw pre-filter for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1993-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -40,7 +40,7 @@ main(int argc, /* I - Number of command-line arguments */
* Check command-line...
*/
if (argc != 7)
if (argc < 6 || argc > 7)
{
_cupsLangPrintf(stderr,
_("Usage: %s job-id user title copies options [file]"),
@@ -62,8 +62,14 @@ main(int argc, /* I - Number of command-line arguments */
* Open the file...
*/
if ((fp = cupsFileOpen(argv[6], "r")) == NULL)
if (argc == 6)
{
copies = 1;
fp = cupsFileStdin();
}
else if ((fp = cupsFileOpen(argv[6], "r")) == NULL)
{
fprintf(stderr, "DEBUG: Unable to open \"%s\".\n", argv[6]);
_cupsLangPrintError("ERROR", _("Unable to open print file"));
return (1);
}
@@ -85,7 +91,8 @@ main(int argc, /* I - Number of command-line arguments */
_cupsLangPrintFilter(stderr, "ERROR",
_("Unable to write uncompressed print data: %s"),
strerror(errno));
cupsFileClose(fp);
if (argc == 7)
cupsFileClose(fp);
return (1);
}
@@ -97,12 +104,13 @@ main(int argc, /* I - Number of command-line arguments */
* Close the file and return...
*/
cupsFileClose(fp);
if (argc == 7)
cupsFileClose(fp);
return (0);
}
/*
* End of "$Id: gziptoany.c 11558 2014-02-06 18:33:34Z msweet $".
* End of "$Id: gziptoany.c 12656 2015-05-22 17:27:37Z msweet $".
*/
+51 -50
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: interpret.c 11848 2014-05-07 00:26:44Z msweet $"
* "$Id: interpret.c 12748 2015-06-24 15:58:40Z msweet $"
*
* PPD command interpreter for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1993-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -91,8 +91,8 @@ static int setpagedevice(_cups_ps_stack_t *st,
cups_page_header2_t *h,
int *preferred_bits);
#ifdef DEBUG
static void DEBUG_object(_cups_ps_obj_t *obj);
static void DEBUG_stack(_cups_ps_stack_t *st);
static void DEBUG_object(const char *prefix, _cups_ps_obj_t *obj);
static void DEBUG_stack(const char *prefix, _cups_ps_stack_t *st);
#endif /* DEBUG */
@@ -547,8 +547,8 @@ _cupsRasterExecPS(
while ((obj = scan_ps(st, &codeptr)) != NULL)
{
#ifdef DEBUG
DEBUG_printf(("_cupsRasterExecPS: Stack (%d objects)\n", st->num_objs));
DEBUG_object(obj);
DEBUG_printf(("_cupsRasterExecPS: Stack (%d objects)", st->num_objs));
DEBUG_object("_cupsRasterExecPS", obj);
#endif /* DEBUG */
switch (obj->type)
@@ -561,11 +561,11 @@ _cupsRasterExecPS(
pop_stack(st);
if (cleartomark_stack(st))
_cupsRasterAddError("cleartomark: Stack underflow!\n");
_cupsRasterAddError("cleartomark: Stack underflow.\n");
#ifdef DEBUG
DEBUG_puts(" dup: ");
DEBUG_stack(st);
DEBUG_puts("1_cupsRasterExecPS: dup");
DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
@@ -577,7 +577,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: copy");
DEBUG_stack(st);
DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
}
break;
@@ -588,7 +588,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: dup");
DEBUG_stack(st);
DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
@@ -600,7 +600,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: index");
DEBUG_stack(st);
DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
}
break;
@@ -611,7 +611,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: pop");
DEBUG_stack(st);
DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
@@ -630,7 +630,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: roll");
DEBUG_stack(st);
DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
}
}
@@ -642,7 +642,7 @@ _cupsRasterExecPS(
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: setpagedevice");
DEBUG_stack(st);
DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
break;
@@ -653,10 +653,9 @@ _cupsRasterExecPS(
break;
case CUPS_PS_OTHER :
_cupsRasterAddError("Unknown operator \"%s\"!\n", obj->value.other);
_cupsRasterAddError("Unknown operator \"%s\".\n", obj->value.other);
error = 1;
DEBUG_printf(("_cupsRasterExecPS: Unknown operator \"%s\"!\n",
obj->value.other));
DEBUG_printf(("_cupsRasterExecPS: Unknown operator \"%s\".", obj->value.other));
break;
}
@@ -675,8 +674,8 @@ _cupsRasterExecPS(
error_stack(st, "Stack not empty:");
#ifdef DEBUG
DEBUG_puts("_cupsRasterExecPS: Stack not empty:");
DEBUG_stack(st);
DEBUG_puts("_cupsRasterExecPS: Stack not empty");
DEBUG_stack("_cupsRasterExecPS", st);
#endif /* DEBUG */
delete_stack(st);
@@ -977,7 +976,7 @@ roll_stack(_cups_ps_stack_t *st, /* I - Stack */
int n; /* Index into array */
DEBUG_printf((" roll_stack(st=%p, s=%d, c=%d)\n", st, s, c));
DEBUG_printf(("3roll_stack(st=%p, s=%d, c=%d)", st, s, c));
/*
* Range check input...
@@ -1435,7 +1434,7 @@ setpagedevice(
* Now pull /name and value pairs from the dictionary...
*/
DEBUG_puts("setpagedevice: Dictionary:");
DEBUG_puts("3setpagedevice: Dictionary:");
for (obj ++; obj < end; obj ++)
{
@@ -1450,8 +1449,8 @@ setpagedevice(
obj ++;
#ifdef DEBUG
DEBUG_printf(("setpagedevice: /%s ", name));
DEBUG_object(obj);
DEBUG_printf(("4setpagedevice: /%s ", name));
DEBUG_object("setpagedevice", obj);
#endif /* DEBUG */
/*
@@ -1601,7 +1600,7 @@ setpagedevice(
* Ignore unknown name+value...
*/
DEBUG_printf((" Unknown name (\"%s\") or value...\n", name));
DEBUG_printf(("4setpagedevice: Unknown name (\"%s\") or value...\n", name));
while (obj[1].type != CUPS_PS_NAME && obj < end)
obj ++;
@@ -1618,91 +1617,92 @@ setpagedevice(
*/
static void
DEBUG_object(_cups_ps_obj_t *obj) /* I - Object to print */
DEBUG_object(const char *prefix, /* I - Prefix string */
_cups_ps_obj_t *obj) /* I - Object to print */
{
switch (obj->type)
{
case CUPS_PS_NAME :
DEBUG_printf(("/%s\n", obj->value.name));
DEBUG_printf(("4%s: /%s\n", prefix, obj->value.name));
break;
case CUPS_PS_NUMBER :
DEBUG_printf(("%g\n", obj->value.number));
DEBUG_printf(("4%s: %g\n", prefix, obj->value.number));
break;
case CUPS_PS_STRING :
DEBUG_printf(("(%s)\n", obj->value.string));
DEBUG_printf(("4%s: (%s)\n", prefix, obj->value.string));
break;
case CUPS_PS_BOOLEAN :
if (obj->value.boolean)
DEBUG_puts("true");
DEBUG_printf(("4%s: true", prefix));
else
DEBUG_puts("false");
DEBUG_printf(("4%s: false", prefix));
break;
case CUPS_PS_NULL :
DEBUG_puts("null");
DEBUG_printf(("4%s: null", prefix));
break;
case CUPS_PS_START_ARRAY :
DEBUG_puts("[");
DEBUG_printf(("4%s: [", prefix));
break;
case CUPS_PS_END_ARRAY :
DEBUG_puts("]");
DEBUG_printf(("4%s: ]", prefix));
break;
case CUPS_PS_START_DICT :
DEBUG_puts("<<");
DEBUG_printf(("4%s: <<", prefix));
break;
case CUPS_PS_END_DICT :
DEBUG_puts(">>");
DEBUG_printf(("4%s: >>", prefix));
break;
case CUPS_PS_START_PROC :
DEBUG_puts("{");
DEBUG_printf(("4%s: {", prefix));
break;
case CUPS_PS_END_PROC :
DEBUG_puts("}");
DEBUG_printf(("4%s: }", prefix));
break;
case CUPS_PS_CLEARTOMARK :
DEBUG_puts("--cleartomark--");
DEBUG_printf(("4%s: --cleartomark--", prefix));
break;
case CUPS_PS_COPY :
DEBUG_puts("--copy--");
DEBUG_printf(("4%s: --copy--", prefix));
break;
case CUPS_PS_DUP :
DEBUG_puts("--dup--");
DEBUG_printf(("4%s: --dup--", prefix));
break;
case CUPS_PS_INDEX :
DEBUG_puts("--index--");
DEBUG_printf(("4%s: --index--", prefix));
break;
case CUPS_PS_POP :
DEBUG_puts("--pop--");
DEBUG_printf(("4%s: --pop--", prefix));
break;
case CUPS_PS_ROLL :
DEBUG_puts("--roll--");
DEBUG_printf(("4%s: --roll--", prefix));
break;
case CUPS_PS_SETPAGEDEVICE :
DEBUG_puts("--setpagedevice--");
DEBUG_printf(("4%s: --setpagedevice--", prefix));
break;
case CUPS_PS_STOPPED :
DEBUG_puts("--stopped--");
DEBUG_printf(("4%s: --stopped--", prefix));
break;
case CUPS_PS_OTHER :
DEBUG_printf(("--%s--\n", obj->value.other));
DEBUG_printf(("4%s: --%s--", prefix, obj->value.other));
break;
}
}
@@ -1713,18 +1713,19 @@ DEBUG_object(_cups_ps_obj_t *obj) /* I - Object to print */
*/
static void
DEBUG_stack(_cups_ps_stack_t *st) /* I - Stack */
DEBUG_stack(const char *prefix, /* I - Prefix string */
_cups_ps_stack_t *st) /* I - Stack */
{
int c; /* Looping var */
_cups_ps_obj_t *obj; /* Current object on stack */
for (obj = st->objs, c = st->num_objs; c > 0; c --, obj ++)
DEBUG_object(obj);
DEBUG_object(prefix, obj);
}
#endif /* DEBUG */
/*
* End of "$Id: interpret.c 11848 2014-05-07 00:26:44Z msweet $".
* End of "$Id: interpret.c 12748 2015-06-24 15:58:40Z msweet $".
*/
+7 -3
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: pstops.c 12358 2014-12-11 17:42:22Z msweet $"
* "$Id: pstops.c 12656 2015-05-22 17:27:37Z msweet $"
*
* PostScript filter for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1993-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -265,7 +265,11 @@ main(int argc, /* I - Number of command-line args */
if ((fp = cupsFileOpen(argv[6], "r")) == NULL)
{
if (!JobCanceled)
{
fprintf(stderr, "DEBUG: Unable to open \"%s\".\n", argv[6]);
_cupsLangPrintError("ERROR", _("Unable to open print file"));
}
return (1);
}
}
@@ -3401,5 +3405,5 @@ write_options(
/*
* End of "$Id: pstops.c 12358 2014-12-11 17:42:22Z msweet $".
* End of "$Id: pstops.c 12656 2015-05-22 17:27:37Z msweet $".
*/
+119 -28
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: raster.c 12453 2015-01-30 15:42:19Z msweet $"
* "$Id: raster.c 12748 2015-06-24 15:58:40Z msweet $"
*
* Raster file routines for CUPS.
*
@@ -50,6 +50,9 @@ struct _cups_raster_s /**** Raster stream data ****/
*bufptr, /* Current (read) position in buffer */
*bufend; /* End of current (read) buffer */
size_t bufsize; /* Buffer size */
#ifdef DEBUG
size_t iocount; /* Number of bytes read/written */
#endif /* DEBUG */
};
@@ -193,7 +196,7 @@ cupsRasterOpenIO(
r->sync == CUPS_RASTER_REVSYNCv2)
r->swapped = 1;
DEBUG_printf(("r->swapped=%d, r->sync=%08x\n", r->swapped, r->sync));
DEBUG_printf(("1cupsRasterOpenIO: r->swapped=%d, r->sync=%08x\n", r->swapped, r->sync));
}
else
{
@@ -287,6 +290,8 @@ cupsRasterReadHeader2(
* Get the raster header...
*/
DEBUG_printf(("cupsRasterReadHeader2(r=%p, h=%p)", r, h));
if (!cups_raster_read_header(r))
{
memset(h, 0, sizeof(cups_page_header2_t));
@@ -325,9 +330,16 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
unsigned count; /* Repetition count */
DEBUG_printf(("cupsRasterReadPixels(r=%p, p=%p, len=%u)", r, p, len));
if (r == NULL || r->mode != CUPS_RASTER_READ || r->remaining == 0 ||
r->header.cupsBytesPerLine == 0)
{
DEBUG_puts("1cupsRasterReadPixels: Returning 0.");
return (0);
}
DEBUG_printf(("1cupsRasterReadPixels: compressed=%d, remaining=%u", r->compressed, r->remaining));
if (!r->compressed)
{
@@ -338,7 +350,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
r->remaining -= len / r->header.cupsBytesPerLine;
if (cups_raster_io(r, p, len) < (ssize_t)len)
{
DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
}
/*
* Swap bytes as needed...
@@ -354,6 +369,8 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
* Return...
*/
DEBUG_printf(("1cupsRasterReadPixels: Returning %u", len));
return (len);
}
@@ -382,7 +399,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
*/
if (!cups_raster_read(r, &byte, 1))
{
DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
}
r->count = (unsigned)byte + 1;
@@ -399,7 +419,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
*/
if (!cups_raster_read(r, &byte, 1))
{
DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
}
if (byte & 128)
{
@@ -413,7 +436,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
count = (unsigned)bytes;
if (!cups_raster_read(r, temp, count))
{
DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
}
temp += count;
bytes -= count;
@@ -434,7 +460,10 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
bytes -= count;
if (!cups_raster_read(r, temp, r->bpp))
{
DEBUG_puts("1cupsRasterReadPixels: Read error, returning 0.");
return (0);
}
temp += r->bpp;
count -= r->bpp;
@@ -506,6 +535,8 @@ cupsRasterReadPixels(cups_raster_t *r, /* I - Raster stream */
p += bytes;
}
DEBUG_printf(("1cupsRasterReadPixels: Returning %u", len));
return (len);
}
@@ -706,14 +737,10 @@ cupsRasterWriteHeader2(
fh.cupsInteger[0] = htonl(r->header.cupsInteger[0]);
fh.cupsInteger[1] = htonl(r->header.cupsInteger[1]);
fh.cupsInteger[2] = htonl(r->header.cupsInteger[2]);
fh.cupsInteger[3] = htonl((unsigned)(r->header.cupsImagingBBox[0] *
r->header.HWResolution[0]));
fh.cupsInteger[4] = htonl((unsigned)(r->header.cupsImagingBBox[1] *
r->header.HWResolution[1]));
fh.cupsInteger[5] = htonl((unsigned)(r->header.cupsImagingBBox[2] *
r->header.HWResolution[0]));
fh.cupsInteger[6] = htonl((unsigned)(r->header.cupsImagingBBox[3] *
r->header.HWResolution[1]));
fh.cupsInteger[3] = htonl((unsigned)(r->header.cupsImagingBBox[0] * r->header.HWResolution[0] / 72.0));
fh.cupsInteger[4] = htonl((unsigned)(r->header.cupsImagingBBox[1] * r->header.HWResolution[1] / 72.0));
fh.cupsInteger[5] = htonl((unsigned)(r->header.cupsImagingBBox[2] * r->header.HWResolution[0] / 72.0));
fh.cupsInteger[6] = htonl((unsigned)(r->header.cupsImagingBBox[3] * r->header.HWResolution[1] / 72.0));
fh.cupsInteger[7] = htonl(0xffffff);
return (cups_raster_io(r, (unsigned char *)&fh, sizeof(fh)) == sizeof(fh));
@@ -799,10 +826,15 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
* Write the byte-swapped buffer...
*/
return ((unsigned)cups_raster_io(r, r->buffer, len));
bytes = cups_raster_io(r, r->buffer, len);
}
else
return ((unsigned)cups_raster_io(r, p, len));
bytes = cups_raster_io(r, p, len);
if (bytes < len)
return (0);
else
return (len);
}
/*
@@ -826,7 +858,7 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
if (memcmp(p, r->pcurrent, (size_t)bytes))
{
if (!cups_raster_write(r, r->pixels))
if (cups_raster_write(r, r->pixels) <= 0)
return (0);
r->count = 0;
@@ -855,10 +887,15 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
r->remaining --;
if (r->remaining == 0)
return ((unsigned)cups_raster_write(r, r->pixels));
{
if (cups_raster_write(r, r->pixels) <= 0)
return (0);
else
return (len);
}
else if (r->count == 256)
{
if (cups_raster_write(r, r->pixels) == 0)
if (cups_raster_write(r, r->pixels) <= 0)
return (0);
r->count = 0;
@@ -895,7 +932,10 @@ cupsRasterWritePixels(cups_raster_t *r, /* I - Raster stream */
r->remaining --;
if (r->remaining == 0)
return ((unsigned)cups_raster_write(r, r->pixels));
{
if (cups_raster_write(r, r->pixels) <= 0)
return (0);
}
}
}
}
@@ -915,9 +955,13 @@ cups_raster_read_header(
size_t len; /* Length for read/swap */
DEBUG_printf(("3cups_raster_read_header(r=%p), r->mode=%d", r, r ? r->mode : 0));
if (r == NULL || r->mode != CUPS_RASTER_READ)
return (0);
DEBUG_printf(("4cups_raster_read_header: r->iocount=" CUPS_LLFMT, CUPS_LLCAST r->iocount));
/*
* Get the length of the raster header...
*/
@@ -927,6 +971,8 @@ cups_raster_read_header(
else
len = sizeof(cups_page_header2_t);
DEBUG_printf(("4cups_raster_read_header: len=%d", (int)len));
/*
* Read the header...
*/
@@ -934,7 +980,10 @@ cups_raster_read_header(
memset(&(r->header), 0, sizeof(r->header));
if (cups_raster_read(r, (unsigned char *)&(r->header), len) < (ssize_t)len)
{
DEBUG_printf(("4cups_raster_read_header: EOF, r->iocount=" CUPS_LLFMT, CUPS_LLCAST r->iocount));
return (0);
}
/*
* Swap bytes as needed...
@@ -946,21 +995,19 @@ cups_raster_read_header(
temp; /* Temporary copy */
DEBUG_puts("Swapping header bytes...");
DEBUG_puts("4cups_raster_read_header: Swapping header bytes.");
for (len = 81, s = &(r->header.AdvanceDistance);
len > 0;
len --, s ++)
{
DEBUG_printf(("%08x =>", *s));
temp = *s;
*s = ((temp & 0xff) << 24) |
((temp & 0xff00) << 8) |
((temp & 0xff0000) >> 8) |
((temp & 0xff000000) >> 24);
DEBUG_printf((" %08x\n", *s));
DEBUG_printf(("4cups_raster_read_header: %08x => %08x", temp, *s));
}
}
@@ -970,7 +1017,9 @@ cups_raster_read_header(
cups_raster_update(r);
return (r->header.cupsBytesPerLine != 0 && r->header.cupsHeight != 0 && (r->header.cupsBytesPerLine % r->bpp) == 0);
DEBUG_printf(("4cups_raster_read_header: cupsBitsPerPixel=%u, cupsBitsPerColor=%u, cupsBytesPerLine=%u, cupsWidth=%u, cupsHeight=%u, r->bpp=%d", r->header.cupsBitsPerPixel, r->header.cupsBitsPerColor, r->header.cupsBytesPerLine, r->header.cupsWidth, r->header.cupsHeight, r->bpp));
return (r->header.cupsBitsPerPixel != 0 && r->header.cupsBitsPerColor != 0 && r->header.cupsBytesPerLine != 0 && r->header.cupsHeight != 0 && (r->header.cupsBytesPerLine % r->bpp) == 0);
}
@@ -987,20 +1036,31 @@ cups_raster_io(cups_raster_t *r, /* I - Raster stream */
total; /* Total bytes read/written */
DEBUG_printf(("4cups_raster_io(r=%p, buf=%p, bytes=" CUPS_LLFMT ")", r, buf, CUPS_LLCAST bytes));
DEBUG_printf(("5cups_raster_io(r=%p, buf=%p, bytes=" CUPS_LLFMT ")", r, buf, CUPS_LLCAST bytes));
for (total = 0; total < (ssize_t)bytes; total += count, buf += count)
{
count = (*r->iocb)(r->ctx, buf, bytes - (size_t)total);
DEBUG_printf(("5cups_raster_io: count=%d, total=%d", (int)count,
(int)total));
DEBUG_printf(("6cups_raster_io: count=%d, total=%d", (int)count, (int)total));
if (count == 0)
{
DEBUG_puts("6cups_raster_io: Returning 0.");
return (0);
}
else if (count < 0)
{
DEBUG_puts("6cups_raster_io: Returning -1 on error.");
return (-1);
}
#ifdef DEBUG
r->iocount += (size_t)count;
#endif /* DEBUG */
}
DEBUG_printf(("6cups_raster_io: Returning " CUPS_LLFMT ".", CUPS_LLCAST total));
return (total);
}
@@ -1019,7 +1079,7 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
total; /* Total bytes read */
DEBUG_printf(("cups_raster_read(r=%p, buf=%p, bytes=" CUPS_LLFMT ")\n", r, buf, CUPS_LLCAST bytes));
DEBUG_printf(("5cups_raster_read(r=%p, buf=%p, bytes=" CUPS_LLFMT ")\n", r, buf, CUPS_LLCAST bytes));
if (!r->compressed)
return (cups_raster_io(r, buf, bytes));
@@ -1029,6 +1089,8 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
*/
count = (ssize_t)(2 * r->header.cupsBytesPerLine);
if (count < 65536)
count = 65536;
if ((size_t)count > r->bufsize)
{
@@ -1061,7 +1123,7 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
{
count = (ssize_t)bytes - total;
DEBUG_printf(("count=" CUPS_LLFMT ", remaining=" CUPS_LLFMT ", buf=%p, bufptr=%p, bufend=%p...\n", CUPS_LLCAST count, CUPS_LLCAST remaining, buf, r->bufptr, r->bufend));
DEBUG_printf(("6cups_raster_read: count=" CUPS_LLFMT ", remaining=" CUPS_LLFMT ", buf=%p, bufptr=%p, bufend=%p", CUPS_LLCAST count, CUPS_LLCAST remaining, buf, r->bufptr, r->bufend));
if (remaining == 0)
{
@@ -1077,6 +1139,10 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
r->bufptr = r->buffer;
r->bufend = r->buffer + remaining;
#ifdef DEBUG
r->iocount += (size_t)remaining;
#endif /* DEBUG */
}
else
{
@@ -1089,6 +1155,10 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
if (count <= 0)
return (0);
#ifdef DEBUG
r->iocount += (size_t)count;
#endif /* DEBUG */
continue;
}
}
@@ -1138,6 +1208,8 @@ cups_raster_read(cups_raster_t *r, /* I - Raster stream */
}
}
DEBUG_printf(("6cups_raster_read: Returning %ld", (long)total));
return (total);
}
@@ -1240,6 +1312,9 @@ cups_raster_update(cups_raster_t *r) /* I - Raster stream */
else
r->bpp = (r->header.cupsBitsPerColor + 7) / 8;
if (r->bpp == 0)
r->bpp = 1;
/*
* Set the number of remaining rows...
*/
@@ -1284,13 +1359,16 @@ cups_raster_write(
count; /* Count */
DEBUG_printf(("cups_raster_write(r=%p, pixels=%p)\n", r, pixels));
DEBUG_printf(("3cups_raster_write(r=%p, pixels=%p)\n", r, pixels));
/*
* Allocate a write buffer as needed...
*/
count = r->header.cupsBytesPerLine * 2;
if (count < 65536)
count = 65536;
if ((size_t)count > r->bufsize)
{
if (r->buffer)
@@ -1299,7 +1377,10 @@ cups_raster_write(
wptr = malloc(count);
if (!wptr)
{
DEBUG_printf(("4cups_raster_write: Unable to allocate " CUPS_LLFMT " bytes for raster buffer: %s", CUPS_LLCAST count, strerror(errno)));
return (-1);
}
r->buffer = wptr;
r->bufsize = count;
@@ -1372,6 +1453,8 @@ cups_raster_write(
}
}
DEBUG_printf(("4cups_raster_write: Writing " CUPS_LLFMT " bytes.", CUPS_LLCAST (wptr - r->buffer)));
return (cups_raster_io(r, r->buffer, (size_t)(wptr - r->buffer)));
}
@@ -1396,7 +1479,12 @@ cups_read_fd(void *ctx, /* I - File descriptor as pointer */
while ((count = read(fd, buf, bytes)) < 0)
#endif /* WIN32 */
if (errno != EINTR && errno != EAGAIN)
{
DEBUG_printf(("4cups_read_fd: %s", strerror(errno)));
return (-1);
}
DEBUG_printf(("4cups_read_fd: Returning %d bytes.", (int)count));
return (count);
}
@@ -1448,12 +1536,15 @@ cups_write_fd(void *ctx, /* I - File descriptor pointer */
while ((count = write(fd, buf, bytes)) < 0)
#endif /* WIN32 */
if (errno != EINTR && errno != EAGAIN)
{
DEBUG_printf(("4cups_write_fd: %s", strerror(errno)));
return (-1);
}
return (count);
}
/*
* End of "$Id: raster.c 12453 2015-01-30 15:42:19Z msweet $".
* End of "$Id: raster.c 12748 2015-06-24 15:58:40Z msweet $".
*/
+17 -5
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: rastertoepson.c 12124 2014-08-28 15:37:22Z msweet $"
* "$Id: rastertoepson.c 12618 2015-05-06 20:28:48Z msweet $"
*
* EPSON ESC/P and ESC/P2 filter for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1993-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -274,7 +274,7 @@ StartPage(
if (header->cupsCompression || DotBytes)
{
if ((CompBuffer = calloc(2, header->cupsWidth)) == NULL)
if ((CompBuffer = calloc(2, header->cupsWidth + 1)) == NULL)
{
fputs("ERROR: Unable to allocate memory\n", stderr);
exit(1);
@@ -655,13 +655,19 @@ OutputLine(
}
for (width = header->cupsWidth, tempptr = CompBuffer;
width > 0;
width > 1;
width -= 2, tempptr += 2, oddptr += DotBytes * 2,
evenptr += DotBytes * 2)
{
evenptr[0] = tempptr[0];
oddptr[0] = tempptr[1];
}
if (width == 1)
{
evenptr[0] = tempptr[0];
oddptr[0] = tempptr[1];
}
}
else
{
@@ -873,6 +879,9 @@ OutputRows(
putchar(0);
}
if (dot_count & 1)
putchar(*ptr);
/*
* Move the head back and print the odd bytes...
*/
@@ -901,6 +910,9 @@ OutputRows(
putchar(0);
putchar(*ptr);
}
if (dot_count & 1)
putchar(0);
}
else
pwrite(dot_ptr, dot_count);
@@ -1138,5 +1150,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: rastertoepson.c 12124 2014-08-28 15:37:22Z msweet $".
* End of "$Id: rastertoepson.c 12618 2015-05-06 20:28:48Z msweet $".
*/
+5 -5
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: rastertohp.c 11558 2014-02-06 18:33:34Z msweet $"
* "$Id: rastertohp.c 12575 2015-03-26 16:36:54Z msweet $"
*
* Hewlett-Packard Page Control Language filter for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1993-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -354,7 +354,7 @@ StartPage(ppd_file_t *ppd, /* I - PPD file */
* Allocate memory for a line of graphics...
*/
if ((Planes[0] = malloc(header->cupsBytesPerLine)) == NULL)
if ((Planes[0] = malloc(header->cupsBytesPerLine + NumPlanes)) == NULL)
{
fputs("ERROR: Unable to allocate memory\n", stderr);
exit(1);
@@ -369,7 +369,7 @@ StartPage(ppd_file_t *ppd, /* I - PPD file */
BitBuffer = NULL;
if (header->cupsCompression)
CompBuffer = malloc(header->cupsBytesPerLine * 2);
CompBuffer = malloc(header->cupsBytesPerLine * 2 + 2);
else
CompBuffer = NULL;
}
@@ -871,5 +871,5 @@ main(int argc, /* I - Number of command-line arguments */
/*
* End of "$Id: rastertohp.c 11558 2014-02-06 18:33:34Z msweet $".
* End of "$Id: rastertohp.c 12575 2015-03-26 16:36:54Z msweet $".
*/
+14 -4
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: rastertopwg.c 11558 2014-02-06 18:33:34Z msweet $"
* "$Id: rastertopwg.c 12610 2015-05-06 12:24:54Z msweet $"
*
* CUPS raster to PWG raster format filter for CUPS.
*
* Copyright 2011, 2014 Apple Inc.
* Copyright 2011, 2014-2015 Apple Inc.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright law.
@@ -401,6 +401,9 @@ main(int argc, /* I - Number of command-line args */
* Copy raster data...
*/
if (linesize < inheader.cupsBytesPerLine)
linesize = inheader.cupsBytesPerLine;
line = malloc(linesize);
memset(line, white, linesize);
@@ -415,7 +418,14 @@ main(int argc, /* I - Number of command-line args */
for (y = inheader.cupsHeight; y > 0; y --)
{
cupsRasterReadPixels(inras, line + lineoffset, inheader.cupsBytesPerLine);
if (cupsRasterReadPixels(inras, line + lineoffset, inheader.cupsBytesPerLine) != inheader.cupsBytesPerLine)
{
_cupsLangPrintFilter(stderr, "ERROR", _("Error reading raster data."));
fprintf(stderr, "DEBUG: Unable to read line %d for page %d.\n",
inheader.cupsHeight - y + page_top + 1, page);
return (1);
}
if (!cupsRasterWritePixels(outras, line, outheader.cupsBytesPerLine))
{
_cupsLangPrintFilter(stderr, "ERROR", _("Error sending raster data."));
@@ -449,5 +459,5 @@ main(int argc, /* I - Number of command-line args */
/*
* End of "$Id: rastertopwg.c 11558 2014-02-06 18:33:34Z msweet $".
* End of "$Id: rastertopwg.c 12610 2015-05-06 12:24:54Z msweet $".
*/
+5730
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+1164 -6065
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+4 -4
Ver Arquivo
@@ -1,9 +1,9 @@
#
# "$Id: Makefile 11919 2014-06-11 15:38:28Z msweet $"
# "$Id: Makefile 12815 2015-07-30 15:03:38Z msweet $"
#
# Man page makefile for CUPS.
#
# Copyright 2007-2014 by Apple Inc.
# Copyright 2007-2015 by Apple Inc.
# Copyright 1993-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -43,6 +43,7 @@ MAN5 = classes.conf.$(MAN5EXT) \
cups-files.conf.$(MAN5EXT) \
cups-snmp.conf.$(MAN5EXT) \
cupsd.conf.$(MAN5EXT) \
cupsd-logs.$(MAN5EXT) \
ipptoolfile.$(MAN5EXT) \
mailto.conf.$(MAN5EXT) \
mime.convs.$(MAN5EXT) \
@@ -61,7 +62,6 @@ MAN8 = cupsaccept.$(MAN8EXT) \
cups-snmp.$(MAN8EXT) \
cupsd.$(MAN8EXT) \
cupsd-helper.$(MAN8EXT) \
cupsd-logs.$(MAN8EXT) \
cupsenable.$(MAN8EXT) \
lpadmin.$(MAN8EXT) \
lpinfo.$(MAN8EXT) \
@@ -228,5 +228,5 @@ mantohtml: mantohtml.o ../cups/$(LIBCUPSSTATIC)
#
# End of "$Id: Makefile 11919 2014-06-11 15:38:28Z msweet $".
# End of "$Id: Makefile 12815 2015-07-30 15:03:38Z msweet $".
#
+7 -6
Ver Arquivo
@@ -1,9 +1,9 @@
.\"
.\" "$Id: cupsd.conf.man.in 12363 2014-12-12 19:51:33Z msweet $"
.\" "$Id: cupsd.conf.man.in 12769 2015-06-30 16:13:48Z msweet $"
.\"
.\" cupsd.conf man page for CUPS.
.\"
.\" Copyright 2007-2014 by Apple Inc.
.\" Copyright 2007-2015 by Apple Inc.
.\" Copyright 1997-2006 by Easy Software Products.
.\"
.\" These coded instructions, statements, and computer programs are the
@@ -12,7 +12,7 @@
.\" which should have been included with this file. If this file is
.\" file is missing or damaged, see the license at "http://www.cups.org/".
.\"
.TH cupsd.conf 5 "CUPS" "20 October 2014" "Apple Inc."
.TH cupsd.conf 5 "CUPS" "30 June 2015" "Apple Inc."
.SH NAME
cupsd.conf \- server configuration file for cups
.SH DESCRIPTION
@@ -369,7 +369,8 @@ The following percent sequences are recognized:
"%u" inserts the username.
.fi
The default is "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}".
The default is the empty string, which disables page logging.
The string "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}" creates a page log with the standard items.
.\"#PassEnv
.TP 5
\fBPassEnv \fIvariable \fR[ ... \fIvariable \fR]
@@ -869,7 +870,7 @@ Require authentication for accesses from outside the 10. network:
.BR subscriptions.conf (5),
CUPS Online Help (http://localhost:631/help)
.SH COPYRIGHT
Copyright \[co] 2007-2014 by Apple Inc.
Copyright \[co] 2007-2015 by Apple Inc.
.\"
.\" End of "$Id: cupsd.conf.man.in 12363 2014-12-12 19:51:33Z msweet $".
.\" End of "$Id: cupsd.conf.man.in 12769 2015-06-30 16:13:48Z msweet $".
.\"
+11 -7
Ver Arquivo
@@ -1,11 +1,11 @@
#
# "$Id: cups.spec.in 12501 2015-02-09 15:23:13Z msweet $"
# "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $"
#
# RPM "spec" file for CUPS.
#
# Original version by Jason McMullan <jmcc@ontv.com>.
#
# Copyright 2007-2014 by Apple Inc.
# Copyright 2007-2015 by Apple Inc.
# Copyright 1999-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -44,12 +44,12 @@
Summary: CUPS
Name: cups
Version: 2.0.2
Version: 2.0.4
Release: 1
Epoch: 1
License: GPL
Group: System Environment/Daemons
Source: http://www.cups.org/software/2.0.2/cups-2.0.2-source.tar.bz2
Source: http://www.cups.org/software/2.0.4/cups-2.0.4-source.tar.bz2
Url: http://www.cups.org
Packager: Anonymous <anonymous@foo.com>
Vendor: Apple Inc.
@@ -268,19 +268,23 @@ rm -rf $RPM_BUILD_ROOT
#/usr/share/doc/cups/ca/*
#%dir /usr/share/doc/cups/cs
#/usr/share/doc/cups/cs/*
%dir /usr/share/doc/cups/de
/usr/share/doc/cups/de/*
%dir /usr/share/doc/cups/es
/usr/share/doc/cups/es/*
#%dir /usr/share/doc/cups/fr
#/usr/share/doc/cups/fr/*
%dir /usr/share/doc/cups/ja
/usr/share/doc/cups/ja/*
#%dir /usr/share/doc/cups/ru
#/usr/share/doc/cups/ru/*
%dir /usr/share/doc/cups/ru
/usr/share/doc/cups/ru/*
%dir /usr/share/locale/ca
/usr/share/locale/ca/cups_ca.po
%dir /usr/share/locale/cs
/usr/share/locale/cs/cups_cs.po
%dir /usr/share/locale/de
/usr/share/locale/de/cups_de.po
%dir /usr/share/locale/es
/usr/share/locale/es/cups_es.po
%dir /usr/share/locale/fr
@@ -395,5 +399,5 @@ rm -rf $RPM_BUILD_ROOT
#
# End of "$Id: cups.spec.in 12501 2015-02-09 15:23:13Z msweet $".
# End of "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $".
#
+9 -5
Ver Arquivo
@@ -1,11 +1,11 @@
#
# "$Id: cups.spec.in 12501 2015-02-09 15:23:13Z msweet $"
# "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $"
#
# RPM "spec" file for CUPS.
#
# Original version by Jason McMullan <jmcc@ontv.com>.
#
# Copyright 2007-2014 by Apple Inc.
# Copyright 2007-2015 by Apple Inc.
# Copyright 1999-2007 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -268,19 +268,23 @@ rm -rf $RPM_BUILD_ROOT
#/usr/share/doc/cups/ca/*
#%dir /usr/share/doc/cups/cs
#/usr/share/doc/cups/cs/*
%dir /usr/share/doc/cups/de
/usr/share/doc/cups/de/*
%dir /usr/share/doc/cups/es
/usr/share/doc/cups/es/*
#%dir /usr/share/doc/cups/fr
#/usr/share/doc/cups/fr/*
%dir /usr/share/doc/cups/ja
/usr/share/doc/cups/ja/*
#%dir /usr/share/doc/cups/ru
#/usr/share/doc/cups/ru/*
%dir /usr/share/doc/cups/ru
/usr/share/doc/cups/ru/*
%dir /usr/share/locale/ca
/usr/share/locale/ca/cups_ca.po
%dir /usr/share/locale/cs
/usr/share/locale/cs/cups_cs.po
%dir /usr/share/locale/de
/usr/share/locale/de/cups_de.po
%dir /usr/share/locale/es
/usr/share/locale/es/cups_es.po
%dir /usr/share/locale/fr
@@ -395,5 +399,5 @@ rm -rf $RPM_BUILD_ROOT
#
# End of "$Id: cups.spec.in 12501 2015-02-09 15:23:13Z msweet $".
# End of "$Id: cups.spec.in 12770 2015-06-30 16:17:56Z msweet $".
#
+4 -4
Ver Arquivo
@@ -1,9 +1,9 @@
#
# "$Id: Makefile 11800 2014-04-08 19:53:57Z msweet $"
# "$Id: Makefile 12616 2015-05-06 20:22:01Z msweet $"
#
# Makefile for the CUPS PPD Compiler.
#
# Copyright 2007-2014 by Apple Inc.
# Copyright 2007-2015 by Apple Inc.
# Copyright 2002-2006 by Easy Software Products.
#
# These coded instructions, statements, and computer programs are the
@@ -354,7 +354,7 @@ libcupsppdc.1.dylib: $(LIBOBJS) ../cups/$(LIBCUPS)
-current_version 1.0.0 \
-compatibility_version 1.0.0 \
-exported_symbols_list t.exp \
$(LIBOBJS) $(LINKCUPS)
$(LIBOBJS) $(LINKCUPS) $(COMMONLIBS)
$(RM) libcupsppdc.dylib t.exp
$(LN) $@ libcupsppdc.dylib
@@ -388,5 +388,5 @@ include Dependencies
#
# End of "$Id: Makefile 11800 2014-04-08 19:53:57Z msweet $".
# End of "$Id: Makefile 12616 2015-05-06 20:22:01Z msweet $".
#
+77 -72
Ver Arquivo
@@ -1,21 +1,16 @@
//
// "$Id: ppdhtml.cxx 3071 2011-03-23 00:05:29Z msweet $"
// "$Id: ppdhtml.cxx 12634 2015-05-15 19:17:07Z msweet $"
//
// PPD to HTML utility for the CUPS PPD Compiler.
// PPD to HTML utility for the CUPS PPD Compiler.
//
// Copyright 2007-2011 by Apple Inc.
// Copyright 2002-2005 by Easy Software Products.
// Copyright 2007-2015 by Apple Inc.
// Copyright 2002-2005 by Easy Software Products.
//
// These coded instructions, statements, and computer programs are the
// property of Apple Inc. and are protected by Federal copyright
// law. Distribution and use rights are outlined in the file "LICENSE.txt"
// which should have been included with this file. If this file is
// file is missing or damaged, see the license at "http://www.cups.org/".
//
// Contents:
//
// main() - Main entry for the PPD to HTML utility.
// usage() - Show usage and exit.
// These coded instructions, statements, and computer programs are the
// property of Apple Inc. and are protected by Federal copyright
// law. Distribution and use rights are outlined in the file "LICENSE.txt"
// which should have been included with this file. If this file is
// file is missing or damaged, see the license at "http://www.cups.org/".
//
//
@@ -58,7 +53,7 @@ main(int argc, // I - Number of command-line arguments
_cupsSetLocale(argv);
// Scan the command-line...
src = 0;
src = new ppdcSource();
for (i = 1; i < argc; i ++)
if (argv[i][0] == '-')
@@ -97,65 +92,75 @@ main(int argc, // I - Number of command-line arguments
else
{
// Open and load the driver info file...
src = new ppdcSource(argv[i]);
// Create a composite group with all of the features from the
// drivers in the info file...
composite = new ppdcGroup("", "");
for (d = (ppdcDriver *)src->drivers->first(); d; d = (ppdcDriver *)src->drivers->next())
for (g = (ppdcGroup *)d->groups->first(); g; g = (ppdcGroup *)d->groups->next())
for (o = (ppdcOption *)g->options->first(); o; o = (ppdcOption *)g->options->next())
{
if ((compo = composite->find_option(o->name->value)) == NULL)
composite->add_option(new ppdcOption(o));
}
puts("<html>");
printf("<head><title>Driver Summary for %s</title></head>\n", argv[i]);
printf("<body><h1>Driver Summary for %s</h1>\n", argv[i]);
printf("<p><table border='1'><thead><tr><th>Printer</th><th>Media Size</th>");
for (compo = (ppdcOption *)composite->options->first(); compo; compo = (ppdcOption *)composite->options->next())
printf("<th>%s</th>", compo->text->value);
puts("</tr></thead><tbody>");
// Write HTML summary...
for (d = (ppdcDriver *)src->drivers->first(); d; d = (ppdcDriver *)src->drivers->next())
{
// Write the summary for this driver...
printf("<tr valign='top'><td nowrap>%s</td><td nowrap>", d->model_name->value);
for (size = (ppdcMediaSize *)d->sizes->first(); size;
size = (ppdcMediaSize *)d->sizes->next())
printf("%s<br>", size->text->value);
printf("</td>");
for (compo = (ppdcOption *)composite->options->first(); compo;
compo = (ppdcOption *)composite->options->next())
if ((o = d->find_option(compo->name->value)) != NULL)
{
printf("<td nowrap>");
for (c = (ppdcChoice *)o->choices->first(); c;
c = (ppdcChoice *)o->choices->next())
printf("%s<br>", c->text->value);
printf("</td>");
}
else
printf("<td>N/A</td>");
puts("</tr>");
}
puts("</tbody></table></p>");
puts("</body>");
puts("</html>");
// Delete the printer driver information...
composite->release();
src->release();
src->read_file(argv[i]);
}
// If no drivers have been loaded, display the program usage message.
if (!src)
if ((d = (ppdcDriver *)src->drivers->first()) != NULL)
{
// Create a composite group with all of the features from the
// drivers in the info file...
composite = new ppdcGroup("", "");
while (d != NULL)
{
for (g = (ppdcGroup *)d->groups->first(); g; g = (ppdcGroup *)d->groups->next())
for (o = (ppdcOption *)g->options->first(); o; o = (ppdcOption *)g->options->next())
{
if ((compo = composite->find_option(o->name->value)) == NULL)
composite->add_option(new ppdcOption(o));
}
d = (ppdcDriver *)src->drivers->next();
}
puts("<html>");
printf("<head><title>Driver Summary for %s</title></head>\n", argv[i]);
printf("<body><h1>Driver Summary for %s</h1>\n", argv[i]);
printf("<p><table border='1'><thead><tr><th>Printer</th><th>Media Size</th>");
for (compo = (ppdcOption *)composite->options->first(); compo; compo = (ppdcOption *)composite->options->next())
printf("<th>%s</th>", compo->text->value);
puts("</tr></thead><tbody>");
// Write HTML summary...
for (d = (ppdcDriver *)src->drivers->first(); d; d = (ppdcDriver *)src->drivers->next())
{
// Write the summary for this driver...
printf("<tr valign='top'><td nowrap>%s</td><td nowrap>", d->model_name->value);
for (size = (ppdcMediaSize *)d->sizes->first(); size;
size = (ppdcMediaSize *)d->sizes->next())
printf("%s<br>", size->text->value);
printf("</td>");
for (compo = (ppdcOption *)composite->options->first(); compo;
compo = (ppdcOption *)composite->options->next())
if ((o = d->find_option(compo->name->value)) != NULL)
{
printf("<td nowrap>");
for (c = (ppdcChoice *)o->choices->first(); c;
c = (ppdcChoice *)o->choices->next())
printf("%s<br>", c->text->value);
printf("</td>");
}
else
printf("<td>N/A</td>");
puts("</tr>");
}
puts("</tbody></table></p>");
puts("</body>");
puts("</html>");
// Delete the printer driver information...
composite->release();
}
else
{
// If no drivers have been loaded, display the program usage message.
usage();
}
src->release();
// Return with no errors.
return (0);
@@ -182,5 +187,5 @@ usage(void)
//
// End of "$Id: ppdhtml.cxx 3071 2011-03-23 00:05:29Z msweet $".
// End of "$Id: ppdhtml.cxx 12634 2015-05-15 19:17:07Z msweet $".
//
+32 -37
Ver Arquivo
@@ -1,22 +1,16 @@
//
// "$Id: ppdpo.cxx 3794 2012-04-23 22:44:16Z msweet $"
// "$Id: ppdpo.cxx 12634 2015-05-15 19:17:07Z msweet $"
//
// PPD file message catalog program for the CUPS PPD Compiler.
// PPD file message catalog program for the CUPS PPD Compiler.
//
// Copyright 2007-2012 by Apple Inc.
// Copyright 2002-2005 by Easy Software Products.
// Copyright 2007-2015 by Apple Inc.
// Copyright 2002-2005 by Easy Software Products.
//
// These coded instructions, statements, and computer programs are the
// property of Apple Inc. and are protected by Federal copyright
// law. Distribution and use rights are outlined in the file "LICENSE.txt"
// which should have been included with this file. If this file is
// file is missing or damaged, see the license at "http://www.cups.org/".
//
// Contents:
//
// main() - Main entry for the PPD compiler.
// add_ui_strings() - Add all UI strings from the driver.
// usage() - Show usage and exit.
// These coded instructions, statements, and computer programs are the
// property of Apple Inc. and are protected by Federal copyright
// law. Distribution and use rights are outlined in the file "LICENSE.txt"
// which should have been included with this file. If this file is
// file is missing or damaged, see the license at "http://www.cups.org/".
//
//
@@ -58,7 +52,7 @@ main(int argc, // I - Number of command-line arguments
// Scan the command-line...
catalog = new ppdcCatalog("en");
src = 0;
src = new ppdcSource();
verbose = 0;
outfile = 0;
@@ -123,24 +117,29 @@ main(int argc, // I - Number of command-line arguments
_("ppdc: Loading driver information file \"%s\"."),
argv[i]);
src = new ppdcSource(argv[i]);
// Add UI strings...
for (d = (ppdcDriver *)src->drivers->first();
d;
d = (ppdcDriver *)src->drivers->next())
{
if (verbose)
_cupsLangPrintf(stderr, _("ppdc: Adding/updating UI text from %s."),
argv[i]);
add_ui_strings(d, catalog);
}
// Delete the printer driver information...
src->release();
src->read_file(argv[i]);
}
// If no drivers have been loaded, display the program usage message.
if ((d = (ppdcDriver *)src->drivers->first()) != NULL)
{
// Add UI strings...
while (d != NULL)
{
if (verbose)
_cupsLangPrintf(stderr, _("ppdc: Adding/updating UI text from %s."), argv[i]);
add_ui_strings(d, catalog);
d = (ppdcDriver *)src->drivers->next();
}
}
else
usage();
// Delete the printer driver information...
src->release();
// Write the message catalog...
if (!outfile)
usage();
@@ -149,10 +148,6 @@ main(int argc, // I - Number of command-line arguments
catalog->release();
// If no drivers have been loaded, display the program usage message.
if (!src)
usage();
// Return with no errors.
return (0);
}
@@ -263,5 +258,5 @@ usage(void)
//
// End of "$Id: ppdpo.cxx 3794 2012-04-23 22:44:16Z msweet $".
// End of "$Id: ppdpo.cxx 12634 2015-05-15 19:17:07Z msweet $".
//
+16 -7
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: auth.c 12124 2014-08-28 15:37:22Z msweet $"
* "$Id: auth.c 12604 2015-05-06 01:43:05Z msweet $"
*
* Authorization routines for the CUPS scheduler.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* This file contains Kerberos support code, copyright 2006 by
@@ -835,7 +835,7 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
* to use it...
*/
if (gss_init_sec_context == NULL)
if (&gss_init_sec_context == NULL)
{
cupsdLogMessage(CUPSD_LOG_WARN,
"[Client %d] GSSAPI/Kerberos authentication failed "
@@ -1375,6 +1375,7 @@ cupsdCopyLocation(
if (loc->location)
temp->location = _cupsStrAlloc(loc->location);
temp->length = loc->length;
temp->limit = loc->limit;
temp->order_type = loc->order_type;
temp->type = loc->type;
@@ -1477,6 +1478,8 @@ cupsdFindBest(const char *path, /* I - Resource path */
CUPSD_AUTH_LIMIT_DELETE,
CUPSD_AUTH_LIMIT_TRACE,
CUPSD_AUTH_LIMIT_ALL,
CUPSD_AUTH_LIMIT_ALL,
CUPSD_AUTH_LIMIT_ALL,
CUPSD_AUTH_LIMIT_ALL
};
@@ -1502,7 +1505,11 @@ cupsdFindBest(const char *path, /* I - Resource path */
*uriptr = '\0';
}
cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdFindBest: uri = \"%s\"...", uri);
if ((uriptr = strchr(uri, '?')) != NULL)
*uriptr = '\0'; /* Drop trailing query string */
if ((uriptr = uri + strlen(uri) - 1) > uri && *uriptr == '/')
*uriptr = '\0'; /* Remove trailing '/' */
/*
* Loop through the list of locations to find a match...
@@ -1512,12 +1519,14 @@ cupsdFindBest(const char *path, /* I - Resource path */
best = NULL;
bestlen = 0;
cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdFindBest: uri = \"%s\", limit=%x...", uri, limit);
for (loc = (cupsd_location_t *)cupsArrayFirst(Locations);
loc;
loc = (cupsd_location_t *)cupsArrayNext(Locations))
{
cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdFindBest: Location %s Limit %x",
loc->location ? loc->location : "nil", loc->limit);
cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdFindBest: Location %s(%d) Limit %x", loc->location ? loc->location : "(null)", (int)loc->length, loc->limit);
if (!strncmp(uri, "/printers/", 10) || !strncmp(uri, "/classes/", 9))
{
@@ -2327,5 +2336,5 @@ to64(char *s, /* O - Output string */
/*
* End of "$Id: auth.c 12124 2014-08-28 15:37:22Z msweet $".
* End of "$Id: auth.c 12604 2015-05-06 01:43:05Z msweet $".
*/
+28 -11
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: client.c 12124 2014-08-28 15:37:22Z msweet $"
* "$Id: client.c 12754 2015-06-24 19:37:53Z msweet $"
*
* Client routines for the CUPS scheduler.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* This file contains Kerberos support code, copyright 2006 by
@@ -484,7 +484,12 @@ cupsdCloseClient(cupsd_client_t *con) /* I - Client to close */
httpClose(con->http);
cupsdClearString(&con->filename);
if (con->filename)
{
unlink(con->filename);
cupsdClearString(&con->filename);
}
cupsdClearString(&con->command);
cupsdClearString(&con->options);
cupsdClearString(&con->query_string);
@@ -585,6 +590,17 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
* connection and we need to shut it down...
*/
if (!httpGetReady(con->http) && recv(httpGetFd(con->http), buf, 1, MSG_PEEK) < 1)
{
/*
* Connection closed...
*/
cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on EOF.");
cupsdCloseClient(con);
return;
}
cupsdLogClient(con, CUPSD_LOG_DEBUG, "Closing on unexpected HTTP read state %s.",
httpStateString(httpGetState(con->http)));
cupsdCloseClient(con);
@@ -1979,12 +1995,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
if (httpGetState(con->http) == HTTP_STATE_POST_SEND)
{
/*
* Don't listen for activity until we decide to do something with this...
*/
cupsdAddSelect(httpGetFd(con->http), NULL, NULL, con);
if (con->file >= 0)
{
fstat(con->file, &filestats);
@@ -2149,6 +2159,9 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
http_status_t code, /* I - Error code */
int auth_type)/* I - Authentication type */
{
char location[HTTP_MAX_VALUE]; /* Location field */
cupsdLogClient(con, CUPSD_LOG_DEBUG2, "cupsdSendError code=%d, auth_type=%d",
code, auth_type);
@@ -2181,8 +2194,12 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
* never disable it in that case.
*/
strlcpy(location, httpGetField(con->http, HTTP_FIELD_LOCATION), sizeof(location));
httpClearFields(con->http);
httpSetField(con->http, HTTP_FIELD_LOCATION, location);
if (code >= HTTP_STATUS_BAD_REQUEST && con->type != CUPSD_AUTH_NEGOTIATE)
httpSetKeepAlive(con->http, HTTP_KEEPALIVE_OFF);
@@ -3656,7 +3673,7 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
snprintf(script_filename, sizeof(script_filename), "SCRIPT_FILENAME=%s%s",
DocumentRoot, script_name + 12);
sprintf(server_port, "SERVER_PORT=%d", con->serverport);
snprintf(server_port, sizeof(server_port), "SERVER_PORT=%d", con->serverport);
if (httpGetField(con->http, HTTP_FIELD_HOST)[0])
{
@@ -4055,5 +4072,5 @@ write_pipe(cupsd_client_t *con) /* I - Client connection */
/*
* End of "$Id: client.c 12124 2014-08-28 15:37:22Z msweet $".
* End of "$Id: client.c 12754 2015-06-24 19:37:53Z msweet $".
*/
+4 -4
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: conf.c 12463 2015-01-30 16:34:31Z msweet $"
* "$Id: conf.c 12701 2015-06-08 18:33:44Z msweet $"
*
* Configuration routines for the CUPS scheduler.
*
@@ -407,7 +407,7 @@ cupsdDefaultAuthType(void)
* to use it...
*/
if (gss_init_sec_context == NULL)
if (&gss_init_sec_context == NULL)
return (default_auth_type = CUPSD_AUTH_BASIC);
# endif /* __APPLE__ */
@@ -993,7 +993,7 @@ cupsdReadConfiguration(void)
* Log the error and reset the group to a safe value...
*/
cupsdLogMessage(CUPSD_LOG_NOTICE,
cupsdLogMessage(CUPSD_LOG_ERROR,
"Group and SystemGroup cannot use the same groups.");
if (FatalErrors & (CUPSD_FATAL_CONFIG | CUPSD_FATAL_PERMISSIONS))
return (0);
@@ -4143,5 +4143,5 @@ set_policy_defaults(cupsd_policy_t *pol)/* I - Policy */
/*
* End of "$Id: conf.c 12463 2015-01-30 16:34:31Z msweet $".
* End of "$Id: conf.c 12701 2015-06-08 18:33:44Z msweet $".
*/
+6 -4
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: cups-lpd.c 11594 2014-02-14 20:09:01Z msweet $"
* "$Id: cups-lpd.c 12612 2015-05-06 15:30:50Z msweet $"
*
* Line Printer Daemon interface for CUPS.
*
@@ -219,8 +219,10 @@ main(int argc, /* I - Number of command-line arguments */
* resource list, and/or user name.
*/
command = line[0];
dest = line + 1;
if ((command = line[0]) == '\0')
dest = line;
else
dest = line + 1;
if (command == 0x02)
list = NULL;
@@ -1612,5 +1614,5 @@ smart_gets(char *s, /* I - Pointer to line buffer */
/*
* End of "$Id: cups-lpd.c 11594 2014-02-14 20:09:01Z msweet $".
* End of "$Id: cups-lpd.c 12612 2015-05-06 15:30:50Z msweet $".
*/
+17 -21
Ver Arquivo
@@ -1,27 +1,16 @@
/*
* "$Id: env.c 10996 2013-05-29 11:51:34Z msweet $"
* "$Id: env.c 12701 2015-06-08 18:33:44Z msweet $"
*
* Environment management routines for the CUPS scheduler.
* Environment management routines for the CUPS scheduler.
*
* Copyright 2007-2011 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
* Copyright 2007-2014 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
*
* Contents:
*
* cupsdInitEnv() - Initialize the current environment with standard
* variables.
* cupsdLoadEnv() - Copy common environment variables into an array.
* cupsdSetEnv() - Set a common environment variable.
* cupsdSetEnvf() - Set a formatted common environment variable.
* cupsdUpdateEnv() - Update the environment for the configured directories.
* clear_env() - Clear common environment variables.
* find_env() - Find a common environment variable.
* These coded instructions, statements, and computer programs are the
* property of Apple Inc. and are protected by Federal copyright
* law. Distribution and use rights are outlined in the file "LICENSE.txt"
* which should have been included with this file. If this file is
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
/*
@@ -130,6 +119,13 @@ cupsdSetEnv(const char *name, /* I - Name of variable */
if (!value)
return;
/*
* Do not allow dynamic linker variables when running as root...
*/
if (!RunUser && (!strncmp(name, "DYLD_", 5) || !strncmp(name, "LD_", 3)))
return;
/*
* See if this variable has already been defined...
*/
@@ -269,5 +265,5 @@ find_env(const char *name) /* I - Variable name */
/*
* End of "$Id: env.c 10996 2013-05-29 11:51:34Z msweet $".
* End of "$Id: env.c 12701 2015-06-08 18:33:44Z msweet $".
*/
+27 -74
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: ipp.c 12124 2014-08-28 15:37:22Z msweet $"
* "$Id: ipp.c 12778 2015-07-07 17:28:51Z msweet $"
*
* IPP routines for the CUPS scheduler.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* This file contains Kerberos support code, copyright 2006 by
@@ -409,8 +409,7 @@ cupsdProcessIPPRequest(
* Remote unauthenticated user masquerading as local root...
*/
_cupsStrFree(username->values[0].string.text);
username->values[0].string.text = _cupsStrAlloc(RemoteRoot);
ippSetString(con->request, &username, 0, RemoteRoot);
}
}
@@ -1556,7 +1555,7 @@ add_job(cupsd_client_t *con, /* I - Client connection */
cupsdSetString(&job->username, con->username);
if (attr)
cupsdSetString(&attr->values[0].string.text, con->username);
ippSetString(job->attrs, &attr, 0, con->username);
}
else if (attr)
{
@@ -1574,9 +1573,8 @@ add_job(cupsd_client_t *con, /* I - Client connection */
"job-originating-user-name", NULL, job->username);
else
{
attr->group_tag = IPP_TAG_JOB;
_cupsStrFree(attr->name);
attr->name = _cupsStrAlloc("job-originating-user-name");
ippSetGroupTag(job->attrs, &attr, IPP_TAG_JOB);
ippSetName(job->attrs, &attr, "job-originating-user-name");
}
if (con->username[0] || auth_info)
@@ -1610,48 +1608,11 @@ add_job(cupsd_client_t *con, /* I - Client connection */
* Also, we can only have 1 value and it must be a name value.
*/
switch (attr->value_tag)
{
case IPP_TAG_STRING :
case IPP_TAG_TEXTLANG :
case IPP_TAG_NAMELANG :
case IPP_TAG_TEXT :
case IPP_TAG_NAME :
case IPP_TAG_KEYWORD :
case IPP_TAG_URI :
case IPP_TAG_URISCHEME :
case IPP_TAG_CHARSET :
case IPP_TAG_LANGUAGE :
case IPP_TAG_MIMETYPE :
/*
* Free old strings...
*/
for (i = 0; i < attr->num_values; i ++)
{
_cupsStrFree(attr->values[i].string.text);
attr->values[i].string.text = NULL;
if (attr->values[i].string.language)
{
_cupsStrFree(attr->values[i].string.language);
attr->values[i].string.language = NULL;
}
}
default :
break;
}
/*
* Use the default connection hostname instead...
*/
attr->value_tag = IPP_TAG_NAME;
attr->num_values = 1;
attr->values[0].string.text = _cupsStrAlloc(con->http->hostname);
ippDeleteAttribute(job->attrs, attr);
ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-originating-host-name", NULL, con->http->hostname);
}
attr->group_tag = IPP_TAG_JOB;
else
ippSetGroupTag(job->attrs, &attr, IPP_TAG_JOB);
}
else
{
@@ -1747,8 +1708,8 @@ add_job(cupsd_client_t *con, /* I - Client connection */
attr = ippAddStrings(job->attrs, IPP_TAG_JOB, IPP_TAG_NAME, "job-sheets",
2, NULL, NULL);
attr->values[0].string.text = _cupsStrRetain(printer->job_sheets[0]);
attr->values[1].string.text = _cupsStrRetain(printer->job_sheets[1]);
ippSetString(job->attrs, &attr, 0, printer->job_sheets[0]);
ippSetString(job->attrs, &attr, 1, printer->job_sheets[1]);
}
job->job_sheets = attr;
@@ -1774,7 +1735,7 @@ add_job(cupsd_client_t *con, /* I - Client connection */
* Force the leading banner to have the classification on it...
*/
cupsdSetString(&attr->values[0].string.text, Classification);
ippSetString(job->attrs, &attr, 0, Classification);
cupsdLogJob(job, CUPSD_LOG_NOTICE, "CLASSIFICATION FORCED "
"job-sheets=\"%s,none\", "
@@ -1791,7 +1752,7 @@ add_job(cupsd_client_t *con, /* I - Client connection */
* Can't put two different security markings on the same document!
*/
cupsdSetString(&attr->values[1].string.text, attr->values[0].string.text);
ippSetString(job->attrs, &attr, 1, attr->values[0].string.text);
cupsdLogJob(job, CUPSD_LOG_NOTICE, "CLASSIFICATION FORCED "
"job-sheets=\"%s,%s\", "
@@ -1831,18 +1792,18 @@ add_job(cupsd_client_t *con, /* I - Client connection */
if (attr->num_values > 1 &&
!strcmp(attr->values[0].string.text, attr->values[1].string.text))
{
cupsdSetString(&(attr->values[0].string.text), Classification);
cupsdSetString(&(attr->values[1].string.text), Classification);
ippSetString(job->attrs, &attr, 0, Classification);
ippSetString(job->attrs, &attr, 1, Classification);
}
else
{
if (attr->num_values == 1 ||
strcmp(attr->values[0].string.text, "none"))
cupsdSetString(&(attr->values[0].string.text), Classification);
ippSetString(job->attrs, &attr, 0, Classification);
if (attr->num_values > 1 &&
strcmp(attr->values[1].string.text, "none"))
cupsdSetString(&(attr->values[1].string.text), Classification);
ippSetString(job->attrs, &attr, 1, Classification);
}
if (attr->num_values > 1)
@@ -3069,8 +3030,8 @@ authenticate_job(cupsd_client_t *con, /* I - Client connection */
if (attr)
{
attr->value_tag = IPP_TAG_KEYWORD;
cupsdSetString(&(attr->values[0].string.text), "no-hold");
ippSetValueTag(job->attrs, &attr, IPP_TAG_KEYWORD);
ippSetString(job->attrs, &attr, 0, "no-hold");
}
/*
@@ -3323,6 +3284,8 @@ cancel_all_jobs(cupsd_client_t *con, /* I - Client connection */
}
con->response->request.status.status_code = IPP_OK;
cupsdCheckJobs();
}
@@ -8191,11 +8154,7 @@ print_job(cupsd_client_t *con, /* I - Client connection */
filetype->type);
if (format)
{
_cupsStrFree(format->values[0].string.text);
format->values[0].string.text = _cupsStrAlloc(mimetype);
}
ippSetString(con->request, &format, 0, mimetype);
else
ippAddString(con->request, IPP_TAG_JOB, IPP_TAG_MIMETYPE,
"document-format", NULL, mimetype);
@@ -8732,10 +8691,8 @@ release_job(cupsd_client_t *con, /* I - Client connection */
if (attr)
{
_cupsStrFree(attr->values[0].string.text);
attr->value_tag = IPP_TAG_KEYWORD;
attr->values[0].string.text = _cupsStrAlloc("no-hold");
ippSetValueTag(job->attrs, &attr, IPP_TAG_KEYWORD);
ippSetString(job->attrs, &attr, 0, "no-hold");
cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED, cupsdFindDest(job->dest), job,
"Job job-hold-until value changed by user.");
@@ -9425,11 +9382,7 @@ send_document(cupsd_client_t *con, /* I - Client connection */
if ((jformat = ippFindAttribute(job->attrs, "document-format",
IPP_TAG_MIMETYPE)) != NULL)
{
_cupsStrFree(jformat->values[0].string.text);
jformat->values[0].string.text = _cupsStrAlloc(mimetype);
}
ippSetString(job->attrs, &jformat, 0, mimetype);
else
ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_MIMETYPE,
"document-format", NULL, mimetype);
@@ -11096,5 +11049,5 @@ validate_user(cupsd_job_t *job, /* I - Job */
/*
* End of "$Id: ipp.c 12124 2014-08-28 15:37:22Z msweet $".
* End of "$Id: ipp.c 12778 2015-07-07 17:28:51Z msweet $".
*/
+17 -22
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: job.c 12463 2015-01-30 16:34:31Z msweet $"
* "$Id: job.c 12778 2015-07-07 17:28:51Z msweet $"
*
* Job management routines for the CUPS scheduler.
*
@@ -213,8 +213,6 @@ cupsdCancelJobs(const char *dest, /* I - Destination to cancel */
"Job canceled by user.");
}
}
cupsdCheckJobs();
}
@@ -377,7 +375,7 @@ cupsdCheckJobs(void)
if ((attr = ippFindAttribute(job->attrs, "job-actual-printer-uri",
IPP_TAG_URI)) != NULL)
cupsdSetString(&attr->values[0].string.text, printer->uri);
ippSetString(job->attrs, &attr, 0, printer->uri);
else
ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_URI,
"job-actual-printer-uri", NULL, printer->uri);
@@ -392,7 +390,9 @@ cupsdCheckJobs(void)
* Start the job...
*/
cupsArraySave(ActiveJobs);
start_job(job, printer);
cupsArrayRestore(ActiveJobs);
}
}
}
@@ -2066,7 +2066,7 @@ cupsdMoveJob(cupsd_job_t *job, /* I - Job */
if ((attr = ippFindAttribute(job->attrs, "job-printer-uri",
IPP_TAG_URI)) != NULL)
cupsdSetString(&(attr->values[0].string.text), p->uri);
ippSetString(job->attrs, &attr, 0, p->uri);
cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, p, job,
"Job #%d moved from %s to %s.", job->id, olddest,
@@ -2263,7 +2263,7 @@ cupsdSetJobHoldUntil(cupsd_job_t *job, /* I - Job */
attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
if (attr)
cupsdSetString(&(attr->values[0].string.text), when);
ippSetString(job->attrs, &attr, 0, when);
else
attr = ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_KEYWORD,
"job-hold-until", NULL, when);
@@ -2518,8 +2518,8 @@ cupsdSetJobState(
if (attr)
{
attr->value_tag = IPP_TAG_KEYWORD;
cupsdSetString(&(attr->values[0].string.text), "no-hold");
ippSetValueTag(job->attrs, &attr, IPP_TAG_KEYWORD);
ippSetString(job->attrs, &attr, 0, "no-hold");
}
default :
@@ -3491,13 +3491,6 @@ finalize_job(cupsd_job_t *job, /* I - Job */
job->printer->job = NULL;
job->printer = NULL;
/*
* Try printing another job...
*/
if (printer_state != IPP_PRINTER_STOPPED)
cupsdCheckJobs();
}
@@ -4565,7 +4558,7 @@ start_job(cupsd_job_t *job, /* I - Job ID */
"job-printer-state-message",
IPP_TAG_TEXT);
if (job->printer_message)
cupsdSetString(&(job->printer_message->values[0].string.text), "");
ippSetString(job->attrs, &job->printer_message, 0, "");
ippSetString(job->attrs, &job->reasons, 0, "job-printing");
cupsdSetJobState(job, IPP_JOB_PROCESSING, CUPSD_JOB_DEFAULT, NULL);
@@ -4804,6 +4797,8 @@ update_job(cupsd_job_t *job) /* I - Job to check */
*ptr; /* Pointer update... */
int loglevel, /* Log level for message */
event = 0; /* Events? */
cupsd_printer_t *printer = job->printer;
/* Printer */
static const char * const levels[] = /* Log levels */
{
"NONE",
@@ -5157,10 +5152,11 @@ update_job(cupsd_job_t *job) /* I - Job to check */
finalize_job(job, 1);
/*
* Check for new jobs...
* Try printing another job...
*/
cupsdCheckJobs();
if (printer->state != IPP_PRINTER_STOPPED)
cupsdCheckJobs();
}
}
@@ -5205,15 +5201,14 @@ update_job_attrs(cupsd_job_t *job, /* I - Job to update */
if (job->state_value != IPP_JOB_PROCESSING &&
job->status_level == CUPSD_LOG_INFO)
{
cupsdSetString(&(job->printer_message->values[0].string.text), "");
ippSetString(job->attrs, &job->printer_message, 0, "");
job->dirty = 1;
cupsdMarkDirty(CUPSD_DIRTY_JOBS);
}
else if (job->printer->state_message[0] && do_message)
{
cupsdSetString(&(job->printer_message->values[0].string.text),
job->printer->state_message);
ippSetString(job->attrs, &job->printer_message, 0, job->printer->state_message);
job->dirty = 1;
cupsdMarkDirty(CUPSD_DIRTY_JOBS);
@@ -5281,5 +5276,5 @@ update_job_attrs(cupsd_job_t *job, /* I - Job to update */
/*
* End of "$Id: job.c 12463 2015-01-30 16:34:31Z msweet $".
* End of "$Id: job.c 12778 2015-07-07 17:28:51Z msweet $".
*/
+11 -12
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: main.c 12248 2014-11-12 16:32:57Z msweet $"
* "$Id: main.c 12701 2015-06-08 18:33:44Z msweet $"
*
* Main loop for the CUPS scheduler.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -1137,8 +1137,8 @@ cupsdAddString(cups_array_t **a, /* IO - String array */
if (!*a)
*a = cupsArrayNew3((cups_array_func_t)strcmp, NULL,
(cups_ahash_func_t)NULL, 0,
(cups_acopy_func_t)_cupsStrAlloc,
(cups_afree_func_t)_cupsStrFree);
(cups_acopy_func_t)strdup,
(cups_afree_func_t)free);
return (cupsArrayAdd(*a, (char *)s));
}
@@ -1168,7 +1168,7 @@ cupsdClearString(char **s) /* O - String value */
{
if (s && *s)
{
_cupsStrFree(*s);
free(*s);
*s = NULL;
}
}
@@ -1249,10 +1249,10 @@ cupsdSetString(char **s, /* O - New string */
return;
if (*s)
_cupsStrFree(*s);
free(*s);
if (v)
*s = _cupsStrAlloc(v);
*s = strdup(v);
else
*s = NULL;
}
@@ -1283,13 +1283,13 @@ cupsdSetStringf(char **s, /* O - New string */
vsnprintf(v, sizeof(v), f, ap);
va_end(ap);
*s = _cupsStrAlloc(v);
*s = strdup(v);
}
else
*s = NULL;
if (olds)
_cupsStrFree(olds);
free(olds);
}
@@ -1449,8 +1449,7 @@ process_children(void)
}
if (job->printer_message)
cupsdSetString(&(job->printer_message->values[0].string.text),
message);
ippSetString(job->attrs, &job->printer_message, 0, message);
}
}
@@ -2173,5 +2172,5 @@ usage(int status) /* O - Exit status */
/*
* End of "$Id: main.c 12248 2014-11-12 16:32:57Z msweet $".
* End of "$Id: main.c 12701 2015-06-08 18:33:44Z msweet $".
*/
+3 -3
Ver Arquivo
@@ -1,5 +1,5 @@
/*
* "$Id: process.c 12471 2015-02-01 05:07:10Z msweet $"
* "$Id: process.c 12522 2015-02-17 20:01:33Z msweet $"
*
* Process management routines for the CUPS scheduler.
*
@@ -606,7 +606,7 @@ cupsdStartProcess(
if (infd != 0)
{
if (infd < 0)
posix_spawn_file_actions_addopen(&actions, 0, "/dev/null", O_WRONLY, 0);
posix_spawn_file_actions_addopen(&actions, 0, "/dev/null", O_RDONLY, 0);
else
posix_spawn_file_actions_adddup2(&actions, infd, 0);
}
@@ -890,5 +890,5 @@ cupsd_requote(char *dst, /* I - Destination buffer */
/*
* End of "$Id: process.c 12471 2015-02-01 05:07:10Z msweet $".
* End of "$Id: process.c 12522 2015-02-17 20:01:33Z msweet $".
*/
+38 -5
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: type.c 11594 2014-02-14 20:09:01Z msweet $"
* "$Id: type.c 12578 2015-03-30 19:07:29Z msweet $"
*
* MIME typing routines for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -613,8 +613,23 @@ mimeFileType(mime_t *mime, /* I - MIME database */
return (NULL);
}
fb.offset = -1;
fb.length = 0;
/*
* Then preload the first MIME_MAX_BUFFER bytes of the file into the file
* buffer, returning an error if we can't read anything...
*/
fb.offset = 0;
fb.length = (int)cupsFileRead(fb.fp, (char *)fb.buffer, MIME_MAX_BUFFER);
if (fb.length <= 0)
{
DEBUG_printf(("1mimeFileType: Unable to read from \"%s\": %s", pathname, strerror(errno)));
DEBUG_puts("1mimeFileType: Returning NULL.");
cupsFileClose(fb.fp);
return (NULL);
}
/*
* Figure out the base filename (without directory portion)...
@@ -780,6 +795,8 @@ mime_check_rules(
fb->length = cupsFileRead(fb->fp, (char *)fb->buffer,
sizeof(fb->buffer));
fb->offset = rules->offset;
DEBUG_printf(("4mime_check_rules: MIME_MAGIC_ASCII fb->length=%d", fb->length));
}
/*
@@ -822,6 +839,8 @@ mime_check_rules(
fb->length = cupsFileRead(fb->fp, (char *)fb->buffer,
sizeof(fb->buffer));
fb->offset = rules->offset;
DEBUG_printf(("4mime_check_rules: MIME_MAGIC_PRINTABLE fb->length=%d", fb->length));
}
/*
@@ -870,6 +889,8 @@ mime_check_rules(
sizeof(fb->buffer));
fb->offset = rules->offset;
DEBUG_printf(("4mime_check_rules: MIME_MAGIC_REGEX fb->length=%d", fb->length));
DEBUG_printf(("5mime_check_rules: loaded %d byte fb->buffer at %d, starts "
"with \"%c%c%c%c\".",
fb->length, fb->offset, fb->buffer[0], fb->buffer[1],
@@ -914,6 +935,8 @@ mime_check_rules(
sizeof(fb->buffer));
fb->offset = rules->offset;
DEBUG_printf(("4mime_check_rules: MIME_MAGIC_STRING fb->length=%d", fb->length));
DEBUG_printf(("5mime_check_rules: loaded %d byte fb->buffer at %d, starts "
"with \"%c%c%c%c\".",
fb->length, fb->offset, fb->buffer[0], fb->buffer[1],
@@ -948,6 +971,8 @@ mime_check_rules(
fb->length = cupsFileRead(fb->fp, (char *)fb->buffer,
sizeof(fb->buffer));
fb->offset = rules->offset;
DEBUG_printf(("4mime_check_rules: MIME_MAGIC_ISTRING fb->length=%d", fb->length));
}
/*
@@ -976,6 +1001,8 @@ mime_check_rules(
fb->length = cupsFileRead(fb->fp, (char *)fb->buffer,
sizeof(fb->buffer));
fb->offset = rules->offset;
DEBUG_printf(("4mime_check_rules: MIME_MAGIC_CHAR fb->length=%d", fb->length));
}
/*
@@ -1006,6 +1033,8 @@ mime_check_rules(
fb->length = cupsFileRead(fb->fp, (char *)fb->buffer,
sizeof(fb->buffer));
fb->offset = rules->offset;
DEBUG_printf(("4mime_check_rules: MIME_MAGIC_SHORT fb->length=%d", fb->length));
}
/*
@@ -1039,6 +1068,8 @@ mime_check_rules(
fb->length = cupsFileRead(fb->fp, (char *)fb->buffer,
sizeof(fb->buffer));
fb->offset = rules->offset;
DEBUG_printf(("4mime_check_rules: MIME_MAGIC_INT fb->length=%d", fb->length));
}
/*
@@ -1080,6 +1111,8 @@ mime_check_rules(
fb->length = cupsFileRead(fb->fp, (char *)fb->buffer,
sizeof(fb->buffer));
fb->offset = rules->offset;
DEBUG_printf(("4mime_check_rules: MIME_MAGIC_CONTAINS fb->length=%d", fb->length));
}
/*
@@ -1246,5 +1279,5 @@ mime_patmatch(const char *s, /* I - String to match against */
/*
* End of "$Id: type.c 11594 2014-02-14 20:09:01Z msweet $".
* End of "$Id: type.c 12578 2015-03-30 19:07:29Z msweet $".
*/
+44 -9
Ver Arquivo
@@ -1,9 +1,9 @@
/*
* "$Id: lpadmin.c 11558 2014-02-06 18:33:34Z msweet $"
* "$Id: lpadmin.c 12604 2015-05-06 01:43:05Z msweet $"
*
* "lpadmin" command for CUPS.
*
* Copyright 2007-2014 by Apple Inc.
* Copyright 2007-2015 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -1233,7 +1233,7 @@ set_printer_options(
{
ipp_t *request; /* IPP Request */
const char *ppdfile; /* PPD filename */
int ppdchanged; /* PPD changed? */
int ppdchanged = 0; /* PPD changed? */
ppd_file_t *ppd; /* PPD file */
ppd_choice_t *choice; /* Marked choice */
char uri[HTTP_MAX_URI], /* URI for printer/class */
@@ -1243,11 +1243,13 @@ set_printer_options(
tempfile[1024]; /* Temporary filename */
cups_file_t *in, /* PPD file */
*out; /* Temporary file */
const char *protocol, /* Old protocol option */
const char *ppdname, /* ppd-name value */
*protocol, /* Old protocol option */
*customval, /* Custom option value */
*boolval; /* Boolean value */
int wrote_ipp_supplies = 0, /* Wrote cupsIPPSupplies keyword? */
wrote_snmp_supplies = 0;/* Wrote cupsSNMPSupplies keyword? */
wrote_snmp_supplies = 0,/* Wrote cupsSNMPSupplies keyword? */
copied_options = 0; /* Copied options? */
DEBUG_printf(("set_printer_options(http=%p, printer=\"%s\", num_options=%d, "
@@ -1294,6 +1296,26 @@ set_printer_options(
if (file)
ppdfile = file;
else if ((ppdname = cupsGetOption("ppd-name", num_options, options)) != NULL && strcmp(ppdname, "raw") && num_options > 1)
{
if ((ppdfile = cupsGetServerPPD(http, ppdname)) != NULL)
{
/*
* Copy options array and remove ppd-name from it...
*/
cups_option_t *temp = NULL, *optr;
int i, num_temp = 0;
for (i = num_options, optr = options; i > 0; i --, optr ++)
if (strcmp(optr->name, "ppd-name"))
num_temp = cupsAddOption(optr->name, optr->value, num_temp, &temp);
copied_options = 1;
ppdchanged = 1;
num_options = num_temp;
options = temp;
}
}
else if (request->request.op.operation_id == CUPS_ADD_MODIFY_PRINTER)
ppdfile = cupsGetPPD(printer);
else
@@ -1305,7 +1327,15 @@ set_printer_options(
* Set default options in the PPD file...
*/
ppd = ppdOpenFile(ppdfile);
if ((ppd = ppdOpenFile(ppdfile)) == NULL)
{
int linenum; /* Line number of error */
ppd_status_t status = ppdLastError(&linenum);
/* Status code */
_cupsLangPrintf(stderr, _("lpadmin: Unable to open PPD \"%s\": %s on line %d."), ppdfile, ppdErrorString(status), linenum);
}
ppdMarkDefaults(ppd);
cupsMarkOptions(ppd, num_options, options);
@@ -1315,6 +1345,8 @@ set_printer_options(
ippDelete(request);
if (ppdfile != file)
unlink(ppdfile);
if (copied_options)
cupsFreeOptions(num_options, options);
return (1);
}
@@ -1326,13 +1358,13 @@ set_printer_options(
ippDelete(request);
if (ppdfile != file)
unlink(ppdfile);
if (copied_options)
cupsFreeOptions(num_options, options);
cupsFileClose(out);
unlink(tempfile);
return (1);
}
ppdchanged = 0;
while (cupsFileGets(in, line, sizeof(line)))
{
if (!strncmp(line, "*cupsIPPSupplies:", 17) &&
@@ -1454,6 +1486,9 @@ set_printer_options(
ippDelete(cupsDoRequest(http, request, "/admin/"));
}
if (copied_options)
cupsFreeOptions(num_options, options);
/*
* Check the response...
*/
@@ -1499,5 +1534,5 @@ validate_name(const char *name) /* I - Name to check */
/*
* End of "$Id: lpadmin.c 11558 2014-02-06 18:33:34Z msweet $".
* End of "$Id: lpadmin.c 12604 2015-05-06 01:43:05Z msweet $".
*/
+37
Ver Arquivo
@@ -0,0 +1,37 @@
<H2 CLASS="title">Klasse hinzufügen</H2>
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
<TABLE>
<TR>
<TH CLASS="label">Name:</TH>
<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127"><BR>
<SMALL>(Darf alle druckbaren Zeichen ausser "/", "#", und Leerzeichen enthalten)</SMALL></TD>
</TR>
<TR>
<TH CLASS="label">Beschreibung:</TH>
<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127"><BR>
<SMALL>(Für Menschen lesbare Beschreibung wie "HP LaserJet with Duplexer")</SMALL></TD>
</TR>
<TR>
<TH CLASS="label">Ort:</TH>
<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127"><BR>
<SMALL>(Für Menschen lesbarer Ort wie "Lab 1")</SMALL></TD>
</TR>
<TR>
<TH CLASS="label">Mitglieder:</TH>
<TD>
<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
</SELECT>
</TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="Klasse hinzufügen"></TD>
</TR>
</TABLE>
</FORM>
+44
Ver Arquivo
@@ -0,0 +1,44 @@
<H2 CLASS="title">Drucker hinzufügen (Schritt 3/5)</H2>
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
{?current_make!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE" VALUE="{current_make}">:}
{?current_make_and_model!?<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{current_make_and_model}">:}
<TABLE>
<TR>
<TH CLASS="label">Name:</TH>
<TD><INPUT TYPE="TEXT" NAME="PRINTER_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?template_name}"><BR>
<SMALL>(Darf druckbare Zeichen enthalten ausser "/", "#", und Leerzeichen)</SMALL></TD>
</TR>
<TR>
<TH CLASS="label">Beschreibung:</TH>
<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_INFO}"><BR>
<SMALL>(Menschenlesbare Beschreibung wie etwa "HP LaserJet mit Duplexer")</SMALL></TD>
</TR>
<TR>
<TH CLASS="label">Ort:</TH>
<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" SIZE="40" MAXLENGTH="127" VALUE="{?PRINTER_LOCATION}"><BR>
<SMALL>(Menschenlesbarer Ort wie etwa "Labor 1")</SMALL></TD>
</TR>
<TR>
<TH CLASS="label">Verbindung:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
</TR>
<TR>
<TH CLASS="label">Freigabe:</TH>
<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
Gebe diesen Drucker frei</TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
</TR>
</TABLE>
</FORM>
+44
Ver Arquivo
@@ -0,0 +1,44 @@
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription">
<H2 CLASS="title">RSS Subskription hinzufügen</H2>
<TABLE SUMMARY="Forumlar zum Hinzufügen einer RSS Subskription">
<TR>
<TH CLASS="label">Name:</TH>
<TD COLSPAN="5"><INPUT TYPE="TEXT" NAME="SUBSCRIPTION_NAME" SIZE="40" MAXLENGTH="127" VALUE="{?SUBSCRIPTION_NAME}"><BR>
<SMALL>(Darf alle druckbaren Zeichen ausser Leerzeichen, "/", "?", und "#" enthalten)</SMALL></TD>
</TR>
<TR>
<TH CLASS="label">Warteschlange:</TH>
<TD COLSPAN="5"><SELECT NAME="PRINTER_URI" SIZE="10"><OPTION VALUE="#ALL#"{?PRINTER_URI=#ALL#? SELECTED:}>Alle Warteschlangen</OPTION>{[printer_name]<OPTION VALUE="{printer_uri_supported}"{?PRINTER_URI={printer_uri_supported}? SELECTED:}>{printer_name}</OPTION>}</SELECT></TD>
</TR>
<TR VALIGN="TOP">
<TH CLASS="label">Ereignisse:</TH>
<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CREATED" {?EVENT_JOB_CREATED}>Auftrag erstellt<BR>
<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_COMPLETED" {?EVENT_JOB_COMPLETED}>Auftrag abgeschlossen<BR>
<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_STOPPED" {?EVENT_JOB_STOPPED}>Auftrag angehalten<BR>
<INPUT TYPE="CHECKBOX" NAME="EVENT_JOB_CONFIG_CHANGED" {?EVENT_JOB_CONFIG_CHANGED}>Auftrags Parameter Geändert</TD>
<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_STOPPED" {?EVENT_PRINTER_STOPPED}>Warteschlange angehalten<BR>
<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_ADDED" {?EVENT_PRINTER_ADDED}>Warteschlange hinzugefügt<BR>
<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_MODIFIED" {?EVENT_PRINTER_MODIFIED}>Warteschlange geändert<BR>
<INPUT TYPE="CHECKBOX" NAME="EVENT_PRINTER_DELETED" {?EVENT_PRINTER_DELETED}>Warteschlange gelöscht</TD>
<TD>&nbsp;&nbsp;&nbsp;&nbsp;</TD>
<TD><INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STARTED" {?EVENT_SERVER_STARTED}>Server gestartet<BR>
<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_STOPPED" {?EVENT_SERVER_STOPPED}>Server angehalten<BR>
<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_RESTARTED" {?EVENT_SERVER_RESTARTED}>Server neu gestartet<BR>
<INPUT TYPE="CHECKBOX" NAME="EVENT_SERVER_AUDIT" {?EVENT_SERVER_AUDIT}>Server Sicherheits Prüfung</TD>
</TR>
<TR>
<TH CLASS="label">Maximale Ereignisse in Durchführung:</TH>
<TD COLSPAN="5"><INPUT TYPE="NUMBER" NAME="MAX_EVENTS" SIZE="4" MAXLENGTH="4" VALUE="{MAX_EVENTS?{MAX_EVENTS}:20}"></TD>
</TR>
<TR>
<TD></TD>
<TD COLSPAN="5"><INPUT TYPE="SUBMIT" VALUE="RSS Subskription hinzufügen"></TD>
</TR>
</TABLE>
</FORM>
+97
Ver Arquivo
@@ -0,0 +1,97 @@
<div class="row">
<div class="halves">
<H2 CLASS="title">Drucker</H2>
<P>
<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="SUBMIT" VALUE="Füge Drucker hinzu"></FORM>
<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="find-new-printers"><INPUT TYPE="SUBMIT" VALUE="Finde neue Drucker"></FORM>
<FORM ACTION="/printers/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Manage Drucker"></FORM>
{have_samba?<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="export-samba"><INPUT TYPE="SUBMIT" VALUE="Exportiere Drucker nach Samba"></FORM>:}
</P>
<H2 CLASS="title">Klassen</H2>
<P>
<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-class"><INPUT TYPE="SUBMIT" VALUE="Klasse hinzufügen"></FORM>
<FORM ACTION="/classes/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Klasse managen"></FORM>
</P>
<H2 CLASS="title">Aufträge</H2>
<P>
<FORM ACTION="/jobs/" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Aufträge managen"></FORM>
</P>
</div>
<div class="halves">
<H2 CLASS="title">Server</H2>
<P>
<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server"><INPUT TYPE="SUBMIT" VALUE="Konfigurationsdatei bearbeiten"></FORM>
<FORM ACTION="/admin/log/access_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Zugriffs-Log zeigen"></FORM>
<FORM ACTION="/admin/log/error_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Fehler-Log zeigen"></FORM>
<FORM ACTION="/admin/log/page_log" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Seiten-Log zeigen"></FORM>
</P>
{SETTINGS_ERROR?<P>{SETTINGS_MESSAGE}</P>
<BLOCKQUOTE>{SETTINGS_ERROR}</BLOCKQUOTE>:
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
{ADVANCEDSETTINGS?<P><B>Server-Einstellungen\:</B></P>
<P><A HREF="/admin/">Erweitert <SMALL>&#x25bc;</SMALL></A><BR>
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
<INPUT TYPE="HIDDEN" NAME="ADVANCEDSETTINGS" VALUE="YES">
<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Drucker dieses Systems im Netz freigeben<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Max clients\:
<INPUT TYPE="TEXT" NAME="MAX_CLIENTS" VALUE="{?max_clients}" SIZE="6"><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Erlaube Druck aus dem Internet<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="BROWSE_WEB_IF" {?browse_web_if}> Mache die Web-Schnittstelle bekannt<BR>
<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Erlaube Fernwartung<BR>
{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Benutze Kerberos-Authentifizierung (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Erlaube Benutzern beliebige Aufträge abzubrechen (nicht nur die Eigenen)<BR>
<INPUT TYPE="CHECKBOX" NAME="PRESERVE_JOBS" {?preserve_jobs}> Behalte die Auftragshistorie<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximale Auftragsanzehl (0 für unbegrenzt)\:
<INPUT TYPE="TEXT" NAME="MAX_JOBS" VALUE="{?max_jobs}" SIZE="6"><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Behalte Metadaten\:
<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_HISTORY" VALUE="{?preserve_job_history}" SIZE="6"><BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Behalte Dokumente\:
<INPUT TYPE="TEXT" NAME="PRESERVE_JOB_FILES" VALUE="{?preserve_job_files}" SIZE="6"><BR>
<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Save debugging information for troubleshooting<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Maximale logDateigrösse\:
<INPUT TYPE="TEXT" NAME="MAX_LOG_SIZE" VALUE="{?max_log_size}" SIZE="6"></P>
:<P><B>Server Einstellungen:</B></P>
<P><A HREF="/admin/?ADVANCEDSETTINGS=YES">Erweitert <SMALL>&#x25b6;</SMALL></A><BR>
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
<INPUT TYPE="CHECKBOX" NAME="SHARE_PRINTERS" {?share_printers}> Drucker dieses Systems im Netz freigeben<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="CHECKBOX" NAME="REMOTE_ANY" {?remote_any}> Erlaube den Druck aus dem Internet<BR>
<INPUT TYPE="CHECKBOX" NAME="REMOTE_ADMIN" {?remote_admin}> Erlaube Fernwartung<BR>
{have_gssapi?<INPUT TYPE="CHECKBOX" NAME="KERBEROS" {?kerberos}> Benutze Kerberos Authentifizierung (<A HREF="/help/kerberos.html?TOPIC=Getting+Started">FAQ</A>)<BR>:}
<INPUT TYPE="CHECKBOX" NAME="USER_CANCEL_ANY" {?user_cancel_any}> Erlaube Benutzern alle Aufträge zu löschen (nicht nur die eigenen)<BR>
<INPUT TYPE="CHECKBOX" NAME="DEBUG_LOGGING" {?debug_logging}> Speichere debugging Information zur Fehlersuche</P>
}
<P><INPUT TYPE="SUBMIT" NAME="CHANGESETTINGS" VALUE="Ändere Eintellungen"></P>
</FORM>}
</div>
</div>
<div class="row">
<H2 CLASS="title">RSS Subskriptionen</H2>
<P>
<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-rss-subscription"><INPUT TYPE="SUBMIT" VALUE="RSS Subskription hinzufügen"></FORM>
</P>
{notify_subscription_id?<TABLE CLASS="list" SUMMARY="RSS Subskriptionen">
<THEAD><TR><TH>Name</TH><TH>Ereignisse</TH><TH>Queue Name</TH></TR></THEAD>
<TBODY>{[notify_subscription_id]
<TR><TD><A HREF="{notify_recipient_uri}">{notify_recipient_name}</A><BR>
<FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-subscription"><INPUT TYPE="HIDDEN" NAME="notify_subscription_id" VALUE="{notify_subscription_id}"><INPUT TYPE="SUBMIT" VALUE="RSS Subskription kündigen"></FORM>&nbsp;</TD><TD>{notify_events}</TD><TD NOWRAP>&nbsp;{notify_printer_name?{notify_printer_name}:All Queues}</TD></TR>}
</TBODY>
</TABLE>:}
</div>
+49
Ver Arquivo
@@ -0,0 +1,49 @@
<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt 1/5)}</H2>
{CUPS_GET_DEVICES_DONE?<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
<TABLE>
{op=add-printer?:<TR>
<TH CLASS="label">Aktuelle Verbindung\:</TH>
<TD><INPUT TYPE="RADIO" NAME="DEVICE_URI" VALUE="{current_device_uri}" CHECKED>
{current_device_uri}</TD>
</TR>}
<TR>
<TH CLASS="label">Lokale Drucker\:</TH>
<TD>
{[device_uri]{device_class!network?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
VALUE="{device_uri}{?device_make_and_model!Unbekannt?|{device_make_and_model}:}">
{device_info} {?device_make_and_model!Unbekannt?({device_make_and_model}):}<BR>
:}}
</TD>
</TR>
<TR>
<TH CLASS="label">Entdeckte Netzwerkdrucker\:</TH>
<TD>
{[device_uri]{device_class=network?{device_uri~[a-z]+://?<INPUT TYPE="RADIO" NAME="DEVICE_URI"
VALUE="{device_uri}{?device_make_and_model!Unbekannt?|{device_make_and_model}:}">
{device_info} {?device_make_and_model!Unbekannt?({device_make_and_model}):}<BR>
:}:}}
</TD>
</TR>
<TR>
<TR>
<TH CLASS="label">Andere Netzwerkdrucker\:</TH>
<TD>
{[device_uri]{device_class=network?{device_uri~[a-z]+://?:<INPUT TYPE="RADIO" NAME="DEVICE_URI"
VALUE="{device_uri}{?device_make_and_model!Unknown?|{device_make_and_model}:}">
{device_info} {?device_make_and_model!Unknown?({device_make_and_model}):}<BR>
}:}}
</TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
</TR>
</TABLE>
</FORM>:<P><IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16" ALIGN="ABSMIDDLE"
ALT="Busy Indicator"> Suche nach Druckern...</P>}
+61
Ver Arquivo
@@ -0,0 +1,61 @@
<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt4/5)}</H2>
<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<TABLE>
{op=modify-printer?:<TR>
<TH CLASS="label">Name:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
</TR>}
<TR>
<TH CLASS="label">Beschreibung:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
</TR>
<TR>
<TH CLASS="label">Ort:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
</TR>
<TR>
<TH CLASS="label">Verbindung:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
</TR>
<TR>
<TH CLASS="label">Freigabe:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
Diesen Drucker {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netz freigeben</TD>
</TR>
<TR>
<TH CLASS="label">Marke:</TH>
<TD>
<SELECT NAME="PPD_MAKE" SIZE="10">
{[ppd_make]<OPTION VALUE="{ppd_make}" {?current_make={ppd_make}?SELECTED:}>{ppd_make}}
</SELECT>
</TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
</TR>
<TR>
<TD></TD>
<TD>&nbsp;</TD>
</TR>
<TR>
<TH CLASS="label">Or Provide a PPD File:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
TYPE="FILE" NAME="PPD_FILE"></TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Add Printer:Modify Printer}"></TD>
</TR>
</TABLE>
</FORM>
+57
Ver Arquivo
@@ -0,0 +1,57 @@
<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt 5/5)}</H2>
<FORM METHOD="POST" ACTION="/admin" ENCTYPE="multipart/form-data">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<TABLE>
{op=modify-printer?:<TR>
<TH CLASS="label">Name:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">{printer_name}</TD>
</TR>}
<TR>
<TH CLASS="label">Beschreibung:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{printer_info}">{printer_info}</TD>
</TR>
<TR>
<TH CLASS="label">Ort:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="{printer_location}">{printer_location}</TD>
</TR>
<TR>
<TH CLASS="label">Verbindung:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
</TR>
<TR>
<TH CLASS="label">Freigabe:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="PRINTER_IS_SHARED" VALUE="{?printer_is_shared}">
Dieser Drucker ist {?printer_is_shared=?nicht:{?printer_is_shared=0?nicht:}} im Netz freigeben</TD>
</TR>
<TR>
<TH CLASS="label">Hersteller:</TH>
<TD>{PPD_MAKE} <INPUT TYPE="SUBMIT" NAME="SELECT_MAKE" VALUE="Anderen Hersteller/Marke wählen"></TD>
</TR>
<TR>
<TH CLASS="label">Modell:</TH>
<TD>
<SELECT NAME="PPD_NAME" SIZE="10">
{op=add-printer?:<OPTION VALUE="__no_change__" SELECTED>Aktueller Treiber - {current_make_and_model}</OPTION>:}
{[ppd_name]<OPTION VALUE="{ppd_name}" {op=modify-printer?:{?current_make_and_model={ppd_make_and_model}?SELECTED:}}>{ppd_make_and_model} ({ppd_natural_language})
}</SELECT>
</TD>
</TR>
<TR>
<TH CLASS="label">Oder stelle eine PPD Datei zur Verfügung:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="MAX_FILE_SIZE" VALUE="262144"><INPUT
TYPE="FILE" NAME="PPD_FILE"></TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="{op=add-printer?Drucker hinzufügen:Drucker ändern}"></TD>
</TR>
</TABLE>
</FORM>
+49
Ver Arquivo
@@ -0,0 +1,49 @@
<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen}</H2>
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
<TABLE>
<TR>
<TH CLASS="label">Verbindung:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
</TR>
<TR>
<TH CLASS="label">Baud Rate:</TH>
<TD><SELECT NAME="BAUDRATE">
{[baudrates]<OPTION {?baudrate={baudrates}?SELECTED:}>{baudrates}}
</SELECT></TD>
</TR>
<TR>
<TH CLASS="label">Parität:</TH>
<TD><SELECT NAME="PARITY">
<OPTION VALUE="none" {?parity=none?SELECTED:}>Keine
<OPTION VALUE="even" {?parity=even?SELECTED:}>Gerade
<OPTION VALUE="odd" {?parity=odd?SELECTED:}>Ungerade
</SELECT></TD>
</TR>
<TR>
<TH CLASS="label">Daten Bits:</TH>
<TD><SELECT NAME="BITS">
<OPTION {?bits=8?SELECTED:}>8
<OPTION {?bits=7?SELECTED:}>7
</SELECT></TD>
</TR>
<TR>
<TH CLASS="label">Flusskontrolle:</TH>
<TD><SELECT NAME="FLOW">
<OPTION VALUE="none" {?flow=none?SELECTED:}>None
<OPTION VALUE="soft" {?flow=soft?SELECTED:}>XON/XOFF (Software)
<OPTION VALUE="hard" {?flow=hard?SELECTED:}>RTS/CTS (Hardware)
<OPTION VALUE="dtrdsr" {?flow=dtrdsr?SELECTED:}>DTR/DSR (Hardware)
</SELECT></TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
</TR>
</TABLE>
</FORM>
+40
Ver Arquivo
@@ -0,0 +1,40 @@
<H2 CLASS="title">{op=modify-printer?{printer_name} ändern:Drucker hinzufügen (Schritt2/5)}</H2>
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
{printer_name?<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">:}
<INPUT TYPE="HIDDEN" NAME="CURRENT_MAKE_AND_MODEL" VALUE="{?current_make_and_model}">
<TABLE>
<TR>
<TH CLASS="label">Verbindung-URI:</TH>
<TD><INPUT TYPE="URL" SIZE="60" MAXLENGTH="1023" NAME="DEVICE_URI" VALUE="{current_device_uri?{current_device_uri}:{device_uri}}"></TD>
</TR>
<TR>
<TD></TD>
<TD>Beispiele:
<PRE>
http://hostname:631/ipp/
http://hostname:631/ipp/port1
ipp://hostname/ipp/
ipp://hostname/ipp/port1
lpd://hostname/queue
socket://hostname
socket://hostname:9100
</PRE>
<P>See <A HREF="/help/network.html" TARGET="_blank">"Netzwerkdrucker"</A> für die korrekte URI ihres Druckers.</P>
</TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="Weiter"></TD>
</TR>
</TABLE>
</FORM>
+3
Ver Arquivo
@@ -0,0 +1,3 @@
<H2 CLASS="title">Klasse hinzufügen</H2>
<P>Die Klasse <A HREF="/classes/{printer_name}">{printer_name}</A> wurde erfolgreich hinzugefügt.
+6
Ver Arquivo
@@ -0,0 +1,6 @@
<H2 CLASS="title">Klasse {printer_name} löschen</H2>
<P><B>Warnung:</B> Sind sie sicher dass sie die Klasse
{printer_name} löschen wollen?</P>
<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="op" VALUE="delete-class"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Klasse löschen"></FORM></P>
+3
Ver Arquivo
@@ -0,0 +1,3 @@
<H2 CLASS="title">Klasse {printer_name} löschen</H2>
<P>Die Klasse {printer_name} wurde erfolgreich gelöscht.
+1
Ver Arquivo
@@ -0,0 +1 @@
<H3 CLASS="title">Aufträge</H3>
+4
Ver Arquivo
@@ -0,0 +1,4 @@
<H2 CLASS="title">Klasse {printer_name} ändern</H2>
<P>Class <A HREF="/classes/{printer_name}">{printer_name}</A> wurde
erfolgreich geändert.
+41
Ver Arquivo
@@ -0,0 +1,41 @@
<H2 CLASS="title"><A HREF="{printer_uri_supported}">{printer_name}</A>
({printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}},
{printer_is_accepting_jobs=0?Aufträge werden ablehnt:Aufträge werden akzeptiert},
{server_is_sharing_printers=0?Keine (Server):{printer_is_shared=0?Keine:}} Netzfreigabe{default_name={printer_name}?, Standarddrucker:})</H2>
<FORM METHOD="POST" ACTION="{printer_uri_supported}" NAME="maintenance">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<SELECT NAME="OP" ONCHANGE="document.maintenance.submit();">
<OPTION VALUE="">Wartung</OPTION>
<OPTION VALUE="print-test-page">Drucke Testseite</OPTION>
{printer_state=5?<OPTION VALUE="start-class">Klasse starten</OPTION>:<OPTION VALUE="stop-class">Klasse stoppen</OPTION>}
{printer_is_accepting_jobs=0?<OPTION VALUE="accept-jobs">Aufträge akzeptieren</OPTION>:<OPTION VALUE="reject-jobs">Aufträge ablehnen</OPTION>}
<OPTION VALUE="move-jobs">Alle Aufträge verschieben</OPTION>
<OPTION VALUE="purge-jobs">Alle Aufträge abbrechen</OPTION>
</SELECT>
<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
</FORM>
<FORM METHOD="POST" ACTION="{admin_uri}" NAME="administration">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}">
<INPUT TYPE="HIDDEN" NAME="IS_CLASS" VALUE="1">
<SELECT NAME="OP" ONCHANGE="document.administration.submit();">
<OPTION VALUE="">Verwaltung</OPTION>
<OPTION VALUE="modify-class">Klasse ändern</OPTION>
<OPTION VALUE="delete-class">Klasse löschen</OPTION>
<OPTION VALUE="set-class-options">Standardeinstellungen festlegen</OPTION>
<OPTION VALUE="set-as-default">Als Standard festlegen</OPTION>
<OPTION VALUE="set-allowed-users">Erlaubte Benutzer festlegen</OPTION>
</SELECT>
<INPUT TYPE="SUBMIT" VALUE="Go" STYLE="display: none;">
</FORM>
<TABLE SUMMARY="{printer_name}">
<TR><TH ALIGN="RIGHT" VALIGN="TOP">Beschreibung:</TH><TD>{printer_info}</TD></TR>
<TR><TH ALIGN="RIGHT" VALIGN="TOP">Ort:</TH><TD>{printer_location}</TD></TR>
<TR><TH ALIGN="RIGHT" VALIGN="TOP">Mitglieder:</TH><TD>{?member_uris=?None:{member_uris}}</TD></TR>
<TR><TH ALIGN="RIGHT" VALIGN="TOP">Standardeinstellungen:</TH><TD>job-sheets={job_sheets_default}
media={media_default?{media_default}:unbekannt}
{sides_default?sides={sides_default}:}</TD></TR>
</TABLE>
+1
Ver Arquivo
@@ -0,0 +1 @@
<P ALIGN="CENTER">{total=0?Keine Klassen:Zeige {#printer_name} von {total} Klasse{total=1?:n}}.</P>
+11
Ver Arquivo
@@ -0,0 +1,11 @@
{#printer_name=0?:
<TABLE CLASS="list" SUMMARY="Class List">
<THEAD>
<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> Wartweschlange <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> Warteschlange <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Beschreibung</TH><TH>Ort</TH><TH>Mitglieder</TH><TH>Status</TH></TR>
</THEAD>
<TBODY>
{[printer_name]
<TR><TD><A HREF="{printer_uri_supported}">{printer_name}</A></TD><TD>{printer_info}</TD><TD>{printer_location}</TD><TD>{?member_uris=?Keine:{member_uris}}</TD><TD>{printer_state=3?Im Leerlauf:{printer_state=4?Beschäftigt:Angehalten}}{printer_state_message? - "{printer_state_message}":}</TD></TR>
}
</TBODY>
</TABLE></DIV>}
+8
Ver Arquivo
@@ -0,0 +1,8 @@
<H2 CLASS="title">{title} auf {printer_name}</H2>
<P>{job_state>5?:<IMG SRC="/images/wait.gif" WIDTH="16" HEIGHT="16"
ALIGN="ABSMIDDLE" ALT="Busy Indicator"> }Drucker Befehlsauftrag
{job_state=3?unerledigt:{job_state=4?gehalten:
{job_state=5?verarbeite:{job_state=6?gestoppt:
{job_state=7?gelöscht:{job_state=8?abgebrochen:beendet}}}}}}{job_state=9?:{job_printer_state_message?,
<EM>"{job_printer_state_message}"</EM>:}}</P>
+20
Ver Arquivo
@@ -0,0 +1,20 @@
<SCRIPT TYPE="text/javascript">
function reset_config()
{
document.cups.CUPSDCONF.value = "{?cupsdconf_default}";
}
</SCRIPT>
<H2 CLASS="title">Konfigurationsdatei bearbeiten</H2>
<FORM NAME="cups" METHOD="POST" ACTION="/admin/">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="config-server">
<TEXTAREA NAME="CUPSDCONF" COLS="80" ROWS="25">{CUPSDCONF}</TEXTAREA>
<P><INPUT TYPE="SUBMIT" NAME="SAVECHANGES" VALUE="Änderungen speichern">
<INPUT TYPE="BUTTON" VALUE="Standard Konfigurationsdatei verwenden"
onClick="reset_config();"></P>
</FORM>
+6
Ver Arquivo
@@ -0,0 +1,6 @@
<H2 CLASS="title">{?title} {?printer_name} Error</H2>
<P>Fehler:</P>
<BLOCKQUOTE>Unbekannte Operation "{op}"!</BLOCKQUOTE>
+5
Ver Arquivo
@@ -0,0 +1,5 @@
<H2 CLASS="title">{?title} {?printer_name} Error</H2>
<P>{?message?{message}:Fehler:}</P>
<BLOCKQUOTE>{error}</BLOCKQUOTE>
+43
Ver Arquivo
@@ -0,0 +1,43 @@
<!DOCTYPE HTML>
<html>
<head>
<link rel="stylesheet" href="/cups.css" type="text/css">
<link rel="shortcut icon" href="/apple-touch-icon.png" type="image/png">
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
{refresh_page?<meta http-equiv="refresh" content="{refresh_page}">:}
<meta http-equiv="X-UA-Compatible" content="IE=9">
<meta name="viewport" content="width=device-width">
<style>html{display:none;}</style>
<script type="text/javascript"><!--
/* Only display document if we are not in a frame... */
if (self == top) {
document.documentElement.style.display = 'block';
} else {
top.location = self.location;
}
/* Show an error if cookies are disabled */
function check_cookies() {
if (!navigator.cookieEnabled) {
document.getElementById('body').innerHTML = 'This page uses cookies to prevent common cross-site attacks. Please enable cookies in your browser.';
}
}
--></SCRIPT>
<title>{title} - CUPS @CUPS_VERSION@@CUPS_REVISION@</title>
</head>
<body onload="check_cookies();">
<div class="header">
<ul>
<li><a href="http://www.cups.org/" target="_blank">CUPS.org</a></li>
<li><a href="/">Home</a></li>
<li><a {SECTION=admin?class="active" :}href="/admin">Verwaltung</a></li>
<li><a {SECTION=classes?class="active" :}href="/classes/">Klassen</a></li>
<li><a {SECTION=help?class="active" :}href="/help/">Hilfe</a></li>
<li><a {SECTION=jobs?class="active" :}href="/jobs/">Aufträge</a></li>
<li><a {SECTION=printers?class="active" :}href="/printers/">Drucker</a></li>
</ul>
</div>
<div class="body">
<div class="row">
<h1>{title}</h1>
+41
Ver Arquivo
@@ -0,0 +1,41 @@
<FORM ACTION="/help/{?HELPFILE}" METHOD="GET">
{TOPIC?<INPUT TYPE="HIDDEN" NAME="TOPIC" VALUE="{TOPIC}">:}
<P ALIGN="CENTER"><B>Suche in
{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:allen Dokumenten}}:</B> <INPUT
TYPE="SEARCH" NAME="QUERY" VALUE="{?QUERY}" SIZE="40" PLACEHOLDER=""
AUTOSAVE="org.cups.help" RESULTS="20">
<INPUT TYPE="SUBMIT" NAME="SEARCH" VALUE="Suchen">
<INPUT TYPE="SUBMIT" NAME="CLEAR" VALUE="Leeren"></P>
</FORM>
<!-- Bookmarks -->
<DIV CLASS="sidebar"><TABLE CLASS="inset" SUMMARY="Inhalt">
<TR><TD>
<H3 CLASS="title">Online Hilfe Dokumente</H3>
<P CLASS="l0"><A HREF="/help/{QUERY??QUERY={QUERY}:}">Alle Dokumente</A></P>
<HR>
{[BMTEXT]<P CLASS="l{BMINDENT}"><A HREF="{BMLINK}">{BMTEXT}</A></P>
}
</TD></TR>
</TABLE></DIV>
{QUERY?<P>Suchergebnisse in {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:allen Dokumenten}}\:</P>
{QTEXT?<UL>
{[QTEXT]<LI><A HREF="{QLINK}">{QTEXT}</A>{QPTEXT? (in <I><A HREF="{QPLINK}">{QPTEXT}</A></I>):}</LI>}
{QTEXT?</UL>:}
:<P>Keine Übereinstimmung gefunden.</P>}
<HR NOSHADE>:}
{HELPTITLE?<FORM ACTION="/help/{?HELPFILE}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="PRINTABLE" VALUE="YES"><INPUT TYPE="SUBMIT" VALUE="Druckversion anzeigen"></FORM>:
<H1>CUPS Hilfeseiten</H1>
<P>Dies ist das CUPS online Hilfesystem. Geben Sie Ihren Suchbegriff oben ein oder klicken Sie auf einen der Dokumentationslinks um sich die Online Hilfe Informationen anzeigen zu lassen.</P>
<P>Wenn Sie noch unerfahren im Umgang mit CUPS sind, lesen Sie die "<a href="/help/overview.html">CUPS Übersicht</a>". Erfahrene Benutzer sollten "<a href="/help/whatsnew.html">Was ist neu in CUPS 2.0</a>" lesen.</P>
<P>Die <A HREF="http://www.cups.org/">CUPS Webseite</A> bietet ebenfalls viele Angebote inklusive Diskussionsforen für Benutzer, Antworten auf häufig gestellte Fragen, und ein Formular für Fehlerberichte und Wünsche.</P>}
+9
Ver Arquivo
@@ -0,0 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<TITLE>{HELPTITLE}</TITLE>
<LINK REL="STYLESHEET" TYPE="text/css" HREF="/cups-printable.css">
<LINK REL="SHORTCUT ICON" HREF="/images/cups-icon.png" TYPE="image/png">
</HEAD>
<BODY>
+3
Ver Arquivo
@@ -0,0 +1,3 @@
<H2 CLASS="title">Auftrag {job_id} löschen</H2>
<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde gelöscht.
+3
Ver Arquivo
@@ -0,0 +1,3 @@
<H2 CLASS="title">Auftrag {job_id} anhalten</H2>
<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde vom Drucken abgehalten.
+23
Ver Arquivo
@@ -0,0 +1,23 @@
<FORM METHOD="POST" ACTION="/{SECTION}/{job_id?:{printer_name}}">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
{job_id?<INPUT TYPE="HIDDEN" NAME="JOB_ID" VALUE="{job_id}">:}
<H2 CLASS="title">{job_id?Auftrag {job_id} verschieben:Alle Aufträge verschieben}</H2>
<TABLE>
<TR>
<TH CLASS="label">Neues Ziel:</TH>
<TD>
<SELECT NAME="JOB_PRINTER_URI" SIZE="10">
{[job_printer_uri]<OPTION VALUE="{job_printer_uri}">{job_printer_name}}
</SELECT>
</TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="{job_id?Auftrag verschieben:Aufträge verschieben}"></TD>
</TR>
</TABLE>
</FORM>
+4
Ver Arquivo
@@ -0,0 +1,4 @@
<H2 CLASS="title">{job_id?Auftrag {job_id} verschieben:Alle Aufträge verschieben}</H2>
<P>{job_id?<A HREF="/jobs/{job_id}">Auftrag {job_id}</A>:Alle Aufträge} nach
<A HREF="{job_printer_uri}">{job_printer_name}</A> verschoben.</P>
+3
Ver Arquivo
@@ -0,0 +1,3 @@
<H2 CLASS="title">Auftrag {job_id} freigeben</H2>
<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde zum Drucken freigegeben.
+3
Ver Arquivo
@@ -0,0 +1,3 @@
<H2 CLASS="title">Auftrag {job_id} neu starten</H2>
<P><A HREF="{job_printer_uri}">Auftrag {job_id}</A> wurde neu gestartet.
+5
Ver Arquivo
@@ -0,0 +1,5 @@
{?which_jobs=?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="SUBMIT" VALUE="Aktive Aufträge anzeigen"></FORM>}
{?which_jobs=completed?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="completed"><INPUT TYPE="SUBMIT" VALUE="Fertige Aufträge anzeigen"></FORM>}
{?which_jobs=all?:<FORM ACTION="{?printer_name=?/jobs:{printer_uri_supported}}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="which_jobs" VALUE="all"><INPUT TYPE="SUBMIT" VALUE="Alle Aufträge anzeigen"></FORM>}
<P ALIGN="CENTER">{total=0?Keine Aufträge:Zeige {#job_id} von {total} {?which_jobs=?aktiven:{which_jobs=all?:beendeten}} {total=1?:s}Auftrag:Aufträgen}.</P>
+37
Ver Arquivo
@@ -0,0 +1,37 @@
{#job_id=0?:
<TABLE CLASS="list" SUMMARY="Auftragsliste">
<THEAD>
<TR><TH><A HREF="{THISURL}?QUERY={?QUERY}&amp;WHICH_JOBS={?WHICH_JOBS}&amp;FIRST={FIRST}&amp;ORDER={ORDER=dec?asc:dec}">{ORDER=dec?<SMALL>&#x25b2;</SMALL> ID <SMALL>&#x25b2;</SMALL>:<SMALL>&#x25bc;</SMALL> ID <SMALL>&#x25bc;</SMALL>}</A></TH><TH>Name</TH><TH>Benutzer</TH><TH>Grösse</TH><TH>Seiten</TH><TH>Status</TH><TH>Steuerung</TH></TR>
</THEAD>
<TBODY>
{[job_id]
<TR VALIGN="TOP">
<TD><A HREF="{job_printer_uri}">{job_printer_name}</A>-{job_id}{?phone? ({phone}):}&nbsp;</TD>
<TD>{?job_name=?Unbekannt:{job_name}}&nbsp;</TD>
<TD>{?job_originating_user_name=?Einbehalten:{job_originating_user_name}}&nbsp;</TD>
<TD>{job_k_octets}k&nbsp;</TD>
<TD>{job_media_sheets_completed=0?Unbekannt:{?job_media_sheets_completed}}&nbsp;</TD>
<TD>{job_state=3?unerledigt seit<BR>{time_at_creation}:{job_state=4?angehalten seit<BR>{time_at_creation}:
{job_state=5?verarbeitet seit<BR>{time_at_processing}:{job_state=6?gestoppt:
{job_state=7?gelöscht am<BR>{time_at_completed}:{job_state=8?abgebrochen:beendet am<BR>{time_at_completed}}}}}}}&nbsp;{job_printer_state_message?<BR>
<EM>"{job_printer_state_message}"</EM>:}</TD>
<TD>
{job_preserved>0?{job_state>5?
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="restart-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
<INPUT TYPE="SUBMIT" VALUE="Auftrag neu drucken"></FORM>:}:}
{job_state=4?
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="release-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
<INPUT TYPE="SUBMIT" VALUE="Auftrag freigeben"></FORM>:}
{job_state=3?
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="hold-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
<INPUT TYPE="SUBMIT" VALUE="Auftrag anhalten"></FORM>:}
{job_state<7?
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="cancel-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="HIDDEN" NAME="job_printer_uri" VALUE="{job_printer_uri}">
<INPUT TYPE="SUBMIT" VALUE="Auftrag löschen"></FORM>
<FORM ACTION="/jobs/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="move-job"><INPUT TYPE="HIDDEN" NAME="job_id" VALUE="{job_id}"><INPUT TYPE="SUBMIT" VALUE="Auftrag verschieben"></FORM>:}
&nbsp;</TD>
</TR>
}
</TBODY>
</TABLE>
}
+7
Ver Arquivo
@@ -0,0 +1,7 @@
<H2 CLASS="title">Verfügbare Drucker</H2>
{#device_uri=0?<P>Keine Drucker gefunden.</P>
:<UL>{[device_uri]
<LI><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="add-printer"><INPUT TYPE="HIDDEN" NAME="TEMPLATE_NAME" VALUE="{template_name}"><INPUT TYPE="HIDDEN" NAME="PRINTER_LOCATION" VALUE="Local Printer"><INPUT TYPE="HIDDEN" NAME="PRINTER_INFO" VALUE="{device_make_and_model}"><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}"><INPUT TYPE="SUBMIT" VALUE="Diesen Drucker hinzufügen"></FORM>
{device_make_and_model} ({device_info})</LI>
}</UL>}
+31
Ver Arquivo
@@ -0,0 +1,31 @@
<H2 CLASS="title">Klasse {printer_name} ändern</H2>
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
<TR>
<TH CLASS="label">Beschreibung:</TH>
<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"></TD>
</TR>
<TR>
<TH CLASS="label">Ort:</TH>
<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"></TD>
</TR>
<TR>
<TH CLASS="label">Mitglieder:</TH>
<TD>
<SELECT NAME="MEMBER_URIS" SIZE="10" MULTIPLE>
{[member_uris]<OPTION VALUE="{member_uris}" {?member_selected}>{member_names}}
</SELECT>
</TD>
</TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="Klasse ändern"></TD>
</TR>
</TABLE>
</FORM>
+39
Ver Arquivo
@@ -0,0 +1,39 @@
<H2 CLASS="title">Modify {printer_name}</H2>
<FORM METHOD="POST" ACTION="/admin">
<INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}">
<INPUT TYPE="HIDDEN" NAME="OP" VALUE="{op}">
<INPUT TYPE="HIDDEN" NAME="BAUDRATE" VALUE="{?baudrate}">
<INPUT TYPE="HIDDEN" NAME="BITS" VALUE="{?bits}">
<INPUT TYPE="HIDDEN" NAME="PARITY" VALUE="{?parity}">
<INPUT TYPE="HIDDEN" NAME="FLOW" VALUE="{?flow}">
<INPUT TYPE="HIDDEN" NAME="PRINTER_NAME" VALUE="{printer_name}">
<TABLE>
<TR>
<TH CLASS="label">Description:</TH>
<TD><INPUT TYPE="TEXT" NAME="PRINTER_INFO" VALUE="{?printer_info}" SIZE="40" MAXLENGTH="127"><BR>
<SMALL>(Human-readable description such as "HP LaserJet with Duplexer")</SMALL></TD>
</TR>
<TR>
<TH CLASS="label">Location:</TH>
<TD><INPUT TYPE="TEXT" NAME="PRINTER_LOCATION" VALUE="{?printer_location}" SIZE="40" MAXLENGTH="127"><BR>
<SMALL>(Human-readable location such as "Lab 1")</SMALL></TD>
</TR>
<TR>
<TH CLASS="label">Connection:</TH>
<TD><INPUT TYPE="HIDDEN" NAME="DEVICE_URI" VALUE="{device_uri}">{device_uri}</TD>
</TR>
<TR>
<TH CLASS="label">Sharing:</TH>
<TD><INPUT TYPE="CHECKBOX" NAME="PRINTER_IS_SHARED" {PRINTER_IS_SHARED=1?CHECKED:}>
Share This Printer</TD>
</TR>
<TR>
<TR>
<TD></TD>
<TD><INPUT TYPE="SUBMIT" VALUE="Continue"></TD>
</TR>
</TABLE>
</FORM>
+3
Ver Arquivo
@@ -0,0 +1,3 @@
<H2 CLASS="title">Einstellungen ändern</H2>
<P>Der Server wurde nicht neu gestartet, da die Konfiguration nicht geändert wurde...</P>
+6
Ver Arquivo
@@ -0,0 +1,6 @@
<TR>
<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
<TD>
{[choices]<INPUT TYPE="RADIO" NAME="{keyword-1}" {choices={defchoice-1}?CHECKED:} VALUE="{choices}">{text}}
</TD>
</TR>
+7
Ver Arquivo
@@ -0,0 +1,7 @@
<P><B>Fehler:</B> die folgenden Optionen stehen im Konflikt:</P>
<UL>
{[ckeyword]<LI><A HREF="#{ckeyword}">{ckeytext}</A>: {cchoice}</LI>
}</UL>
<P>Bitte ändern sie eine oder mehrere Einstellungen um die Konflikte zu lösen.</P>
+5
Ver Arquivo
@@ -0,0 +1,5 @@
<DIV CLASS="tab" ID="{group_id}">
<H3 ALIGN="CENTER">{group}</H3>
<TABLE WIDTH="100%">
+6
Ver Arquivo
@@ -0,0 +1,6 @@
<TR>
<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
<TD><SELECT NAME="{keyword}" MULTIPLE SIZE="10">
{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
</SELECT></TD>
</TR>
+18
Ver Arquivo
@@ -0,0 +1,18 @@
<TR>
<TH {conflicted=1?CLASS="conflict":CLASS="label"} WIDTH="50%"><A NAME="{keyword}">{keytext}</A>:</TH>
<TD><SELECT NAME="{keyword}" ID="select-{keyword}" ONCHANGE="update_paramtable('{keyword}')">
{[choices]<OPTION {choices={defchoice-1}?SELECTED:} VALUE="{choices}">{text}}
</SELECT>
{iscustom=1?<TABLE NAME="paramtable" id="{keyword}-params">{[params]
<TR><TH CLASS="sublabel">{paramtext}:</TH>
<TD>{params=Units?<SELECT NAME="{keyword-1}.{params}">
<OPTION VALUE="pt"{paramvalue=pt? SELECTED:}>Punkte</OPTION>
<OPTION VALUE="mm"{paramvalue=mm? SELECTED:}>Millimeter</OPTION>
<OPTION VALUE="cm"{paramvalue=cm? SELECTED:}>Zentimeter</OPTION>
<OPTION VALUE="in"{paramvalue=in? SELECTED:}>Zoll</OPTION>
<OPTION VALUE="ft"{paramvalue=ft? SELECTED:}>Fuss</OPTION>
<OPTION VALUE="m"{paramvalue=m? SELECTED:}>Meter</OPTION>
</SELECT>:<INPUT TYPE="{inputtype}" NAME="{keyword-1}.{params}" VALUE="{paramvalue}">}</TD></TR>
}</TABLE>
</TD>:}
</TR>
+5
Ver Arquivo
@@ -0,0 +1,5 @@
</TABLE>
<P ALIGN="CENTER"><INPUT TYPE="SUBMIT" VALUE="Standardeinstellungen festlegen"></P>
</DIV>
+6
Ver Arquivo
@@ -0,0 +1,6 @@
<TABLE CLASS="inset" SUMMARY="Seitenverwaltung">
<TR>
<TD WIDTH="50%">{PREV?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{PREV}"><INPUT TYPE="SUBMIT" VALUE="&#x25c0; Vorherige anzeigen"></FORM>:&nbsp;}</TD>
<TD WIDTH="50%" ALIGN="RIGHT">{NEXT?<FORM ACTION="{THISURL}" METHOD="GET"><INPUT TYPE="HIDDEN" NAME="QUERY" VALUE="{?QUERY}"><INPUT TYPE="HIDDEN" NAME="ORDER" VALUE="{?ORDER}"><INPUT TYPE="HIDDEN" NAME="WHICH_JOBS" VALUE="{?WHICH_JOBS}"><INPUT TYPE="HIDDEN" NAME="FIRST" VALUE="{NEXT}"><INPUT TYPE="SUBMIT" VALUE="Nächste anzeigen &#x25b6;"></FORM>:&nbsp;}</TD>
</TR>
</TABLE>
+5
Ver Arquivo
@@ -0,0 +1,5 @@
<H2 CLASS="title">Aufträge von {is_class?Klasse:Drucker} {printer_name} akzeptieren</H2>
<P>{is_class?Klasse:Drucker} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
aktzeptiert jetzt Aufträge.</P>
+4
Ver Arquivo
@@ -0,0 +1,4 @@
<H2 CLASS="title">Drucker hinzufügen</H2>
<P>Drucker <A HREF="/printers/{printer_name}">{printer_name}</A> wurde erfolgreich
hinzufügt.
+5
Ver Arquivo
@@ -0,0 +1,5 @@
<H2 CLASS="title">Aufträge auf {is_class?Class:Printer} {printer_name} löschen</H2>
<P>Alle Aufträge auf {is_class?class:printer} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
wurden gelöscht.</P>
+4
Ver Arquivo
@@ -0,0 +1,4 @@
<H2 CLASS="title">Standardeinstellungen für {printer_name} festlegen</H2>
<P>Standardeinstellungen für {OP=set-class-options?Klasse <A HREF="/classes/{printer_name}">:Drucker <A HREF="/printers/{printer_name}">}{printer_name}</A>
wurden erfolgreich gesetzt.
+8
Ver Arquivo
@@ -0,0 +1,8 @@
<H2 CLASS="title">Delete Printer {printer_name}</H2>
<H2 CLASS="title">Drucker {printer_name} löschen</H2>
<P><B>Warnung:</B> Sind Sie sicher, dass Sie den Drucker
{printer_name} löschen wollen?</P>
<P ALIGN="CENTER"><FORM ACTION="/admin/" METHOD="POST"><INPUT TYPE="HIDDEN" NAME="org.cups.sid" VALUE="{$org.cups.sid}"><INPUT TYPE="HIDDEN" NAME="OP" VALUE="delete-printer"><INPUT TYPE="HIDDEN" NAME="printer_name" VALUE="{printer_name}"><INPUT TYPE="SUBMIT" NAME="confirm" VALUE="Drucker löschen"></FORM></P>
+9
Ver Arquivo
@@ -0,0 +1,9 @@
<H2 CLASS="title">{is_class?Klasse:Drucker} {printer_name} als Standard festlegen</H2>
<P>{is_class?Klasse:Drucker} <A
HREF="/{is_class?classes:printers}/{printer_name}">{printer_name}</A>
wurde zum Standarddrucker für diesen Server gemacht.</P>
<BLOCKQUOTE><B>Notiz:</B> Die Einstellungen des Standarddruckers
welche von Benutzern mittels dem <TT>lpoptions</TT> Befehl gesetzt wurden,
überschreiben diese Einstellung.</BLOCKQUOTE>
+3
Ver Arquivo
@@ -0,0 +1,3 @@
<H2 CLASS="title">Drucker {printer_name} löschen</H2>
<P>Drucker {printer_name} wurde erfolgreich gelöscht.

Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff Mostrar Mais