Comparar commits

..

1 Commits

Autor SHA1 Mensagem Data
msweet c20b887ba5 Import cups.org releases
git-svn-id: svn+ssh://src.apple.com/svn/cups/cups.org/tags/release-1.0b4@4306 a1ca3aef-8c08-0410-bb20-df032aa958be
2013-05-10 18:56:23 +00:00
82 arquivos alterados com 1936 adições e 2782 exclusões
+3 -17
Ver Arquivo
@@ -33,7 +33,6 @@ AWK = @AWK@
CC = @CC@
CHMOD = @CHMOD@
CP = @CP@
DSO = @DSO@
HTMLDOC = @HTMLDOC@
LN = /bin/ln -sf
MKDIR = @MKDIR@ -p
@@ -45,17 +44,6 @@ SED = @SED@
SHELL = /bin/sh
SMBCLIENT = @SMBCLIENT@
#
# Libraries...
#
LIBCUPS = @LIBCUPS@
LIBCUPSIMAGE = @LIBCUPSIMAGE@
LIBJPEG = @LIBJPEG@
LIBPNG = @LIBPNG@
LIBTIFF = @LIBTIFF@
LIBZ = @LIBZ@
#
# Program options...
#
@@ -66,10 +54,9 @@ LIBZ = @LIBZ@
ARFLAGS = crvs
CFLAGS = @CFLAGS@ $(OPTIM) -I.. $(OPTIONS)
DSOLIBS = @DSOLIBS@
IMGLIBS = @IMGLIBS@ -lm
IMGLIBS = @IMGLIBS@ $(LIBS) -lm
LDFLAGS = @LDFLAGS@ $(OPTIM)
LIBS = -L../cups -lcups @LIBS@
LIBS = @LIBS@ -L../cups -lcups
OPTIM = @OPTIM@
OPTIONS =
@@ -110,7 +97,7 @@ top_srcdir = @top_srcdir@
BINDIR = @bindir@
DATADIR = @CUPS_DATADIR@
INCLUDEDIR = $(includedir)
INCLUDEDIR = $(includedir)/cups
LIBDIR = $(libdir)
LOCALEDIR = @CUPS_LOCALEDIR@
MANDIR = @mandir@
@@ -121,7 +108,6 @@ SERVERROOT = @CUPS_SERVERROOT@
# Rules...
#
.SILENT:
.SUFFIXES: .a .c .gz .h .o .z .1 .5 .8
.c.o:
echo Compiling $<...
+7 -7
Ver Arquivo
@@ -47,17 +47,17 @@ clean:
install:
-$(MKDIR) $(SERVERROOT)/backend
$(CP) $(TARGETS) $(SERVERROOT)/backend
-$(LN) ipp $(SERVERROOT)/backend/http
$(LN) ipp $(SERVERROOT)/backend/http
$(CHMOD) u+s $(SERVERROOT)/backend/lpd
#
# ipp
#
ipp: ipp.o ../cups/$(LIBCUPS)
ipp: ipp.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o ipp ipp.o $(LIBS)
-$(LN) ipp http
$(LN) ipp http
ipp.o: ../cups/cups.h ../Makedefs
@@ -65,7 +65,7 @@ ipp.o: ../cups/cups.h ../Makedefs
# lpd
#
lpd: lpd.o ../cups/$(LIBCUPS)
lpd: lpd.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpd lpd.o $(LIBS)
@@ -75,7 +75,7 @@ lpd.o: ../cups/cups.h ../Makedefs
# parallel
#
parallel: parallel.o ../cups/$(LIBCUPS)
parallel: parallel.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o parallel parallel.o $(LIBS)
@@ -85,7 +85,7 @@ parallel.o: ../cups/cups.h ../Makedefs
# serial
#
serial: serial.o ../cups/$(LIBCUPS)
serial: serial.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o serial serial.o $(LIBS)
@@ -108,7 +108,7 @@ smb: smb.sh ../Makedefs
# socket
#
socket: socket.o ../cups/$(LIBCUPS)
socket: socket.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o socket socket.o $(LIBS)
+4 -11
Ver Arquivo
@@ -124,15 +124,14 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
/*
* Build a URI for the printer and fill the standard IPP attributes for
* an IPP_PRINT_FILE request. We can't use the URI in argv[0] because it
* might contain username:password information...
* an IPP_PRINT_FILE request...
*/
request = ippNew();
request->request.op.operation_id = IPP_PRINT_JOB;
request->request.op.request_id = 1;
sprintf(uri, "%s://%s:%d%s", method, hostname, port, resource);
sprintf(uri, "%s://%s:%d/%s", method, hostname, port, resource);
language = cupsLangDefault();
@@ -298,23 +297,19 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
continue;
}
fputs("INFO: POST successful, sending IPP request...\n", stderr);
/*
* Send the IPP request...
*/
request->state = IPP_IDLE;
if (ippWrite(http, request) == IPP_ERROR)
if (ippWrite(http, request) != IPP_OK)
{
fputs("ERROR: Unable to send IPP request!\n", stderr);
fputs("ERROR: Unable to send IPP request; retrying...\n", stderr);
status = HTTP_ERROR;
break;
}
fputs("INFO: IPP request sent, sending print file...\n", stderr);
/*
* Then send the file...
*/
@@ -335,8 +330,6 @@ main(int argc, /* I - Number of command-line arguments (6 or 7) */
httpWrite(http, buffer, 0);
fputs("INFO: Print file sent; checking status...\n", stderr);
/*
* Finally, check the status from the HTTP server...
*/
+1 -1
Ver Arquivo
@@ -345,7 +345,7 @@ lpd_queue(char *hostname, /* I - Host to connect to */
fputs("INFO: Control file sent successfully\n", stderr);
lpd_command(fd, "\003%u dfA%03.3d%s\n", (unsigned)filestats.st_size,
lpd_command(fd, "\003%d dfA%03.3d%s\n", filestats.st_size,
getpid() % 1000, localhost);
fprintf(stderr, "INFO: Sending data file (%u bytes)\n",
+5 -5
Ver Arquivo
@@ -47,14 +47,14 @@ clean:
install:
-$(MKDIR) $(BINDIR)
-$(MKDIR) $(SBINDIR)
$(CP) lpq lpr lprm $(BINDIR)
$(CP) lpr lprm $(BINDIR)
$(CP) lpc $(SBINDIR)
#
# lpc
#
lpc: lpc.o ../cups/$(LIBCUPS)
lpc: lpc.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpc lpc.o $(LIBS)
@@ -64,7 +64,7 @@ lpc.o: ../cups/cups.h ../Makedefs
# lpq
#
lpq: lpq.o ../cups/$(LIBCUPS)
lpq: lpq.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpq lpq.o $(LIBS)
@@ -74,7 +74,7 @@ lpq.o: ../cups/cups.h ../Makedefs
# lpr
#
lpr: lpr.o ../cups/$(LIBCUPS)
lpr: lpr.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpr lpr.o $(LIBS)
@@ -84,7 +84,7 @@ lpr.o: ../cups/cups.h ../Makedefs
# lprm
#
lprm: lprm.o ../cups/$(LIBCUPS)
lprm: lprm.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lprm lprm.o $(LIBS)
+3 -21
Ver Arquivo
@@ -45,22 +45,20 @@ main(int argc, /* I - Number of command-line arguments */
{
int i; /* Looping var */
int job_id; /* Job ID */
const char *dest; /* Destination printer */
char *dest; /* Destination printer */
char *title; /* Job title */
int priority; /* Job priority (1-100) */
int num_copies; /* Number of copies per file */
int num_files; /* Number of files printed */
int num_options; /* Number of options */
cups_option_t *options; /* Options */
int silent, /* Silent or verbose output? */
deletefile; /* Delete file after print? */
int silent; /* Silent or verbose output? */
char tempfile[1024]; /* Temporary file for printing from stdin */
char buffer[8192]; /* Copy buffer */
FILE *temp; /* Temporary file pointer */
silent = 0;
deletefile = 0;
dest = cupsGetDefault();
num_options = 0;
options = NULL;
@@ -86,16 +84,6 @@ main(int argc, /* I - Number of command-line arguments */
argv[i][1]);
break;
case 'o' : /* Option */
if (argv[i][2] != '\0')
num_options = cupsParseOptions(argv[i] + 2, num_options, &options);
else
{
i ++;
num_options = cupsParseOptions(argv[i], num_options, &options);
}
break;
case 'l' : /* Literal/raw */
num_options = cupsParseOptions("raw", num_options, &options);
break;
@@ -108,14 +96,10 @@ main(int argc, /* I - Number of command-line arguments */
case 's' : /* Don't use symlinks */
break;
case 'm' : /* Mail on completion */
case 'm' : /* mail on completion */
fputs("Warning: email notification is not supported!\n", stderr);
break;
case 'r' : /* Remove file after printing */
deletefile = 1;
break;
case 'P' : /* Destination printer or class */
if (argv[i][2] != '\0')
dest = argv[i] + 2;
@@ -193,8 +177,6 @@ main(int argc, /* I - Number of command-line arguments */
fprintf(stderr, "lpr: unable to print file \'%s\'.\n", argv[i]);
return (1);
}
else if (deletefile)
unlink(argv[i]);
}
/*
+1 -1
Ver Arquivo
@@ -49,7 +49,7 @@ main(int argc, /* I - Number of command-line arguments */
http_t *http; /* HTTP connection to server */
int i; /* Looping var */
int job_id; /* Job ID */
const char *dest; /* Destination printer */
char *dest; /* Destination printer */
char uri[1024]; /* Printer or job URI */
ipp_t *request; /* IPP request */
ipp_t *response; /* IPP response */
+3 -3
Ver Arquivo
@@ -52,7 +52,7 @@ install:
# classes.cgi
#
classes.cgi: classes.o ../Makedefs ../cups/$(LIBCUPS)
classes.cgi: classes.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ classes.o $(LIBS)
@@ -62,7 +62,7 @@ $(OBJS): ../Makedefs ../cups/cups.h ../cups/ipp.h ../cups/language.h
# jobs.cgi
#
jobs.cgi: jobs.o ../Makedefs ../cups/$(LIBCUPS)
jobs.cgi: jobs.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ jobs.o $(LIBS)
@@ -72,7 +72,7 @@ $(OBJS): ../Makedefs ../cups/cups.h ../cups/ipp.h ../cups/language.h
# printers.cgi
#
printers.cgi: printers.o ../Makedefs ../cups/$(LIBCUPS)
printers.cgi: printers.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ printers.o $(LIBS)
+12 -16
Ver Arquivo
@@ -273,7 +273,7 @@ show_class_info(http_t *http,
*
* attributes-charset
* attributes-natural-language
* printer-uri
* class-uri
*/
request = ippNew();
@@ -289,7 +289,7 @@ show_class_info(http_t *http,
sprintf(uri, "ipp://localhost/classes/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "class-uri", NULL, uri);
/*
* Do the request and get back a response...
@@ -312,27 +312,24 @@ show_class_info(http_t *http,
* Grab the needed class attributes...
*/
if ((attr = ippFindAttribute(response, "printer-state", IPP_TAG_ENUM)) != NULL)
if ((attr = ippFindAttribute(response, "class-state", IPP_TAG_ENUM)) != NULL)
pstate = (ipp_pstate_t)attr->values[0].integer;
else
pstate = IPP_PRINTER_IDLE;
if ((attr = ippFindAttribute(response, "printer-state-message", IPP_TAG_TEXT)) != NULL)
if ((attr = ippFindAttribute(response, "class-state-message", IPP_TAG_TEXT)) != NULL)
message = attr->values[0].string.text;
else
message = NULL;
if ((attr = ippFindAttribute(response, "printer-is-accepting-jobs",
if ((attr = ippFindAttribute(response, "class-is-accepting-jobs",
IPP_TAG_BOOLEAN)) != NULL)
accepting = attr->values[0].boolean;
else
accepting = 1;
if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
strcpy(uri, "http:");
strcpy(uri + 5, strchr(attr->values[0].string.text, '/'));
}
if ((attr = ippFindAttribute(response, "printer-uri", IPP_TAG_URI)) != NULL)
strcpy(uri, attr->values[0].string.text);
/*
* Display the class entry...
@@ -340,7 +337,7 @@ show_class_info(http_t *http,
puts("<TR>");
printf("<TD VALIGN=TOP><A HREF=\"%s\">%s</A></TD>\n", uri, name);
printf("<TD VALIGN=TOP><A HREF=\"/classes/%s\">%s</A></TD>\n", name, name);
puts("<TD VALIGN=TOP><IMG SRC=\"/images/classes.gif\" ALIGN=\"LEFT\">");
@@ -371,7 +368,7 @@ show_class_info(http_t *http,
*
* attributes-charset
* attributes-natural-language
* printer-uri
* class-uri
*/
request = ippNew();
@@ -387,9 +384,8 @@ show_class_info(http_t *http,
"attributes-natural-language", NULL,
language->language);
sprintf(uri, "ipp://localhost/printers/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
"class-uri", NULL, uri);
jobs = cupsDoRequest(http, request, uri + 15);
}
@@ -402,8 +398,8 @@ show_class_info(http_t *http,
if (jobs != NULL)
{
char *username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
int jobid, /* job-id */
size; /* job-k-octets */
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
+5 -9
Ver Arquivo
@@ -328,11 +328,8 @@ show_printer_info(http_t *http,
else
accepting = 1;
if ((attr = ippFindAttribute(response, "printer-uri-supported", IPP_TAG_URI)) != NULL)
{
strcpy(uri, "http:");
strcpy(uri + 5, strchr(attr->values[0].string.text, '/'));
}
if ((attr = ippFindAttribute(response, "printer-uri", IPP_TAG_URI)) != NULL)
strcpy(uri, attr->values[0].string.text);
/*
* Display the printer entry...
@@ -340,7 +337,7 @@ show_printer_info(http_t *http,
puts("<TR>");
printf("<TD VALIGN=TOP><A HREF=\"%s\">%s</A></TD>\n", uri, name);
printf("<TD VALIGN=TOP><A HREF=\"/printers/%s\">%s</A></TD>\n", name, name);
printf("<TD VALIGN=TOP><IMG SRC=\"/images/printer-%s.gif\" ALIGN=\"LEFT\">\n",
pstate == IPP_PRINTER_IDLE ? "idle" :
@@ -389,7 +386,6 @@ show_printer_info(http_t *http,
"attributes-natural-language", NULL,
language->language);
sprintf(uri, "ipp://localhost/printers/%s", name);
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI,
"printer-uri", NULL, uri);
@@ -404,8 +400,8 @@ show_printer_info(http_t *http,
if (jobs != NULL)
{
char *username; /* Pointer to job-originating-user-name */
int jobid, /* job-id */
size; /* job-k-octets */
int jobid, /* job-id */
size; /* job-k-octets */
for (attr = jobs->attrs; attr != NULL; attr = attr->next)
+4 -11
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cupsd.conf 510 1999-07-09 14:20:15Z mike $"
# "$Id: cupsd.conf 429 1999-06-21 19:43:22Z mike $"
#
# Sample configuration file for the Common UNIX Printing System (CUPS)
# scheduler.
@@ -53,13 +53,6 @@
#Port 80
Port 631
#
# MaxClients: controls the maximum number of simultaneous clients that
# will be handled. Defaults to 100.
#
#MaxClients 100
#
# User/Group: the user and group the server runs under. Normally this
# must be lp and sys, however you can configure things for another user
@@ -271,10 +264,10 @@ LogLevel info
# RIPCache: the amount of memory that each RIP should use to cache
# bitmaps. The value can be any real number followed by "k" for
# kilobytes, "m" for megabytes, "g" for gigabytes, or "t" for tiles
# (1 tile = 256x256 pixels.) Defaults to "8m" (8 megabytes).
# (1 tile = 256x256 pixels.) Defaults to "32m" (32 megabytes).
#
#RIPCache 8m
#RIPCache: 32m
#
# TempDir: the directory to put temporary files in. This directory must be
@@ -343,5 +336,5 @@ Allow From 127.0.0.1
</Location>
#
# End of "$Id: cupsd.conf 510 1999-07-09 14:20:15Z mike $".
# End of "$Id: cupsd.conf 429 1999-06-21 19:43:22Z mike $".
#
+5 -5
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.convs 530 1999-07-13 14:11:17Z mike $"
# "$Id: mime.convs 237 1999-04-21 19:29:35Z mike $"
#
# MIME converts file for the Common UNIX Printing System (CUPS).
#
@@ -41,12 +41,12 @@
# PostScript filters
#
#application/msword application/postscript 50 mswordtops
#application/pdf application/postscript 50 pdftops
application/msword application/postscript 50 mswordtops
application/pdf application/postscript 50 pdftops
application/postscript application/vnd.cups-postscript 50 pstops
application/vnd.hp-HPGL application/postscript 50 hpgltops
image/* application/vnd.cups-postscript 50 imagetops
#text/html application/postscript 50 htmltops
text/html application/postscript 50 htmltops
text/plain application/postscript 50 texttops
########################################################################
@@ -58,5 +58,5 @@ image/* application/vnd.cups-raster 50 imagetoraster
application/vnd.cups-postscript application/vnd.cups-raster 50 pstoraster
#
# End of "$Id: mime.convs 530 1999-07-13 14:11:17Z mike $".
# End of "$Id: mime.convs 237 1999-04-21 19:29:35Z mike $".
#
+3 -3
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: mime.types 487 1999-06-30 21:07:52Z mike $"
# "$Id: mime.types 185 1999-03-24 18:38:50Z mike $"
#
# MIME types file for the Common UNIX Printing System (CUPS).
#
@@ -114,10 +114,10 @@ text/plain txt printable(0,1024)
# CUPS-specific types...
#
application/vnd.cups-postscript string(0,<1B>%-12345X)
application/vnd.cups-postscript
application/vnd.cups-raster string(0,"RaSt") string(0,"tSaR")
application/vnd.cups-raw
#
# End of "$Id: mime.types 487 1999-06-30 21:07:52Z mike $".
# End of "$Id: mime.types 185 1999-03-24 18:38:50Z mike $".
#
+35 -151
Ver Arquivo
@@ -26,62 +26,31 @@ AC_INIT(cups/cups.h)
AC_CONFIG_HEADER(config.h)
AC_PREFIX_DEFAULT(/usr)
dnl Get the operating system and version number...
dnl Clear default debugging options and set normal optimization by
dnl default unless the user asks for debugging specifically.
uname=`uname`
uversion=`uname -r | sed -e '1,$s/\.//g'`
if test "$uname" = "IRIX64"; then
uname="IRIX"
fi
dnl CFLAGS="${CFLAGS:=}"
dnl CXXFLAGS="${CXXFLAGS:=}"
dnl OPTIM="-O"
dnl AC_SUBST(OPTIM)
dnl Clear the debugging and non-shared library options unless the user asks
dnl for them...
dnl AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],
dnl if eval "test x$enable_debug = xyes"; then
dnl OPTIM="-g"
dnl fi)
dnl Clear default debugging options and set debugging by
dnl default unless the user asks for no debugging specifically.
OPTIM=""
AC_SUBST(OPTIM)
PICFLAG=1
CFLAGS="${CFLAGS:=}"
CXXFLAGS="${CXXFLAGS:=}"
OPTIM="-g"
AC_SUBST(OPTIM)
AC_ARG_ENABLE(debug, [ --enable-debug turn on debugging [default=no]],[if eval "test x$enable_debug = xyes"; then
OPTIM="-g "
fi])
AC_ARG_ENABLE(shared, [ --disable-shared turn off shared libraries [default=no]])
if eval "test x$disable_shared = xyes"; then
PICFLAG=0
LIBCUPS="libcups.a"
LIBCUPSIMAGE="libcupsimage.a"
DSO=":"
else
case "$uname" in
SunOS* | UNIX_S*)
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -Wl,-h,\$@ -G \$(OPTIM) -o"
;;
HP-UX*)
LIBCUPS="libcups.sl.1"
LIBCUPSIMAGE="libcupsimage.sl.1"
DSO="ld -b -z +h \$@ -o"
;;
OSF1* | Linux*)
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -Wl,-soname,\$@ -shared \$(OPTIM) -o"
;;
IRIX*)
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -soname \$@ -shared \$(OPTIM) -o"
;;
*)
echo "Warning: shared libraries may not be supported. Trying -shared"
echo " option with compiler."
LIBCUPS="libcups.so.1"
LIBCUPSIMAGE="libcupsimage.so.1"
DSO="\$(CC) -Wl,-soname,\$@ -shared \$(OPTIM) -o"
;;
esac
fi
AC_ARG_ENABLE(debug, [ --disable-debug turn off debugging [default=no]],
if eval "test x$disable_debug = xyes"; then
OPTIM="-O"
fi)
dnl Checks for programs...
AC_PROG_AWK
@@ -128,6 +97,10 @@ fi
dnl Architecture checks...
AC_C_BIGENDIAN
uname=`uname`
if test "$uname" = "IRIX64"; then
uname=IRIX
fi
dnl Check for libraries...
AC_CHECK_LIB(c,crypt,LIBS="$LIBS",AC_CHECK_LIB(crypt,crypt))
@@ -146,28 +119,20 @@ else
echo "Not using -lnsl since you are running IRIX."
fi)
LIBJPEG=""
LIBPNG=""
LIBTIFF=""
LIBZ=""
AC_SUBST(LIBJPEG)
AC_SUBST(LIBPNG)
AC_SUBST(LIBTIFF)
AC_SUBST(LIBZ)
IMGLIBS=""
AC_SUBST(IMGLIBS)
AC_CHECK_HEADER(jpeglib.h,
AC_DEFINE(HAVE_LIBJPEG)
LIBJPEG="-ljpeg")
AC_CHECK_HEADER(png.h,
AC_DEFINE(HAVE_LIBPNG)
LIBPNG="-lpng")
AC_CHECK_HEADER(tiff.h,
AC_DEFINE(HAVE_LIBTIFF)
LIBTIFF="-ltiff")
IMGLIBS="$IMGLIBS -ljpeg")
AC_CHECK_HEADER(zlib.h,
AC_DEFINE(HAVE_LIBZ)
LIBZ="-lz")
IMGLIBS="$IMGLIBS -lz")
AC_CHECK_HEADER(png.h,
AC_DEFINE(HAVE_LIBPNG)
IMGLIBS="$IMGLIBS -lpng")
AC_CHECK_HEADER(tiff.h,
AC_DEFINE(HAVE_LIBTIFF)
IMGLIBS="$IMGLIBS -ltiff")
dnl Checks for header files.
AC_HEADER_STDC
@@ -187,78 +152,11 @@ dnl Checks for wait functions.
AC_CHECK_FUNCS(waitpid)
AC_CHECK_FUNCS(wait3)
dnl Update compiler options...
if test -n "$GXX"; then
if test -z "$OPTIM"; then
OPTIM="-O2"
fi
if test $PICFLAG = 1; then
OPTIM="-fPIC $OPTIM"
fi
else
case $uname in
IRIX*)
if test -z "$OPTIM"; then
OPTIM="-O2"
fi
if test $uversion -ge 62; then
OPTIM="$OPTIM -n32 -mips3"
fi
;;
HP-UX*)
if test -z "$OPTIM"; then
OPTIM="+O2"
fi
;;
SunOS*)
# Solaris
if test -z "$OPTIM"; then
OPTIM="-O"
fi
if test $PICFLAG = 1; then
OPTIM="-KPIC $OPTIM"
fi
;;
*)
# Running some other operating system; inform the user they
# should contribute the necessary options to
# cups-support@cups.org...
echo "Building CUPS with default compiler optimizations; contact"
echo "cups-support@cups.org with uname and compiler options needed"
echo "for your platform, or set the CFLAGS environment variable"
echo "before running configure."
;;
esac
fi
if test "$DSO" != ":"; then
# When using DSOs the image libraries are linked to libcupsimage.so
# rather than to the executables. This makes things smaller if you
# are using any static libraries, and it also allows us to distribute
# a single DSO rather than a bunch...
DSOLIBS="\$(LIBJPEG) \$(LIBPNG) \$(LIBTIFF) \$(LIBZ)"
IMGLIBS=""
else
DSOLIBS=""
IMGLIBS="\$(LIBJPEG) \$(LIBPNG) \$(LIBTIFF) \$(LIBZ)"
fi
AC_SUBST(DSO)
AC_SUBST(DSOLIBS)
AC_SUBST(IMGLIBS)
AC_SUBST(LIBCUPS)
AC_SUBST(LIBCUPSIMAGE)
dnl Fix "prefix" variable if it hasn't been specified...
if test "$prefix" = "NONE"; then
prefix="/usr"
fi
dnl Fix "libdir" variable for IRIX 6.x...
if test "$uname" = "IRIX" -a $uversion -ge 62; then
libdir="/usr/lib32"
fi
dnl CUPS_SERVERROOT needs special attention for the default location...
if test "$prefix" = "/usr"; then
CUPS_SERVERROOT="/var/cups"
@@ -269,21 +167,7 @@ AC_DEFINE_UNQUOTED(CUPS_SERVERROOT, "$CUPS_SERVERROOT")
AC_SUBST(CUPS_SERVERROOT)
dnl Set the CUPS_LOCALE directory...
case "$uname" in
Linux)
CUPS_LOCALEDIR="$prefix/share/locale"
;;
OSF1)
CUPS_LOCALEDIR="$prefix/lib/nls/msg"
;;
*)
# This is the standard System V location...
CUPS_LOCALEDIR="$prefix/lib/locale"
;;
esac
CUPS_LOCALEDIR="$prefix/lib/locale"
AC_DEFINE_UNQUOTED(CUPS_LOCALEDIR, "$CUPS_LOCALEDIR")
AC_SUBST(CUPS_LOCALEDIR)
+41 -77
Ver Arquivo
@@ -1,5 +1,5 @@
#
# "$Id: cups.list 529 1999-07-13 14:11:00Z mike $"
# "$Id: cups.list 432 1999-06-21 20:14:24Z mike $"
#
# ESP Package Manager (EPM) file list for the Common UNIX Printing
# System (CUPS).
@@ -31,8 +31,7 @@
%vendor Easy Software Products
%license LICENSE.cups
%readme README.cups
%version 1.0b5
%incompat printpro
%version 1.0b4
%system all
# Server files
@@ -58,7 +57,7 @@ f 0555 root sys /var/cups/filter/imagetoraster filter/imagetoraster
f 0555 root sys /usr/bin/lp systemv/lp
f 0555 root sys /usr/bin/lpstat systemv/lpstat
f 0555 root sys /usr/lib/lpadmin systemv/lpadmin
f 0555 root sys /usr/bin/cancel systemv/cancel
f 0555 root sys /usr/lib/cancel systemv/cancel
f 0555 root sys /usr/lib/accept systemv/accept
l 0555 root sys /usr/lib/reject accept
l 0555 root sys /usr/bin/disable /usr/lib/accept
@@ -68,24 +67,6 @@ f 0555 root sys /usr/bin/lpq berkeley/lpq
f 0555 root sys /usr/bin/lpr berkeley/lpr
f 0555 root sys /usr/bin/lprm berkeley/lprm
# DSOs
%system hpux
f 0555 root sys /usr/lib/libcups.sl.1 cups/libcups.sl.1
l 0555 root sys /usr/lib/libcups.sl libcups.sl.1
f 0555 root sys /usr/lib/libcupsimage.sl.1 filter/libcupsimage.sl.1
l 0555 root sys /usr/lib/libcupsimage.sl libcupsimage.sl.1
%system irix irix64
f 0555 root sys /usr/lib32/libcups.so.1 cups/libcups.so.1
l 0555 root sys /usr/lib32/libcups.so libcups.so.1
f 0555 root sys /usr/lib32/libcupsimage.so.1 filter/libcupsimage.so.1
l 0555 root sys /usr/lib32/libcupsimage.so libcupsimage.so.1
%system dunix linux solaris sunos
f 0555 root sys /usr/lib/libcups.so.1 cups/libcups.so.1
l 0555 root sys /usr/lib/libcups.so libcups.so.1
f 0555 root sys /usr/lib/libcupsimage.so.1 filter/libcupsimage.so.1
l 0555 root sys /usr/lib/libcupsimage.so libcupsimage.so.1
%system all
# Directories
d 0755 root sys /var/cups/interfaces
d 0755 root sys /var/cups/logs
@@ -203,22 +184,6 @@ c 0600 root sys /var/cups/conf/mime.convs conf/mime.convs
c 0600 root sys /var/cups/conf/mime.types conf/mime.types
c 0600 root sys /var/cups/conf/printers.conf conf/printers.conf
# Developer files
f 0444 root sys /usr/include/cups/cups.h cups/cups.h
f 0444 root sys /usr/include/cups/http.h cups/http.h
f 0444 root sys /usr/include/cups/ipp.h cups/ipp.h
f 0444 root sys /usr/include/cups/language.h cups/language.h
f 0444 root sys /usr/include/cups/mime.h cups/mime.h
f 0444 root sys /usr/include/cups/ppd.h cups/ppd.h
f 0444 root sys /usr/include/cups/raster.h cups/raster.h
# This should only be done for IRIX 6.x (-n32)
%system irix irix64
f 0444 root sys /usr/lib32/libcups.a cups/libcups.a
%system hpux solaris sunos dunix linux
f 0444 root sys /usr/lib/libcups.a cups/libcups.a
%system all
# Documentation files
f 0444 root sys /usr/share/cups/doc/cmp.html doc/cmp.html
f 0444 root sys /usr/share/cups/doc/cmp.pdf doc/cmp.pdf
@@ -298,48 +263,47 @@ f 0444 root sys /usr/man/man5/printers.conf.5 man/printers.conf.5
# Startup scripts
%system hpux
%install /sbin/init.d/cups start
%remove /sbin/init.d/cups stop
%patch /sbin/init.d/cups stop
f 0555 root sys /sbin/init.d/cups cups.sh
l 0555 root sys /sbin/rc1.d/K280cups ../init.d/cups
l 0555 root sys /sbin/rc2.d/S720cups ../init.d/cups
%install /sbin/init.d/lp start
%remove /sbin/init.d/lp stop
%patch /sbin/init.d/lp stop
f 0555 root sys /sbin/init.d/lp cups.sh
l 0555 root sys /sbin/rc1.d/K280lp ../init.d/lp
l 0555 root sys /sbin/rc2.d/S720lp ../init.d/lp
%system irix irix64
%install /sbin/chkconfig -f cups on
%install /etc/init.d/cups start
%remove /etc/init.d/cups stop
%patch /etc/init.d/cups stop
f 0555 root sys /etc/init.d/cups cups.sh
l 0555 root sys /etc/rc0.d/K25cups ../init.d/cups
l 0555 root sys /etc/rc2.d/S60cups ../init.d/cups
%install /etc/init.d/lp start
%remove /etc/init.d/lp stop
%patch /etc/init.d/lp stop
f 0555 root sys /etc/init.d/lp cups.sh
l 0555 root sys /etc/rc0.d/K25lp ../init.d/lp
l 0555 root sys /etc/rc2.d/S60lp ../init.d/lp
%system linux
%install /etc/rc.d/init.d/cups start
%remove /etc/rc.d/init.d/cups stop
%patch /etc/rc.d/init.d/cups stop
f 0555 root sys /etc/rc.d/init.d/cups cups.sh
l 0555 root sys /etc/rc.d/rc2.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc3.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc4.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc5.d/S60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc0.d/K60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc1.d/K60cups ../init.d/cups
l 0555 root sys /etc/rc.d/rc6.d/K60cups ../init.d/cups
%install /etc/rc.d/init.d/lpd start
%remove /etc/rc.d/init.d/lpd stop
%patch /etc/rc.d/init.d/lpd stop
f 0555 root sys /etc/rc.d/init.d/lpd cups.sh
l 0555 root sys /etc/rc.d/rc2.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc3.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc4.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc5.d/S60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc0.d/K60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc1.d/K60lpd ../init.d/lpd
l 0555 root sys /etc/rc.d/rc6.d/K60lpd ../init.d/lpd
%system dunix
%install /sbin/init.d/cups start
%remove /sbin/init.d/cups stop
%patch /sbin/init.d/cups stop
f 0555 root sys /sbin/init.d/cups cups.sh
l 0555 root sys /sbin/rc0.d/K05cups ../init.d/cups
l 0555 root sys /sbin/rc2.d/K00cups ../init.d/cups
l 0555 root sys /sbin/rc3.d/S65cups ../init.d/cups
%system sunos solaris
%install /etc/init.d/cups start
%remove /etc/init.d/cups stop
%patch /etc/init.d/cups stop
f 0555 root sys /etc/init.d/cups cups.sh
l 0555 root sys /etc/rc0.d/K20cups ../init.d/cups
l 0555 root sys /etc/rc2.d/S80cups ../init.d/cups
%install /sbin/init.d/lpd start
%remove /sbin/init.d/lpd stop
%patch /sbin/init.d/lpd stop
f 0555 root sys /sbin/init.d/lpd cups.sh
l 0555 root sys /sbin/rc0.d/K05lpd ../init.d/lpd
l 0555 root sys /sbin/rc2.d/K00lpd ../init.d/lpd
l 0555 root sys /sbin/rc3.d/S65lpd ../init.d/lpd
%system solaris sunos
%install /etc/init.d/lp start
%remove /etc/init.d/lp stop
%patch /etc/init.d/lp stop
f 0555 root sys /etc/init.d/lp cups.sh
l 0555 root sys /etc/rc0.d/K20lp ../init.d/lp
l 0555 root sys /etc/rc2.d/S80lp ../init.d/lp
#
# End of "$Id: cups.list 529 1999-07-13 14:11:00Z mike $".
# End of "$Id: cups.list 432 1999-06-21 20:14:24Z mike $".
#
-307
Ver Arquivo
@@ -1,307 +0,0 @@
#
# "$Id: cups.spec 505 1999-07-08 15:00:20Z mike $"
#
# RPM "spec" file for the Common UNIX Printing System (CUPS).
#
# Original version by Jason McMullan <jmcc@ontv.com>.
#
# Copyright 1999 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
# property of Easy Software Products 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 missing or damaged please contact Easy Software Products
# at:
#
# Attn: CUPS Licensing Information
# Easy Software Products
# 44141 Airport View Drive, Suite 204
# Hollywood, Maryland 20636-3111 USA
#
# Voice: (301) 373-9603
# EMail: cups-info@cups.org
# WWW: http://www.cups.org
#
Summary: Common Unix Printing System
Name: cups
Version: 1.0b5
Release: 0
Copyright: GPL
Group: System Environment/Daemons
Source: ftp://ftp.easysw.com/pub/cups/beta/cups-1.0b5-source.tar.gz
Url: http://www.cups.org
Packager: Michael Sweet <mike@easysw.com>
Vendor: Easy Software Products
# use buildroot so as not to disturb the version already installed
BuildRoot: /tmp/rpmbuild
Conflicts: lpr
%package devel
Summary: Common Unix Printing System - development environment
Group: Development/Libraries
%description
The Common UNIX Printing System provides a portable printing layer for
UNIX® operating systems. It has been developed by Easy Software Products
to promote a standard printing solution for all UNIX vendors and users.
CUPS provides the System V and Berkeley command-line interfaces.
%description devel
The Common UNIX Printing System provides a portable printing layer for
UNIX® operating systems. This is the development package for creating
additional printer drivers, and other CUPS services.
%prep
%setup
%build
./configure
# If we got this far, all prerequisite libraries must be here.
make
%install
# these lines just make sure the directory structure in the
# RPM_BUILD_ROOT exists
rm -rf $RPM_BUILD_ROOT
mkdir $RPM_BUILD_ROOT/etc
mkdir $RPM_BUILD_ROOT/etc/rc.d
mkdir $RPM_BUILD_ROOT/etc/rc.d/init.d
mkdir $RPM_BUILD_ROOT/usr
mkdir $RPM_BUILD_ROOT/usr/bin
mkdir $RPM_BUILD_ROOT/usr/lib
mkdir $RPM_BUILD_ROOT/usr/man
mkdir $RPM_BUILD_ROOT/usr/man/man1
mkdir $RPM_BUILD_ROOT/usr/man/man5
mkdir $RPM_BUILD_ROOT/usr/man/man8
mkdir $RPM_BUILD_ROOT/usr/share/locale
mkdir $RPM_BUILD_ROOT/var/cups
mkdir $RPM_BUILD_ROOT/var/cups/conf
mkdir $RPM_BUILD_ROOT/var/cups/logs
mkdir $RPM_BUILD_ROOT/var/logs
ln -sf /var/cups/logs $RPM_BUILD_ROOT/var/logs/cups
ln -sf /var/cups/conf $RPM_BUILD_ROOT/etc/cups
make prefix=$RPM_BUILD_ROOT/usr DATADIR=$RPM_BUILD_ROOT/usr/share/cups LOCALEDIR=$RPM_BUILD_ROOT/usr/share/locale SERVERROOT=$RPM_BUILD_ROOT/var/cups install
install -m 755 -o root -g root $RPM_SOURCE_DIR/cups.sh $RPM_BUILD_ROOT/etc/rc.d/init.d/cups
%post
/sbin/chkconfig --add cups
%preun
/sbin/chkconfig --del cups
%clean
rm -rf $RPM_BUILD_ROOT
%files
/etc/rc.d/init.d/cups
%config /var/cups/conf/classes.conf
%config /var/cups/conf/cupsd.conf
%config /var/cups/conf/mime.convs
%config /var/cups/conf/mime.types
%config /var/cups/conf/printers.conf
/usr/lib/accept
/usr/lib/lpadmin
/usr/lib/reject
/usr/bin/lpr
/usr/bin/lprm
/usr/bin/disable
/usr/bin/enable
/usr/bin/cancel
/usr/bin/lp
/usr/bin/lpstat
/usr/man/man1/backend.1
/usr/man/man1/filter.1
/usr/man/man1/lprm.1
/usr/man/man1/lpr.1
/usr/man/man1/lpstat.1
/usr/man/man1/lp.1
/usr/man/man1/cancel.1
/usr/man/man5/classes.conf.5
/usr/man/man5/cupsd.conf.5
/usr/man/man5/mime.convs.5
/usr/man/man5/mime.types.5
/usr/man/man5/printers.conf.5
/usr/man/man8/accept.8
/usr/man/man8/cupsd.8
/usr/man/man8/enable.8
/usr/man/man8/lpadmin.8
/usr/man/man8/lpc.8
/usr/man/man8/reject.8
/usr/man/man8/disable.8
/usr/sbin/lpc
/usr/sbin/cupsd
/usr/lib/libcups.so.1
/usr/lib/libcupsimage.so.1
%dir /usr/share/cups
/usr/share/cups/8859-1
/usr/share/cups/8859-14
/usr/share/cups/8859-15
/usr/share/cups/8859-2
/usr/share/cups/8859-3
/usr/share/cups/8859-4
/usr/share/cups/8859-5
/usr/share/cups/8859-6
/usr/share/cups/8859-7
/usr/share/cups/8859-8
/usr/share/cups/8859-9
/usr/share/cups/HPGLprolog
/usr/share/cups/doc/cmp.html
/usr/share/cups/doc/cmp.pdf
/usr/share/cups/doc/cups.css
/usr/share/cups/doc/cupsdoc.css
/usr/share/cups/doc/documentation.html
/usr/share/cups/doc/idd.html
/usr/share/cups/doc/idd.pdf
/usr/share/cups/doc/images/classes.gif
/usr/share/cups/doc/images/cups-block-diagram.gif
/usr/share/cups/doc/images/cups-large.gif
/usr/share/cups/doc/images/cups-medium.gif
/usr/share/cups/doc/images/cups-small.gif
/usr/share/cups/doc/images/logo.gif
/usr/share/cups/doc/images/navbar.gif
/usr/share/cups/doc/images/printer-idle.gif
/usr/share/cups/doc/images/printer-processing.gif
/usr/share/cups/doc/images/printer-stopped.gif
/usr/share/cups/doc/index.html
/usr/share/cups/doc/overview.html
/usr/share/cups/doc/overview.pdf
/usr/share/cups/doc/sam.html
/usr/share/cups/doc/sam.pdf
/usr/share/cups/doc/sdd.html
/usr/share/cups/doc/sdd.pdf
/usr/share/cups/doc/ssr.html
/usr/share/cups/doc/ssr.pdf
/usr/share/cups/doc/stp.html
/usr/share/cups/doc/stp.pdf
/usr/share/cups/doc/sum.html
/usr/share/cups/doc/sum.pdf
/usr/share/cups/doc/svd.html
/usr/share/cups/doc/svd.pdf
/usr/share/cups/fonts/AvantGarde-Book
/usr/share/cups/fonts/AvantGarde-BookOblique
/usr/share/cups/fonts/AvantGarde-Demi
/usr/share/cups/fonts/AvantGarde-DemiOblique
/usr/share/cups/fonts/Bookman-Demi
/usr/share/cups/fonts/Bookman-DemiItalic
/usr/share/cups/fonts/Bookman-Light
/usr/share/cups/fonts/Bookman-LightItalic
/usr/share/cups/fonts/Courier
/usr/share/cups/fonts/Courier-Bold
/usr/share/cups/fonts/Courier-BoldOblique
/usr/share/cups/fonts/Courier-Oblique
/usr/share/cups/fonts/Helvetica
/usr/share/cups/fonts/Helvetica-Bold
/usr/share/cups/fonts/Helvetica-BoldOblique
/usr/share/cups/fonts/Helvetica-Narrow
/usr/share/cups/fonts/Helvetica-Narrow-Bold
/usr/share/cups/fonts/Helvetica-Narrow-BoldOblique
/usr/share/cups/fonts/Helvetica-Narrow-Oblique
/usr/share/cups/fonts/Helvetica-Oblique
/usr/share/cups/fonts/NewCenturySchlbk-Bold
/usr/share/cups/fonts/NewCenturySchlbk-BoldItalic
/usr/share/cups/fonts/NewCenturySchlbk-Italic
/usr/share/cups/fonts/NewCenturySchlbk-Roman
/usr/share/cups/fonts/Palatino-Bold
/usr/share/cups/fonts/Palatino-BoldItalic
/usr/share/cups/fonts/Palatino-Italic
/usr/share/cups/fonts/Palatino-Roman
/usr/share/cups/fonts/Symbol
/usr/share/cups/fonts/Times-Bold
/usr/share/cups/fonts/Times-BoldItalic
/usr/share/cups/fonts/Times-Italic
/usr/share/cups/fonts/Times-Roman
/usr/share/cups/fonts/Utopia-Bold
/usr/share/cups/fonts/Utopia-BoldItalic
/usr/share/cups/fonts/Utopia-Italic
/usr/share/cups/fonts/Utopia-Regular
/usr/share/cups/fonts/ZapfChancery-MediumItalic
/usr/share/cups/fonts/ZapfDingbats
/usr/share/cups/model/deskjet.ppd
/usr/share/cups/model/laserjet.ppd
/usr/share/cups/pstoraster/Fontmap
/usr/share/cups/pstoraster/gs_btokn.ps
/usr/share/cups/pstoraster/gs_ccfnt.ps
/usr/share/cups/pstoraster/gs_cidfn.ps
/usr/share/cups/pstoraster/gs_cmap.ps
/usr/share/cups/pstoraster/gs_cmdl.ps
/usr/share/cups/pstoraster/gs_dbt_e.ps
/usr/share/cups/pstoraster/gs_diskf.ps
/usr/share/cups/pstoraster/gs_dps1.ps
/usr/share/cups/pstoraster/gs_fform.ps
/usr/share/cups/pstoraster/gs_fonts.ps
/usr/share/cups/pstoraster/gs_init.ps
/usr/share/cups/pstoraster/gs_iso_e.ps
/usr/share/cups/pstoraster/gs_kanji.ps
/usr/share/cups/pstoraster/gs_ksb_e.ps
/usr/share/cups/pstoraster/gs_l2img.ps
/usr/share/cups/pstoraster/gs_lev2.ps
/usr/share/cups/pstoraster/gs_mex_e.ps
/usr/share/cups/pstoraster/gs_mro_e.ps
/usr/share/cups/pstoraster/gs_pdf.ps
/usr/share/cups/pstoraster/gs_pdf_e.ps
/usr/share/cups/pstoraster/gs_pdfwr.ps
/usr/share/cups/pstoraster/gs_pfile.ps
/usr/share/cups/pstoraster/gs_res.ps
/usr/share/cups/pstoraster/gs_setpd.ps
/usr/share/cups/pstoraster/gs_statd.ps
/usr/share/cups/pstoraster/gs_std_e.ps
/usr/share/cups/pstoraster/gs_sym_e.ps
/usr/share/cups/pstoraster/gs_ttf.ps
/usr/share/cups/pstoraster/gs_typ42.ps
/usr/share/cups/pstoraster/gs_type1.ps
/usr/share/cups/pstoraster/gs_wan_e.ps
/usr/share/cups/pstoraster/gs_wl1_e.ps
/usr/share/cups/pstoraster/gs_wl2_e.ps
/usr/share/cups/pstoraster/gs_wl5_e.ps
/usr/share/cups/pstoraster/pdf_2ps.ps
/usr/share/cups/pstoraster/pdf_base.ps
/usr/share/cups/pstoraster/pdf_draw.ps
/usr/share/cups/pstoraster/pdf_font.ps
/usr/share/cups/pstoraster/pdf_main.ps
/usr/share/cups/pstoraster/pdf_sec.ps
/usr/share/cups/pstoraster/pfbtogs.ps
%dir /var/cups
/var/cups/backend/http
/var/cups/backend/ipp
/var/cups/backend/lpd
/var/cups/backend/parallel
/var/cups/backend/serial
/var/cups/backend/smb
/var/cups/backend/socket
/var/cups/cgi-bin/classes.cgi
/var/cups/cgi-bin/jobs.cgi
/var/cups/cgi-bin/printers.cgi
/var/cups/conf
/var/cups/filter/hpgltops
/var/cups/filter/imagetops
/var/cups/filter/imagetoraster
/var/cups/filter/pstops
/var/cups/filter/pstoraster
/var/cups/filter/rastertohp
/var/cups/filter/texttops
%dir /var/cups/interfaces
%dir /var/cups/logs
%dir /var/cups/ppd
%dir /var/cups/requests
%files devel
%dir /usr/include/cups
/usr/include/cups/cups.h
/usr/include/cups/http.h
/usr/include/cups/ipp.h
/usr/include/cups/language.h
/usr/include/cups/mime.h
/usr/include/cups/ppd.h
/usr/include/cups/raster.h
/usr/lib/libcups.so
/usr/lib/libcupsimage.so
#
# End of "$Id: cups.spec 505 1999-07-08 15:00:20Z mike $".
#
+9 -21
Ver Arquivo
@@ -42,7 +42,7 @@ HEADERS = cups.h http.h ipp.h language.h mime.h ppd.h raster.h
# Targets in this directory...
#
TARGETS = $(LIBCUPS) testmime testppd testhttp
TARGETS = libcups.a testmime testppd testhttp
#
# Make all targets...
@@ -62,22 +62,10 @@ clean:
#
install: all
-$(MKDIR) $(LIBDIR)
$(CP) libcups.a $(LIBDIR)
-$(MKDIR) $(INCLUDEDIR)/cups
$(CP) $(HEADERS) $(INCLUDEDIR)/cups
-$(MKDIR) $(LIBDIR)
$(CP) $(LIBCUPS) $(LIBDIR)
if test $(LIBCUPS) != "libcups.a"; then \
$(LN) $(LIBCUPS) `basename $(LIBCUPS) .1` \
fi
#
# libcups.so.1, libcups.sl.1
#
libcups.so.1 libcups.sl.1: $(OBJS) ../Makedefs
echo Linking $@...
$(DSO) $@ $(OBJS)
$(LN) $@ `basename $@ .1`
#
# libcups.a
@@ -115,32 +103,32 @@ usersys.o: cups.h ../config.h ../Makedefs
util.o: cups.h http.h ipp.h ../config.h ../Makedefs
#
# testhttp (dependency on static CUPS library is intentional)
# testhttp
#
testhttp: testhttp.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testhttp.o libcups.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ testhttp.o $(LIBS)
testhttp.o: http.h ../Makedefs
#
# testmime (dependency on static CUPS library is intentional)
# testmime
#
testmime: testmime.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testmime.o libcups.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ testmime.o $(LIBS)
testmime.o: mime.h ../Makedefs
#
# testppd (dependency on static CUPS library is intentional)
# testppd
#
testppd: testppd.o libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ testppd.o libcups.a $(LIBS)
$(CC) $(LDFLAGS) -o $@ testppd.o $(LIBS)
testppd.o: ppd.h ../Makedefs
+13 -14
Ver Arquivo
@@ -106,31 +106,30 @@ typedef struct /**** Printer Options ****/
* Functions...
*/
extern int cupsCancelJob(const char *printer, int job);
extern int cupsCancelJob(char *printer, int job);
#define cupsDoRequest(http,request,resource) cupsDoFileRequest((http),(request),(resource),NULL)
extern ipp_t *cupsDoFileRequest(http_t *http, ipp_t *request,
const char *resource, const char *filename);
char *resource, char *filename);
extern int cupsGetClasses(char ***classes);
extern const char *cupsGetDefault(void);
extern const char *cupsGetPPD(const char *printer);
extern char *cupsGetPPD(char *printer);
extern char *cupsGetDefault(void);
extern int cupsGetPrinters(char ***printers);
extern int cupsPrintFile(const char *printer, const char *filename,
const char *title, int num_options,
cups_option_t *options);
extern int cupsPrintFile(char *printer, char *filename, char *title,
int num_options, cups_option_t *options);
extern int cupsAddOption(const char *name, const char *value,
int num_options, cups_option_t **options);
extern int cupsAddOption(char *name, char *value, int num_options,
cups_option_t **options);
extern void cupsFreeOptions(int num_options, cups_option_t *options);
extern const char *cupsGetOption(const char *name, int num_options,
extern char *cupsGetOption(char *name, int num_options,
cups_option_t *options);
extern int cupsParseOptions(const char *arg, int num_options,
extern int cupsParseOptions(char *arg, int num_options,
cups_option_t **options);
extern int cupsMarkOptions(ppd_file_t *ppd, int num_options,
cups_option_t *options);
extern const char *cupsGetPassword(const char *prompt);
extern const char *cupsServer(void);
extern const char *cupsUser(void);
extern char *cupsGetPassword(const char *prompt);
extern char *cupsServer();
extern char *cupsUser();
# ifdef __cplusplus
}
+1 -1
Ver Arquivo
@@ -58,7 +58,7 @@ mimeAddFilter(mime_t *mime, /* I - MIME database */
mime_type_t *src, /* I - Source type */
mime_type_t *dst, /* I - Destination type */
int cost, /* I - Relative time/resource cost */
const char *filter) /* I - Filter program to run */
char *filter) /* I - Filter program to run */
{
mime_filter_t *temp; /* New filter */
+71 -47
Ver Arquivo
@@ -89,21 +89,28 @@
* Local functions...
*/
static http_field_t http_field(const char *name);
static int http_send(http_t *http, http_state_t request,
const char *uri);
static http_field_t http_field(char *name);
static int http_send(http_t *http, http_state_t request, char *uri);
/*
* Local globals...
*/
static const char *http_fields[] =
static char *http_fields[] =
{
"Accept",
"Accept-Charset",
"Accept-Encoding",
"Accept-Language",
"Accept-Ranges",
"Age",
"Allow",
"Alternates",
"Authorization",
"Cache-Control",
"Connection",
"Content-Base",
"Content-Encoding",
"Content-Language",
"Content-Length",
@@ -113,22 +120,41 @@ static const char *http_fields[] =
"Content-Type",
"Content-Version",
"Date",
"Derived-From",
"Etag",
"Expires",
"From",
"Host",
"If-Match",
"If-Modified-Since",
"If-None-Match",
"If-Range",
"If-Unmodified-since",
"Keep-Alive",
"Last-Modified",
"Link",
"Location",
"Max-Forwards",
"Message-Id",
"MIME-Version",
"Pragma",
"Proxy-Authenticate",
"Proxy-Authorization",
"Public",
"Range",
"Referer",
"Retry-After",
"Server",
"Transfer-Encoding",
"Upgrade",
"URI",
"User-Agent",
"Vary",
"Via",
"Warning",
"WWW-Authenticate"
};
static const char *days[7] =
static char *days[7] =
{
"Sun",
"Mon",
@@ -138,7 +164,7 @@ static const char *days[7] =
"Fri",
"Sat"
};
static const char *months[12] =
static char *months[12] =
{
"Jan",
"Feb",
@@ -214,8 +240,8 @@ httpClose(http_t *http) /* I - Connection to close */
*/
http_t * /* O - New HTTP connection */
httpConnect(const char *host, /* I - Host to connect to */
int port) /* I - Port number */
httpConnect(char *host, /* I - Host to connect to */
int port) /* I - Port number */
{
http_t *http; /* New HTTP connection */
struct hostent *hostaddr; /* Host address data */
@@ -332,12 +358,12 @@ httpReconnect(http_t *http) /* I - HTTP data */
*/
void
httpSeparate(const char *uri, /* I - Universal Resource Identifier */
char *method, /* O - Method (http, https, etc.) */
char *username, /* O - Username */
char *host, /* O - Hostname */
int *port, /* O - Port number to use */
char *resource) /* O - Resource/filename */
httpSeparate(char *uri, /* I - Universal Resource Identifier */
char *method, /* O - Method (http, https, etc.) */
char *username, /* O - Username */
char *host, /* O - Hostname */
int *port, /* O - Port number to use */
char *resource) /* O - Resource/filename */
{
char *ptr; /* Pointer into string... */
@@ -379,7 +405,7 @@ httpSeparate(const char *uri, /* I - Universal Resource Identifier */
* OK, we have "hostname:port[/resource]"...
*/
*port = strtol(uri, (char **)&uri, 10);
*port = strtol(uri, &uri, 10);
if (*uri == '/')
strcpy(resource, uri);
@@ -474,8 +500,6 @@ httpSeparate(const char *uri, /* I - Universal Resource Identifier */
*port = 443;
else if (strcasecmp(method, "ipp") == 0) /* Not registered yet... */
*port = ippPort();
else if (strcasecmp(method, "socket") == 0) /* Not registered yet... */
*port = 9100;
else
*port = 0;
}
@@ -495,7 +519,7 @@ httpSeparate(const char *uri, /* I - Universal Resource Identifier */
void
httpSetField(http_t *http, /* I - HTTP data */
http_field_t field, /* I - Field index */
const char *value) /* I - Value */
char *value) /* I - Value */
{
strncpy(http->fields[field], value, HTTP_MAX_VALUE - 1);
http->fields[field][HTTP_MAX_VALUE - 1] = '\0';
@@ -507,8 +531,8 @@ httpSetField(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpDelete(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI to delete */
httpDelete(http_t *http, /* I - HTTP data */
char *uri) /* I - URI to delete */
{
return (http_send(http, HTTP_DELETE, uri));
}
@@ -519,8 +543,8 @@ httpDelete(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpGet(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI to get */
httpGet(http_t *http, /* I - HTTP data */
char *uri) /* I - URI to get */
{
return (http_send(http, HTTP_GET, uri));
}
@@ -531,8 +555,8 @@ httpGet(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpHead(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI for head */
httpHead(http_t *http, /* I - HTTP data */
char *uri) /* I - URI for head */
{
return (http_send(http, HTTP_HEAD, uri));
}
@@ -543,8 +567,8 @@ httpHead(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpOptions(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI for options */
httpOptions(http_t *http, /* I - HTTP data */
char *uri) /* I - URI for options */
{
return (http_send(http, HTTP_OPTIONS, uri));
}
@@ -555,8 +579,8 @@ httpOptions(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpPost(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI for post */
httpPost(http_t *http, /* I - HTTP data */
char *uri) /* I - URI for post */
{
httpGetLength(http);
@@ -569,8 +593,8 @@ httpPost(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpPut(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI to put */
httpPut(http_t *http, /* I - HTTP data */
char *uri) /* I - URI to put */
{
httpGetLength(http);
@@ -583,8 +607,8 @@ httpPut(http_t *http, /* I - HTTP data */
*/
int /* O - Status of call (0 = success) */
httpTrace(http_t *http, /* I - HTTP data */
const char *uri) /* I - URI for trace */
httpTrace(http_t *http, /* I - HTTP data */
char *uri) /* I - URI for trace */
{
return (http_send(http, HTTP_TRACE, uri));
}
@@ -699,9 +723,9 @@ httpRead(http_t *http, /* I - HTTP data */
*/
int /* O - Number of bytes written */
httpWrite(http_t *http, /* I - HTTP data */
const char *buffer, /* I - Buffer for data */
int length) /* I - Number of bytes to write */
httpWrite(http_t *http, /* I - HTTP data */
char *buffer, /* I - Buffer for data */
int length) /* I - Number of bytes to write */
{
int tbytes, /* Total bytes sent */
bytes; /* Bytes sent */
@@ -898,7 +922,7 @@ httpPrintf(http_t *http, /* I - HTTP data */
* 'httpStatus()' - Return a short string describing a HTTP status code.
*/
const char * /* O - String or NULL */
char * /* O - String or NULL */
httpStatus(http_status_t status) /* I - HTTP status code */
{
switch (status)
@@ -939,7 +963,7 @@ httpStatus(http_status_t status) /* I - HTTP status code */
* 'httpGetDateString()' - Get a formatted date/time string from a time value.
*/
const char * /* O - Date/time string */
char * /* O - Date/time string */
httpGetDateString(time_t t) /* I - UNIX time */
{
struct tm *tdate;
@@ -960,7 +984,7 @@ httpGetDateString(time_t t) /* I - UNIX time */
*/
time_t /* O - UNIX time */
httpGetDateTime(const char *s) /* I - Date/time string */
httpGetDateTime(char *s) /* I - Date/time string */
{
int i; /* Looping var */
struct tm tdate; /* Time/date structure */
@@ -1105,8 +1129,8 @@ httpUpdate(http_t *http) /* I - HTTP data */
*/
char * /* O - Decoded string */
httpDecode64(char *out, /* I - String to write to */
const char *in) /* I - String to read from */
httpDecode64(char *out, /* I - String to write to */
char *in) /* I - String to read from */
{
int pos, /* Bit position */
base64; /* Value of this character */
@@ -1176,8 +1200,8 @@ httpDecode64(char *out, /* I - String to write to */
*/
char * /* O - Encoded string */
httpEncode64(char *out, /* I - String to write to */
const char *in) /* I - String to read from */
httpEncode64(char *out, /* I - String to write to */
char *in) /* I - String to read from */
{
char *outptr; /* Output pointer */
static char base64[] = /* Base64 characters... */
@@ -1227,7 +1251,7 @@ httpEncode64(char *out, /* I - String to write to */
* content-length or transfer-encoding fields.
*/
int /* O - Content length */
int
httpGetLength(http_t *http) /* I - HTTP data */
{
if (strcasecmp(http->fields[HTTP_FIELD_TRANSFER_ENCODING], "chunked") == 0)
@@ -1262,7 +1286,7 @@ httpGetLength(http_t *http) /* I - HTTP data */
*/
static http_field_t /* O - Field index */
http_field(const char *name) /* I - String name */
http_field(char *name) /* I - String name */
{
int i; /* Looping var */
@@ -1282,12 +1306,12 @@ http_field(const char *name) /* I - String name */
static int /* O - 0 on success, non-zero on error */
http_send(http_t *http, /* I - HTTP data */
http_state_t request, /* I - Request code */
const char *uri) /* I - URI */
char *uri) /* I - URI */
{
int i; /* Looping var */
char *ptr, /* Pointer in buffer */
buf[1024]; /* Encoded URI buffer */
static const char *codes[] = /* Request code strings */
static char *codes[] = /* Request code strings */
{
NULL,
"OPTIONS",
@@ -1303,7 +1327,7 @@ http_send(http_t *http, /* I - HTTP data */
"TRACE",
"CLOSE"
};
static const char *hex = "0123456789ABCDEF";
static char *hex = "0123456789ABCDEF";
/* Hex digits */
+44 -17
Ver Arquivo
@@ -63,7 +63,7 @@ extern "C" {
# define HTTP_MAX_URI 1024 /* Max length of URI string */
# define HTTP_MAX_HOST 256 /* Max length of hostname string */
# define HTTP_MAX_BUFFER 2048 /* Max length of data buffer */
# define HTTP_MAX_BUFFER 8192 /* Max length of data buffer */
# define HTTP_MAX_VALUE 256 /* Max header field value length */
@@ -182,10 +182,18 @@ typedef enum
typedef enum
{
HTTP_FIELD_UNKNOWN = -1,
HTTP_FIELD_ACCEPT = 0,
HTTP_FIELD_ACCEPT_CHARSET,
HTTP_FIELD_ACCEPT_ENCODING,
HTTP_FIELD_ACCEPT_LANGUAGE,
HTTP_FIELD_ACCEPT_RANGES,
HTTP_FIELD_AGE,
HTTP_FIELD_ALLOW,
HTTP_FIELD_ALTERNATES,
HTTP_FIELD_AUTHORIZATION,
HTTP_FIELD_CACHE_CONTROL,
HTTP_FIELD_CONNECTION,
HTTP_FIELD_CONTENT_BASE,
HTTP_FIELD_CONTENT_ENCODING,
HTTP_FIELD_CONTENT_LANGUAGE,
HTTP_FIELD_CONTENT_LENGTH,
@@ -195,19 +203,38 @@ typedef enum
HTTP_FIELD_CONTENT_TYPE,
HTTP_FIELD_CONTENT_VERSION,
HTTP_FIELD_DATE,
HTTP_FIELD_DERIVED_FROM,
HTTP_FIELD_ETAG,
HTTP_FIELD_EXPIRES,
HTTP_FIELD_FROM,
HTTP_FIELD_HOST,
HTTP_FIELD_IF_MATCH,
HTTP_FIELD_IF_MODIFIED_SINCE,
HTTP_FIELD_IF_NONE_MATCH,
HTTP_FIELD_IF_RANGE,
HTTP_FIELD_IF_UNMODIFIED_SINCE,
HTTP_FIELD_KEEP_ALIVE,
HTTP_FIELD_LAST_MODIFIED,
HTTP_FIELD_LINK,
HTTP_FIELD_LOCATION,
HTTP_FIELD_MAX_FORWARDS,
HTTP_FIELD_MESSAGE_ID,
HTTP_FIELD_MIME_VERSION,
HTTP_FIELD_PRAGMA,
HTTP_FIELD_PROXY_AUTHENTICATE,
HTTP_FIELD_PROXY_AUTHORIZATION,
HTTP_FIELD_PUBLIC,
HTTP_FIELD_RANGE,
HTTP_FIELD_REFERER,
HTTP_FIELD_RETRY_AFTER,
HTTP_FIELD_SERVER,
HTTP_FIELD_TRANSFER_ENCODING,
HTTP_FIELD_UPGRADE,
HTTP_FIELD_URI,
HTTP_FIELD_USER_AGENT,
HTTP_FIELD_VARY,
HTTP_FIELD_VIA,
HTTP_FIELD_WARNING,
HTTP_FIELD_WWW_AUTHENTICATE,
HTTP_FIELD_MAX
} http_field_t;
@@ -248,31 +275,31 @@ typedef struct
# define httpClearFields(http) memset((http)->fields, 0, sizeof((http)->fields)),\
httpSetField((http), HTTP_FIELD_HOST, (http)->hostname)
extern void httpClose(http_t *http);
extern http_t *httpConnect(const char *host, int port);
extern int httpDelete(http_t *http, const char *uri);
extern http_t *httpConnect(char *host, int port);
extern int httpDelete(http_t *http, char *uri);
extern void httpFlush(http_t *http);
extern int httpGet(http_t *http, const char *uri);
extern int httpGet(http_t *http, char *uri);
extern char *httpGets(char *line, int length, http_t *http);
extern const char *httpGetDateString(time_t t);
extern time_t httpGetDateTime(const char *s);
extern char *httpGetDateString(time_t t);
extern time_t httpGetDateTime(char *s);
# define httpGetField(http,field) (http)->fields[field]
extern int httpHead(http_t *http, const char *uri);
extern int httpHead(http_t *http, char *uri);
extern void httpInitialize(void);
extern int httpOptions(http_t *http, const char *uri);
extern int httpPost(http_t *http, const char *uri);
extern int httpOptions(http_t *http, char *uri);
extern int httpPost(http_t *http, char *uri);
extern int httpPrintf(http_t *http, const char *format, ...);
extern int httpPut(http_t *http, const char *uri);
extern int httpPut(http_t *http, char *uri);
extern int httpRead(http_t *http, char *buffer, int length);
extern int httpReconnect(http_t *http);
extern void httpSeparate(const char *uri, char *method, char *username,
extern void httpSeparate(char *uri, char *method, char *username,
char *host, int *port, char *resource);
extern void httpSetField(http_t *http, http_field_t field, const char *value);
extern const char *httpStatus(http_status_t status);
extern int httpTrace(http_t *http, const char *uri);
extern void httpSetField(http_t *http, http_field_t field, char *value);
extern char *httpStatus(http_status_t status);
extern int httpTrace(http_t *http, char *uri);
extern http_status_t httpUpdate(http_t *http);
extern int httpWrite(http_t *http, const char *buffer, int length);
extern char *httpEncode64(char *out, const char *in);
extern char *httpDecode64(char *out, const char *in);
extern int httpWrite(http_t *http, char *buffer, int length);
extern char *httpEncode64(char *out, char *in);
extern char *httpDecode64(char *out, char *in);
extern int httpGetLength(http_t *http);
+70 -69
Ver Arquivo
@@ -73,10 +73,10 @@ static int ipp_read(http_t *http, char *buffer, int length);
*/
ipp_attribute_t * /* O - New attribute */
ippAddBoolean(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
char value) /* I - Value of attribute */
ippAddBoolean(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
char value) /* I - Value of attribute */
{
ipp_attribute_t *attr; /* New attribute */
@@ -103,11 +103,11 @@ ippAddBoolean(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddBooleans(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
const char *values) /* I - Values */
ippAddBooleans(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
char *values) /* I - Values */
{
int i; /* Looping var */
ipp_attribute_t *attr; /* New attribute */
@@ -139,10 +139,10 @@ ippAddBooleans(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddDate(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
const ipp_uchar_t *value) /* I - Value */
ippAddDate(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
ipp_uchar_t *value) /* I - Value */
{
ipp_attribute_t *attr; /* New attribute */
@@ -170,11 +170,11 @@ ippAddDate(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddInteger(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
const char *name, /* I - Name of attribute */
int value) /* I - Value of attribute */
ippAddInteger(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
char *name, /* I - Name of attribute */
int value) /* I - Value of attribute */
{
ipp_attribute_t *attr; /* New attribute */
@@ -202,12 +202,12 @@ ippAddInteger(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddIntegers(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
const char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
const int *values) /* I - Values */
ippAddIntegers(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
int *values) /* I - Values */
{
int i; /* Looping var */
ipp_attribute_t *attr; /* New attribute */
@@ -236,12 +236,12 @@ ippAddIntegers(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddString(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
const char *name, /* I - Name of attribute */
const char *charset, /* I - Character set */
const char *value) /* I - Value */
ippAddString(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
char *name, /* I - Name of attribute */
char *charset, /* I - Character set */
char *value) /* I - Value */
{
ipp_attribute_t *attr; /* New attribute */
@@ -267,13 +267,13 @@ ippAddString(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddStrings(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
const char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
const char *charset, /* I - Character set */
const char **values) /* I - Values */
ippAddStrings(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
ipp_tag_t type, /* I - Type of attribute */
char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
char *charset, /* I - Character set */
char **values) /* I - Values */
{
int i; /* Looping var */
ipp_attribute_t *attr; /* New attribute */
@@ -309,11 +309,11 @@ ippAddStrings(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddRange(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
int lower, /* I - Lower value */
int upper) /* I - Upper value */
ippAddRange(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
int lower, /* I - Lower value */
int upper) /* I - Upper value */
{
ipp_attribute_t *attr; /* New attribute */
@@ -339,12 +339,12 @@ ippAddRange(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddRanges(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
const int *lower, /* I - Lower values */
const int *upper) /* I - Upper values */
ippAddRanges(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
int *lower, /* I - Lower values */
int *upper) /* I - Upper values */
{
int i; /* Looping var */
ipp_attribute_t *attr; /* New attribute */
@@ -376,12 +376,12 @@ ippAddRanges(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddResolution(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
ipp_res_t units, /* I - Units for resolution */
int xres, /* I - X resolution */
int yres) /* I - Y resolution */
ippAddResolution(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
ipp_res_t units, /* I - Units for resolution */
int xres, /* I - X resolution */
int yres) /* I - Y resolution */
{
ipp_attribute_t *attr; /* New attribute */
@@ -408,13 +408,13 @@ ippAddResolution(ipp_t *ipp, /* I - IPP request */
*/
ipp_attribute_t * /* O - New attribute */
ippAddResolutions(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
const char *name, /* I - Name of attribute */
int num_values,/* I - Number of values */
ipp_res_t units, /* I - Units for resolution */
const int *xres, /* I - X resolutions */
const int *yres) /* I - Y resolutions */
ippAddResolutions(ipp_t *ipp, /* I - IPP request */
ipp_tag_t group, /* I - IPP group */
char *name, /* I - Name of attribute */
int num_values, /* I - Number of values */
ipp_res_t units, /* I - Units for resolution */
int *xres, /* I - X resolutions */
int *yres) /* I - Y resolutions */
{
int i; /* Looping var */
ipp_attribute_t *attr; /* New attribute */
@@ -472,8 +472,8 @@ ippAddSeparator(ipp_t *ipp) /* I - IPP request */
* in seconds.
*/
time_t /* O - UNIX time value */
ippDateToTime(const ipp_uchar_t *date) /* I - RFC 1903 date info */
time_t /* O - UNIX time value */
ippDateToTime(ipp_uchar_t *date)/* I - RFC 1903 date info */
{
struct tm unixdate; /* UNIX date/time info */
time_t t; /* Computed time */
@@ -578,9 +578,9 @@ ippDelete(ipp_t *ipp) /* I - IPP request */
*/
ipp_attribute_t * /* O - Matching attribute */
ippFindAttribute(ipp_t *ipp, /* I - IPP request */
const char *name, /* I - Name of attribute */
ipp_tag_t type) /* I - Type of attribute */
ippFindAttribute(ipp_t *ipp, /* I - IPP request */
char *name, /* I - Name of attribute */
ipp_tag_t type) /* I - Type of attribute */
{
ipp_attribute_t *attr; /* Current atttribute */
@@ -991,7 +991,7 @@ ippRead(http_t *http, /* I - HTTP data */
* 'ippTimeToDate()' - Convert from UNIX time to RFC 1903 format.
*/
const ipp_uchar_t * /* O - RFC-1903 date/time data */
ipp_uchar_t * /* O - RFC-1903 date/time data */
ippTimeToDate(time_t t) /* I - UNIX time value */
{
struct tm *unixdate; /* UNIX unixdate/time info */
@@ -1377,11 +1377,11 @@ ippWrite(http_t *http, /* I - HTTP data */
int /* O - Port number */
ippPort(void)
{
const char *server_port; /* SERVER_PORT environment variable */
char *server_port; /* SERVER_PORT environment variable */
struct servent *port; /* Port number info */
if ((server_port = getenv("IPP_PORT")) != NULL)
if ((server_port = getenv("SERVER_PORT")) != NULL)
return (atoi(server_port));
else if ((port = getservbyname("ipp", NULL)) == NULL)
return (IPP_PORT);
@@ -1454,6 +1454,7 @@ ipp_read(http_t *http, /* I - Client connection */
}
/*
* End of "$Id$".
*/
+14 -14
Ver Arquivo
@@ -306,25 +306,25 @@ typedef struct /**** Request State ****/
* Prototypes...
*/
extern time_t ippDateToTime(const ipp_uchar_t *date);
extern ipp_attribute_t *ippAddBoolean(ipp_t *ipp, ipp_tag_t group, const char *name, char value);
extern ipp_attribute_t *ippAddBooleans(ipp_t *ipp, ipp_tag_t group, const char *name, int num_values, const char *values);
extern ipp_attribute_t *ippAddDate(ipp_t *ipp, ipp_tag_t group, const char *name, const ipp_uchar_t *value);
extern ipp_attribute_t *ippAddInteger(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, const char *name, int value);
extern ipp_attribute_t *ippAddIntegers(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, const char *name, int num_values, const int *values);
extern ipp_attribute_t *ippAddRange(ipp_t *ipp, ipp_tag_t group, const char *name, int lower, int upper);
extern ipp_attribute_t *ippAddRanges(ipp_t *ipp, ipp_tag_t group, const char *name, int num_values, const int *lower, const int *upper);
extern ipp_attribute_t *ippAddResolution(ipp_t *ipp, ipp_tag_t group, const char *name, ipp_res_t units, int xres, int yres);
extern ipp_attribute_t *ippAddResolutions(ipp_t *ipp, ipp_tag_t group, const char *name, int num_values, ipp_res_t units, const int *xres, const int *yres);
extern time_t ippDateToTime(ipp_uchar_t *date);
extern ipp_attribute_t *ippAddBoolean(ipp_t *ipp, ipp_tag_t group, char *name, char value);
extern ipp_attribute_t *ippAddBooleans(ipp_t *ipp, ipp_tag_t group, char *name, int num_values, char *values);
extern ipp_attribute_t *ippAddDate(ipp_t *ipp, ipp_tag_t group, char *name, ipp_uchar_t *value);
extern ipp_attribute_t *ippAddInteger(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, char *name, int value);
extern ipp_attribute_t *ippAddIntegers(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, char *name, int num_values, int *values);
extern ipp_attribute_t *ippAddRange(ipp_t *ipp, ipp_tag_t group, char *name, int lower, int upper);
extern ipp_attribute_t *ippAddRanges(ipp_t *ipp, ipp_tag_t group, char *name, int num_values, int *lower, int *upper);
extern ipp_attribute_t *ippAddResolution(ipp_t *ipp, ipp_tag_t group, char *name, ipp_res_t units, int xres, int yres);
extern ipp_attribute_t *ippAddResolutions(ipp_t *ipp, ipp_tag_t group, char *name, int num_values, ipp_res_t units, int *xres, int *yres);
extern ipp_attribute_t *ippAddSeparator(ipp_t *ipp);
extern ipp_attribute_t *ippAddString(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, const char *name, const char *charset, const char *value);
extern ipp_attribute_t *ippAddStrings(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, const char *name, int num_values, const char *charset, const char **values);
extern ipp_attribute_t *ippAddString(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, char *name, char *charset, char *value);
extern ipp_attribute_t *ippAddStrings(ipp_t *ipp, ipp_tag_t group, ipp_tag_t type, char *name, int num_values, char *charset, char **values);
extern void ippDelete(ipp_t *ipp);
extern ipp_attribute_t *ippFindAttribute(ipp_t *ipp, const char *name, ipp_tag_t type);
extern ipp_attribute_t *ippFindAttribute(ipp_t *ipp, char *name, ipp_tag_t type);
extern size_t ippLength(ipp_t *ipp);
extern ipp_t *ippNew(void);
extern ipp_state_t ippRead(http_t *http, ipp_t *ipp);
extern const ipp_uchar_t *ippTimeToDate(time_t t);
extern ipp_uchar_t *ippTimeToDate(time_t t);
extern ipp_state_t ippWrite(http_t *http, ipp_t *ipp);
extern int ippPort(void);
+13 -16
Ver Arquivo
@@ -127,11 +127,10 @@ cupsLangFree(cups_lang_t *lang) /* I - Language to free */
*/
cups_lang_t * /* O - Language data */
cupsLangGet(const char *language) /* I - Language or locale */
cupsLangGet(char *language) /* I - Language or locale */
{
int i, count; /* Looping vars */
char langname[16], /* Requested language name */
real[16], /* Real language name */
char real[16], /* Real language name */
filename[1024], /* Filename for language locale file */
*localedir; /* Directory for locale files */
FILE *fp; /* Language locale file pointer */
@@ -150,28 +149,26 @@ cupsLangGet(const char *language) /* I - Language or locale */
*/
if (language == NULL || language[0] == '\0')
strcpy(langname, "C");
else
strcpy(langname, language);
language = "C";
if (strlen(langname) < 2)
if (strlen(language) < 2)
strcpy(real, "C");
else
{
real[0] = tolower(langname[0]);
real[1] = tolower(langname[1]);
real[0] = tolower(language[0]);
real[1] = tolower(language[1]);
if (langname[2] == '_' || langname[2] == '-')
if (language[2] == '_' || language[2] == '-')
{
real[2] = '_';
real[3] = toupper(langname[3]);
real[4] = toupper(langname[4]);
real[3] = toupper(language[3]);
real[4] = toupper(language[4]);
real[5] = '\0';
langname[5] = '\0';
language[5] = '\0';
}
else
{
langname[2] = '\0';
language[2] = '\0';
real[2] = '\0';
}
}
@@ -204,7 +201,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
*/
for (lang = lang_cache; lang != NULL; lang = lang->next)
if (strcmp(lang->language, langname) == 0)
if (strcmp(lang->language, language) == 0)
{
lang->used ++;
@@ -291,7 +288,7 @@ cupsLangGet(const char *language) /* I - Language or locale */
*/
lang->used ++;
strcpy(lang->language, langname);
strcpy(lang->language, language);
for (i = 0; i < (sizeof(lang_encodings) / sizeof(lang_encodings[0])); i ++)
if (strcmp(lang_encodings[i], line) == 0)
+1 -3
Ver Arquivo
@@ -139,8 +139,6 @@ typedef enum /**** Message Indices ****/
CUPS_MSG_COPIES,
CUPS_MSG_FILE_SIZE,
CUPS_MSG_PENDING,
CUPS_MSG_OUTPUT_MODE,
CUPS_MSG_RESOLUTION,
CUPS_MSG_HTTP_BASE = 200,
CUPS_MSG_HTTP_END = 505,
CUPS_MSG_MAX
@@ -181,7 +179,7 @@ typedef struct cups_lang_str /**** Language Cache Structure ****/
extern char *cupsLangEncoding(cups_lang_t *lang);
extern void cupsLangFlush(void);
extern void cupsLangFree(cups_lang_t *lang);
extern cups_lang_t *cupsLangGet(const char *language);
extern cups_lang_t *cupsLangGet(char *language);
# define cupsLangString(lang,msg) (lang)->messages[(msg)]
# ifdef __cplusplus
+27 -39
Ver Arquivo
@@ -180,7 +180,7 @@ ppdConflicts(ppd_file_t *ppd) /* I - PPD to check */
ppd_choice_t * /* O - Choice pointer or NULL */
ppdFindChoice(ppd_option_t *o, /* I - Pointer to option */
const char *choice) /* I - Name of choice */
char *choice) /* I - Name of choice */
{
int i; /* Looping var */
ppd_choice_t *c; /* Current choice */
@@ -203,7 +203,7 @@ ppdFindChoice(ppd_option_t *o, /* I - Pointer to option */
ppd_choice_t * /* O - Pointer to choice or NULL */
ppdFindMarkedChoice(ppd_file_t *ppd, /* I - PPD file */
const char *option) /* I - Keyword/option name */
char *option) /* I - Keyword/option name */
{
int i; /* Looping var */
ppd_option_t *o; /* Pointer to option */
@@ -227,7 +227,7 @@ ppdFindMarkedChoice(ppd_file_t *ppd, /* I - PPD file */
ppd_option_t * /* O - Pointer to option or NULL */
ppdFindOption(ppd_file_t *ppd, /* I - PPD file data */
const char *option) /* I - Option/Keyword name */
char *option) /* I - Option/Keyword name */
{
int i, j, k; /* Looping vars */
ppd_option_t *o; /* Pointer to option */
@@ -260,8 +260,8 @@ ppdFindOption(ppd_file_t *ppd, /* I - PPD file data */
int /* O - Non-zero if option is marked */
ppdIsMarked(ppd_file_t *ppd, /* I - PPD file data */
const char *option, /* I - Option/Keyword name */
const char *choice) /* I - Choice name */
char *option, /* I - Option/Keyword name */
char *choice) /* I - Choice name */
{
ppd_option_t *o; /* Option pointer */
ppd_choice_t *c; /* Choice pointer */
@@ -316,8 +316,8 @@ ppdMarkDefaults(ppd_file_t *ppd)/* I - PPD file record */
int /* O - Number of conflicts */
ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
const char *option, /* I - Keyword */
const char *choice) /* I - Option name */
char *option, /* I - Keyword */
char *choice) /* I - Option name */
{
int i; /* Looping var */
ppd_option_t *o; /* Option pointer */
@@ -342,46 +342,34 @@ ppdMarkOption(ppd_file_t *ppd, /* I - PPD file record */
for (i = o->num_choices, c = o->choices; i > 0; i --, c ++)
if (strcmp(c->choice, choice) == 0)
break;
c->marked = 1;
else if (o->ui != PPD_UI_PICKMANY)
c->marked = 0;
if (i)
if (strcmp(option, "PageSize") == 0 || strcmp(option, "PageRegion") == 0)
{
/*
* Option found; mark it and then handle unmarking any other options.
* Mark current page size...
*/
c->marked = 1;
for (i = 0; i < ppd->num_sizes; i ++)
ppd->sizes[i].marked = strcmp(ppd->sizes[i].name, choice) == 0;
if (o->ui != PPD_UI_PICKMANY)
for (i = o->num_choices, c = o->choices; i > 0; i --, c ++)
if (strcmp(c->choice, choice) != 0)
c->marked = 0;
/*
* Unmark the current PageSize or PageRegion setting, as appropriate...
*/
if (strcmp(option, "PageSize") == 0 || strcmp(option, "PageRegion") == 0)
if (strcmp(option, "PageSize") == 0)
{
/*
* Mark current page size...
*/
for (i = 0; i < ppd->num_sizes; i ++)
ppd->sizes[i].marked = strcmp(ppd->sizes[i].name, choice) == 0;
/*
* Unmark the current PageSize or PageRegion setting, as appropriate...
*/
if (strcmp(option, "PageSize") == 0)
{
o = ppdFindOption(ppd, "PageRegion");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
else
{
o = ppdFindOption(ppd, "PageSize");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
o = ppdFindOption(ppd, "PageRegion");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
else
{
o = ppdFindOption(ppd, "PageSize");
for (i = 0; i < o->num_choices; i ++)
o->choices[i].marked = 0;
}
}
+2 -5
Ver Arquivo
@@ -33,9 +33,6 @@
* Revision History:
*
* $Log: mime.c,v $
* Revision 1.14 1999/07/12 16:09:38 mike
* Fixed all constant arrays to use "const" modifier.
*
* Revision 1.13 1999/06/18 18:36:10 mike
* Fixed address to 44141 Airport View Drive...
*
@@ -180,8 +177,8 @@ mimeDelete(mime_t *mime) /* I - MIME database */
*/
mime_t * /* O - Updated MIME database */
mimeMerge(mime_t *mime, /* I - MIME database to add to */
const char *pathname) /* I - Directory to load */
mimeMerge(mime_t *mime, /* I - MIME database to add to */
char *pathname) /* I - Directory to load */
{
#if defined(WIN32) || defined(__EMX__)
HANDLE dir; /* Directory handle */
+6 -6
Ver Arquivo
@@ -114,16 +114,16 @@ typedef struct /**** MIME Database ****/
extern void mimeDelete(mime_t *mime);
#define mimeLoad(pathname) mimeMerge((mime_t *)0, (pathname));
extern mime_t *mimeMerge(mime_t *mime, const char *pathname);
extern mime_t *mimeMerge(mime_t *mime, char *pathname);
extern mime_t *mimeNew(void);
extern mime_type_t *mimeAddType(mime_t *mime, const char *super, const char *type);
extern int mimeAddTypeRule(mime_type_t *mt, const char *rule);
extern mime_type_t *mimeFileType(mime_t *mime, const char *pathname);
extern mime_type_t *mimeType(mime_t *mime, const char *super, const char *type);
extern mime_type_t *mimeAddType(mime_t *mime, char *super, char *type);
extern int mimeAddTypeRule(mime_type_t *mt, char *rule);
extern mime_type_t *mimeFileType(mime_t *mime, char *pathname);
extern mime_type_t *mimeType(mime_t *mime, char *super, char *type);
extern mime_filter_t *mimeAddFilter(mime_t *mime, mime_type_t *src, mime_type_t *dst,
int cost, const char *filter);
int cost, char *filter);
extern mime_filter_t *mimeFilter(mime_t *mime, mime_type_t *src, mime_type_t *dst,
int *num_filters);
+14 -62
Ver Arquivo
@@ -45,8 +45,8 @@
*/
int /* O - Number of options */
cupsAddOption(const char *name, /* I - Name of option */
const char *value, /* I - Value of option */
cupsAddOption(char *name, /* I - Name of option */
char *value, /* I - Value of option */
int num_options, /* I - Number of options */
cups_option_t **options) /* IO - Pointer to options */
{
@@ -128,8 +128,8 @@ cupsFreeOptions(int num_options, /* I - Number of options */
* 'cupsGetOption()' - Get an option value.
*/
const char * /* O - Option value or NULL */
cupsGetOption(const char *name, /* I - Name of option */
char * /* O - Option value or NULL */
cupsGetOption(char *name, /* I - Name of option */
int num_options,/* I - Number of options */
cups_option_t *options) /* I - Options */
{
@@ -152,7 +152,7 @@ cupsGetOption(const char *name, /* I - Name of option */
*/
int /* O - Number of options found */
cupsParseOptions(const char *arg, /* I - Argument to parse */
cupsParseOptions(char *arg, /* I - Argument to parse */
int num_options, /* I - Number of options */
cups_option_t **options) /* O - Options found */
{
@@ -279,9 +279,6 @@ cupsMarkOptions(ppd_file_t *ppd, /* I - PPD file */
{
int i; /* Looping var */
int conflict; /* Option conflicts */
char *val, /* Pointer into value */
*ptr, /* Pointer into string */
s[255]; /* Temporary string */
conflict = 0;
@@ -289,40 +286,12 @@ cupsMarkOptions(ppd_file_t *ppd, /* I - PPD file */
for (i = num_options; i > 0; i --, options ++)
if (strcmp(options->name, "media") == 0)
{
/*
* Loop through the option string, separating it at commas and
* marking each individual option.
*/
for (val = options->value; *val;)
{
/*
* Extract the sub-option from the string...
*/
for (ptr = s; *val && *val != ',' && (ptr - s) < (sizeof(s) - 1);)
*ptr++ = *val++;
*ptr++ = '\0';
if (*val == ',')
val ++;
/*
* Mark it...
*/
if (ppdMarkOption(ppd, "PageSize", s))
conflict = 1;
if (ppdMarkOption(ppd, "InputSlot", s))
conflict = 1;
if (ppdMarkOption(ppd, "MediaType", s))
conflict = 1;
if (ppdMarkOption(ppd, "EFMediaQualityMode", s)) /* EFI */
conflict = 1;
if (strcasecmp(s, "manual") == 0)
if (ppdMarkOption(ppd, "ManualFeed", "True"))
conflict = 1;
}
if (ppdMarkOption(ppd, "PageSize", options->value))
conflict = 1;
if (ppdMarkOption(ppd, "InputSlot", options->value))
conflict = 1;
if (ppdMarkOption(ppd, "MediaType", options->value))
conflict = 1;
}
else if (strcmp(options->name, "sides") == 0)
{
@@ -330,27 +299,15 @@ cupsMarkOptions(ppd_file_t *ppd, /* I - PPD file */
{
if (ppdMarkOption(ppd, "Duplex", "None"))
conflict = 1;
if (ppdMarkOption(ppd, "EFDuplex", "None")) /* EFI */
conflict = 1;
if (ppdMarkOption(ppd, "KD03Duplex", "None")) /* Kodak */
conflict = 1;
}
else if (strcmp(options->value, "two-sided-long-edge") == 0)
{
if (ppdMarkOption(ppd, "Duplex", "DuplexNoTumble"))
conflict = 1;
if (ppdMarkOption(ppd, "EFDuplex", "DuplexNoTumble")) /* EFI */
conflict = 1;
if (ppdMarkOption(ppd, "KD03Duplex", "DuplexNoTumble")) /* Kodak */
if (ppdMarkOption(ppd, "Duplex", "NoTumble"))
conflict = 1;
}
else if (strcmp(options->value, "two-sided-short-edge") == 0)
{
if (ppdMarkOption(ppd, "Duplex", "DuplexTumble"))
conflict = 1;
if (ppdMarkOption(ppd, "EFDuplex", "DuplexTumble")) /* EFI */
conflict = 1;
if (ppdMarkOption(ppd, "KD03Duplex", "DuplexTumble")) /* Kodak */
if (ppdMarkOption(ppd, "Duplex", "Tumble"))
conflict = 1;
}
}
@@ -358,12 +315,7 @@ cupsMarkOptions(ppd_file_t *ppd, /* I - PPD file */
{
if (ppdMarkOption(ppd, "Resolution", options->value))
conflict = 1;
if (ppdMarkOption(ppd, "SetResolution", options->value))
/* Calcomp, Linotype, QMS, Summagraphics, Tektronix, Varityper */
conflict = 1;
if (ppdMarkOption(ppd, "JCLResolution", options->value)) /* HP */
conflict = 1;
if (ppdMarkOption(ppd, "CNRes_PGP", options->value)) /* Canon */
if (ppdMarkOption(ppd, "JCLResolution", options->value))
conflict = 1;
}
else if (ppdMarkOption(ppd, options->name, options->value))
+30 -40
Ver Arquivo
@@ -45,7 +45,7 @@
ppd_size_t * /* O - Size record for page or NULL */
ppdPageSize(ppd_file_t *ppd, /* I - PPD file record */
const char *name) /* I - Size name */
char *name) /* I - Size name */
{
int i; /* Looping var */
float w, l; /* Width and length of page */
@@ -57,19 +57,9 @@ ppdPageSize(ppd_file_t *ppd, /* I - PPD file record */
if (name != NULL)
{
if (strncmp(name, "Custom.", 7) == 0 && ppd->variable_sizes)
if (strncmp(name, "Custom.", 7) == 0 &&
strcmp(ppd->sizes[0].name, "Custom") == 0)
{
/*
* Find the custom page size...
*/
for (i = 0; i < ppd->num_sizes; i ++)
if (strcmp("Custom", ppd->sizes[i].name) == 0)
break;
if (i == ppd->num_sizes)
return (NULL);
/*
* Variable size; size name can be one of the following:
*
@@ -85,42 +75,42 @@ ppdPageSize(ppd_file_t *ppd, /* I - PPD file record */
if (strcasecmp(units, "in") == 0)
{
ppd->sizes[i].width = w * 72.0;
ppd->sizes[i].length = l * 72.0;
ppd->sizes[i].left = ppd->custom_margins[0];
ppd->sizes[i].bottom = ppd->custom_margins[1];
ppd->sizes[i].right = w * 72.0 - ppd->custom_margins[2];
ppd->sizes[i].top = l * 72.0 - ppd->custom_margins[3];
ppd->sizes[0].width = w * 72.0;
ppd->sizes[0].length = l * 72.0;
ppd->sizes[0].left = ppd->custom_margins[0];
ppd->sizes[0].bottom = ppd->custom_margins[1];
ppd->sizes[0].right = w * 72.0 - ppd->custom_margins[2];
ppd->sizes[0].top = l * 72.0 - ppd->custom_margins[3];
}
else if (strcasecmp(units, "cm") == 0)
{
ppd->sizes[i].width = w * 2.54 * 72.0;
ppd->sizes[i].length = l * 2.54 * 72.0;
ppd->sizes[i].left = ppd->custom_margins[0];
ppd->sizes[i].bottom = ppd->custom_margins[1];
ppd->sizes[i].right = w * 2.54 * 72.0 - ppd->custom_margins[2];
ppd->sizes[i].top = l * 2.54 * 72.0 - ppd->custom_margins[3];
ppd->sizes[0].width = w * 2.54 * 72.0;
ppd->sizes[0].length = l * 2.54 * 72.0;
ppd->sizes[0].left = ppd->custom_margins[0];
ppd->sizes[0].bottom = ppd->custom_margins[1];
ppd->sizes[0].right = w * 2.54 * 72.0 - ppd->custom_margins[2];
ppd->sizes[0].top = l * 2.54 * 72.0 - ppd->custom_margins[3];
}
else if (strcasecmp(units, "mm") == 0)
{
ppd->sizes[i].width = w * 25.4 * 72.0;
ppd->sizes[i].length = l * 25.4 * 72.0;
ppd->sizes[i].left = ppd->custom_margins[0];
ppd->sizes[i].bottom = ppd->custom_margins[1];
ppd->sizes[i].right = w * 25.4 * 72.0 - ppd->custom_margins[2];
ppd->sizes[i].top = l * 25.4 * 72.0 - ppd->custom_margins[3];
ppd->sizes[0].width = w * 25.4 * 72.0;
ppd->sizes[0].length = l * 25.4 * 72.0;
ppd->sizes[0].left = ppd->custom_margins[0];
ppd->sizes[0].bottom = ppd->custom_margins[1];
ppd->sizes[0].right = w * 25.4 * 72.0 - ppd->custom_margins[2];
ppd->sizes[0].top = l * 25.4 * 72.0 - ppd->custom_margins[3];
}
else
{
ppd->sizes[i].width = w;
ppd->sizes[i].length = l;
ppd->sizes[i].left = ppd->custom_margins[0];
ppd->sizes[i].bottom = ppd->custom_margins[1];
ppd->sizes[i].right = w - ppd->custom_margins[2];
ppd->sizes[i].top = l - ppd->custom_margins[3];
ppd->sizes[0].width = w;
ppd->sizes[0].length = l;
ppd->sizes[0].left = ppd->custom_margins[0];
ppd->sizes[0].bottom = ppd->custom_margins[1];
ppd->sizes[0].right = w - ppd->custom_margins[2];
ppd->sizes[0].top = l - ppd->custom_margins[3];
}
return (ppd->sizes + i);
return (ppd->sizes);
}
else
{
@@ -154,7 +144,7 @@ ppdPageSize(ppd_file_t *ppd, /* I - PPD file record */
float /* O - Width of page in points or 0.0 */
ppdPageWidth(ppd_file_t *ppd, /* I - PPD file record */
const char *name) /* I - Size name */
char *name) /* I - Size name */
{
ppd_size_t *size; /* Page size */
@@ -172,7 +162,7 @@ ppdPageWidth(ppd_file_t *ppd, /* I - PPD file record */
float /* O - Length of page in points or 0.0 */
ppdPageLength(ppd_file_t *ppd, /* I - PPD file */
const char *name) /* I - Size name */
char *name) /* I - Size name */
{
ppd_size_t *size; /* Page size */
+1 -5
Ver Arquivo
@@ -854,10 +854,6 @@ ppdOpen(FILE *fp) /* I - File to read from */
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_TYPE));
else if (strcmp(name, "InputSlot") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_MEDIA_SOURCE));
else if (strcmp(name, "ColorModel") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_OUTPUT_MODE));
else if (strcmp(name, "Resolution") == 0)
strcpy(option->text, cupsLangString(language, CUPS_MSG_RESOLUTION));
else
strcpy(option->text, name);
}
@@ -1280,7 +1276,7 @@ ppdOpenFd(int fd) /* I - File to read from */
*/
ppd_file_t * /* O - PPD file record */
ppdOpenFile(const char *filename) /* I - File to read from */
ppdOpenFile(char *filename) /* I - File to read from */
{
FILE *fp; /* File pointer */
ppd_file_t *ppd; /* PPD file record */
+11 -11
Ver Arquivo
@@ -209,20 +209,20 @@ extern int ppdEmit(ppd_file_t *ppd, FILE *fp,
ppd_section_t section);
extern int ppdEmitFd(ppd_file_t *ppd, int fd,
ppd_section_t section);
extern int ppdIsMarked(ppd_file_t *ppd, const char *keyword,
const char *option);
extern int ppdIsMarked(ppd_file_t *ppd, char *keyword,
char *option);
extern void ppdMarkDefaults(ppd_file_t *ppd);
extern int ppdMarkOption(ppd_file_t *ppd, const char *keyword,
const char *option);
extern ppd_choice_t *ppdFindChoice(ppd_option_t *o, const char *option);
extern ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd, const char *keyword);
extern ppd_option_t *ppdFindOption(ppd_file_t *ppd, const char *keyword);
extern int ppdMarkOption(ppd_file_t *ppd, char *keyword,
char *option);
extern ppd_choice_t *ppdFindChoice(ppd_option_t *o, char *option);
extern ppd_choice_t *ppdFindMarkedChoice(ppd_file_t *ppd, char *keyword);
extern ppd_option_t *ppdFindOption(ppd_file_t *ppd, char *keyword);
extern ppd_file_t *ppdOpen(FILE *fp);
extern ppd_file_t *ppdOpenFd(int fd);
extern ppd_file_t *ppdOpenFile(const char *filename);
extern float ppdPageLength(ppd_file_t *ppd, const char *name);
extern ppd_size_t *ppdPageSize(ppd_file_t *ppd, const char *name);
extern float ppdPageWidth(ppd_file_t *ppd, const char *name);
extern ppd_file_t *ppdOpenFile(char *filename);
extern float ppdPageLength(ppd_file_t *ppd, char *name);
extern ppd_size_t *ppdPageSize(ppd_file_t *ppd, char *name);
extern float ppdPageWidth(ppd_file_t *ppd, char *name);
/*
* C++ magic...
+1 -1
Ver Arquivo
@@ -45,7 +45,7 @@ main(int argc, /* I - Number of command-line arguments */
char *argv[]) /* I - Command-line arguments */
{
int i, j, k, m, n; /* Looping vars */
const char *filename; /* File to load */
char *filename; /* File to load */
ppd_file_t *ppd; /* PPD file record */
ppd_size_t *size; /* Size record */
ppd_group_t *group; /* UI group */
+17 -17
Ver Arquivo
@@ -50,8 +50,8 @@
*/
static int compare(mime_type_t **, mime_type_t **);
static int checkrules(const char *, FILE *, mime_magic_t *);
static int patmatch(const char *, const char *);
static int checkrules(char *, FILE *, mime_magic_t *);
static int patmatch(char *, char *);
/*
@@ -59,9 +59,9 @@ static int patmatch(const char *, const char *);
*/
mime_type_t * /* O - New (or existing) MIME type */
mimeAddType(mime_t *mime, /* I - MIME database */
const char *super, /* I - Super-type name */
const char *type) /* I - Type name */
mimeAddType(mime_t *mime, /* I - MIME database */
char *super, /* I - Super-type name */
char *type) /* I - Type name */
{
mime_type_t *temp, /* New MIME type */
**types; /* New MIME types array */
@@ -125,7 +125,7 @@ mimeAddType(mime_t *mime, /* I - MIME database */
int /* O - 0 on success, -1 on failure */
mimeAddTypeRule(mime_type_t *mt, /* I - Type to add to */
const char *rule) /* I - Rule to add */
char *rule) /* I - Rule to add */
{
int num_values, /* Number of values seen */
op, /* Operation code */
@@ -497,14 +497,14 @@ mimeAddTypeRule(mime_type_t *mt, /* I - Type to add to */
* 'mimeFileType()' - Determine the type of a file.
*/
mime_type_t * /* O - Type of file */
mimeFileType(mime_t *mime, /* I - MIME database */
const char *pathname) /* I - Name of file to check */
mime_type_t * /* O - Type of file */
mimeFileType(mime_t *mime, /* I - MIME database */
char *pathname) /* I - Name of file to check */
{
int i; /* Looping var */
FILE *fp; /* File pointer */
mime_type_t **types; /* File types */
const char *filename; /* Base filename of file */
char *filename; /* Base filename of file */
/*
@@ -556,9 +556,9 @@ mimeFileType(mime_t *mime, /* I - MIME database */
*/
mime_type_t * /* O - Matching file type definition */
mimeType(mime_t *mime, /* I - MIME database */
const char *super, /* I - Super-type name */
const char *type) /* I - Type name */
mimeType(mime_t *mime, /* I - MIME database */
char *super, /* I - Super-type name */
char *type) /* I - Type name */
{
mime_type_t key, /* MIME type search key*/
*keyptr, /* Key pointer... */
@@ -620,7 +620,7 @@ compare(mime_type_t **t0, /* I - First type */
*/
static int /* O - 1 if match, 0 if no match */
checkrules(const char *filename, /* I - Filename */
checkrules(char *filename, /* I - Filename */
FILE *fp, /* I - File to check */
mime_magic_t *rules) /* I - Rules to check */
{
@@ -906,9 +906,9 @@ checkrules(const char *filename, /* I - Filename */
* 'patmatch()' - Pattern matching...
*/
static int /* O - 1 if match, 0 if no match */
patmatch(const char *s, /* I - String to match against */
const char *pat) /* I - Pattern to match against */
static int /* O - 1 if match, 0 if no match */
patmatch(char *s, /* I - String to match against */
char *pat) /* I - Pattern to match against */
{
/*
* Range check the input...
+5 -5
Ver Arquivo
@@ -45,7 +45,7 @@
* 'cupsUser()' - Return the current user's name.
*/
const char * /* O - User name */
char * /* O - User name */
cupsUser(void)
{
return ("WindowsUser");
@@ -56,7 +56,7 @@ cupsUser(void)
* 'cupsGetPassword()' - Get a password from the user...
*/
const char * /* O - Password */
char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return (NULL);
@@ -72,7 +72,7 @@ cupsGetPassword(const char *prompt) /* I - Prompt string */
* 'cupsUser()' - Return the current user's name.
*/
const char * /* O - User name */
char * /* O - User name */
cupsUser(void)
{
struct passwd *pwd; /* User/password entry */
@@ -105,7 +105,7 @@ cupsUser(void)
* 'cupsGetPassword()' - Get a password from the user...
*/
const char * /* O - Password */
char * /* O - Password */
cupsGetPassword(const char *prompt) /* I - Prompt string */
{
return (getpass(prompt));
@@ -117,7 +117,7 @@ cupsGetPassword(const char *prompt) /* I - Prompt string */
* 'cupsServer()' - Return the hostname of the default server...
*/
const char * /* O - Server name */
char * /* O - Server name */
cupsServer(void)
{
FILE *fp; /* cupsd.conf file */
+30 -25
Ver Arquivo
@@ -64,7 +64,7 @@ static http_t *cups_server = NULL;
* Local functions...
*/
static char *cups_connect(const char *name, char *printer, char *hostname);
static char *cups_connect(char *name, char *printer, char *hostname);
/*
@@ -72,8 +72,8 @@ static char *cups_connect(const char *name, char *printer, char *hostname);
*/
int /* O - 1 on success, 0 on failure */
cupsCancelJob(const char *name, /* I - Name of printer or class */
int job) /* I - Job ID */
cupsCancelJob(char *name, /* I - Name of printer or class */
int job) /* I - Job ID */
{
char printer[HTTP_MAX_URI], /* Printer name */
hostname[HTTP_MAX_URI], /* Hostname */
@@ -137,10 +137,10 @@ cupsCancelJob(const char *name, /* I - Name of printer or class */
*/
ipp_t * /* O - Response data */
cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
ipp_t *request, /* I - IPP request */
const char *resource, /* I - HTTP resource for POST */
const char *filename) /* I - File to send or NULL */
cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
ipp_t *request, /* I - IPP request */
char *resource, /* I - HTTP resource for POST */
char *filename) /* I - File to send or NULL */
{
ipp_t *response; /* IPP response data */
char length[255]; /* Content-Length field */
@@ -149,8 +149,8 @@ cupsDoFileRequest(http_t *http, /* I - HTTP connection to server */
struct stat fileinfo; /* File information */
int bytes; /* Number of bytes read/written */
char buffer[8192]; /* Output buffer */
const char *password; /* Password string */
char plain[255], /* Plaintext username:password */
char *password, /* Password string */
plain[255], /* Plaintext username:password */
encode[255]; /* Encoded username:password */
char junk[8192]; /* Junk buffer for error data */
static char authstring[255] = "";
@@ -418,7 +418,7 @@ cupsGetClasses(char ***classes) /* O - Classes */
* 'cupsGetDefault()' - Get the default printer or class.
*/
const char * /* O - Default printer or NULL */
char * /* O - Default printer or NULL */
cupsGetDefault(void)
{
ipp_t *request, /* IPP Request */
@@ -490,8 +490,8 @@ cupsGetDefault(void)
* 'cupsGetPPD()' - Get the PPD file for a printer.
*/
const char * /* O - Filename for PPD file */
cupsGetPPD(const char *name) /* I - Printer name */
char * /* O - Filename for PPD file */
cupsGetPPD(char *name) /* I - Printer name */
{
FILE *fp; /* PPD file */
int bytes; /* Number of bytes read */
@@ -655,9 +655,9 @@ cupsGetPrinters(char ***printers) /* O - Printers */
*/
int /* O - Job ID */
cupsPrintFile(const char *name, /* I - Printer or class name */
const char *filename, /* I - File to print */
const char *title, /* I - Title of job */
cupsPrintFile(char *name, /* I - Printer or class name */
char *filename, /* I - File to print */
char *title, /* I - Title of job */
int num_options,/* I - Number of options */
cups_option_t *options) /* I - Options */
{
@@ -730,8 +730,13 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
ippAddString(request, IPP_TAG_JOB, IPP_TAG_MIMETYPE, "document-format",
NULL, "application/octet-stream");
#if defined(WIN32) || defined(__EMX__)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
NULL, cupsUser());
NULL, "WindowsUser");
#else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "requesting-user-name",
NULL, cuserid(NULL));
#endif /* WIN32 || __EMX__ */
if (title)
ippAddString(request, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, title);
@@ -807,7 +812,7 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
* String value(s)...
*/
DEBUG_printf(("cupsPrintFile: Adding string option \'%s\' with value \'%s\'...\n",
DEBUG_printf(("cupsPrintJob: Adding string option \'%s\' with value \'%s\'...\n",
option, val));
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
@@ -823,7 +828,7 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
n2 = strtol(s + 1, NULL, 0);
ippAddRange(request, IPP_TAG_JOB, option, n, n2);
DEBUG_printf(("cupsPrintFile: Adding range option \'%s\' with value %d-%d...\n",
DEBUG_printf(("cupsPrintJob: Adding range option \'%s\' with value %d-%d...\n",
option, n, n2));
}
else if (*s == 'x')
@@ -837,14 +842,14 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
else
ippAddString(request, IPP_TAG_JOB, IPP_TAG_KEYWORD, option, NULL, val);
DEBUG_printf(("cupsPrintFile: Adding resolution option \'%s\' with value %s...\n",
DEBUG_printf(("cupsPrintJob: Adding resolution option \'%s\' with value %s...\n",
option, val));
}
else
{
ippAddInteger(request, IPP_TAG_JOB, IPP_TAG_INTEGER, option, n);
DEBUG_printf(("cupsPrintFile: Adding integer option \'%s\' with value %d...\n",
DEBUG_printf(("cupsPrintJob: Adding integer option \'%s\' with value %d...\n",
option, n));
}
}
@@ -854,7 +859,7 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
* Boolean value...
*/
DEBUG_printf(("cupsPrintFile: Adding boolean option \'%s\' with value %d...\n",
DEBUG_printf(("cupsPrintJob: Adding boolean option \'%s\' with value %d...\n",
option, n));
ippAddBoolean(request, IPP_TAG_JOB, option, (char)n);
}
@@ -893,10 +898,10 @@ cupsPrintFile(const char *name, /* I - Printer or class name */
* 'cups_connect()' - Connect to the specified host...
*/
static char * /* I - Printer name or NULL */
cups_connect(const char *name, /* I - Destination (printer[@host]) */
char *printer, /* O - Printer name */
char *hostname) /* O - Hostname */
static char * /* I - Printer name if success, NULL if fail */
cups_connect(char *name, /* I - Destination (printer[@host]) */
char *printer, /* O - Printer name */
char *hostname) /* O - Hostname */
{
char hostbuf[HTTP_MAX_URI];
/* Name of host */
+2 -2
Ver Arquivo
@@ -32,8 +32,8 @@ The following documentation for CUPS is available on this server:
<A HREF="sum.pdf">PDF</A> )
<LI>Software Administrators Manual (
<A HREF="sam.html">HTML</A> |
<A HREF="sam.pdf">PDF</A> )
<A HREF="sum.html">HTML</A> |
<A HREF="sum.pdf">PDF</A> )
<LI>Configuration Management Plan (
<A HREF="cmp.html">HTML</A> |
+38 -39
Ver Arquivo
@@ -303,44 +303,43 @@ directive followed by its value. The following directives are
understood:
<CENTER>
<TABLE BORDER=1 WIDTH=90%>
<TR><TH WIDTH=25%>Directive</TH><TH>Default</TH><TH>Description</TH></TR>
<TR><TD>AccessLog</TD><TD><TD>Specifies the location of the access log
file (default &quot;logs/access_log&quot;).</TD></TR>
<TR><TD>Allow</TD><TD><TD></TR>
<TR><TD>AuthClass</TD><TD><TD></TR>
<TR><TD>AuthType</TD><TD><TD></TR>
<TR><TD>BrowseAddress</TD><TD><TD></TR>
<TR><TD>BrowseInterval</TD><TD><TD></TR>
<TR><TD>BrowsePort</TD><TD><TD></TR>
<TR><TD>BrowseTimeout</TD><TD><TD></TR>
<TR><TD>Browsing</TD><TD><TD></TR>
<TR><TD>DefaultCharset</TD><TD><TD></TR>
<TR><TD>DefaultLanguage</TD><TD><TD></TR>
<TR><TD>Deny</TD><TD><TD></TR>
<TR><TD>DocumentRoot</TD><TD><TD></TR>
<TR><TD>ErrorLog</TD><TD><TD></TR>
<TR><TD>Group</TD><TD><TD></TR>
<TR><TD>HostNameLookups</TD><TD><TD></TR>
<TR><TD>ImplicitClasses</TD><TD><TD></TR>
<TR><TD>KeepAlive</TD><TD><TD></TR>
<TR><TD>KeepAliveTimeout</TD><TD><TD></TR>
<TR><TH WIDTH=25%>Directive</TH><TH>Description</TH></TR>
<TR><TD>AccessLog</TD><TD>Specifies the location of the access log file
(default &quot;logs/access_log&quot;).</TD></TR>
<TR><TD>Allow</TD><TD></TR>
<TR><TD>AuthClass</TD><TD></TR>
<TR><TD>AuthType</TD><TD></TR>
<TR><TD>BrowseAddress</TD><TD></TR>
<TR><TD>BrowseInterval</TD><TD></TR>
<TR><TD>BrowsePort</TD><TD></TR>
<TR><TD>BrowseTimeout</TD><TD></TR>
<TR><TD>Browsing</TD><TD></TR>
<TR><TD>DefaultCharset</TD><TD></TR>
<TR><TD>DefaultLanguage</TD><TD></TR>
<TR><TD>Deny</TD><TD></TR>
<TR><TD>DocumentRoot</TD><TD></TR>
<TR><TD>ErrorLog</TD><TD></TR>
<TR><TD>Group</TD><TD></TR>
<TR><TD>HostNameLookups</TD><TD></TR>
<TR><TD>ImplicitClasses</TD><TD></TR>
<TR><TD>KeepAlive</TD><TD></TR>
<TR><TD>KeepAliveTimeout</TD><TD></TR>
<TR><TD>&lt;Location path&gt;
<BR> &lt;/Location&gt;</TD><TD><TD></TR>
<TR><TD>LogLevel</TD><TD><TD></TR>
<TR><TD>MaxClients</TD><TD><TD></TR>
<TR><TD>MaxLogSize</TD><TD><TD></TR>
<TR><TD>MaxRequestSize</TD><TD><TD></TR>
<TR><TD>Order</TD><TD><TD></TR>
<TR><TD>PageLog</TD><TD><TD></TR>
<TR><TD>Port</TD><TD><TD></TR>
<TR><TD>RIPCache</TD><TD><TD></TR>
<TR><TD>ServerAdmin</TD><TD><TD></TR>
<TR><TD>ServerName</TD><TD><TD></TR>
<TR><TD>ServerRoot</TD><TD><TD></TR>
<TR><TD>SystemGroup</TD><TD><TD></TR>
<TR><TD>TempDir</TD><TD><TD></TR>
<TR><TD>Timeout</TD><TD><TD></TR>
<TR><TD>User</TD><TD><TD></TR>
<BR> &lt;/Location&gt;</TD><TD></TR>
<TR><TD>LogLevel</TD><TD></TR>
<TR><TD>MaxLogSize</TD><TD></TR>
<TR><TD>MaxRequestSize</TD><TD></TR>
<TR><TD>Order</TD><TD></TR>
<TR><TD>PageLog</TD><TD></TR>
<TR><TD>Port</TD><TD></TR>
<TR><TD>RIPCache</TD><TD></TR>
<TR><TD>ServerAdmin</TD><TD></TR>
<TR><TD>ServerName</TD><TD></TR>
<TR><TD>ServerRoot</TD><TD></TR>
<TR><TD>SystemGroup</TD><TD></TR>
<TR><TD>TempDir</TD><TD></TR>
<TR><TD>Timeout</TD><TD></TR>
<TR><TD>User</TD><TD></TR>
</TABLE>
</CENTER>
</P>
@@ -585,8 +584,8 @@ printer-more-info</CODE>, and <CODE>device-uri</CODE> attributes are
required when initially adding a printer and optional when modifying a
printer. </P>
<P>A PPD file or System V interface script may follow the IPP request
body. If a valid interface script or PPD file is not provided then the
printer is treated as a generic PostScript device. </P>
body. Note that the printer will be disabled until a valid interface
script or PPD file is sent. </P>
<P>Add printer will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-authorized</CODE>
, <CODE>ipp-bad-request</CODE>, or <CODE>ipp-attributes</CODE>. </P>
<H3><A NAME=4_7_4>4.7.4 Delete Printer (CUPS_DELETE_PRINTER = 0x4004)</A>
+121 -124
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990709142832Z)/Title(DRAFT - CUPS Interface Design Description)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990624171515Z)/Title(DRAFT - CUPS Interface Design Description)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -325,8 +325,8 @@
237 0 obj<</Subtype/Link/Rect[168.8 435.6 221.6 448.6]/Border[0 0 0]/Dest[436 0 R/XYZ null 547 0]>>endobj
238 0 obj<</Subtype/Link/Rect[144.0 422.4 168.8 435.4]/Border[0 0 0]/Dest[436 0 R/XYZ null 215 0]>>endobj
239 0 obj<</Subtype/Link/Rect[168.8 422.4 216.7 435.4]/Border[0 0 0]/Dest[436 0 R/XYZ null 215 0]>>endobj
240 0 obj<</Subtype/Link/Rect[144.0 409.2 168.8 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 641 0]>>endobj
241 0 obj<</Subtype/Link/Rect[168.8 409.2 224.7 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 641 0]>>endobj
240 0 obj<</Subtype/Link/Rect[144.0 409.2 168.8 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 682 0]>>endobj
241 0 obj<</Subtype/Link/Rect[168.8 409.2 224.7 422.2]/Border[0 0 0]/Dest[442 0 R/XYZ null 682 0]>>endobj
242 0 obj<</Subtype/Link/Rect[72.0 382.8 80.2 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
243 0 obj<</Subtype/Link/Rect[80.2 382.8 123.9 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
244 0 obj<</Subtype/Link/Rect[123.9 382.8 171.0 395.8]/Border[0 0 0]/Dest[445 0 R/XYZ null 818 0]>>endobj
@@ -640,7 +640,7 @@
379 0 obj<</D[436 0 R/XYZ null 800 null]>>endobj
380 0 obj<</D[436 0 R/XYZ null 547 null]>>endobj
381 0 obj<</D[436 0 R/XYZ null 215 null]>>endobj
382 0 obj<</D[442 0 R/XYZ null 641 null]>>endobj
382 0 obj<</D[442 0 R/XYZ null 682 null]>>endobj
383 0 obj<</D[445 0 R/XYZ null 818 null]>>endobj
384 0 obj<</D[445 0 R/XYZ null 737 null]>>endobj
385 0 obj<</D[463 0 R/XYZ null 458 null]>>endobj
@@ -816,30 +816,29 @@ endobj
xÚ­WËrÛ6Ýû+n™Ò†4)Éòc¦ 5¶;^Äqcµ‹Æ]@$(¡& …€ì8qÿ½ç”E1²2îTö"qîëà> O{ ÅøKh0âÿ´Üûe²·~LÉ êÓ$ÇÚè(á¯Yo
¢„JUÊÈ>,¤y=ùÐ!%‰†ƒãhÄÀÉ\¶`”«BR&sUáÁb­–©žUê‹Ìüš‡‰*£TWFkHçðI×TêZRá$ñj|ýö€ül#z«ËRV–€iïnÖóPcEmé^Ù¹³·ÐKè¾é¯‚›×”ÎE-R+ëˆØÑ©HoM!Ìœ77JEESIKW…uÊ$TÁá¼"«; «ª%Væh0N°b·t
}&Ò9Uº
§…¨n=Ü9o¼÷‚Þ]¼;s‘Ê®ÊÜ‚§f¹õ>/°Ç€Ô˜“5<}
üb|9Žh\޳ާ¹.
}¯ª™ƒ¶ì`“j),‡Œ]!#kåéwËÍæY¥+ª—…4'>b:öƒ4z²±2™ð§DètœüLÎ
ö¯õ+]_9uôÏB¯ˆðK@ŒÃ?ƒ.n¥· Ã=t×È]ãðøQgÖ‰‚$‰DdT
‹½y$
ûÂ"!
Þ½“àü5káínl3í¸oN¿œÉÏ oáqL«O Lªƒuži)xP!«¶}§Ü¢V•ÓBþYc!<ëú—»¹š:bw¢XÊëÚ¾\ ñ½\¨Ð©ðœ´âÙÀ>%oÕO¼þó‘
=S¦ñå)ýµ]?xÃ2Hñ
™÷v‰ü<}ÿHËJÔtù~â%Öm7ärk7ÞU5úåžò-r-Ðs¶ƒrlwq®º›:(´¾¥@´6ø‚Žfïu}KÓ+Ѭ3×™Dt‰ˆ¦j¢U*Q¡=­•ÚØÐ(t“|TÖ+ÊUm|£ÜœCá ï£ä9Ô÷Ýöîÿ›C¸Xíe“¨T3—èE“è…c´o æÛÉPËE-
šFoô²N%ÇØq<“ á»#,¢óí# ŽŒmêë¦óœK☧bdÏ'-j=«EÉë¤]ä[r¡ƒÅª´%³)G–AråF¾Ä<[ÏhEÊR¹„ˆDpZ2èíïW×+û™ÂF£xÖIu­seè“jHWˆç:­ÕÂÒwJÈžJã^0)çÈ—lg“½8ŠqnâK—¿Ò Ž‘u T©¤’õ°y*èÚŸªÖ)š$ÍNsŠ~ÇìMïêê¬úÕ5
’éÉd
§…¨n=Ü9o¼÷‚Þ]¼;s‘Ê®ÊÜ‚§f¹õ>/°Ç€Ô˜“5<}
üb|9Žh\޳ާ¹.
}¯ª™ƒ¶ì`“j),‡Œ]!#kåéwËÍæY¥+ª—…4'>b:öƒ4z²±2™ð§DètœüLÎ
ö¯õ+]_9uôÏB¯ˆðK@ŒÃ?ƒ.n¥· Ã=t×È]ãðøQgÖ‰‚$‰DdT
‹½y$
ûÂ"!
Þ½“àü5káínl3í¸oN¿œÉÏ oáqL«O Lªƒuži)xP!«¶}§Ü¢V•ÓBþYc!<ëú—»¹š:bw¢XÊëÚ¾\ ñ½\¨Ð©ðœ´âÙÀ>%oÕO¼þó‘
=S¦ñå)ýµ]?xÃ2Hñ
™÷v‰ü<}ÿHËJÔtù~â%Öm7ärk7ÞU5úåžò-r-Ðs¶ƒrlwq®º›:(´¾¥@´6ø‚Žfïu}KÓ+Ѭ3×™Dt‰ˆ¦j¢U*Q¡=­•ÚØÐ(t“|TÖ+ÊUm|£ÜœCá ï£ä9Ô÷Ýöîÿ›C¸Xíe“¨T3—èE“è…c´o æÛÉPËE-
šFoô²N%ÇØq<“ á»#,¢óí# ŽŒmêë¦óœK☧bdÏ'-j=«EÉë¤]ä[r¡ƒÅª´%³)G–AråF¾Ä<[ÏhEÊR¹„ˆDpZ2èíïW×+û™ÂF£xÖIu­seè“jHWˆç:­ÕÂÒwJÈžJã^0)çÈ—lg“½8ŠqnâK—¿Ò Ž‘u T©¤’õ°y*èÚŸªÖ)š$ÍNsŠ~ÇìMïêê¬úÕ5
L}_ø=†ïÃhàê÷ÉtÜlnowã"Y\iž­K†Û|]][[¹Y†Ž*ï0‹ Ÿ{É1¯§Këú9œå¶´®‹©Dójü9jT&ƒGnÜž~ŸO(ô]0
’éÉd
jòó^µü€W‡G|íÕ| QÒ0éãÄ· ßFp
7£îˆÔ³'¢Æ™Æ k"Óù¥Fõ¿:ˆãÁI‹“gCÃò­Ï­€|”îᙸր’ŽFãt Pâ>bwÀÛà‡|^Þ‰o!JêãïÄ·À#evã[àÐ0[xÞ<6u÷\¢£ö]¦]û
L}_ø=†ïÃhàê÷ÉtÜlnowã"Y\iž­K†Û|]][[¹Y†Ž*ï0‹ Ÿ{É1¯§Këú9œå¶´®‹©Dójü9jT&ƒGnÜž~ŸO(ô]0
1236
endobj
433 0 obj<</Type/Page/Parent 408 0 R/Contents 434 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
434 0 obj<</Length 435 0 R/Filter/FlateDecode>>stream
¹@k˜ImFXGÈ¢áa?fÉ¿:ãç~!iÛû¥ÿ·ùendstream
endobj
432 0 obj
1236
endobj
433 0 obj<</Type/Page/Parent 408 0 R/Contents 434 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
434 0 obj<</Length 435 0 R/Filter/FlateDecode>>stream
VMoã6½ûW r©·€Krœ¤@rHë¦Þ
UƒÝp¨•n
ì…–(› ‰Ôò#¶ÿ}gHÑÚ4n à ߼y3Ô·Qüep›C1ƒ²ýº]?ÞC–Á²Æ7³»izËj\¤Ó4K3(]gEc¹þ°üŠ¦ÓƒiRܧ32]n„k`¯+g9tZ½ŠŠ`P*ùʵJv
UƒÝp¨•n
Q'pŸæA%YAëjL¯pÚ¯åtɯí¾ãÏXŠ¿Ö¬=G•ÿ`…d–öö¾ãZ^UF‡À1½Œ7Há©FÈýC0®ë”¶Æ[ !N%4/m³/:^
ÖDÀ=þÚÓÂUr-Ûê·¯¯ÒÿÈ’ÏÒé‘ÿÜóÿ̤c̓ê7ïWa¥TÙ<)ƒT–v
@@ -889,16 +888,14 @@ endobj
Qx~F"Â`Þ(meÓ’ÜèÒÉy¿
C6êk4“‘PªJþµªµ-˜¯Ø4P$­”–ÝÒÕt<™€•,±©k©m¿ÙZÑXxQvÖ¥6 ]Àãéɧ“Ç3'©½ââ4Ÿ‰FäHLú0öúoD>môð©úW—ØçmßkQK§D8©¥z^4Â*£¡PÌ­ZJ(MU™YÀÓ+( ]Šj! ¸û-¥Ÿ×­‚[x\”ŽU±ÆŸ}ý¢¾~1Åâ
õr¯ß¢(Ä\ Ø­Ë6oÔÜÉÚí…GXУ7ºáŸæã,õê.®e)•½ó—ÜîríÜçýîå¡Á¼PæÌ¾[h‡öBßѾW8|‰–*—÷“ݼl4Âï¡òèÍ=ÊRîgÒD—fi1<z iÌ}³}3¹Øo¥GØÁ£·sîMð»÷€wž9˜¸Co!Æ|ÞYÿÃvŒF«ëßo;Þl»pDýõO­°r7kØYåÐjxôÆ®Lû® ƒ$ô£áþê6ƒ!Œî¦0q%(E.'†zÖ°68†.pØGÔ-qã„§oÃ>„|1o‹Õ¤ÇCýüendstream
©7}·N#T¦tꡔꖒpËxWËž4ŸC[õ@ÀnuÓI M3ì²À§–•{Ça]©ÒȪöR]f}ßuÆ|âj9YÉ¿•©\¾Õª65è {WWPh ™«R6K‹ËÙ Œüm<¸ÔE!KÓnÖFTž”Y±®õ¦\Âýñѧ£û ¡i{íéJT"ÅÀ^»ÁBWµW"]A©ËñC.ÊŸcç·Þ;.E!-‰°¨™zÜTÂ(]ÂRU25j+!Óy®ŸäžA¡éVäé=°ÛRåã¢q
‹è˜£õò³Ë_Ðæ/$˜¼1'wújeE }E˜`».ë´Rk‹õqåø”PÚNͱyþ©…?¦*Ÿ43õl*3±ÉÍ­»â&mçoN}vÚɣx7w¹0b:µÃÜ«]OñÐwÕ7•[•Ê»ù¬'r0Gº#A6²ï»K›•™î ÊãÆ¢S¿ý5™þªSÑ_œÆ”ƒS¿˜4gý†½Û^6‰˜_NÝ–½~ÑÏþGÙ±¦X†–Sw— ÚŽ]adOÔ¦Pg£QwödÜö$åÃüâ:1\ÞÝ.`fS‰TÎ õX›±1¶†ãÖ’»ä“ç;yõ Òͺ^îæ<êûè-$/Šendstream
endobj
444 0 obj
695
endobj
445 0 obj<</Type/Page/Parent 408 0 R/Contents 446 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
endobj
444 0 obj
630
endobj
445 0 obj<</Type/Page/Parent 408 0 R/Contents 446 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F5 5 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
446 0 obj<</Length 447 0 R/Filter/FlateDecode>>stream
–Ár£8†ï~Š>:I` [µ‡q&³åª­-ïÄsËE€¼f#VˆÄ~ûmIàØTª\ýêþôwKâ¿V üÒãl½›=~‹Æ°ÛãH¸
`—Íx>i¡J^À¦Ä‡=OEý°û×i—^äÔ‹eä9½GáKU½Èô§Ð°URËTnB”¶r?öB#ßÄ•¼jå×ÀKˆI®!->ïž¶›-ÔN˜Ê²©Îeé ‘‰=o
`—Íx>i¡J^À¦Ä‡=OEý°û×i—^äÔ‹eä9½GáKU½Èô§Ð°URËTnB”¶r?öB#ßÄ•¼jå×ÀKˆI®!->ïž¶›-ÔN˜Ê²©Îeé ‘‰=o
F!Ô[ž
¨¤Ò&NL ñz€‘ fðôcûk%ßë¼ügtÿ ÖEÂk‘A¢$ÏR^ëŽÌƒõù¬8£C–•P\‹d‰+1é1)õ“Þ¬+ô©×Ž³Ð­ã™§‡«d·Fe¢NUž`LеÆð ÷Èh° Œ¦rSU
@@ -1007,7 +1004,7 @@ endobj
‚@„ïûsÔƒ¶«’zèºB^*ý½ RÛ
i©‡¿6b>øæÅø7þÖT=XBl“GÔAø>BƒnVVîs‚ƒ´>U8Œ«ž»‹ÒÈôÒßG3jîŸk?6
Ì1¢ó7EdçEnˆÜÐQêA«Åt]ÐXæ¶-e!SjcRaþ8ÛØ’Ø™}ý^-
endobj
endstream
endobj
468 0 obj
154
@@ -1477,101 +1474,101 @@ xref
0000030122 00000 n
0000030228 00000 n
0000030334 00000 n
0000030546 00000 n
0000030652 00000 n
0000030758 00000 n
0000030864 00000 n
0000030970 00000 n
0000031076 00000 n
0000031182 00000 n
0000031288 00000 n
0000031394 00000 n
0000031500 00000 n
0000031606 00000 n
0000031712 00000 n
0000031818 00000 n
0000031924 00000 n
0000032030 00000 n
0000032136 00000 n
0000032242 00000 n
0000032348 00000 n
0000032454 00000 n
0000032560 00000 n
0000032666 00000 n
0000032769 00000 n
0000032872 00000 n
0000032975 00000 n
0000033079 00000 n
0000033181 00000 n
0000033284 00000 n
0000034654 00000 n
0000034758 00000 n
0000034863 00000 n
0000034967 00000 n
0000035072 00000 n
0000035122 00000 n
0000035156 00000 n
0000035190 00000 n
0000035785 00000 n
0000035834 00000 n
0000035883 00000 n
0000035932 00000 n
0000035981 00000 n
0000036030 00000 n
0000036079 00000 n
0000036128 00000 n
0000036177 00000 n
0000036226 00000 n
0000036275 00000 n
0000036324 00000 n
0000036373 00000 n
0000036422 00000 n
0000036471 00000 n
0000036520 00000 n
0000036569 00000 n
0000036618 00000 n
0000036667 00000 n
0000036716 00000 n
0000036765 00000 n
0000036814 00000 n
0000036863 00000 n
0000036912 00000 n
0000036961 00000 n
0000037010 00000 n
0000037059 00000 n
0000037108 00000 n
0000037157 00000 n
0000037206 00000 n
0000037255 00000 n
0000037304 00000 n
0000037353 00000 n
0000037402 00000 n
0000037451 00000 n
0000037500 00000 n
0000037549 00000 n
0000037598 00000 n
0000037647 00000 n
0000037696 00000 n
0000037745 00000 n
0000037794 00000 n
0000037843 00000 n
0000037892 00000 n
0000037941 00000 n
0000038218 00000 n
0000038370 00000 n
0000044766 00000 n
0000044788 00000 n
0000044901 00000 n
0000045003 00000 n
0000045023 00000 n
0000045163 00000 n
0000046071 00000 n
0000046092 00000 n
0000046205 00000 n
0000046396 00000 n
0000046417 00000 n
0000030440 00000 n
0000030546 00000 n
0000030652 00000 n
0000030758 00000 n
0000030864 00000 n
0000030970 00000 n
0000031076 00000 n
0000031182 00000 n
0000031288 00000 n
0000031394 00000 n
0000031500 00000 n
0000031606 00000 n
0000031712 00000 n
0000031818 00000 n
0000031924 00000 n
0000032030 00000 n
0000032136 00000 n
0000032242 00000 n
0000032348 00000 n
0000032454 00000 n
0000032560 00000 n
0000032666 00000 n
0000032769 00000 n
0000032872 00000 n
0000032975 00000 n
0000033079 00000 n
0000033181 00000 n
0000033284 00000 n
0000034654 00000 n
0000034758 00000 n
0000034863 00000 n
0000034967 00000 n
0000035072 00000 n
0000035122 00000 n
0000035156 00000 n
0000035190 00000 n
0000035785 00000 n
0000035834 00000 n
0000035883 00000 n
0000035932 00000 n
0000035981 00000 n
0000036030 00000 n
0000036079 00000 n
0000036128 00000 n
0000036177 00000 n
0000036226 00000 n
0000036275 00000 n
0000036324 00000 n
0000036373 00000 n
0000036422 00000 n
0000036471 00000 n
0000036520 00000 n
0000036569 00000 n
0000036618 00000 n
0000036667 00000 n
0000036716 00000 n
0000036765 00000 n
0000036814 00000 n
0000036863 00000 n
0000036912 00000 n
0000036961 00000 n
0000037010 00000 n
0000037059 00000 n
0000037108 00000 n
0000037157 00000 n
0000037206 00000 n
0000037255 00000 n
0000037304 00000 n
0000037353 00000 n
0000037402 00000 n
0000037451 00000 n
0000037500 00000 n
0000037549 00000 n
0000037598 00000 n
0000037647 00000 n
0000037696 00000 n
0000037745 00000 n
0000037794 00000 n
0000037843 00000 n
0000037892 00000 n
0000037941 00000 n
0000038218 00000 n
0000038370 00000 n
0000044766 00000 n
0000044788 00000 n
0000044901 00000 n
0000045003 00000 n
0000045023 00000 n
0000045163 00000 n
0000046071 00000 n
0000046092 00000 n
0000046205 00000 n
0000046396 00000 n
0000046417 00000 n
0000046557 00000 n
0000047157 00000 n
0000047291 00000 n
0000047178 00000 n
0000047291 00000 n
+2 -42
Ver Arquivo
@@ -305,185 +305,145 @@ followed by its value. The following directives are understood:
<CENTER><TABLE WIDTH="90%" BORDER="1">
<TR>
<TH WIDTH="25%">Directive</TH>
<TH>Default</TH>
<TH>Description</TH>
</TR>
<TR>
<TD>AccessLog</TD>
<TD></TD>
<TD>Specifies the location of the access log file (default
"logs/access_log").</TD>
</TR>
<TR>
<TD>Allow</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>AuthClass</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>AuthType</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowseAddress</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowseInterval</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowsePort</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>BrowseTimeout</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Browsing</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>DefaultCharset</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>DefaultLanguage</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Deny</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>DocumentRoot</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ErrorLog</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Group</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>HostNameLookups</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ImplicitClasses</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>KeepAlive</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>KeepAliveTimeout</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>&lt;Location path&gt;<BR>
&lt;/Location&gt;</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>LogLevel</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>MaxClients</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>MaxLogSize</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>MaxRequestSize</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Order</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>PageLog</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Port</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>RIPCache</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ServerAdmin</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ServerName</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>ServerRoot</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>SystemGroup</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>TempDir</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>Timeout</TD>
<TD></TD>
<TD></TD>
</TR>
<TR>
<TD>User</TD>
<TD></TD>
<TD></TD>
</TR>
</TABLE></CENTER>
@@ -975,8 +935,8 @@ are required when initially adding a printer and optional when modifying
a printer.
<P>A PPD file or System V interface script may follow the IPP request
body. If a valid interface script or PPD file is not provided then the
printer is treated as a generic PostScript device.
body. Note that the printer will be disabled until a valid interface script or
PPD file is sent.
<P>Add printer will return <CODE>ipp-ok</CODE>, <CODE>ipp-not-authorized</CODE>,
<CODE>ipp-bad-request</CODE>, or <CODE>ipp-attributes</CODE>.
+10 -10
Ver Arquivo
@@ -26,16 +26,16 @@ Copyright 1997-1999, All Rights Reserved<BR>
<LI><A HREF=#2_1>2.1 CUPS Documentation</A></LI>
<LI><A HREF=#2_2>2.2 Other Documents</A></LI>
</UL>
<B><A HREF=#3>3 Local Access Risks</A></B>
<B><A HREF=#3>3 3 - Local Access Risks</A></B>
<UL>
<LI><A HREF=#3_1>3.1 Security Breaches</A></LI>
</UL>
<B><A HREF=#4>4 Remote Access Risks</A></B>
<UL>
<LI><A HREF=#4_1>4.1 Denial of Service Attacks</A></LI>
<LI><A HREF=#4_2>4.2 Security Breaches</A></LI>
<LI><A HREF=#4_0_1>4.0.1 Denial of Service Attacks</A></LI>
<LI><A HREF=#4_0_2>4.0.2 Security Breaches</A></LI>
</UL>
<B><A HREF=#5>A Glossary</A></B>
</UL>
<B><A HREF=#4>4 4 - Remote Access Risks</A></B><B><A HREF=#5>A Glossary</A>
</B>
<UL>
<LI><A HREF=#5_1>A.1 Terms</A></LI>
<LI><A HREF=#5_2>A.2 Acronyms</A></LI>
@@ -96,7 +96,7 @@ sections:</P>
<LI>IPP/1.0: Model and Semantics </LI>
<LI>RFC 1179, Line Printer Daemon Protocol </LI>
</UL>
<H1><A NAME=3>3 Local Access Risks</A></H1>
<H1><A NAME=3>3 3 - Local Access Risks</A></H1>
<P>Local access risks are those that can be exploited only with a local
user account. This section does not address issues related to
dissemination of the root password or other security issues associated
@@ -107,11 +107,11 @@ directory, it is possible for local users to read the contents of print
files before they are printed. </P>
<P>This problem can be alleviated by making the request directory
readable only by the user specified in the CUPS configuration file. </P>
<H1><A NAME=4>4 Remote Access Risks</A></H1>
<H1><A NAME=4>4 4 - Remote Access Risks</A></H1>
<P>Remote access risks are those that can be exploited without a local
user account and/or from a remote system. This section does not address
issues related to network or firewall security. </P>
<H2><A NAME=4_1>4.1 Denial of Service Attacks</A></H2>
<H3><A NAME=4_0_1>4.0.1 Denial of Service Attacks</A></H3>
<P>Like all internet services, the CUPS server is vulnerable to denial
of service attacks, including: </P>
<OL>
@@ -153,7 +153,7 @@ large attribute values. </P>
user-level access control as needed for expensive printers. </P>
</LI>
</OL>
<H2><A NAME=4_2>4.2 Security Breaches</A></H2>
<H3><A NAME=4_0_2>4.0.2 Security Breaches</A></H3>
<P>The current CUPS server only supports Basic authentication with
usernames and passwords. This essentially places the clear text of the
username and password on the network. Since CUPS uses the UNIX username
+274 -268
Ver Arquivo
@@ -1,6 +1,6 @@
%PDF-1.2
%âãÏÓ
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990709142834Z)/Title(DRAFT - CUPS Software Security Report)/Author(Easy Software Products)>>endobj
1 0 obj<</Producer(htmldoc 2.0b1 Copyright 1997-1999 Michael Sweet, All Rights Reserved.)/CreationDate(D:19990624171525Z)/Title(DRAFT - CUPS Software Security Report)/Author(Easy Software Products)>>endobj
2 0 obj<</Type/Encoding/BaseEncoding/WinAnsiEncoding>>endobj
3 0 obj<</Type/Font/Subtype/Type1/BaseFont/Courier/Encoding 2 0 R>>endobj
4 0 obj<</Type/Font/Subtype/Type1/BaseFont/Times-Roman/Encoding 2 0 R>>endobj
@@ -9,50 +9,54 @@
7 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica/Encoding 2 0 R>>endobj
8 0 obj<</Type/Font/Subtype/Type1/BaseFont/Helvetica-Bold/Encoding 2 0 R>>endobj
9 0 obj<</Type/Font/Subtype/Type1/BaseFont/Symbol>>endobj
10 0 obj<</Subtype/Link/Rect[72.0 673.2 80.2 686.2]/Border[0 0 0]/Dest[79 0 R/XYZ null 818 0]>>endobj
11 0 obj<</Subtype/Link/Rect[80.2 673.2 107.8 686.2]/Border[0 0 0]/Dest[79 0 R/XYZ null 818 0]>>endobj
12 0 obj<</Subtype/Link/Rect[108.0 660.0 124.5 673.0]/Border[0 0 0]/Dest[79 0 R/XYZ null 737 0]>>endobj
13 0 obj<</Subtype/Link/Rect[124.5 660.0 183.8 673.0]/Border[0 0 0]/Dest[79 0 R/XYZ null 737 0]>>endobj
14 0 obj<</Subtype/Link/Rect[108.0 646.8 124.5 659.8]/Border[0 0 0]/Dest[79 0 R/XYZ null 658 0]>>endobj
15 0 obj<</Subtype/Link/Rect[124.5 646.8 159.6 659.8]/Border[0 0 0]/Dest[79 0 R/XYZ null 658 0]>>endobj
16 0 obj<</Subtype/Link/Rect[159.6 646.8 203.0 659.8]/Border[0 0 0]/Dest[79 0 R/XYZ null 658 0]>>endobj
17 0 obj<</Subtype/Link/Rect[108.0 633.6 124.5 646.6]/Border[0 0 0]/Dest[79 0 R/XYZ null 434 0]>>endobj
18 0 obj<</Subtype/Link/Rect[124.5 633.6 173.1 646.6]/Border[0 0 0]/Dest[79 0 R/XYZ null 434 0]>>endobj
19 0 obj<</Subtype/Link/Rect[173.1 633.6 216.4 646.6]/Border[0 0 0]/Dest[79 0 R/XYZ null 434 0]>>endobj
20 0 obj<</Subtype/Link/Rect[72.0 607.2 80.2 620.2]/Border[0 0 0]/Dest[85 0 R/XYZ null 818 0]>>endobj
21 0 obj<</Subtype/Link/Rect[80.2 607.2 131.6 620.2]/Border[0 0 0]/Dest[85 0 R/XYZ null 818 0]>>endobj
22 0 obj<</Subtype/Link/Rect[108.0 594.0 124.5 607.0]/Border[0 0 0]/Dest[85 0 R/XYZ null 737 0]>>endobj
23 0 obj<</Subtype/Link/Rect[124.5 594.0 154.8 607.0]/Border[0 0 0]/Dest[85 0 R/XYZ null 737 0]>>endobj
24 0 obj<</Subtype/Link/Rect[154.8 594.0 222.6 607.0]/Border[0 0 0]/Dest[85 0 R/XYZ null 737 0]>>endobj
25 0 obj<</Subtype/Link/Rect[108.0 580.8 124.5 593.8]/Border[0 0 0]/Dest[85 0 R/XYZ null 540 0]>>endobj
26 0 obj<</Subtype/Link/Rect[124.5 580.8 152.3 593.8]/Border[0 0 0]/Dest[85 0 R/XYZ null 540 0]>>endobj
27 0 obj<</Subtype/Link/Rect[152.3 580.8 202.4 593.8]/Border[0 0 0]/Dest[85 0 R/XYZ null 540 0]>>endobj
28 0 obj<</Subtype/Link/Rect[72.0 554.4 80.2 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
29 0 obj<</Subtype/Link/Rect[80.2 554.4 109.3 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
30 0 obj<</Subtype/Link/Rect[109.3 554.4 143.2 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
31 0 obj<</Subtype/Link/Rect[143.2 554.4 168.9 567.4]/Border[0 0 0]/Dest[91 0 R/XYZ null 818 0]>>endobj
32 0 obj<</Subtype/Link/Rect[108.0 541.2 124.5 554.2]/Border[0 0 0]/Dest[91 0 R/XYZ null 690 0]>>endobj
33 0 obj<</Subtype/Link/Rect[124.5 541.2 163.9 554.2]/Border[0 0 0]/Dest[91 0 R/XYZ null 690 0]>>endobj
34 0 obj<</Subtype/Link/Rect[163.9 541.2 204.2 554.2]/Border[0 0 0]/Dest[91 0 R/XYZ null 690 0]>>endobj
35 0 obj<</Subtype/Link/Rect[72.0 514.8 80.2 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
36 0 obj<</Subtype/Link/Rect[80.2 514.8 119.0 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
37 0 obj<</Subtype/Link/Rect[119.0 514.8 152.9 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
38 0 obj<</Subtype/Link/Rect[152.9 514.8 178.6 527.8]/Border[0 0 0]/Dest[97 0 R/XYZ null 818 0]>>endobj
39 0 obj<</Subtype/Link/Rect[108.0 501.6 124.5 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
40 0 obj<</Subtype/Link/Rect[124.5 501.6 156.6 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
41 0 obj<</Subtype/Link/Rect[156.6 501.6 168.5 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
42 0 obj<</Subtype/Link/Rect[168.5 501.6 204.2 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
43 0 obj<</Subtype/Link/Rect[204.2 501.6 237.8 514.6]/Border[0 0 0]/Dest[97 0 R/XYZ null 704 0]>>endobj
44 0 obj<</Subtype/Link/Rect[108.0 488.4 124.5 501.4]/Border[0 0 0]/Dest[97 0 R/XYZ null 255 0]>>endobj
45 0 obj<</Subtype/Link/Rect[124.5 488.4 163.9 501.4]/Border[0 0 0]/Dest[97 0 R/XYZ null 255 0]>>endobj
46 0 obj<</Subtype/Link/Rect[163.9 488.4 204.2 501.4]/Border[0 0 0]/Dest[97 0 R/XYZ null 255 0]>>endobj
47 0 obj<</Subtype/Link/Rect[72.0 462.0 82.7 475.0]/Border[0 0 0]/Dest[103 0 R/XYZ null 818 0]>>endobj
48 0 obj<</Subtype/Link/Rect[82.7 462.0 124.2 475.0]/Border[0 0 0]/Dest[103 0 R/XYZ null 818 0]>>endobj
49 0 obj<</Subtype/Link/Rect[108.0 448.8 126.9 461.8]/Border[0 0 0]/Dest[103 0 R/XYZ null 737 0]>>endobj
50 0 obj<</Subtype/Link/Rect[126.9 448.8 155.0 461.8]/Border[0 0 0]/Dest[103 0 R/XYZ null 737 0]>>endobj
51 0 obj<</Subtype/Link/Rect[108.0 435.6 126.9 448.6]/Border[0 0 0]/Dest[103 0 R/XYZ null 434 0]>>endobj
52 0 obj<</Subtype/Link/Rect[126.9 435.6 172.8 448.6]/Border[0 0 0]/Dest[103 0 R/XYZ null 434 0]>>endobj
53 0 obj[10 0 R
10 0 obj<</Subtype/Link/Rect[72.0 673.2 80.2 686.2]/Border[0 0 0]/Dest[83 0 R/XYZ null 818 0]>>endobj
11 0 obj<</Subtype/Link/Rect[80.2 673.2 107.8 686.2]/Border[0 0 0]/Dest[83 0 R/XYZ null 818 0]>>endobj
12 0 obj<</Subtype/Link/Rect[108.0 660.0 124.5 673.0]/Border[0 0 0]/Dest[83 0 R/XYZ null 737 0]>>endobj
13 0 obj<</Subtype/Link/Rect[124.5 660.0 183.8 673.0]/Border[0 0 0]/Dest[83 0 R/XYZ null 737 0]>>endobj
14 0 obj<</Subtype/Link/Rect[108.0 646.8 124.5 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
15 0 obj<</Subtype/Link/Rect[124.5 646.8 159.6 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
16 0 obj<</Subtype/Link/Rect[159.6 646.8 203.0 659.8]/Border[0 0 0]/Dest[83 0 R/XYZ null 658 0]>>endobj
17 0 obj<</Subtype/Link/Rect[108.0 633.6 124.5 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
18 0 obj<</Subtype/Link/Rect[124.5 633.6 173.1 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
19 0 obj<</Subtype/Link/Rect[173.1 633.6 216.4 646.6]/Border[0 0 0]/Dest[83 0 R/XYZ null 434 0]>>endobj
20 0 obj<</Subtype/Link/Rect[72.0 607.2 80.2 620.2]/Border[0 0 0]/Dest[89 0 R/XYZ null 818 0]>>endobj
21 0 obj<</Subtype/Link/Rect[80.2 607.2 131.6 620.2]/Border[0 0 0]/Dest[89 0 R/XYZ null 818 0]>>endobj
22 0 obj<</Subtype/Link/Rect[108.0 594.0 124.5 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
23 0 obj<</Subtype/Link/Rect[124.5 594.0 154.8 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
24 0 obj<</Subtype/Link/Rect[154.8 594.0 222.6 607.0]/Border[0 0 0]/Dest[89 0 R/XYZ null 737 0]>>endobj
25 0 obj<</Subtype/Link/Rect[108.0 580.8 124.5 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
26 0 obj<</Subtype/Link/Rect[124.5 580.8 152.3 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
27 0 obj<</Subtype/Link/Rect[152.3 580.8 202.4 593.8]/Border[0 0 0]/Dest[89 0 R/XYZ null 540 0]>>endobj
28 0 obj<</Subtype/Link/Rect[72.0 554.4 80.2 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
29 0 obj<</Subtype/Link/Rect[80.2 554.4 88.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
30 0 obj<</Subtype/Link/Rect[88.5 554.4 97.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
31 0 obj<</Subtype/Link/Rect[97.5 554.4 126.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
32 0 obj<</Subtype/Link/Rect[126.5 554.4 160.5 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
33 0 obj<</Subtype/Link/Rect[160.5 554.4 186.1 567.4]/Border[0 0 0]/Dest[95 0 R/XYZ null 818 0]>>endobj
34 0 obj<</Subtype/Link/Rect[108.0 541.2 124.5 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
35 0 obj<</Subtype/Link/Rect[124.5 541.2 163.9 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
36 0 obj<</Subtype/Link/Rect[163.9 541.2 204.2 554.2]/Border[0 0 0]/Dest[95 0 R/XYZ null 690 0]>>endobj
37 0 obj<</Subtype/Link/Rect[144.0 528.0 168.8 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
38 0 obj<</Subtype/Link/Rect[168.8 528.0 200.8 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
39 0 obj<</Subtype/Link/Rect[200.8 528.0 212.7 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
40 0 obj<</Subtype/Link/Rect[212.7 528.0 248.5 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
41 0 obj<</Subtype/Link/Rect[248.5 528.0 282.1 541.0]/Border[0 0 0]/Dest[101 0 R/XYZ null 689 0]>>endobj
42 0 obj<</Subtype/Link/Rect[144.0 514.8 168.8 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
43 0 obj<</Subtype/Link/Rect[168.8 514.8 208.2 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
44 0 obj<</Subtype/Link/Rect[208.2 514.8 248.5 527.8]/Border[0 0 0]/Dest[101 0 R/XYZ null 247 0]>>endobj
45 0 obj<</Subtype/Link/Rect[72.0 488.4 80.2 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
46 0 obj<</Subtype/Link/Rect[80.2 488.4 88.5 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
47 0 obj<</Subtype/Link/Rect[88.5 488.4 97.5 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
48 0 obj<</Subtype/Link/Rect[97.5 488.4 136.3 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
49 0 obj<</Subtype/Link/Rect[136.3 488.4 170.2 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
50 0 obj<</Subtype/Link/Rect[170.2 488.4 195.9 501.4]/Border[0 0 0]/Dest[101 0 R/XYZ null 818 0]>>endobj
51 0 obj<</Subtype/Link/Rect[72.0 462.0 82.7 475.0]/Border[0 0 0]/Dest[107 0 R/XYZ null 818 0]>>endobj
52 0 obj<</Subtype/Link/Rect[82.7 462.0 124.2 475.0]/Border[0 0 0]/Dest[107 0 R/XYZ null 818 0]>>endobj
53 0 obj<</Subtype/Link/Rect[108.0 448.8 126.9 461.8]/Border[0 0 0]/Dest[107 0 R/XYZ null 737 0]>>endobj
54 0 obj<</Subtype/Link/Rect[126.9 448.8 155.0 461.8]/Border[0 0 0]/Dest[107 0 R/XYZ null 737 0]>>endobj
55 0 obj<</Subtype/Link/Rect[108.0 435.6 126.9 448.6]/Border[0 0 0]/Dest[107 0 R/XYZ null 434 0]>>endobj
56 0 obj<</Subtype/Link/Rect[126.9 435.6 172.8 448.6]/Border[0 0 0]/Dest[107 0 R/XYZ null 434 0]>>endobj
57 0 obj[10 0 R
11 0 R
12 0 R
13 0 R
@@ -95,42 +99,46 @@
50 0 R
51 0 R
52 0 R
53 0 R
54 0 R
55 0 R
56 0 R
]endobj
54 0 obj<</Dests 55 0 R>>endobj
55 0 obj<</Kids[56 0 R]>>endobj
56 0 obj<</Limits[(1)(5_2)]/Names[(1)57 0 R(1_1)58 0 R(1_2)59 0 R(1_3)60 0 R(2)61 0 R(2_1)62 0 R(2_2)63 0 R(3)64 0 R(3_1)65 0 R(4)66 0 R(4_1)67 0 R(4_2)68 0 R(5)69 0 R(5_1)70 0 R(5_2)71 0 R]>>endobj
57 0 obj<</D[79 0 R/XYZ null 818 null]>>endobj
58 0 obj<</D[79 0 R/XYZ null 737 null]>>endobj
59 0 obj<</D[79 0 R/XYZ null 658 null]>>endobj
60 0 obj<</D[79 0 R/XYZ null 434 null]>>endobj
61 0 obj<</D[85 0 R/XYZ null 818 null]>>endobj
62 0 obj<</D[85 0 R/XYZ null 737 null]>>endobj
63 0 obj<</D[85 0 R/XYZ null 540 null]>>endobj
64 0 obj<</D[91 0 R/XYZ null 818 null]>>endobj
65 0 obj<</D[91 0 R/XYZ null 690 null]>>endobj
66 0 obj<</D[97 0 R/XYZ null 818 null]>>endobj
67 0 obj<</D[97 0 R/XYZ null 704 null]>>endobj
68 0 obj<</D[97 0 R/XYZ null 255 null]>>endobj
69 0 obj<</D[103 0 R/XYZ null 818 null]>>endobj
70 0 obj<</D[103 0 R/XYZ null 737 null]>>endobj
71 0 obj<</D[103 0 R/XYZ null 434 null]>>endobj
72 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 14/Kids[73 0 R
76 0 R
109 0 R
112 0 R
79 0 R
82 0 R
85 0 R
88 0 R
91 0 R
94 0 R
97 0 R
100 0 R
103 0 R
106 0 R
58 0 obj<</Dests 59 0 R>>endobj
59 0 obj<</Kids[60 0 R]>>endobj
60 0 obj<</Limits[(1)(5_2)]/Names[(1)61 0 R(1_1)62 0 R(1_2)63 0 R(1_3)64 0 R(2)65 0 R(2_1)66 0 R(2_2)67 0 R(3)68 0 R(3_1)69 0 R(4)70 0 R(4_0_1)71 0 R(4_0_2)72 0 R(5)73 0 R(5_1)74 0 R(5_2)75 0 R]>>endobj
61 0 obj<</D[83 0 R/XYZ null 818 null]>>endobj
62 0 obj<</D[83 0 R/XYZ null 737 null]>>endobj
63 0 obj<</D[83 0 R/XYZ null 658 null]>>endobj
64 0 obj<</D[83 0 R/XYZ null 434 null]>>endobj
65 0 obj<</D[89 0 R/XYZ null 818 null]>>endobj
66 0 obj<</D[89 0 R/XYZ null 737 null]>>endobj
67 0 obj<</D[89 0 R/XYZ null 540 null]>>endobj
68 0 obj<</D[95 0 R/XYZ null 818 null]>>endobj
69 0 obj<</D[95 0 R/XYZ null 690 null]>>endobj
70 0 obj<</D[101 0 R/XYZ null 818 null]>>endobj
71 0 obj<</D[101 0 R/XYZ null 689 null]>>endobj
72 0 obj<</D[101 0 R/XYZ null 247 null]>>endobj
73 0 obj<</D[107 0 R/XYZ null 818 null]>>endobj
74 0 obj<</D[107 0 R/XYZ null 737 null]>>endobj
75 0 obj<</D[107 0 R/XYZ null 434 null]>>endobj
76 0 obj<</Type/Pages/MediaBox[0 0 595 792]/Count 14/Kids[77 0 R
80 0 R
113 0 R
116 0 R
83 0 R
86 0 R
89 0 R
92 0 R
95 0 R
98 0 R
101 0 R
104 0 R
107 0 R
110 0 R
]>>endobj
73 0 obj<</Type/Page/Parent 72 0 R/Contents 74 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
74 0 obj<</Length 75 0 R/Filter/FlateDecode>>stream
77 0 obj<</Type/Page/Parent 76 0 R/Contents 78 0 R/Resources<</ProcSet[/PDF/Text/ImageB/ImageC/ImageI]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
78 0 obj<</Length 79 0 R/Filter/FlateDecode>>stream
xÚíßÜ8rÇ%µúÅOšÙíwNH€ØîO{Ï@pgF›ì[I¢‡]_r‡ öÎë½`ÿûô¯éÖRª*R57<à°¶Én~Äâ·ŠdQý·W7b½ýßøîV¼ÿ ~üßW÷òU"_ýM¼_ÿîíwû|ÿáÃÛµøÝÇ··âööæíݾÖïòÿ|÷ûìßîÅæ_×ûò~_>ìËÇ}yØ—ï÷å÷ÿõîñõ˯Ÿßý‡¸{óîßÅæææÝ=<ˆ;ñÃã«âyxá2+òñv¹\^]ìÊö?–wSç’Ë‹ÈS•‹ËëÇirÉÛ+5R ny71.yÛÅôT.¯“©pᡎhwSàz¸òÈÅ_&ŽsÝG¯\næºåRÙ4Gpf¬ìŽ™e®á™—oǸò+ÏJñ¯âºõ¬•`ã žÍrí—±^Ø2K\òʳ^ü×£så‘×Gùfd®{¯§$crÝx½3—e´ncmËëQ¸däy.“BX-ßÎ5 &€Åƒ)`1ÀÀiÉà‹LËóVqõî·Ì4›k`¬-X2×Ú¼p}òF(³Þ¹2o”òmÏ\y4AÁ}…giLA
ÚÑ ê£såÞ¨eÓW4.rŠÁ2Ç‹Á4<Yì‰\r|,ÏïK8Àå…Ö¹2ω²±Ì%#7¸Ë\kÏ‘²°Ê•yΔÄ"—+Vˆrb®Øs¨l¬qå.auJLO4PQLP40QL*ÒÀk=–+u
«cÀ`z0˜ Æcœ3ŽKºˆÕ×Ã51Ã`z.5Ã`¸áº¸\._?îÊýîâC¿ƒ ùº9Éw÷ z¸ü–¤ùpÕÏ€AßÃuÙ¹Tº7@[p­ûªò¨-­‡õÐãpÒ%77xÃæb‡´tq&ÙŒËÅ
@@ -163,149 +171,143 @@ w
N#îâ2‰ç+ÿ gµ8M°¬š¤­ªKâšÇöÉ„Ãp¥ç?R` š¤­ªKâ
ËnnÆÕ‘~xúçüb[%±JJw¤ôuI\»û_§Ç´è•+ÐýÃŽ§”TܶÕçÇIº›Â«Þ¸"]:ÎñL9/ÁD-©;x®õñóvŸ¼éë n4qcP™FÚº$®ø(C;KOzã:žu^nÔÖ>“âIεuI\pÎ~õ‹Þ¸N!z£·‡~ˆJ¾X_WÉÕLìÜS¤Çùºs_ýq•òAj½Ÿ¼ÍÉëëR¸²£¬wlÆÕv®W®Wy/qÚÌ¢ÕÖ¥påÇ?îܲ!WÛ9l¬¼ÇQY'u)\Ò;½}ÞÎet¾,µ™¥¢‘Õ¢¯Kà*ŽŽyÿ·ýqÕ²hý¤1’!¢.…ëà˜÷n¹O®Ò‹¶ªª™ÓÕ¥ps¶÷ñ}r=]„mäR©’M[ë⸎9Û×7ãêÌûºT³F(Šº.Þ/ïÝ`²û¿ƒËF>ÛÃUsQ“j9ªº®to{·Ü?×¹·³Z(µAÕ%póÞ-Áõ$
vÒ´Õ%póÞ-raß-šµ‹A[]—|òbó¡¸Î‰×Ý\µº®ƒc>ˆd+—I>öîU2«ª+ÖrµÕ¥pmM0ÈÏû§½pUÝ+tnvêêR¸¶’ágÇhÈ•àö;¸ÚêR¸v#ÕõÆTlËoåÒÕ¥pÁá2¬ßÅerïFTþY´ê|[]
Wz¸Y˜s­Ú—_‹ò:d¦åj«KáÊÎN½7®´<žëÚ×Ô:ÛV—•ŸW­\&÷mý»ó¡ÖJËÕV·#ž¯¼mKVO
Wz¸Y˜s­Ú—_‹ò:d¦åj«KáÊÎN½7®´<žëÚ×Ô:ÛV—•ŸW­\&÷mý»ó¡ÖJËÕV·#ž¯¼mKVO
¸ç°çCHýb±­.…«ô^Øþ¸â–µZ«¥.‰Kฌîeç-Uë\-u\‰9×—nSý±Š¾.‰+nüM\¹^a\9w?ªJ§§ÒÊeôþê^Ì·E+—¾.‰K÷~V»\¥Î^\Úº$®ìäÓÛ¹Œ6²wÞè*Ò”˜Ô5*†ïí9ÊÏë
óS|†ïYr¶¾ë…kx®î×-O“+þ‡åJ&ÉÕ½Á±™$—É‚ù…kx.£…夹æ“ä’ÿ°\á$¹º`³gÊL“+z†¯áïq¼pÀµ~†/îw|V“ä‚gÊ•>ÃÑðwÍÆ*]/{]þÝX¥«Ë+Üï:H¥v¸œ ¤º¤.1ü]αJŒâŠ&pt…Øß½u-à]ö…üb×vÚ¢.=@þ®´k‡‡â‚©²Óß"ßܱ€#ÃqMî÷èÓÎaL´åœc†ÎisuÎ1¯;e0òâœn 0îÀ9 ø]s`Ýa ìÕ1–w« ôű•eÖ­Þ€òŽ9°´»³€zŽ9°¸Û¸e°Ž­ÀÖÝQ âHǘè9À §[Bè+àSBŸ#l p#ë”Ðg-œÂ8%ô€ÒWÕ)¡]äк$ôaZ€œŠ.EôQ·ûzâ’z‰‘n(°B?ŸŒ®J\b:‚˜bf C.‡1Æ(X¡÷¦"‡~™+›Ž ¢
´Ð;!樈
´Ð‡‘Ãy™ !ôŽ ì
´Ð;!樈
´Ð‡‘Ãy™ !ôŽ ì
´Ð;"k”Z=]ޱú*q¥‰¤:…àp”^èÃIÈFPåB}0 Ù«\ˆ­²1¯q‰iG„SÀ?'"‰|ø€7\'„#CzY ´pA8bd¡ ¢›Ù*0«s!Ñόݮ€‚"ˆs÷§×ªÁO`‚¡ï‚a?Ä
pŒ=ÁÐïh€‚$#O°îG?Sp ç'HÆ;ö[£'
w‚á# 9‡‘'X†_J)VyN¤¢#‡ˆ„Sp(ˆÂ1â£ÒmœG]ƒQ΀ØpÌMŽ˜Ð9 ê蘛”­v NÌ•>§L ŽôˆJOÚ‘jÓñ”^PºT%m·M4
¨Ss4CDØÒL˵v×iÛ/PÐ'ØÂQ3,ÇB@vé#bJ3$ ¯pF2Ä5íyÝŠG1DI ]¼ÄÇSâㆂ1ÁFˆqz@Á™`¡‹fXYiçÁ ¿XI©
¨Ss4CDØÒL˵v×iÛ/PÐ'ØÂQ3,ÇB@vé#bJ3$ ¯pF2Ä5íyÝŠG1DI ]¼ÄÇSâㆂ1ÁFˆqz@Á™`¡‹fXYiçÁ ¿XI©
Î|Õ,¨jk
œd™‘½¬ 6° ‹ÉsXC>°rHz€5EV
œåöÐ1‡ Ï àl sd Þ$Tê׌ ÌÇ3 ÔKÎcîç ÇÜi:Ü€±¦;peu°ÃõfŽàB*ý@±ž1ð?j˜c† ÀŸ©Ã ë€í°”éL/AƒÈ)Qà¸ÖX°•Ã5CreŽ ˜Œ¸A8F†Xû©¥qB
Õ*
œåöÐ1‡ Ï àl sd Þ$Tê׌ ÌÇ3 ÔKÎcîç ÇÜi:Ü€±¦;peu°ÃõfŽàB*ý@±ž1ð?j˜c† ÀŸ©Ã ë€í°”éL/AƒÈ)Qà¸ÖX°•Ã5CreŽ ˜Œ¸A8F†Xû©¥qB
Õ*
3Cìuá,ùV…™!öªõا»@sá
±GéÈ l
SCô“‘5^)^`&°}Zâ'o†Z.ém‰¹‘tAalˆ=i¢0ò¡`<i{òÎh+TïŒñ¬íÇ;ç†Öƾ¾—)&#CÙOÌþŠemúHÁÂĵïÅî _\P¹RÒ€ÙÔŠf…d.é&#ó vŒÜ&˜¾,™ƒÅ€Š4¯ .Ú7lË7KaK¨vJVa®Š7vLl¬W-‚ѰôñXÙ_(¹“ÍXz©[QÚ ìõ@JØ~ µÉT=ÈX-·ÑÀžç?[ÏóˆúE!›«ˆ8`õ_:G•[ú×lø\)‹Ëó糖Űø¶8 ‹‹9`žw™ô<Xík£N®ØãüÎ?Ö4.L¸¤Ç/—(k̯xŸ¾2â2°Ý<»î2Ç&UÇò¡›ËdÀhúϾ؟»0ä¢.ÔyýØ7ù°ŒLWaÊ•{vÊÅår¹|ý¸-ËåUdøi c.f½tå?b¸¤ƒ\ \f’8Êpá¸Ü°•¬{ë Ç%§6\H.©Í±¡‡ä*"—¸6ö¸²i
š‹µÓÑ“Æ'6¹rg¸…M.g´ç’ÑT4žÆÅÝÂA4h\NHö¼—Â%'c…4.,}tHâÝñY4®|"VHå9þ%`¹FµDJî •kLïL9~¢rØ“’æÈ\£M1ZÚ k¤)FL,cp3ňg» ®Q¦5Ë€ÃEIC3Ø\ƒk=UŽÇ5°v02™\R¸+…&\CŠ"+u˜Ë5/“ŒÍÅHûÄqs
š‹µÓÑ“Æ'6¹rg¸…M.g´ç’ÑT4žÆÅÝÂA4h\NHö¼—Â%'c…4.,}tHâÝñY4®|"VHå9þ%`¹FµDJî •kLïL9~¢rØ“’æÈ\£M1ZÚ k¤)FL,cp3ňg» ®Q¦5Ë€ÃEIC3Ø\ƒk=UŽÇ5°v02™\R¸+…&\CŠ"+u˜Ë5/“ŒÍÅHûÄqs
´cÞ80àÂ?ûÜ‹&\ý›"?KÓˆ«o0ƒäS3®~UÑ$YØ«Om”mÊÕ˜Y2¾19‡º§…‰}®>–-†éêv¸ìË¢ù½ +\…´k‹×æ=²ÃµµE{Cl
w¸
yåÎ`Ùä²4d—›Â5®BÞËàk[}±ÉÅO­>R]Ûë‰].ƒôjDêö˜\\2»T}pqÈ._ÛîC\ļxÙÃ{.úáÚ–G\v¼y×Ë×÷Ƶµƒ¼X>öõÝ}rí‡ívy¡§ëÇ>¿·o®ÃÀín8,¯.vår¹¼~|ìý+á¡@òëôÕ½|õîûâæ£›ïÞ~wë·wBþôOÙ§ï¥x#
ÈEþó¿þß¾|ùçýò§¯¿‰ìó_þòõŸåŸ·íïÄÍÍ®ýÍÝGñææýÛÛ]û]»7yž½¹y»ÞU{s³Ù~ú›ÛOþðËoç…/?ÿôë_ÙW¼{ÿöCés~þëo_þôßÿóuÛÉß½ÙþßÇŸþò‘íþò—mG~ùüåïŸÚ5MäéÿiÁñ½endstream
yåÎ`Ùä²4d—›Â5®BÞËàk[}±ÉÅO­>R]Ûë‰].ƒôjDêö˜\\2»T}pqÈ._ÛîC\ļxÙÃ{.úáÚ–G\v¼y×Ë×÷Ƶµƒ¼X>öõÝ}rí‡ívy¡§ëÇ>¿·o®ÃÀín8,¯.vår¹¼~|ìý+á¡@òëôÕ½|õîûâæ£›ïÞ~wë·wBþôOÙ§ï¥x#
ÈEþó¿þß¾|ùçýò§¯¿‰ìó_þòõŸåŸ·íïÄÍÍ®ýÍÝGñææýÛÛ]û]»7yž½¹y»ÞU{s³Ù~ú›ÛOþðËoç…/?ÿôë_ÙW¼{ÿöCés~þëo_þôßÿóuÛÉß½ÙþßÇŸþò‘íþò—mG~ùüåïŸÚ5MäéÿiÁñ½endstream
endobj
79 0 obj
6308
endobj
76 0 obj<</Type/Page/Parent 72 0 R/Contents 77 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
80 0 obj<</Type/Page/Parent 76 0 R/Contents 81 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
81 0 obj<</Length 82 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
ár
á
ár
á
äHendstream
endobj
82 0 obj
31
endobj
79 0 obj<</Type/Page/Parent 72 0 R/Contents 80 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
83 0 obj<</Type/Page/Parent 76 0 R/Contents 84 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
84 0 obj<</Length 85 0 R/Filter/FlateDecode>>stream
UKo1¾ó+F9%RÙfè-o!¥í6ª.Æ;œx=[Û ¢¿¾c/Bi«TpÁóú¾o|o¥pÊŸÎ;Ðíƒ,[—“ÖûÛ!¤C˜léŸ÷`’§0–TáÉä¹±ž%ƒÆÞ>$G’Â(GãU¡¤ðŠLã܃4]»vúëd®8*üRX‡²¶Ê¯ÀbEÖCei¡rt …^9ö¦*rNÍôN€$#ÑYðs„+*K2ðøiô-ç’i7é„’™UŒÌ<Áxå<–0=>ºzÌÆGÓøŠÖ1ZH“Óä¿îpï³ þ¼@»P¸ü ÁWX`¿ú–"Ê"°ª6>Z¬ÐFJ!vÚ9ë+oE4º˜À%0ò0nå Ñ@Ž Ô‘Ãl7­`¼‘:³”×Ò;ð0”ä‘!8/L.l¾…àHסƒ…кa±@““
}É÷êÖŽ5L (ºå²æû5ÄÀ%ÚÔúV–üÐÖÊ pI´…è’uÖŠ1§nR‚ŸA¿“Ùx’¤¹™£›Ém{”eÜNѸÏD›€ŸK‰§àéÁ3Í"ø^cÍE›µGç>àŠe¸×C§Ç÷Ùõ;x¸½JÓóáôäŒyØþO—šä »?^k¨pQUc~Ä8Ó*Wæ6íh¯¤««0 Ü´¥òs^îÿ(j#C#„æy?¨Ès,Ë’ìKÃ1Í,-] PdäüXZUù-'tñAEbGYvÍ‹ÐfÉpg(ÚìÆÊ …®«sU¥×[ï 696Ã{1³ç®K]7 kç©T?¸öb½Š¼íwŸán¾…>=楷|^ô
 TüîÕKN»Ó“=¼A¾%ª m*ïÚÃ(ã!$¿Ï0 YvbÃÌiïȶ–Õýý<tášd]2Ä?öîÿû†{gŸ„‰špiŠ]Ö´Œë‰q(܇&¿\çï ˜ï/­§þ9¼ÀW¼½{ÇåØF«CQœ°@VŸ·ôM¡]½'Ésr!9ÖÁƒr/oKÑ‹Õã©úïœãNóÿ‡°«Æ4X›Úhé°Û4fç®78M†œ9¼†ß7“Ö—ÖOªÏ8˜endstream
}É÷êÖŽ5L (ºå²æû5ÄÀ%ÚÔúV–üÐÖÊ pI´…è’uÖŠ1§nR‚ŸA¿“Ùx’¤¹™£›Ém{”eÜNѸÏD›€ŸK‰§àéÁ3Í"ø^cÍE›µGç>àŠe¸×C§Ç÷Ùõ;x¸½JÓóáôäŒyØþO—šä »?^k¨pQUc~Ä8Ó*Wæ6íh¯¤««0 Ü´¥òs^îÿ(j#C#„æy?¨Ès,Ë’ìKÃ1Í,-] PdäüXZUù-'tñAEbGYvÍ‹ÐfÉpg(ÚìÆÊ …®«sU¥×[ï 696Ã{1³ç®K]7 kç©T?¸öb½Š¼íwŸán¾…>=楷|^ô
 TüîÕKN»Ó“=¼A¾%ª m*ïÚÃ(ã!$¿Ï0 YvbÃÌiïȶ–Õýý<tášd]2Ä?öîÿû†{gŸ„‰špiŠ]Ö´Œë‰q(܇&¿\çï ˜ï/­§þ9¼ÀW¼½{ÇåØF«CQœ°@VŸ·ôM¡]½'Ésr!9ÖÁƒr/oKÑ‹Õã©úïœãNóÿ‡°«Æ4X›Úhé°Û4fç®78M†œ9¼†ß7“Ö—ÖOªÏ8˜endstream
endobj
85 0 obj
824
endobj
82 0 obj<</Type/Page/Parent 72 0 R/Contents 83 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
86 0 obj<</Type/Page/Parent 76 0 R/Contents 87 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
87 0 obj<</Length 88 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
áÒw³P04TIS041T072PIÑp rt QÐUp
VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…ê2‰˜˜˜é™)€ù†
ÁÉù© Q×®@.ü7 £endstream
endobj
84 0 obj
118
áÒw³P04TIS041T072PIÑp rt QÐUp
VÎO+)O,JUNM.-Ê,©TJ-È/*Ñ ÉâÒiÒ…ê2‰˜˜˜é™)€ù†
ÁÉù© Q×®@.ü7 £endstream
endobj
88 0 obj
85 0 obj<</Type/Page/Parent 72 0 R/Contents 86 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
86 0 obj<</Length 87 0 R/Filter/FlateDecode>>stream
118
endobj
89 0 obj<</Type/Page/Parent 76 0 R/Contents 90 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R/Fc 9 0 R>>>>>>endobj
l…T´) {ââÆp•ØÔ6Úòíkc•V%]å@Æ¿7ö¼?ZÀ „nòªõ)k=½ÄÄæMЃŒ¶CX`yŽê!ûîJžýÈyÏ‘ïÊüÆË$…‰ÈwrM4Ü-èAËþ+Ï6…(KñÎøÚ-¤— )µ.…o{ÐóU]3tàü#?<³Wa×Êm«àç‰ø¡Ó ^°õN:½9ád
IIø5ß4tÄßà³Éäžî•Æ
f\£,HŽ0AÅÖÜÞrɶ糹G"Í­„ÿ³…~'aD+Æ™Òf/B*»—)ð¯·PÓ?¤õd~ H±–¤ª¬ w.n¡SÌw’é½±ïVHÝ€›%·¸ª¦I—˜ßRáÿŒímrûf¨ÖÛ¿Mîœ`ÏE§×)áUoPžb¬þ1Â\pï*Æ
l ™áÙt:… 
90 0 obj<</Length 91 0 R/Filter/FlateDecode>>stream
xÚ­•OÚ0Åï|Š9²Ò&K 7
l…T´) {ââÆp•ØÔ6Úòíkc•V%]å@Æ¿7ö¼?ZÀ „nòªõ)k=½ÄÄæMЃŒ¶CX`yŽê!ûîJžýÈyÏ‘ïÊüÆË$…‰ÈwrM4Ü-èAËþ+Ï6…(KñÎøÚ-¤— )µ.…o{ÐóU]3tàü#?<³Wa×Êm«àç‰ø¡Ó ^°õN:½9ád
IIø5ß4tÄßà³Éäžî•Æ
f\£,HŽ0AÅÖÜÞrɶ糹G"Í­„ÿ³…~'aD+Æ™Òf/B*»—)ð¯·PÓ?¤õd~ H±–¤ª¬ w.n¡SÌw’é½±ïVHÝ€›%·¸ª¦I—˜ßRáÿŒímrûf¨ÖÛ¿Mîœ`ÏE§×)áUoPžb¬þ1Â\pï*Æ
¡×¶ŸU›JRèÕÃ]ç9K’§ÃÌG”2K$%¼nOèdxÆ^fì)ϵ=N!“„«»
zbͪmyøÕ²ú¼c›qæ‚byh(ÅŠ˜#ÌÕ] ÅËØ<âGøÂ8º1X¬ŒM̵ÈÅÑÛÑqÑÑ{aßúŸéE?6²æU×~žf­¯­_Ð&Ùûendstream
l ™áÙt:… 
üÞc° ç›Ý
¡×¶ŸU›JRèÕÃ]ç9K’§ÃÌG”2K$%¼nOèdxÆ^fì)ϵ=N!“„«»
87 0 obj
522
endobj
88 0 obj<</Type/Page/Parent 72 0 R/Contents 89 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
89 0 obj<</Length 90 0 R/Filter/FlateDecode>>stream
xÚ-‹Í1…÷÷)Î’E™[Ͱ5˜5Óë¤n3TE¼½©È9›óó=ˆQb,êâp£FhÞ®À ‰`ÇXÚ
ržl»u+0Ø÷~ˆù}J
¯á•.ùƒNïCÊS¹’)ùS®4Îò¬Æ/Ûñ5iôY¦Ð¾­u"§endstream
endobj
90 0 obj
121
zbͪmyøÕ²ú¼c›qæ‚byh(ÅŠ˜#ÌÕ] ÅËØ<âGøÂ8º1X¬ŒM̵ÈÅÑÛÑqÑÑ{aßúŸéE?6²æU×~žf­¯­_Ð&Ùûendstream
endobj
91 0 obj
522
endobj
92 0 obj<</Type/Page/Parent 76 0 R/Contents 93 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
93 0 obj<</Length 94 0 R/Filter/FlateDecode>>stream
91 0 obj<</Type/Page/Parent 72 0 R/Contents 92 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
92 0 obj<</Length 93 0 R/Filter/FlateDecode>>stream
xÚ-‹Í1…÷÷)Î’E™[Ͱ5˜5Óë¤n3TE¼½©È9›óó=ˆQb,êâp£FhÞ®À ‰`ÇXÚ
ržl»u+0Ø÷~ˆù}J
¯á•.ùƒNïCÊS¹’)ùS®4Îò¬Æ/Ûñ5iôY¦Ð¾­u"§endstream
¥´]úª•ÆY%²ÆÑÈMý÷‘³]Xƒå3ç6z®¸‘§Í–k°}u×V¾ì ÙAÛÉŸõf­{·„odM€Ö"3üòüÄWí£@WÐ43ôz¹«×
ž¡f†&…‚IùH¬o“Ášü;òP ¼ø|¡ŒŒI9hŒ¹†öèÁ2DÊj@de½PYã\REÏ<
a0J œaï£)ãÔ‰ „D”a0Ì/”Ä@’Ó¤"còy:Ñ€¬/LÅŸŽÞÿúûBœLB€'ÎØ×s;Räm½=÷3—Y7°?ÉÜ%4öˆo·¹÷ÑbuØ™1d𑳠aNce>«OÁ]˧3‡ ùðYüg Ÿ¤7JÓ{ð2Ë0³WD'¡Ïe³6¥ÓÉTÙRÌ3kwCò1C烈P8马¸üCW¿R,Ösಽ!‘ˆö§ÝKü3÷z˜ 7OÚ]ÙË¥oø©ÜA+¬ÜÐúÎ zzaýÓý½zïüØæºÔ÷ën¶ç®W›õ<ñÖ=_moê r«ßŸÛêgõ #endstream
endobj
endobj
94 0 obj
121
endobj
447
endobj
95 0 obj<</Type/Page/Parent 76 0 R/Contents 96 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
96 0 obj<</Length 97 0 R/Filter/FlateDecode>>stream
xÚ}RMÓ0½çWÌ$6M7m, ! Y‰«kO¶f;ëqXòï™±·TªŠ)Λ÷5~ª¸á§íÚôXÝõÕÛ{höÐü§Ûn 7¯ZhaŸƒVÞiDðÝÒ#½î2|MSà«v_w2P ª@£@AE„t
95 0 obj<</Length 96 0 R/Filter/FlateDecode>>stream
xÚ+ä2T0BCc3JÎår
$o•@+Gü=¹`Þ-ðlÓ ¸<>³O5ô'K@¨“
L@`Ù¦­×"«Œ‰¢h‰fDtJ¨SÃG8Z¯òxØB !Á¤ˆžCdŸF™£MË™†AÛÌ”ýÉèý—O?®ÄÄ‘éýÐB Ǻ´ÃeÞÖ»K?¥ÐºÃYæ.¢Ò'üw›ë5fYƒƒš]ë))çJÍóI|çpfÅŸFçÃ'öŸ8|äÞB\Þ€åY)YA úR6IS2}•L”uð }"énŠÖ'¬cÑ#2G6·äçŠuWçíM1°èxÞ=À_¥×ã£z”îò^®}ÃßHù–0Z`ù~ЄÚ–9¬—Ó+ëïï¿Äû`æXêß/»Ù]ºÞl»2ñ¿»¾ÙÝÔ{F3ìV¾?ôÕ·êšU
cendstream
endobj
97 0 obj
96 0 obj
450
endobj
98 0 obj<</Type/Page/Parent 76 0 R/Contents 99 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F8 7 0 R>>>>>>endobj
97 0 obj<</Type/Page/Parent 72 0 R/Contents 98 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
98 0 obj<</Length 99 0 R/Filter/FlateDecode>>stream
99 0 obj<</Length 100 0 R/Filter/FlateDecode>>stream
xÚ-Œ»Â0C÷ûa4$
¬åщÒËT!•ÊC$ñ÷4Ù‹-?I¢%¡L±»ÓšiÞ¬ %¸‡ÔËE>O¶¶n›Ó¡Eúüî¢GëÝ+ùë!æ)_HHü)SeôLã—Ôø±®»¡vΧ;¤k*³Ó‘¾WM%Õendstream
endobj
100 0 obj
`K½Âõ$²ÑµŽ)³mëÀ Ô>t(â:- àEÀ­q4H·Æ9f#"sÒ¥œ ¹ñøí
132
endobj
101 0 obj<</Type/Page/Parent 76 0 R/Contents 102 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F0 3 0 R/F4 4 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
Cؤq\ÆOœŠ¢ÀŠæ& %†:±aðE™”¬HY;m÷l¸'_p4éj¾Êt
øA ]©t>7rß` Ö«u6ÆVg‡®3àŠB+×^’Œ¨'ÚY™£íˆ¤ôê;z:ÒD,”²èn©ô ¨/nëû ´ÌW$£qÙ̇ÁsI€‡Q·v€;Èןµ«·¢žQ?縳ç
<âhá¨$§o€SEØÚ‚éê|úF¿ûH«tHSѺd½Ì¢¸J'ø»0µ_!â@Ö-Åx)»†ûÉ¿ê›&dã¤É…–yÚ¤œ=@¹Ò¬†èº.Pž}Î}#†guPÐI ©[CK¶¦è"zFWÔ6š%\(>Õ‹ýV‹‹¢Å£²IŠFøÈóóþË*ž ¿Rh”ÔK
§šÍe¸Ù^/Z$E­¹´]Óàp¯YŸ7zaC*ô¯Ó^?n‡ŸtUjÍ}+c?ª|B‹ÈËÎß+˜€^€ñ1¾—©bWäÚ5ù€\ny.-ØïK<{YãÌð–ÏËŸéÞ©qL»‚¾¹EÈ™²GFý@äÓŽ«L¯zÈc6ê›èíÌJîã±ÍcYHmàj• ~gxe {e<3sù>+ïðñ_âõ!󸍍ÃGúxÇÀÓÉÇSœ¥‡0ûÌè¶'®>•Úµ¡€e-sa˜t@:`¥ø]ÙëÖb3©àûaò:p9·XAº·å¦Q§Øû®®!þéÌI)§_¿ ȳuçé;5 Qr¥X”8—>6Àlú0,Ñ;ïUªbU
û›²ý·%áÍÎ4Æ^¹·5Ͱ+åíŠîàu¹VoKûݲ¿9‹Ç2´
Í@w"hI¢å¦Œhä4ýÒ¬eVÔªˆ Bî
102 0 obj<</Length 103 0 R/Filter/FlateDecode>>stream
xÚ…WKo7¾ûWÌÑ$Å’;nOMÚ"µ´_¨]JbÌ%7$×õ×÷›!Wu"€KäÌ|Ž¿œÍéÿæt½ Ë+ªš³wg¯?ÜÐü†ÖøæêzIõù’–4¥;Ýø¤é—ªÒ1Ò‰OñÕÃgœ_Ò|žÏO/ofW|£œUùl೤‚¦´õ‘ªD•r´Ò¤¿¶Ö›¤kê
¾í)²¾R–º¨Ç®~í­ƒop äðq“nf\rÏ/g Îý°5‘¢®’ñŽj¯#9u¸c‡‚¶Š“&ON§Þ‡'âð&è^YË×»`Òn– ž1.2Æåìb6§ß´3(Ö¯é^‡gS ”Tõn~7O`IŒK: ;²ÉÍ83š~ýôñ^>| yî¬ÓA­¬æbë}ºr‰TN7A¸Êvµq›Ÿ8õâ
MW3Ño>#þèü}Lˆ‡¨él2-¢VÞ¹ÌVä \BÉâ=þ 7(EmH¥Æ- ã>™Ðq™tèÛ(U1Õj£Œ‹øp'!ApÐP6úuêáÝ&ÆÛú e—¬»ÔÁ7H¥@Çå‘â™±x:[sj[
®‹ÌÖ4&If×5+€A¨cèPÄ÷8Z,ÁŠ€_Ód”n‹s̆sÒKN†Ü|dž…T·1Ž¡‹FBÕ”¹"-Š0wºÕlG»#ßBaÈÃSe=—ñ…T¤µ§êÀÛ7Ñ`ÅpVqG½Ú1ø¢Œ$+Ò$Öθ#Äâ ŽVù†¯2]#~ÐÄÑÔZÎçVZ 4f³ÍÆØëìÑw\Qìª-€—$ˆö®ÊÑDŒRý]h "VZ;ôw¥Í3¨/nú tÌW"«…¸læÓà¹$Àã¨ßzÀåκÍKQ/‹¨¬÷ÜŽÙs…r´
§oS'ØÚèêrþB¿ÛïV(SÑz±‰YgQ\m~a"NdÝS<'‘Ø5ÜOV…ÍÐ41G&ZæY+5xwr/¤ÝxŒÑmS <÷”ûF%,Îê¡ ¯x80¤~ -ÙšZ¡‹èYYSS×Öh9¹Ò|jû¥ˢŽv"E«Bâùyûñ#ÏÄŸ)¶º2k§ÚÝV9œe¸ÙÁ¬:$E–æL\ZL¾mqxÐlÈ›‚r±Á[†÷é¨÷ïòµ´fL¡«Ò0ª‚ EŽäeçL@¯ÀøŸO×R±/rš|D.·<—–?í÷5¾¬ñf|É盟rïµõL»‚>ûUÌ™²G&Ã@äÓž«”w=æ1+§†&z9³Ä}<¶y,«ÊX¸Zç‚¿1¼2†£2Ï™¹ü_”wøüõõ.óxoþÕ§ôùÇWߟúàLÂ<î3£ûž\
|ZßÅ–µÌ…aÒtÀFó»²·ÃnRÃ÷ã>ä…(ârn;µ$tëÊM;¡^³÷}Ó@ü.2™“Rΰ€A'ç{'Ïç:5ŽQr¥X•8—>µÀl‡0,)x˯ӺfU
œvý·'áÅÖ4Åvy²7-°-å
‹ÞÁíÕV_:î—ãÝÈ;<—±kypFz§¢©HuÜ– ­,óO¦-ãpªÑE#×`R6àâ Üú#*Z«*Ñ
‡V+µ­ <ôÈ2õïͳJ-öÉ ¶ß»rQå™
ýÊ.*ì
éñX@yý5•dô$æh ÎèÞðË%EãBŽõéÏÛÓÁ†Õ×8°Ü ¼ Ž@}Ø}@F ÷Æ‘ JÌñsöx^ Ö½¯ >¾eê¿5Ñj½VØ(3ØaóÊE•‡*k»ª±9˜U¾žÑß¸í¥›f–ÉçÇ=¹-B8ŸÍÈ{µ˜ü°=à1Ûù«ªƒ6ò<9Úúc·â-|0¹ü]’ÝøöàÆÅõìæÿZ¾½À© >wÍ¿¿8ûëì?ˆ€lendstream
endobj
103 0 obj
endobj
99 0 obj
1455
endobj
104 0 obj<</Type/Page/Parent 76 0 R/Contents 105 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F8 7 0 R>>>>>>endobj
105 0 obj<</Length 106 0 R/Filter/FlateDecode>>stream
xÚ]PÁRÂ0¼÷+ö¨‡–*ô*"7gâ„䕯i“š¤"~½IadÆÉ;ä½ì¾ÝìgÆPÆÃ°X¦’}¶æÙl[1ð&¾,모ÁÕ#œ–„”Ö)mŽÝ¹¸çY‰|¾,ª„â-ÁÐw@¯upÔ‘ðÛàéýu“î:øq¬ ØècÜ 1†–LÐRmM‚Æ=y/Ž„ƒUgŒ>jÂÓ œtUfbž”_6ù!j©#gDOFaÞŸ¢[4º#_€·Ú_l Î’á†Ð¦±®¿¸˜¨Ž¾¢
101 0 obj<</Length 102 0 R/Filter/FlateDecode>>stream
Œ&Y´Nÿú'“ˆ¡FB°K{í¯æ¶ÝOIͶõ5YV1ÔS°›Ýã–#¿´·M8‰øñ=ÉÑépÆŽRX‰œ'N¾š—‰U§ÉbUFS_éúÇZ;²%ŸPÏ<{Ë~AΜüendstream
endobj
106 0 obj
Rž‹H.GôÁþ£îé­°.¢‡ñ“ˆN–o%÷¦Îצî»ÛïTµ‚Z©EfÿôåР\::ú>žµì~$“‚<Qî+óËL+Ö«ÌÚå›ÍÃgiþ:×"öÊy ¤Í@œ1ßšâgñ)Åõendstream
endobj
102 0 obj
381
endobj
103 0 obj<</Type/Page/Parent 72 0 R/Contents 104 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
104 0 obj<</Length 105 0 R/Filter/FlateDecode>>stream
T]o›0}çWÜÇíZÒ4…Ç %i¤ªcJ}uÍ
õâf;‹òïwZ©ÝŠ¥N „uçžã{ð¯$‡Kºr¸™ÁÕ¸J¾µÉꄼ„vG•ÅÍÚîË6Ò8Çìékûs\gÅI¯‹le9´h•1 Èó€ Þt¶!ÕXšPZ7j8x´ ™î¬Çì=Qú>0ˤD9MØ î„îÁX°ÈQü‹ŽyÊXÿÌ4Ýà…Š7ÆÔé‘ uЂ3/ŒvÀ©F OèˆüÑÀ`Mo™r±v­`ÿåîžœá{ô1W$÷ìJ“|c÷S‘RžÒ«ò53Xrkô)eSm·)Š6„ÓÈÏtÇl•é«é©ÎŠèñ]=ÔÍt«Š<ÕÃýöj+´[ÛœœGá\5ÕE=Mºª›ï÷ˆ?7@ë"Ìë6»¡µL»
72Âv[§›»i¾[<Jô>­ß¡ˆgÁܽü”ã§Å+uô¼  ÿsJ̋ˬ¤ó
eX¯ÚäGòE8%endstream
endobj
105 0 obj
426
endobj
106 0 obj<</Type/Page/Parent 72 0 R/Contents 107 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R>>>>>>endobj
107 0 obj<</Length 108 0 R/Filter/FlateDecode>>stream
’MSÂ0†ïý{ÔC+ÅRË‘v„¡C¤ñÄj¤$˜½IU“œö}v÷Ý}õBè˜Âml?ÝxCìÝd1„!à•
320
endobj
107 0 obj<</Type/Page/Parent 76 0 R/Contents 108 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R/F9 8 0 R>>>>>>endobj
108 0 obj<</Length 109 0 R/Filter/FlateDecode>>stream
T]o›0}çWÜÇíZÒ4…Ç %i¤ªcJ}uÍ
õâf;‹òïwZ©ÝŠ¥N „uçžã{ð¯$‡Kºr¸™ÁÕ¸J¾µÉꄼ„vG•ÅÍÚîË6Ò8Çìékûs\gÅI¯‹le9´h•1 Èó€ Þt¶!ÕXšPZ7j8x´ ™î¬Çì=Qú>0ˤD9MØ î„îÁX°ÈQü‹ŽyÊXÿÌ4Ýà…Š7ÆÔé‘ uЂ3/ŒvÀ©F OèˆüÑÀ`Mo™r±v­`ÿåîžœá{ô1W$÷ìJ“|c÷S‘RžÒ«ò53Xrkô)eSm·)Š6„ÓÈÏtÇl•é«é©ÎŠèñ]=ÔÍt«Š<ÕÃýöj+´[ÛœœGá\5ÕE=Mºª›ï÷ˆ?7@ë"Ìë6»¡µL»
72Âv[§›»i¾[<Jô>­ß¡ˆgÁܽü”ã§Å+uô¼  ÿsJ̋ˬ¤ó
eX¯ÚäGòE8%endstream
endobj
109 0 obj
426
endobj
110 0 obj<</Type/Page/Parent 76 0 R/Contents 111 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F6 6 0 R/F8 7 0 R>>>>>>endobj
111 0 obj<</Length 112 0 R/Filter/FlateDecode>>stream
’MSÂ0†ïý{ÔC+ÅRË‘v„¡C¤ñÄj¤$˜½IU“œö}v÷Ý}õBè˜Âml?ÝxCìÝd1„!à•
ÅI$€—W÷ÈG£Ù5~1ztÖýnDÎÓÚG„®‰ZR\h¦`$…V²‚厔ì“ð]Á¿@˜Ó”˜Ê§ßà')ÎÚáLC*J.0©×IE\„~mšµL¤¤–TV.b1ÿ‰H4—‚TPh"–ÆŒæª$‚¿7‚ƒ=CãvöÌL~²uLØÆ‰Ê'yÚÎÊw•æ¶äN&ä„W¾Ñg³-—¥ÎKCfÍ9+äšÉZTñ­>ÏÍê&àö±È‡íÔ‚©½!嬮m³ÃJÒµƒ…3ì8!¬øž›Ug¼b€õʰ/Ï(ùÊ‹ûÐKúAlóÆ‹A†Á‡Ñ#* +} ŠAÁèNq}„ÛJ¥mºF!øwÝŽÍ
;6…IЃ&0º0 JŠã¦¶RнïõG%¿endstream
endobj
112 0 obj
;6…IЃ&0º0 JŠã¦¶RнïõG%¿endstream
383
endobj
113 0 obj<</Type/Page/Parent 76 0 R/Contents 114 0 R/Resources<</ProcSet[/PDF/Text]/Font<</F4 4 0 R/F5 5 0 R/F8 7 0 R/F9 8 0 R>>>>/Annots 57 0 R>>endobj
114 0 obj<</Length 115 0 R/Filter/FlateDecode>>stream
@@ -336,111 +338,115 @@ xref
118 0 obj
103
endobj
120 0 obj<</Parent 117 0 R/Title(1.3 Document Overview)/Dest[79 0 R/XYZ null 389 null]/Prev 119 0 R>>endobj
121 0 obj<</Parent 115 0 R/Count -2/First 122 0 R/Last 123 0 R/Title(2 References)/Dest[85 0 R/XYZ null 743 null]/Prev 117 0 R/Next 124 0 R>>endobj
122 0 obj<</Parent 121 0 R/Title(2.1 CUPS Documentation)/Dest[85 0 R/XYZ null 693 null]/Next 123 0 R>>endobj
123 0 obj<</Parent 121 0 R/Title(2.2 Other Documents)/Dest[85 0 R/XYZ null 495 null]/Prev 122 0 R>>endobj
124 0 obj<</Parent 115 0 R/Count -1/First 125 0 R/Last 125 0 R/Title(3 Local Access Risks)/Dest[91 0 R/XYZ null 743 null]/Prev 121 0 R/Next 126 0 R>>endobj
125 0 obj<</Parent 124 0 R/Title(3.1 Security Breaches)/Dest[91 0 R/XYZ null 646 null]>>endobj
126 0 obj<</Parent 115 0 R/Count -2/First 127 0 R/Last 128 0 R/Title(4 Remote Access Risks)/Dest[97 0 R/XYZ null 743 null]/Prev 124 0 R/Next 129 0 R>>endobj
127 0 obj<</Parent 126 0 R/Title(4.1 Denial of Service Attacks)/Dest[97 0 R/XYZ null 659 null]/Next 128 0 R>>endobj
119 0 obj<</Count 6/First 120 0 R/Last 133 0 R>>endobj
120 0 obj<</Parent 119 0 R/Title(Table of Contents)/Dest[113 0 R/XYZ null 756 null]/Next 121 0 R>>endobj
121 0 obj<</Parent 119 0 R/Count -3/First 122 0 R/Last 124 0 R/Title(1 Scope)/Dest[83 0 R/XYZ null 743 null]/Prev 120 0 R/Next 125 0 R>>endobj
122 0 obj<</Parent 121 0 R/Title(1.1 Identification)/Dest[83 0 R/XYZ null 693 null]/Next 123 0 R>>endobj
123 0 obj<</Parent 121 0 R/Title(1.2 System Overview)/Dest[83 0 R/XYZ null 613 null]/Prev 122 0 R/Next 124 0 R>>endobj
124 0 obj<</Parent 121 0 R/Title(1.3 Document Overview)/Dest[83 0 R/XYZ null 389 null]/Prev 123 0 R>>endobj
125 0 obj<</Parent 119 0 R/Count -2/First 126 0 R/Last 127 0 R/Title(2 References)/Dest[89 0 R/XYZ null 743 null]/Prev 121 0 R/Next 128 0 R>>endobj
126 0 obj<</Parent 125 0 R/Title(2.1 CUPS Documentation)/Dest[89 0 R/XYZ null 693 null]/Next 127 0 R>>endobj
127 0 obj<</Parent 125 0 R/Title(2.2 Other Documents)/Dest[89 0 R/XYZ null 495 null]/Prev 126 0 R>>endobj
129 0 obj<</Parent 115 0 R/Count -2/First 130 0 R/Last 131 0 R/Title(A Glossary)/Dest[103 0 R/XYZ null 743 null]/Prev 126 0 R>>endobj
130 0 obj<</Parent 129 0 R/Title(A.1 Terms)/Dest[103 0 R/XYZ null 693 null]/Next 131 0 R>>endobj
131 0 obj<</Parent 129 0 R/Title(A.2 Acronyms)/Dest[103 0 R/XYZ null 389 null]/Prev 130 0 R>>endobj
132 0 obj<</Type/Catalog/Pages 72 0 R/Names 54 0 R/ViewerPreferences<</PageLayout/TwoColumnRight>>/Outlines 115 0 R/PageMode/UseOutlines/OpenAction[79 0 R/XYZ null null null]>>endobj
xref
0 133
0000000000 65535 f
0000000015 00000 n
0000000221 00000 n
0000000282 00000 n
0000000356 00000 n
0000000434 00000 n
0000000511 00000 n
0000000590 00000 n
0000000666 00000 n
0000000747 00000 n
0000000805 00000 n
0000000907 00000 n
0000001010 00000 n
0000001114 00000 n
0000001218 00000 n
0000001322 00000 n
0000001426 00000 n
0000001530 00000 n
0000001634 00000 n
0000001738 00000 n
0000001842 00000 n
0000001944 00000 n
0000002047 00000 n
0000002151 00000 n
0000002255 00000 n
0000002359 00000 n
0000002463 00000 n
0000002567 00000 n
0000002671 00000 n
0000002773 00000 n
0000002876 00000 n
0000002980 00000 n
0000003084 00000 n
0000003188 00000 n
0000003292 00000 n
0000003396 00000 n
0000003498 00000 n
0000003601 00000 n
0000003705 00000 n
0000003809 00000 n
0000003913 00000 n
0000004017 00000 n
0000004121 00000 n
0000004225 00000 n
0000004329 00000 n
0000004433 00000 n
0000004537 00000 n
0000004641 00000 n
0000004744 00000 n
0000004848 00000 n
0000004953 00000 n
0000005058 00000 n
0000005163 00000 n
0000005268 00000 n
0000005586 00000 n
0000005618 00000 n
0000005650 00000 n
0000005849 00000 n
0000005896 00000 n
0000005943 00000 n
0000005990 00000 n
0000006037 00000 n
0000006084 00000 n
0000006131 00000 n
0000006178 00000 n
0000006225 00000 n
0000006272 00000 n
0000006319 00000 n
0000006366 00000 n
0000006413 00000 n
0000006461 00000 n
0000006509 00000 n
0000006557 00000 n
0000006728 00000 n
0000006877 00000 n
0000013254 00000 n
0000013275 00000 n
0000013385 00000 n
0000013485 00000 n
0000013504 00000 n
0000013641 00000 n
0000014534 00000 n
0000014554 00000 n
0000014664 00000 n
0000014851 00000 n
0000014871 00000 n
0000015008 00000 n
0000015599 00000 n
128 0 obj<</Parent 119 0 R/Count -1/First 129 0 R/Last 129 0 R/Title(3 3 - Local Access Risks)/Dest[95 0 R/XYZ null 743 null]/Prev 125 0 R/Next 132 0 R>>endobj
129 0 obj<</Parent 128 0 R/Count -2/First 130 0 R/Last 131 0 R/Title(3.1 Security Breaches)/Dest[95 0 R/XYZ null 646 null]>>endobj
130 0 obj<</Parent 129 0 R/Title(4.0.1 Denial of Service Attacks)/Dest[101 0 R/XYZ null 743 null]/Next 131 0 R>>endobj
131 0 obj<</Parent 129 0 R/Title(4.0.2 Security Breaches)/Dest[101 0 R/XYZ null 652 null]/Prev 130 0 R>>endobj
132 0 obj<</Parent 119 0 R/Title(4 4 - Remote Access Risks)/Dest[101 0 R/XYZ null 211 null]/Prev 128 0 R/Next 133 0 R>>endobj
133 0 obj<</Parent 119 0 R/Count -2/First 134 0 R/Last 135 0 R/Title(A Glossary)/Dest[107 0 R/XYZ null 743 null]/Prev 132 0 R>>endobj
134 0 obj<</Parent 133 0 R/Title(A.1 Terms)/Dest[107 0 R/XYZ null 693 null]/Next 135 0 R>>endobj
135 0 obj<</Parent 133 0 R/Title(A.2 Acronyms)/Dest[107 0 R/XYZ null 389 null]/Prev 134 0 R>>endobj
136 0 obj<</Type/Catalog/Pages 76 0 R/Names 58 0 R/ViewerPreferences<</PageLayout/TwoColumnRight>>/Outlines 119 0 R/PageMode/UseOutlines/OpenAction[83 0 R/XYZ null null null]>>endobj
xref
0 137
0000000000 65535 f
0000000015 00000 n
0000000221 00000 n
0000000282 00000 n
0000000356 00000 n
0000000434 00000 n
0000000511 00000 n
0000000590 00000 n
0000000666 00000 n
0000000747 00000 n
0000000805 00000 n
0000000907 00000 n
0000001010 00000 n
0000001114 00000 n
0000001218 00000 n
0000001322 00000 n
0000001426 00000 n
0000001530 00000 n
0000001634 00000 n
0000001738 00000 n
0000001842 00000 n
0000001944 00000 n
0000002047 00000 n
0000002151 00000 n
0000002255 00000 n
0000002359 00000 n
0000002463 00000 n
0000002567 00000 n
0000002671 00000 n
0000002773 00000 n
0000002875 00000 n
0000002977 00000 n
0000003080 00000 n
0000003184 00000 n
0000003288 00000 n
0000003392 00000 n
0000003496 00000 n
0000003600 00000 n
0000003705 00000 n
0000003810 00000 n
0000003915 00000 n
0000004020 00000 n
0000004125 00000 n
0000004230 00000 n
0000004335 00000 n
0000004440 00000 n
0000004543 00000 n
0000004646 00000 n
0000004749 00000 n
0000004853 00000 n
0000004958 00000 n
0000005063 00000 n
0000005166 00000 n
0000005270 00000 n
0000005375 00000 n
0000005480 00000 n
0000005585 00000 n
0000005690 00000 n
0000006036 00000 n
0000006068 00000 n
0000006100 00000 n
0000006303 00000 n
0000006350 00000 n
0000006397 00000 n
0000006444 00000 n
0000006491 00000 n
0000006538 00000 n
0000006585 00000 n
0000006632 00000 n
0000006679 00000 n
0000006726 00000 n
0000006774 00000 n
0000006822 00000 n
0000006870 00000 n
0000006918 00000 n
0000006966 00000 n
0000007014 00000 n
0000007186 00000 n
0000007335 00000 n
0000013712 00000 n
0000013733 00000 n
0000013843 00000 n
0000013943 00000 n
0000013962 00000 n
0000014099 00000 n
0000014992 00000 n
0000015012 00000 n
0000015122 00000 n
0000015729 00000 n
0000015309 00000 n
0000015329 00000 n
0000015939 00000 n
0000015466 00000 n
0000016057 00000 n
+4 -4
Ver Arquivo
@@ -77,7 +77,7 @@ The following non-CUPS documents are referenced by this document:
<LI>RFC 1179, Line Printer Daemon Protocol
</UL>
<H1>Local Access Risks</H1>
<H1>3 - Local Access Risks</H1>
<P>Local access risks are those that can be exploited only with a local user
account. This section does not address issues related to dissemination of the
@@ -93,13 +93,13 @@ are printed.
<P>This problem can be alleviated by making the request directory readable only
by the user specified in the CUPS configuration file.
<H1>Remote Access Risks</H1>
<H1>4 - Remote Access Risks</H1>
<P>Remote access risks are those that can be exploited without a local user
account and/or from a remote system. This section does not address issues
related to network or firewall security.
<H2>Denial of Service Attacks</H2>
<H3>Denial of Service Attacks</H3>
<P>Like all internet services, the CUPS server is vulnerable to denial of
service attacks, including:
@@ -152,7 +152,7 @@ service attacks, including:
</OL>
<H2>Security Breaches</H2>
<H3>Security Breaches</H3>
<P>The current CUPS server only supports Basic authentication with
usernames and passwords. This essentially places the clear text of the
+9 -20
Ver Arquivo
@@ -44,7 +44,7 @@ Copyright 1997-1999, All Rights Reserved<BR>
<UL>
<LI><A HREF=#4_1>General Options</A></LI>
<UL>
<LI><A HREF=#4_1_1>Selecting the Media Size, Type, and Source</A></LI>
<LI><A HREF=#4_1_1>Selecting the Media Size</A></LI>
<LI><A HREF=#4_1_2>Setting the Orientation</A></LI>
<LI><A HREF=#4_1_3>Printing On Both Sides of the Paper</A></LI>
<LI><A HREF=#4_1_4>Selecting a Range of Pages</A></LI>
@@ -317,18 +317,15 @@ lp</CODE> or <CODE>lpstat</CODE> commands. </P>
available when printing with the <CODE>lp</CODE> command. </P>
<H2><A NAME=4_1>General Options</A></H2>
<P>The following options apply when printing all types of files. </P>
<H3><A NAME=4_1_1>Selecting the Media Size, Type, and Source</A></H3>
<P>The &quot;-o media=xyz&quot; option sets the media size, type, and/or source: </P>
<H3><A NAME=4_1_1>Selecting the Media Size</A></H3>
<P>The &quot;-o media=size&quot; option sets the media size: </P>
<UL>
<PRE>
% lp -o media=Letter filename ENTER
% lp -o media=Letter,MultiPurpose filename ENTER
% lp -o media=Letter,Transparency filename ENTER
% lp -o media=Letter,MultiPurpose,Transparency filename ENTER
</PRE>
</UL>
<P>The available media sizes, types, and sources depend on the printer,
but most support the following options (case is significant): </P>
<P>The available media sizes depend on the printer, but most support at
least the following sizes (case is significant): </P>
<UL>
<LI><CODE>Letter</CODE> - US Letter (8.5x11 inches, or 216x279mm) </LI>
<LI><CODE>Legal</CODE> - US Legal (8.5x14 inches, or 216x356mm) </LI>
@@ -336,15 +333,7 @@ but most support the following options (case is significant): </P>
<LI><CODE>COM10</CODE> - US #10 Envelope (9.5x4.125 inches, or
241x105mm) </LI>
<LI><CODE>DL</CODE> - ISO DL Envelope (8.66x4.33 inches, or 220x110mm) </LI>
<LI><CODE>Transparency</CODE> - Transparency media type or source </LI>
<LI><CODE>Upper</CODE> - Upper paper tray </LI>
<LI><CODE>Lower</CODE> - Lower paper tray </LI>
<LI><CODE>MultiPurpose</CODE> - Multi-purpose paper tray </LI>
<LI><CODE>LargeCapacity</CODE> - Large capacity paper tray </LI>
</UL>
<P>The actual options supported are defined in the printer's PPD file
in the <CODE>PageSize</CODE>, <CODE>InputSlot</CODE>, and <CODE>
MediaType</CODE> options. </P>
<H3><A NAME=4_1_2>Setting the Orientation</A></H3>
<P>The &quot;-o landscape&quot; option will rotate the page 90 degrees to print
in landscape orientation: </P>
@@ -365,13 +354,13 @@ will enable duplexing on the printer (if the printer supports it.) The
</PRE>
</UL>
<H3><A NAME=4_1_4>Selecting a Range of Pages</A></H3>
<P>The &quot;-o page-ranges=pages&quot; option selects a range of pages for
<P>The &quot;-o page-range=pages&quot; option selects a range of pages for
printing: </P>
<UL>
<PRE>
% lp -o page-ranges=1 filename ENTER
% lp -o page-ranges=1-4 filename ENTER
% lp -o page-ranges=1-4,7,9-12 filename ENTER
% lp -o page-range=1 filename ENTER
% lp -o page-range=1-4 filename ENTER
% lp -o page-range=1-4,7,9-12 filename ENTER
</PRE>
</UL>
<P>As shown above, the <I>pages</I> value can be a single page, a range
+470 -475
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+8 -25
Ver Arquivo
@@ -305,19 +305,16 @@ when printing with the <CODE>lp</CODE> command.
<P>The following options apply when printing all types of files.
<H3>Selecting the Media Size, Type, and Source</H3>
<H3>Selecting the Media Size</H3>
<P>The "-o media=xyz" option sets the media size, type, and/or source:
<P>The "-o media=size" option sets the media size:
<UL><PRE>
% lp -o media=Letter filename ENTER
% lp -o media=Letter,MultiPurpose filename ENTER
% lp -o media=Letter,Transparency filename ENTER
% lp -o media=Letter,MultiPurpose,Transparency filename ENTER
</PRE></UL>
<P>The available media sizes, types, and sources depend on the printer, but
most support the following options (case is significant):
<P>The available media sizes depend on the printer, but most support at
least the following sizes (case is significant):
<UL>
@@ -332,22 +329,8 @@ most support the following options (case is significant):
<LI><CODE>DL</CODE> - ISO DL Envelope (8.66x4.33 inches, or 220x110mm)
<LI><CODE>Transparency</CODE> - Transparency media type or source
<LI><CODE>Upper</CODE> - Upper paper tray
<LI><CODE>Lower</CODE> - Lower paper tray
<LI><CODE>MultiPurpose</CODE> - Multi-purpose paper tray
<LI><CODE>LargeCapacity</CODE> - Large capacity paper tray
</UL>
<P>The actual options supported are defined in the printer's PPD file in the
<CODE>PageSize</CODE>, <CODE>InputSlot</CODE>, and <CODE>MediaType</CODE>
options.
<H3>Setting the Orientation</H3>
<P>The "-o landscape" option will rotate the page 90 degrees to print in
@@ -371,12 +354,12 @@ suitable for portrait pages:
<H3>Selecting a Range of Pages</H3>
<P>The "-o page-ranges=pages" option selects a range of pages for printing:
<P>The "-o page-range=pages" option selects a range of pages for printing:
<UL><PRE>
% lp -o page-ranges=1 filename ENTER
% lp -o page-ranges=1-4 filename ENTER
% lp -o page-ranges=1-4,7,9-12 filename ENTER
% lp -o page-range=1 filename ENTER
% lp -o page-range=1-4 filename ENTER
% lp -o page-range=1-4,7,9-12 filename ENTER
</PRE></UL>
<P>As shown above, the <I>pages</I> value can be a single page, a range of
+11 -31
Ver Arquivo
@@ -46,7 +46,7 @@ all: $(TARGETS)
#
clean:
rm -f $(OBJS) $(TARGETS) $(LIBCUPSIMAGE)
rm -f $(OBJS) $(TARGETS) image.a
#
# Install all targets...
@@ -55,69 +55,50 @@ clean:
install:
-$(MKDIR) $(SERVERROOT)/filter
$(CP) $(TARGETS) $(SERVERROOT)/filter
-$(MKDIR) $(LIBDIR)
$(CP) $(LIBCUPSIMAGE) $(LIBDIR)
if test $(LIBCUPSIMAGE) != "libcupsimage.a"; then \
$(LN) $(LIBCUPSIMAGE) `basename $(LIBCUPSIMAGE) .1` \
fi
#
# hpgltops
#
hpgltops: $(HPGLOBJS) common.o ../Makedefs ../cups/$(LIBCUPS)
hpgltops: $(HPGLOBJS) common.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ $(HPGLOBJS) common.o $(LIBS) -lm
$(HPGLOBJS): hpgltops.h
#
# libcupsimage.so.1, libcupsimage.sl.1
# image.a
#
libcupsimage.so.1 libcupsimage.sl.1: $(IMAGEOBJS) ../Makedefs
echo Linking $@...
$(DSO) $@ $(IMAGEOBJS) $(DSOLIBS)
$(LN) $@ `basename $@ .1`
#
# libcupsimage.a
#
libcupsimage.a: $(IMAGEOBJS) ../Makedefs
image.a: $(IMAGEOBJS) ../Makedefs ../cups/libcups.a
echo Archiving $@...
$(RM) $@
$(AR) $(ARFLAGS) $@ $(IMAGEOBJS)
$(RANLIB) $@
$(IMAGEOBJS): image.h
#
# imagetops
#
imagetops: imagetops.o common.o $(LIBCUPSIMAGE) ../Makedefs \
../cups/$(LIBCUPS)
imagetops: imagetops.o common.o image.a ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ imagetops.o common.o -L. -lcupsimage \
$(IMGLIBS) $(LIBS)
$(CC) $(LDFLAGS) -o $@ imagetops.o common.o image.a $(IMGLIBS)
imagetops: common.h image.h
#
# imagetoraster
#
imagetoraster: imagetoraster.o common.o $(LIBCUPSIMAGE) ../Makedefs \
../cups/$(LIBCUPS)
imagetoraster: imagetoraster.o common.o image.a ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ imagetoraster.o common.o -L. -lcupsimage \
$(IMGLIBS) $(LIBS)
$(CC) $(LDFLAGS) -o $@ imagetoraster.o common.o image.a $(IMGLIBS)
imagetoraster: common.h image.h
#
# pstops
#
pstops: pstops.o common.o ../Makedefs ../cups/$(LIBCUPS)
pstops: pstops.o common.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ pstops.o common.o $(LIBS)
pstops.o: common.h
@@ -126,7 +107,7 @@ pstops.o: common.h
# rastertohp
#
rastertohp: rastertohp.o ../Makedefs ../cups/$(LIBCUPS)
rastertohp: rastertohp.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ rastertohp.o $(LIBS)
rastertohp.o: ../cups/raster.h
@@ -135,8 +116,7 @@ rastertohp.o: ../cups/raster.h
# texttops
#
texttops: texttops.o textcommon.o common.o ../Makedefs \
../cups/$(LIBCUPS)
texttops: texttops.o textcommon.o common.o ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o $@ texttops.o textcommon.o common.o $(LIBS)
texttops.o: common.h textcommon.h
+1 -1
Ver Arquivo
@@ -61,7 +61,7 @@ SetCommonOptions(int num_options, /* I - Number of options */
float temp; /* Swapping variable */
ppd_file_t *ppd; /* PPD file */
ppd_size_t *pagesize; /* Current page size */
const char *val; /* Option value */
char *val; /* Option value */
ppd = ppdOpenFile(getenv("PPD"));
+1 -1
Ver Arquivo
@@ -135,7 +135,7 @@ main(int argc, /* I - Number of command-line arguments */
name; /* Name of command */
int num_options; /* Number of print options */
cups_option_t *options; /* Print options */
const char *val; /* Option value */
char *val; /* Option value */
int shading; /* -1 = black, 0 = grey, 1 = color */
float penwidth; /* Default pen width */
+1 -1
Ver Arquivo
@@ -84,7 +84,7 @@ main(int argc, /* I - Number of command-line arguments */
ppd_file_t *ppd; /* PPD file */
int num_options; /* Number of print options */
cups_option_t *options; /* Print options */
const char *val; /* Option value */
char *val; /* Option value */
int slowcollate; /* Collate copies the slow way */
float g; /* Gamma correction value */
float b; /* Brightness factor */
+1 -1
Ver Arquivo
@@ -169,7 +169,7 @@ main(int argc, /* I - Number of command-line arguments */
cups_page_header_t header; /* Page header */
int num_options; /* Number of print options */
cups_option_t *options; /* Print options */
const char *val; /* Option value */
char *val; /* Option value */
int slowcollate, /* Collate copies the slow way */
slowcopies; /* Make copies the "slow" way? */
float g; /* Gamma correction value */
+17 -17
Ver Arquivo
@@ -49,17 +49,17 @@
* Globals...
*/
int NumPages = 0; /* Number of pages in file */
long Pages[MAX_PAGES]; /* Offsets to each page */
char PageLabels[MAX_PAGES][64];
/* Page labels */
const char *PageRanges = NULL; /* Range of pages selected */
const char *PageSet = NULL; /* All, Even, Odd pages */
int Order = 0, /* 0 = normal, 1 = reverse pages */
Flip = 0, /* Flip/mirror pages */
NUp = 1, /* Number of pages on each sheet (1, 2, 4) */
Collate = 0, /* Collate copies? */
Copies = 1; /* Number of copies */
int NumPages = 0; /* Number of pages in file */
long Pages[MAX_PAGES]; /* Offsets to each page */
char PageLabels[MAX_PAGES][64];
/* Page labels */
char *PageRanges = NULL; /* Range of pages selected */
char *PageSet = NULL; /* All, Even, Odd pages */
int Order = 0, /* 0 = normal, 1 = reverse pages */
Flip = 0, /* Flip/mirror pages */
NUp = 1, /* Number of pages on each sheet (1, 2, 4) */
Collate = 0, /* Collate copies? */
Copies = 1; /* Number of copies */
/*
@@ -85,7 +85,7 @@ main(int argc, /* I - Number of command-line arguments */
ppd_file_t *ppd; /* PPD file */
int num_options; /* Number of print options */
cups_option_t *options; /* Print options */
const char *val; /* Option value */
char *val; /* Option value */
char tempfile[255]; /* Temporary file name */
FILE *temp; /* Temporary file */
int number; /* Page number */
@@ -506,8 +506,8 @@ main(int argc, /* I - Number of command-line arguments */
static int /* O - 1 if selected, 0 otherwise */
check_range(int page) /* I - Page number */
{
const char *range; /* Pointer into range string */
int lower, upper; /* Lower and upper page numbers */
char *range; /* Pointer into range string */
int lower, upper; /* Lower and upper page numbers */
if (PageSet != NULL)
@@ -531,11 +531,11 @@ check_range(int page) /* I - Page number */
{
lower = 1;
range ++;
upper = strtol(range, (char **)&range, 10);
upper = strtol(range, &range, 10);
}
else
{
lower = strtol(range, (char **)&range, 10);
lower = strtol(range, &range, 10);
if (*range == '-')
{
@@ -543,7 +543,7 @@ check_range(int page) /* I - Page number */
if (!isdigit(*range))
upper = 65535;
else
upper = strtol(range, (char **)&range, 10);
upper = strtol(range, &range, 10);
}
else
upper = lower;
+1 -1
Ver Arquivo
@@ -123,7 +123,7 @@ TextMain(char *name, /* I - Name of filter */
page_column; /* Current page column */
int num_options; /* Number of print options */
cups_option_t *options; /* Print options */
const char *val; /* Option value */
char *val; /* Option value */
char keyword[64], /* Keyword string */
*keyptr; /* Pointer into string */
int keycol; /* Column where keyword starts */
-2
Ver Arquivo
@@ -97,8 +97,6 @@ Priority
Copies
File Size
Pending
Output Mode
Resolution
400 Your browser sent a request that this server could not understand.
This server could not verify that you are authorized to access the resource.
You must pay to access this server.
-2
Ver Arquivo
@@ -97,8 +97,6 @@ Priority
Copies
File Size
Pending
Output Mode
Resolution
400 Ihre Datenbanksuchroutine sendete einen Antrag, den dieser Server nicht verstehen könnte.
Dieser Server könnte nicht überprüfen, daß Sie autorisiert sind, das Hilfsmittel zuzugreifen.
Sie müssen zahlen, diesen Server zuzugreifen.
-2
Ver Arquivo
@@ -97,8 +97,6 @@ Priority
Copies
File Size
Pending
Output Mode
Resolution
400 Your browser sent a request that this server could not understand.
This server could not verify that you are authorized to access the resource.
You must pay to access this server.
-2
Ver Arquivo
@@ -97,8 +97,6 @@ Priority
Copies
File Size
Pending
Output Mode
Resolution
400 Su browser envió una petición que este servidor no podría entender.
Este servidor no podría verificar que le autoricen a tener acceso al recurso.
Usted debe pagar tener acceso a este servidor.
-2
Ver Arquivo
@@ -97,8 +97,6 @@ Priority
Copies
File Size
Pending
Output Mode
Resolution
400 Votre browser a envoyé une demande que ce serveur ne pourrait pas comprendre.
Ce serveur ne pourrait pas vérifier que vous êtes autorisés à accéder à la ressource.
Vous devez payer pour accéder à ce serveur.
-2
Ver Arquivo
@@ -97,8 +97,6 @@ Priority
Copies
File Size
Pending
Output Mode
Resolution
400 Il vostro browser ha trasmesso una richiesta che questo server non potrebbe capire.
Questo server non potrebbe verificare che siete autorizzati ad accedere alla risorsa.
Dovete pagare accedere a questo server.
+2 -4
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lp.1 491 1999-07-07 14:03:48Z mike $"
.\" "$Id: lp.1 380 1999-06-10 16:15:04Z mike $"
.\"
.\" lp/cancel man page for the Common UNIX Printing System (CUPS).
.\"
@@ -38,8 +38,6 @@ cancel \- cancel jobs
.I priority
] [ \-s ] [ \-t
.I title
] [
.I file(s)
]
.br
.B cancel
@@ -67,5 +65,5 @@ CUPS Software User's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lp.1 491 1999-07-07 14:03:48Z mike $".
.\" End of "$Id: lp.1 380 1999-06-10 16:15:04Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
+5 -60
Ver Arquivo
@@ -1,5 +1,5 @@
.\"
.\" "$Id: lpr.1 491 1999-07-07 14:03:48Z mike $"
.\" "$Id: lpr.1 327 1999-05-14 17:03:06Z mike $"
.\"
.\" lpr man page for the Common UNIX Printing System (CUPS).
.\"
@@ -26,71 +26,16 @@
lpr \- print files
.SH SYNOPSIS
.B lpr
[ \-P
.I destination
] [ \-#
.I num-copies
[ \-l ] [ \-o
.I option
] [ \-p] [ \-r ] [ \-C/J/T
.I title
] [
.I file(s)
]
.SH DESCRIPTION
\fBlpr\fR submits files for printing. Files named on the command line are sent
to the named printer (or the system default destination if no destination is
specified). If no files are listed on the command-line \fBlpr\fR reads the
print file from the standard input.
.SH OPTIONS
The following options are recognized by \fBlpr\fR:
.TP 5
\-P \fIdestination\fR
.br
Prints files to the named printer.
.TP 5
\-# \fIcopies\fR
.br
Sets the number of copies to print from 1 to 100.
.TP 5
\-C \fIname\fR
.br
Sets the job name.
.TP 5
\-J \fIname\fR
.br
Sets the job name.
.TP 5
\-T \fIname\fR
.br
Sets the job name.
.TP 5
\-l
.br
Specifies that the print file is already formatted for the destination and
should be sent without filtering. This option is equivalent to "-oraw".
.TP 5
\-o \fIoption\fR
.br
Sets the job name.
.TP 5
\-p
.br
Specifies that the print file should be formatted with a shaded header with
the date, time, job name, and page number. This option is equivalent to
"-oprettyprint" and is only useful when printing text files.
.TP 5
\-r
.br
Specifies that the named print files should be deleted after printing them.
\fBlpr\fR
.SH COMPATIBILITY
The "c", "d", "f", "g", "i", "m", "n", "t", "v", and "w" options are not
supported by CUPS and will produce a warning message if used.
The ... options are not supported by CUPS and will produce a warning message
if used.
.SH SEE ALSO
cancel(1), lp(1), lpstat(1),
CUPS Software User's Manual
.SH COPYRIGHT
Copyright 1993-1999 by Easy Software Products, All Rights Reserved.
.\"
.\" End of "$Id: lpr.1 491 1999-07-07 14:03:48Z mike $".
.\" End of "$Id: lpr.1 327 1999-05-14 17:03:06Z mike $".
.\"
BIN
Ver Arquivo
Arquivo binário não exibido.
+2 -2
Ver Arquivo
@@ -139,9 +139,9 @@ arch.h: genarch
# pstoraster - PostScript conversion filter.
#
pstoraster: $(OBJS) ../Makedefs ../cups/$(LIBCUPS)
pstoraster: $(OBJS) ../Makedefs ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o pstoraster $(OBJS) $(LIBJPEG) $(LIBZ) $(LIBS) -lm
$(CC) $(LDFLAGS) -o pstoraster $(OBJS) $(IMGLIBS)
gdevcups.o: ../cups/raster.h
$(OBJS): arch.h ../config.h ../Makedefs
+1 -1
Ver Arquivo
@@ -1243,7 +1243,7 @@ cups_put_params(gx_device *pdev, /* I - Device info */
else if (code == 0) \
{ \
strncpy(cups->header.name, (const char *)stringval.data, \
stringval.size); \
stringval.size); \
cups->header.name[stringval.size] = '\0'; \
}
+3 -14
Ver Arquivo
@@ -251,27 +251,16 @@ level2dict begin
% Define the keys used in input attribute matching.
/.inputattrkeys [
%%%% MRS - The current CUPS backend driver does not register any of
%%%% these attributes with GhostScript from the PPD file. As
%%%% a result, we must comment out everything but PageSize
%%%% which is processed differently from all other attributes.
% /PageSize /MediaColor /MediaWeight /MediaType /InsertSheet
/PageSize
/PageSize /MediaColor /MediaWeight /MediaType /InsertSheet
] readonly def
% Define other keys used in media selection.
/.inputselectionkeys [
%%%% MRS - The current CUPS backend driver does not register any of
%%%% these attributes with GhostScript from the PPD file. As
%%%% a result, we must comment out everything.
% /MediaPosition /Orientation
/MediaPosition /Orientation
] readonly def
% Define the keys used in output attribute matching.
/.outputattrkeys [
%%%% MRS - The current CUPS backend driver does not register any of
%%%% these attributes with GhostScript from the PPD file. As
%%%% a result, we must comment out everything.
% /OutputType
/OutputType
] readonly def
% Define all the parameters that should always be copied to the merged
+2 -2
Ver Arquivo
@@ -42,14 +42,14 @@ long gs_buildtime = GS_BUILDTIME;
#ifndef GS_COPYRIGHT
# define GS_COPYRIGHT\
"Copyright 1993-1999 Easy Software Products, All Rights Reserved.\n"\
"Copyright 1997-1999 Easy Software Products, All Rights Reserved.\n"\
"Copyright 1996 Aladdin Enterprises, Menlo Park, CA. All rights reserved."
#endif
const char *gs_copyright = GS_COPYRIGHT;
#ifndef GS_PRODUCT
# define GS_PRODUCT\
"ESP Print Pro v4.0"
"ESP Print v4.0"
#endif
const char *gs_product = GS_PRODUCT;
+2 -2
Ver Arquivo
@@ -57,7 +57,7 @@ install:
# Make the scheduler executable, "cupsd".
#
cupsd: $(CUPSDOBJS) ../cups/$(LIBCUPS)
cupsd: $(CUPSDOBJS) ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o cupsd $(CUPSDOBJS) $(LIBS)
@@ -69,7 +69,7 @@ $(CUPSDOBJS): auth.h classes.h client.h conf.h cupsd.h dirsvc.h job.h \
# Make the test program, "testspeed".
#
testspeed: testspeed.o ../cups/$(LIBCUPS)
testspeed: testspeed.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o testspeed testspeed.o $(LIBS)
+1 -11
Ver Arquivo
@@ -56,12 +56,7 @@ AddClass(char *name) /* I - Name of class */
*/
if ((c = AddPrinter(name)) != NULL)
{
c->type = CUPS_PRINTER_CLASS;
sprintf(c->uri, "ipp://%s:%d/classes/%s", ServerName,
ntohs(Listeners[0].address.sin_port), name);
SetPrinterAttrs(c);
}
return (c);
}
@@ -366,8 +361,6 @@ LoadAllClasses(void)
line[len - 1] = '\0';
p = AddClass(value);
p->accepting = 1;
p->state = IPP_PRINTER_IDLE;
if (strcmp(name, "<DefaultClass") == 0)
DefaultPrinter = p;
@@ -424,8 +417,6 @@ LoadAllClasses(void)
p->state = IPP_PRINTER_IDLE;
else if (strcasecmp(value, "stopped") == 0)
p->state = IPP_PRINTER_STOPPED;
p->accepting = p->state != IPP_PRINTER_STOPPED;
}
}
@@ -483,7 +474,6 @@ SaveAllClasses(void)
*/
if ((pclass->type & CUPS_PRINTER_REMOTE) ||
(pclass->type & CUPS_PRINTER_IMPLICIT) ||
!(pclass->type & CUPS_PRINTER_CLASS))
continue;
@@ -508,7 +498,7 @@ SaveAllClasses(void)
fputs("State Idle\n", fp);
for (i = 0; i < pclass->num_printers; i ++)
fprintf(fp, "Printer %s\n", pclass->printers[i]->name);
fprintf(fp, "Printer %s\n", pclass->name);
fputs("</Class>\n", fp);
}
+20 -28
Ver Arquivo
@@ -135,7 +135,7 @@ AcceptClient(listener_t *lis) /* I - Listener socket */
* Temporarily suspend accept()'s until we lose a client...
*/
if (NumClients == MaxClients)
if (NumClients == MAX_CLIENTS)
for (i = 0; i < NumListeners; i ++)
{
DEBUG_printf(("AcceptClient: Removing fd %d from InputSet...\n", Listeners[i].fd));
@@ -442,7 +442,7 @@ ReadClient(client_t *con) /* I - Client to read from */
else switch (con->http.state)
{
case HTTP_GET_SEND :
if (strncmp(con->uri, "/printers/", 10) == 0 &&
if (strncmp(con->uri, "/printers", 9) == 0 &&
strcmp(con->uri + strlen(con->uri) - 4, ".ppd") == 0)
{
/*
@@ -450,8 +450,6 @@ ReadClient(client_t *con) /* I - Client to read from */
* names are not case sensitive but filename can be...
*/
con->uri[strlen(con->uri) - 4] = '\0'; /* Drop ".ppd" */
if ((p = FindPrinter(con->uri + 10)) != NULL)
sprintf(con->uri, "/ppd/%s.ppd", p->name);
else
@@ -804,8 +802,7 @@ ReadClient(client_t *con) /* I - Client to read from */
{
con->bytes += bytes;
if (bytes >= 1024)
LogMessage(LOG_DEBUG, "ReadClient() %d writing %d bytes", bytes);
LogMessage(LOG_DEBUG, "ReadClient() %d writing %d bytes", bytes);
if (write(con->file, line, bytes) < bytes)
{
@@ -931,8 +928,7 @@ SendError(client_t *con, /* I - Connection */
* Put the request in the access_log file...
*/
if (con->operation > HTTP_WAITING)
LogRequest(con, code);
LogRequest(con, code);
/*
* To work around bugs in some proxies, don't use Keep-Alive for some
@@ -1152,8 +1148,7 @@ WriteClient(client_t *con) /* I - Client connection */
}
}
if (bytes >= 1024)
LogMessage(LOG_DEBUG, "WriteClient() %d %d bytes", con->http.fd, bytes);
LogMessage(LOG_DEBUG, "WriteClient() %d %d bytes", con->http.fd, bytes);
con->http.activity = time(NULL);
@@ -1307,8 +1302,8 @@ get_file(client_t *con, /* I - Client connection */
status = stat(filename, filestats);
}
LogMessage(LOG_DEBUG, "get_file() %d filename=%s size=%d",
con->http.fd, filename, status ? -1 : filestats->st_size);
LogMessage(LOG_DEBUG, "get_filename() %d filename=%s size=%d",
con->http.fd, filename, filestats->st_size);
if (status)
return (NULL);
@@ -1339,7 +1334,6 @@ pipe_command(client_t *con, /* I - Client connection */
static char lang[1024]; /* LANG env variable */
static char content_length[1024]; /* CONTENT_LENGTH env variable */
static char content_type[1024]; /* CONTENT_TYPE env variable */
static char ipp_port[1024]; /* Default listen port */
static char server_port[1024]; /* Default listen port */
static char server_name[1024]; /* Default listen hostname */
static char remote_host[1024]; /* REMOTE_HOST env variable */
@@ -1402,7 +1396,6 @@ pipe_command(client_t *con, /* I - Client connection */
gethostname(hostname, sizeof(hostname) - 1);
sprintf(lang, "LANG=%s", con->language ? con->language->language : "C");
sprintf(ipp_port, "IPP_PORT=%d", ntohs(con->http.hostaddr.sin_port));
sprintf(server_port, "SERVER_PORT=%d", ntohs(con->http.hostaddr.sin_port));
sprintf(server_name, "SERVER_NAME=%s", hostname);
sprintf(remote_host, "REMOTE_HOST=%s", con->http.hostname);
@@ -1413,19 +1406,18 @@ pipe_command(client_t *con, /* I - Client connection */
envp[1] = "SERVER_SOFTWARE=CUPS/1.0";
envp[2] = "GATEWAY_INTERFACE=CGI/1.1";
envp[3] = "SERVER_PROTOCOL=HTTP/1.1";
envp[4] = ipp_port;
envp[5] = server_name;
envp[6] = server_port;
envp[7] = remote_host;
envp[8] = remote_user;
envp[9] = lang;
envp[10] = "TZ=GMT";
envp[11] = tmpdir;
envp[4] = server_name;
envp[5] = server_port;
envp[6] = remote_host;
envp[7] = remote_user;
envp[8] = lang;
envp[9] = "TZ=GMT";
envp[10] = tmpdir;
if (con->operation == HTTP_GET)
{
envp[12] = "REQUEST_METHOD=GET";
envp[13] = NULL;
envp[11] = "REQUEST_METHOD=GET";
envp[12] = NULL;
}
else
{
@@ -1433,10 +1425,10 @@ pipe_command(client_t *con, /* I - Client connection */
sprintf(content_type, "CONTENT_TYPE=%s",
con->http.fields[HTTP_FIELD_CONTENT_TYPE]);
envp[12] = "REQUEST_METHOD=POST";
envp[13] = content_length;
envp[14] = content_type;
envp[15] = NULL;
envp[11] = "REQUEST_METHOD=POST";
envp[12] = content_length;
envp[13] = content_type;
envp[14] = NULL;
}
/*
+2 -1
Ver Arquivo
@@ -67,10 +67,11 @@ VAR listener_t Listeners[MAX_LISTENERS];
/* Listening sockets */
VAR int NumClients VALUE(0);
/* Number of HTTP clients */
VAR client_t *Clients VALUE(NULL);
VAR client_t Clients[MAX_CLIENTS];
/* HTTP clients */
/*
* Prototypes...
*/
+6 -37
Ver Arquivo
@@ -39,8 +39,6 @@
#include <stdarg.h>
#include <pwd.h>
#include <grp.h>
#include <sys/resource.h>
/*
* Possibly missing network definitions...
@@ -95,7 +93,6 @@ static var_t variables[] =
{ "BrowsePort", &BrowsePort, VAR_INTEGER, 0 },
{ "BrowseInterval", &BrowseInterval, VAR_INTEGER, 0 },
{ "BrowseTimeout", &BrowseTimeout, VAR_INTEGER, 0 },
{ "MaxClients", &MaxClients, VAR_INTEGER, 0 },
{ "MaxLogSize", &MaxLogSize, VAR_INTEGER, 0 },
{ "MaxRequestSize", &MaxRequestSize, VAR_INTEGER, 0 }
};
@@ -134,10 +131,9 @@ static int get_address(char *value, unsigned defaddress, int defport,
int /* O - 1 if file read successfully, 0 otherwise */
ReadConfiguration(void)
{
FILE *fp; /* Configuration file */
int status; /* Return status */
char directory[1024];/* Configuration directory */
struct rlimit limit; /* Runtime limit */
FILE *fp; /* Configuration file */
int status; /* Return status */
char directory[1024];/* Configuration directory */
/*
@@ -148,11 +144,8 @@ ReadConfiguration(void)
StopListening();
StopBrowsing();
if (Clients != NULL)
{
free(Clients);
Clients = NULL;
}
LogMessage(LOG_DEBUG, "ReadConfiguration() ConfigurationFile=\"%s\"",
ConfigurationFile);
if (AccessFile != NULL)
{
@@ -192,7 +185,7 @@ ReadConfiguration(void)
strcpy(ErrorLog, "logs/error_log");
strcpy(DefaultLanguage, DEFAULT_LANGUAGE);
strcpy(DefaultCharset, DEFAULT_CHARSET);
strcpy(RIPCache, "8m");
strcpy(RIPCache, "32m");
if (getenv("TMPDIR") == NULL)
strcpy(TempDir, "/var/tmp");
else
@@ -207,8 +200,6 @@ ReadConfiguration(void)
KeepAliveTimeout = DEFAULT_KEEPALIVE;
ImplicitClasses = TRUE;
MaxClients = 100;
MaxLogSize = 1024 * 1024;
MaxRequestSize = 0;
@@ -237,28 +228,6 @@ ReadConfiguration(void)
if (!status)
return (0);
LogMessage(LOG_DEBUG, "ReadConfiguration() ConfigurationFile=\"%s\"",
ConfigurationFile);
/*
* Check the MaxClients setting, and then allocate memory for it...
*/
getrlimit(RLIMIT_NOFILE, &limit);
if (MaxClients > (limit.rlim_max / 3))
MaxClients = limit.rlim_max / 3;
if ((Clients = calloc(sizeof(client_t), MaxClients)) == NULL)
{
LogMessage(LOG_ERROR, "ReadConfiguration() FATAL: unable to allocate memory for %d clients!",
MaxClients);
exit(1);
}
else
LogMessage(LOG_INFO, "ReadConfiguration() Configured for up to %d clients.",
MaxClients);
/*
* Read the MIME type and conversion database...
*/
+1 -3
Ver Arquivo
@@ -61,7 +61,7 @@ VAR char ConfigurationFile[256] VALUE(CUPS_SERVERROOT "/conf/cupsd.conf"),
/* Default language encoding */
DefaultCharset[32] VALUE(DEFAULT_CHARSET),
/* Default charset */
RIPCache[32] VALUE("8m"),
RIPCache[32] VALUE("32m"),
/* Amount of memory for RIPs */
TempDir[32] VALUE("/var/tmp");
/* Temporary directory */
@@ -71,8 +71,6 @@ VAR int User VALUE(DEFAULT_UID),
/* Group ID for server */
LogLevel VALUE(LOG_ERROR),
/* Log level */
MaxClients VALUE(0),
/* Maximum number of clients */
MaxLogSize VALUE(1024 * 1024),
/* Maximum size of log files */
MaxRequestSize VALUE(0),
+1
Ver Arquivo
@@ -71,6 +71,7 @@
#define MAX_BROWSERS 10 /* Maximum number of browse addresses */
#define MAX_LISTENERS 10 /* Maximum number of listener sockets */
#define MAX_CLIENTS 100 /* Maximum number of client sockets */
#define MAX_USERPASS 16 /* Maximum size of username/password */
#define MAX_FILTERS 20 /* Maximum number of filters */
+6 -18
Ver Arquivo
@@ -278,11 +278,11 @@ UpdateBrowseList(void)
* Force the URI to point to the real server...
*/
p->type = type;
strcpy(p->uri, uri);
strcpy(p->device_uri, uri);
strcpy(p->hostname, host);
SetPrinterAttrs(p);
free(p->attrs->attrs->values[0].string.text);
p->attrs->attrs->values[0].string.text = strdup(uri);
}
}
else
@@ -330,14 +330,14 @@ UpdateBrowseList(void)
p = AddPrinter(name);
/*
* Force the URI to point to the real server...
* First the URI to point to the real server...
*/
p->type = type;
strcpy(p->uri, uri);
strcpy(p->device_uri, uri);
strcpy(p->hostname, host);
SetPrinterAttrs(p);
free(p->attrs->attrs->values[0].string.text);
p->attrs->attrs->values[0].string.text = strdup(uri);
}
}
@@ -395,16 +395,8 @@ UpdateBrowseList(void)
if ((pclass = FindClass(name)) == NULL)
{
/*
* Need to add the class...
*/
pclass = AddClass(name);
pclass->type |= CUPS_PRINTER_IMPLICIT;
pclass->accepting = 1;
pclass->state = IPP_PRINTER_IDLE;
SetPrinterAttrs(pclass);
pclass->type |= CUPS_PRINTER_IMPLICIT;
DEBUG_printf(("Added new class \"%s\", type = %x\n", name,
pclass->type));
@@ -504,11 +496,7 @@ SendBrowseList(void)
*/
if (p->browse_time < to)
{
DEBUG_printf(("Printer \"%s\" has timed out (%d < %d...)\n",
p->name, p->browse_time, to));
DeletePrinter(p);
}
}
else if (p->browse_time < ut && !(p->type & CUPS_PRINTER_IMPLICIT))
{
+4 -13
Ver Arquivo
@@ -581,24 +581,11 @@ add_printer(client_t *con, /* I - Client connection */
if ((attr = ippFindAttribute(con->request, "printer-more-info", IPP_TAG_URI)) != NULL)
strcpy(printer->more_info, attr->values[0].string.text);
if ((attr = ippFindAttribute(con->request, "device-uri", IPP_TAG_URI)) != NULL)
{
LogMessage(LOG_INFO, "Setting %s device-uri to \"%s\" (was \"%s\".)",
printer->name, attr->values[0].string.text, printer->device_uri);
strcpy(printer->device_uri, attr->values[0].string.text);
}
if ((attr = ippFindAttribute(con->request, "printer-is-accepting-jobs", IPP_TAG_BOOLEAN)) != NULL)
{
LogMessage(LOG_INFO, "Setting %s printer-is-accepting-jobs to %d (was %d.)",
printer->name, attr->values[0].boolean, printer->accepting);
printer->accepting = attr->values[0].boolean;
}
if ((attr = ippFindAttribute(con->request, "printer-state", IPP_TAG_ENUM)) != NULL)
{
LogMessage(LOG_INFO, "Setting %s printer-state to %d (was %d.)", printer->name,
attr->values[0].integer, printer->state);
if (printer->state == IPP_PRINTER_STOPPED &&
attr->values[0].integer != IPP_PRINTER_STOPPED)
printer->state = IPP_PRINTER_IDLE;
@@ -1488,6 +1475,7 @@ get_printers(client_t *con, /* I - Client connection */
* printer-state
* printer-state-message
* printer-is-accepting-jobs
* printer-device-uri
* + all printer attributes
*/
@@ -1501,6 +1489,9 @@ get_printers(client_t *con, /* I - Client connection */
ippAddBoolean(con->response, IPP_TAG_PRINTER, "printer-is-accepting-jobs",
printer->accepting);
ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_URI,
"printer-device-uri", NULL, printer->device_uri);
ippAddInteger(con->response, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
"printer-up-time", curtime - StartTime);
ippAddDate(con->response, IPP_TAG_PRINTER, "printer-current-time",
+315 -352
Ver Arquivo
@@ -206,8 +206,7 @@ CheckJobs(void)
* cancel the job...
*/
LogMessage(LOG_WARN, "Printer/class %s has gone away; cancelling job %d!",
current->dest, current->id);
DEBUG_puts("CheckJobs: printer/class has gone away; cancelling the job!");
CancelJob(current->id);
if (prev == NULL)
@@ -215,7 +214,7 @@ CheckJobs(void)
else
current = prev->next;
}
else if (printer != NULL)
else
{
/*
* See if the printer is available; if so, start the job...
@@ -228,8 +227,6 @@ CheckJobs(void)
current = current->next;
}
else
current = current->next;
}
else
current = current->next;
@@ -315,380 +312,347 @@ StartJob(int id, /* I - Job ID */
for (current = Jobs; current != NULL; current = current->next)
if (current->id == id)
break;
if (current == NULL)
return;
/*
* Update the printer and job state to "processing"...
*/
DEBUG_puts("StartJob: found job in list.");
current->state = IPP_JOB_PROCESSING;
current->status = 0;
current->printer = printer;
printer->job = current;
SetPrinterState(printer, IPP_PRINTER_PROCESSING);
/*
* Figure out what filters are required to convert from
* the source to the destination type...
*/
num_filters = 0;
#ifdef DEBUG
printf("Filtering from %s/%s to %s/%s...\n",
current->filetype->super, current->filetype->type,
printer->filetype->super, printer->filetype->type);
printf("num_filters = %d\n", MimeDatabase->num_filters);
for (i = 0; i < MimeDatabase->num_filters; i ++)
printf("filters[%d] = %s/%s to %s/%s using \"%s\" (cost %d)\n",
i, MimeDatabase->filters[i].src->super,
MimeDatabase->filters[i].src->type,
MimeDatabase->filters[i].dst->super,
MimeDatabase->filters[i].dst->type,
MimeDatabase->filters[i].filter,
MimeDatabase->filters[i].cost);
#endif /* DEBUG */
if (printer->type & CUPS_PRINTER_REMOTE)
{
/*
* Remote jobs go directly to the remote job...
*/
filters = NULL;
}
else
{
/*
* Local jobs get filtered...
*/
filters = mimeFilter(MimeDatabase, current->filetype,
printer->filetype, &num_filters);
if (num_filters == 0)
{
LogMessage(LOG_ERROR, "Unable to convert file to printable format for job %s-%d!",
printer->name, current->id);
CancelJob(current->id);
return;
}
}
/*
* Update the printer and job state to "processing"...
*/
/*
* Building the options string is harder than it needs to be, but
* for the moment we need to pass strings for command-line args and
* not IPP attribute pointers... :)
*/
DEBUG_puts("StartJob: found job in list.");
optptr = options;
*optptr = '\0';
current->state = IPP_JOB_PROCESSING;
current->status = 0;
current->printer = printer;
printer->job = current;
SetPrinterState(printer, IPP_PRINTER_PROCESSING);
sprintf(title, "%s-%d", printer->name, current->id);
strcpy(copies, "1");
/*
* Figure out what filters are required to convert from
* the source to the destination type...
*/
for (attr = current->attrs->attrs; attr != NULL; attr = attr->next)
{
if (strcmp(attr->name, "copies") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
sprintf(copies, "%d", attr->values[0].integer);
else if (strcmp(attr->name, "job-name") == 0 &&
(attr->value_tag == IPP_TAG_NAME ||
attr->value_tag == IPP_TAG_NAMELANG))
strcpy(title, attr->values[0].string.text);
else if ((attr->group_tag == IPP_TAG_JOB ||
attr->group_tag == IPP_TAG_EXTENSION) &&
(optptr - options) < (sizeof(options) - 128))
{
if (attr->value_tag == IPP_TAG_MIMETYPE ||
attr->value_tag == IPP_TAG_NAMELANG ||
attr->value_tag == IPP_TAG_TEXTLANG ||
attr->value_tag == IPP_TAG_URI ||
attr->value_tag == IPP_TAG_URISCHEME)
continue;
num_filters = 0;
if (optptr > options)
strcat(optptr, " ");
if (!(printer->type & CUPS_PRINTER_REMOTE))
filters = mimeFilter(MimeDatabase, current->filetype,
printer->filetype, &num_filters);
if (attr->value_tag != IPP_TAG_BOOLEAN)
if (num_filters == 0)
{
strcat(optptr, attr->name);
strcat(optptr, "=");
LogMessage(LOG_ERROR, "Unable to convert file to printable format for job %s-%d!",
printer->name, current->id);
CancelJob(current->id);
return;
}
for (i = 0; i < attr->num_values; i ++)
/*
* Building the options string is harder than it needs to be, but
* for the moment we need to pass strings for command-line args and
* not IPP attribute pointers... :)
*/
optptr = options;
*optptr = '\0';
sprintf(title, "%s-%d", printer->name, current->id);
strcpy(copies, "1");
for (attr = current->attrs->attrs; attr != NULL; attr = attr->next)
{
if (i)
strcat(optptr, ",");
if (strcmp(attr->name, "copies") == 0 &&
attr->value_tag == IPP_TAG_INTEGER)
sprintf(copies, "%d", attr->values[0].integer);
else if (strcmp(attr->name, "job-name") == 0 &&
(attr->value_tag == IPP_TAG_NAME ||
attr->value_tag == IPP_TAG_NAMELANG))
strcpy(title, attr->values[0].string.text);
else if ((attr->group_tag == IPP_TAG_JOB ||
attr->group_tag == IPP_TAG_EXTENSION) &&
(optptr - options) < (sizeof(options) - 128))
{
if (attr->value_tag == IPP_TAG_MIMETYPE ||
attr->value_tag == IPP_TAG_NAMELANG ||
attr->value_tag == IPP_TAG_TEXTLANG ||
attr->value_tag == IPP_TAG_URI ||
attr->value_tag == IPP_TAG_URISCHEME)
continue;
optptr += strlen(optptr);
if (optptr > options)
strcat(optptr, " ");
switch (attr->value_tag)
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
sprintf(optptr, "%d", attr->values[i].integer);
break;
if (attr->value_tag != IPP_TAG_BOOLEAN)
{
strcat(optptr, attr->name);
strcat(optptr, "=");
}
case IPP_TAG_BOOLEAN :
if (!attr->values[i].boolean)
strcat(optptr, "no");
for (i = 0; i < attr->num_values; i ++)
{
if (i)
strcat(optptr, ",");
case IPP_TAG_NOVALUE :
strcat(optptr, attr->name);
break;
optptr += strlen(optptr);
case IPP_TAG_RANGE :
sprintf(optptr, "%d-%d", attr->values[i].range.lower,
attr->values[i].range.upper);
break;
switch (attr->value_tag)
{
case IPP_TAG_INTEGER :
case IPP_TAG_ENUM :
sprintf(optptr, "%d", attr->values[i].integer);
break;
case IPP_TAG_RESOLUTION :
sprintf(optptr, "%dx%d%s", attr->values[i].resolution.xres,
attr->values[i].resolution.yres,
attr->values[i].resolution.units == IPP_RES_PER_INCH ?
"dpi" : "dpc");
break;
case IPP_TAG_BOOLEAN :
if (!attr->values[i].boolean)
strcat(optptr, "no");
case IPP_TAG_STRING :
case IPP_TAG_TEXT :
case IPP_TAG_NAME :
case IPP_TAG_KEYWORD :
case IPP_TAG_CHARSET :
case IPP_TAG_LANGUAGE :
if (strchr(attr->values[i].string.text, ' ') != NULL ||
strchr(attr->values[i].string.text, '\t') != NULL ||
strchr(attr->values[i].string.text, '\n') != NULL)
{
strcat(optptr, "\'");
strcat(optptr, attr->values[i].string.text);
strcat(optptr, "\'");
}
else
strcat(optptr, attr->values[i].string.text);
break;
case IPP_TAG_NOVALUE :
strcat(optptr, attr->name);
break;
case IPP_TAG_RANGE :
sprintf(optptr, "%d-%d", attr->values[i].range.lower,
attr->values[i].range.upper);
break;
case IPP_TAG_RESOLUTION :
sprintf(optptr, "%dx%d%s", attr->values[i].resolution.xres,
attr->values[i].resolution.yres,
attr->values[i].resolution.units == IPP_RES_PER_INCH ?
"dpi" : "dpc");
break;
case IPP_TAG_STRING :
case IPP_TAG_TEXT :
case IPP_TAG_NAME :
case IPP_TAG_KEYWORD :
case IPP_TAG_CHARSET :
case IPP_TAG_LANGUAGE :
if (strchr(attr->values[i].string.text, ' ') != NULL ||
strchr(attr->values[i].string.text, '\t') != NULL ||
strchr(attr->values[i].string.text, '\n') != NULL)
{
strcat(optptr, "\'");
strcat(optptr, attr->values[i].string.text);
strcat(optptr, "\'");
}
else
strcat(optptr, attr->values[i].string.text);
break;
}
}
optptr += strlen(optptr);
}
}
optptr += strlen(optptr);
}
}
/*
* Build the command-line arguments for the filters. Each filter
* has 6 or 7 arguments:
*
* argv[0] = printer
* argv[1] = job ID
* argv[2] = username
* argv[3] = title
* argv[4] = # copies
* argv[5] = options
* argv[6] = filename (optional; normally stdin)
*
* This allows legacy printer drivers that use the old System V
* printing interface to be used by CUPS.
*/
/*
* Build the command-line arguments for the filters. Each filter
* has 6 or 7 arguments:
*
* argv[0] = printer
* argv[1] = job ID
* argv[2] = username
* argv[3] = title
* argv[4] = # copies
* argv[5] = options
* argv[6] = filename (optional; normally stdin)
*
* This allows legacy printer drivers that use the old System V
* printing interface to be used by CUPS.
*/
sprintf(jobid, "%d", current->id);
sprintf(jobid, "%d", current->id);
argv[0] = printer->name;
argv[1] = jobid;
argv[2] = current->username;
argv[3] = title;
argv[4] = copies;
argv[5] = options;
argv[6] = current->filename;
argv[7] = NULL;
argv[0] = printer->name;
argv[1] = jobid;
argv[2] = current->username;
argv[3] = title;
argv[4] = copies;
argv[5] = options;
argv[6] = current->filename;
argv[7] = NULL;
DEBUG_printf(("StartJob: args = \'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\'\n",
argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]));
DEBUG_printf(("StartJob: args = \'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\',\'%s\'\n",
argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]));
/*
* Create environment variable strings for the filters...
*/
/*
* Create environment variable strings for the filters...
*/
attr = ippFindAttribute(current->attrs, "attributes-natural-language",
IPP_TAG_LANGUAGE);
sprintf(language, "LANG=%s", attr->values[0].string.text);
attr = ippFindAttribute(current->attrs, "attributes-natural-language",
IPP_TAG_LANGUAGE);
sprintf(language, "LANG=%s", attr->values[0].string.text);
attr = ippFindAttribute(current->attrs, "document-format",
IPP_TAG_MIMETYPE);
if ((optptr = strstr(attr->values[0].string.text, "charset=")) != NULL)
sprintf(charset, "CHARSET=%s", optptr + 8);
else
{
attr = ippFindAttribute(current->attrs, "attributes-charset",
IPP_TAG_CHARSET);
sprintf(charset, "CHARSET=%s", attr->values[0].string.text);
}
sprintf(ppd, "PPD=%s/ppd/%s.ppd", ServerRoot, printer->name);
sprintf(root, "SERVER_ROOT=%s", ServerRoot);
sprintf(cache, "RIP_MAX_CACHE=%s", RIPCache);
sprintf(tmpdir, "TMPDIR=%s", TempDir);
envp[0] = "PATH=/bin:/usr/bin";
envp[1] = "SOFTWARE=CUPS/1.0";
envp[2] = "TZ=GMT";
envp[3] = "USER=root";
envp[4] = charset;
envp[5] = language;
envp[6] = "TZ=GMT";
envp[7] = ppd;
envp[8] = root;
envp[9] = cache;
envp[10] = tmpdir;
envp[11] = NULL;
DEBUG_puts(envp[0]);
DEBUG_puts(envp[1]);
DEBUG_puts(envp[2]);
DEBUG_puts(envp[3]);
DEBUG_puts(envp[4]);
DEBUG_puts(envp[5]);
DEBUG_puts(envp[6]);
DEBUG_puts(envp[7]);
DEBUG_puts(envp[8]);
DEBUG_puts(envp[9]);
DEBUG_puts(envp[10]);
/*
* Now create processes for all of the filters...
*/
if (pipe(statusfds))
{
LogMessage(LOG_ERROR, "StartJob: unable to create status pipes - %s.",
strerror(errno));
return;
}
DEBUG_printf(("statusfds = %d, %d\n", statusfds[0], statusfds[1]));
current->pipe = statusfds[0];
memset(current->procs, 0, sizeof(current->procs));
if (num_filters > 0 && strcmp(filters[num_filters - 1].filter, "-") == 0)
num_filters --;
filterfds[1][0] = open("/dev/null", O_RDONLY);
filterfds[1][1] = -1;
DEBUG_printf(("filterfds[%d] = %d, %d\n", 1, filterfds[1][0],
filterfds[1][1]));
for (i = 0; i < num_filters; i ++)
{
if (i == 1)
argv[6] = NULL;
if (filters[i].filter[0] != '/')
sprintf(command, "%s/filter/%s", ServerRoot, filters[i].filter);
else
strcpy(command, filters[i].filter);
DEBUG_printf(("%s: %s %s %s %s %s %s %s\n", command, argv[0],
argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]));
if (i < (num_filters - 1) ||
strncmp(printer->device_uri, "file:", 5) != 0)
pipe(filterfds[i & 1]);
else
{
filterfds[i & 1][0] = -1;
if (strncmp(printer->device_uri, "file:/dev/", 10) == 0)
filterfds[i & 1][1] = open(printer->device_uri + 5,
O_WRONLY | O_EXCL);
attr = ippFindAttribute(current->attrs, "document-format",
IPP_TAG_MIMETYPE);
if ((optptr = strstr(attr->values[0].string.text, "charset=")) != NULL)
sprintf(charset, "CHARSET=%s", optptr + 8);
else
filterfds[i & 1][1] = open(printer->device_uri + 5,
O_WRONLY | O_CREAT | O_TRUNC, 0666);
{
attr = ippFindAttribute(current->attrs, "attributes-charset",
IPP_TAG_CHARSET);
sprintf(charset, "CHARSET=%s", attr->values[0].string.text);
}
sprintf(ppd, "PPD=%s/ppd/%s.ppd", ServerRoot, printer->name);
sprintf(root, "SERVER_ROOT=%s", ServerRoot);
sprintf(cache, "RIP_MAX_CACHE=%s", RIPCache);
sprintf(tmpdir, "TMPDIR=%s", TempDir);
envp[0] = "PATH=/bin:/usr/bin";
envp[1] = "SOFTWARE=CUPS/1.0";
envp[2] = "TZ=GMT";
envp[3] = "USER=root";
envp[4] = charset;
envp[5] = language;
envp[6] = "TZ=GMT";
envp[7] = ppd;
envp[8] = root;
envp[9] = cache;
envp[10] = tmpdir;
envp[11] = NULL;
DEBUG_puts(envp[0]);
DEBUG_puts(envp[1]);
DEBUG_puts(envp[2]);
DEBUG_puts(envp[3]);
DEBUG_puts(envp[4]);
DEBUG_puts(envp[5]);
DEBUG_puts(envp[6]);
DEBUG_puts(envp[7]);
DEBUG_puts(envp[8]);
DEBUG_puts(envp[9]);
DEBUG_puts(envp[10]);
/*
* Now create processes for all of the filters...
*/
if (pipe(statusfds))
{
LogMessage(LOG_ERROR, "StartJob: unable to create status pipes - %s.",
strerror(errno));
return;
}
DEBUG_printf(("statusfds = %d, %d\n", statusfds[0], statusfds[1]));
current->pipe = statusfds[0];
memset(current->procs, 0, sizeof(current->procs));
if (strcmp(filters[num_filters - 1].filter, "-") == 0)
num_filters --;
filterfds[1][0] = open("/dev/null", O_RDONLY);
filterfds[1][1] = -1;
DEBUG_printf(("filterfds[%d] = %d, %d\n", 1, filterfds[1][0],
filterfds[1][1]));
for (i = 0; i < num_filters; i ++)
{
if (i == 1)
argv[6] = NULL;
if (filters[i].filter[0] != '/')
sprintf(command, "%s/filter/%s", ServerRoot, filters[i].filter);
else
strcpy(command, filters[i].filter);
DEBUG_printf(("%s: %s %s %s %s %s %s %s\n", command, argv[0],
argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]));
if (i < (num_filters - 1) ||
strncmp(printer->device_uri, "file:", 5) != 0)
pipe(filterfds[i & 1]);
else
{
filterfds[i & 1][0] = -1;
if (strncmp(printer->device_uri, "file:/dev/", 10) == 0)
filterfds[i & 1][1] = open(printer->device_uri + 5,
O_WRONLY | O_EXCL);
else
filterfds[i & 1][1] = open(printer->device_uri + 5,
O_WRONLY | O_CREAT | O_TRUNC, 0666);
}
DEBUG_printf(("filterfds[%d] = %d, %d\n", i & 1, filterfds[i & 1][0],
filterfds[i & 1][1]));
pid = start_process(command, argv, envp, filterfds[!(i & 1)][0],
filterfds[i & 1][1], statusfds[1]);
close(filterfds[!(i & 1)][0]);
close(filterfds[!(i & 1)][1]);
if (pid == 0)
{
StopPrinter(current->printer);
return;
}
else
{
current->procs[i] = pid;
DEBUG_printf(("StartJob: started %s - pid = %d.\n", command, pid));
}
}
free(filters);
/*
* Finally, pipe the final output into a backend process if needed...
*/
if (strncmp(printer->device_uri, "file:", 5) != 0)
{
sscanf(printer->device_uri, "%[^:]", method);
sprintf(command, "%s/backend/%s", ServerRoot, method);
argv[0] = printer->device_uri;
if (num_filters)
argv[6] = NULL;
DEBUG_printf(("%s: %s %s %s %s %s %s %s\n", command, argv[0],
argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]));
filterfds[i & 1][0] = -1;
filterfds[i & 1][1] = open("/dev/null", O_WRONLY);
DEBUG_printf(("filterfds[%d] = %d, %d\n", i & 1, filterfds[i & 1][0],
filterfds[i & 1][1]));
pid = start_process(command, argv, envp, filterfds[!(i & 1)][0],
filterfds[i & 1][1], statusfds[1]);
close(filterfds[!(i & 1)][0]);
close(filterfds[!(i & 1)][1]);
if (pid == 0)
{
StopPrinter(current->printer);
return;
}
else
{
current->procs[i] = pid;
DEBUG_printf(("StartJob: started %s - pid = %d.\n", command, pid));
}
}
else
{
filterfds[i & 1][0] = -1;
filterfds[i & 1][1] = -1;
close(filterfds[!(i & 1)][0]);
close(filterfds[!(i & 1)][1]);
}
close(filterfds[i & 1][0]);
close(filterfds[i & 1][1]);
close(statusfds[1]);
FD_SET(current->pipe, &InputSet);
}
DEBUG_printf(("filterfds[%d] = %d, %d\n", i & 1, filterfds[i & 1][0],
filterfds[i & 1][1]));
pid = start_process(command, argv, envp, filterfds[!(i & 1)][0],
filterfds[i & 1][1], statusfds[1]);
close(filterfds[!(i & 1)][0]);
close(filterfds[!(i & 1)][1]);
if (pid == 0)
{
StopPrinter(current->printer);
return;
}
else
{
current->procs[i] = pid;
DEBUG_printf(("StartJob: started %s - pid = %d.\n", command, pid));
}
}
if (filters != NULL)
free(filters);
/*
* Finally, pipe the final output into a backend process if needed...
*/
if (strncmp(printer->device_uri, "file:", 5) != 0)
{
sscanf(printer->device_uri, "%[^:]", method);
sprintf(command, "%s/backend/%s", ServerRoot, method);
argv[0] = printer->device_uri;
if (num_filters)
argv[6] = NULL;
DEBUG_printf(("%s: %s %s %s %s %s %s %s\n", command, argv[0],
argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]));
filterfds[i & 1][0] = -1;
filterfds[i & 1][1] = open("/dev/null", O_WRONLY);
DEBUG_printf(("filterfds[%d] = %d, %d\n", i & 1, filterfds[i & 1][0],
filterfds[i & 1][1]));
pid = start_process(command, argv, envp, filterfds[!(i & 1)][0],
filterfds[i & 1][1], statusfds[1]);
close(filterfds[!(i & 1)][0]);
close(filterfds[!(i & 1)][1]);
if (pid == 0)
{
StopPrinter(current->printer);
return;
}
else
{
current->procs[i] = pid;
DEBUG_printf(("StartJob: started %s - pid = %d.\n", command, pid));
}
}
else
{
filterfds[i & 1][0] = -1;
filterfds[i & 1][1] = -1;
close(filterfds[!(i & 1)][0]);
close(filterfds[!(i & 1)][1]);
}
close(filterfds[i & 1][0]);
close(filterfds[i & 1][1]);
close(statusfds[1]);
FD_SET(current->pipe, &InputSet);
}
@@ -831,8 +795,7 @@ UpdateJob(job_t *job) /* I - Job to check */
if (loglevel != LOG_INFO)
LogMessage(loglevel, "%s", message);
if ((loglevel <= LOG_INFO && !job->state) ||
loglevel == LOG_ERROR)
if (loglevel <= LOG_INFO)
strncpy(job->printer->state_message, message,
sizeof(job->printer->state_message) - 1);
}
+62 -83
Ver Arquivo
@@ -71,9 +71,6 @@ AddPrinter(char *name) /* I - Name of printer */
strcpy(p->name, name);
strcpy(p->hostname, ServerName);
sprintf(p->uri, "ipp://%s:%d/printers/%s", ServerName,
ntohs(Listeners[0].address.sin_port), name);
p->state = IPP_PRINTER_STOPPED;
p->accepting = 0;
p->filetype = mimeAddType(MimeDatabase, "printer", name);
@@ -152,14 +149,12 @@ AddPrinterFilter(printer_t *p, /* I - Printer to add to */
for (temptype = MimeDatabase->types, i = MimeDatabase->num_types;
i > 0;
i --, temptype ++)
if (((super[0] == '*' && strcmp((*temptype)->super, "printer") != 0) ||
strcmp((*temptype)->super, super) == 0) &&
if ((super[0] == '*' || strcmp((*temptype)->super, super) == 0) &&
(type[0] == '*' || strcmp((*temptype)->type, type) == 0))
{
LogMessage(LOG_DEBUG, "Adding filter %s/%s %s/%s %d %s",
(*temptype)->super, (*temptype)->type,
p->filetype->super, p->filetype->type,
cost, program);
DEBUG_printf(("Adding filter %s/%s %s/%s %d %s\n", (*temptype)->super,
(*temptype)->type, p->filetype->super, p->filetype->type,
cost, program));
mimeAddFilter(MimeDatabase, *temptype, p->filetype, cost, program);
}
}
@@ -198,8 +193,6 @@ DeletePrinter(printer_t *p) /* I - Printer to delete */
*prev; /* Previous printer in list */
DEBUG_printf(("DeletePrinter(%08x): p->name = \"%s\"...\n", p, p->name));
/*
* Range check input...
*/
@@ -412,8 +405,6 @@ LoadAllPrinters(void)
line[len - 1] = '\0';
p = AddPrinter(value);
p->accepting = 1;
p->state = IPP_PRINTER_IDLE;
/*
* Set the default printer as needed...
@@ -527,7 +518,7 @@ SaveAllPrinters(void)
curdate = gmtime(&curtime);
strftime(temp, sizeof(temp) - 1, "# Written by cupsd on %c\n", curdate);
fputs("# Printer configuration file for " CUPS_SVERSION "\n", fp);
fputs("# Class configuration file for " CUPS_SVERSION "\n", fp);
fputs(temp, fp);
/*
@@ -599,7 +590,7 @@ SetPrinterAttrs(printer_t *p) /* I - Printer to setup */
IPP_REVERSE_LANDSCAPE,
IPP_REVERSE_PORTRAIT
};
const char *sides[3] = /* sides-supported values */
char *sides[3] = /* sides-supported values */
{
"one",
"two-long-edge",
@@ -626,7 +617,7 @@ SetPrinterAttrs(printer_t *p) /* I - Printer to setup */
CUPS_ACCEPT_JOBS,
CUPS_REJECT_JOBS
};
const char *charsets[] = /* charset-supported values */
char *charsets[] = /* charset-supported values */
{
"us-ascii",
"iso-8859-1",
@@ -665,6 +656,12 @@ SetPrinterAttrs(printer_t *p) /* I - Printer to setup */
p->attrs = ippNew();
if (p->type & CUPS_PRINTER_CLASS)
sprintf(p->uri, "ipp://%s:%d/classes/%s", ServerName,
ntohs(Listeners[0].address.sin_port), p->name);
else
sprintf(p->uri, "ipp://%s:%d/printers/%s", ServerName,
ntohs(Listeners[0].address.sin_port), p->name);
ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_URI, "printer-uri-supported",
NULL, p->uri);
ippAddString(p->attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
@@ -710,7 +707,15 @@ SetPrinterAttrs(printer_t *p) /* I - Printer to setup */
ippAddInteger(p->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
"orientation-requested-default", IPP_PORTRAIT);
if (!(p->type & CUPS_PRINTER_REMOTE))
if (p->type & CUPS_PRINTER_REMOTE)
{
/*
* Remote printers go directly to the remote destination...
*/
AddPrinterFilter(p, "*/* 0 -");
}
else
{
/*
* Assign additional attributes depending on whether this is a printer
@@ -875,38 +880,27 @@ SetPrinterAttrs(printer_t *p) /* I - Printer to setup */
AddPrinterFilter(p, "application/vnd.cups-postscript 0 -");
}
else
{
/*
* If we have an interface script, add a filter entry for it...
*/
sprintf(filename, "%s/interfaces/%s", ServerRoot, p->name);
if (access(filename, X_OK) == 0)
{
/*
* Yes, we have a System V style interface script; use it!
*/
sprintf(filename, "*/* 0 %s/interfaces/%s", ServerRoot, p->name);
AddPrinterFilter(p, filename);
}
else
{
/*
* Otherwise we have neither - treat this as a "generic" PostScript
* printer with no PPD file...
*/
AddPrinterFilter(p, "application/vnd.cups-postscript 0 -");
}
}
ippAddIntegers(p->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
"finishings-supported", num_finishings, (int *)finishings);
ippAddInteger(p->attrs, IPP_TAG_PRINTER, IPP_TAG_ENUM,
"finishings-default", IPP_FINISH_NONE);
}
/*
* If we have an interface script, add a filter entry for it...
*/
sprintf(filename, "%s/interfaces/%s", ServerRoot, p->name);
if (access(filename, X_OK) == 0)
{
/*
* Yes, we have a System V style interface script; use it!
*/
sprintf(filename, "*/* 0 %s/interfaces/%s", ServerRoot, p->name);
AddPrinterFilter(p, filename);
}
}
/*
@@ -931,13 +925,6 @@ SetPrinterState(printer_t *p, /* I - Printer to change */
ipp_pstate_t old_state; /* Old printer state */
/*
* Can't set status of remote printers...
*/
if (p->type & CUPS_PRINTER_REMOTE)
return;
/*
* Set the new state...
*/
@@ -973,46 +960,38 @@ void
SortPrinters(void)
{
printer_t *current, /* Current printer */
*start, /* Starting printer */
*prev, /* Previous printer */
*next; /* Next printer */
int did_swap; /* Non-zero if we did a swap */
do
{
for (did_swap = 0, current = Printers, prev = NULL; current != NULL;)
if (current->next == NULL)
break;
else if (strcasecmp(current->name, current->next->name) > 0)
{
DEBUG_printf(("Swapping %s and %s...\n", current->name,
current->next->name));
for (current = Printers, prev = NULL; current != NULL;)
if (current->next == NULL)
break;
else if (strcasecmp(current->name, current->next->name) > 0)
{
DEBUG_printf(("Swapping %s and %s...\n", current->name,
current->next->name));
/*
* Need to swap these two printers...
*/
/*
* Need to swap these two printers...
*/
did_swap = 1;
if (prev == NULL)
Printers = current->next;
else
prev->next = current->next;
/*
* Yes, we can all get a headache from the next bunch of pointer
* swapping...
*/
next = current->next;
current->next = next->next;
next->next = current;
}
if (prev == NULL)
Printers = current->next;
else
current = current->next;
}
while (did_swap);
prev->next = current->next;
/*
* Yes, we can all get a headache from the next bunch of pointer
* swapping...
*/
next = current->next;
current->next = next->next;
next->next = current;
}
else
current = current->next;
}
+9 -9
Ver Arquivo
@@ -48,16 +48,16 @@ install:
-$(MKDIR) $(BINDIR)
-$(MKDIR) $(LIBDIR)
$(CP) accept lpadmin $(LIBDIR)
-$(LN) accept $(LIBDIR)/reject
-$(LN) $(LIBDIR)/accept $(BINDIR)/disable
-$(LN) $(LIBDIR)/accept $(BINDIR)/enable
$(LN) accept $(LIBDIR)/reject
$(LN) $(LIBDIR)/accept $(BINDIR)/disable
$(LN) $(LIBDIR)/accept $(BINDIR)/enable
$(CP) cancel lp lpstat $(BINDIR)
#
# accept
#
accept: accept.o ../cups/$(LIBCUPS)
accept: accept.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o accept accept.o $(LIBS)
-$(LN) accept disable
@@ -70,7 +70,7 @@ accept.o: ../cups/cups.h ../Makedefs
# cancel
#
cancel: cancel.o ../cups/$(LIBCUPS)
cancel: cancel.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o cancel cancel.o $(LIBS)
@@ -80,7 +80,7 @@ cancel.o: ../cups/cups.h ../Makedefs
# lp
#
lp: lp.o ../cups/$(LIBCUPS)
lp: lp.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lp lp.o $(LIBS)
@@ -90,9 +90,9 @@ lp.o: ../cups/cups.h ../Makedefs
# lpadmin
#
lpadmin: lpadmin.o ../cups/$(LIBCUPS)
lpadmin: lpadmin.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpadmin lpadmin.o $(LIBZ) $(LIBS)
$(CC) $(LDFLAGS) -o lpadmin lpadmin.o $(IMGLIBS)
lpadmin.o: ../cups/cups.h ../Makedefs
@@ -100,7 +100,7 @@ lpadmin.o: ../cups/cups.h ../Makedefs
# lpstat
#
lpstat: lpstat.o ../cups/$(LIBCUPS)
lpstat: lpstat.o ../cups/libcups.a
echo Linking $@...
$(CC) $(LDFLAGS) -o lpstat lpstat.o $(LIBS)
+1 -1
Ver Arquivo
@@ -45,7 +45,7 @@ main(int argc, /* I - Number of command-line arguments */
{
int i; /* Looping var */
int job_id; /* Job ID */
const char *dest; /* Destination printer */
char *dest; /* Destination printer */
char *title; /* Job title */
int priority; /* Job priority (1-100) */
int num_copies; /* Number of copies per file */
+7 -3
Ver Arquivo
@@ -161,9 +161,13 @@ main(int argc, /* I - Number of command-line arguments */
case 'E' : /* Enable the printer */
if (printer == NULL)
{
fputs("lpadmin: Unable to enable the printer:\n", stderr);
fputs(" You must specify a printer name first!\n", stderr);
return (1);
if (argv[i][2])
printer = argv[i] + 2;
else
{
i ++;
printer = argv[i];
}
}
enable_printer(http, printer);
+1 -1
Ver Arquivo
@@ -697,7 +697,7 @@ show_devices(http_t *http, /* I - HTTP connection to server */
attr->value_tag == IPP_TAG_NAME)
printer = attr->values[0].string.text;
if (strcmp(attr->name, "device-uri") == 0 &&
if (strcmp(attr->name, "printer-device-uri") == 0 &&
attr->value_tag == IPP_TAG_URI)
device = attr->values[0].string.text;