From b9faaae17cfc7cd8dfd6e82cf607c05b2f4def68 Mon Sep 17 00:00:00 2001
From: msweet
Date: Wed, 25 Feb 2009 23:37:25 +0000
Subject: [PATCH] Merge changes from CUPS 1.4svn-r8394.
git-svn-id: svn+ssh://src.apple.com/svn/cups/easysw/current@1253 a1ca3aef-8c08-0410-bb20-df032aa958be
---
CHANGES-1.3.txt | 2 +
CHANGES.txt | 14 +-
backend/serial.c | 1 -
backend/testbackend.c | 100 +-
cgi-bin/ipp-var.c | 4 +-
cgi-bin/var.c | 5 +-
conf/cupsd.conf.in | 8 +-
config-scripts/cups-common.m4 | 12 +-
config.h.in | 4 +-
cups/Dependencies | 27 +-
cups/adminutil.c | 16 +-
cups/cups.h | 2 +
cups/file-private.h | 98 +
cups/file.c | 68 +-
cups/file.h | 1 +
cups/localize.c | 3 +-
cups/request.c | 14 +-
cups/sidechannel.c | 4 +-
cups/transcode.c | 1 -
cups/util.c | 2 +-
doc/Makefile | 2 +-
doc/help/spec-ipp.html | 8 +
doc/help/spec-ppd.html | 16 +-
doc/pl/index.html.in | 107 +
locale/cups_ja.po | 6478 +++++++++++++----
locale/cups_ko.po | 544 +-
packaging/cups.list.in | 22 +-
packaging/cups.spec.in | 6 +
scheduler/Dependencies | 32 +-
scheduler/cert.c | 22 +-
scheduler/client.c | 359 +-
scheduler/cups-deviced.c | 19 +-
scheduler/cupsd.h | 8 +-
scheduler/dirsvc.c | 4 +-
scheduler/ipp.c | 159 +-
scheduler/job.c | 5006 ++++++-------
scheduler/job.h | 51 +-
scheduler/main.c | 116 +-
scheduler/printers.c | 142 +-
scheduler/process.c | 116 +-
scheduler/quotas.c | 14 +-
scheduler/select.c | 107 +-
scheduler/statbuf.c | 2 +-
scheduler/subscriptions.c | 4 +-
scheduler/util.h | 9 +-
templates/pl/add-class.tmpl | 39 +
templates/pl/add-printer.tmpl | 42 +
templates/pl/add-rss-subscription.tmpl | 43 +
templates/pl/admin.tmpl | 109 +
templates/pl/choose-device.tmpl | 53 +
templates/pl/choose-make.tmpl | 63 +
templates/pl/choose-model.tmpl | 59 +
templates/pl/choose-serial.tmpl | 51 +
templates/pl/choose-uri.tmpl | 43 +
templates/pl/class-added.tmpl | 8 +
templates/pl/class-confirm.tmpl | 10 +
templates/pl/class-deleted.tmpl | 7 +
templates/pl/class-jobs-header.tmpl | 3 +
templates/pl/class-modified.tmpl | 8 +
templates/pl/class.tmpl | 41 +
templates/pl/classes-header.tmpl | 1 +
templates/pl/classes.tmpl | 11 +
templates/pl/command.tmpl | 12 +
templates/pl/edit-config.tmpl | 24 +
templates/pl/error-op.tmpl | 9 +
templates/pl/error.tmpl | 9 +
templates/pl/header.tmpl.in | 29 +
templates/pl/help-header.tmpl | 51 +
templates/pl/help-printable.tmpl | 11 +
templates/pl/help-trailer.tmpl | 1 +
templates/pl/job-cancel.tmpl | 7 +
templates/pl/job-hold.tmpl | 7 +
templates/pl/job-move.tmpl | 26 +
templates/pl/job-moved.tmpl | 8 +
templates/pl/job-release.tmpl | 7 +
templates/pl/job-restart.tmpl | 7 +
templates/pl/jobs-header.tmpl | 5 +
templates/pl/jobs.tmpl | 37 +
templates/pl/list-available-printers.tmpl | 11 +
templates/pl/modify-class.tmpl | 32 +
templates/pl/modify-printer.tmpl | 37 +
templates/pl/norestart.tmpl | 8 +
templates/pl/option-boolean.tmpl | 6 +
templates/pl/option-conflict.tmpl | 7 +
templates/pl/option-header.tmpl | 5 +
templates/pl/option-pickmany.tmpl | 6 +
templates/pl/option-pickone.tmpl | 18 +
templates/pl/option-trailer.tmpl | 5 +
templates/pl/pager.tmpl | 6 +
templates/pl/printer-accept.tmpl | 9 +
templates/pl/printer-added.tmpl | 8 +
templates/pl/printer-configured.tmpl | 8 +
templates/pl/printer-confirm.tmpl | 10 +
templates/pl/printer-default.tmpl | 13 +
templates/pl/printer-deleted.tmpl | 7 +
templates/pl/printer-jobs-header.tmpl | 3 +
templates/pl/printer-modified.tmpl | 8 +
templates/pl/printer-purge.tmpl | 9 +
templates/pl/printer-reject.tmpl | 9 +
templates/pl/printer-start.tmpl | 9 +
templates/pl/printer-stop.tmpl | 9 +
templates/pl/printer.tmpl | 45 +
templates/pl/printers-header.tmpl | 1 +
templates/pl/printers.tmpl | 11 +
templates/pl/restart.tmpl | 8 +
templates/pl/samba-export.tmpl | 54 +
templates/pl/samba-exported.tmpl | 1 +
templates/pl/search.tmpl | 10 +
templates/pl/set-printer-options-header.tmpl | 25 +
templates/pl/set-printer-options-trailer.tmpl | 16 +
templates/pl/subscription-added.tmpl | 5 +
templates/pl/subscription-canceled.tmpl | 5 +
templates/pl/test-page.tmpl | 8 +
templates/pl/trailer.tmpl | 8 +
templates/pl/users.tmpl | 29 +
test/5.5-lp.sh | 10 +-
test/5.6-lpr.sh | 10 +-
test/run-stp-tests.sh | 16 +-
test/waitjobs.sh | 33 +-
119 files changed, 10330 insertions(+), 4788 deletions(-)
create mode 100644 cups/file-private.h
create mode 100644 doc/pl/index.html.in
create mode 100644 templates/pl/add-class.tmpl
create mode 100644 templates/pl/add-printer.tmpl
create mode 100644 templates/pl/add-rss-subscription.tmpl
create mode 100644 templates/pl/admin.tmpl
create mode 100644 templates/pl/choose-device.tmpl
create mode 100644 templates/pl/choose-make.tmpl
create mode 100644 templates/pl/choose-model.tmpl
create mode 100644 templates/pl/choose-serial.tmpl
create mode 100644 templates/pl/choose-uri.tmpl
create mode 100644 templates/pl/class-added.tmpl
create mode 100644 templates/pl/class-confirm.tmpl
create mode 100644 templates/pl/class-deleted.tmpl
create mode 100644 templates/pl/class-jobs-header.tmpl
create mode 100644 templates/pl/class-modified.tmpl
create mode 100644 templates/pl/class.tmpl
create mode 100644 templates/pl/classes-header.tmpl
create mode 100644 templates/pl/classes.tmpl
create mode 100644 templates/pl/command.tmpl
create mode 100644 templates/pl/edit-config.tmpl
create mode 100644 templates/pl/error-op.tmpl
create mode 100644 templates/pl/error.tmpl
create mode 100644 templates/pl/header.tmpl.in
create mode 100644 templates/pl/help-header.tmpl
create mode 100644 templates/pl/help-printable.tmpl
create mode 100644 templates/pl/help-trailer.tmpl
create mode 100644 templates/pl/job-cancel.tmpl
create mode 100644 templates/pl/job-hold.tmpl
create mode 100644 templates/pl/job-move.tmpl
create mode 100644 templates/pl/job-moved.tmpl
create mode 100644 templates/pl/job-release.tmpl
create mode 100644 templates/pl/job-restart.tmpl
create mode 100644 templates/pl/jobs-header.tmpl
create mode 100644 templates/pl/jobs.tmpl
create mode 100644 templates/pl/list-available-printers.tmpl
create mode 100644 templates/pl/modify-class.tmpl
create mode 100644 templates/pl/modify-printer.tmpl
create mode 100644 templates/pl/norestart.tmpl
create mode 100644 templates/pl/option-boolean.tmpl
create mode 100644 templates/pl/option-conflict.tmpl
create mode 100644 templates/pl/option-header.tmpl
create mode 100644 templates/pl/option-pickmany.tmpl
create mode 100644 templates/pl/option-pickone.tmpl
create mode 100644 templates/pl/option-trailer.tmpl
create mode 100644 templates/pl/pager.tmpl
create mode 100644 templates/pl/printer-accept.tmpl
create mode 100644 templates/pl/printer-added.tmpl
create mode 100644 templates/pl/printer-configured.tmpl
create mode 100644 templates/pl/printer-confirm.tmpl
create mode 100644 templates/pl/printer-default.tmpl
create mode 100644 templates/pl/printer-deleted.tmpl
create mode 100644 templates/pl/printer-jobs-header.tmpl
create mode 100644 templates/pl/printer-modified.tmpl
create mode 100644 templates/pl/printer-purge.tmpl
create mode 100644 templates/pl/printer-reject.tmpl
create mode 100644 templates/pl/printer-start.tmpl
create mode 100644 templates/pl/printer-stop.tmpl
create mode 100644 templates/pl/printer.tmpl
create mode 100644 templates/pl/printers-header.tmpl
create mode 100644 templates/pl/printers.tmpl
create mode 100644 templates/pl/restart.tmpl
create mode 100644 templates/pl/samba-export.tmpl
create mode 100644 templates/pl/samba-exported.tmpl
create mode 100644 templates/pl/search.tmpl
create mode 100644 templates/pl/set-printer-options-header.tmpl
create mode 100644 templates/pl/set-printer-options-trailer.tmpl
create mode 100644 templates/pl/subscription-added.tmpl
create mode 100644 templates/pl/subscription-canceled.tmpl
create mode 100644 templates/pl/test-page.tmpl
create mode 100644 templates/pl/trailer.tmpl
create mode 100644 templates/pl/users.tmpl
diff --git a/CHANGES-1.3.txt b/CHANGES-1.3.txt
index a61242939..8f4621f57 100644
--- a/CHANGES-1.3.txt
+++ b/CHANGES-1.3.txt
@@ -5,6 +5,8 @@ CHANGES IN CUPS V1.3.10
- Documentation fixes (STR #2994, STR #2995, STR #3008, STR #3056,
STR #3057)
+ - Fixed a localization problem for option choices (incorrectly) named
+ "Custom" (STR #3106)
- The fallback OpenSSL random number seeding would not work (STR #3079)
- The scheduler might miss a child signal, causing high CPU usage.
- The scheduler did not enforce quotas after the job history was
diff --git a/CHANGES.txt b/CHANGES.txt
index e91de63cc..c1cedc32f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,13 +1,17 @@
-CHANGES.txt - 2009-02-17
+CHANGES.txt - 2009-02-25
------------------------
CHANGES IN CUPS V1.4b3
- Documentation fixes (STR #3044, STR #3057)
- - Added complete localizations for Japanese and Russian and partial
- localizations for Chinese, Danish, German, Finnish, French, Italian,
- Korean, Norwegian, Polish, Portuguese, and Swedish (STR #3096,
- STR #3098)
+ - The cups-deviced helper program could miss reporting some backend
+ devices (STR #3108)
+ - The cupsSideChannelSNMP* functions did not work.
+ - The scheduler could consume 100% CPU when jobs were canceled.
+ - Added complete localizations for Japanese, Polish, and Russian and
+ partial localizations for Chinese, Danish, German, Finnish, French,
+ Italian, Korean, Norwegian, Portuguese, and Swedish (STR #3096,
+ STR #3098, STR #3109, STR #3111)
- Clicking on "Select Another Make/Manufacturer" in the web interface
incorrectly added the printer (STR #3095)
- The scheduler no longer uses programs with insecure file
diff --git a/backend/serial.c b/backend/serial.c
index c0f8fae50..81d92de8d 100644
--- a/backend/serial.c
+++ b/backend/serial.c
@@ -944,7 +944,6 @@ list_devices(void)
# ifdef B115200
printf("serial serial:%s?baud=115200 \"Unknown\" \"%s\"\n", device, info);
- device, i + 1);
# else
printf("serial serial:%s?baud=38400 \"Unknown\" \"%s\"\n", device, info);
# endif /* B115200 */
diff --git a/backend/testbackend.c b/backend/testbackend.c
index 363572a76..e0f573ccd 100644
--- a/backend/testbackend.c
+++ b/backend/testbackend.c
@@ -3,7 +3,7 @@
*
* Backend test program for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -16,8 +16,9 @@
*
* Contents:
*
- * main() - Run the named backend.
- * usage() - Show usage information.
+ * main() - Run the named backend.
+ * usage() - Show usage information.
+ * walk_cb() - Show results of cupsSideChannelSNMPWalk...
*/
/*
@@ -40,6 +41,8 @@
*/
static void usage(void);
+static void walk_cb(const char *oid, const char *data, int datalen,
+ void *context);
/*
@@ -57,7 +60,11 @@ main(int argc, /* I - Number of command-line args */
int first_arg, /* First argument for backend */
do_query = 0, /* Do PostScript query? */
do_side_tests = 0, /* Test side-channel ops? */
- do_trickle = 0; /* Trickle data to backend */
+ do_trickle = 0, /* Trickle data to backend */
+ do_walk = 0, /* Do OID lookup (0) or walking (1) */
+ show_log = 0; /* Show log messages from backends? */
+ const char *oid = ".1.3.6.1.2.1.43.10.2.1.4.1.1";
+ /* OID to lookup or walk */
char scheme[255], /* Scheme in URI == backend */
backend[1024]; /* Backend path */
const char *serverbin; /* CUPS_SERVERBIN environment variable */
@@ -75,12 +82,29 @@ main(int argc, /* I - Number of command-line args */
for (first_arg = 1;
argv[first_arg] && argv[first_arg][0] == '-';
first_arg ++)
- if (!strcmp(argv[first_arg], "-ps"))
+ if (!strcmp(argv[first_arg], "-d"))
+ show_log = 1;
+ else if (!strcmp(argv[first_arg], "-ps"))
do_query = 1;
else if (!strcmp(argv[first_arg], "-s"))
do_side_tests = 1;
else if (!strcmp(argv[first_arg], "-t"))
do_trickle = 1;
+ else if (!strcmp(argv[first_arg], "-get") && (first_arg + 1) < argc)
+ {
+ first_arg ++;
+
+ do_side_tests = 1;
+ oid = argv[first_arg];
+ }
+ else if (!strcmp(argv[first_arg], "-walk") && (first_arg + 1) < argc)
+ {
+ first_arg ++;
+
+ do_side_tests = 1;
+ do_walk = 1;
+ oid = argv[first_arg];
+ }
else
usage();
@@ -187,6 +211,7 @@ main(int argc, /* I - Number of command-line args */
static const char *ps_query = /* PostScript query file */
"%!\n"
"save\n"
+ "product = flush\n"
"currentpagedevice /PageSize get aload pop\n"
"2 copy gt {exch} if\n"
"(Unknown)\n"
@@ -221,7 +246,7 @@ main(int argc, /* I - Number of command-line args */
write(1, ps_query, strlen(ps_query));
write(2, "DEBUG: START\n", 13);
- while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer), 30.0)) > 0)
+ while ((bytes = cupsBackChannelRead(buffer, sizeof(buffer), 5.0)) > 0)
write(2, buffer, bytes);
write(2, "\nDEBUG: END\n", 12);
}
@@ -255,6 +280,12 @@ main(int argc, /* I - Number of command-line args */
close(data_fds[1]);
}
+ if (!show_log)
+ {
+ close(2);
+ open("/dev/null", O_WRONLY);
+ }
+
close(3);
dup(back_fds[1]);
close(back_fds[0]);
@@ -343,11 +374,31 @@ main(int argc, /* I - Number of command-line args */
printf("CUPS_SC_CMD_GET_STATE returned %s, %02X\n", statuses[scstatus],
buffer[0] & 255);
- length = sizeof(buffer);
- scstatus = cupsSideChannelSNMPGet(".1.3.6.1.2.1.43.10.2.1.4.1.1", buffer,
- &length, 5.0);
- printf("CUPS_SC_CMD_SNMP_GET returned %s, %s\n", statuses[scstatus],
- buffer);
+ if (do_walk)
+ {
+ /*
+ * Walk the OID tree...
+ */
+
+ scstatus = cupsSideChannelSNMPWalk(oid, 5.0, walk_cb, NULL);
+ printf("CUPS_SC_CMD_SNMP_WALK returned %s\n", statuses[scstatus]);
+ }
+ else
+ {
+ /*
+ * Lookup the same OID twice...
+ */
+
+ length = sizeof(buffer);
+ scstatus = cupsSideChannelSNMPGet(oid, buffer, &length, 5.0);
+ printf("CUPS_SC_CMD_SNMP_GET %s returned %s, %s\n", oid,
+ statuses[scstatus], buffer);
+
+ length = sizeof(buffer);
+ scstatus = cupsSideChannelSNMPGet(oid, buffer, &length, 5.0);
+ printf("CUPS_SC_CMD_SNMP_GET %s returned %s, %s\n", oid,
+ statuses[scstatus], buffer);
+ }
length = 0;
scstatus = cupsSideChannelDoRequest(CUPS_SC_CMD_SOFT_RESET, buffer,
@@ -380,12 +431,35 @@ main(int argc, /* I - Number of command-line args */
static void
usage(void)
{
- fputs("Usage: testbackend [-ps] [-s] [-t] device-uri job-id user title copies "
- "options [file]\n", stderr);
+ puts("Usage: testbackend [-d] [-ps] [-s [-oid OID] [-walk OID]] [-t] "
+ "device-uri job-id user title copies options [file]");
+ puts("");
+ puts("Options:");
+ puts(" -d Show log messages from backend.");
+ puts(" -oid OID Lookup the specified SNMP OID.");
+ puts(" -ps Send PostScript query code to backend.");
+ puts(" -s Do SNMP tests.");
+ puts(" -t Send spaces slowly to backend ('trickle').");
+ puts(" -walk OID Walk the specified SNMP OID.");
+
exit(1);
}
+/*
+ * 'walk_cb()' - Show results of cupsSideChannelSNMPWalk...
+ */
+
+static void
+walk_cb(const char *oid, /* I - OID */
+ const char *data, /* I - Data */
+ int datalen, /* I - Length of data */
+ void *context) /* I - Context (unused) */
+{
+ printf("CUPS_SC_CMD_SNMP_WALK %s=%s (%d bytes)\n", oid, data, datalen);
+}
+
+
/*
* End of "$Id$".
*/
diff --git a/cgi-bin/ipp-var.c b/cgi-bin/ipp-var.c
index fd1b5be1b..4048dd605 100644
--- a/cgi-bin/ipp-var.c
+++ b/cgi-bin/ipp-var.c
@@ -1406,8 +1406,8 @@ cgiShowJobs(http_t *http, /* I - Connection to server */
NULL, url);
}
else
- ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "job-uri", NULL,
- "ipp://localhost/jobs");
+ ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL,
+ "ipp://localhost/");
if ((which_jobs = cgiGetVariable("which_jobs")) != NULL)
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_KEYWORD, "which-jobs",
diff --git a/cgi-bin/var.c b/cgi-bin/var.c
index 164144a27..6470fcbfd 100644
--- a/cgi-bin/var.c
+++ b/cgi-bin/var.c
@@ -3,7 +3,7 @@
*
* CGI form variable and array functions.
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -148,9 +148,6 @@ cgiGetArray(const char *name, /* I - Name of array variable */
if ((var = cgi_find_variable(name)) == NULL)
return (NULL);
- if (var->nvalues == 1)
- return (var->values[0]);
-
if (element < 0 || element >= var->nvalues)
return (NULL);
diff --git a/conf/cupsd.conf.in b/conf/cupsd.conf.in
index 63ea89e76..adc0752cf 100644
--- a/conf/cupsd.conf.in
+++ b/conf/cupsd.conf.in
@@ -62,13 +62,13 @@ DefaultAuthType Basic
# All printer operations require a printer operator to authenticate...
AuthType Default
- Require user @CUPS_DEFAULT_PRINTADMIN_AUTH@
+ Require user @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
Order deny,allow
# Only the owner or an administrator can cancel or authenticate a job...
- Require user @OWNER @CUPS_DEFAULT_PRINTADMIN_AUTH@
+ Require user @OWNER @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
Order deny,allow
@@ -101,14 +101,14 @@ DefaultAuthType Basic
# All printer operations require a printer operator to authenticate...
AuthType Default
- Require user @CUPS_DEFAULT_PRINTADMIN_AUTH@
+ Require user @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
Order deny,allow
# Only the owner or an administrator can cancel or authenticate a job...
AuthType Default
- Require user @OWNER @CUPS_DEFAULT_PRINTADMIN_AUTH@
+ Require user @OWNER @CUPS_DEFAULT_PRINTOPERATOR_AUTH@
Order deny,allow
diff --git a/config-scripts/cups-common.m4 b/config-scripts/cups-common.m4
index ed68d9c3c..bd763894e 100644
--- a/config-scripts/cups-common.m4
+++ b/config-scripts/cups-common.m4
@@ -284,7 +284,7 @@ AC_SUBST(DBUS_NOTIFIER)
AC_SUBST(DBUS_NOTIFIERLIBS)
dnl Extra platform-specific libraries...
-CUPS_DEFAULT_PRINTADMIN_AUTH="@SYSTEM"
+CUPS_DEFAULT_PRINTOPERATOR_AUTH="@SYSTEM"
CUPS_SYSTEM_AUTHKEY=""
FONTS="fonts"
LEGACY_BACKENDS="parallel scsi"
@@ -334,11 +334,11 @@ case $uname in
fi
if test "x$default_operkey" != xdefault; then
- CUPS_DEFAULT_PRINTADMIN_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
+ CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY($default_operkey) @admin @lpadmin"
elif grep -q system.print.operator /etc/authorization; then
- CUPS_DEFAULT_PRINTADMIN_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
+ CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.operator) @admin @lpadmin"
else
- CUPS_DEFAULT_PRINTADMIN_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
+ CUPS_DEFAULT_PRINTOPERATOR_AUTH="@AUTHKEY(system.print.admin) @admin @lpadmin"
fi])
AC_CHECK_HEADER(Security/SecBasePriv.h,AC_DEFINE(HAVE_SECBASEPRIV_H))
@@ -347,8 +347,8 @@ case $uname in
;;
esac
-AC_SUBST(CUPS_DEFAULT_PRINTADMIN_AUTH)
-AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTADMIN_AUTH, "$CUPS_DEFAULT_PRINTADMIN_AUTH")
+AC_SUBST(CUPS_DEFAULT_PRINTOPERATOR_AUTH)
+AC_DEFINE_UNQUOTED(CUPS_DEFAULT_PRINTOPERATOR_AUTH, "$CUPS_DEFAULT_PRINTOPERATOR_AUTH")
AC_SUBST(CUPS_SYSTEM_AUTHKEY)
AC_SUBST(FONTS)
AC_SUBST(LEGACY_BACKENDS)
diff --git a/config.h.in b/config.h.in
index b9b4390a1..f577eb285 100644
--- a/config.h.in
+++ b/config.h.in
@@ -3,7 +3,7 @@
*
* Configuration file for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -31,7 +31,7 @@
#define CUPS_DEFAULT_USER "lp"
#define CUPS_DEFAULT_GROUP "sys"
#define CUPS_DEFAULT_SYSTEM_GROUPS "sys root system"
-#define CUPS_DEFAULT_PRINTADMIN_AUTH "@SYSTEM"
+#define CUPS_DEFAULT_PRINTOPERATOR_AUTH "@SYSTEM"
/*
diff --git a/cups/Dependencies b/cups/Dependencies
index 8b8c25c8b..ff0ac495c 100644
--- a/cups/Dependencies
+++ b/cups/Dependencies
@@ -29,9 +29,9 @@ dir.o: dir.h versioning.h string.h ../config.h debug.h
emit.o: ppd.h array.h versioning.h file.h string.h ../config.h debug.h
encode.o: cups.h ipp.h http.h versioning.h ppd.h array.h file.h language.h
encode.o: ipp-private.h string.h ../config.h debug.h
-file.o: http-private.h ../config.h http.h versioning.h md5.h ipp-private.h
-file.o: ipp.h globals.h string.h cups.h ppd.h array.h file.h language.h
-file.o: i18n.h transcode.h debug.h
+file.o: file-private.h http-private.h ../config.h http.h versioning.h md5.h
+file.o: ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h
+file.o: language.h i18n.h transcode.h debug.h
getdevices.o: globals.h string.h ../config.h http-private.h http.h
getdevices.o: versioning.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h
getdevices.o: file.h language.h i18n.h transcode.h debug.h
@@ -80,7 +80,7 @@ notify.o: md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h language.h
notify.o: i18n.h transcode.h
options.o: cups.h ipp.h http.h versioning.h ppd.h array.h file.h language.h
options.o: string.h ../config.h debug.h
-page.o: ppd.h array.h versioning.h file.h string.h ../config.h
+page.o: ppd.h array.h versioning.h file.h string.h ../config.h debug.h
ppd.o: ppd-private.h cups.h ipp.h http.h versioning.h ppd.h array.h file.h
ppd.o: language.h globals.h string.h ../config.h http-private.h md5.h
ppd.o: ipp-private.h i18n.h transcode.h debug.h
@@ -115,6 +115,7 @@ testarray.o: debug.h
testconflicts.o: cups.h ipp.h http.h versioning.h ppd.h array.h file.h
testconflicts.o: language.h string.h ../config.h
testcups.o: cups.h ipp.h http.h versioning.h ppd.h array.h file.h language.h
+testcups.o: string.h ../config.h
testfile.o: string.h ../config.h file.h versioning.h debug.h
testhttp.o: http-private.h ../config.h http.h versioning.h md5.h
testhttp.o: ipp-private.h ipp.h string.h
@@ -160,9 +161,9 @@ dir.32.o: dir.c dir.h versioning.h string.h ../config.h debug.h
emit.32.o: emit.c ppd.h array.h versioning.h file.h string.h ../config.h debug.h
encode.32.o: encode.c cups.h ipp.h http.h versioning.h ppd.h array.h file.h language.h
encode.32.o: encode.c ipp-private.h string.h ../config.h debug.h
-file.32.o: file.c http-private.h ../config.h http.h versioning.h md5.h ipp-private.h
-file.32.o: file.c ipp.h globals.h string.h cups.h ppd.h array.h file.h language.h
-file.32.o: file.c i18n.h transcode.h debug.h
+file.32.o: file.c file-private.h http-private.h ../config.h http.h versioning.h md5.h
+file.32.o: file.c ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h
+file.32.o: file.c language.h i18n.h transcode.h debug.h
getdevices.32.o: getdevices.c globals.h string.h ../config.h http-private.h http.h
getdevices.32.o: getdevices.c versioning.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h
getdevices.32.o: getdevices.c file.h language.h i18n.h transcode.h debug.h
@@ -211,7 +212,7 @@ notify.32.o: notify.c md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h lan
notify.32.o: notify.c i18n.h transcode.h
options.32.o: options.c cups.h ipp.h http.h versioning.h ppd.h array.h file.h language.h
options.32.o: options.c string.h ../config.h debug.h
-page.32.o: page.c ppd.h array.h versioning.h file.h string.h ../config.h
+page.32.o: page.c ppd.h array.h versioning.h file.h string.h ../config.h debug.h
ppd.32.o: ppd.c ppd-private.h cups.h ipp.h http.h versioning.h ppd.h array.h file.h
ppd.32.o: ppd.c language.h globals.h string.h ../config.h http-private.h md5.h
ppd.32.o: ppd.c ipp-private.h i18n.h transcode.h debug.h
@@ -246,6 +247,7 @@ testarray.32.o: testarray.c debug.h
testconflicts.32.o: testconflicts.c cups.h ipp.h http.h versioning.h ppd.h array.h file.h
testconflicts.32.o: testconflicts.c language.h string.h ../config.h
testcups.32.o: testcups.c cups.h ipp.h http.h versioning.h ppd.h array.h file.h language.h
+testcups.32.o: testcups.c string.h ../config.h
testfile.32.o: testfile.c string.h ../config.h file.h versioning.h debug.h
testhttp.32.o: testhttp.c http-private.h ../config.h http.h versioning.h md5.h
testhttp.32.o: testhttp.c ipp-private.h ipp.h string.h
@@ -291,9 +293,9 @@ dir.64.o: dir.c dir.h versioning.h string.h ../config.h debug.h
emit.64.o: emit.c ppd.h array.h versioning.h file.h string.h ../config.h debug.h
encode.64.o: encode.c cups.h ipp.h http.h versioning.h ppd.h array.h file.h language.h
encode.64.o: encode.c ipp-private.h string.h ../config.h debug.h
-file.64.o: file.c http-private.h ../config.h http.h versioning.h md5.h ipp-private.h
-file.64.o: file.c ipp.h globals.h string.h cups.h ppd.h array.h file.h language.h
-file.64.o: file.c i18n.h transcode.h debug.h
+file.64.o: file.c file-private.h http-private.h ../config.h http.h versioning.h md5.h
+file.64.o: file.c ipp-private.h ipp.h globals.h string.h cups.h ppd.h array.h file.h
+file.64.o: file.c language.h i18n.h transcode.h debug.h
getdevices.64.o: getdevices.c globals.h string.h ../config.h http-private.h http.h
getdevices.64.o: getdevices.c versioning.h md5.h ipp-private.h ipp.h cups.h ppd.h array.h
getdevices.64.o: getdevices.c file.h language.h i18n.h transcode.h debug.h
@@ -342,7 +344,7 @@ notify.64.o: notify.c md5.h ipp-private.h ipp.h cups.h ppd.h array.h file.h lan
notify.64.o: notify.c i18n.h transcode.h
options.64.o: options.c cups.h ipp.h http.h versioning.h ppd.h array.h file.h language.h
options.64.o: options.c string.h ../config.h debug.h
-page.64.o: page.c ppd.h array.h versioning.h file.h string.h ../config.h
+page.64.o: page.c ppd.h array.h versioning.h file.h string.h ../config.h debug.h
ppd.64.o: ppd.c ppd-private.h cups.h ipp.h http.h versioning.h ppd.h array.h file.h
ppd.64.o: ppd.c language.h globals.h string.h ../config.h http-private.h md5.h
ppd.64.o: ppd.c ipp-private.h i18n.h transcode.h debug.h
@@ -377,6 +379,7 @@ testarray.64.o: testarray.c debug.h
testconflicts.64.o: testconflicts.c cups.h ipp.h http.h versioning.h ppd.h array.h file.h
testconflicts.64.o: testconflicts.c language.h string.h ../config.h
testcups.64.o: testcups.c cups.h ipp.h http.h versioning.h ppd.h array.h file.h language.h
+testcups.64.o: testcups.c string.h ../config.h
testfile.64.o: testfile.c string.h ../config.h file.h versioning.h debug.h
testhttp.64.o: testhttp.c http-private.h ../config.h http.h versioning.h md5.h
testhttp.64.o: testhttp.c ipp-private.h ipp.h string.h
diff --git a/cups/adminutil.c b/cups/adminutil.c
index 8ef12ad5b..318fb730e 100644
--- a/cups/adminutil.c
+++ b/cups/adminutil.c
@@ -4,7 +4,7 @@
* Administration utility API definitions for the Common UNIX Printing
* System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 2001-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -1133,7 +1133,13 @@ _cupsAdminGetServerSettings(
else if (!strcasecmp(value, "all"))
remote_any = 1;
}
- else if (line[0] != '<' && !in_location && !in_policy)
+ else if (line[0] != '<' && !in_location && !in_policy &&
+ strcasecmp(line, "Allow") &&
+ strcasecmp(line, "AuthType") &&
+ strcasecmp(line, "Deny") &&
+ strcasecmp(line, "Order") &&
+ strcasecmp(line, "Require") &&
+ strcasecmp(line, "Satisfy"))
cg->cupsd_num_settings = cupsAddOption(line, value,
cg->cupsd_num_settings,
&(cg->cupsd_settings));
@@ -1643,7 +1649,7 @@ _cupsAdminSetServerSettings(
" \n"
" Order deny,allow\n"
" Require user @OWNER "
- CUPS_DEFAULT_PRINTADMIN_AUTH "\n"
+ CUPS_DEFAULT_PRINTOPERATOR_AUTH "\n"
" \n");
}
@@ -1790,7 +1796,7 @@ _cupsAdminSetServerSettings(
" \n"
" Order deny,allow\n"
" Require user @OWNER "
- CUPS_DEFAULT_PRINTADMIN_AUTH "\n"
+ CUPS_DEFAULT_PRINTOPERATOR_AUTH "\n"
" \n");
in_cancel_job = 0;
@@ -2015,7 +2021,7 @@ _cupsAdminSetServerSettings(
" \n"
" Order deny,allow\n"
" Require user @OWNER "
- CUPS_DEFAULT_PRINTADMIN_AUTH "\n"
+ CUPS_DEFAULT_PRINTOPERATOR_AUTH "\n"
" \n");
cupsFilePuts(temp, " \n"
diff --git a/cups/cups.h b/cups/cups.h
index 153ceb499..8742cf29d 100644
--- a/cups/cups.h
+++ b/cups/cups.h
@@ -117,6 +117,8 @@ enum cups_ptype_e /**** Printer type/capability bit constants ****/
CUPS_PRINTER_AUTHENTICATED = 0x400000,/* Printer requires authentication @since CUPS 1.2/Mac OS X 10.5@ */
CUPS_PRINTER_COMMANDS = 0x800000, /* Printer supports maintenance commands @since CUPS 1.2/Mac OS X 10.5@ */
CUPS_PRINTER_DISCOVERED = 0x1000000, /* Printer was automatically discovered and added @since CUPS 1.3/Mac OS X 10.5@ */
+ CUPS_PRINTER_SCANNER = 0x2000000, /* Scanner-only device @since CUPS 1.4@ */
+ CUPS_PRINTER_MFP = 0x4000000, /* Printer with scanning capabilities @since CUPS 1.4@ */
CUPS_PRINTER_OPTIONS = 0x6fffc /* ~(CLASS | REMOTE | IMPLICIT | DEFAULT | FAX | REJECTING | DELETE | NOT_SHARED | AUTHENTICATED | COMMANDS | DISCOVERED) @private@ */
};
diff --git a/cups/file-private.h b/cups/file-private.h
new file mode 100644
index 000000000..978428d39
--- /dev/null
+++ b/cups/file-private.h
@@ -0,0 +1,98 @@
+/*
+ * "$Id$"
+ *
+ * Private file definitions for the Common UNIX Printing System (CUPS).
+ *
+ * Since stdio files max out at 256 files on many systems, we have to
+ * write similar functions without this limit. At the same time, using
+ * our own file functions allows us to provide transparent support of
+ * gzip'd print files, PPD files, etc.
+ *
+ * Copyright 2007-2009 by Apple Inc.
+ * Copyright 1997-2007 by Easy Software Products, all rights reserved.
+ *
+ * These coded instructions, statements, and computer programs are the
+ * property of Apple Inc. and are protected by Federal copyright
+ * law. Distribution and use rights are outlined in the file "LICENSE.txt"
+ * which should have been included with this file. If this file is
+ * file is missing or damaged, see the license at "http://www.cups.org/".
+ */
+
+#ifndef _CUPS_FILE_PRIVATE_H_
+# define _CUPS_FILE_PRIVATE_H_
+
+/*
+ * Include necessary headers...
+ */
+
+# include
+# include
+# include
+# include
+# include
+# include "http-private.h"
+# include "globals.h"
+# include "debug.h"
+
+# ifdef HAVE_LIBZ
+# include
+# endif /* HAVE_LIBZ */
+# ifdef WIN32
+# include
+# include
+# endif /* WIN32 */
+
+
+/*
+ * Some operating systems support large files via open flag O_LARGEFILE...
+ */
+
+# ifndef O_LARGEFILE
+# define O_LARGEFILE 0
+# endif /* !O_LARGEFILE */
+
+
+/*
+ * Some operating systems don't define O_BINARY, which is used by Microsoft
+ * and IBM to flag binary files...
+ */
+
+# ifndef O_BINARY
+# define O_BINARY 0
+# endif /* !O_BINARY */
+
+
+/*
+ * Types and structures...
+ */
+
+struct _cups_file_s /**** CUPS file structure... ****/
+
+{
+ int fd; /* File descriptor */
+ char mode, /* Mode ('r' or 'w') */
+ compressed, /* Compression used? */
+ is_stdio, /* stdin/out/err? */
+ eof, /* End of file? */
+ buf[4096], /* Buffer */
+ *ptr, /* Pointer into buffer */
+ *end; /* End of buffer data */
+ off_t pos, /* Position in file */
+ bufpos; /* File position for start of buffer */
+
+#ifdef HAVE_LIBZ
+ z_stream stream; /* (De)compression stream */
+ Bytef cbuf[4096]; /* (De)compression buffer */
+ uLong crc; /* (De)compression CRC */
+#endif /* HAVE_LIBZ */
+
+ char *printf_buffer; /* cupsFilePrintf buffer */
+ size_t printf_size; /* Size of cupsFilePrintf buffer */
+};
+
+
+#endif /* !_CUPS_FILE_PRIVATE_H_ */
+
+/*
+ * End of "$Id$".
+ */
diff --git a/cups/file.c b/cups/file.c
index 722a8323b..ed54f22fc 100644
--- a/cups/file.c
+++ b/cups/file.c
@@ -8,7 +8,7 @@
* our own file functions allows us to provide transparent support of
* gzip'd print files, PPD files, etc.
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -58,71 +58,7 @@
* Include necessary headers...
*/
-#include
-#include
-#include
-#include
-#include
-#include
-#include "http-private.h"
-#include "globals.h"
-#include "debug.h"
-
-#ifdef HAVE_LIBZ
-# include
-#endif /* HAVE_LIBZ */
-#ifdef WIN32
-# include
-# include
-#endif /* WIN32 */
-
-
-/*
- * Some operating systems support large files via open flag O_LARGEFILE...
- */
-
-#ifndef O_LARGEFILE
-# define O_LARGEFILE 0
-#endif /* !O_LARGEFILE */
-
-
-/*
- * Some operating systems don't define O_BINARY, which is used by Microsoft
- * and IBM to flag binary files...
- */
-
-#ifndef O_BINARY
-# define O_BINARY 0
-#endif /* !O_BINARY */
-
-
-/*
- * Types and structures...
- */
-
-struct _cups_file_s /**** CUPS file structure... ****/
-
-{
- int fd; /* File descriptor */
- char mode, /* Mode ('r' or 'w') */
- compressed, /* Compression used? */
- is_stdio, /* stdin/out/err? */
- eof, /* End of file? */
- buf[4096], /* Buffer */
- *ptr, /* Pointer into buffer */
- *end; /* End of buffer data */
- off_t pos, /* Position in file */
- bufpos; /* File position for start of buffer */
-
-#ifdef HAVE_LIBZ
- z_stream stream; /* (De)compression stream */
- Bytef cbuf[4096]; /* (De)compression buffer */
- uLong crc; /* (De)compression CRC */
-#endif /* HAVE_LIBZ */
-
- char *printf_buffer; /* cupsFilePrintf buffer */
- size_t printf_size; /* Size of cupsFilePrintf buffer */
-};
+#include "file-private.h"
/*
diff --git a/cups/file.h b/cups/file.h
index c8a2b4667..c5eb357fa 100644
--- a/cups/file.h
+++ b/cups/file.h
@@ -91,6 +91,7 @@ extern ssize_t cupsFilePutConf(cups_file_t *fp, const char *directive,
const char *value) _CUPS_API_1_4;
extern int cupsFilePuts(cups_file_t *fp, const char *s) _CUPS_API_1_2;
extern ssize_t cupsFileRead(cups_file_t *fp, char *buf, size_t bytes) _CUPS_API_1_2;
+extern ssize_t cupsFileReady(cups_file_t *fp) _CUPS_API_1_4;
extern off_t cupsFileRewind(cups_file_t *fp) _CUPS_API_1_2;
extern off_t cupsFileSeek(cups_file_t *fp, off_t pos) _CUPS_API_1_2;
extern cups_file_t *cupsFileStderr(void) _CUPS_API_1_2;
diff --git a/cups/localize.c b/cups/localize.c
index 19a03e26c..236b8048e 100644
--- a/cups/localize.c
+++ b/cups/localize.c
@@ -115,7 +115,8 @@ ppdLocalize(ppd_file_t *ppd) /* I - PPD file */
k > 0;
k --, choice ++)
{
- if (strcmp(choice->choice, "Custom"))
+ if (strcmp(choice->choice, "Custom") ||
+ !ppdFindCustomOption(ppd, option->keyword))
locattr = _ppdLocalizedAttr(ppd, option->keyword, choice->choice,
ll_CC);
else
diff --git a/cups/request.c b/cups/request.c
index 21387fdee..2af5c2efd 100644
--- a/cups/request.c
+++ b/cups/request.c
@@ -206,6 +206,13 @@ cupsDoIORequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
DEBUG_printf(("cupsDoIORequest: Request length=%ld, total length=%ld",
(long)ippLength(request), (long)length));
+ /*
+ * Clear any "Local" authentication data since it is probably stale...
+ */
+
+ if (http->authstring && !strncmp(http->authstring, "Local ", 6))
+ httpSetAuthString(http, NULL, NULL);
+
/*
* Loop until we can send the request without authorization problems.
*/
@@ -591,13 +598,6 @@ cupsSendRequest(http_t *http, /* I - Connection to server or @code CUPS_HTTP
return (HTTP_SERVICE_UNAVAILABLE);
}
- /*
- * Clear any "Local" authentication data since it is probably stale...
- */
-
- if (http->authstring && !strncmp(http->authstring, "Local ", 6))
- httpSetAuthString(http, NULL, NULL);
-
/*
* Loop until we can send the request without authorization problems.
*/
diff --git a/cups/sidechannel.c b/cups/sidechannel.c
index 585d6cbc7..a59f5c305 100644
--- a/cups/sidechannel.c
+++ b/cups/sidechannel.c
@@ -301,7 +301,7 @@ cupsSideChannelSNMPGet(
*/
if (cupsSideChannelWrite(CUPS_SC_CMD_SNMP_GET, CUPS_SC_STATUS_NONE, oid,
- (int)strlen(oid), timeout))
+ (int)strlen(oid) + 1, timeout))
return (CUPS_SC_STATUS_TIMEOUT);
real_datalen = sizeof(real_data);
@@ -401,7 +401,7 @@ cupsSideChannelSNMPWalk(
*/
if (cupsSideChannelWrite(CUPS_SC_CMD_SNMP_GET_NEXT, CUPS_SC_STATUS_NONE,
- current_oid, (int)strlen(current_oid), timeout))
+ current_oid, (int)strlen(current_oid) + 1, timeout))
return (CUPS_SC_STATUS_TIMEOUT);
real_datalen = sizeof(real_data);
diff --git a/cups/transcode.c b/cups/transcode.c
index b0382e14a..c04f0a71d 100644
--- a/cups/transcode.c
+++ b/cups/transcode.c
@@ -1664,7 +1664,6 @@ get_vbcs_charmap(
* Save DBCS/VBCS charset map into memory for transcoding...
*/
- leadchar = 0;
wide2uni = NULL;
cupsFileRewind(fp);
diff --git a/cups/util.c b/cups/util.c
index 57340e6a9..1a6dd50a3 100644
--- a/cups/util.c
+++ b/cups/util.c
@@ -616,7 +616,7 @@ cupsGetJobs2(http_t *http, /* I - Connection to server or @code CUPS_HTTP_D
}
}
else
- strcpy(uri, "ipp://localhost/jobs");
+ strcpy(uri, "ipp://localhost/");
if (!http)
if ((http = _cupsConnect()) == NULL)
diff --git a/doc/Makefile b/doc/Makefile
index 0c894afaa..2be1141c9 100644
--- a/doc/Makefile
+++ b/doc/Makefile
@@ -185,7 +185,7 @@ install-languages:
if test -d $$lang; then \
$(INSTALL_DIR) -m 755 $(DOCDIR)/$$lang; \
$(INSTALL_MAN) $$lang/index.html $(DOCDIR)/$$lang; \
- $(INSTALL_MAN) $$lang/cups.css $(DOCDIR)/$$lang 2>/dev/null || true; \
+ test -f $$lang/cups.css && $(INSTALL_MAN) $$lang/cups.css $(DOCDIR)/$$lang; \
fi; \
done
diff --git a/doc/help/spec-ipp.html b/doc/help/spec-ipp.html
index 1949551c8..7f3bab908 100644
--- a/doc/help/spec-ipp.html
+++ b/doc/help/spec-ipp.html
@@ -2788,6 +2788,14 @@ summary='Printer Type Bits'>
0x01000000
Queue was automatically discovered and added.
+
+ 0x02000000
+ Queue is a scanner with no printing capabilities.
+
+
+ 0x04000000
+ Queue is a printer with scanning capabilities.
+
diff --git a/doc/help/spec-ppd.html b/doc/help/spec-ppd.html
index 1fc056013..11ff4a4cf 100644
--- a/doc/help/spec-ppd.html
+++ b/doc/help/spec-ppd.html
@@ -12,7 +12,7 @@
CUPS PPD extensions specification for the Common UNIX Printing System (CUPS).
- Copyright 2007-2008 by Apple Inc.
+ Copyright 2007-2009 by Apple Inc.
Copyright 1997-2007 by Easy Software Products.
These coded instructions, statements, and computer programs are the
@@ -1801,6 +1801,20 @@ information.
*APPrinterPrinterUtilityPath: "/Library/Printers/vendor/Tools/utility.app"
+
+
+*APScannerOnly: boolean
+
+This attribute specifies whether the device has scanning but no printing
+capabilities. The default is False .
+
+Examples:
+
+
+*APICADriver: True
+*APScannerOnly: True
+
+
*APScanAppBundleID: "bundle ID"
diff --git a/doc/pl/index.html.in b/doc/pl/index.html.in
new file mode 100644
index 000000000..5cb99e8dd
--- /dev/null
+++ b/doc/pl/index.html.in
@@ -0,0 +1,107 @@
+
+
+
+
+ Strona domowa - CUPS @CUPS_VERSION@@CUPS_REVISION@
+
+
+
+
+
+
+
+
+
+
+
+Wspólny uniksowy system drukowania @CUPS_VERSION@
+
+CUPS jest opartym na standardach systemem drukowania na licencji open source, tworzonym przez
+Apple Inc. dla Mac OS® X i
+innych systemów operacyjnych podobnych do Uniksa® .
+
+
+
+
+
+
+
+
+
+
+Wspólny uniksowy system drukowania, CUPS i logo CUPS
+sÄ
znakami handlowymi Apple Inc. CUPS
+copyright 2007-2009 Apple Inc. Wszystkie prawa zastrzeżone.
+
+
+
diff --git a/locale/cups_ja.po b/locale/cups_ja.po
index fc7d4844d..556471b94 100644
--- a/locale/cups_ja.po
+++ b/locale/cups_ja.po
@@ -1,2877 +1,6923 @@
+#
+# "$Id$"
+#
+# Message catalog template for the Common UNIX Printing System (CUPS).
+#
+# Copyright 2007-2008 by Apple Inc.
+# Copyright 2005-2007 by Easy Software Products.
+#
+# These coded instructions, statements, and computer programs are the
+# property of Apple Inc. and are protected by Federal copyright
+# law. Distribution and use rights are outlined in the file "LICENSE.txt"
+# which should have been included with this file. If this file is
+# file is missing or damaged, see the license at "http://www.cups.org/".
+#
+
+#
+# Notes for Translators:
+#
+# The following prefixes MUST NOT be translated: "ALERT:", "CRIT:", "INFO:",
+# "NOTICE:", and "WARNING:".
+#
+# The "checkpo" program located in the "locale" source directory can be used
+# to verify that your translations do not introduce formatting errors or other
+# problems. Run with:
+#
+# cd locale
+# ./checkpo cups_LL.po
+#
+# where "LL" is your locale.
+#
msgid ""
msgstr ""
"Project-Id-Version: CUPS 1.4\n"
"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
"POT-Creation-Date: 2009-01-30 09:28-0800\n"
-"PO-Revision-Date: 2009-02-16 12:00-0800\n"
-"Last-Translator: Apple Inc.\n"
-"Language-Team: Apple Inc.\n"
+"PO-Revision-Date: 2009-02-20 16:43+0900\n"
+"Last-Translator: OPFC TRANSCUPS \n"
+"Language-Team: OPFC TRANSCUPS \n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=utf-8\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+
+#: systemv/lpstat.c:1848 systemv/lpstat.c:1961
msgid "\t\t(all)\n"
-msgstr "\t\tï¼ãã¹ã¦ï¼\n"
+msgstr "\t\t(ãã¹ã¦)\n"
+
+#: systemv/lpstat.c:1851 systemv/lpstat.c:1854 systemv/lpstat.c:1964
+#: systemv/lpstat.c:1967
msgid "\t\t(none)\n"
-msgstr "\t\tï¼ãªãï¼\n"
+msgstr "\t\t(ãªã)\n"
+
+#: berkeley/lpc.c:438
+#, c-format
msgid "\t%d entries\n"
-msgstr "\t%d ã¨ã³ããª\n"
+msgstr "\t%d ã¨ã³ããªã¼\n"
+
+#: systemv/lpstat.c:1829 systemv/lpstat.c:1942
msgid "\tAfter fault: continue\n"
-msgstr "\t失æå¾ï¼ç¶ç¶\n"
+msgstr "\t失æå¾: ç¶ç¶\n"
+
+#: systemv/lpstat.c:1461 systemv/lpstat.c:1795 systemv/lpstat.c:1908
msgid "\tAlerts:"
-msgstr "\tã¢ã©ã¼ãï¼"
+msgstr "\tè¦å:"
+
+#: systemv/lpstat.c:1852 systemv/lpstat.c:1965
msgid "\tBanner required\n"
msgstr "\tããã¼ãå¿
è¦\n"
+
+#: systemv/lpstat.c:1853 systemv/lpstat.c:1966
msgid "\tCharset sets:\n"
-msgstr "\tæåã»ããï¼\n"
+msgstr "\tæåã»ãã:\n"
+
+#: systemv/lpstat.c:1818 systemv/lpstat.c:1931
msgid "\tConnection: direct\n"
-msgstr "\tæ¥ç¶ï¼ç´çµ\n"
+msgstr "\tæ¥ç¶: ç´çµ\n"
+
+#: systemv/lpstat.c:1809 systemv/lpstat.c:1922
msgid "\tConnection: remote\n"
-msgstr "\tæ¥ç¶ï¼ãªã¢ã¼ã\n"
+msgstr "\tæ¥ç¶: ãªã¢ã¼ã\n"
+
+#: systemv/lpstat.c:1856 systemv/lpstat.c:1969
msgid "\tDefault page size:\n"
-msgstr "\tããã©ã«ãç¨ç´ãµã¤ãºï¼\n"
+msgstr "\tããã©ã«ãç¨ç´ãµã¤ãº:\n"
+
+#: systemv/lpstat.c:1855 systemv/lpstat.c:1968
msgid "\tDefault pitch:\n"
-msgstr "\tããã©ã«ããããï¼\n"
+msgstr "\tããã©ã«ãããã:\n"
+
+#: systemv/lpstat.c:1857 systemv/lpstat.c:1970
msgid "\tDefault port settings:\n"
-msgstr "\tããã©ã«ããã¼ãè¨å®ï¼\n"
+msgstr "\tããã©ã«ããã¼ãè¨å®:\n"
+
+#: systemv/lpstat.c:1790 systemv/lpstat.c:1903
+#, c-format
msgid "\tDescription: %s\n"
-msgstr "\t説æï¼%s\n"
-msgid "\tForm mounted:\n\tContent types: any\n\tPrinter types: unknown\n"
-msgstr "\tç¨ç´å°ï¼\n\tå
容形å¼ï¼ãã¹ã¦\n\tããªã³ã¿å½¢å¼ï¼æªç¥\n"
+msgstr "\t説æ: %s\n"
+
+#: systemv/lpstat.c:1784 systemv/lpstat.c:1897
+msgid ""
+"\tForm mounted:\n"
+"\tContent types: any\n"
+"\tPrinter types: unknown\n"
+msgstr ""
+"\tè¨å®ããããã©ã¼ã :\n"
+"\tã³ã³ãã³ãã®ç¨®é¡: ãã¹ã¦\n"
+"\tããªã³ã¿ã¼ã®ç¨®é¡: ä¸æ\n"
+
+#: systemv/lpstat.c:1850 systemv/lpstat.c:1963
msgid "\tForms allowed:\n"
-msgstr "\t許å¯ããã¦ããç¨ç´ï¼\n"
+msgstr "\t許å¯ããã¦ãããã©ã¼ã :\n"
+
+#: systemv/lpstat.c:1813 systemv/lpstat.c:1926
+#, c-format
msgid "\tInterface: %s.ppd\n"
-msgstr "\tã¤ã³ã¿ã¼ãã§ã¤ã¹ï¼%s.ppd\n"
+msgstr "\tã¤ã³ã¿ã¼ãã§ã¤ã¹: %s.ppd\n"
+
+#: systemv/lpstat.c:1822 systemv/lpstat.c:1935
+#, c-format
msgid "\tInterface: %s/interfaces/%s\n"
-msgstr "\tã¤ã³ã¿ã¼ãã§ã¤ã¹ï¼%s/interfaces/%s\n"
+msgstr "\tã¤ã³ã¿ã¼ãã§ã¤ã¹: %s/interfaces/%s\n"
+
+#: systemv/lpstat.c:1826 systemv/lpstat.c:1939
+#, c-format
msgid "\tInterface: %s/ppd/%s.ppd\n"
-msgstr "\tã¤ã³ã¿ã¼ãã§ã¤ã¹ï¼%s/ppd/%s.ppd\n"
+msgstr "\tã¤ã³ã¿ã¼ãã§ã¤ã¹: %s/ppd/%s.ppd\n"
+
+#: systemv/lpstat.c:1804 systemv/lpstat.c:1917
+#, c-format
msgid "\tLocation: %s\n"
-msgstr "\tå ´æï¼%s\n"
+msgstr "\tå ´æ: %s\n"
+
+#: systemv/lpstat.c:1828 systemv/lpstat.c:1941
msgid "\tOn fault: no alert\n"
-msgstr "\t失ææï¼è¦åãªã\n"
+msgstr "\t失ææ: è¦åãªã\n"
+
+#: systemv/lpstat.c:1833 systemv/lpstat.c:1847 systemv/lpstat.c:1946
+#: systemv/lpstat.c:1960
msgid "\tUsers allowed:\n"
-msgstr "\t許å¯ããã¦ããã¦ã¼ã¶ï¼\n"
+msgstr "\t許å¯ããã¦ããã¦ã¼ã¶ã¼:\n"
+
+#: systemv/lpstat.c:1840 systemv/lpstat.c:1953
msgid "\tUsers denied:\n"
-msgstr "\tæå¦ããã¦ããã¦ã¼ã¶ï¼\n"
+msgstr "\tæå¦ããã¦ããã¦ã¼ã¶ã¼:\n"
+
+#: berkeley/lpc.c:440
msgid "\tdaemon present\n"
msgstr "\tãã¼ã¢ã³ã¯æä¾ããã¦ãã¾ã\n"
+
+#: berkeley/lpc.c:436
msgid "\tno entries\n"
-msgstr "\tã¨ã³ããªãããã¾ãã\n"
+msgstr "\tã¨ã³ããªã¼ãããã¾ãã\n"
+
+#: berkeley/lpc.c:408 berkeley/lpc.c:420
+#, c-format
msgid "\tprinter is on device '%s' speed -1\n"
-msgstr "\tããªã³ã¿ã¯ããã¤ã¹ '%s'ä¸ãé度 -1\n"
+msgstr "\tããã¤ã¹ '%s' ä¸ã®ããªã³ã¿ã¼ é度 -1\n"
+
+#: berkeley/lpc.c:433
msgid "\tprinting is disabled\n"
msgstr "\tå°å·ã¯ç¡å¹ã§ã\n"
+
+#: berkeley/lpc.c:431
msgid "\tprinting is enabled\n"
msgstr "\tå°å·ã¯æå¹ã§ã\n"
+
+#: systemv/lpstat.c:1467
+#, c-format
msgid "\tqueued for %s\n"
msgstr "\t%s ã«ãã¥ã¼ãã¾ãã\n"
+
+#: berkeley/lpc.c:428
msgid "\tqueuing is disabled\n"
msgstr "\tãã¥ã¼ã¯ç¡å¹ã§ã\n"
+
+#: berkeley/lpc.c:426
msgid "\tqueuing is enabled\n"
msgstr "\tãã¥ã¼ã¯æå¹ã§ã\n"
+
+#: systemv/lpstat.c:1777 systemv/lpstat.c:1890
msgid "\treason unknown\n"
msgstr "\tæªç¥ã®çç±\n"
-msgid "\n DETAILED CONFORMANCE TEST RESULTS\n"
-msgstr "\n é©åãã¹ãçµæ詳細\n"
+
+#: systemv/cupstestppd.c:380
+msgid ""
+"\n"
+" DETAILED CONFORMANCE TEST RESULTS\n"
+msgstr ""
+"\n"
+" é©åãã¹ãçµæ詳細\n"
+
+#: systemv/cupstestppd.c:341 systemv/cupstestppd.c:345
msgid " REF: Page 15, section 3.1.\n"
-msgstr " REFï¼15 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.1ãn"
+msgstr " åç
§: 15 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.1ã\n"
+
+#: systemv/cupstestppd.c:337
msgid " REF: Page 15, section 3.2.\n"
-msgstr " REFï¼15 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.2ã\n"
+msgstr " åç
§: 15 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.2ã\n"
+
+#: systemv/cupstestppd.c:353
msgid " REF: Page 19, section 3.3.\n"
-msgstr " REFï¼19 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.3ã\n"
+msgstr " åç
§: 19 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.3ã\n"
+
+#: systemv/cupstestppd.c:315
msgid " REF: Page 20, section 3.4.\n"
-msgstr " REFï¼20 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.4ã\n"
+msgstr " åç
§: 20 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.4ã\n"
+
+#: systemv/cupstestppd.c:357
msgid " REF: Page 27, section 3.5.\n"
-msgstr " REFï¼27 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.5ã\n"
+msgstr " åç
§: 27 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.5ã\n"
+
+#: systemv/cupstestppd.c:311
msgid " REF: Page 42, section 5.2.\n"
-msgstr " REFï¼42 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+msgstr " åç
§: 42 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+
+#: systemv/cupstestppd.c:349
msgid " REF: Pages 16-17, section 3.2.\n"
-msgstr " REFï¼16 ã 17 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.2ã\n"
+msgstr " åç
§: 16-17 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.2ã\n"
+
+#: systemv/cupstestppd.c:325
msgid " REF: Pages 42-45, section 5.2.\n"
-msgstr " REFï¼42 ã 45 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+msgstr " åç
§: 42-45 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+
+#: systemv/cupstestppd.c:320
msgid " REF: Pages 45-46, section 5.2.\n"
-msgstr " REFï¼45 ã 46 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+msgstr " åç
§: 45-46 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+
+#: systemv/cupstestppd.c:329
msgid " REF: Pages 48-49, section 5.2.\n"
-msgstr " REFï¼48 ã 49 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+msgstr " åç
§: 48-49 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+
+#: systemv/cupstestppd.c:333
msgid " REF: Pages 52-54, section 5.2.\n"
-msgstr " REFï¼52 ã 54 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+msgstr " åç
§: 52-54 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+
+#: berkeley/lpq.c:547
+#, c-format
msgid " %-39.39s %.0f bytes\n"
msgstr " %-39.39s %.0f ãã¤ã\n"
+
+#: systemv/cupstestppd.c:497
+#, c-format
msgid " PASS Default%s\n"
msgstr " åæ ¼ Default%s\n"
+
+#: systemv/cupstestppd.c:434
msgid " PASS DefaultImageableArea\n"
msgstr " åæ ¼ DefaultImageableArea\n"
+
+#: systemv/cupstestppd.c:468
msgid " PASS DefaultPaperDimension\n"
msgstr " åæ ¼ DefaultPaperDimension\n"
+
+#: systemv/cupstestppd.c:539
msgid " PASS FileVersion\n"
msgstr " åæ ¼ FileVersion\n"
+
+#: systemv/cupstestppd.c:583
msgid " PASS FormatVersion\n"
msgstr " åæ ¼ FormatVersion\n"
+
+#: systemv/cupstestppd.c:603
msgid " PASS LanguageEncoding\n"
msgstr " åæ ¼ LanguageEncoding\n"
+
+#: systemv/cupstestppd.c:623
msgid " PASS LanguageVersion\n"
msgstr " åæ ¼ LanguageVersion\n"
+
+#: systemv/cupstestppd.c:675
msgid " PASS Manufacturer\n"
msgstr " åæ ¼ Manufacturer\n"
+
+#: systemv/cupstestppd.c:715
msgid " PASS ModelName\n"
msgstr " åæ ¼ ModelName\n"
+
+#: systemv/cupstestppd.c:735
msgid " PASS NickName\n"
msgstr " åæ ¼ NickName\n"
+
+#: systemv/cupstestppd.c:795
msgid " PASS PCFileName\n"
msgstr " åæ ¼ PCFileName\n"
+
+#: systemv/cupstestppd.c:870
msgid " PASS PSVersion\n"
msgstr " åæ ¼ PSVersion\n"
+
+#: systemv/cupstestppd.c:775
msgid " PASS PageRegion\n"
msgstr " åæ ¼ PageRegion\n"
+
+#: systemv/cupstestppd.c:755
msgid " PASS PageSize\n"
msgstr " åæ ¼ PageSize\n"
+
+#: systemv/cupstestppd.c:830
msgid " PASS Product\n"
msgstr " åæ ¼ Product\n"
+
+#: systemv/cupstestppd.c:905
msgid " PASS ShortNickName\n"
msgstr " åæ ¼ ShortNickName\n"
-msgid " WARN \"%s %s\" conflicts with \"%s %s\"\n (constraint=\"%s %s %s %s\")\n"
-msgstr " è¦å â%s %sâãâ%s %sâã¨ç«¶åãã¾ã\n ï¼constraint= â%s %s %s %sâï¼\n"
+
+#: systemv/cupstestppd.c:2861
+#, c-format
+msgid ""
+" WARN \"%s %s\" conflicts with \"%s %s\"\n"
+" (constraint=\"%s %s %s %s\")\n"
+msgstr ""
+" è¦å \"%s %s\" 㯠\"%s %s\" ã¨ç«¶åãã¾ã\n"
+" (ç¦å=\"%s %s %s %s\")\n"
+
+#: systemv/cupstestppd.c:1270
+#, c-format
msgid " WARN %s has no corresponding options!\n"
-msgstr " è¦å %s ã«å¯¾å¿ãããªãã·ã§ã³ãããã¾ããï¼\n"
-msgid " WARN %s shares a common prefix with %s\n REF: Page 15, section 3.2.\n"
-msgstr " è¦å %s 㯠%s ã¨å
±éã®ãã¬ãã£ãã¯ã¹ãå
±æãã¦ãã¾ã\n REFï¼15 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.2ã\n"
+msgstr " è¦å %s ã¯ç¸å½ãããªãã·ã§ã³ãããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:1378
+#, c-format
+msgid ""
+" WARN %s shares a common prefix with %s\n"
+" REF: Page 15, section 3.2.\n"
+msgstr ""
+" è¦å %s 㯠%s ã¨ä¸è¬ãã¬ãã£ãã¯ã¹ãå
±æãã¾ãã\n"
+" åç
§: 15 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.2ã\n"
+
+#: systemv/cupstestppd.c:1279
msgid " WARN Default choices conflicting!\n"
-msgstr " è¦å ããã©ã«ãã®é¸æã競åãã¦ãã¾ãï¼\n"
-msgid " WARN Duplex option keyword %s may not work as expected and should be named Duplex!\n REF: Page 122, section 5.17\n"
-msgstr " è¦å 両é¢ãªãã·ã§ã³ãã¼ã¯ã¼ã %s ãäºæããéãã«æ©è½ããªãå¯è½æ§ãããã¾ããDuplex ã¨ããååã«ããå¿
è¦ãããã¾ãï¼\n REFï¼122 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.17\n"
+msgstr " è¦å ããã©ã«ãã®é¸æè¢ã競åãã¦ãã¾ã!\n"
+
+#: systemv/cupstestppd.c:1241
+#, c-format
+msgid ""
+" WARN Duplex option keyword %s may not work as expected and should be named Duplex!\n"
+" REF: Page 122, section 5.17\n"
+msgstr ""
+" è¦å Duplex ãªãã·ã§ã³ãã¼ã¯ã¼ã %s ã¯æå¾
éãã«åä½ããªãããããã¾ãããã¾ãã Duplex ã¨ããååã§ããã¹ãã§ã!\n"
+" åç
§: 122 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.17\n"
+
+#: systemv/cupstestppd.c:1670
msgid " WARN File contains a mix of CR, LF, and CR LF line endings!\n"
-msgstr " è¦å ãã¡ã¤ã«ã« CRãLFãCR LF è¡æ«ã³ã¼ããæ··å¨ãã¦ãã¾ãï¼\n"
-msgid " WARN LanguageEncoding required by PPD 4.3 spec.\n REF: Pages 56-57, section 5.3.\n"
-msgstr " è¦å PPD 4.3 ä»æ§ã§ã¯ LanguageEncoding ãå¿
è¦ã§ãã\n REFï¼56 ã 57 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+msgstr " è¦å ãã¡ã¤ã«ã CRãLFãCR LF ã®è¡æ«ãæ··å¨ãã¦å«ãã§ãã¾ã!\n"
+
+#: systemv/cupstestppd.c:1295
+msgid ""
+" WARN LanguageEncoding required by PPD 4.3 spec.\n"
+" REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+" è¦å LanguageEncoding 㯠PPD 4.3 ä»æ§ã§å¿
é ã§ãã\n"
+" åç
§: 56-57 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:1652
+#, c-format
msgid " WARN Line %d only contains whitespace!\n"
-msgstr " è¦å è¡ %d ã«ç©ºç½ããå«ã¾ãã¦ãã¾ããï¼\n"
-msgid " WARN Manufacturer required by PPD 4.3 spec.\n REF: Pages 58-59, section 5.3.\n"
-msgstr " è¦å PPD 4.3 ä»æ§ã§ã¯ Manufacturer ãå¿
è¦ã§ãã\n REFï¼58 ã 59 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+msgstr " è¦å %d è¡ã空ç½ã ãã§ã!\n"
+
+#: systemv/cupstestppd.c:1303
+msgid ""
+" WARN Manufacturer required by PPD 4.3 spec.\n"
+" REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+" è¦å Manufacturer 㯠PPD 4.3 ä»æ§ã§å¿
é ã§ãã\n"
+" åç
§: 58-59 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:1397
+#, c-format
msgid " WARN Missing APDialogExtension file \"%s\"\n"
-msgstr " è¦å APDialogExtension ãã¡ã¤ã«â%sâãããã¾ãã\n"
+msgstr " è¦å APDialogExtension ãã¡ã¤ã« \"%s\" ãè¦ã¤ããã¾ãã\n"
+
+#: systemv/cupstestppd.c:1411
+#, c-format
msgid " WARN Missing APPrinterIconPath file \"%s\"\n"
-msgstr " è¦å APPrinterIconPath ãã¡ã¤ã«â%sâãããã¾ãã\n"
+msgstr " è¦å APPrinterIconPath ãã¡ã¤ã« \"%s\" ãè¦ã¤ããã¾ãã\n"
+
+#: systemv/cupstestppd.c:1675
msgid " WARN Non-Windows PPD files should use lines ending with only LF, not CR LF!\n"
-msgstr " è¦å Windows 以å¤ã® PPD ãã¡ã¤ã«ã§ã¯è¡æ«ã³ã¼ãã¨ã㦠LF ã ãã使ç¨ããå¿
è¦ãããã¾ããCR LF ã¯ä½¿ç¨ããªãã§ãã ããï¼\n"
-msgid " WARN Obsolete PPD version %.1f!\n REF: Page 42, section 5.2.\n"
-msgstr " è¦å %.1f ã¯å¤ã PPD ãã¼ã¸ã§ã³ã§ãï¼\n REFï¼42 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
-msgid " WARN PCFileName longer than 8.3 in violation of PPD spec.\n REF: Pages 61-62, section 5.3.\n"
-msgstr " è¦å 8.3 ããé·ã PCFileName 㯠PPD ä»æ§ã«éåãã¦ãã¾ãã\n REFï¼61 ã 62 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " WARN Protocols contains PJL but JCL attributes are not set.\n REF: Pages 78-79, section 5.7.\n"
-msgstr " è¦å ãããã³ã«ã« PJL ãå«ã¾ãã¦ãã¾ãããJCL å±æ§ãè¨å®ããã¦ãã¾ããã\n REFï¼78 ã 79 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.7ã\n"
-msgid " WARN Protocols contains both PJL and BCP; expected TBCP.\n REF: Pages 78-79, section 5.7.\n"
-msgstr " è¦å ãããã³ã«ã« PJL 㨠BCP ã®ä¸¡æ¹ãå«ã¾ãã¦ãã¾ããTBCP ãå¿
è¦ã§ãã\n REFï¼78 ã 79 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.7ã\n"
-msgid " WARN ShortNickName required by PPD 4.3 spec.\n REF: Pages 64-65, section 5.3.\n"
-msgstr " è¦å PPD 4.3 ä»æ§ã§ã¯ ShortNickName ãå¿
è¦ã§ãã\n REFï¼64 ã 65 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+msgstr " è¦å é Windows PPD ãã¡ã¤ã«ã¯ãCR LF ã§ãªã LF ã®ã¿ãè¡æ«ã«ä½¿ãã¹ãã§ã!\n"
+
+#: systemv/cupstestppd.c:1287
+#, c-format
+msgid ""
+" WARN Obsolete PPD version %.1f!\n"
+" REF: Page 42, section 5.2.\n"
+msgstr ""
+" è¦å PPD ãã¼ã¸ã§ã³ %.1f ã¯ç¾å¨ä½¿ããã¦ãã¾ãã!\n"
+" åç
§: 42 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.2ã\n"
+
+#: systemv/cupstestppd.c:1316
+msgid ""
+" WARN PCFileName longer than 8.3 in violation of PPD spec.\n"
+" REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+" è¦å 8.3 æåããé·ã PCFileName 㯠PPD ä»æ§éåã§ãã\n"
+" åç
§: 61-62 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:1350
+msgid ""
+" WARN Protocols contains PJL but JCL attributes are not set.\n"
+" REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+" è¦å ãããã³ã«ã PJL ãå«ãã§ãã¾ãã JCL å±æ§ãè¨å®ããã¦ãã¾ããã\n"
+" åç
§: 78-79 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.7ã\n"
+
+#: systemv/cupstestppd.c:1341
+msgid ""
+" WARN Protocols contains both PJL and BCP; expected TBCP.\n"
+" REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+" è¦å ãããã³ã«ã PJL 㨠BCP ã®ä¸¡æ¹ãå«ãã§ãã¾ã; TBCP ãæ³å®ãã¾ãã\n"
+" åç
§: 78-79 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.7ã\n"
+
+#: systemv/cupstestppd.c:1324
+msgid ""
+" WARN ShortNickName required by PPD 4.3 spec.\n"
+" REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+" è¦å ShortNickName 㯠PPD 4.3 ä»æ§ã§å¿
é ã§ãã\n"
+" åç
§: 64-65 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:2140
+#, c-format
msgid " %s %s %s does not exist!\n"
-msgstr " %s %s %s ãåå¨ãã¾ããï¼\n"
-msgid " %s Bad %s choice %s!\n REF: Page 122, section 5.17\n"
-msgstr " %s %s é¸æ %s ãæ£ããããã¾ããï¼\n REFï¼122 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.17\n"
+msgstr " %s %s %s ãåå¨ãã¾ãã!\n"
+
+#: systemv/cupstestppd.c:2210
+#, c-format
+msgid ""
+" %s Bad %s choice %s!\n"
+" REF: Page 122, section 5.17\n"
+msgstr ""
+" %s ä¸æ£ãª %s ã %s ãé¸ãã§ãã¾ã!\n"
+" åç
§: 122 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.17\n"
+
+#: systemv/cupstestppd.c:2576
+#, c-format
msgid " %s Bad UTF-8 \"%s\" translation string for option %s!\n"
-msgstr " %1$s ãªãã·ã§ã³ %3$s ã® UTF-8 â%2$sâå¤ææååãæ£ããããã¾ããï¼\n"
+msgstr " %s ä¸æ£ãª UTF-8 \"%s\" 翻訳æåå (ãªãã·ã§ã³ %s ç¨)ã§ã!\n"
+
+#: systemv/cupstestppd.c:2622 systemv/cupstestppd.c:2671
+#: systemv/cupstestppd.c:2710
+#, c-format
msgid " %s Bad UTF-8 \"%s\" translation string for option %s, choice %s!\n"
-msgstr " %1$s ãªãã·ã§ã³ %3$sãé¸æ %4$s ã® UTF-8 â%2$sâå¤ææååãæ£ããããã¾ããï¼\n"
+msgstr " %s ä¸æ£ãª UTF-8 \"%s\" 翻訳æåå (ãªãã·ã§ã³ %s ãé¸æ %s)ã§ã!\n"
+
+#: systemv/cupstestppd.c:2258
+#, c-format
msgid " %s Bad cupsFilter value \"%s\"!\n"
-msgstr " %s cupsFilter å¤â%sâãæ£ããããã¾ããï¼\n"
+msgstr " %s ä¸æ£ãªå¤ã cupsFilter ã«è¨å®ããã¦ãã¾ã \"%s\"!\n"
+
+#: systemv/cupstestppd.c:2393
+#, c-format
msgid " %s Bad cupsICCProfile %s!\n"
-msgstr " %s cupsICCProfile %s ãæ£ããããã¾ããï¼\n"
+msgstr " %s ä¸æ£ãª cupsICCProfile %sã§ã!\n"
+
+#: systemv/cupstestppd.c:2309
+#, c-format
msgid " %s Bad cupsPreFilter value \"%s\"!\n"
-msgstr " %s cupsPreFilter å¤â%sâãæ£ããããã¾ããï¼\n"
+msgstr " %s ä¸æ£ãªå¤ã cupsPreFilter ã«è¨å®ããã¦ãã¾ã \"%s\"!\n"
+
+#: systemv/cupstestppd.c:1748
+#, c-format
msgid " %s Bad cupsUIConstraints %s: \"%s\"!\n"
-msgstr " %s cupsUIConstraints %s ãæ£ããããã¾ããï¼â%sâï¼\n"
+msgstr " %s ä¸æ£ãª cupsUIConstraints %s: \"%s\"ã§ã!\n"
+
+#: systemv/cupstestppd.c:2526
+#, c-format
msgid " %s Bad language \"%s\"!\n"
-msgstr " %s è¨èª â%sâãæ£ããããã¾ããï¼\n"
+msgstr " %s ç¡å¹ãªè¨èª \"%s\"ã§ã!\n"
+
+#: systemv/cupstestppd.c:1729
+#, c-format
msgid " %s Empty cupsUIConstraints %s!\n"
-msgstr " %s cupsUIConstraints %s ã空ã§ãï¼\n"
+msgstr " %s 空㮠cupsUIConstraints %sã§ã!\n"
+
+#: systemv/cupstestppd.c:2562
+#, c-format
msgid " %s Missing \"%s\" translation string for option %s!\n"
-msgstr " %1$s ãªãã·ã§ã³ %3$s ã®â%2$sâå¤ææååãè¦ã¤ããã¾ããï¼\n"
+msgstr " %s \"%s\" 翻訳æåå (ãªãã·ã§ã³ %s ç¨) ãè¦ã¤ããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:2654 systemv/cupstestppd.c:2694
+#, c-format
msgid " %s Missing \"%s\" translation string for option %s, choice %s!\n"
-msgstr " %1$s ãªãã·ã§ã³ %3$sãé¸æ %4$s ã®â%2$sâå¤ææååãè¦ã¤ããã¾ããï¼\n"
+msgstr " %s \"%s\" 翻訳æåå (ãªãã·ã§ã³ %s ãé¸æ %s) ãè¦ã¤ããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:1921 systemv/cupstestppd.c:1962
+#, c-format
msgid " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"!\n"
-msgstr " %s UIConstraints â*%s %s *%s %sâå
ã«é¸æ *%s %s ãè¦ã¤ããã¾ããï¼\n"
+msgstr " %sã é¸æ *%s %s ã UIConstraints \"*%s %s *%s %s\" å
ã«è¦ã¤ããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:1834
+#, c-format
msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\"!\n"
-msgstr " %s cupsUIConstraints %s å
ã«é¸æ *%s %s ãè¦ã¤ããã¾ããï¼â%sâï¼\n"
+msgstr " %s é¸æ *%s %s ã cupsUIConstraints %s: \"%s\" å
ã«è¦ã¤ããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:2287
+#, c-format
msgid " %s Missing cupsFilter file \"%s\"\n"
-msgstr " %s cupsFilter ãã¡ã¤ã«â%sâãè¦ã¤ããã¾ãã\n"
+msgstr " %s cupsFilter ãã¡ã¤ã« \"%s\" ãè¦ã¤ããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:2427
+#, c-format
msgid " %s Missing cupsICCProfile file \"%s\"!\n"
-msgstr " %s cupsICCProfile ãã¡ã¤ã«â%sâãè¦ã¤ããã¾ããï¼\n"
+msgstr " %s cupsPreFilter ãã¡ã¤ã« \"%s\" ãè¦ã¤ããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:2338
+#, c-format
msgid " %s Missing cupsPreFilter file \"%s\"\n"
-msgstr " %s cupsPreFilter ãã¡ã¤ã«â%sâãè¦ã¤ããã¾ãã\n"
+msgstr " %s cupsPreFilter ãã¡ã¤ã« \"%s\" ãè¦ã¤ããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:1766
+#, c-format
msgid " %s Missing cupsUIResolver %s!\n"
-msgstr " %s cupsUIResolver %s ãè¦ã¤ããã¾ããï¼\n"
+msgstr " %s cupsUIResolver ãã¡ã¤ã« %s ãè¦ã¤ããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:1907 systemv/cupstestppd.c:1948
+#, c-format
msgid " %s Missing option %s in UIConstraints \"*%s %s *%s %s\"!\n"
-msgstr " %s UIConstraints â*%s %s *%s %sâå
ã«ãªãã·ã§ã³ %s ãè¦ã¤ããã¾ããï¼\n"
+msgstr " %s ãªãã·ã§ã³ %s ãUIConstraints \"*%s %s *%s %s\" ã«è¦ã¤ããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:1818
+#, c-format
msgid " %s Missing option %s in cupsUIConstraints %s: \"%s\"!\n"
-msgstr " %s cupsUIConstraints %så
ã«ãªãã·ã§ã³ %s ãè¦ã¤ããã¾ããï¼â%sâï¼\n"
+msgstr " %s ãªãã·ã§ã³ %s ãcupsUIConstraints %s ã«è¦ã¤ããã¾ãã!: \"%s\"\n"
+
+#: systemv/cupstestppd.c:2748
+#, c-format
msgid " %s No base translation \"%s\" is included in file!\n"
-msgstr " %s ãã¡ã¤ã«ã«ãã¼ã¹å¤æâ%sâãåãè¾¼ã¾ãã¦ãã¾ããï¼\n"
-msgid " %s REQUIRED %s does not define choice None!\n REF: Page 122, section 5.17\n"
-msgstr " %s å¿
é ã® %s ãé¸æè¢ None ãå®ç¾©ãã¦ãã¾ããï¼\n REFï¼122 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.17\n"
+msgstr " %s ãã¡ã¤ã«ã«ãã¼ã¹ç¿»è¨³æåå \"%s\" ãããã¾ãã!\n"
+
+#: systemv/cupstestppd.c:2186
+#, c-format
+msgid ""
+" %s REQUIRED %s does not define choice None!\n"
+" REF: Page 122, section 5.17\n"
+msgstr ""
+" %s å¿
é ã® %s ãé¸æè¢ None ãå®ç¾©ãã¦ãã¾ãã!\n"
+" åç
§: 122 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.17\n"
+
+#: systemv/cupstestppd.c:2453
+#, c-format
msgid " %s cupsICCProfile %s hash value collides with %s!\n"
-msgstr " %s cupsICCProfile %s ããã·ã¥å¤ã %s ã¨è¡çªãã¦ãã¾ãï¼\n"
+msgstr " %s cupsICCProfileã®ããã·ã¥å¤ %s ã %s ã¨ä¸è´ãã¾ãã!\n"
+
+#: systemv/cupstestppd.c:1871
+#, c-format
msgid " %s cupsUIResolver %s causes a loop!\n"
-msgstr " %s cupsUIResolver %s ãã«ã¼ãã«ãªã£ã¦ãã¾ãï¼\n"
+msgstr " %s cupsUIResolverã® %s ãã«ã¼ããã¦ãã¾ã!\n"
+
+#: systemv/cupstestppd.c:2071
+#, c-format
msgid " **FAIL** %s choice names %s and %s differ only by case!\n"
-msgstr " ** 失æ ** %s é¸æå %s 㨠%s ã®éãã¯å¤§æåå°æåã ãã§ãï¼\n"
-msgid " **FAIL** %s must be 1284DeviceID!\n REF: Page 72, section 5.5\n"
-msgstr " ** 失æ ** %s 㯠1284DeviceID ã§ãªããã°ãªãã¾ããï¼\n REFï¼72 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.5\n"
-msgid " **FAIL** BAD Default%s %s\n REF: Page 40, section 4.5.\n"
-msgstr " ** 失æ ** Default%s %s ãæ£ããããã¾ãã\n REFï¼40 ãã¼ã¸ãã»ã¯ã·ã§ã³ 4.5ã\n"
-msgid " **FAIL** BAD DefaultImageableArea %s!\n REF: Page 102, section 5.15.\n"
-msgstr " ** 失æ ** DefaultImageableArea %s ãæ£ããããã¾ããï¼\n REFï¼102 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
-msgid " **FAIL** BAD DefaultPaperDimension %s!\n REF: Page 103, section 5.15.\n"
-msgstr " ** 失æ ** DefaultPaperDimension %s ãæ£ããããã¾ããï¼\n REFï¼103 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
-msgid " **FAIL** BAD JobPatchFile attribute in file\n REF: Page 24, section 3.4.\n"
-msgstr " ** 失æ ** ãã¡ã¤ã«å
ã® JobPatchFile å±æ§ãæ£ããããã¾ãã\n REFï¼24 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.4ã\n"
-msgid " **FAIL** BAD Manufacturer (should be \"HP\")\n REF: Page 211, table D.1.\n"
-msgstr " ** 失æ ** Manufacturer ãæ£ããããã¾ããï¼âHPâã§ãªããã°ãªãã¾ããï¼\n REFï¼211 ãã¼ã¸ã表 D.1ã\n"
-msgid " **FAIL** BAD Manufacturer (should be \"Oki\")\n REF: Page 211, table D.1.\n"
-msgstr " ** 失æ ** Manufacturer ãæ£ããããã¾ããï¼âOkiâã§ãªããã°ãªãã¾ããï¼\n REFï¼211 ãã¼ã¸ã表 D.1ã\n"
-msgid " **FAIL** BAD ModelName - \"%c\" not allowed in string.\n REF: Pages 59-60, section 5.3.\n"
-msgstr " ** 失æ ** ModelName ãæ£ããããã¾ãã - â%câã¯æååå
ã§è¨±å¯ããã¾ããã\n REFï¼59 ã 60 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** BAD PSVersion - not \"(string) int\".\n REF: Pages 62-64, section 5.3.\n"
-msgstr " ** 失æ ** PSVersion ãæ£ããããã¾ãã - âï¼æååï¼ æ£æ°âã§ããã¾ããã\n REFï¼62 ã 64 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** BAD Product - not \"(string)\".\n REF: Page 62, section 5.3.\n"
-msgstr " ** 失æ ** Product ãæ£ããããã¾ãã - âï¼æååï¼âã§ããã¾ããã\n REFï¼62 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** BAD ShortNickName - longer than 31 chars.\n REF: Pages 64-65, section 5.3.\n"
-msgstr " ** 失æ ** ShortNickName ãæ£ããããã¾ãã - 31 æåããé·ãã§ãã\n REFï¼64 ã 65 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** Bad %s choice %s!\n REF: Page 84, section 5.9\n"
-msgstr " ** 失æ ** %s é¸æ %s ãæ£ããããã¾ããï¼\n REFï¼84 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.9\n"
-msgid " **FAIL** Bad FileVersion \"%s\"\n REF: Page 56, section 5.3.\n"
-msgstr " ** 失æ ** FileVersion â%sâ ãæ£ããããã¾ãã\n REFï¼56 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** Bad FormatVersion \"%s\"\n REF: Page 56, section 5.3.\n"
-msgstr " ** 失æ ** FormatVersion â%sâ ãæ£ããããã¾ãã\n REFï¼56 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+msgstr " **失æ** %s ãé¸æãã %s 㨠%s ã¯å¤§æå/å°æåã®ã¿ãéãã ãã§ã!\n"
+
+#: systemv/cupstestppd.c:1072
+#, c-format
+msgid ""
+" **FAIL** %s must be 1284DeviceID!\n"
+" REF: Page 72, section 5.5\n"
+msgstr ""
+" **失æ** %s 㯠1284DeviceID ã§ãªããã°ãªãã¾ãã!\n"
+" åç
§: 72 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.5\n"
+
+#: systemv/cupstestppd.c:488
+#, c-format
+msgid ""
+" **FAIL** BAD Default%s %s\n"
+" REF: Page 40, section 4.5.\n"
+msgstr ""
+" **失æ** ä¸æ£ãª Default%s %s\n"
+" åç
§: 40 ãã¼ã¸ãã»ã¯ã·ã§ã³ 4.5ã\n"
+
+#: systemv/cupstestppd.c:424
+#, c-format
+msgid ""
+" **FAIL** BAD DefaultImageableArea %s!\n"
+" REF: Page 102, section 5.15.\n"
+msgstr ""
+" **失æ** %s ã¯ä¸æ£ãª DefaultImageableArea ã§ã!\n"
+" åç
§: 102 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
+
+#: systemv/cupstestppd.c:460
+#, c-format
+msgid ""
+" **FAIL** BAD DefaultPaperDimension %s!\n"
+" REF: Page 103, section 5.15.\n"
+msgstr ""
+" **失æ** %s ã¯ä¸æ£ãª DefaultPaperDimension ã§ã!\n"
+" åç
§: 103 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
+
+#: systemv/cupstestppd.c:931
+msgid ""
+" **FAIL** BAD JobPatchFile attribute in file\n"
+" REF: Page 24, section 3.4.\n"
+msgstr ""
+" **失æ** ãã¡ã¤ã«ã«ä¸æ£ãª JobPatchFile å±æ§ãããã¾ã\n"
+" åç
§: 24 ãã¼ã¸ãã»ã¯ã·ã§ã³ 3.4ã\n"
+
+#: systemv/cupstestppd.c:651
+msgid ""
+" **FAIL** BAD Manufacturer (should be \"HP\")\n"
+" REF: Page 211, table D.1.\n"
+msgstr ""
+" **失æ** ä¸æ£ãª Manufacturer (\"HP\" ã§ãªããã°ãªãã¾ãã)\n"
+" åç
§: 211 ãã¼ã¸ã表 D.1ã\n"
+
+#: systemv/cupstestppd.c:667
+msgid ""
+" **FAIL** BAD Manufacturer (should be \"Oki\")\n"
+" REF: Page 211, table D.1.\n"
+msgstr ""
+" **失æ** ä¸æ£ãª Manufacturer (\"Oki\" ã§ãªããã°ãªãã¾ãã)\n"
+" åç
§: 211 ãã¼ã¸ã表 D.1ã\n"
+
+#: systemv/cupstestppd.c:706
+#, c-format
+msgid ""
+" **FAIL** BAD ModelName - \"%c\" not allowed in string.\n"
+" REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+" **失æ** ä¸æ£ãª ModelName - æååã« \"%c\" ã¯è¨±å¯ããã¦ãã¾ããã\n"
+" åç
§: 59-60 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:862
+msgid ""
+" **FAIL** BAD PSVersion - not \"(string) int\".\n"
+" REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+" **失æ** ä¸æ£ãª PSVersion - \"(æåå) æ´æ°\" ã§ã¯ããã¾ããã\n"
+" åç
§: 62-64 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:823
+msgid ""
+" **FAIL** BAD Product - not \"(string)\".\n"
+" REF: Page 62, section 5.3.\n"
+msgstr ""
+" **失æ** ä¸æ£ãª Product - \"(æåå)\" ã§ã¯ããã¾ããã\n"
+" åç
§: 62 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:897
+msgid ""
+" **FAIL** BAD ShortNickName - longer than 31 chars.\n"
+" REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+" **失æ** ä¸æ£ãª ShortNickName - 31 æåãè¶
ãã¦ãã¾ãã\n"
+" åç
§: 64-65 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:1053
+#, c-format
+msgid ""
+" **FAIL** Bad %s choice %s!\n"
+" REF: Page 84, section 5.9\n"
+msgstr ""
+" **失æ** ä¸æ£ãª %s ã %s ãé¸ãã§ãã¾ã!\n"
+" åç
§: 84 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.9\n"
+
+#: systemv/cupstestppd.c:531
+#, c-format
+msgid ""
+" **FAIL** Bad FileVersion \"%s\"\n"
+" REF: Page 56, section 5.3.\n"
+msgstr ""
+" **失æ** ä¸æ£ãªFileVersion \"%s\"\n"
+" åç
§: 56 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:575
+#, c-format
+msgid ""
+" **FAIL** Bad FormatVersion \"%s\"\n"
+" REF: Page 56, section 5.3.\n"
+msgstr ""
+" **失æ** FormatVersion ãéãã¾ã \"%s\"\n"
+" åç
§: 56 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:1114
+#, c-format
msgid " **FAIL** Bad LanguageEncoding %s - must be ISOLatin1!\n"
-msgstr " ** 失æ ** LanguageEncoding %s ãæ£ããããã¾ãã - ISOLatin1 ã§ãªããã°ãªãã¾ããï¼\n"
+msgstr " **失æ** ç¡å¹ãª LanguageEncoding %s - ISOLatin1 ã§ãªããã°ãªãã¾ãã!\n"
+
+#: systemv/cupstestppd.c:1128
+#, c-format
msgid " **FAIL** Bad LanguageVersion %s - must be English!\n"
-msgstr " ** 失æ ** LanguageVersion %s ãæ£ããããã¾ãã - English ã§ãªããã°ãªãã¾ããï¼\n"
+msgstr " **失æ** ç¡å¹ãª LanguageVersion %s - English ã§ãªããã°ãªãã¾ãã!\n"
+
+#: systemv/cupstestppd.c:2888 systemv/cupstestppd.c:2910
+#, c-format
msgid " **FAIL** Default option code cannot be interpreted: %s\n"
-msgstr " ** 失æ ** ããã©ã«ãã®ãªãã·ã§ã³ã³ã¼ãã解éã§ãã¾ããï¼%s\n"
+msgstr " **失æ** ããã©ã«ãã®ãªãã·ã§ã³ã³ã¼ãã解éã§ãã¾ãã: %s\n"
+
+#: systemv/cupstestppd.c:1187
+#, c-format
msgid " **FAIL** Default translation string for option %s choice %s contains 8-bit characters!\n"
-msgstr " ** 失æ ** ãªãã·ã§ã³ %s é¸æ %s ã®ããã©ã«ãå¤ææååã« 8 ãããæåãå«ã¾ãã¦ãã¾ãï¼\n"
+msgstr " **失æ** ãªãã·ã§ã³ %sãé¸æ %s ã®ããã©ã«ãã®ç¿»è¨³æååã 8 ãããæåãå«ãã§ãã¾ã!\n"
+
+#: systemv/cupstestppd.c:1160
+#, c-format
msgid " **FAIL** Default translation string for option %s contains 8-bit characters!\n"
-msgstr " ** 失æ ** ãªãã·ã§ã³ %s ã®ããã©ã«ãå¤ææååã« 8 ãããæåãå«ã¾ãã¦ãã¾ãï¼\n"
+msgstr " **失æ** ãªãã·ã§ã³ %s ã®ããã©ã«ãã®ç¿»è¨³æååã 8 ãããæåãå«ãã§ãã¾ã!\n"
+
+#: systemv/cupstestppd.c:2009
+#, c-format
msgid " **FAIL** Group names %s and %s differ only by case!\n"
-msgstr " ** 失æ ** ã°ã«ã¼ãå %s 㨠%s ã®éãã¯å¤§æåå°æåã ãã§ãï¼\n"
+msgstr " **失æ** ã°ã«ã¼ãå %s 㨠%s ã¯å¤§æå/å°æåãéãã ãã§ã!\n"
+
+#: systemv/cupstestppd.c:2054
+#, c-format
msgid " **FAIL** Multiple occurrences of %s choice name %s!\n"
-msgstr " ** 失æ ** %s é¸æå %s ãè¤æ°ååºç¾ãã¾ãï¼\n"
+msgstr " **失æ** %s ã§è¤æ°ã®ãªãã·ã§ã³ %s ãé¸æããã¦ãã¾ã!\n"
+
+#: systemv/cupstestppd.c:2031
+#, c-format
msgid " **FAIL** Option names %s and %s differ only by case!\n"
-msgstr " ** 失æ ** ãªãã·ã§ã³å %s 㨠%s ã®éãã¯å¤§æåå°æåã ãã§ãï¼\n"
-msgid " **FAIL** REQUIRED Default%s\n REF: Page 40, section 4.5.\n"
-msgstr " ** 失æ ** Default%s ãå¿
è¦ã§ã\n REFï¼40 ãã¼ã¸ãã»ã¯ã·ã§ã³ 4.5ã\n"
-msgid " **FAIL** REQUIRED DefaultImageableArea\n REF: Page 102, section 5.15.\n"
-msgstr " ** 失æ ** DefaultImageableArea ãå¿
è¦ã§ã\n REFï¼102 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
-msgid " **FAIL** REQUIRED DefaultPaperDimension\n REF: Page 103, section 5.15.\n"
-msgstr " ** 失æ ** DefaultPaperDimension ãå¿
è¦ã§ã\n REFï¼103 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
-msgid " **FAIL** REQUIRED FileVersion\n REF: Page 56, section 5.3.\n"
-msgstr " ** 失æ ** FileVersion ãå¿
è¦ã§ã\n REFï¼56 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** REQUIRED FormatVersion\n REF: Page 56, section 5.3.\n"
-msgstr " ** 失æ ** FormatVersion ãå¿
è¦ã§ã\n REFï¼56 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** REQUIRED ImageableArea for PageSize %s\n REF: Page 41, section 5.\n REF: Page 102, section 5.15.\n"
-msgstr " ** 失æ ** PageSize %s ã« ImageableArea ãå¿
è¦ã§ã\n REFï¼41 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5ã\n REFï¼102 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
-msgid " **FAIL** REQUIRED LanguageEncoding\n REF: Pages 56-57, section 5.3.\n"
-msgstr " ** 失æ ** LanguageEncoding ãå¿
è¦ã§ã\n REFï¼56 ã 57 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** REQUIRED LanguageVersion\n REF: Pages 57-58, section 5.3.\n"
-msgstr " ** 失æ ** LanguageVersion ãå¿
è¦ã§ã\n REFï¼57 ã 58 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** REQUIRED Manufacturer\n REF: Pages 58-59, section 5.3.\n"
-msgstr " ** 失æ ** Manufacturer ãå¿
è¦ã§ã\n REFï¼58 ã 59 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** REQUIRED ModelName\n REF: Pages 59-60, section 5.3.\n"
-msgstr " ** 失æ ** ModelName ãå¿
è¦ã§ã\n REFï¼59 ã 60 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** REQUIRED NickName\n REF: Page 60, section 5.3.\n"
-msgstr " ** 失æ ** NickName ãå¿
è¦ã§ã\n REFï¼60 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** REQUIRED PCFileName\n REF: Pages 61-62, section 5.3.\n"
-msgstr " ** 失æ ** PCFileName ãå¿
è¦ã§ã\n REFï¼61 ã 62 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** REQUIRED PSVersion\n REF: Pages 62-64, section 5.3.\n"
-msgstr " ** 失æ ** PSVersion ãå¿
è¦ã§ã\n REFï¼62 ã 64 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** REQUIRED PageRegion\n REF: Page 100, section 5.14.\n"
-msgstr " ** 失æ ** PageRegion ãå¿
è¦ã§ã\n REFï¼100 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.14ã\n"
-msgid " **FAIL** REQUIRED PageSize\n REF: Page 41, section 5.\n REF: Page 99, section 5.14.\n"
-msgstr " ** 失æ ** PageSize ãå¿
è¦ã§ã\n REFï¼41 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5ã\n REFï¼99 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.14ã\n"
-msgid " **FAIL** REQUIRED PageSize\n REF: Pages 99-100, section 5.14.\n"
-msgstr " ** 失æ ** PageSize ãå¿
è¦ã§ã\n REFï¼99 ã 100 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.14ã\n"
-msgid " **FAIL** REQUIRED PaperDimension for PageSize %s\n REF: Page 41, section 5.\n REF: Page 103, section 5.15.\n"
-msgstr " ** 失æ ** PageSize %s ã« PaperDimension ãå¿
è¦ã§ã\n REFï¼41 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5ã\n REFï¼103 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
-msgid " **FAIL** REQUIRED Product\n REF: Page 62, section 5.3.\n"
-msgstr " ** 失æ ** Product ãå¿
è¦ã§ã\n REFï¼62 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
-msgid " **FAIL** REQUIRED ShortNickName\n REF: Page 64-65, section 5.3.\n"
-msgstr " ** 失æ ** ShortNickName ãå¿
è¦ã§ã\n REFï¼64 ã 65 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+msgstr " **失æ** ãªãã·ã§ã³å %s 㨠%s ã¯å¤§æå/å°æåãéãã ãã§ã!\n"
+
+#: systemv/cupstestppd.c:508
+#, c-format
+msgid ""
+" **FAIL** REQUIRED Default%s\n"
+" REF: Page 40, section 4.5.\n"
+msgstr ""
+" **失æ** Default%s ã¯å¿
é \n"
+" åç
§: 40 ãã¼ã¸ãã»ã¯ã·ã§ã³ 4.5ã\n"
+
+#: systemv/cupstestppd.c:409
+msgid ""
+" **FAIL** REQUIRED DefaultImageableArea\n"
+" REF: Page 102, section 5.15.\n"
+msgstr ""
+" **失æ** DefaultImageableArea ã¯å¿
é \n"
+" åç
§: 102 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
+
+#: systemv/cupstestppd.c:445
+msgid ""
+" **FAIL** REQUIRED DefaultPaperDimension\n"
+" REF: Page 103, section 5.15.\n"
+msgstr ""
+" **失æ** DefaultPaperDimension ã¯å¿
é \n"
+" åç
§: 103 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
+
+#: systemv/cupstestppd.c:549
+msgid ""
+" **FAIL** REQUIRED FileVersion\n"
+" REF: Page 56, section 5.3.\n"
+msgstr ""
+" **失æ** FileVersion ã¯å¿
é \n"
+" åç
§: 56 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:593
+msgid ""
+" **FAIL** REQUIRED FormatVersion\n"
+" REF: Page 56, section 5.3.\n"
+msgstr ""
+" **失æ** FormatVersion ã¯å¿
é \n"
+" åç
§: 56 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:982
+#, c-format
+msgid ""
+" **FAIL** REQUIRED ImageableArea for PageSize %s\n"
+" REF: Page 41, section 5.\n"
+" REF: Page 102, section 5.15.\n"
+msgstr ""
+" **失æ** PageSize %s ã« ImageableArea ã¯å¿
é \n"
+" åç
§: 41 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5ã\n"
+" åç
§: 102 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
+
+#: systemv/cupstestppd.c:613
+msgid ""
+" **FAIL** REQUIRED LanguageEncoding\n"
+" REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+" **失æ** LanguageEncoding ã¯å¿
é \n"
+" åç
§: 56-57 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:633
+msgid ""
+" **FAIL** REQUIRED LanguageVersion\n"
+" REF: Pages 57-58, section 5.3.\n"
+msgstr ""
+" **失æ** LanguageVersion ã¯å¿
é \n"
+" åç
§: 57-58 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:685
+msgid ""
+" **FAIL** REQUIRED Manufacturer\n"
+" REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+" **失æ** Manufacturer ã¯å¿
é \n"
+" åç
§: 58-59 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:725
+msgid ""
+" **FAIL** REQUIRED ModelName\n"
+" REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+" **失æ** ModelName ã¯å¿
é \n"
+" åç
§: 59-60 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:745
+msgid ""
+" **FAIL** REQUIRED NickName\n"
+" REF: Page 60, section 5.3.\n"
+msgstr ""
+" **失æ** NickName ã¯å¿
é \n"
+" åç
§: 60 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:805
+msgid ""
+" **FAIL** REQUIRED PCFileName\n"
+" REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+" **失æ** PCFileName ã¯å¿
é \n"
+" åç
§: 61-62 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:880
+msgid ""
+" **FAIL** REQUIRED PSVersion\n"
+" REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+" **失æ** PSVersion ã¯å¿
é \n"
+" åç
§: 62-64 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:785
+msgid ""
+" **FAIL** REQUIRED PageRegion\n"
+" REF: Page 100, section 5.14.\n"
+msgstr ""
+" **失æ** PageRegion ã¯å¿
é \n"
+" åç
§: 100 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.14ã\n"
+
+#: systemv/cupstestppd.c:951
+msgid ""
+" **FAIL** REQUIRED PageSize\n"
+" REF: Page 41, section 5.\n"
+" REF: Page 99, section 5.14.\n"
+msgstr ""
+" **失æ** PageSize ã¯å¿
é \n"
+" åç
§: 41 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5ã\n"
+" åç
§: 99 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.14ã\n"
+
+#: systemv/cupstestppd.c:765
+msgid ""
+" **FAIL** REQUIRED PageSize\n"
+" REF: Pages 99-100, section 5.14.\n"
+msgstr ""
+" **失æ** PageSize ã¯å¿
é \n"
+" åç
§: 99-100 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.14ã\n"
+
+#: systemv/cupstestppd.c:1004
+#, c-format
+msgid ""
+" **FAIL** REQUIRED PaperDimension for PageSize %s\n"
+" REF: Page 41, section 5.\n"
+" REF: Page 103, section 5.15.\n"
+msgstr ""
+" **失æ** PageSize %s ã« PaperDimension ã¯å¿
é \n"
+" åç
§: 41 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5ã\n"
+" åç
§: 103 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.15ã\n"
+
+#: systemv/cupstestppd.c:840
+msgid ""
+" **FAIL** REQUIRED Product\n"
+" REF: Page 62, section 5.3.\n"
+msgstr ""
+" **失æ** Product ã¯å¿
é \n"
+" åç
§: 62 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:915
+msgid ""
+" **FAIL** REQUIRED ShortNickName\n"
+" REF: Page 64-65, section 5.3.\n"
+msgstr ""
+" **失æ** ShortNickName ã¯å¿
é \n"
+" åç
§: 64-65 ãã¼ã¸ãã»ã¯ã·ã§ã³ 5.3ã\n"
+
+#: systemv/cupstestppd.c:1420
+#, c-format
msgid " %d ERRORS FOUND\n"
msgstr " %d åã®ã¨ã©ã¼ãè¦ã¤ããã¾ãã\n"
-msgid " Bad %%%%BoundingBox: on line %d!\n REF: Page 39, %%%%BoundingBox:\n"
-msgstr " %%%%BoundingBox ãæ£ããããã¾ããï¼è¡ %dï¼\n REFï¼39 ãã¼ã¸ã%%%%BoundingBoxï¼\n"
-msgid " Bad %%%%Page: on line %d!\n REF: Page 53, %%%%Page:\n"
-msgstr " %%%%Page ãæ£ããããã¾ããï¼è¡ %dï¼\n REFï¼53 ãã¼ã¸ã%%%%Pageï¼\n"
-msgid " Bad %%%%Pages: on line %d!\n REF: Page 43, %%%%Pages:\n"
-msgstr " %%%%Pages ãæ£ããããã¾ããï¼è¡ %dï¼\n REFï¼43 ãã¼ã¸ã%%%%Pagesï¼\n"
-msgid " Line %d is longer than 255 characters (%d)!\n REF: Page 25, Line Length\n"
-msgstr " %d è¡ã 255 æåããé·ããªã£ã¦ãã¾ãï¼%dï¼ï¼\n REFï¼25 ãã¼ã¸ãLine Length\n"
-msgid " Missing %!PS-Adobe-3.0 on first line!\n REF: Page 17, 3.1 Conforming Documents\n"
-msgstr " å
é è¡ã« %!PS-Adobe-3.0 ãããã¾ããï¼\n REFï¼17 ãã¼ã¸ã3.1 Conforming Documents\n"
-msgid " Missing %%EndComments comment!\n REF: Page 41, %%EndComments\n"
-msgstr " %%EndComments ã³ã¡ã³ããè¦ã¤ããã¾ããï¼\n REFï¼41 ãã¼ã¸ã%%EndComments\n"
-msgid " Missing or bad %%BoundingBox: comment!\n REF: Page 39, %%BoundingBox:\n"
-msgstr " %%BoundingBox ãè¦ã¤ãããªããæ£ããããã¾ããï¼ã³ã¡ã³ãï¼\n REFï¼39 ãã¼ã¸ã%%BoundingBoxï¼\n"
-msgid " Missing or bad %%Page: comments!\n REF: Page 53, %%Page:\n"
-msgstr " %%Page ãè¦ã¤ãããªããæ£ããããã¾ããï¼ã³ã¡ã³ãï¼\n REFï¼53 ãã¼ã¸ã%%Pageï¼\n"
-msgid " Missing or bad %%Pages: comment!\n REF: Page 43, %%Pages:\n"
-msgstr " %%Pages ãè¦ã¤ãããªããæ£ããããã¾ããï¼ã³ã¡ã³ãï¼\n REFï¼43 ãã¼ã¸ã%%Pagesï¼\n"
+
+#: systemv/cupstestdsc.c:238 systemv/cupstestdsc.c:280
+#, c-format
+msgid ""
+" Bad %%%%BoundingBox: on line %d!\n"
+" REF: Page 39, %%%%BoundingBox:\n"
+msgstr ""
+" ä¸æ£ãª %%%%BoundingBox: (%d è¡)!\n"
+" åç
§: 39 ãã¼ã¸ã%%%%BoundingBox:\n"
+
+#: systemv/cupstestdsc.c:309
+#, c-format
+msgid ""
+" Bad %%%%Page: on line %d!\n"
+" REF: Page 53, %%%%Page:\n"
+msgstr ""
+" ä¸æ£ãª %%%%Page: (%d è¡)!\n"
+" åç
§: 53 ãã¼ã¸ã%%%%Page:\n"
+
+#: systemv/cupstestdsc.c:222 systemv/cupstestdsc.c:262
+#, c-format
+msgid ""
+" Bad %%%%Pages: on line %d!\n"
+" REF: Page 43, %%%%Pages:\n"
+msgstr ""
+" ä¸æ£ãª %%%%Pages: (%d è¡)!\n"
+" åç
§: 43 ãã¼ã¸ã%%%%Pages:\n"
+
+#: systemv/cupstestdsc.c:180
+#, c-format
+msgid ""
+" Line %d is longer than 255 characters (%d)!\n"
+" REF: Page 25, Line Length\n"
+msgstr ""
+" %d è¡ã 255æåããé·ããªã£ã¦ãã¾ã (%d)!\n"
+" åç
§: 25 ãã¼ã¸ãLine Length\n"
+
+#: systemv/cupstestdsc.c:196
+msgid ""
+" Missing %!PS-Adobe-3.0 on first line!\n"
+" REF: Page 17, 3.1 Conforming Documents\n"
+msgstr ""
+" å
é è¡ã« %!PS-Adobe-3.0 ãããã¾ãã!\n"
+" åç
§: 17 ãã¼ã¸ã3.1 Conforming Documents\n"
+
+#: systemv/cupstestdsc.c:366
+#, c-format
+msgid ""
+" Missing %%EndComments comment!\n"
+" REF: Page 41, %%EndComments\n"
+msgstr ""
+" %%EndComments ã³ã¡ã³ããè¦ã¤ããã¾ãã!\n"
+" åç
§: 41 ãã¼ã¸ã%%EndComments\n"
+
+#: systemv/cupstestdsc.c:346
+#, c-format
+msgid ""
+" Missing or bad %%BoundingBox: comment!\n"
+" REF: Page 39, %%BoundingBox:\n"
+msgstr ""
+" %%BoundingBox: ã³ã¡ã³ããè¦ã¤ãããªããä¸æ£ã§ã!\n"
+" åç
§: 39 ãã¼ã¸ã%%BoundingBox:\n"
+
+#: systemv/cupstestdsc.c:376
+#, c-format
+msgid ""
+" Missing or bad %%Page: comments!\n"
+" REF: Page 53, %%Page:\n"
+msgstr ""
+" %%Page: ã³ã¡ã³ããè¦ã¤ãããªããä¸æ£ã§ã!\n"
+" åç
§: 53 ãã¼ã¸ã%%Page:\n"
+
+#: systemv/cupstestdsc.c:356
+#, c-format
+msgid ""
+" Missing or bad %%Pages: comment!\n"
+" REF: Page 43, %%Pages:\n"
+msgstr ""
+" %%Pages: ã³ã¡ã³ããè¦ã¤ãããªããä¸æ£ã§ã!\n"
+" åç
§: 43 ãã¼ã¸ã%%Pages:\n"
+
+#: systemv/cupstestppd.c:1422
msgid " NO ERRORS FOUND\n"
-msgstr " ã¨ã©ã¼ãè¦ã¤ããã¾ããã§ãã\n"
+msgstr " ã¨ã©ã¼ã¯è¦ã¤ããã¾ããã§ãã\n"
+
+#: systemv/cupstestdsc.c:399
+#, c-format
msgid " Saw %d lines that exceeded 255 characters!\n"
-msgstr " 255 æåãè¶
ããè¡ã %d åããã¾ããï¼\n"
+msgstr " 255æåãè¶
ãã %d è¡ãè¦ã¤ããã¾ãã!\n"
+
+#: systemv/cupstestdsc.c:394
+#, c-format
msgid " Too many %%BeginDocument comments!\n"
-msgstr " %%BeginDocument ã³ã¡ã³ããå¤ããã¾ãï¼\n"
+msgstr " %%BeginDocument ã³ã¡ã³ããå¤ããã¾ã!\n"
+
+#: systemv/cupstestdsc.c:386
+#, c-format
msgid " Too many %%EndDocument comments!\n"
-msgstr " %%EndDocument ã³ã¡ã³ããå¤ããã¾ãï¼\n"
+msgstr " %%EndDocument ã³ã¡ã³ããå¤ããã¾ã!\n"
+
+#: systemv/cupstestdsc.c:406
msgid " Warning: file contains binary data!\n"
-msgstr " è¦åï¼ãã¡ã¤ã«å
ã«ãã¤ããªãã¼ã¿ãå«ã¾ãã¦ãã¾ãï¼\n"
+msgstr " è¦å: ãã¡ã¤ã«ã«ãã¤ããªãã¼ã¿ãå«ã¾ãã¦ãã¾ã!\n"
+
+#: systemv/cupstestdsc.c:414
+#, c-format
msgid " Warning: no %%EndComments comment in file!\n"
-msgstr " è¦åï¼ãã¡ã¤ã«å
ã« %%EndComments ã³ã¡ã³ããããã¾ããï¼\n"
+msgstr " è¦å: ãã¡ã¤ã«ã« %%EndComments ã³ã¡ã³ããããã¾ãã!\n"
+
+#: systemv/cupstestdsc.c:410
+#, c-format
msgid " Warning: obsolete DSC version %.1f in file!\n"
-msgstr " è¦åï¼ãã¡ã¤ã«å
ã«å¤ã DSC ãã¼ã¸ã§ã³ %.1f ãããã¾ãï¼\n"
+msgstr " è¦å: ãã¡ã¤ã«ã¯æ代é
ãã® DSC ãã¼ã¸ã§ã³ %.1f ã§ã!\n"
+
+#: systemv/cupstestppd.c:406 systemv/cupstestppd.c:421
+#: systemv/cupstestppd.c:442 systemv/cupstestppd.c:457
+#: systemv/cupstestppd.c:485 systemv/cupstestppd.c:505
+#: systemv/cupstestppd.c:528 systemv/cupstestppd.c:546
+#: systemv/cupstestppd.c:572 systemv/cupstestppd.c:590
+#: systemv/cupstestppd.c:610 systemv/cupstestppd.c:630
+#: systemv/cupstestppd.c:648 systemv/cupstestppd.c:664
+#: systemv/cupstestppd.c:682 systemv/cupstestppd.c:703
+#: systemv/cupstestppd.c:722 systemv/cupstestppd.c:742
+#: systemv/cupstestppd.c:762 systemv/cupstestppd.c:782
+#: systemv/cupstestppd.c:802 systemv/cupstestppd.c:820
+#: systemv/cupstestppd.c:837 systemv/cupstestppd.c:859
+#: systemv/cupstestppd.c:877 systemv/cupstestppd.c:894
+#: systemv/cupstestppd.c:912 systemv/cupstestppd.c:928
+#: systemv/cupstestppd.c:948 systemv/cupstestppd.c:979
+#: systemv/cupstestppd.c:1001 systemv/cupstestppd.c:1050
+#: systemv/cupstestppd.c:1069 systemv/cupstestppd.c:1110
+#: systemv/cupstestppd.c:1124 systemv/cupstestppd.c:1156
+#: systemv/cupstestppd.c:1183 systemv/cupstestppd.c:1726
+#: systemv/cupstestppd.c:1745 systemv/cupstestppd.c:1763
+#: systemv/cupstestppd.c:1815 systemv/cupstestppd.c:1831
+#: systemv/cupstestppd.c:1868 systemv/cupstestppd.c:1904
+#: systemv/cupstestppd.c:1918 systemv/cupstestppd.c:1945
+#: systemv/cupstestppd.c:1959 systemv/cupstestppd.c:2005
+#: systemv/cupstestppd.c:2027 systemv/cupstestppd.c:2050
+#: systemv/cupstestppd.c:2067 systemv/cupstestppd.c:2136
+#: systemv/cupstestppd.c:2183 systemv/cupstestppd.c:2207
+#: systemv/cupstestppd.c:2254 systemv/cupstestppd.c:2284
+#: systemv/cupstestppd.c:2305 systemv/cupstestppd.c:2335
+#: systemv/cupstestppd.c:2389 systemv/cupstestppd.c:2424
+#: systemv/cupstestppd.c:2449 systemv/cupstestppd.c:2522
+#: systemv/cupstestppd.c:2558 systemv/cupstestppd.c:2572
+#: systemv/cupstestppd.c:2618 systemv/cupstestppd.c:2650
+#: systemv/cupstestppd.c:2667 systemv/cupstestppd.c:2690
+#: systemv/cupstestppd.c:2706 systemv/cupstestppd.c:2744
+#: systemv/cupstestppd.c:2884 systemv/cupstestppd.c:2906
msgid " FAIL\n"
msgstr " 失æ\n"
-msgid " FAIL\n **FAIL** Unable to open PPD file - %s\n"
-msgstr " 失æ\n ** 失æ ** PPD ãã¡ã¤ã«ãéãã¾ãã - %s\n"
-msgid " FAIL\n **FAIL** Unable to open PPD file - %s on line %d.\n"
-msgstr " 失æ\n ** 失æ ** PPD ãã¡ã¤ã«ãéãã¾ãã - %sãè¡ %d\n"
+
+#: systemv/cupstestppd.c:291
+#, c-format
+msgid ""
+" FAIL\n"
+" **FAIL** Unable to open PPD file - %s\n"
+msgstr ""
+" 失æ\n"
+" **失æ** PPD ãã¡ã¤ã«ãéãã¾ãã - %s\n"
+
+#: systemv/cupstestppd.c:302
+#, c-format
+msgid ""
+" FAIL\n"
+" **FAIL** Unable to open PPD file - %s on line %d.\n"
+msgstr ""
+" 失æ\n"
+" **失æ** PPD ãã¡ã¤ã«ãéãã¾ãã - %s (%d è¡)ã\n"
+
+#: systemv/cupstestppd.c:1207
msgid " PASS\n"
msgstr " åæ ¼\n"
+
+#: ppdc/sample.c:51
msgid "#10 Envelope"
msgstr "#10 å°ç"
+
+#: ppdc/sample.c:52
msgid "#11 Envelope"
msgstr "#11 å°ç"
+
+#: ppdc/sample.c:53
msgid "#12 Envelope"
msgstr "#12 å°ç"
+
+#: ppdc/sample.c:54
msgid "#14 Envelope"
msgstr "#14 å°ç"
+
+#: ppdc/sample.c:55
msgid "#9 Envelope"
msgstr "#9 å°ç"
+
+#: berkeley/lpq.c:553
+#, c-format
msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"
msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f ãã¤ã\n"
+
+#: berkeley/lpq.c:558
+#, c-format
msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"
msgstr "%-7s %-7.7s %-7d %-31.31s %.0f ãã¤ã\n"
+
+#: filter/bannertops.c:780
+#, c-format
msgid "%.0f x %.0f millimeters"
msgstr "%.0f x %.0f ããªã¡ã¼ãã«"
+
+#: filter/bannertops.c:801
+#, c-format
msgid "%.0f x %.0f to %.0f x %.0f millimeters"
-msgstr "%.0f x %.0f ã %.0f x %.0f ããªã¡ã¼ãã«"
+msgstr "%.0f x %.0f to %.0f x %.0f ããªã¡ã¼ãã«"
+
+#: filter/bannertops.c:771
+#, c-format
msgid "%.2f x %.2f inches"
msgstr "%.2f x %.2f ã¤ã³ã"
+
+#: filter/bannertops.c:790
+#, c-format
msgid "%.2f x %.2f to %.2f x %.2f inches"
-msgstr "%.2f x %.2f ã %.2f x %.2f ã¤ã³ã"
+msgstr "%.2f x %.2f to %.2f x %.2f ã¤ã³ã"
+
+#: systemv/lpstat.c:754
+#, c-format
msgid "%s accepting requests since %s\n"
-msgstr "%s 㯠以éã®è¦æ±ãåãå
¥ãä¸ -\n\t%s\n"
+msgstr "%s 㯠%s ãããªã¯ã¨ã¹ããåãä»ãã¦ãã¾ã\n"
+
+#: scheduler/ipp.c:10466
+#, c-format
msgid "%s cannot be changed."
-msgstr "%s ãå¤æ´ã§ãã¾ããã"
+msgstr "%s ã¯å¤æ´ã§ãã¾ããã"
+
+#: berkeley/lpc.c:194
+#, c-format
msgid "%s is not implemented by the CUPS version of lpc.\n"
-msgstr "%s 㯠CUPS çã® lpc ã§ã¯å®è£
ããã¦ãã¾ããã\n"
+msgstr "%s 㯠lpc ã® CUPS ãã¼ã¸ã§ã³ã§ã¯å®è£
ããã¦ãã¾ããã\n"
+
+#: berkeley/lpq.c:644
+#, c-format
msgid "%s is not ready\n"
msgstr "%s ã¯æºåãã§ãã¦ãã¾ãã\n"
+
+#: berkeley/lpq.c:637
+#, c-format
msgid "%s is ready\n"
msgstr "%s ã¯æºåãã§ãã¦ãã¾ã\n"
+
+#: berkeley/lpq.c:640
+#, c-format
msgid "%s is ready and printing\n"
-msgstr "%s ã¯æºåãã§ãã¦ãã¦ããªã³ãä¸ã§ã\n"
-msgid "%s not accepting requests since %s -\n\t%s\n"
-msgstr "%s 㯠%s 以éã®è¦æ±ãåãå
¥ãã¾ãã -\n\t%s\n"
+msgstr "%s ã¯æºåãã§ãã¦ããå°å·ãã¦ãã¾ã\n"
+
+#: systemv/lpstat.c:757
+#, c-format
+msgid ""
+"%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s 㯠%s ãããªã¯ã¨ã¹ããåãä»ãã¦ãã¾ãã\n"
+"\t%s\n"
+
+#: scheduler/ipp.c:689
+#, c-format
msgid "%s not supported!"
-msgstr "%s ã«ã¯å¯¾å¿ãã¦ãã¾ããï¼"
+msgstr "%s ã¯ãµãã¼ãããã¦ãã¾ãã!"
+
+#: systemv/lpstat.c:767
+#, c-format
msgid "%s/%s accepting requests since %s\n"
-msgstr "%s/%s 㯠ã§ããããè¦æ±ãåãå
¥ãä¸ -\n\t%s\n"
-msgid "%s/%s not accepting requests since %s -\n\t%s\n"
-msgstr "%s/%s 㯠%s 以éã®è¦æ±ãåãå
¥ãã¾ãã -\n\t%s\n"
+msgstr "%s/%s 㯠%s ãããªã¯ã¨ã¹ããåãä»ãã¦ãã¾ã\n"
+
+#: systemv/lpstat.c:770
+#, c-format
+msgid ""
+"%s/%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s/%s 㯠%s ãããªã¯ã¨ã¹ããåãä»ãã¦ãã¾ãã\n"
+"\t%s\n"
+
+#: berkeley/lpq.c:545
+#, c-format
msgid "%s: %-33.33s [job %d localhost]\n"
-msgstr "%sï¼%-33.33s [ã¸ã§ã %d localhost]\n"
+msgstr "%s:%-33.33s [ã¸ã§ã %d localhost]\n"
+
+#: systemv/cancel.c:303 systemv/cancel.c:367
+#, c-format
msgid "%s: %s failed: %s\n"
-msgstr "%sï¼%s ã失æãã¾ããï¼%s\n"
+msgstr "%s: %s ã«å¤±æãã¾ãã: %s\n"
+
+#: systemv/cupsaccept.c:73
+#, c-format
msgid "%s: Don't know what to do!\n"
-msgstr "%sï¼å¯¾å¦æ¹æ³ãä¸æã§ãï¼\n"
+msgstr "%s: ä½ãèµ·ãã¦ãããä¸æã§ã!\n"
+
+#: berkeley/lpr.c:356 systemv/lp.c:603
+#, c-format
msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "%sï¼ã¨ã©ã¼ - %s ç°å¢å¤æ°åã«åå¨ããªãéä¿¡å
â%sâãæå®ããã¦ãã¾ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - ç°å¢å¤æ° %s ãåå¨ããªãå®å
\"%s\" ãæãã¦ãã¾ã!\n"
+
+#: systemv/lp.c:240
+#, c-format
msgid "%s: Error - bad job ID!\n"
-msgstr "%sï¼ã¨ã©ã¼ - ã¸ã§ã ID ãæ£ããããã¾ããï¼\n"
+msgstr "%s: ã¨ã©ã¼ - ä¸æ£ãªã¸ã§ã ID ã§ã!\n"
+
+#: systemv/lp.c:227
+#, c-format
msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
-msgstr "%sï¼ã¨ã©ã¼ - ãã¡ã¤ã«ã®ããªã³ãã¨ã¸ã§ãã®å¤æ´ãåæã«ãããã¨ã¯ã§ãã¾ããï¼\n"
+msgstr "%s: ã¨ã©ã¼ - ãã¡ã¤ã«ãå°å·ã§ãããã¸ã§ããåæã«å¤ãããã¨ãã§ãã¾ãã!\n"
+
+#: systemv/lp.c:523
+#, c-format
msgid "%s: Error - cannot print from stdin if files or a job ID are provided!\n"
-msgstr "%sï¼ã¨ã©ã¼ - ãã¡ã¤ã«ã¾ãã¯ã¸ã§ã ID ã渡ãããå ´å㯠stdin ããããªã³ãã§ãã¾ããï¼\n"
+msgstr "%s: ã¨ã©ã¼ - ãã¡ã¤ã«ã¾ãã¯ã¸ã§ã ID ãæä¾ããã¦ããå ´åãæ¨æºå
¥åããå°å·ã§ãã¾ããã \n"
+
+#: systemv/lp.c:477
+#, c-format
msgid "%s: Error - expected character set after '-S' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-Sâãªãã·ã§ã³ã®å¾ã«æåã»ãããå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-S' ãªãã·ã§ã³ã®ãã¨ã«ã¯æåã»ãããå¿
è¦ã§ã!\n"
+
+#: systemv/lp.c:497
+#, c-format
msgid "%s: Error - expected content type after '-T' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-Tâãªãã·ã§ã³ã®å¾ã«ã³ã³ãã³ãã¿ã¤ããå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-T' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã³ã³ãã³ãã¿ã¤ããå¿
è¦ã§ã!\n"
+
+#: systemv/lp.c:273
+#, c-format
msgid "%s: Error - expected copies after '-n' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-nâãªãã·ã§ã³ã®å¾ã«é¨æ°ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-n' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã³ãã¼æ°ãå¿
è¦ã§ã!\n"
+
+#: berkeley/lpr.c:251
+#, c-format
msgid "%s: Error - expected copy count after '-#' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-#âãªãã·ã§ã³ã®å¾ã«é¨æ°ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-#' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã³ãã¼æ°ãå¿
è¦ã§ã!\n"
+
+#: berkeley/lpr.c:219
+#, c-format
msgid "%s: Error - expected destination after '-P' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-Pâãªãã·ã§ã³ã®å¾ã«éä¿¡å
ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-P' ãªãã·ã§ã³ã®ãã¨ã«ã¯å®å
ãå¿
è¦ã§ã!\n"
+
+#: systemv/lpstat.c:238
+#, c-format
msgid "%s: Error - expected destination after '-b' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-bâãªãã·ã§ã³ã®å¾ã«éä¿¡å
ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-b' ãªãã·ã§ã³ã®ãã¨ã«å®å
ãå¿
è¦ã§ã!\n"
+
+#: systemv/lp.c:145
+#, c-format
msgid "%s: Error - expected destination after '-d' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-dâãªãã·ã§ã³ã®å¾ã«éä¿¡å
ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-d' ãªãã·ã§ã³ã®ãã¨ã«ã¯ããªã³ã¿ã¼åãå¿
è¦ã§ã!\n"
+
+#: systemv/lp.c:175
+#, c-format
msgid "%s: Error - expected form after '-f' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-fâãªãã·ã§ã³ã®å¾ã«ãã©ã¼ã ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-f' ãªãã·ã§ã³ã®ãã¨ã«ã¯ç¨ç´åãå¿
è¦ã§ã!\n"
+
+#: systemv/lp.c:404
+#, c-format
msgid "%s: Error - expected hold name after '-H' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-Hâãªãã·ã§ã³ã®å¾ã«ä¿çãªã¹ãã®ååãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-H' ãªãã·ã§ã³ã®ãã¨ã«ã¯ãã¼ã«ãåãå¿
è¦ã§ã!\n"
+
+#: berkeley/lpr.c:111
+#, c-format
msgid "%s: Error - expected hostname after '-H' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-Hâãªãã·ã§ã³ã®å¾ã«ãã¹ãåãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-H' ãªãã·ã§ã³ã®ãã¨ã«ã¯ãã¹ãåãå¿
è¦ã§ã!\n"
+
+#: berkeley/lpq.c:188 berkeley/lprm.c:130 systemv/cancel.c:130
+#: systemv/cupsaccept.c:131 systemv/lp.c:196 systemv/lpstat.c:298
+#, c-format
msgid "%s: Error - expected hostname after '-h' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-hâãªãã·ã§ã³ã®å¾ã«ãã¹ãåãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-h' ãªãã·ã§ã³ã®ãã¨ã«ã¯ãã¹ãåãå¿
è¦ã§ã!\n"
+
+#: systemv/lp.c:382
+#, c-format
msgid "%s: Error - expected mode list after '-y' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-yâãªãã·ã§ã³ã®å¾ã«ã¢ã¼ããªã¹ããå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-y' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã¢ã¼ããªã¹ããå¿
è¦ã§ã!\n"
+
+#: berkeley/lpr.c:275
+#, c-format
msgid "%s: Error - expected name after '-%c' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-%câãªãã·ã§ã³ã®å¾ã«ååãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-%c' ãªãã·ã§ã³ã®ãã¨ã«ã¯ååãå¿
è¦ã§ã!\n"
+
+#: systemv/lp.c:296
+#, c-format
msgid "%s: Error - expected option string after '-o' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-oâãªãã·ã§ã³ã®å¾ã«ãªãã·ã§ã³æååãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-o' ãªãã·ã§ã³ã®ãã¨ã«ã¯æååãå¿
è¦ã§ã!\n"
+
+#: systemv/lp.c:456
+#, c-format
msgid "%s: Error - expected page list after '-P' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-Pâãªãã·ã§ã³ã®å¾ã«ãã¼ã¸ãªã¹ããå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-P' ãªãã·ã§ã³ã®ãã¨ã«ã¯ãã¼ã¸ãªã¹ããå¿
è¦ã§ã!\n"
+
+#: systemv/lp.c:317
+#, c-format
msgid "%s: Error - expected priority after '-%c' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-%câãªãã·ã§ã³ã®å¾ã«åªå
é ä½ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-%c' ãªãã·ã§ã³ã®ãã¨ã«ã¯åªå
度ãå¿
è¦ã§ã!\n"
+
+#: systemv/cupsaccept.c:150
+#, c-format
msgid "%s: Error - expected reason text after '-r' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-râãªãã·ã§ã³ã®å¾ã«çç±ããã¹ããå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-r' ã®ãã¨ã«ã¯çç±ã®ããã¹ããå¿
è¦ã§ã!\n"
+
+#: systemv/lp.c:364
+#, c-format
msgid "%s: Error - expected title after '-t' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-tâãªãã·ã§ã³ã®å¾ã«ã¿ã¤ãã«ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-t' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã¿ã¤ãã«ãå¿
è¦ã§ã!\n"
+
+#: berkeley/lpq.c:117 berkeley/lpr.c:91 berkeley/lprm.c:110
+#: systemv/cancel.c:99 systemv/cupsaccept.c:108 systemv/lp.c:122
+#: systemv/lpadmin.c:471 systemv/lpstat.c:144
+#, c-format
msgid "%s: Error - expected username after '-U' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-Uâãªãã·ã§ã³ã®å¾ã«ã¦ã¼ã¶åãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-U' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã¦ã¼ã¶åãå¿
è¦ã§ã!\n"
+
+#: systemv/cancel.c:152
+#, c-format
msgid "%s: Error - expected username after '-u' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-uâãªãã·ã§ã³ã®å¾ã«ã¦ã¼ã¶åãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-u' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã¦ã¼ã¶åãå¿
è¦ã§ã!\n"
+
+#: berkeley/lpr.c:134
+#, c-format
msgid "%s: Error - expected value after '-%c' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-%câãªãã·ã§ã³ã®å¾ã«å¤ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-%c' ãªãã·ã§ã³ã®ãã¨ã«ã¯å¤ãå¿
è¦ã§ã!\n"
+
+#: systemv/lpstat.c:164 systemv/lpstat.c:178
+#, c-format
msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-Wâãªãã·ã§ã³ã®å¾ã«âcompletedâãânot-completedâãã¾ãã¯âallâãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-W' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã\"completed\"ã\"not-completed\"ã\"all\" ã®ãããããå¿
è¦ã§ã!\n"
+
+#: berkeley/lpr.c:361 systemv/lp.c:608
+#, c-format
msgid "%s: Error - no default destination available.\n"
-msgstr "%sï¼ã¨ã©ã¼ - å©ç¨ã§ããããã©ã«ãéä¿¡å
ãããã¾ããã\n"
+msgstr "%s: ã¨ã©ã¼ - å©ç¨å¯è½ãªããã©ã«ãã®å®å
ãããã¾ããã\n"
+
+#: systemv/lp.c:340
+#, c-format
msgid "%s: Error - priority must be between 1 and 100.\n"
-msgstr "%sï¼ã¨ã©ã¼ - åªå
é ä½ã¯ 1 ã 100 ã§ãªããã°ãªãã¾ããã\n"
+msgstr "%s: ã¨ã©ã¼ - åªå
度㯠1 ãã 100 ã®éã§ããå¿
è¦ãããã¾ãã\n"
+
+#: berkeley/lpr.c:365 systemv/lp.c:612
+#, c-format
msgid "%s: Error - scheduler not responding!\n"
-msgstr "%sï¼ã¨ã©ã¼ - ã¹ã±ã¸ã¥ã¼ã©ãå¿çãã¾ããï¼\n"
+msgstr "%s: ã¨ã©ã¼ - ã¹ã±ã¸ã¥ã¼ã©ãå¿çãã¦ãã¾ãã!\n"
+
+#: berkeley/lpr.c:317 systemv/lp.c:556
+#, c-format
msgid "%s: Error - too many files - \"%s\"\n"
-msgstr "%sï¼ã¨ã©ã¼ - ãã¡ã¤ã«ãå¤ããã¾ã - â%sâ\n"
+msgstr "%s: ã¨ã©ã¼ - ãã¡ã¤ã«ãå¤ããã¾ã - \"%s\"\n"
+
+#: berkeley/lpr.c:299 systemv/lp.c:539
+#, c-format
msgid "%s: Error - unable to access \"%s\" - %s\n"
-msgstr "%sï¼ã¨ã©ã¼ - â%sâã«ã¢ã¯ã»ã¹ã§ãã¾ãã - %s\n"
+msgstr "%s: ã¨ã©ã¼ - \"%s\" ã«ã¢ã¯ã»ã¹ã§ãã¾ãã - %s\n"
+
+#: berkeley/lpr.c:410 systemv/lp.c:645
+#, c-format
msgid "%s: Error - unable to queue from stdin - %s\n"
-msgstr "%sï¼ã¨ã©ã¼ - stdin ãããã¥ã¼ã«å
¥ãããã¨ã¯ã§ãã¾ãã - %s\n"
+msgstr "%s: ã¨ã©ã¼ - æ¨æºå
¥åãããã¥ã¼ã«ãã¼ã¿ãå
¥åã§ãã¾ãã! - %s\n"
+
+#: berkeley/lprm.c:93 berkeley/lprm.c:182 systemv/cancel.c:222
+#, c-format
msgid "%s: Error - unknown destination \"%s\"!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â%sâã¯ä¸æãªéä¿¡å
ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - \"%s\" ã¯æªç¥ã®å®å
ã§ã!\n"
+
+#: berkeley/lpq.c:157
+#, c-format
msgid "%s: Error - unknown destination \"%s/%s\"!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â%s/%sâã¯ä¸æãªéä¿¡å
ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - \"%s/%s\" ã¯æªç¥ã®å®å
ã§ã!\n"
+
+#: berkeley/lpr.c:286 berkeley/lprm.c:148 systemv/cancel.c:164
+#: systemv/cupsaccept.c:174 systemv/lp.c:514 systemv/lpstat.c:459
+#, c-format
msgid "%s: Error - unknown option '%c'!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-%câã¯ä¸æãªãªãã·ã§ã³ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '%c' ã¯æªç¥ã®ãªãã·ã§ã³ã§ã!\n"
+
+#: systemv/cupsaccept.c:167
+#, c-format
msgid "%s: Error - unknown option '%s'!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-%sâã¯ä¸æãªãªãã·ã§ã³ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '%s' ã¯æªç¥ã®ãªãã·ã§ã³ã§ã!\n"
+
+#: systemv/lp.c:216
+#, c-format
msgid "%s: Expected job ID after '-i' option!\n"
-msgstr "%sï¼â-iâãªãã·ã§ã³ã®å¾ã«ã¸ã§ã ID ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: '-i' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã¸ã§ã ID ãå¿
è¦ã§ã!\n"
+
+#: scheduler/cupsfilter.c:540
+#, c-format
msgid "%s: Filter \"%s\" not available: %s\n"
-msgstr "%s: ãã£ã«ã¿â%sâã¯å©ç¨ã§ãã¾ããï¼%s\n"
+msgstr "%s: ãã£ã«ã¿ \"%s\" ã¯å©ç¨ã§ãã¾ãã: %s\n"
+
+#: systemv/lpstat.c:511 systemv/lpstat.c:550
+#, c-format
msgid "%s: Invalid destination name in list \"%s\"!\n"
-msgstr "%sï¼ãªã¹ãâ%sâã«ç¡å¹ãªéä¿¡å
åãããã¾ãï¼\n"
+msgstr "%s: ãªã¹ã \"%s\" ã«ç¡å¹ãªå®å
åãããã¾ã!\n"
+
+#: scheduler/cupsfilter.c:521
+#, c-format
msgid "%s: Invalid filter string \"%s\"\n"
-msgstr "%sï¼â%sâã¯ç¡å¹ãªãã£ã«ã¿æååã§ã\n"
+msgstr "%s: ç¡å¹ãªãã£ã«ã¿æååã§ã \"%s\"\n"
+
+#: systemv/lp.c:432
+#, c-format
msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
-msgstr "%sï¼â-H restartâã®åã«ã¸ã§ã IDï¼â-i jobidâï¼ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: '-H restart' ã®åã«ã¯ã¸ã§ã ID ('-i ã¸ã§ãID') ãå¿
è¦ã§ã!\n"
+
+#: scheduler/cupsfilter.c:436
+#, c-format
msgid "%s: No filter to convert from %s/%s to %s/%s!\n"
-msgstr "%sï¼%s/%s ãã %s/%s ã«å¤æãããã£ã«ã¿ã¯ããã¾ããï¼\n"
+msgstr "%s: %s/%s ãã %s/%s ã«å¤æãããã£ã«ã¿ãããã¾ãã!\n"
+
+#: systemv/cupsaccept.c:208
+#, c-format
msgid "%s: Operation failed: %s\n"
-msgstr "%sï¼æä½ã失æãã¾ããï¼%s\n"
+msgstr "%s: æä½ã«å¤±æãã¾ãã: %s\n"
+
+#: berkeley/lpq.c:103 berkeley/lpr.c:77 berkeley/lprm.c:72 systemv/cancel.c:85
+#: systemv/cupsaccept.c:94 systemv/cupsaddsmb.c:91 systemv/lp.c:108
+#: systemv/lpadmin.c:277 systemv/lpinfo.c:94 systemv/lpmove.c:79
+#: systemv/lpstat.c:109
+#, c-format
msgid "%s: Sorry, no encryption support compiled in!\n"
-msgstr "%sï¼æå·åãµãã¼ããã³ã³ãã¤ã«ããã¦ãã¾ããï¼\n"
+msgstr "%s: ãã¿ã¾ãããæå·åãµãã¼ãã¯ã³ã³ãã¤ã«æã«çµã¿è¾¼ã¾ãã¦ãã¾ãã!\n"
+
+#: berkeley/lpq.c:304 scheduler/cupsfilter.c:1073 systemv/cupsaddsmb.c:149
+#: systemv/cupsaddsmb.c:175
+#, c-format
msgid "%s: Unable to connect to server\n"
-msgstr "%sï¼ãµã¼ãã«æ¥ç¶ã§ãã¾ãã\n"
+msgstr "%s: ãµã¼ãã¼ã«æ¥ç¶ã§ãã¾ãã\n"
+
+#: systemv/cancel.c:245 systemv/cancel.c:326
+#, c-format
msgid "%s: Unable to contact server!\n"
-msgstr "%sï¼ãµã¼ãã«æ¥ç¶ã§ãã¾ããï¼\n"
+msgstr "%s: ãµã¼ãã¼ã«é£çµ¡ã§ãã¾ãã!\n"
+
+#: scheduler/cupsfilter.c:404
+#, c-format
msgid "%s: Unable to determine MIME type of \"%s\"!\n"
-msgstr "%sï¼â%sâã® MIME ã¿ã¤ããå¤æã§ãã¾ããï¼\n"
+msgstr "%s: \"%s\" ã® MIME ã¿ã¤ããå¤å¥ã§ãã¾ãã!\n"
+
+#: ppdc/ppdmerge.cxx:99
+#, c-format
msgid "%s: Unable to open %s - %s\n"
-msgstr "%sï¼%s ãéãã¾ãã - %s\n"
+msgstr "%s: %s ãéãã¾ãã - %s\n"
+
+#: ppdc/ppdmerge.cxx:113
+#, c-format
msgid "%s: Unable to open %s - %s on line %d.\n"
-msgstr "%sï¼%s ãéãã¾ãã - %sãè¡ %d\n"
+msgstr "%s: %s ãéãã¾ããã- %s ã® %d è¡ç®ã\n"
+
+#: ppdc/ppdc-file.cxx:50
+#, c-format
msgid "%s: Unable to open %s: %s\n"
-msgstr "%sï¼%s ãéãã¾ããï¼%s\n"
+msgstr "%s: %sãéãã¾ãã: %s\n"
+
+#: scheduler/cupsfilter.c:583
+#, c-format
msgid "%s: Unable to open PPD file: %s on line %d\n"
-msgstr "%sï¼PPD ãã¡ã¤ã«ãéãã¾ããï¼%sãè¡ %d\n"
+msgstr "%s: PPD ãã¡ã¤ã«ãéãã¾ãã: %s ã® %d è¡ç®\n"
+
+#: scheduler/cupsfilter.c:377
+#, c-format
msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"!\n"
-msgstr "%sï¼â%sâã¾ãã¯â%sâãã MIME ãã¼ã¿ãã¼ã¹ãèªã¿åãã¾ããï¼\n"
+msgstr "%s: \"%s\" ã¾ã㯠\"%s\" ãã MIME ãã¼ã¿ãã¼ã¹ãèªã¿åããã¨ãã§ãã¾ãã!\n"
+
+#: berkeley/lpq.c:161 systemv/lpstat.c:565
+#, c-format
msgid "%s: Unknown destination \"%s\"!\n"
-msgstr "%sï¼â%sâã¯ä¸æãªéä¿¡å
ã§ãï¼\n"
+msgstr "%s: \"%s\" ã¯æªç¥ã®å®å
ã§ã!\n"
+
+#: scheduler/cupsfilter.c:415
+#, c-format
msgid "%s: Unknown destination MIME type %s/%s!\n"
-msgstr "%sï¼%s/%s ã¯ä¸æãªéä¿¡å
MIME ã¿ã¤ãã§ãï¼\n"
+msgstr "%s: %s/%s ã¯æªç¥ã®å®å
MIME ã¿ã¤ãã§ã!\n"
+
+#: scheduler/cupsfilter.c:1281
+#, c-format
msgid "%s: Unknown option '%c'!\n"
-msgstr "%sï¼â-%câã¯ä¸æãªãªãã·ã§ã³ã§ãï¼\n"
+msgstr "%s: '%c' ã¯æªç¥ã®ãªãã·ã§ã³ã§ã!\n"
+
+#: scheduler/cupsfilter.c:396
+#, c-format
msgid "%s: Unknown source MIME type %s/%s!\n"
-msgstr "%sï¼%s/%s ã¯ä¸æãªéä¿¡å
MIME ã¿ã¤ãã§ãï¼\n"
+msgstr "%s: %s/%s ã¯æªç¥ã®ã½ã¼ã¹ MIME ã¿ã¤ãã§ã!\n"
+
+#: berkeley/lpr.c:148
+#, c-format
msgid "%s: Warning - '%c' format modifier not supported - output may not be correct!\n"
-msgstr "%sï¼è¦å - '%c' ãã©ã¼ããã修飾åã«ã¯å¯¾å¿ãã¦ãã¾ãã - åºåãæ£ãããªãå¯è½æ§ãããã¾ãï¼\n"
+msgstr "%s: è¦å - '%c' å½¢å¼ä¿®é£¾åã¯ãµãã¼ãããã¦ãã¾ãã - åºåã¯æ£ãããªããã®ã«ãªãããããã¾ãã!\n"
+
+#: systemv/lp.c:485
+#, c-format
msgid "%s: Warning - character set option ignored!\n"
-msgstr "%sï¼è¦å - æåã»ãããªãã·ã§ã³ã¯ç¡è¦ããã¾ããï¼\n"
+msgstr "%s: è¦å - æåã»ãããªãã·ã§ã³ã¯ç¡è¦ããã¾ã!\n"
+
+#: systemv/lp.c:505
+#, c-format
msgid "%s: Warning - content type option ignored!\n"
-msgstr "%sï¼è¦å - ã³ã³ãã³ãã»ã¿ã¤ãã»ãªãã·ã§ã³ã¯ç¡è¦ããã¾ããï¼\n"
+msgstr "%s: è¦å - ã³ã³ãã³ãã¿ã¤ããªãã·ã§ã³ã¯ç¡è¦ããã¾ã!\n"
+
+#: systemv/lp.c:182
+#, c-format
msgid "%s: Warning - form option ignored!\n"
-msgstr "%sï¼è¦å - ãã©ã¼ã ãªãã·ã§ã³ã¯ç¡è¦ããã¾ããï¼\n"
+msgstr "%s: è¦å - ç¨ç´ãªãã·ã§ã³ã¯ç¡è¦ããã¾ã!\n"
+
+#: systemv/lp.c:390
+#, c-format
msgid "%s: Warning - mode option ignored!\n"
-msgstr "%sï¼è¦å - ã¢ã¼ããªãã·ã§ã³ã¯ç¡è¦ããã¾ããï¼\n"
+msgstr "%s: è¦å - ã¢ã¼ããªãã·ã§ã³ã¯ç¡è¦ããã¾ã!\n"
+
+#: berkeley/lpq.c:245
+#, c-format
msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "%sï¼ã¨ã©ã¼ - %s ç°å¢å¤æ°åã«åå¨ããªãéä¿¡å
â%sâãæå®ããã¦ãã¾ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - ç°å¢å¤æ° %s ãåå¨ããªãå®å
\"%s\" ãæãã¦ãã¾ã!\n"
+
+#: berkeley/lpr.c:162
+#, c-format
msgid "%s: error - expected option=value after '-o' option!\n"
-msgstr "%sï¼ã¨ã©ã¼ - â-oâãªãã·ã§ã³ã®å¾ã« option=value ãå¿
è¦ã§ãï¼\n"
+msgstr "%s: ã¨ã©ã¼ - '-o' ãªãã·ã§ã³ã®ãã¨ã«ã¯ ãªãã·ã§ã³=å¤ ãå¿
è¦ã§ã!\n"
+
+#: berkeley/lpq.c:250
+#, c-format
msgid "%s: error - no default destination available.\n"
-msgstr "%sï¼ã¨ã©ã¼ - å©ç¨ã§ããããã©ã«ãéä¿¡å
ãããã¾ããã\n"
+msgstr "%s: ã¨ã©ã¼ - å©ç¨å¯è½ãªããã©ã«ãã®å®å
ãããã¾ããã\n"
+
+#: ppdc/sample.c:282
msgid "-1"
msgstr "-1"
+
+#: ppdc/sample.c:273
msgid "-10"
msgstr "-10"
+
+#: ppdc/sample.c:365
msgid "-100"
msgstr "-100"
+
+#: ppdc/sample.c:364
msgid "-105"
msgstr "-105"
+
+#: ppdc/sample.c:272
msgid "-11"
msgstr "-11"
+
+#: ppdc/sample.c:363
msgid "-110"
msgstr "-110"
+
+#: ppdc/sample.c:362
msgid "-115"
msgstr "-115"
+
+#: ppdc/sample.c:271
msgid "-12"
msgstr "-12"
+
+#: ppdc/sample.c:361
msgid "-120"
msgstr "-120"
+
+#: ppdc/sample.c:270
msgid "-13"
msgstr "-13"
+
+#: ppdc/sample.c:269
msgid "-14"
msgstr "-14"
+
+#: ppdc/sample.c:268
msgid "-15"
msgstr "-15"
+
+#: ppdc/sample.c:281
msgid "-2"
msgstr "-2"
+
+#: ppdc/sample.c:381
msgid "-20"
msgstr "-20"
+
+#: ppdc/sample.c:380
msgid "-25"
msgstr "-25"
+
+#: ppdc/sample.c:280
msgid "-3"
msgstr "-3"
+
+#: ppdc/sample.c:379
msgid "-30"
msgstr "-30"
+
+#: ppdc/sample.c:378
msgid "-35"
msgstr "-35"
+
+#: ppdc/sample.c:279
msgid "-4"
msgstr "-4"
+
+#: ppdc/sample.c:377
msgid "-40"
msgstr "-40"
+
+#: ppdc/sample.c:376
msgid "-45"
msgstr "-45"
+
+#: ppdc/sample.c:278
msgid "-5"
msgstr "-5"
+
+#: ppdc/sample.c:375
msgid "-50"
msgstr "-50"
+
+#: ppdc/sample.c:374
msgid "-55"
msgstr "-55"
+
+#: ppdc/sample.c:277
msgid "-6"
msgstr "-6"
+
+#: ppdc/sample.c:373
msgid "-60"
msgstr "-60"
+
+#: ppdc/sample.c:372
msgid "-65"
msgstr "-65"
+
+#: ppdc/sample.c:276
msgid "-7"
msgstr "-7"
+
+#: ppdc/sample.c:371
msgid "-70"
msgstr "-70"
+
+#: ppdc/sample.c:370
msgid "-75"
msgstr "-75"
+
+#: ppdc/sample.c:275
msgid "-8"
msgstr "-8"
+
+#: ppdc/sample.c:369
msgid "-80"
msgstr "-80"
+
+#: ppdc/sample.c:368
msgid "-85"
msgstr "-85"
+
+#: ppdc/sample.c:274
msgid "-9"
msgstr "-9"
+
+#: ppdc/sample.c:367
msgid "-90"
msgstr "-90"
+
+#: ppdc/sample.c:366
msgid "-95"
msgstr "-95"
+
+#: ppdc/sample.c:283
msgid "0"
msgstr "0"
+
+#: ppdc/sample.c:284
msgid "1"
msgstr "1"
+
+#: ppdc/sample.c:356
msgid "1 inch/sec."
-msgstr "1 ã¤ã³ãï¼ç§"
+msgstr "1 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:144
msgid "1.25x0.25\""
-msgstr "1.25 x 0.25\""
+msgstr "1.25x0.25ã¤ã³ã"
+
+#: ppdc/sample.c:145
msgid "1.25x2.25\""
-msgstr "1.25 x 2.25\""
+msgstr "1.25x2.25ã¤ã³ã"
+
+#: ppdc/sample.c:404
msgid "1.5 inch/sec."
-msgstr "1.5 ã¤ã³ãï¼ç§"
+msgstr "1.5 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:146
msgid "1.50x0.25\""
-msgstr "1.50 x 0.25\""
+msgstr "1.50x0.25ã¤ã³ã"
+
+#: ppdc/sample.c:147
msgid "1.50x0.50\""
-msgstr "1.50 x 0.50\""
+msgstr "1.50x0.50ã¤ã³ã"
+
+#: ppdc/sample.c:148
msgid "1.50x1.00\""
-msgstr "1.50 x 1.00\""
+msgstr "1.50x1.00ã¤ã³ã"
+
+#: ppdc/sample.c:149
msgid "1.50x2.00\""
-msgstr "1.50 x 2.00\""
+msgstr "1.50x2.00ã¤ã³ã"
+
+#: ppdc/sample.c:293
msgid "10"
msgstr "10"
+
+#: ppdc/sample.c:415
msgid "10 inches/sec."
-msgstr "10 ã¤ã³ãï¼ç§"
+msgstr "10 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:1
msgid "10 x 11\""
-msgstr "10 x 11\""
+msgstr "10 x 11ã¤ã³ã"
+
+#: ppdc/sample.c:2
msgid "10 x 13\""
-msgstr "10 x 13\""
+msgstr "10 x 13ã¤ã³ã"
+
+#: ppdc/sample.c:3
msgid "10 x 14\""
-msgstr "10 x 14\""
+msgstr "10 x 14ã¤ã³ã"
+
+#: ppdc/sample.c:395
msgid "100"
msgstr "100"
+
+#: ppdc/sample.c:306
msgid "100 mm/sec."
-msgstr "100 mmï¼ç§"
+msgstr "100 ããªã¡ã¼ãã«/ç§"
+
+#: ppdc/sample.c:396
msgid "105"
msgstr "105"
+
+#: ppdc/sample.c:294
msgid "11"
msgstr "11"
+
+#: ppdc/sample.c:416
msgid "11 inches/sec."
-msgstr "11 ã¤ã³ãï¼ç§"
+msgstr "11 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:397
msgid "110"
msgstr "110"
+
+#: ppdc/sample.c:398
msgid "115"
msgstr "115"
+
+#: ppdc/sample.c:295
msgid "12"
msgstr "12"
+
+#: ppdc/sample.c:417
msgid "12 inches/sec."
-msgstr "12 ã¤ã³ãï¼ç§"
+msgstr "12 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:4
msgid "12 x 11\""
-msgstr "12 x 11\""
+msgstr "12 x 11ã¤ã³ã"
+
+#: ppdc/sample.c:399
msgid "120"
msgstr "120"
+
+#: ppdc/sample.c:307
msgid "120 mm/sec."
-msgstr "120 mmï¼ç§"
+msgstr "120 ããªã¡ã¼ãã«/ç§"
+
+#: ppdc/sample.c:215
msgid "120x60dpi"
-msgstr "120 x 60 dpi"
+msgstr "120x60dpi"
+
+#: ppdc/sample.c:221
msgid "120x72dpi"
-msgstr "120 x 72 dpi"
+msgstr "120x72dpi"
+
+#: ppdc/sample.c:296
msgid "13"
msgstr "13"
+
+#: ppdc/sample.c:204
msgid "136dpi"
-msgstr "136 dpi"
+msgstr "136dpi"
+
+#: ppdc/sample.c:297
msgid "14"
msgstr "14"
+
+#: ppdc/sample.c:298
msgid "15"
msgstr "15"
+
+#: ppdc/sample.c:300
msgid "15 mm/sec."
-msgstr "15 mmï¼ç§"
+msgstr "15 ããªã¡ã¼ãã«/ç§"
+
+#: ppdc/sample.c:5
msgid "15 x 11\""
-msgstr "15 x 11\""
+msgstr "15 x 11ã¤ã³ã"
+
+#: ppdc/sample.c:308
msgid "150 mm/sec."
-msgstr "150 mmï¼ç§"
+msgstr "150 ããªã¡ã¼ãã«/ç§"
+
+#: ppdc/sample.c:254
msgid "150dpi"
-msgstr "150 dpi"
+msgstr "150dpi"
+
+#: ppdc/sample.c:340
msgid "16"
msgstr "16"
+
+#: ppdc/sample.c:341
msgid "17"
msgstr "17"
+
+#: ppdc/sample.c:342
msgid "18"
msgstr "18"
+
+#: ppdc/sample.c:216
msgid "180dpi"
-msgstr "180 dpi"
+msgstr "180dpi"
+
+#: ppdc/sample.c:343
msgid "19"
msgstr "19"
+
+#: ppdc/sample.c:285
msgid "2"
msgstr "2"
+
+#: ppdc/sample.c:357
msgid "2 inches/sec."
-msgstr "2 ã¤ã³ãï¼ç§"
+msgstr "2 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:242
msgid "2-Sided Printing"
msgstr "両é¢å°å·"
+
+#: ppdc/sample.c:150
msgid "2.00x0.37\""
-msgstr "2.00 x 0.37\""
+msgstr "2.00x0.37ã¤ã³ã"
+
+#: ppdc/sample.c:151
msgid "2.00x0.50\""
-msgstr "2.00 x 0.50\""
+msgstr "2.00x0.50ã¤ã³ã"
+
+#: ppdc/sample.c:152
msgid "2.00x1.00\""
-msgstr "2.00 x 1.00\""
+msgstr "2.00x1.00ã¤ã³ã"
+
+#: ppdc/sample.c:153
msgid "2.00x1.25\""
-msgstr "2.00 x 1.25\""
+msgstr "2.00x1.25ã¤ã³ã"
+
+#: ppdc/sample.c:154
msgid "2.00x2.00\""
-msgstr "2.00 x 2.00\""
+msgstr "2.00x2.00ã¤ã³ã"
+
+#: ppdc/sample.c:155
msgid "2.00x3.00\""
-msgstr "2.00 x 3.00\""
+msgstr "2.00x3.00ã¤ã³ã"
+
+#: ppdc/sample.c:156
msgid "2.00x4.00\""
-msgstr "2.00 x 4.00\""
+msgstr "2.00x4.00ã¤ã³ã"
+
+#: ppdc/sample.c:157
msgid "2.00x5.50\""
-msgstr "2.00 x 5.50\""
+msgstr "2.00x5.50ã¤ã³ã"
+
+#: ppdc/sample.c:158
msgid "2.25x0.50\""
-msgstr "2.25 x 0.50\""
+msgstr "2.25x0.50ã¤ã³ã"
+
+#: ppdc/sample.c:159
msgid "2.25x1.25\""
-msgstr "2.25 x 1.50\""
+msgstr "2.25x1.25ã¤ã³ã"
+
+#: ppdc/sample.c:160
msgid "2.25x4.00\""
-msgstr "2.25 x 4.00\""
+msgstr "2.25x4.00ã¤ã³ã"
+
+#: ppdc/sample.c:161
msgid "2.25x5.50\""
-msgstr "2.25 x 5.50\""
+msgstr "2.25x5.50ã¤ã³ã"
+
+#: ppdc/sample.c:162
msgid "2.38x5.50\""
-msgstr "2.38 x 5.50\""
+msgstr "2.38x5.50ã¤ã³ã"
+
+#: ppdc/sample.c:405
msgid "2.5 inches/sec."
-msgstr "2.5 ã¤ã³ãï¼ç§"
+msgstr "2.5 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:163
msgid "2.50x1.00\""
-msgstr "2.50 x 1.00\""
+msgstr "2.50x1.00ã¤ã³ã"
+
+#: ppdc/sample.c:164
msgid "2.50x2.00\""
-msgstr "2.50 x 2.00\""
+msgstr "2.50x2.00ã¤ã³ã"
+
+#: ppdc/sample.c:165
msgid "2.75x1.25\""
-msgstr "2.75 x 1.25\""
+msgstr "2.75x1.25ã¤ã³ã"
+
+#: ppdc/sample.c:166
msgid "2.9 x 1\""
-msgstr "2.9 x 1\""
+msgstr "2.9 x 1ã¤ã³ã"
+
+#: ppdc/sample.c:344
msgid "20"
msgstr "20"
+
+#: ppdc/sample.c:301
msgid "20 mm/sec."
-msgstr "20 mmï¼ç§"
+msgstr "20 ããªã¡ã¼ãã«/ç§"
+
+#: ppdc/sample.c:309
msgid "200 mm/sec."
-msgstr "200 mmï¼ç§"
+msgstr "200 ããªã¡ã¼ãã«/ç§"
+
+#: ppdc/sample.c:205
msgid "203dpi"
-msgstr "203 dpi"
+msgstr "203dpi"
+
+#: ppdc/sample.c:345
msgid "21"
msgstr "21"
+
+#: ppdc/sample.c:346
msgid "22"
msgstr "22"
+
+#: ppdc/sample.c:347
msgid "23"
msgstr "23"
+
+#: ppdc/sample.c:348
msgid "24"
msgstr "24"
+
+#: ppdc/sample.c:213
msgid "24-Pin Series"
-msgstr "24 ãã³ã·ãªã¼ãº"
+msgstr "24ãã³ã·ãªã¼ãº"
+
+#: ppdc/sample.c:222
msgid "240x72dpi"
-msgstr "240 x 72 dpi"
+msgstr "240x72dpi"
+
+#: ppdc/sample.c:349
msgid "25"
msgstr "25"
+
+#: ppdc/sample.c:310
msgid "250 mm/sec."
-msgstr "250 mmï¼ç§"
+msgstr "250 ããªã¡ã¼ãã«/ç§"
+
+#: ppdc/sample.c:350
msgid "26"
msgstr "26"
+
+#: ppdc/sample.c:351
msgid "27"
msgstr "27"
+
+#: ppdc/sample.c:352
msgid "28"
msgstr "28"
+
+#: ppdc/sample.c:353
msgid "29"
msgstr "29"
+
+#: ppdc/sample.c:286
msgid "3"
msgstr "3"
+
+#: ppdc/sample.c:358
msgid "3 inches/sec."
-msgstr "3 ã¤ã³ãï¼ç§"
+msgstr "3 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:167
msgid "3.00x1.00\""
-msgstr "3.00 x 1.00\""
+msgstr "3.00x1.00ã¤ã³ã"
+
+#: ppdc/sample.c:168
msgid "3.00x1.25\""
-msgstr "3.00 x 1.25\""
+msgstr "3.00x1.25ã¤ã³ã"
+
+#: ppdc/sample.c:169
msgid "3.00x2.00\""
-msgstr "3.00 x 2.00\""
+msgstr "3.00x2.00ã¤ã³ã"
+
+#: ppdc/sample.c:170
msgid "3.00x3.00\""
-msgstr "3.00 x 3.00\""
+msgstr "3.00x3.00ã¤ã³ã"
+
+#: ppdc/sample.c:171
msgid "3.00x5.00\""
-msgstr "3.00 x 5.00\""
+msgstr "3.00x5.00ã¤ã³ã"
+
+#: ppdc/sample.c:172
msgid "3.25x2.00\""
-msgstr "3.25 x 2.00\""
+msgstr "3.25x2.00ã¤ã³ã"
+
+#: ppdc/sample.c:173
msgid "3.25x5.00\""
-msgstr "3.25 x 5.00\""
+msgstr "3.25x5.00ã¤ã³ã"
+
+#: ppdc/sample.c:174
msgid "3.25x5.50\""
-msgstr "3.25 x 5.50\""
+msgstr "3.25x5.50ã¤ã³ã"
+
+#: ppdc/sample.c:175
msgid "3.25x5.83\""
-msgstr "3.25 x 5.83\""
+msgstr "3.25x5.83ã¤ã³ã"
+
+#: ppdc/sample.c:176
msgid "3.25x7.83\""
-msgstr "3.25 x 7.83\""
+msgstr "3.25x7.83ã¤ã³ã"
+
+#: ppdc/sample.c:134
msgid "3.5\" Disk"
-msgstr "3.5\" ãã£ã¹ã¯"
+msgstr "3.5 ã¤ã³ãDisk"
+
+#: ppdc/sample.c:143
msgid "3.5\" Disk - 2 1/8 x 2 3/4\""
-msgstr "3.5\" ãã£ã¹ã¯ - 2 1/8 x 2 3/4\""
+msgstr "3.5ã¤ã³ã Disk - 2 1/8 x 2 3/4ã¤ã³ã"
+
+#: ppdc/sample.c:177
msgid "3.50x1.00\""
-msgstr "3.50 x 1.00\""
+msgstr "3.50x1.00ã¤ã³ã"
+
+#: ppdc/sample.c:354
msgid "30"
msgstr "30"
+
+#: ppdc/sample.c:302
msgid "30 mm/sec."
-msgstr "30 mmï¼ç§"
+msgstr "30 ããªã¡ã¼ãã«/ç§"
+
+#: ppdc/sample.c:311
msgid "300 mm/sec."
-msgstr "300 mmï¼ç§"
+msgstr "300 ããªã¡ã¼ãã«/ç§"
+
+#: ppdc/sample.c:206
msgid "300dpi"
-msgstr "300 dpi"
+msgstr "300dpi"
+
+#: ppdc/sample.c:382
msgid "35"
msgstr "35"
+
+#: ppdc/sample.c:218
msgid "360dpi"
-msgstr "360 dpi"
+msgstr "360dpi"
+
+#: ppdc/sample.c:217
msgid "360x180dpi"
-msgstr "360 x 180 dpi"
+msgstr "360x180dpi"
+
+#: ppdc/sample.c:287
msgid "4"
msgstr "4"
+
+#: ppdc/sample.c:359
msgid "4 inches/sec."
-msgstr "4 ã¤ã³ãï¼ç§"
+msgstr "4 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:178
msgid "4.00x1.00\""
-msgstr "4.00 x 1.00\""
+msgstr "4.00x1.00ã¤ã³ã"
+
+#: ppdc/sample.c:186
msgid "4.00x13.00\""
-msgstr "4.00 x 13.00\""
+msgstr "4.00x13.00ã¤ã³ã"
+
+#: ppdc/sample.c:179
msgid "4.00x2.00\""
-msgstr "4.00 x 2.00\""
+msgstr "4.00x2.00ã¤ã³ã"
+
+#: ppdc/sample.c:180
msgid "4.00x2.50\""
-msgstr "4.00 x 2.50\""
+msgstr "4.00x2.50ã¤ã³ã"
+
+#: ppdc/sample.c:181
msgid "4.00x3.00\""
-msgstr "4.00 x 3.00\""
+msgstr "4.00x3.00ã¤ã³ã"
+
+#: ppdc/sample.c:182
msgid "4.00x4.00\""
-msgstr "4.00 x 4.00\""
+msgstr "4.00x4.00ã¤ã³ã"
+
+#: ppdc/sample.c:183
msgid "4.00x5.00\""
-msgstr "4.00 x 5.00\""
+msgstr "4.00x5.00ã¤ã³ã"
+
+#: ppdc/sample.c:184
msgid "4.00x6.00\""
-msgstr "4.00 x 6.00\""
+msgstr "4.00x6.00ã¤ã³ã"
+
+#: ppdc/sample.c:185
msgid "4.00x6.50\""
-msgstr "4.00 x 6.50\""
+msgstr "4.00x6.50ã¤ã³ã"
+
+#: ppdc/sample.c:383
msgid "40"
msgstr "40"
+
+#: ppdc/sample.c:303
msgid "40 mm/sec."
-msgstr "40 mmï¼ç§"
+msgstr "40 ããªã¡ã¼ãã«/ç§"
+
+#: ppdc/sample.c:384
msgid "45"
msgstr "45"
+
+#: ppdc/sample.c:288
msgid "5"
msgstr "5"
+
+#: ppdc/sample.c:409
msgid "5 inches/sec."
-msgstr "5 ã¤ã³ãï¼ç§"
+msgstr "5 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:385
msgid "50"
msgstr "50"
+
+#: ppdc/sample.c:386
msgid "55"
msgstr "55"
+
+#: ppdc/sample.c:289
msgid "6"
msgstr "6"
+
+#: ppdc/sample.c:410
msgid "6 inches/sec."
-msgstr "6 ã¤ã³ãï¼ç§"
+msgstr "6 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:187
msgid "6.00x1.00\""
-msgstr "6.00 x 1.00\""
+msgstr "6.00x1.00\""
+
+#: ppdc/sample.c:188
msgid "6.00x2.00\""
-msgstr "6.00 x 2.00\""
+msgstr "6.00x2.00\""
+
+#: ppdc/sample.c:189
msgid "6.00x3.00\""
-msgstr "6.00 x 3.00\""
+msgstr "6.00x3.00\""
+
+#: ppdc/sample.c:190
msgid "6.00x4.00\""
-msgstr "6.00 x 4.00\""
+msgstr "6.00x4.00\""
+
+#: ppdc/sample.c:191
msgid "6.00x5.00\""
-msgstr "6.00 x 5.00\""
+msgstr "6.00x5.00\""
+
+#: ppdc/sample.c:192
msgid "6.00x6.00\""
-msgstr "6.00 x 6.00\""
+msgstr "6.00x6.00\""
+
+#: ppdc/sample.c:193
msgid "6.00x6.50\""
-msgstr "6.00 x 6.50\""
+msgstr "6.00x6.50\""
+
+#: ppdc/sample.c:387
msgid "60"
msgstr "60"
+
+#: ppdc/sample.c:304
msgid "60 mm/sec."
-msgstr "60 mmï¼ç§"
+msgstr "60 mm/ç§"
+
+#: ppdc/sample.c:255
msgid "600 DPI Grayscale"
-msgstr "600 DPI ã°ã¬ã¤ã¹ã±ã¼ã«"
+msgstr "600 DPI ã°ã¬ã¼ã¹ã±ã¼ã«"
+
+#: ppdc/sample.c:233
msgid "600dpi"
-msgstr "600 dpi"
+msgstr "600dpi"
+
+#: ppdc/sample.c:214
msgid "60dpi"
-msgstr "60 dpi"
+msgstr "60dpi"
+
+#: ppdc/sample.c:220
msgid "60x720dpi"
-msgstr "60 x 720 dpi"
+msgstr "60x720dpi"
+
+#: ppdc/sample.c:388
msgid "65"
msgstr "65"
+
+#: ppdc/sample.c:290
msgid "7"
msgstr "7"
+
+#: ppdc/sample.c:412
msgid "7 inches/sec."
-msgstr "7 ã¤ã³ãï¼ç§"
+msgstr "7 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:6
msgid "7 x 9\""
msgstr "7 x 9\""
+
+#: ppdc/sample.c:389
msgid "70"
msgstr "70"
+
+#: ppdc/sample.c:224
msgid "720dpi"
-msgstr "720 dpi"
+msgstr "720dpi"
+
+#: ppdc/sample.c:390
msgid "75"
msgstr "75"
+
+#: ppdc/sample.c:291
msgid "8"
msgstr "8"
+
+#: ppdc/sample.c:413
msgid "8 inches/sec."
-msgstr "8 ã¤ã³ãï¼ç§"
+msgstr "8 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:7
msgid "8 x 10\""
msgstr "8 x 10\""
+
+#: ppdc/sample.c:194
msgid "8.00x1.00\""
-msgstr "8.00 x 1.00\""
+msgstr "8.00x1.00\""
+
+#: ppdc/sample.c:195
msgid "8.00x2.00\""
-msgstr "8.00 x 2.00\""
+msgstr "8.00x2.00\""
+
+#: ppdc/sample.c:196
msgid "8.00x3.00\""
-msgstr "8.00 x 3.00\""
+msgstr "8.00x3.00\""
+
+#: ppdc/sample.c:197
msgid "8.00x4.00\""
-msgstr "8.00 x 4.00\""
+msgstr "8.00x4.00\""
+
+#: ppdc/sample.c:198
msgid "8.00x5.00\""
-msgstr "8.00 x 5.00\""
+msgstr "8.00x5.00\""
+
+#: ppdc/sample.c:199
msgid "8.00x6.00\""
-msgstr "8.00 x 6.00\""
+msgstr "8.00x6.00\""
+
+#: ppdc/sample.c:200
msgid "8.00x6.50\""
-msgstr "8.00 x 6.50\""
+msgstr "8.00x6.50\""
+
+#: ppdc/sample.c:391
msgid "80"
msgstr "80"
+
+#: ppdc/sample.c:305
msgid "80 mm/sec."
-msgstr "80 mmï¼ç§"
+msgstr "80 mm/ç§"
+
+#: ppdc/sample.c:392
msgid "85"
msgstr "85"
+
+#: ppdc/sample.c:292
msgid "9"
msgstr "9"
+
+#: ppdc/sample.c:414
msgid "9 inches/sec."
-msgstr "9 ã¤ã³ãï¼ç§"
+msgstr "9 ã¤ã³ã/ç§"
+
+#: ppdc/sample.c:8
msgid "9 x 11\""
msgstr "9 x 11\""
+
+#: ppdc/sample.c:9
msgid "9 x 12\""
msgstr "9 x 12\""
+
+#: ppdc/sample.c:219
msgid "9-Pin Series"
-msgstr "9 ãã³ã·ãªã¼ãº"
+msgstr "9-Pin Series"
+
+#: ppdc/sample.c:393
msgid "90"
msgstr "90"
+
+#: ppdc/sample.c:394
msgid "95"
msgstr "95"
+
+#: berkeley/lpc.c:218
msgid "?Invalid help command unknown\n"
-msgstr "?ç¡å¹ãªãã«ãã³ãã³ã ä¸æ\n"
+msgstr "?ç¡å¹ãªãã«ãã³ãã³ãã§ã\n"
+
+#: cgi-bin/admin.c:2331
msgid "A Samba password is required to export printer drivers!"
-msgstr "ããªã³ã¿ãã©ã¤ããæ¸ãåºãã«ã¯ Samba ãã¹ã¯ã¼ããå¿
è¦ã§ãï¼"
+msgstr "ããªã³ã¿ã¼ãã©ã¤ãã¼ãã¨ã¯ã¹ãã¼ãããã«ã¯ Samba ã®ãã¹ã¯ã¼ããå¿
è¦ã§ã!"
+
+#: cgi-bin/admin.c:2327
msgid "A Samba username is required to export printer drivers!"
-msgstr "ããªã³ã¿ãã©ã¤ããæ¸ãåºãã«ã¯ Samba ã¦ã¼ã¶åãå¿
è¦ã§ãï¼"
+msgstr "ããªã³ã¿ã¼ãã©ã¤ãã¼ãã¨ã¯ã¹ãã¼ãããã«ã¯ãSamba ã®ã¦ã¼ã¶ã¼åãå¿
è¦ã§ã!"
+
+#: scheduler/ipp.c:2378
+#, c-format
msgid "A class named \"%s\" already exists!"
-msgstr "â%sâã¨ããååã®ã¯ã©ã¹ã¯ãã§ã«åå¨ãã¾ãï¼"
+msgstr "\"%s\" ã¨ããååã®ã¯ã©ã¹ã¯ãã§ã«åå¨ãã¾ã!"
+
+#: scheduler/ipp.c:1001
+#, c-format
msgid "A printer named \"%s\" already exists!"
-msgstr "â%sâã¨ããååã®ããªã³ã¿ã¯ãã§ã«åå¨ãã¾ãï¼"
+msgstr "\"%s\" ã¨ããååã®ããªã³ã¿ã¼ã¯ãã§ã«åå¨ãã¾ã!"
+
+#: ppdc/sample.c:10
msgid "A0"
msgstr "A0"
+
+#: ppdc/sample.c:11
msgid "A1"
msgstr "A1"
+
+#: ppdc/sample.c:24
msgid "A10"
msgstr "A10"
+
+#: ppdc/sample.c:12
msgid "A2"
msgstr "A2"
+
+#: ppdc/sample.c:13
msgid "A3"
msgstr "A3"
+
+#: ppdc/sample.c:14
msgid "A3 (Oversize)"
-msgstr "A3ï¼ç¹å¤§ï¼"
+msgstr "A3 (ç¹å¤§)"
+
+#: ppdc/sample.c:15
msgid "A4"
msgstr "A4"
+
+#: ppdc/sample.c:16
msgid "A4 (Oversize)"
-msgstr "A4ï¼ç¹å¤§ï¼"
+msgstr "A4 (ç¹å¤§)"
+
+#: ppdc/sample.c:17
msgid "A4 (Small)"
-msgstr "A4ï¼å°ï¼"
+msgstr "A4 (å°)"
+
+#: ppdc/sample.c:18
msgid "A5"
msgstr "A5"
+
+#: ppdc/sample.c:19
msgid "A5 (Oversize)"
-msgstr "A5ï¼ç¹å¤§ï¼"
+msgstr "A5 (ç¹å¤§)"
+
+#: ppdc/sample.c:20
msgid "A6"
msgstr "A6"
+
+#: ppdc/sample.c:21
msgid "A7"
msgstr "A7"
+
+#: ppdc/sample.c:22
msgid "A8"
msgstr "A8"
+
+#: ppdc/sample.c:23
msgid "A9"
msgstr "A9"
+
+#: ppdc/sample.c:25
msgid "ANSI A"
msgstr "ANSI A"
+
+#: ppdc/sample.c:26
msgid "ANSI B"
msgstr "ANSI B"
+
+#: ppdc/sample.c:27
msgid "ANSI C"
msgstr "ANSI C"
+
+#: ppdc/sample.c:28
msgid "ANSI D"
msgstr "ANSI D"
+
+#: ppdc/sample.c:29
msgid "ANSI E"
msgstr "ANSI E"
+
+#: ppdc/sample.c:30
msgid "ARCH A"
msgstr "ARCH A"
+
+#: ppdc/sample.c:31
msgid "ARCH B"
msgstr "ARCH B"
+
+#: ppdc/sample.c:32
msgid "ARCH C"
msgstr "ARCH C"
+
+#: ppdc/sample.c:33
msgid "ARCH D"
msgstr "ARCH D"
+
+#: ppdc/sample.c:34
msgid "ARCH E"
msgstr "ARCH E"
+
+#: cgi-bin/classes.c:154 cgi-bin/printers.c:157
msgid "Accept Jobs"
-msgstr "ã¸ã§ããåãå
¥ãã"
+msgstr "ã¸ã§ãã®åãä»ã"
+
+#: cups/http-support.c:1194
msgid "Accepted"
-msgstr "åãå
¥ãæ¸ã¿"
+msgstr "åãä»ãã¾ãã"
+
+#: cgi-bin/admin.c:480
msgid "Add Class"
-msgstr "ã¯ã©ã¹ã追å "
+msgstr "ã¯ã©ã¹ã®è¿½å "
+
+#: cgi-bin/admin.c:772
msgid "Add Printer"
-msgstr "ããªã³ã¿ã追å "
+msgstr "ããªã³ã¿ã¼ã®è¿½å "
+
+#: cgi-bin/admin.c:355 cgi-bin/admin.c:388 cgi-bin/admin.c:436
+#: cgi-bin/admin.c:446
msgid "Add RSS Subscription"
-msgstr "RSS ç
§ä¼å
ã追å "
+msgstr "RSS è³¼èªã追å "
+
+#: ppdc/sample.c:126
msgid "Address"
-msgstr "ä½æ"
+msgstr "ã¢ãã¬ã¹"
+
+#: ppdc/sample.c:135
msgid "Address - 1 1/8 x 3 1/2\""
-msgstr "ä½æ - 1 1/8 x 3 1/2\""
+msgstr "ã¢ãã¬ã¹ - 1 1/8 x 3 1/2\""
+
+#: cgi-bin/admin.c:187 cgi-bin/admin.c:218 cgi-bin/admin.c:2749
msgid "Administration"
msgstr "管ç"
+
+#: ppdc/sample.c:401
msgid "Always"
-msgstr "常ã«"
+msgstr "常ã«æå¹"
+
+#: backend/socket.c:126
msgid "AppSocket/HP JetDirect"
-msgstr "AppSocketï¼HP JetDirect"
+msgstr "AppSocket/HP JetDirect"
+
+#: ppdc/sample.c:422
msgid "Applicator"
-msgstr "ã¢ããªã±ã¼ã¿"
+msgstr "ã¢ããªã±ã¼ã¿ã¼"
+
+#: scheduler/ipp.c:1123
+#, c-format
msgid "Attempt to set %s printer-state to bad value %d!"
-msgstr "%s printer-state ã«ä¸æ£ãªå¤ %d ãè¨å®ãããã¨ãã¦ãã¾ãï¼"
+msgstr "%s printer-state ã« ä¸æ£ãªå¤ %d ãè¨å®ãããã¨ãã¦ãã¾ã!"
+
+#: scheduler/ipp.c:331
+#, c-format
msgid "Attribute groups are out of order (%x < %x)!"
-msgstr "å±æ§ã°ã«ã¼ãã®é åºãæ£ããããã¾ããï¼%x ï¼ %xï¼ï¼"
+msgstr "å±æ§ã°ã«ã¼ãã¯ç¯å²å¤ã§ã (%x < %x)!"
+
+#: ppdc/sample.c:35
msgid "B0"
msgstr "B0"
+
+#: ppdc/sample.c:37
msgid "B1"
msgstr "B1"
+
+#: ppdc/sample.c:36
msgid "B10"
msgstr "B10"
+
+#: ppdc/sample.c:38
msgid "B2"
msgstr "B2"
+
+#: ppdc/sample.c:39
msgid "B3"
msgstr "B3"
+
+#: ppdc/sample.c:40
msgid "B4"
msgstr "B4"
+
+#: ppdc/sample.c:41
msgid "B5"
msgstr "B5"
+
+#: ppdc/sample.c:42
msgid "B6"
msgstr "B6"
+
+#: ppdc/sample.c:43
msgid "B7"
msgstr "B7"
+
+#: ppdc/sample.c:44
msgid "B8"
msgstr "B8"
+
+#: ppdc/sample.c:45
msgid "B9"
msgstr "B9"
+
+#: cups/dest.c:317
msgid "Bad NULL dests pointer"
-msgstr "NULL éä¿¡å
ãµã¼ããã¤ã³ã¿ã¯æ£ããããã¾ãã"
+msgstr "ä¸æ£ãª NULL éä¿¡å
ãã¤ã³ã¿ã¼"
+
+#: cups/ppd.c:341
msgid "Bad OpenGroup"
-msgstr "OpenGroup ãæ£ããããã¾ãã"
+msgstr "ä¸æ£ãª OpenGroup"
+
+#: cups/ppd.c:343
msgid "Bad OpenUI/JCLOpenUI"
-msgstr "OpenUI/JCLOpenUI ãæ£ããããã¾ãã"
+msgstr "ä¸æ£ãª OpenUI/JCLOpenUI"
+
+#: cups/ppd.c:345
msgid "Bad OrderDependency"
-msgstr "OrderDependency ãæ£ããããã¾ãã"
+msgstr "ä¸æ£ãª OrderDependency"
+
+#: cups/http-support.c:1209
msgid "Bad Request"
-msgstr "Request ãæ£ããããã¾ãã"
+msgstr "ä¸æ£ãªãªã¯ã¨ã¹ã"
+
+#: cups/snmp.c:1001
msgid "Bad SNMP version number"
-msgstr "SNMP ãã¼ã¸ã§ã³çªå·ãæ£ããããã¾ãã"
+msgstr "ä¸æ£ãª SNMP ãã¼ã¸ã§ã³çªå·"
+
+#: cups/ppd.c:346
msgid "Bad UIConstraints"
-msgstr "UIConstraints ãæ£ããããã¾ãã"
+msgstr "ä¸æ£ãª UIConstraints"
+
+#: scheduler/ipp.c:1423
+#, c-format
msgid "Bad copies value %d."
-msgstr "é¨æ°å¤ %d ãæ£ããããã¾ããã"
+msgstr "%d ã¯ä¸æ£ãªã³ãã¼å¤ã§ãã"
+
+#: cups/ppd.c:354
msgid "Bad custom parameter"
-msgstr "ã«ã¹ã¿ã ãã©ã¡ã¼ã¿ãæ£ããããã¾ãã"
+msgstr "ä¸æ£ãªã«ã¹ã¿ã ãã©ã¡ã¼ã¿ã¼"
+
+#: cups/http-support.c:1333
+#, c-format
msgid "Bad device URI \"%s\"!\n"
-msgstr "ããã¤ã¹ URI â%sâãæ£ããããã¾ããï¼\n"
+msgstr "\"%s\" ã¯ç¡å¹ãªããã¤ã¹ URI ã§ã!\n"
+
+#: scheduler/ipp.c:2496
+#, c-format
msgid "Bad device-uri \"%s\"!"
-msgstr "device-uri â%sâãæ£ããããã¾ããï¼"
+msgstr "\"%s\" ã¯ç¡å¹ãª device-uri ã§ã!"
+
+#: scheduler/ipp.c:2536
+#, c-format
msgid "Bad device-uri scheme \"%s\"!"
-msgstr "device-uri ã¹ãã¼ã â%sâãæ£ããããã¾ããï¼"
+msgstr "\"%s\" ã¯ç¡å¹ãª device-uri ã¹ãã¼ãã§ã!"
+
+#: scheduler/ipp.c:9887 scheduler/ipp.c:11362
+#, c-format
msgid "Bad document-format \"%s\"!"
-msgstr "document-format â%sâãæ£ããããã¾ããï¼"
+msgstr "\"%s\" ã¯ä¸æ£ãª document-format ã§ã!"
+
+#: cups/util.c:936
msgid "Bad filename buffer!"
-msgstr "ãã¡ã¤ã«åãããã¡ãæ£ããããã¾ããï¼"
+msgstr "ä¸æ£ãªãã¡ã¤ã«åãããã¡ã¼ã§ã!"
+
+#: ppdc/ppdc-import.cxx:230
+#, c-format
msgid "Bad font attribute: %s\n"
-msgstr "ãã©ã³ãå±æ§ãæ£ããããã¾ããï¼%s\n"
+msgstr "ä¸æ£ãªãã©ã³ãå±æ§: %s\n"
+
+#: scheduler/ipp.c:10482
msgid "Bad job-priority value!"
-msgstr "job-priority å¤ãæ£ããããã¾ããï¼"
+msgstr "ä¸æ£ãª job-priority å¤ã§ã!"
+
+#: scheduler/ipp.c:1453
+#, c-format
msgid "Bad job-sheets value \"%s\"!"
-msgstr "job-sheets å¤â%sâãæ£ããããã¾ããï¼"
+msgstr "\"%s\" ã¯ä¸æ£ãª job-sheets å¤ã§ã!"
+
+#: scheduler/ipp.c:1437
msgid "Bad job-sheets value type!"
-msgstr "job-sheets å¤ã¿ã¤ããæ£ããããã¾ããï¼"
+msgstr "ä¸æ£ãª job-sheets å¤ã¿ã¤ã ã§ã!"
+
+#: scheduler/ipp.c:10512
msgid "Bad job-state value!"
-msgstr "job-state å¤ãæ£ããããã¾ããï¼"
+msgstr "ä¸æ£ãª job-state å¤ã§ã!"
+
+#: scheduler/ipp.c:3656 scheduler/ipp.c:4017 scheduler/ipp.c:6622
+#: scheduler/ipp.c:6764 scheduler/ipp.c:8034 scheduler/ipp.c:8315
+#: scheduler/ipp.c:9158 scheduler/ipp.c:9383 scheduler/ipp.c:9800
+#: scheduler/ipp.c:10375
+#, c-format
msgid "Bad job-uri attribute \"%s\"!"
-msgstr "job-uri å±æ§â%sâãæ£ããããã¾ããï¼"
+msgstr "\"%s\" ã¯ç¡å¹ãª job-uri å±æ§ã§ã!"
+
+#: scheduler/ipp.c:2117 scheduler/ipp.c:6169
+#, c-format
msgid "Bad notify-pull-method \"%s\"!"
-msgstr "notify-pull-method â%sâãæ£ããããã¾ããï¼"
+msgstr "\"%s\" ã¯ç¡å¹ãª notify-pull-method ã§ã!"
+
+#: scheduler/ipp.c:2081 scheduler/ipp.c:6133
+#, c-format
msgid "Bad notify-recipient-uri URI \"%s\"!"
-msgstr "notify-recipient-uri URI â%sâãæ£ããããã¾ããï¼"
+msgstr "URI \"%s\" ã¯ä¸æ£ãª notify-recipient-uri ã§ã!"
+
+#: scheduler/ipp.c:1469
+#, c-format
msgid "Bad number-up value %d."
-msgstr "number-up å¤ %d ãæ£ããããã¾ããã"
+msgstr "%d ã¯ä¸æ£ãª number-up å¤ã§ãã"
+
+#: cups/adminutil.c:303
+#, c-format
msgid "Bad option + choice on line %d!"
-msgstr "è¡ %d ã®ãªãã·ã§ã³ã¨é¸æãæ£ããããã¾ããï¼"
+msgstr "%d è¡ã«ä¸æ£ãªãªãã·ã§ã³ã¨é¸æãããã¾ã!"
+
+#: scheduler/ipp.c:1486
+#, c-format
msgid "Bad page-ranges values %d-%d."
-msgstr "page-ranges å¤ %d ã %d ãæ£ããããã¾ããã"
+msgstr "%d-%d ã¯ä¸æ£ãª page-ranges å¤ã§ãã"
+
+#: scheduler/ipp.c:2580
+#, c-format
msgid "Bad port-monitor \"%s\"!"
-msgstr "port-monitor â%sâãæ£ããããã¾ããï¼"
+msgstr "\"%s\" ã¯ç¡å¹ãª port-monitor ã§ã!"
+
+#: scheduler/ipp.c:2628
+#, c-format
msgid "Bad printer-state value %d!"
-msgstr "printer-state å¤ %d ãæ£ããããã¾ããï¼"
+msgstr "%d ã¯ç¡å¹ãª printer-state å¤ã§ã!"
+
+#: scheduler/ipp.c:298
+#, c-format
msgid "Bad request version number %d.%d!"
-msgstr "è¦æ±ãã¼ã¸ã§ã³çªå· %d.%d ãæ£ããããã¾ããï¼"
+msgstr "ãã¼ã¸ã§ã³çªå· %d.%d ã¯ç¡å¹ãªãªã¯ã¨ã¹ãã§ã!"
+
+#: cgi-bin/admin.c:1377
msgid "Bad subscription ID!"
-msgstr "ç
§ä¼å
ID ãæ£ããããã¾ããï¼"
+msgstr "ä¸æ£ãªãµãã¹ã¯ãªãã·ã§ã³ ID ã§ã!"
+
+#: cgi-bin/admin.c:3289 cgi-bin/admin.c:3512
msgid "Banners"
msgstr "ããã¼"
+
+#: filter/bannertops.c:662
msgid "Billing Information: "
-msgstr "è«æ±æ
å ±ï¼"
+msgstr "課éæ
å ±: "
+
+#: ppdc/sample.c:259
msgid "Bond Paper"
msgstr "ãã³ãç´"
+
+#: ppdc/sample.c:56
msgid "C0 Envelope"
-msgstr "C0 å°ç"
+msgstr "C0 Envelope"
+
+#: ppdc/sample.c:57
msgid "C1 Envelope"
-msgstr "C1 å°ç"
+msgstr "C1 Envelope"
+
+#: ppdc/sample.c:58
msgid "C2 Envelope"
-msgstr "C2 å°ç"
+msgstr "C2 Envelope"
+
+#: ppdc/sample.c:59
msgid "C3 Envelope"
-msgstr "C3 å°ç"
+msgstr "C3 Envelope"
+
+#: ppdc/sample.c:46
msgid "C4"
msgstr "C4"
+
+#: ppdc/sample.c:60
msgid "C4 Envelope"
-msgstr "C4 å°ç"
+msgstr "C4 Envelope"
+
+#: ppdc/sample.c:47
msgid "C5"
msgstr "C5"
+
+#: ppdc/sample.c:61
msgid "C5 Envelope"
-msgstr "C5 å°ç"
+msgstr "C5 Envelope"
+
+#: ppdc/sample.c:48
msgid "C6"
msgstr "C6"
+
+#: ppdc/sample.c:63
msgid "C6 Envelope"
-msgstr "C6 å°ç"
+msgstr "C6 Envelope"
+
+#: ppdc/sample.c:62
msgid "C65 Envelope"
-msgstr "C65 å°ç"
+msgstr "C65 Envelope"
+
+#: ppdc/sample.c:64
msgid "C7 Envelope"
-msgstr "C7 å°ç"
+msgstr "C7 Envelope"
+
+#: ppdc/sample.c:226
msgid "CMYK"
msgstr "CMYK"
+
+#: ppdc/sample.c:335
msgid "CPCL Label Printer"
-msgstr "CPCL ã©ãã«ããªã³ã¿"
+msgstr "CPCL Label Printer"
+
+#: cgi-bin/admin.c:1378 cgi-bin/admin.c:1417 cgi-bin/admin.c:1427
msgid "Cancel RSS Subscription"
-msgstr "RSS ç
§ä¼å
ããã£ã³ã»ã«"
+msgstr "RSS è³¼èªããã£ã³ã»ã«"
+
+#: cgi-bin/admin.c:1596 cgi-bin/admin.c:1760 cgi-bin/admin.c:1772
+#: cgi-bin/admin.c:1783
msgid "Change Settings"
-msgstr "è¨å®ãå¤æ´"
+msgstr "è¨å®ã®å¤æ´"
+
+#: scheduler/ipp.c:2129 scheduler/ipp.c:6181
+#, c-format
msgid "Character set \"%s\" not supported!"
-msgstr "æåã»ããâ%sâã«ã¯å¯¾å¿ãã¦ãã¾ããï¼"
+msgstr "æåã»ãã \"%s\" ã¯ãµãã¼ãããã¦ãã¾ãã!"
+
+#: ppdc/sample.c:65
msgid "Chou3 Envelope"
-msgstr "é· 3 å°ç"
+msgstr "å°ç é·å½¢ï¼å·"
+
+#: ppdc/sample.c:66
msgid "Chou4 Envelope"
-msgstr "é· 4 å°ç"
+msgstr "å°ç é·å½¢ï¼å·"
+
+#: cgi-bin/classes.c:180 cgi-bin/classes.c:307
msgid "Classes"
msgstr "ã¯ã©ã¹"
+
+#: cgi-bin/printers.c:167
msgid "Clean Print Heads"
-msgstr "å°åããããæ¸
æ"
+msgstr "ããªã³ããããã¯ãªã¼ãã³ã°"
+
+#: ppdc/sample.c:253
msgid "Color"
msgstr "ã«ã©ã¼"
+
+#: ppdc/sample.c:225
msgid "Color Mode"
msgstr "ã«ã©ã¼ã¢ã¼ã"
-msgid "Commands may be abbreviated. Commands are:\n\nexit help quit status ?\n"
-msgstr "ã³ãã³ãã¯ç縮形ã§ããã¾ãã¾ãããã³ãã³ãï¼\n\nexit help quit status ?\n"
+
+#: berkeley/lpc.c:209
+msgid ""
+"Commands may be abbreviated. Commands are:\n"
+"\n"
+"exit help quit status ?\n"
+msgstr ""
+"ã³ãã³ãã¯ç縮ã§ãã¾ãã ã³ãã³ã:\n"
+"\n"
+"exit help quit status ?\n"
+
+#: cups/snmp.c:1005
msgid "Community name uses indefinite length"
-msgstr "ã³ãã¥ããã£åã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "ã³ãã¥ããã£åã®é·ããä¸å®"
+
+#: cups/http-support.c:1182
msgid "Continue"
-msgstr "ç¶ãã"
+msgstr "ç¶ç¶"
+
+#: ppdc/sample.c:337
msgid "Continuous"
msgstr "é£ç¶"
+
+#: scheduler/ipp.c:8608 scheduler/ipp.c:8624 scheduler/ipp.c:9903
+#, c-format
msgid "Could not scan type \"%s\"!"
-msgstr "ã¿ã¤ãâ%sâãã¹ãã£ã³ã§ãã¾ããã§ããï¼"
+msgstr "ã¿ã¤ã \"%s\" ãæ¤æ»ã§ãã¾ããã§ãã!"
+
+#: backend/ipp.c:1668
msgid "Cover open."
msgstr "ã«ãã¼ãéãã¦ãã¾ãã"
+
+#: cups/http-support.c:1191
msgid "Created"
-msgstr "ä½ææ¸ã¿"
+msgstr "ã¸ã§ãä½æ"
+
+#: filter/bannertops.c:850
msgid "Created On: "
-msgstr "ä½ææ¥æï¼"
+msgstr "ã¸ã§ãä½ææ¥: "
+
+#: cups/ppd.c:1068 cups/ppd.c:1108 cups/ppd.c:1322 cups/ppd.c:1425
msgid "Custom"
msgstr "ã«ã¹ã¿ã "
+
+#: ppdc/sample.c:331
msgid "CustominCutInterval"
msgstr "CustominCutInterval"
+
+#: ppdc/sample.c:329
msgid "CustominTearInterval"
msgstr "CustominTearInterval"
+
+#: ppdc/sample.c:315
msgid "Cut"
msgstr "ã«ãã"
+
+#: ppdc/sample.c:423
msgid "Cutter"
msgstr "ã«ãã¿ã¼"
+
+#: ppdc/sample.c:49
msgid "DL"
msgstr "DL"
+
+#: ppdc/sample.c:67
msgid "DL Envelope"
-msgstr "DL å°ç"
+msgstr "DL Envelope"
+
+#: ppdc/sample.c:211
msgid "Dark"
msgstr "æ¿ã"
+
+#: ppdc/sample.c:207
msgid "Darkness"
msgstr "æ¿ã"
+
+#: cgi-bin/admin.c:2056 cgi-bin/admin.c:2067 cgi-bin/admin.c:2112
msgid "Delete Class"
-msgstr "ã¯ã©ã¹ãåé¤"
+msgstr "ã¯ã©ã¹ã®åé¤"
+
+#: cgi-bin/admin.c:2141 cgi-bin/admin.c:2152 cgi-bin/admin.c:2197
msgid "Delete Printer"
-msgstr "ããªã³ã¿ãåé¤"
+msgstr "ããªã³ã¿ã¼ã®åé¤"
+
+#: filter/bannertops.c:731
msgid "Description: "
-msgstr "説æï¼"
+msgstr "説æ: "
+
+#: ppdc/sample.c:252
msgid "DeskJet Series"
-msgstr "DeskJet ã·ãªã¼ãº"
+msgstr "DeskJet Series"
+
+#: scheduler/ipp.c:1389
+#, c-format
msgid "Destination \"%s\" is not accepting jobs."
-msgstr "éä¿¡å
â%sâãã¸ã§ããåãå
¥ãã¾ããã"
+msgstr "å®å
\"%s\" ã¯ã¸ã§ããåãä»ãã¦ãã¾ããã"
+
+#: backend/ipp.c:1702
msgid "Developer almost empty."
-msgstr "ç¾å液ããããã空ã«ãªãã¾ãã"
+msgstr "ç¾åå¤ãç¡ããªãããã¦ãã¾ãã"
+
+#: backend/ipp.c:1704
msgid "Developer empty!"
-msgstr "ç¾å液ã空ã§ãï¼"
-msgid "Device: uri = %s\n class = %s\n info = %s\n make-and-model = %s\n device-id = %s\n location = %s\n"
-msgstr "ããã¤ã¹ï¼uri = %s\n class = %s\n info = %s\n make-and-model = %s\n device-id = %s\n location = %s\n"
+msgstr "ç¾åå¤ãç¡ããªãã¾ãã!"
+
+#: systemv/lpinfo.c:305
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+" class = %s\n"
+" info = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+" location = %s\n"
+msgstr ""
+"ããã¤ã¹: uri = %s\n"
+" class = %s\n"
+" info = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+" location = %s\n"
+
+#: ppdc/sample.c:408
msgid "Direct Thermal Media"
-msgstr "ç´æ¥æç±ã¡ãã£ã¢"
+msgstr "æç±ç´"
+
+#: ppdc/sample.c:317
msgid "Disabled"
msgstr "ç¡å¹"
+
+#: scheduler/ipp.c:6669
+#, c-format
msgid "Document %d not found in job %d."
-msgstr "æ¸é¡ %d ãã¸ã§ã %d å
ã§è¦ã¤ããã¾ããã§ããã"
+msgstr "ããã¥ã¡ã³ã %d ãã¸ã§ã %d ã«è¦ã¤ããã¾ããã"
+
+#: backend/ipp.c:1672
msgid "Door open."
msgstr "ãã¢ãéãã¦ãã¾ãã"
+
+#: ppdc/sample.c:50
msgid "Double Postcard"
msgstr "å¾å¾©ã¯ãã"
+
+#: filter/bannertops.c:816
msgid "Driver Name: "
-msgstr "ãã©ã¤ãåï¼"
+msgstr "ãã©ã¤ãã¼å: "
+
+#: filter/bannertops.c:827
msgid "Driver Version: "
-msgstr "ãã©ã¤ãã®ãã¼ã¸ã§ã³ï¼"
+msgstr "ãã©ã¤ãã¼ãã¼ã¸ã§ã³: "
+
+#: ppdc/sample.c:247
msgid "Duplexer"
-msgstr "両é¢å°å·æ©æ§"
+msgstr "両é¢ãªãã·ã§ã³"
+
+#: ppdc/sample.c:201
msgid "Dymo"
msgstr "Dymo"
+
+#: filter/pstops.c:443
+#, c-format
msgid "EMERG: Unable to allocate memory for page info: %s\n"
-msgstr "EMERG: ãã¼ã¸æ
å ±ã«ã¡ã¢ãªãå²ãå½ã¦ããã¨ãã§ãã¾ããï¼%s\n"
+msgstr "EMERG: ãã¼ã¸æ
å ±ã®ã¡ã¢ãªã¼å²ãå½ã¦ãã§ãã¾ãã: %s\n"
+
+#: filter/pstops.c:436
+#, c-format
msgid "EMERG: Unable to allocate memory for pages array: %s\n"
-msgstr "EMERG: ãã¼ã¸é
åã«ã¡ã¢ãªãå²ãå½ã¦ããã¨ãã§ãã¾ããï¼%s\n"
+msgstr "EMERG: ãã¼ã¸ã¢ã¬ã¤ã®ã¡ã¢ãªã¼å²ãå½ã¦ãã§ãã¾ãã: %s\n"
+
+#: ppdc/sample.c:403
msgid "EPL1 Label Printer"
-msgstr "EPL1 ã©ãã«ããªã³ã¿"
+msgstr "EPL1 Label Printer"
+
+#: ppdc/sample.c:406
msgid "EPL2 Label Printer"
-msgstr "EPL2 ã©ãã«ããªã³ã¿"
+msgstr "EPL2 Label Printer"
+
+#: filter/pstops.c:703
+#, c-format
msgid "ERROR: Bad %%BoundingBox: comment seen!\n"
-msgstr "ERROR: %%BoundingBox ãæ£ããããã¾ããï¼ã³ã¡ã³ããããã¾ãï¼\n"
+msgstr "ERROR: ä¸æ£ãª %%BoundingBox: ã³ã¡ã³ããããã¾ã!\n"
+
+#: filter/pstops.c:2210
+#, c-format
msgid "ERROR: Bad %%IncludeFeature: comment!\n"
-msgstr "ERROR: %%IncludeFeature ãæ£ããããã¾ããï¼ã³ã¡ã³ãï¼\n"
+msgstr "ERROR: ä¸æ£ãª %%IncludeFeature: ã³ã¡ã³ãã§ã!\n"
+
+#: filter/pstops.c:1280 filter/pstops.c:1286
+#, c-format
msgid "ERROR: Bad %%Page: comment in file!\n"
-msgstr "ERROR: %%Page ãæ£ããããã¾ããï¼ãã¡ã¤ã«ã«ã³ã¡ã³ããããã¾ãï¼\n"
+msgstr "ERROR: ä¸æ£ãª %%Page: ã³ã¡ã³ãããã¡ã¤ã«ã«ããã¾ã!\n"
+
+#: filter/pstops.c:1356
+#, c-format
msgid "ERROR: Bad %%PageBoundingBox: comment in file!\n"
-msgstr "ERROR: %%PageBoundingBox ãæ£ããããã¾ããï¼ãã¡ã¤ã«ã«ã³ã¡ã³ããããã¾ãï¼\n"
+msgstr "ERROR: ä¸æ£ãª %%PageBoundingBox: ã³ã¡ã³ãããã¡ã¤ã«ã«ããã¾ã!\n"
+
+#: backend/scsi-irix.c:100 backend/scsi-linux.c:114
+#, c-format
msgid "ERROR: Bad SCSI device file \"%s\"!\n"
-msgstr "ERROR: SCSI ããã¤ã¹ãã¡ã¤ã«â%sâãæ£ããããã¾ããï¼\n"
+msgstr "ERROR: ä¸æ£ãª SCSI ããã¤ã¹ãã¡ã¤ã« \"%s\" ã§ã!\n"
+
+#: filter/pstext.c:276 filter/texttops.c:284 filter/texttops.c:295
+#, c-format
msgid "ERROR: Bad charset file %s\n"
-msgstr "ERROR: æåã»ãããã¡ã¤ã« %s ãæ£ããããã¾ãã\n"
+msgstr "ERROR: ä¸æ£ãª charset ãã¡ã¤ã« %s ã§ã\n"
+
+#: filter/texttops.c:453
+#, c-format
msgid "ERROR: Bad charset type %s\n"
-msgstr "ERROR: æåã»ããã¿ã¤ã %s ãæ£ããããã¾ãã\n"
+msgstr "ERROR: ä¸æ£ãª charset ã¿ã¤ã %s ã§ã\n"
+
+#: filter/textcommon.c:613
+#, c-format
msgid "ERROR: Bad columns value %d!\n"
-msgstr "ERROR: åå¤ %d ãæ£ããããã¾ããï¼\n"
+msgstr "ERROR: ä¸æ£ãª columns å¤ %d ã§ã!\n"
+
+#: filter/textcommon.c:624
+#, c-format
msgid "ERROR: Bad cpi value %f!\n"
-msgstr "ERROR: cpi å¤ %f ãæ£ããããã¾ããï¼\n"
+msgstr "ERROR: ä¸æ£ãª cpi å¤ %f ã§ã!\n"
+
+#: filter/pstext.c:320 filter/pstext.c:357 filter/texttops.c:348
+#: filter/texttops.c:384
+#, c-format
msgid "ERROR: Bad font description line: %s\n"
-msgstr "ERROR: ãã©ã³ã説æè¡ãæ£ããããã¾ããï¼%s\n"
+msgstr "ERROR: ä¸æ£ãªãã©ã³ãè¨è¿°è¡: %s\n"
+
+#: filter/textcommon.c:635
+#, c-format
msgid "ERROR: Bad lpi value %f!\n"
-msgstr "ERROR: lpi å¤ %f ãæ£ããããã¾ããï¼\n"
+msgstr "ERROR: ä¸æ£ãª lpi å¤ %f ã§ã!\n"
+
+#: filter/imagetoraster.c:460
msgid "ERROR: Bad page setup!\n"
-msgstr "ERROR: ãã¼ã¸è¨å®ãæ£ããããã¾ããï¼\n"
+msgstr "ERROR: ä¸æ£ãªãã¼ã¸è¨å®ã§ã!\n"
+
+#: filter/pstext.c:334 filter/texttops.c:361
+#, c-format
msgid "ERROR: Bad text direction %s\n"
-msgstr "ERROR: ããã¹ãæ¹å %s ãæ£ããããã¾ãã\n"
+msgstr "ERROR: ä¸æ£ãª ããã¹ãæ¹å %s ã§ã\n"
+
+#: filter/pstext.c:371 filter/texttops.c:397
+#, c-format
msgid "ERROR: Bad text width %s\n"
-msgstr "ERROR: ããã¹ãå¹
%s ãæ£ããããã¾ãã\n"
+msgstr "ERROR: ä¸æ£ãª ããã¹ãå¹
%s ã§ã\n"
+
+#: backend/ipp.c:735
msgid "ERROR: Destination printer does not exist!\n"
-msgstr "ERROR: éä¿¡å
ããªã³ã¿ãåå¨ãã¾ããï¼\n"
+msgstr "ERROR: éä¿¡å
ã®ããªã³ã¿ã¼ãåå¨ãã¾ãã!\n"
+
+#: filter/pstops.c:692
+#, c-format
msgid "ERROR: Duplicate %%BoundingBox: comment seen!\n"
-msgstr "ERROR: %%BoundingBox ãéè¤ãã¦ãã¾ãï¼ã³ã¡ã³ããããã¾ãï¼\n"
+msgstr "ERROR: éè¤ãã %%BoundingBox: ã³ã¡ã³ããããã¾ã!\n"
+
+#: filter/pstops.c:645
+#, c-format
msgid "ERROR: Duplicate %%Pages: comment seen!\n"
-msgstr "ERROR: %%Pages ãéè¤ãã¦ãã¾ãï¼ã³ã¡ã³ããããã¾ãï¼\n"
+msgstr "ERROR: éè¤ãã %%Pages: ã³ã¡ã³ããããã¾ã!\n"
+
+#: backend/ipp.c:457 filter/pstops.c:302
msgid "ERROR: Empty print file!\n"
-msgstr "ERROR: ããªã³ããã¡ã¤ã«ã空ã§ãï¼\n"
+msgstr "ERROR: 空ã®ããªã³ããã¡ã¤ã«ã§ã!\n"
+
+#: backend/pap.c:838
+#, c-format
msgid "ERROR: Error %d sending PAPSendData request: %s\n"
-msgstr "ERROR: PAPSendData è¦æ±ãéä¿¡ä¸ã®ã¨ã©ã¼ %dï¼%s\n"
+msgstr "ERROR: ã¨ã©ã¼ %d PAPSendData request ã®éä¿¡: %s\n"
+
+#: ppdc/ppdc-catalog.cxx:335 ppdc/ppdc-catalog.cxx:347
+#, c-format
msgid "ERROR: Expected quoted string on line %d of %s!\n"
-msgstr "ERROR: %2$s ã®è¡ %1$d ã«å¼ç¨æååãå¿
è¦ã§ãï¼\n"
+msgstr "ERROR: %d è¡: %s ã«ã¯å¼ç¨ç¬¦ã§å²ã¾ããæååãå¿
è¦ã§ã!\n"
+
+#: backend/usb-darwin.c:364 backend/usb-darwin.c:422 backend/usb-darwin.c:487
+#: backend/usb-darwin.c:505
msgid "ERROR: Fatal USB error!\n"
-msgstr "ERROR: è´å½ç㪠USB ã¨ã©ã¼ï¼\n"
+msgstr "ERROR: è´å½ç㪠USB ã¨ã©ã¼ã§ã!\n"
+
+#: filter/hpgl-input.c:139
msgid "ERROR: Invalid HP-GL/2 command seen, unable to print file!\n"
-msgstr "ERROR: ç¡å¹ãª HP-GL/2 ã³ãã³ããããããããã¡ã¤ã«ãããªã³ãã§ãã¾ããï¼\n"
+msgstr "ERROR: ç¡å¹ãª HP-GL/2 ã³ãã³ããããããã¡ã¤ã«ãããªã³ãã§ãã¾ãã!\n"
+
+#: filter/pstops.c:1764
+#, c-format
msgid "ERROR: Missing %%EndProlog!\n"
-msgstr "ERROR: %%EndProlog ãããã¾ããï¼\n"
+msgstr "ERROR: %%EndProlog ãè¦ã¤ããã¾ãã!\n"
+
+#: filter/pstops.c:1835
+#, c-format
msgid "ERROR: Missing %%EndSetup!\n"
-msgstr "ERROR: %%EndSetup ãããã¾ããï¼\n"
+msgstr "ERROR: %%EndSetup ãè¦ã¤ããã¾ãã!\n"
+
+#: backend/ipp.c:243
msgid "ERROR: Missing device URI on command-line and no DEVICE_URI environment variable!\n"
-msgstr "ERROR: ã³ãã³ãã©ã¤ã³ã«ããã¤ã¹ URI ãå
¥åããã¦ããªãã®ã§ãDEVICE_URI ç°å¢å¤æ°ãããã¾ããï¼\n"
+msgstr "ERROR: ã³ãã³ãã©ã¤ã³ã«ããã¤ã¹ URI ãè¦ã¤ããããç°å¢å¤æ° DEVICE_URI ãè¦ã¤ããã¾ãã!\n"
+
+#: filter/bannertops.c:222
+#, c-format
msgid "ERROR: Missing value on line %d of banner file!\n"
-msgstr "ERROR: ããã¼ãã¡ã¤ã«ã®è¡ %d ã«å¤ãããã¾ããï¼\n"
+msgstr "ERROR: ããã¼ãã¡ã¤ã«ã® %d è¡ç®ã«å¤ãè¦ã¤ããã¾ãã!\n"
+
+#: ppdc/ppdc-catalog.cxx:412
+#, c-format
msgid "ERROR: Need a msgid line before any translation strings on line %d of %s!\n"
-msgstr "ERROR: %2$s ã®è¡ %1$d ã®å¤ææååã®åã« msgid è¡ãå¿
è¦ã§ãï¼\n"
+msgstr "ERROR: %d è¡: %s ã®ç¿»è¨³æååã®åã« msgid è¡ãå¿
è¦ã§ã!\n"
+
+#: filter/pstops.c:755
+#, c-format
msgid "ERROR: No %%BoundingBox: comment in header!\n"
-msgstr "ERROR: %%BoundingBox ãããã¾ããï¼ãããã«ã³ã¡ã³ããããã¾ãï¼\n"
+msgstr "ERROR: %%BoundingBox: ã³ã¡ã³ããããã¾ãã!\n"
+
+#: filter/pstops.c:758
+#, c-format
msgid "ERROR: No %%Pages: comment in header!\n"
-msgstr "ERROR: %%Pages ãããã¾ããï¼ãããã«ã³ã¡ã³ããããã¾ãï¼\n"
+msgstr "ERROR: %%Pages: ã³ã¡ã³ãããããã¼ã«ããã¾ãã!\n"
+
+#: backend/usb.c:200
msgid "ERROR: No device URI found in argv[0] or in DEVICE_URI environment variable!\n"
-msgstr "ERROR: argv[0] ã¾ã㯠DEVICE_URI ç°å¢å¤æ°ã«ããã¤ã¹ URI ãè¦ã¤ããã¾ããã§ããï¼\n"
+msgstr "ERROR: argv[0] ã¾ã㯠ç°å¢å¤æ° DEVICE_URI ã«ããã¤ã¹ URI ãè¦ã¤ããã¾ãã!\n"
+
+#: filter/pstext.c:433
+#, c-format
msgid "ERROR: No fonts in charset file %s\n"
-msgstr "ERROR: æåã»ãããã¡ã¤ã« %s å
ã«ãã©ã³ããããã¾ãã\n"
+msgstr "ERROR: charset ãã¡ã¤ã« %s ã«ãã©ã³ããè¦ã¤ããã¾ãã\n"
+
+#: filter/rastertoepson.c:1124 filter/rastertohp.c:854
+#: filter/rastertolabel.c:1279
msgid "ERROR: No pages found!\n"
-msgstr "ERROR: ãã¼ã¸ãè¦ã¤ããã¾ããã§ããï¼\n"
+msgstr "ERROR: ãã¼ã¸ãè¦ã¤ããã¾ãã!\n"
+
+#: backend/runloop.c:348
msgid "ERROR: Out of paper!\n"
-msgstr "ERROR: ç¨ç´ãããã¾ããï¼\n"
+msgstr "ERROR: ç¨ç´åãã§ã!\n"
+
+#: backend/ipp.c:1792
msgid "ERROR: PRINTER environment variable not defined!\n"
-msgstr "ERROR: PRINTER ç°å¢è¨å®ãå®ç¾©ããã¦ãã¾ããï¼\n"
+msgstr "ERROR: PRINTER ç°å¢å¤æ°ãå®ç¾©ããã¦ãã¾ãã!\n"
+
+#: backend/ipp.c:1044
+#, c-format
msgid "ERROR: Print file was not accepted (%s)!\n"
-msgstr "ERROR: ããªã³ããã¡ã¤ã«ãåãå
¥ãããã¾ããã§ããï¼%sï¼ï¼\n"
+msgstr "ERROR: ããªã³ããã¡ã¤ã«ãåãä»ãããã¾ããã§ãã (%s)!\n"
+
+#: backend/pap.c:521
msgid "ERROR: Printer not responding\n"
-msgstr "ERROR: ããªã³ã¿ãå¿çãã¾ãã\n"
+msgstr "ERROR: ããªã³ã¿ã¼ãå¿çãã¦ãã¾ãã\n"
+
+#: backend/ipp.c:571 backend/ipp.c:702 backend/lpd.c:821 backend/socket.c:311
msgid "ERROR: Printer not responding!\n"
-msgstr "ERROR: ããªã³ã¿ãå¿çãã¾ããï¼\n"
+msgstr "ERROR: ããªã³ã¿ã¼ãå¿çãã¦ãã¾ãã!\n"
+
+#: backend/pap.c:858
msgid "ERROR: Printer sent unexpected EOF\n"
-msgstr "ERROR: ããªã³ã¿ããäºæããªã EOF ãåãåãã¾ãã\n"
+msgstr "ERROR: ããªã³ã¿ã¼ã æ³å®å¤ã® EOF ãéä¿¡ãã¾ãã\n"
+
+#: backend/lpd.c:1025 backend/lpd.c:1172
+#, c-format
msgid "ERROR: Remote host did not accept control file (%d)\n"
-msgstr "ERROR: ãªã¢ã¼ããã¹ããå¶å¾¡ãã¡ã¤ã«ãåãå
¥ãã¾ããã§ããï¼%dï¼\n"
+msgstr "ERROR: ãªã¢ã¼ããã¹ããã³ã³ããã¼ã«ãã¡ã¤ã«ãåãä»ãã¾ããã§ãã (%d)\n"
+
+#: backend/lpd.c:1120
+#, c-format
msgid "ERROR: Remote host did not accept data file (%d)\n"
-msgstr "ERROR: ãªã¢ã¼ããã¹ãããã¼ã¿ãã¡ã¤ã«ãåãå
¥ãã¾ããã§ããï¼%dï¼\n"
+msgstr "ERROR: ãªã¢ã¼ããã¹ãããã¼ã¿ãã¡ã¤ã«ãåãä»ãã¾ããã§ãã (%d)\n"
+
+#: backend/pap.c:1694
msgid "ERROR: There was a timeout error while sending data to the printer\n"
-msgstr "ERROR: ããªã³ã¿ã«ãã¼ã¿ãéä¿¡ãã¦ããã¨ãã«ã¿ã¤ã ã¢ã¦ãã¨ã©ã¼ãèµ·ãã¾ãã\n"
+msgstr "ERROR: ããªã³ã¿ã¼ã¸ã®ãã¼ã¿éä¿¡ä¸ã«ã¿ã¤ã ã¢ã¦ãã¨ã©ã¼ãçºçãã¾ãã\n"
+
+#: backend/ipp.c:1107
+#, c-format
msgid "ERROR: Unable to add file %d to job: %s\n"
-msgstr "ERROR: ãã¡ã¤ã« %d ãã¸ã§ãã«è¿½å ã§ãã¾ããï¼%s\n"
+msgstr "ERROR: ãã¡ã¤ã« %d ãã¸ã§ãã«è¿½å ã§ãã¾ãã: %s\n"
+
+#: backend/ipp.c:1355
+#, c-format
msgid "ERROR: Unable to cancel job %d: %s\n"
-msgstr "ERROR: ã¸ã§ã %d ããã£ã³ã»ã«ã§ãã¾ããï¼%s\n"
+msgstr "ERROR: ã¸ã§ã %d ããã£ã³ã»ã«ã§ãã¾ãã: %s\n"
+
+#: filter/pdftops.c:126
msgid "ERROR: Unable to copy PDF file"
msgstr "ERROR: PDF ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ãã"
+
+#: backend/lpd.c:745
msgid "ERROR: Unable to create socket"
msgstr "ERROR: ã½ã±ãããä½æã§ãã¾ãã"
+
+#: backend/ipp.c:1445
+#, c-format
msgid "ERROR: Unable to create temporary compressed print file: %s\n"
-msgstr "ERROR: å§ç¸®ãããä¸æããªã³ããã¡ã¤ã«ãä½æã§ãã¾ããï¼%s\n"
+msgstr "ERROR: ãã³ãã©ãªã¼ã®å§ç¸®ããªã³ããã¡ã¤ã«ãä½æã§ãã¾ãã: %s\n"
+
+#: backend/ipp.c:424 backend/lpd.c:433
msgid "ERROR: Unable to create temporary file"
-msgstr "ERROR: ä¸æãã¡ã¤ã«ãä½æã§ãã¾ãã"
+msgstr "ERROR: ãã³ãã©ãªã¼ãã¡ã¤ã«ãä½æã§ãã¾ãã"
+
+#: backend/ipp.c:1814
+#, c-format
msgid "ERROR: Unable to create temporary file - %s.\n"
-msgstr "ERROR: ä¸æãã¡ã¤ã«ãä½æã§ãã¾ãã - %sã\n"
+msgstr "ERROR: ãã³ãã©ãªã¼ãã¡ã¤ã«ãä½æã§ãã¾ãã - %s\n"
+
+#: filter/pstops.c:2708
+#, c-format
msgid "ERROR: Unable to create temporary file: %s\n"
-msgstr "ERROR: ä¸æãã¡ã¤ã«ãä½æã§ãã¾ããï¼%s\n"
+msgstr "ERROR: ãã³ãã©ãªã¼ãã¡ã¤ã«ãä½æã§ãã¾ãã: %s\n"
+
+#: backend/ipp.c:1871
+#, c-format
msgid "ERROR: Unable to exec pictwpstops: %s\n"
-msgstr "ERROR: pictwpstops ãå®è¡ã§ãã¾ããï¼%s\n"
+msgstr "ERROR: pictwpstops ãå®è¡ã§ãã¾ãã: %s\n"
+
+#: filter/pdftops.c:317 filter/pdftops.c:331
msgid "ERROR: Unable to execute gs program"
msgstr "ERROR: gs ããã°ã©ã ãå®è¡ã§ãã¾ãã"
+
+#: filter/pdftops.c:314 filter/pdftops.c:329
msgid "ERROR: Unable to execute pdftops program"
msgstr "ERROR: pdftops ããã°ã©ã ãå®è¡ã§ãã¾ãã"
+
+#: backend/ipp.c:1884
+#, c-format
msgid "ERROR: Unable to fork pictwpstops: %s\n"
-msgstr "ERROR: pictwpstops ãåå²ã§ãã¾ããï¼%s\n"
+msgstr "ERROR: pictwpstops ããã©ã¼ã¯ã§ãã¾ãã: %s\n"
+
+#: backend/pap.c:712
msgid "ERROR: Unable to get PAP request"
-msgstr "ERROR: PAP è¦æ±ãåå¾ã§ãã¾ãã"
+msgstr "ERROR: PAP ãªã¯ã¨ã¹ããåå¾ã§ãã¾ãã"
+
+#: backend/pap.c:701
msgid "ERROR: Unable to get PAP response"
-msgstr "ERROR: PAP å¿çãåå¾ã§ãã¾ãã"
+msgstr "ERROR: PAP ã¬ã¹ãã³ã¹ãåå¾ã§ãã¾ãã"
+
+#: backend/ipp.c:1799
+#, c-format
msgid "ERROR: Unable to get PPD file for printer \"%s\" - %s.\n"
-msgstr "ERROR: ããªã³ã¿â%sâã®PPD ãã¡ã¤ã«ãåå¾ã§ãã¾ãã - %sã\n"
+msgstr "ERROR: ããªã³ã¿ã¼ \"%s\" ã® PPD ãã¡ã¤ã«ãåå¾ã§ãã¾ãã - %s\n"
+
+#: backend/pap.c:302
msgid "ERROR: Unable to get default AppleTalk zone"
msgstr "ERROR: ããã©ã«ãã® AppleTalk ã¾ã¼ã³ãåå¾ã§ãã¾ãã"
+
+#: backend/ipp.c:1194
+#, c-format
msgid "ERROR: Unable to get job %d attributes (%s)!\n"
-msgstr "ERROR: ã¸ã§ã %d ã®å±æ§ãåå¾ã§ãã¾ããï¼%sï¼ï¼\n"
+msgstr "ERROR: ã¸ã§ã %d ã®å±æ§ (%s) ãåå¾ã§ãã¾ãã!\n"
+
+#: backend/ipp.c:745
+#, c-format
msgid "ERROR: Unable to get printer status (%s)!\n"
-msgstr "ERROR: ããªã³ã¿ã®ç¶æ³ãåå¾ã§ãã¾ããï¼%sï¼ï¼\n"
+msgstr "ERROR: ããªã³ã¿ã¼ã®ã¹ãã¼ã¿ã¹ (%s) ãåå¾ã§ãã¾ãã!\n"
+
+#: backend/ipp.c:589 backend/lpd.c:677 backend/socket.c:266
+#, c-format
msgid "ERROR: Unable to locate printer '%s'!\n"
-msgstr "ERROR: ããªã³ã¿â%sâãç¹å®ã§ãã¾ããï¼\n"
+msgstr "ERROR: ããªã³ã¿ã¼ '%s' ãè¦ã¤ããã¾ãã\"!\n"
+
+#: backend/pap.c:688
msgid "ERROR: Unable to look for PAP response"
-msgstr "ERROR: PAP å¿çãæ¤ç´¢ã§ãã¾ãã"
+msgstr "ERROR: PAP ã¬ã¹ãã³ã¹ãè¦ã¤ããã¾ãã"
+
+#: backend/pap.c:322
msgid "ERROR: Unable to lookup AppleTalk printers"
-msgstr "ERROR: AppleTalk ããªã³ã¿ãæ¤ç´¢ã§ãã¾ãã"
+msgstr "ERROR: AppleTalk ããªã³ã¿ã¼ãè¦ã¤ããã¾ãã"
+
+#: backend/pap.c:451
msgid "ERROR: Unable to make AppleTalk address"
msgstr "ERROR: AppleTalk ã¢ãã¬ã¹ãä½æã§ãã¾ãã"
+
+#: filter/pstext.c:247 filter/texttops.c:248
+#, c-format
msgid "ERROR: Unable to open \"%s\" - %s\n"
-msgstr "ERROR: â%sâãéãã¾ãã - %s\n"
+msgstr "ERROR: \"%s\" ãéãã¾ãã - %s\n"
+
+#: filter/pstext.c:264 filter/texttops.c:268
+#, c-format
msgid "ERROR: Unable to open %s: %s\n"
-msgstr "ERROR: %s ãéãã¾ããï¼%s\n"
+msgstr "ERROR: %s ãéãã¾ãã: %s\n"
+
+#: filter/bannertops.c:184
+#, c-format
msgid "ERROR: Unable to open banner file \"%s\" - %s\n"
-msgstr "ERROR: ããã¼ãã¡ã¤ã«â%sâãéãã¾ãã - %s\n"
+msgstr "ERROR: ããã¼ãã¡ã¤ã« \"%s\" ãéãã¾ãã - %s\n"
+
+#: backend/parallel.c:249 backend/scsi-irix.c:140 backend/scsi-linux.c:154
+#: backend/serial.c:262 backend/usb-unix.c:146
+#, c-format
msgid "ERROR: Unable to open device file \"%s\": %s\n"
-msgstr "ERROR: ããã¤ã¹ãã¡ã¤ã«â%sâãéãã¾ããï¼%s\n"
+msgstr "ERROR: ããã¤ã¹ãã¡ã¤ã« \"%s\" ãéãã¾ãã: %s\n"
+
+#: filter/pstops.c:290
+#, c-format
msgid "ERROR: Unable to open file \"%s\" - %s\n"
-msgstr "ERROR: ãã¡ã¤ã«â%sâãéãã¾ãã - %s\n"
+msgstr "ERROR: ãã¡ã¤ã« \"%s\" ãéãã¾ãã - %s\n"
+
+#: filter/gziptoany.c:74
+#, c-format
msgid "ERROR: Unable to open file \"%s\": %s\n"
-msgstr "ERROR: ãã¡ã¤ã«â%sâãéãã¾ããï¼%s\n"
+msgstr "ERROR: ãã¡ã¤ã« \"%s\" ãéãã¾ãã: %s\n"
+
+#: filter/imagetops.c:313 filter/imagetoraster.c:637
msgid "ERROR: Unable to open image file for printing!\n"
-msgstr "ERROR: ããªã³ãç¨ã®ã¤ã¡ã¼ã¸ãã¡ã¤ã«ãéãã¾ããï¼\n"
+msgstr "ERROR: å°å·ã®ããã®ã¤ã¡ã¼ã¸ãã¡ã¤ã«ãéãã¾ãã!\n"
+
+#: backend/ipp.c:1461 backend/pap.c:249 backend/parallel.c:151
+#: backend/scsi.c:181 backend/serial.c:189 backend/socket.c:156
+#, c-format
msgid "ERROR: Unable to open print file \"%s\": %s\n"
-msgstr "ERROR: ããªã³ããã¡ã¤ã«â%sâãéãã¾ããï¼%s\n"
+msgstr "ERROR: ããªã³ããã¡ã¤ã« \"%s\" ãéãã¾ãã: %s\n"
+
+#: backend/usb.c:237
+#, c-format
msgid "ERROR: Unable to open print file %s - %s\n"
msgstr "ERROR: ããªã³ããã¡ã¤ã« %s ãéãã¾ãã - %s\n"
+
+#: backend/lpd.c:462
+#, c-format
msgid "ERROR: Unable to open print file %s: %s\n"
-msgstr "ERROR: ããªã³ããã¡ã¤ã« %s ãéãã¾ããï¼%s\n"
+msgstr "ERROR: ããªã³ããã¡ã¤ã« %s ãéãã¾ãã: %s\n"
+
+#: backend/ipp.c:1453
+#, c-format
msgid "ERROR: Unable to open temporary compressed print file: %s\n"
-msgstr "ERROR: å§ç¸®ãããä¸æããªã³ããã¡ã¤ã«ãéãã¾ããï¼%s\n"
+msgstr "ERROR: ãã³ãã©ãªã¼ã®å§ç¸®ããªã³ããã¡ã¤ã«ãéãã¾ãã: %s\n"
+
+#: backend/ipp.c:430
msgid "ERROR: Unable to open temporary file"
-msgstr "ERROR: ä¸æãã¡ã¤ã«ãéãã¾ãã"
+msgstr "ERROR: ãã³ãã©ãªã¼ãã¡ã¤ã«ãéãã¾ãã"
+
+#: filter/texttops.c:200
+#, c-format
msgid "ERROR: Unable to print %d text columns!\n"
-msgstr "ERROR: %d åã®ããã¹ãåãããªã³ãã§ãã¾ããï¼\n"
+msgstr "ERROR: ããã¹ãã«ã©ã %d ãããªã³ãã§ãã¾ãã!\n"
+
+#: filter/texttops.c:179
+#, c-format
msgid "ERROR: Unable to print %dx%d text page!\n"
-msgstr "ERROR: %d x %d ã®ããã¹ããã¼ã¸ãããªã³ãã§ãã¾ããï¼\n"
+msgstr "ERROR: ããã¹ããã¼ã¸ %dx%d ãããªã³ãã§ãã¾ãã!\n"
+
+#: backend/serial.c:615
msgid "ERROR: Unable to read print data"
-msgstr "ERROR: ããªã³ããã¼ã¿ãèªã¿åãã¾ãã"
+msgstr "ERROR: ããªã³ããã¼ã¿ãèªã¿è¾¼ãã¾ãã"
+
+#: backend/usb-darwin.c:589 backend/usb-darwin.c:622
msgid "ERROR: Unable to read print data!\n"
-msgstr "ERROR: ããªã³ããã¼ã¿ãèªã¿åãã¾ããï¼\n"
+msgstr "ERROR: ããªã³ããã¼ã¿ãèªã¿è¾¼ãã¾ãã!\n"
+
+#: backend/lpd.c:762
msgid "ERROR: Unable to reserve port"
msgstr "ERROR: ãã¼ããäºç´ã§ãã¾ãã"
+
+#: filter/pstops.c:560
+#, c-format
msgid "ERROR: Unable to seek to offset %ld in file - %s\n"
-msgstr "ERROR: ãã¡ã¤ã«å
ã®ãªãã»ãã %ld ã«ã·ã¼ã¯ã§ãã¾ãã - %s\n"
+msgstr "ERROR: ãã¡ã¤ã«ã§ã®ãªãã»ãã %ld ã¸ã·ã¼ã¯ã§ãã¾ãã - %s\n"
+
+#: filter/pstops.c:558
+#, c-format
msgid "ERROR: Unable to seek to offset %lld in file - %s\n"
-msgstr "ERROR: ãã¡ã¤ã«å
ã®ãªãã»ãã %lld ã«ã·ã¼ã¯ã§ãã¾ãã - %s\n"
+msgstr "ERROR: ãã¡ã¤ã«ã§ã®ãªãã»ãã %lld ã¸ã·ã¼ã¯ã§ãã¾ãã - %s\n"
+
+#: backend/lpd.c:578
msgid "ERROR: Unable to send LPD command"
msgstr "ERROR: LPD ã³ãã³ããéä¿¡ã§ãã¾ãã"
+
+#: backend/pap.c:571
msgid "ERROR: Unable to send PAP tickle request"
-msgstr "ERROR: PAP ãã±ããè¦æ±ãéä¿¡ã§ãã¾ãã"
+msgstr "ERROR: PAP tickle è¦æ±ãéä¿¡ã§ãã¾ãã"
+
+#: backend/pap.c:580
msgid "ERROR: Unable to send initial PAP send data request"
-msgstr "ERROR: åæ PAP ãã¼ã¿éä¿¡è¦æ±ãéä¿¡ã§ãã¾ãã"
+msgstr "ERROR: PAP ã®åæãã¼ã¿éä¿¡è¦æ±ãéä¿¡ã§ãã¾ãã"
+
+#: backend/scsi-irix.c:219 backend/scsi-linux.c:237
+#, c-format
msgid "ERROR: Unable to send print data (%d)\n"
-msgstr "ERROR: ããªã³ããã¼ã¿ãéä¿¡ã§ãã¾ããï¼%dï¼\n"
+msgstr "ERROR: ããªã³ããã¼ã¿ãéä¿¡ã§ãã¾ãã (%d)\n"
+
+#: backend/usb-darwin.c:665
msgid "ERROR: Unable to send print data!\n"
-msgstr "ERROR: ããªã³ããã¼ã¿ãéä¿¡ã§ãã¾ããï¼\n"
+msgstr "ERROR: ããªã³ããã¼ã¿ãéä¿¡ã§ãã¾ãã!\n"
+
+#: backend/lpd.c:1076
msgid "ERROR: Unable to send print file to printer"
-msgstr "ERROR: ããªã³ããã¡ã¤ã«ãããªã³ã¿ã«éä¿¡ã§ãã¾ãã"
+msgstr "ERROR: ããªã³ããã¡ã¤ã«ãããªã³ã¿ã¼ã¸éä¿¡ã§ãã¾ãã"
+
+#: backend/lpd.c:1090
msgid "ERROR: Unable to send trailing nul to printer"
-msgstr "ERROR: æ«å°¾ã® null ãããªã³ã¿ã«éä¿¡ã§ãã¾ãã"
+msgstr "ERROR: æå¾ã® NUL ãããªã³ã¿ã¼ã¸éä¿¡ã§ãã¾ãã"
+
+#: backend/ipp.c:1897
+#, c-format
msgid "ERROR: Unable to wait for pictwpstops: %s\n"
-msgstr "ERROR: pictwpstops ãå¾
æ©ã§ãã¾ããï¼%s\n"
+msgstr "ERROR: pictwpstops ãå¾
ã¤ãã¨ãã§ãã¾ãã: %s\n"
+
+#: backend/ipp.c:1472
+#, c-format
msgid "ERROR: Unable to write %d bytes to \"%s\": %s\n"
-msgstr "ERROR: %d ãã¤ããâ%sâã«æ¸ãè¾¼ãã¾ããï¼%s\n"
+msgstr "ERROR: %d ãã¤ãã \"%s\" ã«æ¸ãè¾¼ãã¾ãã: %s\n"
+
+#: backend/usb-libusb.c:169 backend/usb-libusb.c:765
+#, c-format
msgid "ERROR: Unable to write %d bytes to printer!\n"
-msgstr "ERROR: %d ãã¤ããããªã³ã¿ã«æ¸ãè¾¼ãã¾ããï¼\n"
+msgstr "ERROR: %d ãã¤ããããªã³ã¿ã¼ã«æ¸ãè¾¼ãã¾ãã!\n"
+
+#: backend/lpd.c:1006 backend/lpd.c:1153
msgid "ERROR: Unable to write control file"
-msgstr "ERROR: å¶å¾¡ãã¡ã¤ã«ã«æ¸ãè¾¼ãã¾ãã"
+msgstr "ERROR: ã³ã³ããã¼ã«ãã¡ã¤ã«ãæ¸ãè¾¼ãã¾ãã"
+
+#: backend/serial.c:691
msgid "ERROR: Unable to write print data"
msgstr "ERROR: ããªã³ããã¼ã¿ãæ¸ãè¾¼ãã¾ãã"
+
+#: backend/runloop.c:122 backend/runloop.c:363
+#, c-format
msgid "ERROR: Unable to write print data: %s\n"
-msgstr "ERROR: ããªã³ããã¼ã¿ãæ¸ãè¾¼ãã¾ããï¼%s\n"
+msgstr "ERROR: ããªã³ããã¼ã¿ãæ¸ãè¾¼ãã¾ãã: %s\n"
+
+#: filter/imagetoraster.c:1199 filter/imagetoraster.c:1295
+#: filter/imagetoraster.c:1335
msgid "ERROR: Unable to write raster data to driver!\n"
-msgstr "ERROR: ã©ã¹ã¿ãã¼ã¿ããã©ã¤ãã«æ¸ãè¾¼ãã¾ããï¼\n"
+msgstr "ERROR: ã©ã¹ã¿ã¼ãã¼ã¿ããã©ã¤ãã¼ã¸æ¸ãè¾¼ãã¾ãã!\n"
+
+#: backend/ipp.c:441 backend/lpd.c:440
msgid "ERROR: Unable to write to temporary file"
-msgstr "ERROR: ä¸æãã¡ã¤ã«ã«æ¸ãè¾¼ãã¾ãã"
+msgstr "ERROR: ãã³ãã©ãªã¼ãã¡ã¤ã«ã¸æ¸ãè¾¼ãã¾ãã"
+
+#: filter/gziptoany.c:96
+#, c-format
msgid "ERROR: Unable to write uncompressed document data: %s\n"
-msgstr "ERROR: éå§ç¸®æ¸é¡ãã¼ã¿ãæ¸ãè¾¼ãã¾ããï¼%s\n"
+msgstr "ERROR: éå§ç¸®ããã¥ã¡ã³ããã¼ã¿ãæ¸ãè¾¼ãã¾ãã: %s\n"
+
+#: ppdc/ppdc-catalog.cxx:429
+#, c-format
msgid "ERROR: Unexpected text on line %d of %s!\n"
-msgstr "ERROR: %2$s ã®è¡ %1$d ã«äºæããªãããã¹ããããã¾ãï¼\n"
+msgstr "ERROR: %d è¡: %s ã¯äºæãã¬ããã¹ãã§ã!\n"
+
+#: backend/ipp.c:351
+#, c-format
msgid "ERROR: Unknown encryption option value \"%s\"!\n"
-msgstr "ERROR: â%sâã¯ä¸æãªæå·åãªãã·ã§ã³å¤ã§ãï¼\n"
+msgstr "ERROR: \"%s\" ã¯æªç¥ã®æå·ãªãã·ã§ã³å¤ã§ã!\n"
+
+#: backend/lpd.c:355
+#, c-format
msgid "ERROR: Unknown file order \"%s\"\n"
-msgstr "ERROR: â%sâã¯ä¸æãªãã¡ã¤ã«é åºã§ã\n"
+msgstr "ERROR: \"%s\" ã¯æªç¥ã®ãã¡ã¤ã«ãªã¼ãã¼ã§ã\n"
+
+#: backend/lpd.c:327
+#, c-format
msgid "ERROR: Unknown format character \"%c\"\n"
-msgstr "ERROR: â%câã¯ä¸æãªãã©ã¼ãããæåã§ã\n"
+msgstr "ERROR: \"%c\" ã¯æªç¥ã®æ¸å¼æåã§ã\n"
+
+#: ppdc/ppdc-catalog.cxx:457
+#, c-format
msgid "ERROR: Unknown message catalog format for \"%s\"!\n"
-msgstr "ERROR: â%sâã®ã¡ãã»ã¼ã¸ã»ã«ã¿ãã°ã»ãã©ã¼ããããä¸æã§ãï¼\n"
+msgstr "ERROR: \"%s\" ã¯æªç¥ã®ã¡ãã»ã¼ã¸ã«ã¿ãã°ã®æ¸å¼ã§ã!\n"
+
+#: backend/ipp.c:397
+#, c-format
msgid "ERROR: Unknown option \"%s\" with value \"%s\"!\n"
-msgstr "ERROR: å¤â%2$sâããªãã·ã§ã³â%1$sâã¯ä¸æã§ãï¼\n"
+msgstr "ERROR: \"%s\" (å¤ \"%s\") ã¯æªç¥ã®ãªãã·ã§ã³ã§ã!\n"
+
+#: backend/lpd.c:341
+#, c-format
msgid "ERROR: Unknown print mode \"%s\"\n"
-msgstr "ERROR: â%sâã¯ä¸æãªããªã³ãã¢ã¼ãã§ã\n"
+msgstr "ERROR: \"%s\" ã¯æªç¥ã®ããªã³ãã¢ã¼ãã§ã\n"
+
+#: backend/ipp.c:368
+#, c-format
msgid "ERROR: Unknown version option value \"%s\"!\n"
-msgstr "ERROR: â%sâã¯ä¸æãªãã¼ã¸ã§ã³ãªãã·ã§ã³å¤ã§ãï¼\n"
+msgstr "ERROR: \"%s\" ã¯æªç¥ã®ãã¼ã¸ã§ã³ãªãã·ã§ã³å¤ã§ã!\n"
+
+#: filter/pstops.c:2407
+#, c-format
msgid "ERROR: Unsupported brightness value %s, using brightness=100!\n"
-msgstr "ERROR: è¼åº¦å¤ %s ã«å¯¾å¿ãã¦ããªããããbrightness=100 ã使ç¨ãã¾ãï¼\n"
+msgstr "ERROR: %s ã¯ãµãã¼ãããã¦ããªãè¼åº¦å¤ã§ããbrightness=100 ã使ç¨ãã¾ã!\n"
+
+#: filter/pstops.c:2476
+#, c-format
msgid "ERROR: Unsupported gamma value %s, using gamma=1000!\n"
-msgstr "ERROR: ã¬ã³ãå¤ %s ã«å¯¾å¿ãã¦ããªããããgamma=1000 ã使ç¨ãã¾ãï¼\n"
+msgstr "ERROR: %s ã¯ãµãã¼ãããã¦ããªãã¬ã³ãå¤ã§ããgamma=1000 ã使ç¨ãã¾ã!\n"
+
+#: filter/pstops.c:2530
+#, c-format
msgid "ERROR: Unsupported number-up value %d, using number-up=1!\n"
-msgstr "ERROR: number-up å¤ %d ã«å¯¾å¿ãã¦ããªããããnumber-up=1 ã使ç¨ãã¾ãï¼\n"
+msgstr "ERROR: %d ã¯ãµãã¼ãããã¦ããªã number-up å¤ã§ããnumber-up=1 ã使ç¨ãã¾ã!\n"
+
+#: filter/pstops.c:2563
+#, c-format
msgid "ERROR: Unsupported number-up-layout value %s, using number-up-layout=lrtb!\n"
-msgstr "ERROR: number-up-layout å¤ %s ã«å¯¾å¿ãã¦ããªããããnumber-up-layout=lrtb ã使ç¨ãã¾ãï¼\n"
+msgstr "ERROR: %s ã¯ãµãã¼ãããã¦ããªã number-up-layout å¤ã§ããnumber-up-layout=lrtb ã使ç¨ãã¾ã!\n"
+
+#: filter/pstops.c:2613
+#, c-format
msgid "ERROR: Unsupported page-border value %s, using page-border=none!\n"
-msgstr "ERROR: page-border å¤ %s ã«å¯¾å¿ãã¦ããªããããpage-border=none ã使ç¨ãã¾ãï¼\n"
+msgstr "ERROR: %s ã¯ãµãã¼ãããã¦ããªã page-border å¤ã§ããpage-border=none ã使ç¨ãã¾ã!\n"
+
+#: filter/pstops.c:2080
+#, c-format
msgid "ERROR: doc_printf overflow (%d bytes) detected, aborting!\n"
-msgstr "ERROR: doc_printf ãªã¼ãã¼ããã¼ï¼%d ãã¤ãï¼ãæ¤åºããããããä¸æ¢ãã¾ããï¼\n"
+msgstr "ERROR: doc_printf ãªã¼ãã¼ããã¼ (%d ãã¤ã) ãæ¤åºãããä¸æãã¾ãã!\n"
+
+#: filter/pdftops.c:370
+#, c-format
msgid "ERROR: pdftops filter crashed on signal %d!\n"
-msgstr "ERROR: ã·ã°ãã« %d 㧠pdftops ãã£ã«ã¿ãã¯ã©ãã·ã¥ãã¾ããï¼\n"
+msgstr "ERROR: pdftops ãã£ã«ã¿ã¼ã¯ã·ã°ãã« %d ã§ç°å¸¸çµäºãã¾ãã!\n"
+
+#: filter/pdftops.c:362
+#, c-format
msgid "ERROR: pdftops filter exited with status %d!\n"
-msgstr "ERROR: ç¶æ³ %d 㧠pdftops ãã£ã«ã¿ãçµäºãã¾ããï¼\n"
+msgstr "ERROR: pdftops ãã£ã«ã¿ã¼ã¯ç¶æ
%d ã§çµäºãã¾ãã!\n"
+
+#: backend/ipp.c:1916
+#, c-format
msgid "ERROR: pictwpstops exited on signal %d!\n"
-msgstr "ERROR: ã·ã°ãã« %d 㧠pictwpstops ãçµäºãã¾ããï¼\n"
+msgstr "ERROR: pictwpstops ã¯ã·ã°ãã« %d ã§çµäºãã¾ãã!\n"
+
+#: backend/ipp.c:1913
+#, c-format
msgid "ERROR: pictwpstops exited with status %d!\n"
-msgstr "ERROR: ç¶æ³ %d 㧠pictwpstops ãã£ã«ã¿ãçµäºãã¾ããï¼\n"
+msgstr "ERROR: pictwpstops ã¯ç¶æ
%d ã§çµäºãã¾ãã!\n"
+
+#: backend/ipp.c:599 backend/lpd.c:850 backend/socket.c:334
msgid "ERROR: recoverable: Unable to connect to printer; will retry in 30 seconds...\n"
-msgstr "ERROR: å復å¯è½ï¼ããªã³ã¿ã«æ¥ç¶ã§ãã¾ããã30 ç§å¾ã«å試è¡ãã¾ã...\n"
+msgstr "ERROR: å復å¯è½: ããªã³ã¿ã¼ã«æ¥ç¶ã§ãã¾ããã30 ç§å¾ã«å試è¡ãã¾ã...\n"
+
+#: backend/pap.c:629
msgid "ERROR: select() failed"
-msgstr "ERROR: select() ã«å¤±æãã¾ãã"
+msgstr "ERROR: select() ã失æãã¾ãã"
+
+#: backend/lpd.c:913
msgid "ERROR: unable to stat print file"
-msgstr "ERROR: ããªã³ããã¡ã¤ã«ã®çµ±è¨æ
å ±ãåå¾ã§ãã¾ãã"
+msgstr "ERROR: ããªã³ããã¡ã¤ã«ã®ç¶æ
ãåå¾ã§ãã¾ãã"
+
+#: cgi-bin/admin.c:1811 cgi-bin/admin.c:1823 cgi-bin/admin.c:1877
+#: cgi-bin/admin.c:1884 cgi-bin/admin.c:1919 cgi-bin/admin.c:1932
+#: cgi-bin/admin.c:1956 cgi-bin/admin.c:2029
msgid "Edit Configuration File"
-msgstr "æ§æãã¡ã¤ã«ãç·¨é"
+msgstr "è¨å®ãã¡ã¤ã«ã®ç·¨é"
+
+#: cups/adminutil.c:348
msgid "Empty PPD file!"
-msgstr "PPD ãã¡ã¤ã«ã空ã§ãï¼"
+msgstr "PPD ãã¡ã¤ã«ã空ã§ã!"
+
+#: cgi-bin/admin.c:3533
msgid "Ending Banner"
msgstr "çµäºããã¼"
+
+#: systemv/lppasswd.c:205
msgid "Enter old password:"
-msgstr "å¤ããã¹ã¯ã¼ããå
¥åï¼"
+msgstr "å¤ããã¹ã¯ã¼ããå
¥å:"
+
+#: systemv/lppasswd.c:234
msgid "Enter password again:"
-msgstr "ããä¸åº¦ãã¹ã¯ã¼ããå
¥åï¼"
+msgstr "ãã¹ã¯ã¼ããå度å
¥å:"
+
+#: systemv/lppasswd.c:223
msgid "Enter password:"
-msgstr "ãã¹ã¯ã¼ããå
¥åï¼"
+msgstr "ãã¹ã¯ã¼ããå
¥å:"
+
+#: scheduler/client.c:2409
msgid "Enter your username and password or the root username and password to access this page. If you are using Kerberos authentication, make sure you have a valid Kerberos ticket."
-msgstr "ãã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããã«ã¯ãèªåã®ã¦ã¼ã¶åã¨ãã¹ã¯ã¼ããã¾ãã¯ã«ã¼ãã®ã¦ã¼ã¶åã¨ãã¹ã¯ã¼ããå
¥åãã¦ãã ãããKerberos èªè¨¼ã使ç¨ããå ´åã¯ãæå¹ãª Kerberos ãã±ãããæã£ã¦ãããã¨ã確èªãã¦ãã ããã"
+msgstr "ãã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããããã«ãããªãã®ã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ããããã㯠root ã®ã¦ã¼ã¶ã¼åã¨ãã¹ã¯ã¼ããå
¥åãã¦ãã ãããKerberos èªè¨¼ã使ç¨ãã¦ããå ´åãæå¹ãª Kerberos ãã±ããããããã¨ã確èªãã¦ãã ããã"
+
+#: ppdc/sample.c:241
msgid "Envelope Feed"
-msgstr "å°çé
ä¿¡"
+msgstr "å°çãã£ã¼ã"
+
+#: ppdc/sample.c:212
msgid "Epson"
msgstr "Epson"
+
+#: cgi-bin/admin.c:3576
msgid "Error Policy"
msgstr "ã¨ã©ã¼ããªã·ã¼"
+
+#: systemv/lpinfo.c:109 systemv/lpmove.c:94
msgid "Error: need hostname after '-h' option!\n"
-msgstr "ã¨ã©ã¼ï¼â-hâãªãã·ã§ã³ã®å¾ã«ãã¹ãåãå¿
è¦ã§ãï¼\n"
+msgstr "Error: '-h' ãªãã·ã§ã³ã®ãã¨ã«ã¯ãã¹ãåãå¿
è¦ã§ã!\n"
+
+#: ppdc/sample.c:327
msgid "Every 10 Labels"
msgstr "10 ã©ãã«ãã¨"
+
+#: ppdc/sample.c:319
msgid "Every 2 Labels"
msgstr "2 ã©ãã«ãã¨"
+
+#: ppdc/sample.c:320
msgid "Every 3 Labels"
msgstr "3 ã©ãã«ãã¨"
+
+#: ppdc/sample.c:321
msgid "Every 4 Labels"
msgstr "4 ã©ãã«ãã¨"
+
+#: ppdc/sample.c:322
msgid "Every 5 Labels"
msgstr "5 ã©ãã«ãã¨"
+
+#: ppdc/sample.c:323
msgid "Every 6 Labels"
msgstr "6 ã©ãã«ãã¨"
+
+#: ppdc/sample.c:324
msgid "Every 7 Labels"
msgstr "7 ã©ãã«ãã¨"
+
+#: ppdc/sample.c:325
msgid "Every 8 Labels"
msgstr "8 ã©ãã«ãã¨"
+
+#: ppdc/sample.c:326
msgid "Every 9 Labels"
msgstr "9 ã©ãã«ãã¨"
+
+#: ppdc/sample.c:318
msgid "Every Label"
-msgstr "1 ã©ãã«ãã¨"
+msgstr "ãã¹ã¦ã®ã©ãã«"
+
+#: cups/http-support.c:1236
msgid "Expectation Failed"
-msgstr "Expect ãªã¯ã¨ã¹ãã«å¤±æãã¾ãã"
+msgstr "Expectation Failed"
+
+#: cgi-bin/admin.c:2319 cgi-bin/admin.c:2338
msgid "Export Printers to Samba"
-msgstr "ããªã³ã¿ã Samba ã«æ¸ãåºã"
+msgstr "Samba ã¸ããªã³ã¿ã¼ãã¨ã¯ã¹ãã¼ã"
+
+#: systemv/cupstestdsc.c:176 systemv/cupstestdsc.c:193
+#: systemv/cupstestdsc.c:218 systemv/cupstestdsc.c:235
+#: systemv/cupstestdsc.c:259 systemv/cupstestdsc.c:277
+#: systemv/cupstestdsc.c:306 systemv/cupstestdsc.c:343
+#: systemv/cupstestdsc.c:353 systemv/cupstestdsc.c:363
+#: systemv/cupstestdsc.c:373 systemv/cupstestdsc.c:383
+#: systemv/cupstestdsc.c:391
msgid "FAIL\n"
msgstr "失æ\n"
+
+#: ppdc/sample.c:132
msgid "File Folder"
-msgstr "ãã¡ã¤ã«ãã©ã«ã"
+msgstr "ãã¡ã¤ã«ãã©ã«ãã¼"
+
+#: ppdc/sample.c:141
msgid "File Folder - 9/16 x 3 7/16\""
-msgstr "ãã¡ã¤ã«ãã©ã«ã - 9/16 x 3 7/16\""
+msgstr "ãã¡ã¤ã«ãã©ã«ãã¼ - 9/16 x 3 7/16\""
+
+#: scheduler/ipp.c:2516
+#, c-format
msgid "File device URIs have been disabled! To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
-msgstr "ãã¡ã¤ã«ããã¤ã¹ URI ãç¡å¹ã«ãªã£ã¦ãã¾ãï¼æå¹ã«ããã«ã¯ãâ%s/cupsd.confâã® FileDevice ãã£ã¬ã¯ãã£ããåç
§ãã¦ãã ããã"
+msgstr "ãã¡ã¤ã«ããã¤ã¹ URI ã¯ç¡å¹ã«ãªã£ã¦ãã¾ã! æå¹ã«ããã«ã¯ã\"%s/cupsd.conf\" ã® FileDevice ãã£ã¬ã¯ãã£ããåç
§ãã¦ãã ããã"
+
+#: ppdc/sample.c:92
msgid "Folio"
-msgstr "Folio"
+msgstr "ãã©ãªãª"
+
+#: cups/http-support.c:1215
msgid "Forbidden"
-msgstr "ã¢ã¯ã»ã¹æ¨©ãããã¾ãã"
+msgstr "Forbidden"
+
+#: backend/ipp.c:1694
msgid "Fuser temperature high!"
-msgstr "å®çå¨ã®æ¸©åº¦ãé«ããªã£ã¦ãã¾ãï¼"
+msgstr "å®çå¨ã®æ¸©åº¦ãä¸ã£ã¦ãã¾ã!"
+
+#: backend/ipp.c:1696
msgid "Fuser temperature low!"
-msgstr "å®çå¨ã®æ¸©åº¦ãä½ããªã£ã¦ãã¾ãï¼"
+msgstr "å®çå¨ã®æ¸©åº¦ãä¸ã£ã¦ãã¾ã!"
+
+#: cups/ppd.c:697 cups/ppd.c:1226
msgid "General"
msgstr "ä¸è¬"
+
+#: ppdc/sample.c:231
msgid "Generic"
msgstr "æ±ç¨"
+
+#: ppdc/sample.c:89
msgid "German FanFold"
msgstr "German FanFold"
+
+#: ppdc/sample.c:90
msgid "German FanFold Legal"
-msgstr "German FanFold ãªã¼ã¬ã«"
+msgstr "German FanFold Legal"
+
+#: cups/snmp.c:1015
msgid "Get-Response-PDU uses indefinite length"
-msgstr "Get-Response-PDU ã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "Get-Response-PDU ã¯ä¸ç¢ºå®ã®é·ãã使ç¨ãã¦ãã¾ã"
+
+#: ppdc/sample.c:262
msgid "Glossy Paper"
msgstr "å
æ²¢ç´"
+
+#: scheduler/ipp.c:3634 scheduler/ipp.c:3937 scheduler/ipp.c:6599
+#: scheduler/ipp.c:6741 scheduler/ipp.c:8011 scheduler/ipp.c:9135
+#: scheduler/ipp.c:9360 scheduler/ipp.c:9777 scheduler/ipp.c:10352
msgid "Got a printer-uri attribute but no job-id!"
-msgstr "printer-uri å±æ§ãåå¾ãã¾ããããjob-id ãããã¾ããï¼"
+msgstr "printer-uri å±æ§ãåå¾ãã¾ããããjob-id ãåå¾ã§ãã¾ããã§ãã!"
+
+#: ppdc/sample.c:227
msgid "Grayscale"
-msgstr "ã°ã¬ã¤ã¹ã±ã¼ã«"
+msgstr "ã°ã¬ã¼ã¹ã±ã¼ã«"
+
+#: ppdc/sample.c:251
msgid "HP"
msgstr "HP"
+
+#: ppdc/sample.c:133
msgid "Hanging Folder"
-msgstr "ãã³ã®ã³ã°ãã©ã«ã"
+msgstr "Hanging Folder"
+
+#: ppdc/sample.c:142
msgid "Hanging Folder - 9/16 x 2\""
-msgstr "ãã³ã®ã³ã°ãã©ã«ã - 9/16 x 2\""
+msgstr "Hanging Folder - 9/16 x 2\""
+
+#: backend/pap.c:296
msgid "INFO: AppleTalk disabled in System Preferences\n"
-msgstr "INFO: AppleTalk ã¯âã·ã¹ãã ç°å¢è¨å®âã§ç¡å¹ã«ãªã£ã¦ãã¾ã\n"
+msgstr "INFO: AppleTalk ãã·ã¹ãã ãã¬ãã¡ã¬ã³ã¹ã§ç¡å¹ã«ããã¦ãã¾ã\n"
+
+#: backend/pap.c:511
msgid "INFO: AppleTalk disabled in System Preferences.\n"
-msgstr "INFO: AppleTalk ã¯âã·ã¹ãã ç°å¢è¨å®âã§ç¡å¹ã«ãªã£ã¦ãã¾ãã\n"
+msgstr "INFO: AppleTalk ãã·ã¹ãã ãã¬ãã¡ã¬ã³ã¹ã§ç¡å¹ã«ããã¦ãã¾ãã\n"
+
+#: backend/ipp.c:1334
msgid "INFO: Canceling print job...\n"
-msgstr "INFO: ããªã³ãã¸ã§ãããã£ã³ã»ã«ä¸...\n"
+msgstr "INFO: ããªã³ãã¸ã§ãããã£ã³ã»ã«ãã¦ãã¾ã...\n"
+
+#: backend/ipp.c:619 backend/lpd.c:869 backend/socket.c:356
msgid "INFO: Connected to printer...\n"
-msgstr "INFO: ããªã³ã¿ã«æ¥ç¶ããã¾ãã...\n"
+msgstr "INFO: ããªã³ã¿ã¼ã«æ¥ç¶ãã¾ãã...\n"
+
+#: backend/ipp.c:534 backend/lpd.c:702 backend/socket.c:273
msgid "INFO: Connecting to printer...\n"
-msgstr "INFO: ããªã³ã¿ã«æ¥ç¶ä¸...\n"
+msgstr "INFO: ããªã³ã¿ã¼ã«æ¥ç¶ä¸...\n"
+
+#: backend/lpd.c:1028 backend/lpd.c:1175
msgid "INFO: Control file sent successfully\n"
-msgstr "INFO: å¶å¾¡ãã¡ã¤ã«ã®éä¿¡ã«æåãã¾ãã\n"
+msgstr "INFO: ã³ã³ããã¼ã«ãã¡ã¤ã«ãæ£å¸¸ã«éä¿¡ããã¾ãã\n"
+
+#: backend/lpd.c:1123
msgid "INFO: Data file sent successfully\n"
-msgstr "INFO: ãã¼ã¿ãã¡ã¤ã«ã®éä¿¡ã«æåãã¾ãã\n"
+msgstr "INFO: ãã¼ã¿ãã¡ã¤ã«ãæ£å¸¸ã«éä¿¡ããã¾ãã\n"
+
+#: filter/imagetoraster.c:1142
+#, c-format
msgid "INFO: Formatting page %d...\n"
-msgstr "INFO: %d ãã¼ã¸ããã©ã¼ãããä¸...\n"
+msgstr "INFO: ãã¼ã¸ %d ããã©ã¼ãããä¸...\n"
+
+#: filter/imagetoraster.c:623
msgid "INFO: Loading image file...\n"
-msgstr "INFO: ã¤ã¡ã¼ã¸ãã¡ã¤ã«ãèªã¿è¾¼ã¿ä¸...\n"
+msgstr "INFO: ã¤ã¡ã¼ã¸ãã¡ã¤ã«ããã¼ãä¸...\n"
+
+#: cups/http-support.c:1400
msgid "INFO: Looking for printer...\n"
-msgstr "INFO: ããªã³ã¿ãæ¤ç´¢ä¸...\n"
+msgstr "INFO: ããªã³ã¿ã¼ãæ¢ãã¦ãã¾ã...\n"
+
+#: backend/pap.c:928
msgid "INFO: Opening connection\n"
-msgstr "INFO: æ¥ç¶ãéãã¦ãã¾ã\n"
+msgstr "INFO: ã³ãã¯ã·ã§ã³ãéãã¦ãã¾ã\n"
+
+#: backend/socket.c:427
msgid "INFO: Print file sent, waiting for printer to finish...\n"
-msgstr "INFO: ããªã³ããã¡ã¤ã«ãéä¿¡ããã¾ãããããªã³ã¿ã®çµäºãå¾
æ©ä¸...\n"
+msgstr "INFO: ããªã³ããã¡ã¤ã«ãéä¿¡ããããªã³ã¿ã¼ãä½æ¥ãå®äºããã®ãå¾
ã£ã¦ãã¾ã...\n"
+
+#: backend/ipp.c:1027 backend/usb-unix.c:132
msgid "INFO: Printer busy; will retry in 10 seconds...\n"
-msgstr "INFO: ããªã³ã¿ã§ã®å¦çãæ··ã¿åã£ã¦ãã¾ãã10 ç§å¾ã«å試è¡ãã¾ã...\n"
+msgstr "INFO: ããªã³ã¿ã¼ããã¸ã¼ç¶æ
ã§ãã10 ç§å¾ã«å試è¡ãã¾ã...\n"
+
+#: backend/parallel.c:236 backend/scsi-irix.c:147 backend/scsi-linux.c:161
+#: backend/serial.c:256
msgid "INFO: Printer busy; will retry in 30 seconds...\n"
-msgstr "INFO: ããªã³ã¿ã§ã®å¦çãæ··ã¿åã£ã¦ãã¾ãã30 ç§å¾ã«å試è¡ãã¾ã...\n"
+msgstr "INFO: ããªã³ã¿ã¼ããã¸ã¼ç¶æ
ã§ãã30 ç§å¾ã«å試è¡ãã¾ã...\n"
+
+#: backend/usb-unix.c:437
msgid "INFO: Printer busy; will retry in 5 seconds...\n"
-msgstr "INFO: ããªã³ã¿ã§ã®å¦çãæ··ã¿åã£ã¦ãã¾ãã5 ç§å¾ã«å試è¡ãã¾ã...\n"
+msgstr "INFO: ããªã³ã¿ã¼ããã¸ã¼ç¶æ
ã§ãã5 ç§å¾ã«å試è¡ãã¾ã...\n"
+
+#: backend/ipp.c:728 backend/ipp.c:1038
+#, c-format
msgid "INFO: Printer does not support IPP/%d.%d, trying IPP/1.0...\n"
-msgstr "INFO: ããªã³ã¿ã¯ IPP/%d.%d ã«å¯¾å¿ãã¦ãã¾ãããIPP/1.0 ã試è¡ä¸...\n"
+msgstr "INFO: ããªã³ã¿ã¼ã IPP/%d.%d ããµãã¼ããã¦ãã¾ãããIPP/1.0 ã試ãã¾ã...\n"
+
+#: backend/usb-unix.c:521
msgid "INFO: Printer is busy; will retry in 5 seconds...\n"
-msgstr "INFO: ããªã³ã¿ã§ã®å¦çãæ··ã¿åã£ã¦ãã¾ãã5 ç§å¾ã«å試è¡ãã¾ã...\n"
+msgstr "INFO: ããªã³ã¿ã¼ããã¸ã¼ç¶æ
ã§ãã5 ç§å¾ã«å試è¡ãã¾ã...\n"
+
+#: backend/runloop.c:357
msgid "INFO: Printer is currently off-line.\n"
-msgstr "INFO: ããªã³ã¿ã¯ç¾å¨ãªãã©ã¤ã³ã§ãã\n"
+msgstr "INFO: ããªã³ã¿ã¼ã¯ç¾å¨ãªãã©ã¤ã³ã§ãã\n"
+
+#: backend/runloop.c:243
msgid "INFO: Printer is currently offline.\n"
-msgstr "INFO: ããªã³ã¿ã¯ç¾å¨ãªãã©ã¤ã³ã§ãã\n"
+msgstr "INFO: ããªã³ã¿ã¼ã¯ç¾å¨ãªãã©ã¤ã³ã§ãã\n"
+
+#: backend/runloop.c:379 backend/usb-darwin.c:1144
msgid "INFO: Printer is now online.\n"
-msgstr "INFO: ããªã³ã¿ããªã³ã©ã¤ã³ã«ãªãã¾ããã\n"
+msgstr "INFO: ããªã³ã¿ã¼ã¯ç¾å¨ãªã³ã©ã¤ã³ã§ãã\n"
+
+#: backend/usb-darwin.c:1162
msgid "INFO: Printer is offline.\n"
-msgstr "INFO: ããªã³ã¿ã¯ãªãã©ã¤ã³ã§ãã\n"
+msgstr "INFO: ããªã³ã¿ã¼ã¯ãªãã©ã¤ã³ã§ãã\n"
+
+#: backend/parallel.c:242 backend/usb-unix.c:139
msgid "INFO: Printer not connected; will retry in 30 seconds...\n"
-msgstr "INFO: ããªã³ã¿ãæ¥ç¶ããã¦ãã¾ããã30 ç§å¾ã«å試è¡ãã¾ã...\n"
+msgstr "INFO: ããªã³ã¿ã¼ã«æ¥ç¶ã§ãã¾ããã30 ç§å¾ã«å試è¡ãã¾ã...\n"
+
+#: filter/rastertoepson.c:1076 filter/rastertohp.c:801
+#: filter/rastertolabel.c:1232
+#, c-format
msgid "INFO: Printing page %d, %d%% complete...\n"
-msgstr "INFO: %d ãã¼ã¸ãããªã³ãä¸ã%d%% ãå®äºãã¾ãã...\n"
+msgstr "INFO: ãã¼ã¸ %d ãããªã³ãä¸ã%d%% å®äºãã¾ãã...\n"
+
+#: filter/imagetops.c:808
+#, c-format
msgid "INFO: Printing page %d...\n"
-msgstr "INFO: %d ãã¼ã¸ãããªã³ãä¸...\n"
+msgstr "INFO: ãã¼ã¸ %d ãããªã³ãä¸...\n"
+
+#: backend/socket.c:459 filter/rastertoepson.c:1126 filter/rastertohp.c:856
+#: filter/rastertolabel.c:1281
msgid "INFO: Ready to print.\n"
-msgstr "INFO: ããªã³ãã®æºåãæ´ãã¾ããã\n"
+msgstr "INFO: ããªã³ãã®æºåãã§ãã¦ãã¾ã\n"
+
+#: backend/lpd.c:1147
+#, c-format
msgid "INFO: Sending control file (%lu bytes)\n"
-msgstr "INFO: å¶å¾¡ãã¡ã¤ã«ï¼%lu ãã¤ãï¼ãéä¿¡ä¸\n"
+msgstr "INFO: ã³ã³ããã¼ã«ãã¡ã¤ã«ãéä¿¡ä¸ (%lu ãã¤ã)\n"
+
+#: backend/lpd.c:1000
+#, c-format
msgid "INFO: Sending control file (%u bytes)\n"
-msgstr "INFO: å¶å¾¡ãã¡ã¤ã«ï¼%u ãã¤ãï¼ãéä¿¡ä¸\n"
+msgstr "INFO: ã³ã³ããã¼ã«ãã¡ã¤ã«ãéä¿¡ä¸ (%u ãã¤ã)\n"
+
+#: backend/pap.c:564
msgid "INFO: Sending data\n"
msgstr "INFO: ãã¼ã¿ãéä¿¡ä¸\n"
+
+#: backend/lpd.c:1059
+#, c-format
msgid "INFO: Sending data file (%ld bytes)\n"
-msgstr "INFO: ãã¼ã¿ãã¡ã¤ã«ï¼%ld ãã¤ãï¼ãéä¿¡ä¸\n"
+msgstr "INFO: ãã¼ã¿ãã¡ã¤ã«ãéä¿¡ä¸ (%ld ãã¤ã)\n"
+
+#: backend/lpd.c:1057
+#, c-format
msgid "INFO: Sending data file (%lld bytes)\n"
-msgstr "INFO: ãã¼ã¿ãã¡ã¤ã«ï¼%lld ãã¤ãï¼ãéä¿¡ä¸\n"
+msgstr "INFO: ãã¼ã¿ãã¡ã¤ã«ãéä¿¡ä¸ (%lld ãã¤ã)\n"
+
+#: backend/usb-darwin.c:521
msgid "INFO: Sending print data...\n"
msgstr "INFO: ããªã³ããã¼ã¿ãéä¿¡ä¸...\n"
+
+#: backend/parallel.c:294 backend/socket.c:406 backend/usb-unix.c:201
+#, c-format
msgid "INFO: Sent print file, %ld bytes...\n"
-msgstr "INFO: ããªã³ããã¡ã¤ã« %ld ãã¤ããéä¿¡ããã¾ãã...\n"
+msgstr "INFO: ããªã³ããã¡ã¤ã«ãéä¿¡ã%ld ãã¤ã...\n"
+
+#: backend/parallel.c:292 backend/socket.c:404 backend/usb-unix.c:199
+#, c-format
msgid "INFO: Sent print file, %lld bytes...\n"
-msgstr "INFO: ããªã³ããã¡ã¤ã« %lld ãã¤ããéä¿¡ããã¾ãã...\n"
+msgstr "INFO: ããªã³ããã¡ã¤ã«ãéä¿¡ã%lld ãã¤ã...\n"
+
+#: backend/lpd.c:1071
+#, c-format
msgid "INFO: Spooling LPR job, %.0f%% complete...\n"
-msgstr "INFO: LPR ã¸ã§ããã¹ãã¼ã«ä¸ã%.0f%% ãå®äºãã¾ãã...\n"
+msgstr "INFO: LPR ã¸ã§ããã¹ãã¼ã«ä¸ã%.0f%% å®äºãã¾ãã...\n"
+
+#: backend/ipp.c:551 backend/ipp.c:809 backend/lpd.c:802
+#: backend/parallel.c:221 backend/scsi-irix.c:125 backend/scsi-linux.c:139
+#: backend/serial.c:241 backend/socket.c:294 backend/usb-unix.c:117
msgid "INFO: Unable to contact printer, queuing on next printer in class...\n"
-msgstr "INFO: ããªã³ã¿ã«æ¥ç¶ã§ãã¾ãããã¯ã©ã¹å
ã®æ¬¡ã®ããªã³ã¿ã®ãã¥ã¼ã«å
¥ãã¾ã...\n"
+msgstr "INFO: ããªã³ã¿ã¼ã¨äº¤ä¿¡ã§ãã¾ãããã¯ã©ã¹å
ã®æ¬¡ã®ããªã³ã¿ã¼ã«ãã¥ã¼ãã¾ã...\n"
+
+#: backend/pap.c:309
+#, c-format
msgid "INFO: Using default AppleTalk zone \"%s\"\n"
-msgstr "INFO: ããã©ã«ãã® AppleTalk ã¾ã¼ã³â%sâã使ç¨ä¸\n"
+msgstr "INFO: ããã©ã«ãã® AppleTalk ã¾ã¼ã³ \"%s\" ã使ãã¾ã\n"
+
+#: backend/ipp.c:1132
msgid "INFO: Waiting for job to complete...\n"
-msgstr "INFO: ã¸ã§ãã®å®äºãå¾
æ©ä¸...\n"
+msgstr "INFO: ã¸ã§ããå®äºããã®ãå¾
ã£ã¦ãã¾ã...\n"
+
+#: backend/usb-darwin.c:441 backend/usb-libusb.c:117
msgid "INFO: Waiting for printer to become available...\n"
-msgstr "INFO: ããªã³ã¿ãå©ç¨å¯è½ã«ãªãã®ãå¾
æ©ä¸...\n"
+msgstr "INFO: ããªã³ã¿ã¼ã使ç¨å¯è½ã«ãªãã®ãå¾
ã£ã¦ãã¾ã...\n"
+
+#: ppdc/sample.c:93
msgid "ISO B0"
msgstr "ISO B0"
+
+#: ppdc/sample.c:94
msgid "ISO B1"
msgstr "ISO B1"
+
+#: ppdc/sample.c:104
msgid "ISO B10"
msgstr "ISO B10"
+
+#: ppdc/sample.c:95
msgid "ISO B2"
msgstr "ISO B2"
+
+#: ppdc/sample.c:96
msgid "ISO B3"
msgstr "ISO B3"
+
+#: ppdc/sample.c:97
msgid "ISO B4"
msgstr "ISO B4"
+
+#: ppdc/sample.c:69
msgid "ISO B4 Envelope"
msgstr "ISO B4 å°ç"
+
+#: ppdc/sample.c:98
msgid "ISO B5"
msgstr "ISO B5"
+
+#: ppdc/sample.c:99
msgid "ISO B5 (Oversize)"
-msgstr "ISO B5ï¼ç¹å¤§ï¼"
+msgstr "ISO B5 (ç¹å¤§)"
+
+#: ppdc/sample.c:70
msgid "ISO B5 Envelope"
msgstr "ISO B5 å°ç"
+
+#: ppdc/sample.c:100
msgid "ISO B6"
msgstr "ISO B6"
+
+#: ppdc/sample.c:71
msgid "ISO B6 Envelope"
msgstr "ISO B6 å°ç"
+
+#: ppdc/sample.c:101
msgid "ISO B7"
msgstr "ISO B7"
+
+#: ppdc/sample.c:102
msgid "ISO B8"
msgstr "ISO B8"
+
+#: ppdc/sample.c:103
msgid "ISO B9"
msgstr "ISO B9"
+
+#: cups/ppd.c:349
msgid "Illegal control character"
-msgstr "å¶å¾¡æåãä¸æ£ã§ã"
+msgstr "ä¸æ£ãªå¶å¾¡æå"
+
+#: cups/ppd.c:350
msgid "Illegal main keyword string"
-msgstr "ã¡ã¤ã³ãã¼ã¯ã¼ãæååãä¸æ£ã§ã"
+msgstr "ä¸æ£ãªã¡ã¤ã³ãã¼ã¯ã¼ãæåå"
+
+#: cups/ppd.c:351
msgid "Illegal option keyword string"
-msgstr "ãªãã·ã§ã³ãã¼ã¯ã¼ãæååãä¸æ£ã§ã"
+msgstr "ä¸æ£ãªãªãã·ã§ã³ãã¼ã¯ã¼ãæåå"
+
+#: cups/ppd.c:352
msgid "Illegal translation string"
-msgstr "å¤ææååãä¸æ£ã§ã"
+msgstr "ä¸æ£ãªç¿»è¨³æåå"
+
+#: cups/ppd.c:353
msgid "Illegal whitespace character"
-msgstr "空ç½æåãä¸æ£ã§ã"
+msgstr "ä¸æ£ãªç©ºç½æå"
+
+#: backend/ipp.c:1686
msgid "Ink/toner almost empty."
-msgstr "ã¤ã³ã¯ï¼ããã¼ããããã空ã«ãªãã¾ãã"
+msgstr "ã¤ã³ã¯ã¾ãã¯ããã¼ãã»ã¨ãã©ããã¾ããã"
+
+#: backend/ipp.c:1688
msgid "Ink/toner empty!"
-msgstr "ã¤ã³ã¯ï¼ããã¼ã空ã§ãï¼"
+msgstr "ã¤ã³ã¯ã¾ãã¯ããã¼ãããã¾ãã!"
+
+#: backend/ipp.c:1690
msgid "Ink/toner waste bin almost full."
-msgstr "å»ã¤ã³ã¯ã¾ãã¯å»ããã¼ããã¯ã¹ãã»ã¨ãã©ä¸æ¯ã§ãã"
+msgstr "å»ã¤ã³ã¯ã¾ãã¯å»ããã¼å®¹å¨ãã»ã¨ãã©ä¸æ¯ã§ãã"
+
+#: backend/ipp.c:1692
msgid "Ink/toner waste bin full!"
-msgstr "å»ã¤ã³ã¯ã¾ãã¯å»ããã¼ããã¯ã¹ãä¸æ¯ã§ãï¼"
+msgstr "å»ã¤ã³ã¯ã¾ãã¯å»ããã¼å®¹å¨ãä¸æ¯ã§ã!"
+
+#: ppdc/sample.c:246
msgid "Installable Options"
-msgstr "ã¤ã³ã¹ãã¼ã«å¯è½ãªãªãã·ã§ã³"
+msgstr "ã¤ã³ã¹ãã¼ã«å¯è½ãªãã·ã§ã³"
+
+#: ppdc/sample.c:249
msgid "Installed"
-msgstr "ã¤ã³ã¹ãã¼ã«æ¸ã¿"
+msgstr "ã¤ã³ã¹ãã¼ã«ããã¦ãã¾ã"
+
+#: ppdc/sample.c:265
msgid "IntelliBar Label Printer"
-msgstr "IntelliBar ã©ãã«ããªã³ã¿"
+msgstr "IntelliBar ã©ãã«ããªã³ã¿ã¼"
+
+#: ppdc/sample.c:264
msgid "Intellitech"
msgstr "Intellitech"
+
+#: backend/ipp.c:1670
msgid "Interlock open."
msgstr "ã¤ã³ã¿ã¼ããã¯ãéãã¦ãã¾ãã"
+
+#: cups/ppd.c:340
msgid "Internal error"
msgstr "å
é¨ã¨ã©ã¼"
+
+#: ppdc/sample.c:130
msgid "Internet Postage 2-Part"
msgstr "Internet Postage 2-Part"
+
+#: ppdc/sample.c:139
msgid "Internet Postage 2-Part - 2 1/4 x 7 1/2\""
msgstr "Internet Postage 2-Part - 2 1/4 x 7 1/2\""
+
+#: ppdc/sample.c:131
msgid "Internet Postage 3-Part"
msgstr "Internet Postage 3-Part"
+
+#: ppdc/sample.c:140
msgid "Internet Postage 3-Part - 2 1/4 x 7\""
msgstr "Internet Postage 3-Part - 2 1/4 x 7\""
+
+#: backend/ipp.c:204
msgid "Internet Printing Protocol"
-msgstr "IPPï¼Internet Printing Protocolï¼"
+msgstr "ã¤ã³ã¿ã¼ãããå°å·ãããã³ã«"
+
+#: ppdc/sample.c:68
msgid "Invite Envelope"
msgstr "æå¾
ç¶å°ç"
+
+#: ppdc/sample.c:72
msgid "Italian Envelope"
-msgstr "ã¤ã¿ãªã¢æ¨æºå°ç"
+msgstr "ã¤ã¿ãªã¢å°ç"
+
+#: cups/ppd.c:1344
msgid "JCL"
msgstr "JCL"
+
+#: scheduler/ipp.c:9433
+#, c-format
msgid "Job #%d cannot be restarted - no files!"
-msgstr "ã¸ã§ã #%d ãåéã§ãã¾ãã - ãã¡ã¤ã«ãããã¾ããï¼"
+msgstr "ã¸ã§ãçªå· %d ãåéã§ãã¾ãã - ãã¡ã¤ã«ãè¦ã¤ããã¾ãã!"
+
+#: scheduler/ipp.c:3675 scheduler/ipp.c:4045 scheduler/ipp.c:6640
+#: scheduler/ipp.c:6782 scheduler/ipp.c:7888 scheduler/ipp.c:8052
+#: scheduler/ipp.c:8288 scheduler/ipp.c:8333 scheduler/ipp.c:9176
+#: scheduler/ipp.c:9401 scheduler/ipp.c:9818 scheduler/ipp.c:10393
+#, c-format
msgid "Job #%d does not exist!"
-msgstr "ã¸ã§ã #%d ãåå¨ãã¾ããï¼"
+msgstr "ã¸ã§ãçªå· %d ã¯åå¨ãã¾ãã!"
+
+#: scheduler/ipp.c:4076
+#, c-format
msgid "Job #%d is already aborted - can't cancel."
-msgstr "ã¸ã§ã #%d ã¯ãã§ã«ç ´æ£ããã¦ãã¾ã - ãã£ã³ã»ã«ã§ãã¾ããã"
+msgstr "ã¸ã§ãçªå· %d ã¯ãã§ã«ä¸æããã¦ãã¾ã - ãã£ã³ã»ã«ã§ãã¾ããã"
+
+#: scheduler/ipp.c:4070
+#, c-format
msgid "Job #%d is already canceled - can't cancel."
-msgstr "ã¸ã§ã #%d ã¯ãã§ã«ãã£ã³ã»ã«ããã¦ãã¾ã - ãã£ã³ã»ã«ã§ãã¾ããã"
+msgstr "ã¸ã§ãçªå· %d ã¯ãã§ã«ãã£ã³ã»ã«ããã¦ãã¾ã - ãã£ã³ã»ã«ã§ãã¾ããã"
+
+#: scheduler/ipp.c:4082
+#, c-format
msgid "Job #%d is already completed - can't cancel."
-msgstr "ã¸ã§ã #%d ã¯ãã§ã«å®äºãã¦ãã¾ã - ãã£ã³ã»ã«ã§ãã¾ããã"
+msgstr "ã¸ã§ãçªå· %d ã¯ãã§ã«å®äºãã¦ãã¾ã - ãã£ã³ã»ã«ã§ãã¾ããã"
+
+#: scheduler/ipp.c:8375 scheduler/ipp.c:10408
+#, c-format
msgid "Job #%d is finished and cannot be altered!"
-msgstr "ã¸ã§ã #%d ã¯çµäºãã¦ããããå¤æ´ã§ãã¾ããï¼"
+msgstr "ã¸ã§ãçªå· %d ã¯ãã§ã«çµäºããå¤æ´ã§ãã¾ãã!"
+
+#: scheduler/ipp.c:9415
+#, c-format
msgid "Job #%d is not complete!"
-msgstr "ã¸ã§ã #%d ã¯å®äºãã¦ãã¾ããï¼"
+msgstr "ã¸ã§ãçªå· %d ã¯å®äºãã¦ãã¾ãã!"
+
+#: scheduler/ipp.c:3690
+#, c-format
msgid "Job #%d is not held for authentication!"
-msgstr "ã¸ã§ã #%d ã¯èªè¨¼ã®ããã«ä¿çä¸ã§ã¯ããã¾ããï¼"
+msgstr "ã¸ã§ãçªå· %d ã¯èªè¨¼ã®ããã«ä¿çããã¦ãã¾ãã!"
+
+#: scheduler/ipp.c:9190
+#, c-format
msgid "Job #%d is not held!"
-msgstr "ã¸ã§ã #%d ã¯ä¿çä¸ã§ã¯ããã¾ããï¼"
+msgstr "ã¸ã§ãçªå· %d ã¯ä¿çããã¦ãã¾ãã!"
+
+#: scheduler/ipp.c:7866
+#, c-format
msgid "Job #%s does not exist!"
-msgstr "ã¸ã§ã #%s ãåå¨ãã¾ããï¼"
+msgstr "ã¸ã§ãçªå· #%s ã¯åå¨ãã¾ãã!"
+
+#: scheduler/ipp.c:6267
+#, c-format
msgid "Job %d not found!"
-msgstr "ã¸ã§ã %d ãè¦ã¤ããã¾ããï¼"
+msgstr "ã¸ã§ãçªå· %d ã¯è¦ã¤ããã¾ãã!"
+
+#: cgi-bin/ipp-var.c:1031
msgid "Job Completed"
-msgstr "ã¸ã§ããå®äºãã¾ãã"
+msgstr "ã¸ã§ãå®äº"
+
+#: cgi-bin/ipp-var.c:1029
msgid "Job Created"
-msgstr "ã¸ã§ããä½æããã¾ãã"
+msgstr "ã¸ã§ãä½æ"
+
+#: filter/bannertops.c:619
msgid "Job ID: "
-msgstr "ã¸ã§ã IDï¼"
+msgstr "ã¸ã§ã ID: "
+
+#: cgi-bin/ipp-var.c:1035
msgid "Job Options Changed"
-msgstr "ã¸ã§ãã®ãªãã·ã§ã³ãå¤æ´ããã¾ãã"
+msgstr "ã¸ã§ããªãã·ã§ã³å¤æ´"
+
+#: cgi-bin/ipp-var.c:1033
msgid "Job Stopped"
-msgstr "ã¸ã§ããåæ¢ããã¾ãã"
+msgstr "ã¸ã§ãä¸æ¢"
+
+#: filter/bannertops.c:627
msgid "Job UUID: "
-msgstr "ã¸ã§ã UUIDï¼"
+msgstr "ã¸ã§ã UUID: "
+
+#: scheduler/ipp.c:10490
msgid "Job is completed and cannot be changed."
-msgstr "ã¸ã§ãã¯å®äºãã¦ããããå¤æ´ã§ãã¾ããã"
+msgstr "ã¸ã§ãã¯å®äºãå¤æ´ã§ãã¾ããã"
+
+#: cgi-bin/jobs.c:197
msgid "Job operation failed:"
-msgstr "ã¸ã§ãã®æä½ã«å¤±æãã¾ããï¼"
+msgstr "ã¸ã§ãæä½å¤±æ:"
+
+#: scheduler/ipp.c:10526 scheduler/ipp.c:10547 scheduler/ipp.c:10558
msgid "Job state cannot be changed."
-msgstr "ã¸ã§ãã®ç¶æ³ãå¤æ´ã§ãã¾ããã"
+msgstr "ã¸ã§ãã®ç¶æ
ãå¤æ´ã§ãã¾ããã"
+
+#: scheduler/ipp.c:9280
msgid "Job subscriptions cannot be renewed!"
-msgstr "ã¸ã§ãç
§ä¼å
ãæ´æ°ã§ãã¾ããï¼"
+msgstr "ã¸ã§ããµãã¹ã¯ãªãã·ã§ã³ãæ´æ°ã§ãã¾ãã!"
+
+#: cgi-bin/jobs.c:102 cgi-bin/jobs.c:113 cgi-bin/jobs.c:194
msgid "Jobs"
msgstr "ã¸ã§ã"
+
+#: ppdc/sample.c:73
msgid "Kaku2 Envelope"
msgstr "è§ 2 å°ç"
+
+#: ppdc/sample.c:74
msgid "Kaku3 Envelope"
msgstr "è§ 3 å°ç"
+
+#: backend/lpd.c:178
msgid "LPD/LPR Host or Printer"
-msgstr "LPD/LPR ãã¹ãã¾ãã¯ããªã³ã¿"
+msgstr "LPD/LPR ãã¹ãã¾ãã¯ããªã³ã¿ã¼"
+
+#: ppdc/sample.c:202
msgid "Label Printer"
-msgstr "ã©ãã«ããªã³ã¿"
+msgstr "ã©ãã«ããªã³ã¿ã¼"
+
+#: ppdc/sample.c:418
msgid "Label Top"
-msgstr "ã©ãã«ä¸é¨"
+msgstr "ã©ãã«ããã"
+
+#: scheduler/ipp.c:2138 scheduler/ipp.c:6190
+#, c-format
msgid "Language \"%s\" not supported!"
-msgstr "è¨èªâ%sâã«ã¯å¯¾å¿ãã¦ãã¾ããï¼"
+msgstr "è¨èª \"%s\" ã¯ãµãã¼ãããã¦ãã¾ãã!"
+
+#: ppdc/sample.c:127
msgid "Large Address"
-msgstr "ä½æï¼å¤§ï¼"
+msgstr "ã©ã¼ã¸ã¢ãã¬ã¹"
+
+#: ppdc/sample.c:136
msgid "Large Address - 1 4/10 x 3 1/2\""
-msgstr "ä½æï¼å¤§ï¼ - 1 4/10 x 3 1/2\""
+msgstr "ã©ã¼ã¸ã¢ãã¬ã¹ - 1 4/10 x 3 1/2\""
+
+#: ppdc/sample.c:263
msgid "LaserJet Series PCL 4/5"
-msgstr "LaserJet ã·ãªã¼ãº PCL 4/5"
+msgstr "LaserJet Series PCL 4/5"
+
+#: ppdc/sample.c:208
msgid "Light"
msgstr "èã"
+
+#: cups/ppd.c:348
msgid "Line longer than the maximum allowed (255 characters)"
-msgstr "è¡ãæ大許容æåæ°ï¼255 æåï¼ãè¶
ãã¦ãã¾ã"
+msgstr "1 è¡ãæå¤§å¤ (255 æå) ãè¶
ãã¦ãã¾ã"
+
+#: cgi-bin/admin.c:2356
msgid "List Available Printers"
-msgstr "使ç¨å¯è½ãªããªã³ã¿ããªã¹ã表示"
+msgstr "使ç¨å¯è½ãªããªã³ã¿ã¼ããªã¹ãå"
+
+#: filter/bannertops.c:740
msgid "Location: "
-msgstr "å ´æï¼"
+msgstr "å ´æ: "
+
+#: ppdc/sample.c:244
msgid "Long-Edge (Portrait)"
-msgstr "é·è¾ºï¼ç¸¦ï¼"
+msgstr "é·è¾ºçµ¦ç´ (縦åã)"
+
+#: filter/bannertops.c:749
msgid "Make and Model: "
-msgstr "製é å
ã¨æ©ç¨®ï¼"
+msgstr "ããªã³ã¿ã¼ãã©ã¤ãã¼: "
+
+#: ppdc/sample.c:240
msgid "Manual Feed"
msgstr "æå·®ã"
+
+#: filter/bannertops.c:776
msgid "Media Dimensions: "
-msgstr "ã¡ãã£ã¢ã®å¤§ããï¼"
+msgstr "ç¨ç´ã®å¤§ãã: "
+
+#: filter/bannertops.c:796
msgid "Media Limits: "
-msgstr "ã¡ãã£ã¢ã®å¶éï¼"
+msgstr "ç¨ç´ã®å°åé å: "
+
+#: filter/bannertops.c:765
msgid "Media Name: "
-msgstr "ã¡ãã£ã¢ã®ååï¼"
+msgstr "ç¨ç´å:"
+
+#: cups/ppd.c:744 cups/ppd.c:1281
msgid "Media Size"
-msgstr "ã¡ãã£ã¢ãµã¤ãº"
+msgstr "ç¨ç´ãµã¤ãº"
+
+#: cups/ppd.c:748 cups/ppd.c:1285 ppdc/sample.c:234
msgid "Media Source"
-msgstr "ã¡ãã£ã¢ã½ã¼ã¹"
+msgstr "給ç´"
+
+#: ppdc/sample.c:336
msgid "Media Tracking"
-msgstr "ã¡ãã£ã¢ãã©ããã³ã°"
+msgstr "ç¨ç´ã®çµè·¯"
+
+#: cups/ppd.c:746 cups/ppd.c:1283 ppdc/sample.c:257
msgid "Media Type"
-msgstr "ã¡ãã£ã¢ã¿ã¤ã"
+msgstr "ç¨ç´ç¨®é¡"
+
+#: backend/ipp.c:1657
msgid "Media jam!"
-msgstr "ã¡ãã£ã¢ãè©°ã¾ã£ã¦ãã¾ãï¼"
+msgstr "ç´è©°ã¾ãã§ã!"
+
+#: backend/ipp.c:1676
msgid "Media tray almost empty."
-msgstr "ã¡ãã£ã¢ãã¬ã¤ããããã空ã«ãªãã¾ãã"
+msgstr "ç¨ç´ãã¬ã¤ã空ã«ãªãããã¦ãã¾ãã"
+
+#: backend/ipp.c:1678
msgid "Media tray empty!"
-msgstr "ã¡ãã£ã¢ãã¬ã¤ã空ã§ãï¼"
+msgstr "ç¨ç´ãã¬ã¤ã空ã«ãªãã¾ãã!"
+
+#: backend/ipp.c:1674
msgid "Media tray missing!"
-msgstr "ã¡ãã£ã¢ãã¬ã¤ãããã¾ããï¼"
+msgstr "ç¨ç´ãã¬ã¤ãè¦ã¤ããã¾ãã!"
+
+#: backend/ipp.c:1655
msgid "Media tray needs to be filled."
-msgstr "ã¡ãã£ã¢ãã¬ã¤ã«è£å
ãå¿
è¦ã§ãã"
+msgstr "ç¨ç´ãã¬ã¤ã«è£å
ãå¿
è¦ã§ãã"
+
+#: ppdc/sample.c:209
msgid "Medium"
-msgstr "ä¸"
+msgstr "ç´è³ª"
+
+#: cups/ppd.c:337
msgid "Memory allocation error"
-msgstr "ã¡ã¢ãªã®å²ãå½ã¦ã¨ã©ã¼"
+msgstr "ã¡ã¢ãªå²ãå½ã¦ã¨ã©ã¼"
+
+#: cups/ppd.c:338
msgid "Missing PPD-Adobe-4.x header"
msgstr "PPD-Adobe-4.x ããããããã¾ãã"
+
+#: cups/ppd.c:347
msgid "Missing asterisk in column 1"
msgstr "1 åç®ã«ã¢ã¹ã¿ãªã¹ã¯ãããã¾ãã"
+
+#: scheduler/ipp.c:6662
msgid "Missing document-number attribute!"
-msgstr "document-number å±æ§ãããã¾ããï¼"
+msgstr "document-number å±æ§ãããã¾ãã!"
+
+#: cups/adminutil.c:284
+#, c-format
msgid "Missing double quote on line %d!"
-msgstr "%d è¡ç®ã«äºéå¼ç¨ç¬¦ãããã¾ããï¼"
+msgstr "%d è¡ã«äºéå¼ç¨ç¬¦ãããã¾ãã!"
+
+#: cgi-bin/admin.c:2068 cgi-bin/admin.c:2153 cgi-bin/admin.c:2789
+#: cgi-bin/admin.c:3043 cgi-bin/admin.c:3154 cgi-bin/admin.c:3832
msgid "Missing form variable!"
-msgstr "ãã©ã¼ã å¤æ°ãããã¾ããï¼"
+msgstr "form å¤æ°ãããã¾ãã!"
+
+#: scheduler/ipp.c:7062
msgid "Missing notify-subscription-ids attribute!"
-msgstr "notify-subscription-ids å±æ§ãããã¾ããï¼"
+msgstr "notify-subscription-ids å±æ§ãããã¾ãã!"
+
+#: scheduler/ipp.c:3812
msgid "Missing requesting-user-name attribute!"
-msgstr "requesting-user-name å±æ§ãããã¾ããï¼"
+msgstr "requesting-user-name å±æ§ãè¨å®ããã¦ãã¾ãã!"
+
+#: scheduler/ipp.c:465
msgid "Missing required attributes!"
-msgstr "å¿
è¦ãªå±æ§ãããã¾ããï¼"
+msgstr "å¿
é ã®å±æ§ãè¨å®ããã¦ãã¾ãã!"
+
+#: cups/adminutil.c:265
+#, c-format
msgid "Missing value on line %d!"
-msgstr "%d è¡ç®ã«å¤ãããã¾ããï¼"
+msgstr "%d è¡ã«å¤ãããã¾ãã!"
+
+#: cups/ppd.c:339
msgid "Missing value string"
msgstr "å¤æååãããã¾ãã"
-msgid "Model: name = %s\n natural_language = %s\n make-and-model = %s\n device-id = %s\n"
-msgstr "æ©ç¨®ï¼name = %s\n natural_language = %s\n make-and-model = %s\n device-id = %s\n"
+
+#: systemv/lpinfo.c:475
+#, c-format
+msgid ""
+"Model: name = %s\n"
+" natural_language = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+msgstr ""
+"ã¢ãã«: name = %s\n"
+" natural_language = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+
+#: cgi-bin/admin.c:480
msgid "Modify Class"
-msgstr "ã¯ã©ã¹ãå¤æ´"
+msgstr "ã¯ã©ã¹ã®å¤æ´"
+
+#: cgi-bin/admin.c:772
msgid "Modify Printer"
-msgstr "ããªã³ã¿ãå¤æ´"
+msgstr "ããªã³ã¿ã¼ã®å¤æ´"
+
+#: ppdc/sample.c:111
msgid "Monarch"
msgstr "Monarch"
+
+#: ppdc/sample.c:75
msgid "Monarch Envelope"
msgstr "Monarch å°ç"
+
+#: cgi-bin/ipp-var.c:416 cgi-bin/ipp-var.c:493
msgid "Move All Jobs"
-msgstr "ãã¹ã¦ã®ã¸ã§ãã移å"
+msgstr "ãã¹ã¦ã®ã¸ã§ãã®ç§»å"
+
+#: cgi-bin/ipp-var.c:361 cgi-bin/ipp-var.c:414 cgi-bin/ipp-var.c:491
msgid "Move Job"
-msgstr "ã¸ã§ãã移å"
+msgstr "ã¸ã§ãã®ç§»å"
+
+#: cups/http-support.c:1200
msgid "Moved Permanently"
-msgstr "å®å
¨ã«ç§»åããã¾ãã"
+msgstr "å¥ã®å ´æã¸ç§»åãã¾ãã"
+
+#: backend/ipp.c:1057
+#, c-format
msgid "NOTICE: Print file accepted - job ID %d.\n"
-msgstr "NOTICE: ããªã³ããã¡ã¤ã«ã¯åãå
¥ãæ¸ã¿ã§ã - ã¸ã§ã ID %dã\n"
+msgstr "NOTICE: ããªã³ããã¡ã¤ã«ãåãä»ãã¾ãã - ã¸ã§ã ID %dã\n"
+
+#: backend/ipp.c:1051
msgid "NOTICE: Print file accepted - job ID unknown.\n"
-msgstr "NOTICE: ããªã³ããã¡ã¤ã«ã¯åãå
¥ãæ¸ã¿ã§ã - ã¸ã§ã ID ä¸æã\n"
+msgstr "NOTICE: ããªã³ããã¡ã¤ã«ãåãä»ãã¾ãã - ã¸ã§ã ID ä¸æã\n"
+
+#: cups/ppd.c:336
msgid "NULL PPD file pointer"
-msgstr "NULL PPD ãã¡ã¤ã«ãã¤ã³ã¿"
+msgstr "PPD ãã¡ã¤ã«ãã¤ã³ã¿ã¼ã NULL ã§ã"
+
+#: cups/snmp.c:1052
msgid "Name OID uses indefinite length"
-msgstr "åå OID ã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "OID åã¯éå®çãªé·ãã使ç¨ãã¾ã"
+
+#: ppdc/sample.c:402
msgid "Never"
-msgstr "ããªã"
+msgstr "Never"
+
+#: ppdc/sample.c:228
msgid "New Stylus Color Series"
-msgstr "æ°ãã Stylus Color ã·ãªã¼ãº"
+msgstr "New Stylus Color ã·ãªã¼ãº"
+
+#: ppdc/sample.c:230
msgid "New Stylus Photo Series"
-msgstr "æ°ãã Stylus Photo ã·ãªã¼ãº"
+msgstr "New Stylus Photo ã·ãªã¼ãº"
+
+#: cups/ppd.c:1867
msgid "No"
msgstr "ããã"
+
+#: cups/http-support.c:1197
msgid "No Content"
-msgstr "å
容ãããã¾ãã"
+msgstr "ä¸èº«ãããã¾ãã"
+
+#: cups/util.c:1308
msgid "No PPD name!"
-msgstr "PPD åãããã¾ããï¼"
+msgstr "PPD ã®ååãããã¾ãã!"
+
+#: cups/snmp.c:1046
msgid "No VarBind SEQUENCE"
msgstr "VarBind SEQUENCE ãããã¾ãã"
+
+#: cups/adminutil.c:799
msgid "No Windows printer drivers are installed!"
-msgstr "Windows ããªã³ã¿ãã©ã¤ããã¤ã³ã¹ãã¼ã«ããã¦ãã¾ããï¼"
+msgstr "Windows ããªã³ã¿ã¼ãã©ã¤ãã¼ãã¤ã³ã¹ãã¼ã«ããã¦ãã¾ãã!"
+
+#: cups/request.c:504 cups/request.c:763
msgid "No active connection"
-msgstr "ã¢ã¯ãã£ããªæ¥ç¶ãããã¾ãã"
+msgstr "ã¢ã¯ãã£ããªæ¥ç¶ã¯ããã¾ãã"
+
+#: scheduler/ipp.c:3992
+#, c-format
msgid "No active jobs on %s!"
-msgstr "%s ã«ã¢ã¯ãã£ããªã¸ã§ããããã¾ããï¼"
+msgstr "%s ã«ã¯ã¢ã¯ãã£ããªã¸ã§ãã¯ããã¾ãã!"
+
+#: scheduler/ipp.c:308
msgid "No attributes in request!"
-msgstr "è¦æ±ã«å±æ§ãå«ã¾ãã¦ãã¾ããï¼"
+msgstr "ãªã¯ã¨ã¹ãã«å±æ§ãããã¾ãã!"
+
+#: scheduler/ipp.c:3718
msgid "No authentication information provided!"
-msgstr "èªè¨¼æ
å ±ãæä¾ããã¦ãã¾ããï¼"
+msgstr "èªè¨¼æ
å ±ãæä¾ããã¦ãã¾ãã!"
+
+#: cups/snmp.c:1003
msgid "No community name"
msgstr "ã³ãã¥ããã£åãããã¾ãã"
+
+#: scheduler/ipp.c:6462
msgid "No default printer"
-msgstr "ããã©ã«ãããªã³ã¿ãããã¾ãã"
+msgstr "ããã©ã«ãã®ããªã³ã¿ã¼ã¯ããã¾ãã"
+
+#: scheduler/ipp.c:7637
msgid "No destinations added."
-msgstr "éä¿¡å
ã¯è¿½å ããã¾ããã§ããã"
+msgstr "追å ãããå®å
ã¯ããã¾ãã"
+
+#: cups/snmp.c:1033
msgid "No error-index"
-msgstr "error-index ãããã¾ãã"
+msgstr "ã¨ã©ã¼ã¤ã³ããã¯ã¹ãããã¾ãã"
+
+#: cups/snmp.c:1025
msgid "No error-status"
-msgstr "error-status ãããã¾ãã"
+msgstr "ã¨ã©ã¼ã¹ãã¼ã¿ã¹ãããã¾ãã"
+
+#: scheduler/ipp.c:8574 scheduler/ipp.c:9869
msgid "No file!?!"
-msgstr "ãã¡ã¤ã«ãããã¾ããï¼ï¼ï¼"
+msgstr "ãã¡ã¤ã«ãããã¾ãã!?!"
+
+#: cups/util.c:930
msgid "No modification time!"
-msgstr "å¤æ´æå»ãããã¾ããï¼"
+msgstr "å¤æ´æå»ãããã¾ãã!"
+
+#: cups/snmp.c:1050
msgid "No name OID"
-msgstr "åå OID ãããã¾ãã"
+msgstr "OID åãããã¾ãã"
+
+#: cups/util.c:924
msgid "No printer name!"
-msgstr "ããªã³ã¿åãããã¾ããï¼"
+msgstr "ããªã³ã¿ã¼åãããã¾ãã!"
+
+#: cups/util.c:1861
msgid "No printer-uri found for class!"
-msgstr "ã¯ã©ã¹ã® printer-uri ãè¦ã¤ããã¾ããã§ããï¼"
+msgstr "ã¯ã©ã¹ã®ããªã³ã¿ã¼URI ãè¦ã¤ããã¾ãã!"
+
+#: cups/util.c:1876
msgid "No printer-uri found!"
-msgstr "printer-uri ãè¦ã¤ããã¾ããã§ããï¼"
+msgstr "ããªã³ã¿ã¼URI ãè¦ã¤ããã¾ãã!"
+
+#: scheduler/ipp.c:6847
msgid "No printer-uri in request!"
-msgstr "è¦æ±ã« printer-uri ãå«ã¾ãã¦ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼URI ã®ãªã¯ã¨ã¹ããããã¾ãã!"
+
+#: cups/snmp.c:1017
msgid "No request-id"
-msgstr "request-id ãããã¾ãã"
+msgstr "ãªã¯ã¨ã¹ãID ãããã¾ãã"
+
+#: scheduler/ipp.c:6075
msgid "No subscription attributes in request!"
-msgstr "è¦æ±ã« subscription å±æ§ãå«ã¾ãã¦ãã¾ããï¼"
+msgstr "ãªã¯ã¨ã¹ãã«ãµãã¹ã¯ãªãã·ã§ã³å±æ§ãããã¾ãã!"
+
+#: scheduler/ipp.c:7951
msgid "No subscriptions found."
-msgstr "ç
§ä¼å
ãè¦ã¤ããã¾ããã§ããã"
+msgstr "ãµãã¹ã¯ãªãã·ã§ã³ãè¦ã¤ããã¾ããã"
+
+#: cups/snmp.c:1041
msgid "No variable-bindings SEQUENCE"
msgstr "variable-bindings SEQUENCE ãããã¾ãã"
+
+#: cups/snmp.c:996
msgid "No version number"
-msgstr "ãã¼ã¸ã§ã³çªå·ãããã¾ãã"
+msgstr "ãã¼ã¸ã§ã³åãããã¾ãã"
+
+#: ppdc/sample.c:339
msgid "Non-continuous (Mark sensing)"
-msgstr "éé£ç¶ï¼ãã¼ã¯æç¥ï¼"
+msgstr "éé£ç¶ã§ã (Mark sensing)"
+
+#: ppdc/sample.c:338
msgid "Non-continuous (Web sensing)"
-msgstr "éé£ç¶ï¼Web æç¥ï¼"
+msgstr "éé£ç¶ã§ã (Web sensing)"
+
+#: ppdc/sample.c:210
msgid "Normal"
-msgstr "é常"
+msgstr "æ¨æº"
+
+#: cups/http-support.c:1218
msgid "Not Found"
-msgstr "è¦ã¤ããã¾ããã§ãã"
+msgstr "è¦ã¤ããã¾ãã"
+
+#: cups/http-support.c:1230
msgid "Not Implemented"
msgstr "å®è£
ããã¦ãã¾ãã"
+
+#: ppdc/sample.c:248
msgid "Not Installed"
msgstr "ã¤ã³ã¹ãã¼ã«ããã¦ãã¾ãã"
+
+#: cups/http-support.c:1206
msgid "Not Modified"
msgstr "å¤æ´ããã¦ãã¾ãã"
+
+#: cups/http-support.c:1233
msgid "Not Supported"
-msgstr "対å¿ãã¦ãã¾ãã"
+msgstr "ãµãã¼ãããã¦ãã¾ãã"
+
+#: scheduler/ipp.c:1517
msgid "Not allowed to print."
-msgstr "ããªã³ãã許å¯ããã¦ãã¾ããã"
+msgstr "å°å·ã許å¯ããã¦ãã¾ããã"
+
+#: ppdc/sample.c:112
msgid "Note"
-msgstr "ã¡ã¢"
+msgstr "注æ"
+
+#: cups/http-support.c:1188 cups/ppd.c:334
msgid "OK"
msgstr "OK"
+
+#: backend/ipp.c:1698
msgid "OPC almost at end-of-life."
-msgstr "OPC ããããã寿å½ã«ãªãã¾ãã"
+msgstr "OPC ã¯ãããã交æãå¿
è¦ã«ãªãã¾ãã"
+
+#: backend/ipp.c:1700
msgid "OPC at end-of-life!"
-msgstr "OPC ã®å¯¿å½ãåãã¾ããï¼"
+msgstr "OPC ã¯äº¤æææã§ã!"
+
+#: ppdc/sample.c:243
msgid "Off (1-Sided)"
-msgstr "ãªãï¼çé¢ï¼"
+msgstr "Off (çé¢)"
+
+#: ppdc/sample.c:333
msgid "Oki"
msgstr "Oki"
+
+#: cgi-bin/help.c:89 cgi-bin/help.c:130 cgi-bin/help.c:140 cgi-bin/help.c:171
msgid "Online Help"
msgstr "ãªã³ã©ã¤ã³ãã«ã"
+
+#: cups/adminutil.c:983
+#, c-format
msgid "Open of %s failed: %s"
-msgstr "%s ãéãã¾ããã§ããï¼%s"
+msgstr "%s ã®ãªã¼ãã³ã«å¤±æãã¾ãã: %s"
+
+#: cups/ppd.c:342
msgid "OpenGroup without a CloseGroup first"
-msgstr "OpenGroup ã®åã« CloseGroup ãããã¾ãã"
+msgstr "OpenGroup ã®åã«ã¾ã CloseGroup ãå¿
è¦ã§ã"
+
+#: cups/ppd.c:344
msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
-msgstr "OpenUI/JCLOpenUI ã®åã« CloseUI/JCLCloseUI ãããã¾ãã"
+msgstr "OpenUI/JCLOpenUI ã®åã«ã¾ã CloseUI/JCLCloseUI ãå¿
è¦ã§ã"
+
+#: cgi-bin/admin.c:3603
msgid "Operation Policy"
msgstr "æä½ããªã·ã¼"
+
+#: cgi-bin/admin.c:3280 cgi-bin/admin.c:3340
msgid "Options Installed"
msgstr "ã¤ã³ã¹ãã¼ã«ããããªãã·ã§ã³"
+
+#: filter/bannertops.c:670
msgid "Options: "
-msgstr "ãªãã·ã§ã³ï¼"
+msgstr "ãªãã·ã§ã³:"
+
+#: backend/ipp.c:1666
msgid "Out of toner!"
-msgstr "ããã¼ãåãã¦ãã¾ãï¼"
+msgstr "ããã¼åãã§ã!"
+
+#: cups/ppd.c:750 cups/ppd.c:1287
msgid "Output Mode"
msgstr "åºåã¢ã¼ã"
+
+#: backend/ipp.c:1682
msgid "Output bin almost full."
msgstr "æç´ãã¬ã¤ãã»ã¨ãã©ä¸æ¯ã§ãã"
+
+#: backend/ipp.c:1684
msgid "Output bin full!"
-msgstr "æç´ãã¬ã¤ãä¸æ¯ã§ãï¼"
+msgstr "æç´ãã¬ã¤ãä¸æ¯ã§ã!"
+
+#: systemv/lpstat.c:1191 systemv/lpstat.c:1195
+#, c-format
msgid "Output for printer %s is sent to %s\n"
-msgstr "ããªã³ã¿ %s ã®åºå㯠%s ã«éä¿¡ããã¾ã\n"
+msgstr "ããªã³ã¿ã¼ %s ã®åºå㯠%s ã«éããã¾ã\n"
+
+#: systemv/lpstat.c:1185
+#, c-format
msgid "Output for printer %s is sent to remote printer %s on %s\n"
-msgstr "ããªã³ã¿ %1$s ã®åºå㯠%3$s ä¸ã®ãªã¢ã¼ãããªã³ã¿ %2$s ã«éä¿¡ããã¾ã\n"
+msgstr "ããªã³ã¿ã¼ %s ã®åºåã¯ããªã¢ã¼ãããªã³ã¿ã¼ %s (%s ä¸) ã«éããã¾ã\n"
+
+#: systemv/lpstat.c:1209 systemv/lpstat.c:1213
+#, c-format
msgid "Output for printer %s/%s is sent to %s\n"
-msgstr "ããªã³ã¿ %s/%s ã®åºå㯠%s ã«éä¿¡ããã¾ã\n"
+msgstr "ããªã³ã¿ã¼ %s/%s ã®åºå㯠%s ã«éããã¾ã\n"
+
+#: systemv/lpstat.c:1203
+#, c-format
msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
-msgstr "ããªã³ã¿ %1$s/%2$s ã®åºå㯠%4$s ä¸ã®ãªã¢ã¼ãããªã³ã¿ %3$s ã«éä¿¡ããã¾ã\n"
+msgstr "ããªã³ã¿ã¼ %s/%s ã®åºåã¯ããªã¢ã¼ãããªã³ã¿ã¼ %s (%s ä¸) ã«éããã¾ã\n"
+
+#: backend/ipp.c:1680
msgid "Output tray missing!"
-msgstr "æç´ãã¬ã¤ãããã¾ããï¼"
+msgstr "æç´ãã¬ã¤ãè¦ã¤ããã¾ãã!"
+
+#: systemv/cupstestdsc.c:403
msgid "PASS\n"
msgstr "åæ ¼\n"
+
+#: ppdc/sample.c:232
msgid "PCL Laser Printer"
-msgstr "PCL ã¬ã¼ã¶ã¼ããªã³ã¿"
+msgstr "PCL ã¬ã¼ã¶ã¼ããªã³ã¿ã¼"
+
+#: ppdc/sample.c:77
msgid "PRC1 Envelope"
msgstr "PRC1 å°ç"
+
+#: ppdc/sample.c:86
msgid "PRC10 Envelope"
msgstr "PRC10 å°ç"
+
+#: ppdc/sample.c:114
msgid "PRC16K"
msgstr "PRC16K"
+
+#: ppdc/sample.c:78
msgid "PRC2 Envelope"
msgstr "PRC2 å°ç"
+
+#: ppdc/sample.c:79
msgid "PRC3 Envelope"
msgstr "PRC3 å°ç"
+
+#: ppdc/sample.c:115
msgid "PRC32K"
msgstr "PRC32K"
+
+#: ppdc/sample.c:116
msgid "PRC32K (Oversize)"
-msgstr "PRC32Kï¼ç¹å¤§ï¼"
+msgstr "PRC32K (ç¹å¤§)"
+
+#: ppdc/sample.c:80
msgid "PRC4 Envelope"
msgstr "PRC4 å°ç"
+
+#: ppdc/sample.c:81
msgid "PRC5 Envelope"
msgstr "PRC5 å°ç"
+
+#: ppdc/sample.c:82
msgid "PRC6 Envelope"
msgstr "PRC6 å°ç"
+
+#: ppdc/sample.c:83
msgid "PRC7 Envelope"
msgstr "PRC7 å°ç"
+
+#: ppdc/sample.c:84
msgid "PRC8 Envelope"
msgstr "PRC8 å°ç"
+
+#: ppdc/sample.c:85
msgid "PRC9 Envelope"
msgstr "PRC9 å°ç"
+
+#: cups/snmp.c:1013
msgid "Packet does not contain a Get-Response-PDU"
-msgstr "ãã±ããã« Get-Response-PDU ãå«ã¾ãã¦ãã¾ãã"
+msgstr "ãã±ããã Get-Response-PDU ãå«ãã§ãã¾ãã"
+
+#: cups/snmp.c:992
msgid "Packet does not start with SEQUENCE"
-msgstr "ãã±ããã SEQUENCE ã§å§ã¾ã£ã¦ãã¾ãã"
+msgstr "ãã±ããã SEQUENCE ããå§ã¾ãã¾ãã"
+
+#: ppdc/sample.c:332
msgid "ParamCustominCutInterval"
msgstr "ParamCustominCutInterval"
+
+#: ppdc/sample.c:330
msgid "ParamCustominTearInterval"
msgstr "ParamCustominTearInterval"
+
+#: cups/auth.c:149
+#, c-format
msgid "Password for %s on %s? "
-msgstr "%2$s ä¸ã® %1$s ã®ãã¹ã¯ã¼ããå
¥åãã¦ãã ããã"
+msgstr "%s ã®ãã¹ã¯ã¼ã (%s ä¸)? "
+
+#: systemv/cupsaddsmb.c:256
+#, c-format
msgid "Password for %s required to access %s via SAMBA: "
-msgstr "SAMBA çµç±ã§ %2$s ã«ã¢ã¯ã»ã¹ããã«ã¯ %1$s ã®ãã¹ã¯ã¼ããå¿
è¦ã§ãï¼"
+msgstr "%s ã®ãã¹ã¯ã¼ã (SAMBA çµç±ã§ %s ã«ã¢ã¯ã»ã¹ããã®ã«å¿
è¦):"
+
+#: cgi-bin/classes.c:152
msgid "Pause Class"
-msgstr "ã¯ã©ã¹ãä¸æåæ¢"
+msgstr "ã¯ã©ã¹ã®ä¼æ¢"
+
+#: cgi-bin/printers.c:155
msgid "Pause Printer"
-msgstr "ããªã³ã¿ãä¸æåæ¢"
+msgstr "ããªã³ã¿ã¼ã®ä¼æ¢"
+
+#: ppdc/sample.c:420
msgid "Peel-Off"
-msgstr "ã¬ã¤ãã«æ²¿ã£ã¦åãåã"
+msgstr "Peel-Off"
+
+#: ppdc/sample.c:76
msgid "Personal Envelope"
-msgstr "å人ç¨å°ç"
+msgstr "ãã¼ã½ãã«å°ç"
+
+#: ppdc/sample.c:123
msgid "Photo"
msgstr "åç"
+
+#: ppdc/sample.c:124
msgid "Photo Labels"
msgstr "åçã©ãã«"
+
+#: ppdc/sample.c:258
msgid "Plain Paper"
msgstr "æ®éç´"
+
+#: cgi-bin/admin.c:3298 cgi-bin/admin.c:3552
msgid "Policies"
msgstr "ããªã·ã¼"
+
+#: cgi-bin/admin.c:3305 cgi-bin/admin.c:3621 cgi-bin/admin.c:3634
msgid "Port Monitor"
-msgstr "ãã¼ãã¢ãã¿"
+msgstr "ãã¼ãã¢ãã¿ã¼"
+
+#: ppdc/sample.c:250
msgid "PostScript Printer"
-msgstr "PostScript ããªã³ã¿"
+msgstr "ãã¹ãã¹ã¯ãªããããªã³ã¿ã¼"
+
+#: ppdc/sample.c:113
msgid "Postcard"
-msgstr "ã¯ãã"
+msgstr "ãã¬ã"
+
+#: ppdc/sample.c:267
msgid "Print Density"
-msgstr "ããªã³ãæ¿åº¦"
+msgstr "å°å·å¯åº¦"
+
+#: cups/notify.c:82
msgid "Print Job:"
-msgstr "ããªã³ãã¸ã§ãï¼"
+msgstr "ã¸ã§ãã®å°å·:"
+
+#: ppdc/sample.c:312
msgid "Print Mode"
-msgstr "ããªã³ãã¢ã¼ã"
+msgstr "å°å·ã¢ã¼ã"
+
+#: ppdc/sample.c:355
msgid "Print Rate"
-msgstr "ããªã³ãã¬ã¼ã"
+msgstr "å°å·ã¬ã¼ã"
+
+#: cgi-bin/printers.c:164
msgid "Print Self-Test Page"
-msgstr "ã»ã«ããã¹ããã¼ã¸ãããªã³ã"
+msgstr "èªå·±ãã¹ããã¼ã¸ã®å°å·"
+
+#: ppdc/sample.c:299
msgid "Print Speed"
-msgstr "ããªã³ãé度"
+msgstr "å°å·é度"
+
+#: cgi-bin/ipp-var.c:768
msgid "Print Test Page"
-msgstr "ãã¹ããã¼ã¸ãããªã³ã"
+msgstr "ãã¹ããã¼ã¸ã®å°å·"
+
+#: ppdc/sample.c:328
msgid "Print and Cut"
-msgstr "ããªã³ããã¦ã«ãã"
+msgstr "Print and Cut"
+
+#: ppdc/sample.c:316
msgid "Print and Tear"
-msgstr "ããªã³ããã¦åãåã"
+msgstr "Print and Tear"
+
+#: filter/bannertops.c:644
msgid "Printed For: "
-msgstr "ããªã³ã対象ï¼"
+msgstr "Printed For: "
+
+#: filter/bannertops.c:652
msgid "Printed From: "
-msgstr "ããªã³ãå
ï¼"
+msgstr "Printed From: "
+
+#: filter/bannertops.c:872
msgid "Printed On: "
-msgstr "ããªã³ãå
ï¼"
+msgstr "Printed On: "
+
+#: cgi-bin/ipp-var.c:1023
msgid "Printer Added"
-msgstr "ããªã³ã¿ã追å ããã¾ãã"
+msgstr "追å ãããããªã³ã¿ã¼"
+
+#: ppdc/sample.c:235
msgid "Printer Default"
-msgstr "ããªã³ã¿ã®ããã©ã«ã"
+msgstr "ããã©ã«ãã®ããªã³ã¿ã¼"
+
+#: cgi-bin/ipp-var.c:1027
msgid "Printer Deleted"
-msgstr "ããªã³ã¿ãåé¤ããã¾ãã"
+msgstr "åé¤ãããããªã³ã¿ã¼"
+
+#: cgi-bin/ipp-var.c:1025
msgid "Printer Modified"
-msgstr "ããªã³ã¿ãå¤æ´ããã¾ãã"
+msgstr "å¤æ´ãããããªã³ã¿ã¼"
+
+#: filter/bannertops.c:610
msgid "Printer Name: "
-msgstr "ããªã³ã¿åï¼"
+msgstr "ããªã³ã¿ã¼å:"
+
+#: cgi-bin/ipp-var.c:1021
msgid "Printer Paused"
-msgstr "ããªã³ã¿ãä¸æåæ¢ä¸"
+msgstr "ããªã³ã¿ã¼ã®ä¼æ¢"
+
+#: ppdc/sample.c:266
msgid "Printer Settings"
-msgstr "ããªã³ã¿è¨å®"
+msgstr "ããªã³ã¿ã¼è¨å®"
+
+#: backend/ipp.c:1662
msgid "Printer offline."
-msgstr "ããªã³ã¿ã¯ãªãã©ã¤ã³ã§ãã"
+msgstr "ããªã³ã¿ã¼ã¯ãªãã©ã¤ã³ã§ãã"
+
+#: cups/notify.c:126
msgid "Printer:"
-msgstr "ããªã³ã¿ï¼"
+msgstr "ããªã³ã¿ã¼:"
+
+#: cgi-bin/printers.c:189 cgi-bin/printers.c:317
msgid "Printers"
-msgstr "ããªã³ã¿"
+msgstr "ããªã³ã¿ã¼"
+
+#: cgi-bin/classes.c:158 cgi-bin/printers.c:161
msgid "Purge Jobs"
-msgstr "ã¸ã§ããæ¶å»"
+msgstr "ã¸ã§ãã®åé¤"
+
+#: ppdc/sample.c:117
msgid "Quarto"
msgstr "Quarto"
+
+#: scheduler/ipp.c:1512
msgid "Quota limit reached."
-msgstr "å²ãå½ã¦å®¹éã®å¶éã«éãã¾ããã"
+msgstr "Quota ã®å¶éã«éãã¾ããã"
+
+#: berkeley/lpq.c:508
msgid "Rank Owner Job File(s) Total Size\n"
-msgstr "ã©ã³ã¯ ææè
ã¸ã§ã ãã¡ã¤ã« åè¨ãµã¤ãº\n"
+msgstr "ã©ã³ã¯ ææè
ã¸ã§ã ãã¡ã¤ã« åè¨ãµã¤ãº\n"
+
+#: berkeley/lpq.c:504
msgid "Rank Owner Pri Job Files Total Size\n"
msgstr "ã©ã³ã¯ ææè
åªå
ã¸ã§ã ãã¡ã¤ã« åè¨ãµã¤ãº\n"
+
+#: cgi-bin/classes.c:156 cgi-bin/printers.c:159
msgid "Reject Jobs"
-msgstr "ã¸ã§ããæå¦"
+msgstr "ã¸ã§ãã®æå¦"
+
+#: ppdc/sample.c:400
msgid "Reprint After Error"
-msgstr "ã¨ã©ã¼å¾ã«åããªã³ã"
+msgstr "ã¨ã©ã¼å¾ã®åå°å·"
+
+#: cups/http-support.c:1221
msgid "Request Entity Too Large"
-msgstr "è¦æ±ã¨ã³ãã£ãã£ã大ãããã¾ã"
+msgstr "è¦æ±ããã¨ã³ãã£ãã£ã大ãããã¾ã"
+
+#: cups/ppd.c:752 cups/ppd.c:1289 ppdc/sample.c:203
msgid "Resolution"
msgstr "解å度"
+
+#: cgi-bin/classes.c:150
msgid "Resume Class"
-msgstr "ã¯ã©ã¹ãåé"
+msgstr "ã¯ã©ã¹ãåéãã"
+
+#: cgi-bin/printers.c:152
msgid "Resume Printer"
-msgstr "ããªã³ã¿ãåé"
+msgstr "ããªã³ã¿ã¼ãåéãã"
+
+#: ppdc/sample.c:128
msgid "Return Address"
-msgstr "å·®åºäººä½æ"
+msgstr "ã¢ãã¬ã¹ãæ»ã"
+
+#: ppdc/sample.c:137
msgid "Return Address - 3/4 x 2\""
-msgstr "å·®åºäººä½æ - 3/4 x 2\""
+msgstr "ã¢ãã¬ã¹ãæ»ã ã¼ 3/4 x 2\""
+
+#: ppdc/sample.c:421
msgid "Rewind"
-msgstr "å·»ãæ»ã"
+msgstr "æ»ã"
+
+#: cups/adminutil.c:2159
+#, c-format
msgid "Running command: %s %s -N -A %s -c '%s'\n"
-msgstr "ã³ãã³ããå®è¡ä¸ï¼%s %s -N -A %s -c '%s'\n"
+msgstr "ã³ãã³ããå®è¡ä¸: %s %s -N -A %s -c '%s'\n"
+
+#: backend/scsi-irix.c:70 backend/scsi-linux.c:83
msgid "SCSI Printer"
-msgstr "SCSI ããªã³ã¿"
+msgstr "SCSI ããªã³ã¿ã¼"
+
+#: cups/snmp.c:994
msgid "SEQUENCE uses indefinite length"
-msgstr "SEQUENCE ã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "SEQUENCE ã¯ä¸å®é·ã使ç¨ãã¦ãã¾ã"
+
+#: cups/http-support.c:1203
msgid "See Other"
-msgstr "ãã®ä»ãåç
§"
+msgstr "æ®ããè¦ã¦ãã ãã"
+
+#: backend/serial.c:784 backend/serial.c:943 backend/serial.c:1066
+#: backend/serial.c:1160
+#, c-format
msgid "Serial Port #%d"
-msgstr "ã·ãªã¢ã«ãã¼ã #%d"
+msgstr "ã·ãªã¢ã«ã¼ãã¼ã #%d"
+
+#: cgi-bin/ipp-var.c:1037
msgid "Server Restarted"
-msgstr "ãµã¼ããåèµ·åããã¾ãã"
+msgstr "åèµ·åããããµã¼ãã¼"
+
+#: cgi-bin/ipp-var.c:1043
msgid "Server Security Auditing"
-msgstr "ãµã¼ãã®ã»ãã¥ãªãã£ç£æ»"
+msgstr "ãµã¼ãã¼ã®ã»ãã¥ãªãã£ã¼ãã§ãã¯"
+
+#: cgi-bin/ipp-var.c:1039
msgid "Server Started"
-msgstr "ãµã¼ããéå§ããã¾ãã"
+msgstr "éå§ããããµã¼ãã¼"
+
+#: cgi-bin/ipp-var.c:1041
msgid "Server Stopped"
-msgstr "ãµã¼ããåæ¢ããã¾ãã"
+msgstr "åæ¢ããããµã¼ãã¼"
+
+#: cups/http-support.c:1239
msgid "Service Unavailable"
-msgstr "ãµã¼ãã¹ãå©ç¨ã§ãã¾ãã"
+msgstr "å©ç¨ã§ããªããµã¼ãã¹"
+
+#: cgi-bin/admin.c:2790 cgi-bin/admin.c:2836 cgi-bin/admin.c:2993
+#: cgi-bin/admin.c:3012
msgid "Set Allowed Users"
-msgstr "許å¯ããã¦ã¼ã¶ãè¨å®"
+msgstr "許å¯ããã¦ã¼ã¶ã¼ã®è¨å®"
+
+#: cgi-bin/admin.c:3039
msgid "Set As Server Default"
-msgstr "ãµã¼ãã®ããã©ã«ãã¨ãã¦è¨å®"
+msgstr "ãµã¼ãã¼ãããã©ã«ãã«è¨å®"
+
+#: cgi-bin/admin.c:3139
msgid "Set Class Options"
msgstr "ã¯ã©ã¹ãªãã·ã§ã³ãè¨å®"
+
+#: cgi-bin/admin.c:3139 cgi-bin/admin.c:3308 cgi-bin/admin.c:3663
msgid "Set Printer Options"
-msgstr "ããªã³ã¿ãªãã·ã§ã³ãè¨å®"
+msgstr "ããªã³ã¿ã¼ãªãã·ã§ã³ã®è¨å®"
+
+#: cgi-bin/admin.c:3833 cgi-bin/admin.c:3877 cgi-bin/admin.c:3895
msgid "Set Publishing"
-msgstr "å
¬éãè¨å®"
+msgstr "å
¬éã®è¨å®"
+
+#: ppdc/sample.c:129
msgid "Shipping Address"
-msgstr "éä»å
ä½æ"
+msgstr "çºéã¢ãã¬ã¹"
+
+#: ppdc/sample.c:138
msgid "Shipping Address - 2 5/16 x 4\""
-msgstr "éä»å
ä½æ - 2 5/16 x 4\""
+msgstr "çºéã¢ãã¬ã¹ - 2 5/16 x 4\""
+
+#: ppdc/sample.c:245
msgid "Short-Edge (Landscape)"
-msgstr "ç辺ï¼æ¨ªï¼"
+msgstr "ç辺 (横å稿)"
+
+#: ppdc/sample.c:260
msgid "Special Paper"
-msgstr "ç¹æ®ç´"
+msgstr "ã¹ãã·ã£ã«ãã¼ãã¼"
+
+#: ppdc/sample.c:313
msgid "Standard"
msgstr "æ¨æº"
+
+#: cgi-bin/admin.c:3526
msgid "Starting Banner"
msgstr "éå§ããã¼"
+
+#: ppdc/sample.c:118
msgid "Statement"
-msgstr "ã¹ãã¼ãã¡ã³ã"
+msgstr "è¨è¿°"
+
+#: ppdc/sample.c:223
msgid "Stylus Color Series"
msgstr "Stylus Color ã·ãªã¼ãº"
+
+#: ppdc/sample.c:229
msgid "Stylus Photo Series"
msgstr "Stylus Photo ã·ãªã¼ãº"
+
+#: ppdc/sample.c:119
msgid "Super A"
-msgstr "Super A"
+msgstr "ã¹ã¼ãã¼ A"
+
+#: ppdc/sample.c:120
msgid "Super B"
-msgstr "Super B"
+msgstr "ã¹ã¼ãã¼ B"
+
+#: ppdc/sample.c:125
msgid "Super B/A3"
-msgstr "Super B/A3"
+msgstr "ã¹ã¼ãã¼ B/A3"
+
+#: cups/http-support.c:1185
msgid "Switching Protocols"
-msgstr "ãããã³ã«ãåãæ¿ãä¸"
+msgstr "ãããã³ã«ã®å¤æ´"
+
+#: ppdc/sample.c:121
msgid "Tabloid"
-msgstr "Tabloid"
+msgstr "ã¿ããã¤ã"
+
+#: ppdc/sample.c:122
msgid "Tabloid (Oversize)"
-msgstr "Tabloidï¼ç¹å¤§ï¼"
+msgstr "ã¿ããã¤ã (ç¹å¤§)"
+
+#: ppdc/sample.c:314
msgid "Tear"
-msgstr "åãåã"
+msgstr "Tear"
+
+#: ppdc/sample.c:419
msgid "Tear-Off"
-msgstr "åãåã"
+msgstr "Tear-Off"
+
+#: ppdc/sample.c:360
msgid "Tear-Off Adjust Position"
-msgstr "åãåã調æ´ä½ç½®"
+msgstr "Tear-Off ä½ç½®èª¿ç¯"
+
+#: scheduler/ipp.c:7309
+#, c-format
msgid "The PPD file \"%s\" could not be found."
-msgstr "PPD ãã¡ã¤ã«â%sâãè¦ã¤ããã¾ããã§ããã"
+msgstr "PPD ãã¡ã¤ã« \"%s\" ãè¦ã¤ããã¾ããã"
+
+#: scheduler/ipp.c:7296
+#, c-format
msgid "The PPD file \"%s\" could not be opened: %s"
-msgstr "PPD ãã¡ã¤ã«â%sâãéãã¾ããã§ããï¼%s"
+msgstr "PPD ãã¡ã¤ã« \"%s\" ãéãã¾ããã§ãã: %s"
+
+#: cgi-bin/admin.c:638
msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "ã¯ã©ã¹åã«ã¯ 127 æå以ä¸ã®ããªã³ãå¯è½ãªæåã ãã使ç¨ã§ãã¾ãã空ç½ãã¹ã©ãã·ã¥ï¼/ï¼ããã³ãè¨å·ï¼#ï¼ãå«ãããã¨ã¯ã§ãã¾ããã"
+msgstr "ã¯ã©ã¹å㯠127 æå以å
ã®è¡¨ç¤ºå¯è½æåããæãã空ç½ãã¹ã©ãã·ã¥ (/)ããã³ãè¨å· (#) ãå«ãã§ã¯ãªãã¾ããã"
+
+#: scheduler/ipp.c:2165
msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
-msgstr "notify-lease-duration å±æ§ã¯ã¸ã§ãç
§ä¼å
ã§ã¯ä½¿ç¨ã§ãã¾ããã"
+msgstr "notify-lease-duration å±æ§ã¯ãã¸ã§ããµãã¹ã¯ãªãã·ã§ã³ã¨ä¸ç·ã«ä½¿ããã¨ã¯ã§ãã¾ããã"
+
+#: scheduler/ipp.c:2148 scheduler/ipp.c:6200
+#, c-format
msgid "The notify-user-data value is too large (%d > 63 octets)!"
-msgstr "notify-user-data å¤ã大ãããã¾ãï¼%d 㯠63 ãªã¯ããããè¶
ãã¦ãã¾ãï¼ï¼"
+msgstr "notify-user-data å¤ã大ãããã¾ã (%d > 63 ãªã¯ããã)!"
+
+#: cgi-bin/admin.c:821
msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "ããªã³ã¿åã«ã¯ 127 æå以ä¸ã®ããªã³ãå¯è½ãªæåã ãã使ç¨ã§ãã¾ãã空ç½ãã¹ã©ãã·ã¥ï¼/ï¼ããã³ãè¨å·ï¼#ï¼ãå«ãããã¨ã¯ã§ãã¾ããã"
+msgstr "ããªã³ã¿ã¼å㯠127 æå以å
ã®è¡¨ç¤ºå¯è½æåããæãã空ç½ãã¹ã©ãã·ã¥ (/)ããã³ãè¨å· (#) ãå«ãã§ã¯ãªãã¾ããã"
+
+#: scheduler/ipp.c:1347
msgid "The printer or class is not shared!"
-msgstr "ããªã³ã¿ã¾ãã¯ã¯ã©ã¹ãå
±æããã¦ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼ã¾ãã¯ã¯ã©ã¹ã¯å
±æã§ãã¾ãã!"
+
+#: scheduler/ipp.c:872 scheduler/ipp.c:1178 scheduler/ipp.c:3848
+#: scheduler/ipp.c:3954 scheduler/ipp.c:5731 scheduler/ipp.c:6034
+#: scheduler/ipp.c:6347 scheduler/ipp.c:6884 scheduler/ipp.c:7514
+#: scheduler/ipp.c:7570 scheduler/ipp.c:7878 scheduler/ipp.c:8146
+#: scheduler/ipp.c:8236 scheduler/ipp.c:8269 scheduler/ipp.c:8589
+#: scheduler/ipp.c:8980 scheduler/ipp.c:9060 scheduler/ipp.c:10261
+#: scheduler/ipp.c:10714 scheduler/ipp.c:11042 scheduler/ipp.c:11109
+#: scheduler/ipp.c:11392
msgid "The printer or class was not found."
-msgstr "ããªã³ã¿ã¾ãã¯ã¯ã©ã¹ãè¦ã¤ããã¾ããã§ããã"
+msgstr "ããªã³ã¿ã¼ã¾ãã¯ã¯ã©ã¹ãè¦ã¤ããã¾ããã§ããã"
+
+#: scheduler/ipp.c:978 scheduler/ipp.c:2355
+#, c-format
msgid "The printer-uri \"%s\" contains invalid characters."
-msgstr "printer-uriâ%sâã«ç¡å¹ãªæåãå«ã¾ãã¦ãã¾ãã"
+msgstr "printer-uri \"%s\" ã«ã¯ãç¡å¹ãªæåãå«ã¾ãã¦ãã¾ãã"
+
+#: scheduler/ipp.c:3793
msgid "The printer-uri attribute is required!"
-msgstr "printer-uri å±æ§ã¯å¿
é ã§ãï¼"
+msgstr "printer-uri å±æ§ã¯å¿
é ã§ã!"
+
+#: scheduler/ipp.c:962
msgid "The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
-msgstr "printer-uri ã¯âipp://HOSTNAME/classes/CLASSNAMEâã®å½¢å¼ã§ããå¿
è¦ãããã¾ãã"
+msgstr "printer-uri ã¯ã\"ipp://ãã¹ãå/classes/ã¯ã©ã¹å\" å½¢å¼ã§ãªããã°ãªãã¾ããã"
+
+#: scheduler/ipp.c:2339
msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
-msgstr "printer-uri ã¯âipp://HOSTNAME/printers/PRINTERNAMEâã®å½¢å¼ã§ããå¿
è¦ãããã¾ãã"
+msgstr "printer-uri 㯠\"ipp://ãã¹ãå/printers/ããªã³ã¿ã¼å\" å½¢å¼ã§ãªããã°ãªãã¾ããã"
+
+#: cgi-bin/admin.c:385
msgid "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)."
-msgstr "ç
§ä¼å
åã«ã¯ç©ºç½ãã¹ã©ãã·ã¥ï¼/ï¼ãçå符ï¼?ï¼ããã³ãè¨å·ï¼#ï¼ãå«ãããã¨ã¯ã§ãã¾ããã"
+msgstr "ãµãã¹ã¯ãªãã·ã§ã³åã«ã¯ãã¹ãã¼ã¹ãã¹ã©ãã·ã¥ (/)ãçååº (?)ããã³ãè¨å· (#) ã使ç¨ããªãã§ãã ããã"
+
+#: scheduler/ipp.c:6277
msgid "There are too many subscriptions."
-msgstr "ç
§ä¼å
ãå¤ããã¾ãã"
+msgstr "ãµãã¹ã¯ãªãã·ã§ã³ãå¤ããã¾ãã"
+
+#: ppdc/sample.c:407
msgid "Thermal Transfer Media"
msgstr "ç±è»¢åã¡ãã£ã¢"
+
+#: filter/bannertops.c:636
msgid "Title: "
-msgstr "ã¿ã¤ãã«ï¼"
+msgstr "ã¿ã¤ãã«: "
+
+#: backend/ipp.c:1664
msgid "Toner low."
msgstr "ããã¼ãå°ãªããªã£ã¦ãã¾ãã"
+
+#: scheduler/ipp.c:1506
msgid "Too many active jobs."
msgstr "ã¢ã¯ãã£ããªã¸ã§ããå¤ããã¾ãã"
+
+#: scheduler/ipp.c:1444
+#, c-format
msgid "Too many job-sheets values (%d > 2)!"
-msgstr "job-sheets å¤ãå¤ããã¾ãï¼%d 㯠2 ãè¶
ãã¦ãã¾ãï¼ï¼"
+msgstr "job-sheets å¤ãå¤ããã¾ã (%d > 2)!"
+
+#: scheduler/ipp.c:2659
+#, c-format
msgid "Too many printer-state-reasons values (%d > %d)!"
-msgstr "printer-state-reasons å¤ãå¤ããã¾ãï¼%d 㯠%d ãè¶
ãã¦ãã¾ãï¼ï¼"
+msgstr "printer-state-reasons å¤ãå¤ããã¾ã (%d > %d)!"
+
+#: ppdc/sample.c:261
msgid "Transparency"
-msgstr "éæ度"
+msgstr "OHP ã·ã¼ã"
+
+#: ppdc/sample.c:256
msgid "Tray"
msgstr "ãã¬ã¤"
+
+#: ppdc/sample.c:236
msgid "Tray 1"
msgstr "ãã¬ã¤ 1"
+
+#: ppdc/sample.c:237
msgid "Tray 2"
msgstr "ãã¬ã¤ 2"
+
+#: ppdc/sample.c:238
msgid "Tray 3"
msgstr "ãã¬ã¤ 3"
+
+#: ppdc/sample.c:239
msgid "Tray 4"
msgstr "ãã¬ã¤ 4"
+
+#: cups/http-support.c:1224
msgid "URI Too Long"
-msgstr "URI ãé·ããã¾ã"
+msgstr "URI ãé·éãã¾ã"
+
+#: ppdc/sample.c:88
msgid "US Executive"
-msgstr "US Executive"
+msgstr "US ã¨ã°ã¼ã¯ãã£ã"
+
+#: ppdc/sample.c:91
msgid "US Fanfold"
msgstr "US Fanfold"
+
+#: ppdc/sample.c:105
msgid "US Ledger"
-msgstr "US Ledger"
+msgstr "US ã¬ã¸ã£ã¼"
+
+#: ppdc/sample.c:106
msgid "US Legal"
-msgstr "ãªã¼ã¬ã«"
+msgstr "US ãªã¼ã¬ã«"
+
+#: ppdc/sample.c:107
msgid "US Legal (Oversize)"
-msgstr "ãªã¼ã¬ã«ï¼ç¹å¤§ï¼"
+msgstr "US ãªã¼ã¬ã« (ç¹å¤§)"
+
+#: ppdc/sample.c:108
msgid "US Letter"
-msgstr "ã¬ã¿ã¼"
+msgstr "US ã¬ã¿ã¼"
+
+#: ppdc/sample.c:109
msgid "US Letter (Oversize)"
-msgstr "ã¬ã¿ã¼ï¼ç¹å¤§ï¼"
+msgstr "US ã¬ã¿ã¼ (ç¹å¤§)"
+
+#: ppdc/sample.c:110
msgid "US Letter (Small)"
-msgstr "ã¬ã¿ã¼ï¼å°ï¼"
+msgstr "US ã¬ã¿ã¼ (å°)"
+
+#: backend/serial.c:797
+#, c-format
msgid "USB Serial Port #%d"
msgstr "USB ã·ãªã¢ã«ãã¼ã #%d"
+
+#: cgi-bin/admin.c:1921 cgi-bin/admin.c:1934 cgi-bin/admin.c:1958
msgid "Unable to access cupsd.conf file:"
-msgstr "cupsd.conf ãã¡ã¤ã«ã«ã¢ã¯ã»ã¹ã§ãã¾ããï¼"
+msgstr "cupsd.conf ãã¡ã¤ã«ã«ã¢ã¯ã»ã¹ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:437
msgid "Unable to add RSS subscription:"
-msgstr "RSS ç
§ä¼å
ã追å ã§ãã¾ããï¼"
+msgstr " RSS è³¼èªã追å ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:704
msgid "Unable to add class:"
-msgstr "ã¯ã©ã¹ã追å ã§ãã¾ããï¼"
+msgstr "ã¯ã©ã¹ã追å ã§ãã¾ãã:"
+
+#: scheduler/ipp.c:1550
+#, c-format
msgid "Unable to add job for destination \"%s\"!"
-msgstr "éä¿¡å
â%sâã®ã¸ã§ãã追å ã§ãã¾ããï¼"
+msgstr "å®å
\"%s\"ã«ã¸ã§ãã追å ã§ãã¾ãã!"
+
+#: cgi-bin/admin.c:953 cgi-bin/admin.c:1312
msgid "Unable to add printer:"
-msgstr "ããªã³ã¿ã追å ã§ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼ã追å ãã§ãã¾ãã:"
+
+#: scheduler/ipp.c:1292
msgid "Unable to allocate memory for file types!"
-msgstr "ãã¡ã¤ã«ã¿ã¤ãç¨ã«ã¡ã¢ãªãå²ãå½ã¦ããã¾ããï¼"
+msgstr "ãã¡ã¤ã«ã¿ã¤ãç¨ã«ã¡ã¢ãªãå²ãå½ã¦ããã¾ãã!"
+
+#: cgi-bin/admin.c:1418
msgid "Unable to cancel RSS subscription:"
-msgstr "RSS ç
§ä¼å
ããã£ã³ã»ã«ã§ãã¾ããï¼"
+msgstr "RSS è³¼èªããã£ã³ã»ã«ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:3878
msgid "Unable to change printer-is-shared attribute:"
-msgstr "printer-is-shared å±æ§ãå¤æ´ã§ãã¾ããï¼"
+msgstr "printer-is-shared å±æ§ãå¤æ´ãããã¨ãã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:2994
msgid "Unable to change printer:"
-msgstr "ããªã³ã¿ãå¤æ´ã§ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼ãå¤æ´ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:1598 cgi-bin/admin.c:1762
msgid "Unable to change server settings:"
-msgstr "ãµã¼ãè¨å®ãå¤æ´ã§ãã¾ããï¼"
+msgstr "ãµã¼ãã¼ã®è¨å®ãå¤æ´ã§ãã¾ãã:"
+
+#: cups/adminutil.c:941 cups/util.c:1672
msgid "Unable to connect to host."
-msgstr "ãã¹ãã«æ¥ç¶ã§ãã¾ããã"
+msgstr "ãã¹ãã«æ¥ç¶ã§ãã¾ãã"
+
+#: cups/adminutil.c:737
+#, c-format
msgid "Unable to copy 64-bit CUPS printer driver files (%d)!"
-msgstr "64 ããã CUPS ããªã³ã¿ã»ãã©ã¤ãã»ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ããï¼%dï¼ï¼"
+msgstr "64-bit çã® CUPS ããªã³ã¿ã¼ãã©ã¤ãã¼ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ãã (%d)!"
+
+#: cups/adminutil.c:702
+#, c-format
msgid "Unable to copy 64-bit Windows printer driver files (%d)!"
-msgstr "64 ããã Windows ããªã³ã¿ã»ãã©ã¤ãã»ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ããï¼%dï¼ï¼"
+msgstr "64-bit çã® Windows ããªã³ã¿ã¼ãã©ã¤ãã¼ãã³ãã¼ã§ãã¾ãã (%d)!"
+
+#: cups/adminutil.c:533
+#, c-format
msgid "Unable to copy CUPS printer driver files (%d)!"
-msgstr "CUPS ããªã³ã¿ã»ãã©ã¤ãã»ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ããï¼%dï¼ï¼"
+msgstr "è¤æ°ã® CUPS ããªã³ã¿ã¼ãã©ã¤ãã¼ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ãã (%d)ï¼"
+
+#: scheduler/ipp.c:2776
+#, c-format
msgid "Unable to copy PPD file - %s!"
-msgstr "PPD ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ãã - %sï¼"
+msgstr "PPD ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ããï¼ - %s"
+
+#: scheduler/ipp.c:2842
msgid "Unable to copy PPD file!"
-msgstr "PPD ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ããï¼"
+msgstr "PPD ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ãã!"
+
+#: cups/adminutil.c:498
+#, c-format
msgid "Unable to copy Windows 2000 printer driver files (%d)!"
-msgstr "Windows 2000 ããªã³ã¿ã»ãã©ã¤ãã»ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ããï¼%dï¼ï¼"
+msgstr "è¤æ°ã® Windows 2000 ããªã³ã¿ã¼ãã©ã¤ãã¼ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ãã (%d)!"
+
+#: cups/adminutil.c:621
+#, c-format
msgid "Unable to copy Windows 9x printer driver files (%d)!"
-msgstr "Windows 9x ããªã³ã¿ã»ãã©ã¤ãã»ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ããï¼%dï¼ï¼"
+msgstr "è¤æ°ã® Windows 9x ããªã³ã¿ã¼ãã©ã¤ãã¼ãã¡ã¤ã«ãã³ãã¼ã§ãã¾ãã (%d)!"
+
+#: scheduler/ipp.c:2753
+#, c-format
msgid "Unable to copy interface script - %s!"
-msgstr "ã¤ã³ã¿ã¼ãã§ã¤ã¹ã»ã¹ã¯ãªãããã³ãã¼ã§ãã¾ãã - %sï¼"
+msgstr "ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¹ã¯ãªãããã³ãã¼ã§ãã¾ãã! - %s"
+
+#: cups/util.c:613 cups/util.c:1732
msgid "Unable to create printer-uri!"
-msgstr "printer-uri ãä½æã§ãã¾ããï¼"
+msgstr "printer-uri ãä½æã§ãã¾ãã!"
+
+#: cgi-bin/admin.c:1812 cgi-bin/admin.c:1824
msgid "Unable to create temporary file:"
-msgstr "ä¸æãã¡ã¤ã«ãä½æã§ãã¾ããï¼"
+msgstr "ãã³ãã©ãªãã¡ã¤ã«ãä½æã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:2115
msgid "Unable to delete class:"
-msgstr "ã¯ã©ã¹ãåé¤ã§ãã¾ããï¼"
+msgstr "ã¯ã©ã¹ãåé¤ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:2200
msgid "Unable to delete printer:"
-msgstr "ããªã³ã¿ãåé¤ã§ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼ãåé¤ã§ãã¾ãã:"
+
+#: cgi-bin/classes.c:245 cgi-bin/printers.c:254
msgid "Unable to do maintenance command:"
-msgstr "ä¿å®ã³ãã³ããå®è¡ã§ãã¾ããï¼"
+msgstr "ã¡ã³ããã³ã¹ã³ãã³ããå®è¡ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:1936
msgid "Unable to edit cupsd.conf files larger than 1MB!"
-msgstr "1MB ãè¶
ãã cupsd.conf ãã¡ã¤ã«ã¯ç·¨éã§ãã¾ããï¼"
+msgstr "1MB 以ä¸ã® cupsd.conf ãã¡ã¤ã«ã¯ç·¨éã§ãã¾ãã!"
+
+#: cgi-bin/ipp-var.c:362
msgid "Unable to find destination for job!"
-msgstr "ã¸ã§ãã®éä¿¡å
ãè¦ã¤ããã¾ããï¼"
+msgstr "ã¸ã§ãã®å®å
ãè¦ã¤ããã¾ãã!"
+
+#: cups/http-support.c:1430
msgid "Unable to find printer!\n"
-msgstr "ããªã³ã¿ãè¦ã¤ããã¾ããï¼\n"
+msgstr "ããªã³ã¿ã¼ãè¦ã¤ããã¾ãã!\n"
+
+#: cgi-bin/classes.c:435
msgid "Unable to get class list:"
-msgstr "ã¯ã©ã¹ãªã¹ããåå¾ã§ãã¾ããï¼"
+msgstr "ã¯ã©ã¹ãªã¹ããåå¾ã§ãã¾ãã:"
+
+#: cgi-bin/classes.c:534
msgid "Unable to get class status:"
-msgstr "ã¯ã©ã¹ã®ç¶æ³ãåå¾ã§ãã¾ããï¼"
+msgstr "ã¯ã©ã¹ã®ç¶æ
ãåå¾ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:1213
msgid "Unable to get list of printer drivers:"
-msgstr "ããªã³ã¿ãã©ã¤ãã®ãªã¹ããåå¾ã§ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼ãã©ã¤ãã¼ã®ãªã¹ããåå¾ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:2844
msgid "Unable to get printer attributes:"
-msgstr "ããªã³ã¿å±æ§ãåå¾ã§ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼å±æ§ãåå¾ã§ãã¾ãã:"
+
+#: cgi-bin/printers.c:452
msgid "Unable to get printer list:"
-msgstr "ããªã³ã¿ãªã¹ããåå¾ã§ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼ãªã¹ããåå¾ã§ãã¾ãã:"
+
+#: cgi-bin/printers.c:554
msgid "Unable to get printer status:"
-msgstr "ããªã³ã¿ã®ç¶æ³ãåå¾ã§ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼ã®ç¶æ
ãåå¾ã§ãã¾ãã:"
+
+#: cups/adminutil.c:576 cups/adminutil.c:780
+#, c-format
msgid "Unable to install Windows 2000 printer driver files (%d)!"
-msgstr "Windows 2000 ããªã³ã¿ã»ãã©ã¤ãã»ãã¡ã¤ã«ãã¤ã³ã¹ãã¼ã«ã§ãã¾ããï¼%dï¼ï¼"
+msgstr "è¤æ°ã® Windows 2000 ããªã³ã¿ã¼ãã©ã¤ãã¼ãã¡ã¤ã«ãã¤ã³ã¹ãã¼ã«ã§ãã¾ãã (%d)!"
+
+#: cups/adminutil.c:650
+#, c-format
msgid "Unable to install Windows 9x printer driver files (%d)!"
-msgstr "Windows 9x ããªã³ã¿ã»ãã©ã¤ãã»ãã¡ã¤ã«ãã¤ã³ã¹ãã¼ã«ã§ãã¾ããï¼%dï¼ï¼"
+msgstr "è¤æ°ã® Windows 9x ããªã³ã¿ã¼ãã©ã¤ãã¼ãã¡ã¤ã«ãã¤ã³ã¹ãã¼ã«ã§ãã¾ãã (%d)!"
+
+#: cgi-bin/admin.c:703
msgid "Unable to modify class:"
-msgstr "ã¯ã©ã¹ãå¤æ´ã§ãã¾ããï¼"
+msgstr "ã¯ã©ã¹ãå¤æ´ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:952 cgi-bin/admin.c:1311
msgid "Unable to modify printer:"
-msgstr "ããªã³ã¿ãå¤æ´ã§ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼ãå¤æ´ã§ãã¾ãã:"
+
+#: cgi-bin/ipp-var.c:498
msgid "Unable to move job"
msgstr "ã¸ã§ãã移åã§ãã¾ãã"
+
+#: cgi-bin/ipp-var.c:500
msgid "Unable to move jobs"
-msgstr "ã¸ã§ãã移åã§ãã¾ãã"
+msgstr "è¤æ°ã®ã¸ã§ãã移åã§ãã¾ãã"
+
+#: cups/ppd.c:335
msgid "Unable to open PPD file"
-msgstr "PPD ãã¡ã¤ã«ãéãã¾ãã"
+msgstr "PPD ãã¡ã¤ã«ãèªã¿è¾¼ããã¨ãã§ãã¾ãã"
+
+#: cgi-bin/admin.c:3190
msgid "Unable to open PPD file:"
-msgstr "PPD ãã¡ã¤ã«ãéãã¾ããï¼"
+msgstr "PPD ãã¡ã¤ã«ãèªã¿è¾¼ããã¨ãã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:2570
msgid "Unable to open cupsd.conf file:"
-msgstr "cupsd.conf ãã¡ã¤ã«ãéãã¾ããï¼"
+msgstr "cupsd.conf ãã¡ã¤ã«ãéãã¾ãã:"
+
+#: scheduler/ipp.c:6682
+#, c-format
msgid "Unable to open document %d in job %d!"
-msgstr "ã¸ã§ã %2$d ã§æ¸é¡ %1$d ãéãã¾ããï¼"
+msgstr "ããã¥ã¡ã³ã %d (ã¸ã§ã %d)ãéãã¾ãã!"
+
+#: cgi-bin/ipp-var.c:771
msgid "Unable to print test page:"
-msgstr "ãã¹ããã¼ã¸ãããªã³ãã§ãã¾ããï¼"
+msgstr "ãã¹ããã¼ã¸ãå°å·ã§ãã¾ãã:"
+
+#: cups/adminutil.c:2190
+#, c-format
msgid "Unable to run \"%s\": %s\n"
-msgstr "â%sâãå®è¡ã§ãã¾ããï¼%s\n"
+msgstr "\"%s\" ãå®è¡ã§ãã¾ãã: %s\n"
+
+#: cgi-bin/ipp-var.c:575 cgi-bin/ipp-var.c:595
msgid "Unable to send command to printer driver!"
-msgstr "ããªã³ã¿ãã©ã¤ãã«ã³ãã³ããéä¿¡ã§ãã¾ããï¼"
+msgstr "ããªã³ã¿ã¼ãã©ã¤ãã¼ã«ã³ãã³ããéä¿¡ã§ãã¾ãã!"
+
+#: cups/adminutil.c:832
+#, c-format
msgid "Unable to set Windows printer driver (%d)!"
-msgstr "Windows ããªã³ã¿ãã©ã¤ããè¨å®ã§ãã¾ããï¼%dï¼ï¼"
+msgstr "Windows ããªã³ã¿ã¼ãã©ã¤ãã¼ãè¨å®ã§ãã¾ãã (%d)!"
+
+#: cgi-bin/admin.c:3779
msgid "Unable to set options:"
-msgstr "ãªãã·ã§ã³ãè¨å®ã§ãã¾ããï¼"
+msgstr "ãªãã·ã§ã³ãè¨å®ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:3081
msgid "Unable to set server default:"
-msgstr "ãµã¼ãã®ããã©ã«ããè¨å®ã§ãã¾ããï¼"
+msgstr "ãµã¼ãã¼ãããã©ã«ãã«è¨å®ã§ãã¾ãã:"
+
+#: cgi-bin/admin.c:1874
msgid "Unable to upload cupsd.conf file:"
-msgstr "cupsd.conf ãã¡ã¤ã«ãã¢ãããã¼ãã§ãã¾ããï¼"
+msgstr "cupsd.conf ãã¡ã¤ã«ãã¢ãããã¼ãã§ãã¾ãã:"
+
+#: backend/usb-darwin.c:1816 backend/usb-darwin.c:1838
msgid "Unable to use legacy USB class driver!\n"
-msgstr "å¤ã USB ã¯ã©ã¹ãã©ã¤ãã¯ä½¿ç¨ã§ãã¾ããï¼\n"
+msgstr "å¤ãã¿ã¤ãã® USB ã¯ã©ã¹ãã©ã¤ãã¼ã¯ä½¿ç¨ã§ãã¾ãã!\n"
+
+#: cups/http-support.c:1212
msgid "Unauthorized"
-msgstr "æªæ¿èª"
+msgstr "ä¸è¨±å¯"
+
+#: cgi-bin/admin.c:3479
msgid "Units"
msgstr "ã¦ããã"
+
+#: cups/http-support.c:1243 cups/ppd.c:359
msgid "Unknown"
-msgstr "ä¸æ"
+msgstr "æªç¥"
+
+#: backend/ipp.c:1711
+#, c-format
msgid "Unknown printer error (%s)!"
-msgstr "ä¸æãªããªã³ã¿ã¨ã©ã¼ã§ãï¼%sï¼ï¼"
+msgstr "æªç¥ã®ããªã³ã¿ã¼ã¨ã©ã¼ (%s) ã§ã!"
+
+#: scheduler/ipp.c:10915
+#, c-format
msgid "Unknown printer-error-policy \"%s\"."
-msgstr "printer-error-policyâ%sâãä¸æã§ãã"
+msgstr "\"%s\" ã¯æªç¥ã® printer-error-policy ã§ãã"
+
+#: scheduler/ipp.c:10899
+#, c-format
msgid "Unknown printer-op-policy \"%s\"."
-msgstr "printer-op-policyâ%sâãä¸æã§ãã"
+msgstr "\"%s\" ã¯æªç¥ã® printer-op-policy ã§ãã"
+
+#: scheduler/ipp.c:406
+#, c-format
msgid "Unsupported character set \"%s\"!"
-msgstr "æåã»ããâ%sâã«ã¯å¯¾å¿ãã¦ãã¾ããï¼"
+msgstr "\"%s\" ã¯ãµãã¼ãããã¦ããªãæåã»ããã§ã!"
+
+#: scheduler/ipp.c:8555 scheduler/ipp.c:9850
+#, c-format
msgid "Unsupported compression \"%s\"!"
-msgstr "å§ç¸®â%sâã«ã¯å¯¾å¿ãã¦ãã¾ããï¼"
+msgstr "\"%s\" ã¯ãµãã¼ãããã¦ããªãå§ç¸®å½¢å¼ã§ã!"
+
+#: scheduler/ipp.c:11345
+#, c-format
msgid "Unsupported compression attribute %s!"
-msgstr "å§ç¸®å±æ§ %s ã«ã¯å¯¾å¿ãã¦ãã¾ããï¼"
+msgstr "%s ã¯ãµãã¼ãããã¦ããªãå§ç¸®å±æ§ã§ã!"
+
+#: scheduler/ipp.c:11373
+#, c-format
msgid "Unsupported format \"%s\"!"
-msgstr "â%sâã®å½¢å¼ã«ã¯å¯¾å¿ãã¦ãã¾ããï¼"
+msgstr "\"%s\" ã¯ãµãã¼ãããã¦ããªãå½¢å¼ã§ã!"
+
+#: scheduler/ipp.c:1410 scheduler/ipp.c:9984
+#, c-format
msgid "Unsupported format '%s'!"
-msgstr "â%sâã®å½¢å¼ã«ã¯å¯¾å¿ãã¦ãã¾ããï¼"
+msgstr "'%s' ã¯ãµãã¼ãããã¦ããªãå½¢å¼ã§ã!"
+
+#: scheduler/ipp.c:8689 scheduler/ipp.c:9967
+#, c-format
msgid "Unsupported format '%s/%s'!"
-msgstr "â%s/%sâã®å½¢å¼ã«ã¯å¯¾å¿ãã¦ãã¾ããï¼"
+msgstr "'%s/%s' ã¯ãµãã¼ãããã¦ããªãå½¢å¼ã§ã!"
+
+#: cups/snmp.c:1111
msgid "Unsupported value type"
-msgstr "対å¿ãã¦ããªãå¤ã¿ã¤ãã§ã"
+msgstr "ãµãã¼ãããã¦ããªãåã®å¤ã§ã"
+
+#: cups/http-support.c:1227
msgid "Upgrade Required"
msgstr "ã¢ããã°ã¬ã¼ããå¿
è¦ã§ã"
-msgid "Usage:\n\n lpadmin [-h server] -d destination\n lpadmin [-h server] -x destination\n lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n [-r remove-class] [-v device] [-D description]\n [-P ppd-file] [-o name=value]\n [-u allow:user,user] [-u deny:user,user]\n\n"
-msgstr "Usage:\n\n lpadmin [-h server] -d destination\n lpadmin [-h server] -x destination\n lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n [-r remove-class] [-v device] [-D description]\n [-P ppd-file] [-o name=value]\n [-u allow:user,user] [-u deny:user,user]\n\n"
+
+#: systemv/lpadmin.c:805
+msgid ""
+"Usage:\n"
+"\n"
+" lpadmin [-h server] -d destination\n"
+" lpadmin [-h server] -x destination\n"
+" lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n"
+" [-r remove-class] [-v device] [-D description]\n"
+" [-P ppd-file] [-o name=value]\n"
+" [-u allow:user,user] [-u deny:user,user]\n"
+"\n"
+msgstr ""
+"Usage:\n"
+"\n"
+" lpadmin [-h ãµã¼ãã¼] -d å®å
\n"
+" lpadmin [-h ãµã¼ãã¼] -x å®å
\n"
+" lpadmin [-h ãµã¼ãã¼] -p ããªã³ã¿ã¼ [-c 追å ã¯ã©ã¹] [-i ã¤ã³ã¿ã¼ãã§ã¤ã¹]\n"
+" [-m ã¢ãã«] [-r åé¤ã¯ã©ã¹] [-v ããã¤ã¹]\n"
+" [-D å®å
] [-P PPD ãã¡ã¤ã«] [-o åå=å¤]\n"
+" [-u allow:ã¦ã¼ã¶ã¼,ã¦ã¼ã¶ã¼] [-u deny:ã¦ã¼ã¶ã¼,ã¦ã¼ã¶ã¼]\n"
+"\n"
+
+#: filter/pdftops.c:93
+#, c-format
msgid "Usage: %s job user title copies options [filename]\n"
-msgstr "Usage: %s job user title copies options [filename]\n"
+msgstr "使ãæ¹: %s ã¸ã§ãID ã¦ã¼ã¶ã¼ ã¿ã¤ãã« ã³ãã¼æ° ãªãã·ã§ã³ [ãã¡ã¤ã«å]\n"
+
+#: backend/ipp.c:210 backend/lpd.c:184 backend/pap.c:228
+#: backend/parallel.c:127 backend/scsi.c:157 backend/serial.c:165
+#: backend/socket.c:132 backend/usb.c:183 filter/bannertops.c:118
+#: filter/hpgl-main.c:148 filter/imagetops.c:115 filter/imagetoraster.c:207
+#: filter/pstops.c:254 filter/rastertoepson.c:985 filter/rastertohp.c:712
+#: filter/rastertolabel.c:1133 filter/textcommon.c:518
+#, c-format
msgid "Usage: %s job-id user title copies options [file]\n"
-msgstr "Usage: %s job-id user title copies options [file]\n"
+msgstr "使ãæ¹: %s ã¸ã§ãID ã¦ã¼ã¶ã¼ ã¿ã¤ãã« ã³ãã¼æ° ãªãã·ã§ã³ [ãã¡ã¤ã«]\n"
+
+#: filter/gziptoany.c:53
+#, c-format
msgid "Usage: %s job-id user title copies options file\n"
-msgstr "Usage: %s job-id user title copies options file\n"
-msgid "Usage: convert [ options ]\n\nOptions:\n\n -f filename Set file to be converted (otherwise stdin)\n -o filename Set file to be generated (otherwise stdout)\n -i mime/type Set input MIME type (otherwise auto-typed)\n -j mime/type Set output MIME type (otherwise application/pdf)\n -P filename.ppd Set PPD file\n -a 'name=value ...' Set option(s)\n -U username Set username for job\n -J title Set title\n -c copies Set number of copies\n -u Remove the PPD file when finished\n -D Remove the input file when finished\n"
-msgstr "Usage: convert [ options ]\n\nOptions:\n\n -f filename Set file to be converted (otherwise stdin)\n -o filename Set file to be generated (otherwise stdout)\n -i mime/type Set input MIME type (otherwise auto-typed)\n -j mime/type Set output MIME type (otherwise application/pdf)\n -P filename.ppd Set PPD file\n -a 'name=value ...' Set option(s)\n -U username Set username for job\n -J title Set title\n -c copies Set number of copies\n -u Remove the PPD file when finished\n -D Remove the input file when finished\n"
-msgid "Usage: cupsaddsmb [options] printer1 ... printerN\n cupsaddsmb [options] -a\n\nOptions:\n -E Encrypt the connection to the server\n -H samba-server Use the named SAMBA server\n -U samba-user Authenticate using the named SAMBA user\n -a Export all printers\n -h cups-server Use the named CUPS server\n -v Be verbose (show commands)\n"
-msgstr "Usage: cupsaddsmb [options] printer1 ... printerN\n cupsaddsmb [options] -a\n\nOptions:\n -E Encrypt the connection to the server\n -H samba-server Use the named SAMBA server\n -U samba-user Authenticate using the named SAMBA user\n -a Export all printers\n -h cups-server Use the named CUPS server\n -v Be verbose (show commands)\n"
-msgid "Usage: cupsctl [options] [param=value ... paramN=valueN]\n\nOptions:\n\n -E Enable encryption\n -U username Specify username\n -h server[:port] Specify server address\n\n --[no-]debug-logging Turn debug logging on/off\n --[no-]remote-admin Turn remote administration on/off\n --[no-]remote-any Allow/prevent access from the Internet\n --[no-]remote-printers Show/hide remote printers\n --[no-]share-printers Turn printer sharing on/off\n --[no-]user-cancel-any Allow/prevent users to cancel any job\n"
-msgstr "Usage: cupsctl [options] [param=value ... paramN=valueN]\n\nOptions:\n\n -E Enable encryption\n -U username Specify username\n -h server[:port] Specify server address\n\n --[no-]debug-logging Turn debug logging on/off\n --[no-]remote-admin Turn remote administration on/off\n --[no-]remote-any Allow/prevent access from the Internet\n --[no-]remote-printers Show/hide remote printers\n --[no-]share-printers Turn printer sharing on/off\n --[no-]user-cancel-any Allow/prevent users to cancel any job\n"
-msgid "Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n\n-c config-file Load alternate configuration file\n-f Run in the foreground\n-F Run in the foreground but detach\n-h Show this usage message\n-l Run cupsd from launchd(8)\n"
-msgstr "Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n\n-c config-file Load alternate configuration file\n-f Run in the foreground\n-F Run in the foreground but detach\n-h Show this usage message\n-l Run cupsd from launchd(8)\n"
-msgid "Usage: cupsfilter -m mime/type [ options ] filename\n\nOptions:\n\n -c cupsd.conf Set cupsd.conf file to use\n -j job-id[,N] Filter file N from the specified job (default is file 1)\n -n copies Set number of copies\n -o name=value Set option(s)\n -p filename.ppd Set PPD file\n -t title Set title\n"
-msgstr "Usage: cupsfilter -m mime/type [ options ] filename\n\nOptions:\n\n -c cupsd.conf Set cupsd.conf file to use\n -j job-id[,N] Filter file N from the specified job (default is file 1)\n -n copies Set number of copies\n -o name=value Set option(s)\n -p filename.ppd Set PPD file\n -t title Set title\n"
-msgid "Usage: cupstestdsc [options] filename.ps [... filename.ps]\n cupstestdsc [options] -\n\nOptions:\n\n -h Show program usage\n\n Note: this program only validates the DSC comments, not the PostScript itself.\n"
-msgstr "Usage: cupstestdsc [options] filename.ps [... filename.ps]\n cupstestdsc [options] -\n\nOptions:\n\n -h Show program usage\n\n Note: this program only validates the DSC comments, not the PostScript itself.\n"
-msgid "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n program | cupstestppd [options] -\n\nOptions:\n\n -R root-directory Set alternate root\n -W {all,none,constraints,defaults,duplex,filters,translations}\n Issue warnings instead of errors\n -q Run silently\n -r Use 'relaxed' open mode\n -v Be slightly verbose\n -vv Be very verbose\n"
-msgstr "Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n program | cupstestppd [options] -\n\nOptions:\n\n -R root-directory Set alternate root\n -W {all,none,constraints,defaults,duplex,filters,translations}\n Issue warnings instead of errors\n -q Run silently\n -r Use 'relaxed' open mode\n -v Be slightly verbose\n -vv Be very verbose\n"
+msgstr "使ãæ¹: %s ã¸ã§ãID ã¦ã¼ã¶ã¼ ã¿ã¤ãã« ã³ãã¼æ° ãªãã·ã§ã³ ãã¡ã¤ã«\n"
+
+#: scheduler/cupsfilter.c:1297
+msgid ""
+"Usage: convert [ options ]\n"
+"\n"
+"Options:\n"
+"\n"
+" -f filename Set file to be converted (otherwise stdin)\n"
+" -o filename Set file to be generated (otherwise stdout)\n"
+" -i mime/type Set input MIME type (otherwise auto-typed)\n"
+" -j mime/type Set output MIME type (otherwise application/pdf)\n"
+" -P filename.ppd Set PPD file\n"
+" -a 'name=value ...' Set option(s)\n"
+" -U username Set username for job\n"
+" -J title Set title\n"
+" -c copies Set number of copies\n"
+" -u Remove the PPD file when finished\n"
+" -D Remove the input file when finished\n"
+msgstr ""
+"使ãæ¹: convert [ ãªãã·ã§ã³ ]\n"
+"\n"
+"ãªãã·ã§ã³:\n"
+"\n"
+" -f ãã¡ã¤ã«å å¤æãããã¡ã¤ã«ãæå®ãã (çç¥ããã¨æ¨æºå
¥å)\n"
+" -o ãã¡ã¤ã«å çæããããã¡ã¤ã«ãæå®ãã (çç¥ããã¨æ¨æºåºå)\n"
+" -i MIME/ã¿ã¤ã å
¥å MIME ã¿ã¤ããæå®ãã (çç¥ããã¨èªåè¨å®)\n"
+" -j MIME/ã¿ã¤ã åºå MIME ã¿ã¤ããæå®ãã (çç¥ãã㨠application/pdf)\n"
+" -P ãã¡ã¤ã«å.ppd PPD ãã¡ã¤ã«ãæå®ãã\n"
+" -a 'åå=å¤ ...' ãªãã·ã§ã³ãæå®ãã\n"
+" -U ã¦ã¼ã¶ã¼å ã¸ã§ãã®ã¦ã¼ã¶ã¼åãæå®ãã\n"
+" -J ã¿ã¤ãã« ã¿ã¤ãã«ãæå®ãã\n"
+" -c ã³ãã¼æ° ã³ãã¼æ°ãæå®ãã\n"
+" -u å®äºæã« PPD ãã¡ã¤ã«ãåé¤ãã\n"
+" -D å®äºæã«å
¥åãã¡ã¤ã«ãåé¤ãã\n"
+
+#: systemv/cupsaddsmb.c:286
+msgid ""
+"Usage: cupsaddsmb [options] printer1 ... printerN\n"
+" cupsaddsmb [options] -a\n"
+"\n"
+"Options:\n"
+" -E Encrypt the connection to the server\n"
+" -H samba-server Use the named SAMBA server\n"
+" -U samba-user Authenticate using the named SAMBA user\n"
+" -a Export all printers\n"
+" -h cups-server Use the named CUPS server\n"
+" -v Be verbose (show commands)\n"
+msgstr ""
+"使ãæ¹: cupsaddsmb [ãªãã·ã§ã³] ããªã³ã¿ã¼ ... ããªã³ã¿ã¼N\n"
+" cupsaddsmb [ãªãã·ã§ã³] -a\n"
+"\n"
+"ãªãã·ã§ã³:\n"
+" -E ãµã¼ãã¼ã¨ã®æ¥ç¶ãæå·åãã\n"
+" -H sambaãµã¼ãã¼ æå®ã® SAMBA ãµã¼ãã¼ã使ã\n"
+" -U sambaã¦ã¼ã¶ã¼ æå®ã® SAMBA ã¦ã¼ã¶ã¼ã使ã£ã¦èªè¨¼ãã\n"
+" -a ãã¹ã¦ã®ããªã³ã¿ã¼ãã¨ãã¹ãã¼ããã\n"
+" -h cupsãµã¼ãã¼ æå®ã® CUPS ãµã¼ãã¼ã使ã\n"
+" -v åé·ã«ãã (ã³ãã³ãã表示ãã)\n"
+
+#: systemv/cupsctl.c:202
+msgid ""
+"Usage: cupsctl [options] [param=value ... paramN=valueN]\n"
+"\n"
+"Options:\n"
+"\n"
+" -E Enable encryption\n"
+" -U username Specify username\n"
+" -h server[:port] Specify server address\n"
+"\n"
+" --[no-]debug-logging Turn debug logging on/off\n"
+" --[no-]remote-admin Turn remote administration on/off\n"
+" --[no-]remote-any Allow/prevent access from the Internet\n"
+" --[no-]remote-printers Show/hide remote printers\n"
+" --[no-]share-printers Turn printer sharing on/off\n"
+" --[no-]user-cancel-any Allow/prevent users to cancel any job\n"
+msgstr ""
+"使ãæ¹: cupsctl [ãªãã·ã§ã³] [ãã©ã¡ã¼ã¿=å¤ ... ãã©ã¡ã¼ã¿N=å¤N]\n"
+"\n"
+"ãªãã·ã§ã³:\n"
+"\n"
+" -E æå·åãæå¹ã«ãã\n"
+" -U ã¦ã¼ã¶å ã¦ã¼ã¶ã¼åãæå®ãã\n"
+" -h ãµã¼ãã¼[:ãã¼ã] ãµã¼ãã¼ã¢ãã¬ã¹ãæå®ãã\n"
+"\n"
+" --[no-]debug-logging ãããã°ãã°ã®æå¹/ç¡å¹ãåãæ¿ãã\n"
+" --[no-]remote-admin ãªã¢ã¼ã管çã®æå¹/ç¡å¹ãåãæ¿ãã\n"
+" --[no-]remote-any ã¤ã³ã¿ã¼ãããããã®ã¢ã¯ã»ã¹ã許å¯/ç¦æ¢ãã\n"
+" --[no-]remote-printers ãªã¢ã¼ãããªã³ã¿ã¼ã表示/é表示ã«ãã\n"
+" --[no-]share-printers ããªã³ã¿ã¼å
±æã®æå¹/ç¡å¹ãåãæ¿ãã\n"
+" --[no-]user-cancel-any ããããã¸ã§ãã®ãã£ã³ã»ã«ãã¦ã¼ã¶ã¼ã«è¨±å¯/ç¦æ¢ãã\n"
+
+#: scheduler/main.c:2057
+msgid ""
+"Usage: cupsd [-c config-file] [-f] [-F] [-h] [-l]\n"
+"\n"
+"-c config-file Load alternate configuration file\n"
+"-f Run in the foreground\n"
+"-F Run in the foreground but detach\n"
+"-h Show this usage message\n"
+"-l Run cupsd from launchd(8)\n"
+msgstr ""
+"使ãæ¹: cupsd [-c è¨å®ãã¡ã¤ã«] [-f] [-F] [-h] [-l]\n"
+"\n"
+"-c è¨å®ãã¡ã¤ã« å¥ã®è¨å®ãã¡ã¤ã«ããã¼ããã\n"
+"-f ãã©ã¢ã°ã©ã¦ã³ãã§å®è¡ãã\n"
+"-F ãã©ã¢ã°ã©ã¦ã³ãã§å®è¡ããããã¿ãããã\n"
+"-h ãã®ä½¿ãæ¹ã表示ãã\n"
+"-l launchd(8) ãã cupsd ãå®è¡ãã\n"
+
+#: scheduler/cupsfilter.c:1285
+msgid ""
+"Usage: cupsfilter -m mime/type [ options ] filename\n"
+"\n"
+"Options:\n"
+"\n"
+" -c cupsd.conf Set cupsd.conf file to use\n"
+" -j job-id[,N] Filter file N from the specified job (default is file 1)\n"
+" -n copies Set number of copies\n"
+" -o name=value Set option(s)\n"
+" -p filename.ppd Set PPD file\n"
+" -t title Set title\n"
+msgstr ""
+"使ãæ¹: cupsfilter -m MIME/ã¿ã¤ã [ ãªãã·ã§ã³ ] ãã¡ã¤ã«å\n"
+"\n"
+"ãªãã·ã§ã³:\n"
+"\n"
+" -c cupsd.conf å©ç¨ãã cupsd.conf ãã¡ã¤ã«ãæå®ãã\n"
+" -n ã³ãã¼æ° ã³ãã¼æ°ãæå®ãã\n"
+" -o åå=å¤ ãªãã·ã§ã³ãæå®ãã\n"
+" -p ãã¡ã¤ã«å.ppd PPD ãã¡ã¤ã«ãæå®ãã\n"
+" -t ã¿ã¤ãã« ã¿ã¤ãã«ãæå®ãã\n"
+
+#: systemv/cupstestdsc.c:430
+msgid ""
+"Usage: cupstestdsc [options] filename.ps [... filename.ps]\n"
+" cupstestdsc [options] -\n"
+"\n"
+"Options:\n"
+"\n"
+" -h Show program usage\n"
+"\n"
+" Note: this program only validates the DSC comments, not the PostScript itself.\n"
+msgstr ""
+"使ãæ¹: cupstestdsc [ãªãã·ã§ã³] ãã¡ã¤ã«å.ps [... ãã¡ã¤ã«å.ps]\n"
+" cupstestdsc [ãªãã·ã§ã³] -\n"
+"\n"
+"ãªãã·ã§ã³:\n"
+"\n"
+" -h ããã°ã©ã ã®ä½¿ãæ¹ã表示ãã\n"
+"\n"
+" 注æ: ãã®ããã°ã©ã 㯠DSC ã³ã¡ã³ããæ¤è¨¼ããã ãã§ãPostScript èªèº«ãæ¤è¨¼ãããã®ã§ã¯ããã¾ããã\n"
+
+#: systemv/cupstestppd.c:2928
+msgid ""
+"Usage: cupstestppd [options] filename1.ppd[.gz] [... filenameN.ppd[.gz]]\n"
+" program | cupstestppd [options] -\n"
+"\n"
+"Options:\n"
+"\n"
+" -R root-directory Set alternate root\n"
+" -W {all,none,constraints,defaults,duplex,filters,translations}\n"
+" Issue warnings instead of errors\n"
+" -q Run silently\n"
+" -r Use 'relaxed' open mode\n"
+" -v Be slightly verbose\n"
+" -vv Be very verbose\n"
+msgstr ""
+"使ãæ¹: cupstestppd [ãªãã·ã§ã³] ãã¡ã¤ã«å1.ppd[.gz] [...ãã¡ã¤ã«åN.ppd[.gz]]\n"
+" ããã°ã©ã | cupstestppd [ãªãã·ã§ã³] -\n"
+"\n"
+"ãªãã·ã§ã³:\n"
+"\n"
+" -R ã«ã¼ããã£ã¬ã¯ã㪠å¥ã®ã«ã¼ããæå®ãã\n"
+" -W {all,none,constraints,defaults,filters,translations}\n"
+" ã¨ã©ã¼ã®ä»£ããã«è¦åãçºè¡ãã\n"
+" -q 詳細ã¯è¡¨ç¤ºããªã\n"
+" -r å¯å®¹ã¢ã¼ã\n"
+" -v ãã詳細ã«è¡¨ç¤ºãã\n"
+" -vv é常ã«è©³ç´°ã«è¡¨ç¤ºãã\n"
+
+#: systemv/lpmove.c:132
msgid "Usage: lpmove job/src dest\n"
-msgstr "Usage: lpmove job/src dest\n"
-msgid "Usage: lpoptions [-h server] [-E] -d printer\n lpoptions [-h server] [-E] [-p printer] -l\n lpoptions [-h server] [-E] -p printer -o option[=value] ...\n lpoptions [-h server] [-E] -x printer\n"
-msgstr "Usage: lpoptions [-h server] [-E] -d printer\n lpoptions [-h server] [-E] [-p printer] -l\n lpoptions [-h server] [-E] -p printer -o option[=value] ...\n lpoptions [-h server] [-E] -x printer\n"
+msgstr "使ãæ¹: lpmove ã¸ã§ã/ã½ã¼ã¹ å®å
\n"
+
+#: systemv/lpoptions.c:540
+msgid ""
+"Usage: lpoptions [-h server] [-E] -d printer\n"
+" lpoptions [-h server] [-E] [-p printer] -l\n"
+" lpoptions [-h server] [-E] -p printer -o option[=value] ...\n"
+" lpoptions [-h server] [-E] -x printer\n"
+msgstr ""
+"使ãæ¹: lpoptions [-h ãµã¼ãã¼] [-E] -d ããªã³ã¿ã¼\n"
+" ã lpoptions [-h ãµã¼ãã¼] [-E] [-p ããªã³ã¿ã¼] -l\n"
+" lpoptions [-h ãµã¼ãã¼] [-E] -p ããªã³ã¿ã¼ -o ãªãã·ã§ã³[=å¤] ...\n"
+" lpoptions [-h ãµã¼ãã¼] [-E] -x ããªã³ã¿ã¼\n"
+
+#: systemv/lppasswd.c:493
msgid "Usage: lppasswd [-g groupname]\n"
-msgstr "Usage: lppasswd [-g groupname]\n"
-msgid "Usage: lppasswd [-g groupname] [username]\n lppasswd [-g groupname] -a [username]\n lppasswd [-g groupname] -x [username]\n"
-msgstr "Usage: lppasswd [-g groupname] [username]\n lppasswd [-g groupname] -a [username]\n lppasswd [-g groupname] -x [username]\n"
+msgstr "使ãæ¹: lppasswd [-g ã°ã«ã¼ãå]\n"
+
+#: systemv/lppasswd.c:496
+msgid ""
+"Usage: lppasswd [-g groupname] [username]\n"
+" lppasswd [-g groupname] -a [username]\n"
+" lppasswd [-g groupname] -x [username]\n"
+msgstr ""
+"使ãæ¹: lppasswd [-g ã°ã«ã¼ãå] [ã¦ã¼ã¶å]\n"
+" lppasswd [-g ã°ã«ã¼ãå] -a [ã¦ã¼ã¶å]\n"
+" lppasswd [-g ã°ã«ã¼ãå] -x [ã¦ã¼ã¶å]\n"
+
+#: berkeley/lpq.c:663
msgid "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-msgstr "Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
-msgid "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]\nOptions:\n -D name=value Set named variable to value.\n -I include-dir Add include directory to search path.\n -c catalog.po Load the specified message catalog.\n -d output-dir Specify the output directory.\n -l lang[,lang,...] Specify the output language(s) (locale).\n -m Use the ModelName value as the filename.\n -t Test PPDs instead of generating them.\n -v Be verbose (more v's for more verbosity).\n -z Compress PPD files using GNU zip.\n --cr End lines with CR (Mac OS 9).\n --crlf End lines with CR + LF (Windows).\n --lf End lines with LF (UNIX/Linux/Mac OS X).\n"
-msgstr "Usage: ppdc [options] filename.drv [ ... filenameN.drv ]\nOptions:\n -D name=value Set named variable to value.\n -I include-dir Add include directory to search path.\n -c catalog.po Load the specified message catalog.\n -d output-dir Specify the output directory.\n -l lang[,lang,...] Specify the output language(s) (locale).\n -m Use the ModelName value as the filename.\n -t Test PPDs instead of generating them.\n -v Be verbose (more v's for more verbosity).\n -z Compress PPD files using GNU zip.\n --cr End lines with CR (Mac OS 9).\n --crlf End lines with CR + LF (Windows).\n --lf End lines with LF (UNIX/Linux/Mac OS X).\n"
-msgid "Usage: ppdhtml [options] filename.drv >filename.html\n -D name=value Set named variable to value.\nOptions:\n -I include-dir Add include directory to search path.\n"
-msgstr "Usage: ppdhtml [options] filename.drv >filename.html\n -D name=value Set named variable to value.\nOptions:\n -I include-dir Add include directory to search path.\n"
-msgid "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]\nOptions:\n -I include-dir\n -o filename.drv\n"
-msgstr "Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]\nOptions:\n -I include-dir\n -o filename.drv\n"
-msgid "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]\nOptions:\n -o filename.ppd[.gz]\n"
-msgstr "Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]\nOptions:\n -o filename.ppd[.gz]\n"
-msgid "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]\nOptions:\n -D name=value Set named variable to value.\n -I include-dir Add include directory to search path.\n -v Be verbose (more v's for more verbosity).\n"
-msgstr "Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]\nOptions:\n -D name=value Set named variable to value.\n -I include-dir Add include directory to search path.\n -v Be verbose (more v's for more verbosity).\n"
+msgstr "使ãæ¹: lpq [-P å®å
] [-U ã¦ã¼ã¶ã¼å] [-h ãã¹ãå[:ãã¼ã]] [-l] [+éé]\n"
+
+#: ppdc/ppdc.cxx:393
+msgid ""
+"Usage: ppdc [options] filename.drv [ ... filenameN.drv ]\n"
+"Options:\n"
+" -D name=value Set named variable to value.\n"
+" -I include-dir Add include directory to search path.\n"
+" -c catalog.po Load the specified message catalog.\n"
+" -d output-dir Specify the output directory.\n"
+" -l lang[,lang,...] Specify the output language(s) (locale).\n"
+" -m Use the ModelName value as the filename.\n"
+" -t Test PPDs instead of generating them.\n"
+" -v Be verbose (more v's for more verbosity).\n"
+" -z Compress PPD files using GNU zip.\n"
+" --cr End lines with CR (Mac OS 9).\n"
+" --crlf End lines with CR + LF (Windows).\n"
+" --lf End lines with LF (UNIX/Linux/Mac OS X).\n"
+msgstr ""
+"Usage: ppdc [ãªãã·ã§ã³] ãã¡ã¤ã«å.drv [ ... ãã¡ã¤ã«åN.drv ]\n"
+"ãªãã·ã§ã³:\n"
+" -D å¤æ°å=å¤ å¤æ°åã§æå®ããå¤æ°ã«å¤ãã»ãããã\n"
+" -I include-dir include-dir ã§æå®ãããã£ã¬ã¯ããªããµã¼ããã¹ã«è¿½å \n"
+" -c catalog.po æå®ããã¡ãã»ã¼ã¸ã«ã¿ãã°ããã¼ããã\n"
+" -d output-dir åºåãã£ã¬ã¯ããª(output-dir)ãæå®ãã\n"
+" -l lang[,lang,...] åºåè¨èªãæå®ããã(è¤æ°å¯è½)\n"
+" -m ModelName ã®å¤ããã¡ã¤ã«åã¨ãã¦ä½¿ç¨ãã\n"
+" -t PPD ãåºåããªãã§ãã¹ããã\n"
+" -v åé·åºåãè¡ã (v ã追å ãã¦ããã«åé·ã«)\n"
+" -z PPD ãã¡ã¤ã«ã GNU zip ã使ã£ã¦å§ç¸®ãã\n"
+" --cr ã©ã¤ã³ã®æå¾ã¯ CR (Mac OS 9 æ¹å¼).\n"
+" --crlf ã©ã¤ã³ã®æå¾ã¯ CR + LF (Windows æ¹å¼).\n"
+" --lf ã©ã¤ã³ã®æå¾ã¯ LF (UNIX/Linux/Mac OS X æ¹å¼).\n"
+
+#: ppdc/ppdhtml.cxx:174
+msgid ""
+"Usage: ppdhtml [options] filename.drv >filename.html\n"
+" -D name=value Set named variable to value.\n"
+"Options:\n"
+" -I include-dir Add include directory to search path.\n"
+msgstr ""
+"使ãæ¹: ppdhtml [ãªãã·ã§ã³] ãã¡ã¤ã«å.drv >ãã¡ã¤ã«å.html\n"
+" -D å¤æ°å=å¤ å¤æ°åã§æå®ããå¤æ°ã«å¤ãã»ãããã\n"
+"ãªãã·ã§ã³:\n"
+" -I include-dir include-dir ã§æå®ãããã£ã¬ã¯ããªããµã¼ããã¹ã«è¿½å \n"
+
+#: ppdc/ppdi.cxx:130
+msgid ""
+"Usage: ppdi [options] filename.ppd [ ... filenameN.ppd ]\n"
+"Options:\n"
+" -I include-dir\n"
+" -o filename.drv\n"
+msgstr ""
+"使ãæ¹: ppdi [ãªãã·ã§ã³] ãã¡ã¤ã«å.ppd [ ... ãã¡ã¤ã«åN.ppd ]\n"
+"ãªãã·ã§ã³:\n"
+" -I ã¤ã³ã¯ã«ã¼ããã£ã¬ã¯ããª\n"
+" -o ãã¡ã¤ã«å.drv\n"
+
+#: ppdc/ppdmerge.cxx:370
+msgid ""
+"Usage: ppdmerge [options] filename.ppd [ ... filenameN.ppd ]\n"
+"Options:\n"
+" -o filename.ppd[.gz]\n"
+msgstr ""
+"使ãæ¹: ppdmerge [ãªãã·ã§ã³] ãã¡ã¤ã«å.ppd [ ... ãã¡ã¤ã«åN.ppd ]\n"
+"ãªãã·ã§ã³:\n"
+" -o ãã¡ã¤ã«å.ppd[.gz]\n"
+
+#: ppdc/ppdpo.cxx:255
+msgid ""
+"Usage: ppdpo [options] -o filename.po filename.drv [ ... filenameN.drv ]\n"
+"Options:\n"
+" -D name=value Set named variable to value.\n"
+" -I include-dir Add include directory to search path.\n"
+" -v Be verbose (more v's for more verbosity).\n"
+msgstr ""
+"使ãæ¹: ppdpo [ãªãã·ã§ã³] -o ãã¡ã¤ã«å.po ãã¡ã¤ã«å.drv [ ... ãã¡ã¤ã«åN.drv ]\n"
+"ãªãã·ã§ã³:\n"
+" -D å¤æ°å=å¤ å¤æ°åã§æå®ããå¤æ°ã«å¤ãã»ãããã\n"
+" -I include-dir include-dir ã§æå®ãããã£ã¬ã¯ããªããµã¼ããã¹ã«è¿½å \n"
+" -v åé·åºåãè¡ã (v ã追å ãã¦ããã«åé·ã«)\n"
+
+#: backend/snmp.c:224
msgid "Usage: snmp [host-or-ip-address]\n"
-msgstr "Usage: snmp [host-or-ip-address]\n"
+msgstr "使ãæ¹: snmp [ãã¹ãã¾ãã¯IPã¢ãã¬ã¹]\n"
+
+#: cups/snmp.c:1063
msgid "Value uses indefinite length"
-msgstr "å¤ã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "å¤ã¯ä¸å®é·ã§ã"
+
+#: cups/snmp.c:1048
msgid "VarBind uses indefinite length"
-msgstr "VarBind ã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "VarBind ã¯ä¸å®é·ã§ã"
+
+#: cups/snmp.c:998
msgid "Version uses indefinite length"
-msgstr "ãã¼ã¸ã§ã³ã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "Version ã¯ä¸å®é·ã§ã"
+
+#: backend/pap.c:328
+#, c-format
msgid "WARNING: Adding only the first %d printers found"
-msgstr "WARNING: è¦ã¤ãã£ãããªã³ã¿ã®ãã¡æåã® %d å°ã ãã追å ããã¾ã"
+msgstr "WARNING: çºè¦ããé çªã« %d å°ã®ããªã³ã¿ã¼ã ã追å ãã¾ã"
+
+#: backend/pap.c:1460 backend/usb-darwin.c:1679
+#, c-format
msgid "WARNING: Boolean expected for waiteof option \"%s\"\n"
-msgstr "WARNING: waiteof ãªãã·ã§ã³â%sâã¯è«çå¤ã§ãªããã°ãªãã¾ãã\n"
+msgstr "WARNING: è«çå¤ã¯ãwaiteof ãªãã·ã§ã³ \"%s\" ã§ããã¹ãã§ã\n"
+
+#: backend/network.c:83 backend/pap.c:1293 backend/parallel.c:638
+#: backend/serial.c:1285 backend/usb-libusb.c:747 backend/usb-unix.c:583
msgid "WARNING: Failed to read side-channel request!\n"
-msgstr "WARNING: side-channel è¦æ±ã®èªã¿åãã«å¤±æãã¾ããï¼\n"
+msgstr "WARNING: ãµã¤ããã£ã³ãã«ã®èªã¿åºãã«å¤±æãã¾ãã!\n"
+
+#: filter/pstops.c:2227
+#, c-format
msgid "WARNING: Option \"%s\" cannot be included via IncludeFeature!\n"
-msgstr "WARNING: ãªãã·ã§ã³â%sâ㯠IncludeFeature çµç±ã§åãè¾¼ããã¨ã¯ã§ãã¾ããï¼\n"
+msgstr "WARNING: ãªãã·ã§ã³ \"%s\" 㯠IncludeFeature çµç±ã§å«ãããã¨ã¯ã§ãã¾ãã!\n"
+
+#: backend/pap.c:503
msgid "WARNING: Printer not responding\n"
-msgstr "WARNING: ããªã³ã¿ãå¿çãã¾ãã\n"
+msgstr "WARNING: ããªã³ã¿ã¼ãåå¿ãã¾ãã\n"
+
+#: backend/pap.c:831 backend/pap.c:854
msgid "WARNING: Printer sent unexpected EOF\n"
-msgstr "WARNING: ããªã³ã¿ãäºæããªã EOF ãéä¿¡ãã¾ãã\n"
+msgstr "WARNING: ããªã³ã¿ã¼ãæå³ããªã EOF ãè¿ãã¾ãã\n"
+
+#: backend/lpd.c:593
+#, c-format
msgid "WARNING: Remote host did not respond with command status byte after %d seconds!\n"
-msgstr "WARNING: ãªã¢ã¼ããã¹ãã %d ç§å¾ã«ã³ãã³ãã»ã¹ãã¼ã¿ã¹ã»ãã¤ãã§å¿çãã¾ããã§ããï¼\n"
+msgstr "WARNING: ãªã¢ã¼ããã¹ã㯠%d ç§çµã£ã¦ãã³ãã³ãã»ã¹ãã¼ã¿ã¹ã»ãã¤ããè¿ãã¾ããã§ãã!\n"
+
+#: backend/lpd.c:1015 backend/lpd.c:1162
+#, c-format
msgid "WARNING: Remote host did not respond with control status byte after %d seconds!\n"
-msgstr "WARNING: ãªã¢ã¼ããã¹ãã %d ç§å¾ã«å¶å¾¡ã¹ãã¼ã¿ã¹ãã¤ãã§å¿çãã¾ããã§ããï¼\n"
+msgstr "WARNING: ãªã¢ã¼ããã¹ã㯠%d ç§çµã£ã¦ãã³ã³ããã¼ã«ã»ã¹ãã¼ã¿ã¹ã»ãã¤ããè¿ãã¾ããã§ãã!\n"
+
+#: backend/lpd.c:1107
+#, c-format
msgid "WARNING: Remote host did not respond with data status byte after %d seconds!\n"
-msgstr "WARNING: ãªã¢ã¼ããã¹ãã %d ç§å¾ã«ãã¼ã¿ã»ã¹ãã¼ã¿ã¹ã»ãã¤ãã§å¿çãã¾ããã§ããï¼\n"
+msgstr "WARNING: ãªã¢ã¼ããã¹ã㯠%d ç§çµã£ã¦ããã¼ã¿ã»ã¹ãã¼ã¿ã¹ã»ãã¤ããè¿ãã¾ããã§ãã!\n"
+
+#: backend/scsi-irix.c:210 backend/scsi-linux.c:228
+#, c-format
msgid "WARNING: SCSI command timed out (%d); retrying...\n"
-msgstr "WARNING: SCSI ã³ãã³ããã¿ã¤ã ã¢ã¦ãã«ãªãã¾ããï¼%dï¼ãå試è¡ä¸...\n"
+msgstr "WARNING: SCSI ã³ãã³ãã¯ã¿ã¤ã ã¢ã¦ããã¾ãã (%d)ãå試è¡ä¸...\n"
+
+#: filter/pstops.c:1091
msgid "WARNING: This document does not conform to the Adobe Document Structuring Conventions and may not print correctly!\n"
-msgstr "WARNING: ãã®æ¸é¡ã¯ Adobe Document Structuring Conventions ã«é©åãã¦ããªããããæ£ããããªã³ãã§ããªãå¯è½æ§ãããã¾ãï¼\n"
+msgstr "WARNING: ãã®æ¸é¡ã¯ Adobe Document Structuring Conventions ã«é©åãã¦ããããæ£ããããªã³ãã§ããªãå¯è½æ§ãããã¾ã!\n"
+
+#: backend/pap.c:492
+#, c-format
msgid "WARNING: Unable to open \"%s:%s\": %s\n"
-msgstr "WARNING: â%s:%sâãéãã¾ããï¼%s\n"
+msgstr "WARNING: \"%s:%s\": %s ãéãã¾ãã\n"
+
+#: backend/pap.c:637
msgid "WARNING: Unable to send PAP status request"
-msgstr "WARNING: PAP ç¶æ³è¦æ±ãéä¿¡ã§ãã¾ãã"
+msgstr "WARNING: PAP ã¹ãã¼ã¿ã¹ã»ãªã¯ã¨ã¹ããéä¿¡ã§ãã¾ãã"
+
+#: backend/pap.c:867
+#, c-format
msgid "WARNING: Unexpected PAP packet of type %d\n"
-msgstr "WARNING: %d ã¯äºæããªã PAP ãã±ããã¿ã¤ãã§ã\n"
+msgstr "WARNING: %d ã¿ã¤ãã®æå³ããªã PAP ãã±ãã\n"
+
+#: backend/pap.c:872
+#, c-format
msgid "WARNING: Unknown PAP packet of type %d\n"
-msgstr "WARNING: %d ã¯ä¸æ㪠PAP ãã±ããã¿ã¤ãã§ã\n"
+msgstr "WARNING: æªç¥ã® PAP ãã±ããã®ã¿ã¤ã %d\n"
+
+#: filter/pstops.c:2234
+#, c-format
msgid "WARNING: Unknown choice \"%s\" for option \"%s\"!\n"
-msgstr "WARNING: ãªãã·ã§ã³â%2$sâã«ä¸æãªâ%1$sâãé¸æããã¦ãã¾ãï¼\n"
+msgstr "WARNING: \"%s\" (ãªãã·ã§ã³ \"%s\" ç¨) ã¯æªç¥ã®è¨å®ã§ã!\n"
+
+#: filter/pstops.c:2220
+#, c-format
msgid "WARNING: Unknown option \"%s\"!\n"
-msgstr "WARNING: â%sâã¯ä¸æãªãªãã·ã§ã³ã§ãï¼\n"
+msgstr "WARNING: \"%s\" ã¯æªç¥ã®ãªãã·ã§ã³ã§ã!\n"
+
+#: backend/serial.c:380
+#, c-format
msgid "WARNING: Unsupported baud rate %s!\n"
-msgstr "WARNING: ãã¼ã¬ã¼ã %s ã«ã¯å¯¾å¿ãã¦ãã¾ããï¼\n"
+msgstr "WARNING: %s ã¯ãµãã¼ãããªããã¼ã¬ã¼ãã§ã!\n"
+
+#: backend/pap.c:1474
+#, c-format
msgid "WARNING: number expected for status option \"%s\"\n"
-msgstr "WARNING: ç¶æ³ãªãã·ã§ã³â%sâã¯æ°å¤ã§ãªããã°ãªãã¾ãã\n"
+msgstr "WARNING: ã¹ãã¼ã¿ã¹ã»ãªãã·ã§ã³ã®æå¾
å¤ã¯ \"%s\"\n"
+
+#: backend/ipp.c:578 backend/ipp.c:709 backend/lpd.c:828 backend/socket.c:318
+#, c-format
msgid "WARNING: recoverable: Network host '%s' is busy; will retry in %d seconds...\n"
-msgstr "WARNING: å復å¯è½ï¼ãããã¯ã¼ã¯ãã¹ãâ%sâã¯ãã¸ã¼ç¶æ
ã§ãã%d ç§å¾ã«å試è¡ãã¾ã...\n"
+msgstr "WARNING: å復å¯è½: ãããã¯ã¼ã¯ãã¹ã '%s' ã¯ãã¸ã¼ç¶æ
ã§ã (%d ç§å¾ã«å試è¡ãã¾ã...)\n"
+
+#: cups/adminutil.c:804
msgid "Warning, no Windows 2000 printer drivers are installed!"
-msgstr "è¦åãWindows 2000 ããªã³ã¿ãã©ã¤ããã¤ã³ã¹ãã¼ã«ããã¦ãã¾ããï¼"
+msgstr "è¦åãWindows 2000 ããªã³ã¿ã¼ãã©ã¤ãã¼ãã¤ã³ã¹ãã¼ã«ããã¦ãã¾ãã!"
+
+#: cups/ppd.c:1865
msgid "Yes"
msgstr "ã¯ã"
+
+#: scheduler/client.c:2419
+#, c-format
msgid "You must access this page using the URL https://%s:%d%s ."
-msgstr "ãã®ãã¼ã¸ã«ã¢ã¯ã»ã¹ããã«ã¯ URL https://%s:%d%s ã使ç¨ããå¿
è¦ãããã¾ãã"
+msgstr "ãã®ãã¼ã¸ã«ã¯ URL https://%s:%d%s ã使ã£ã¦ã¢ã¯ã»ã¹ããå¿
è¦ãããã¾ãã"
+
+#: ppdc/sample.c:87
msgid "You4 Envelope"
-msgstr "You4 å°ç"
+msgstr "æ´å½¢ 4 å·"
+
+#: ppdc/sample.c:411
msgid "ZPL Label Printer"
-msgstr "ZPL ã©ãã«ããªã³ã¿"
+msgstr "ZPL ã©ãã«ï½¥ããªã³ã¿ã¼"
+
+#: ppdc/sample.c:334
msgid "Zebra"
-msgstr "Zebra"
+msgstr "ã¼ãã©"
+
+#: cups/notify.c:102
msgid "aborted"
-msgstr "ç ´æ£ããã¾ãã"
+msgstr "åæ¢"
+
+#: cups/notify.c:99
msgid "canceled"
-msgstr "ãã£ã³ã»ã«ããã¾ãã"
+msgstr "ãã£ã³ã»ã«"
+
+#: cups/notify.c:105
msgid "completed"
-msgstr "å®äºãã¾ãã"
+msgstr "å®äº"
+
+#: scheduler/cupsfilter.c:335
msgid "convert: Use the -f option to specify a file to convert.\n"
-msgstr "convertï¼-f ãªãã·ã§ã³ã使ã£ã¦ãå¤æãããã¡ã¤ã«ãæå®ãã¦ãã ããã\n"
+msgstr "convert: å¤æãããã¡ã¤ã«ãæå®ããã«ã¯ã-f ãªãã·ã§ã³ã使ã£ã¦ãã ããã\n"
+
+#: scheduler/ipp.c:6555
msgid "cups-deviced failed to execute."
msgstr "cups-deviced ã®å®è¡ã«å¤±æãã¾ããã"
+
+#: scheduler/ipp.c:7231 scheduler/ipp.c:7481
msgid "cups-driverd failed to execute."
msgstr "cups-driverd ã®å®è¡ã«å¤±æãã¾ããã"
+
+#: systemv/cupsaddsmb.c:236
+#, c-format
msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s\n"
-msgstr "cupsaddsmbï¼ããªã³ã¿â%sâã® PPD ãã¡ã¤ã«ãããã¾ãã - %s\n"
+msgstr "cupsaddsmb: ããªã³ã¿ã¼ \"%s\" ã® PPD ãã¡ã¤ã«ãããã¾ãã - %s\n"
+
+#: systemv/cupsctl.c:153
+#, c-format
msgid "cupsctl: Unable to connect to server: %s\n"
-msgstr "cupsctlï¼ãµã¼ãã«æ¥ç¶ã§ãã¾ããï¼%s\n"
+msgstr "cupsctl: ãµã¼ãã¼: %s ã«æ¥ç¶ã§ãã¾ãã\n"
+
+#: systemv/cupsctl.c:196
+#, c-format
msgid "cupsctl: Unknown option \"%s\"!\n"
-msgstr "cupsctlï¼â%sâã¯ä¸æãªãªãã·ã§ã³ã§ãï¼\n"
+msgstr "cupsctl: \"%s\" ã¯æªç¥ã®ãªãã·ã§ã³ã§ã!\n"
+
+#: systemv/cupsctl.c:198
+#, c-format
msgid "cupsctl: Unknown option \"-%c\"!\n"
-msgstr "cupsctlï¼â-%câã¯ä¸æãªãªãã·ã§ã³ã§ãï¼\n"
+msgstr "cupsctl: \"-%c\"ã¯æªç¥ã®ãªãã·ã§ã³ã§ã!\n"
+
+#: scheduler/main.c:200
msgid "cupsd: Expected config filename after \"-c\" option!\n"
-msgstr "cupsdï¼â-câãªãã·ã§ã³ã®å¾ã«æ§æãã¡ã¤ã«åãå¿
è¦ã§ãï¼\n"
+msgstr "cupsd: -c ãªãã·ã§ã³ã®ãã¨ã«ã¯è¨å®ãã¡ã¤ã«åãå¿
è¦ã§ã!\n"
+
+#: scheduler/main.c:232 scheduler/main.c:239
msgid "cupsd: Unable to get current directory!\n"
-msgstr "cupsdï¼ç¾å¨ã®ãã£ã¬ã¯ããªãåå¾ã§ãã¾ããï¼\n"
+msgstr "cupsd: ã«ã¬ã³ãã»ãã£ã¬ã¯ããªãåå¾ã§ãã¾ãã!\n"
+
+#: scheduler/main.c:291
+#, c-format
msgid "cupsd: Unknown argument \"%s\" - aborting!\n"
-msgstr "cupsdï¼â%sâã¯ä¸æãªå¼æ°ã§ã - ç ´æ£ããã¾ãï¼\n"
+msgstr "cupsd: \"%s\" ã¯æªç¥ã®å¼æ°ã§ã - åæ¢ãã¾ã!\n"
+
+#: scheduler/main.c:284
+#, c-format
msgid "cupsd: Unknown option \"%c\" - aborting!\n"
-msgstr "cupsdï¼â%câã¯ä¸æãªãªãã·ã§ã³ã§ã - ç ´æ£ããã¾ãï¼\n"
+msgstr "cupsd: \"%c\" ã¯æªç¥ã®ãªãã·ã§ã³ã§ã - åæ¢ãã¾ã!\n"
+
+#: scheduler/main.c:266
msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
-msgstr "cupsdï¼launchd(8) ãµãã¼ããã³ã³ãã¤ã«ããã¦ããªããããé常ã¢ã¼ãã§å®è¡ãã¾ãã\n"
+msgstr "cupsd: launchd(8) ãµãã¼ããã³ã³ãã¤ã«ããã¦ããªãã®ã§ãé常ã¢ã¼ãã§åä½ãã¾ãã\n"
+
+#: scheduler/cupsfilter.c:1061
+#, c-format
msgid "cupsfilter: Invalid document number %d!\n"
-msgstr "cupsfilterï¼æ¸é¡çªå· %d ãç¡å¹ã§ãï¼\n"
+msgstr "cupsfilter: ä¸æ£ãªææ¸çªå· %d ã§ã!\n"
+
+#: scheduler/cupsfilter.c:1055
+#, c-format
msgid "cupsfilter: Invalid job ID %d!\n"
-msgstr "cupsfilterï¼ã¸ã§ã ID %d ãç¡å¹ã§ãï¼\n"
+msgstr "cupsfilter: ä¸æ£ãªã¸ã§ãID %d ã§ã!\n"
+
+#: scheduler/cupsfilter.c:343
msgid "cupsfilter: Only one filename can be specified!\n"
-msgstr "cupsfilterï¼æå®ã§ãããã¡ã¤ã«å㯠1 ã¤ã ãã§ãï¼\n"
+msgstr "cupsfilter: ã²ã¨ã¤ã®ãã¡ã¤ã«åã®ã¿ãæå®ã§ãã¾ã!\n"
+
+#: scheduler/cupsfilter.c:1089
+#, c-format
msgid "cupsfilter: Unable to create temporary file: %s\n"
-msgstr "cupsfilterï¼ä¸æãã¡ã¤ã«ãä½æã§ãã¾ããï¼%s\n"
+msgstr "cupsfilter: ãã³ãã©ãªã¼ã»ãã¡ã¤ã«: %s ãä½æã§ãã¾ãã\n"
+
+#: scheduler/cupsfilter.c:1105
+#, c-format
msgid "cupsfilter: Unable to get job file - %s\n"
-msgstr "cupsfilterï¼ã¸ã§ããã¡ã¤ã«ãåå¾ã§ãã¾ãã - %s\n"
+msgstr "cupsfilter: ã¸ã§ãã»ãã¡ã¤ã«ãåå¾ã§ãã¾ãã - %s\n"
+
+#: systemv/cupstestppd.c:218
msgid "cupstestppd: The -q option is incompatible with the -v option.\n"
-msgstr "cupstestppdï¼-q ãªãã·ã§ã³ã¯ -v ãªãã·ã§ã³ã¨åæã«ã¯ä½¿ç¨ã§ãã¾ããã\n"
+msgstr "cupstestppd: -q ãªãã·ã§ã³ã¯ -v ãªãã·ã§ã³ã¨ä¸¡ç«ã§ãã¾ããã\n"
+
+#: systemv/cupstestppd.c:234
msgid "cupstestppd: The -v option is incompatible with the -q option.\n"
-msgstr "cupstestppdï¼-v ãªãã·ã§ã³ã¯ -q ãªãã·ã§ã³ã¨åæã«ã¯ä½¿ç¨ã§ãã¾ããã\n"
+msgstr "cupstestppd: -v ãªãã·ã§ã³ã¯ -q ãªãã·ã§ã³ã¨ä¸¡ç«ã§ãã¾ããã\n"
+
+#: systemv/lpstat.c:1231 systemv/lpstat.c:1234 systemv/lpstat.c:1237
+#, c-format
msgid "device for %s/%s: %s\n"
-msgstr "%s/%s ã®ããã¤ã¹ï¼%s\n"
+msgstr "%s/%s ã®ããã¤ã¹: %s\n"
+
+#: systemv/lpstat.c:1218 systemv/lpstat.c:1221 systemv/lpstat.c:1224
+#, c-format
msgid "device for %s: %s\n"
-msgstr "%s ã®ããã¤ã¹ï¼%s\n"
+msgstr "%s ã®ããã¤ã¹: %s\n"
+
+#: cups/snmp.c:1035
msgid "error-index uses indefinite length"
-msgstr "error-index ã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "ã¨ã©ã¼ã»ã¤ã³ããã¯ã¹ã¯ä¸å®é·ã§ã"
+
+#: cups/snmp.c:1027
msgid "error-status uses indefinite length"
-msgstr "error-status ã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "ã¨ã©ã¼ã»ã¹ãã¼ã¿ã¹ã¯ä¸å®é·ã§ã"
+
+#: cups/notify.c:90
msgid "held"
-msgstr "ä¿çä¸"
+msgstr "ãã¼ã«ã"
+
+#: berkeley/lpc.c:214
msgid "help\t\tget help on commands\n"
-msgstr "help\t\tã³ãã³ãã®ãã«ãã表示ãã¾ã\n"
+msgstr "help\t\tã³ãã³ãã®ãã«ããåå¾\n"
+
+#: cups/notify.c:131
msgid "idle"
msgstr "å¾
æ©ä¸"
+
+#: scheduler/ipp.c:8225
msgid "job-printer-uri attribute missing!"
-msgstr "job-printer-uri å±æ§ãããã¾ããï¼"
+msgstr "job-printer-uri å±æ§ãããã¾ãã!"
+
+#: systemv/lpadmin.c:141 systemv/lpadmin.c:453
msgid "lpadmin: Class name can only contain printable characters!\n"
-msgstr "lpadminï¼ã¯ã©ã¹åã«ä½¿ç¨ã§ããã®ã¯ããªã³ãå¯è½ãªæåã ãã§ãï¼\n"
+msgstr "lpadmin: ã¯ã©ã¹åã¯è¡¨ç¤ºå¯è½æåã®ã¿ã§æ§æãããªããã°ãªãã¾ãã!\n"
+
+#: systemv/lpadmin.c:750
msgid "lpadmin: Expected PPD after '-P' option!\n"
-msgstr "lpadminï¼â-Pâãªãã·ã§ã³ã®å¾ã« PPD ãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-P' ãªãã·ã§ã³ã®ãã¨ã« PPD ãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:491
msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
-msgstr "lpadminï¼â-uâãªãã·ã§ã³ã®å¾ã« allow/deny:userlist ãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-u' ãªãã·ã§ã³ã®ãã¨ã«ã¯ allow/deny:ã¦ã¼ã¶ãªã¹ã ãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:442
msgid "lpadmin: Expected class after '-r' option!\n"
-msgstr "lpadminï¼â-râãªãã·ã§ã³ã®å¾ã«ã¯ã©ã¹ãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-r' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã¯ã©ã¹åãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:130
msgid "lpadmin: Expected class name after '-c' option!\n"
-msgstr "lpadminï¼â-câãªãã·ã§ã³ã®å¾ã«ã¯ã©ã¹åãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-c' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã¯ã©ã¹åãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:643
msgid "lpadmin: Expected description after '-D' option!\n"
-msgstr "lpadminï¼â-Dâãªãã·ã§ã³ã®å¾ã«èª¬æãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-D' ãªãã·ã§ã³ã®ãã¨ã«èª¬æãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:550
msgid "lpadmin: Expected device URI after '-v' option!\n"
-msgstr "lpadminï¼â-vâãªãã·ã§ã³ã®å¾ã«ããã¤ã¹ URI ãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-v' ãªãã·ã§ã³ã®ãã¨ã«ã¯ããã¤ã¹ URI ãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:659
msgid "lpadmin: Expected file type(s) after '-I' option!\n"
-msgstr "lpadminï¼â-Iâãªãã·ã§ã³ã®å¾ã«ãã¡ã¤ã«ã¿ã¤ããå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-I' ãªãã·ã§ã³ã®ãã¨ã«ãã¡ã¤ã«å½¢å¼ãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:212
msgid "lpadmin: Expected hostname after '-h' option!\n"
-msgstr "lpadminï¼â-hâãªãã·ã§ã³ã®å¾ã«ãã¹ãåãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-h' ãªãã·ã§ã³ã®ãã¨ã«ã¯ãã¹ãåãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:257
msgid "lpadmin: Expected interface after '-i' option!\n"
-msgstr "lpadminï¼â-iâãªãã·ã§ã³ã®å¾ã«ã¤ã³ã¿ã¼ãã§ã¤ã¹ãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-i' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã¤ã³ã¿ã¼ãã§ã¤ã¹åãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:704
msgid "lpadmin: Expected location after '-L' option!\n"
-msgstr "lpadminï¼â-Lâãªãã·ã§ã³ã®å¾ã«å ´æãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-L' ãªãã·ã§ã³ã®ãã¨ã«å ´æãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:338
msgid "lpadmin: Expected model after '-m' option!\n"
-msgstr "lpadminï¼â-mâãªãã·ã§ã³ã®å¾ã«æ©ç¨®ãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-m' ãªãã·ã§ã³ã®ãã¨ã«ã¯ã¢ãã«åãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:358
msgid "lpadmin: Expected name=value after '-o' option!\n"
-msgstr "lpadminï¼â-oâãªãã·ã§ã³ã®å¾ã« name=value ãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-o' ãªãã·ã§ã³ã®ãã¨ã«ã¯ å¤æ°å=å¤ ãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:391
msgid "lpadmin: Expected printer after '-p' option!\n"
-msgstr "lpadminï¼â-pâãªãã·ã§ã³ã®å¾ã«ããªã³ã¿ãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-p' ãªãã·ã§ã³ã®ãã¨ã«ã¯ããªã³ã¿ã¼åãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:174
msgid "lpadmin: Expected printer name after '-d' option!\n"
-msgstr "lpadminï¼â-dâãªãã·ã§ã³ã®å¾ã«ããªã³ã¿åãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-d' ãªãã·ã§ã³ã®ãã¨ã«ã¯ããªã³ã¿ã¼åãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:584
msgid "lpadmin: Expected printer or class after '-x' option!\n"
-msgstr "lpadminï¼â-xâãªãã·ã§ã³ã®å¾ã«ããªã³ã¿ã¾ãã¯ã¯ã©ã¹ãå¿
è¦ã§ãï¼\n"
+msgstr "lpadmin: '-x' ãªãã·ã§ã³ã®ãã¨ã«ã¯ããªã³ã¿ã¼åã¾ãã¯ã¯ã©ã¹åãå¿
è¦ã§ã!\n"
+
+#: systemv/lpadmin.c:1128
msgid "lpadmin: No member names were seen!\n"
-msgstr "lpadminï¼ã¡ã³ãã¼åãè¦ã¤ããã¾ããã§ããï¼\n"
+msgstr "lpadmin: ã¡ã³ãã¼åãè¦å½ããã¾ãã!\n"
+
+#: systemv/lpadmin.c:893
+#, c-format
msgid "lpadmin: Printer %s is already a member of class %s.\n"
-msgstr "lpadminï¼ããªã³ã¿ %s ã¯ãã§ã«ã¯ã©ã¹ %s ã®ã¡ã³ãã¼ã§ãã\n"
+msgstr "lpadmin: ããªã³ã¿ã¼ %s ã¯ãã§ã«ã¯ã©ã¹ %s ã®ã¡ã³ãã¼ã§ãã\n"
+
+#: systemv/lpadmin.c:1142
+#, c-format
msgid "lpadmin: Printer %s is not a member of class %s.\n"
-msgstr "lpadminï¼ããªã³ã¿ %s ã¯ã¯ã©ã¹ %s ã®ã¡ã³ãã¼ã§ã¯ããã¾ããã\n"
+msgstr "lpadmin: ããªã³ã¿ã¼ %s ã¯ã¯ã©ã¹ %s ã®ã¡ã³ãã¼ã§ã¯ããã¾ããã\n"
+
+#: systemv/lpadmin.c:185 systemv/lpadmin.c:402 systemv/lpadmin.c:595
msgid "lpadmin: Printer name can only contain printable characters!\n"
-msgstr "lpadminï¼ããªã³ã¿åã«ä½¿ç¨ã§ããã®ã¯ããªã³ãå¯è½ãªæåã ãã§ãï¼\n"
-msgid "lpadmin: Unable to add a printer to the class:\n You must specify a printer name first!\n"
-msgstr "lpadminï¼ã¯ã©ã¹ã«ããªã³ã¿ã追å ã§ãã¾ããï¼\n å
ã«ããªã³ã¿åãæå®ããå¿
è¦ãããã¾ãï¼\n"
+msgstr "lpadmin: ããªã³ã¿ã¼åã«ã¯å°åå¯è½ãªæåã®ã¿ä½¿ç¨ã§ãã¾ã!\n"
+
+#: systemv/lpadmin.c:115
+msgid ""
+"lpadmin: Unable to add a printer to the class:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: ã¯ã©ã¹ã«ããªã³ã¿ã¼ã追å ã§ãã¾ãã:\n"
+" å
ã«ããªã³ã¿ã¼åãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpadmin.c:106 systemv/lpadmin.c:159 systemv/lpadmin.c:230
+#: systemv/lpadmin.c:291 systemv/lpadmin.c:310 systemv/lpadmin.c:376
+#: systemv/lpadmin.c:417 systemv/lpadmin.c:523 systemv/lpadmin.c:569
+#: systemv/lpadmin.c:615 systemv/lpadmin.c:677 systemv/lpadmin.c:723
+#: systemv/lpadmin.c:784
+#, c-format
msgid "lpadmin: Unable to connect to server: %s\n"
-msgstr "lpadminï¼ãµã¼ãã«æ¥ç¶ã§ãã¾ããï¼%s\n"
+msgstr "lpadmin: ãµã¼ãã¼ã«æ¥ç¶ã§ãã¾ãã: %s\n"
+
+#: systemv/lpadmin.c:1845
+#, c-format
msgid "lpadmin: Unable to create temporary file - %s\n"
-msgstr "lpadminï¼ä¸æãã¡ã¤ã«ãä½æã§ãã¾ãã - %s\n"
+msgstr "lpadmin: ãã³ãã©ãªãã¡ã¤ã«ãä½æã§ãã¾ãã - %s\n"
+
+#: systemv/lpadmin.c:1454
+#, c-format
msgid "lpadmin: Unable to create temporary file: %s\n"
-msgstr "lpadminï¼ä¸æãã¡ã¤ã«ãä½æã§ãã¾ããï¼%s\n"
+msgstr "lpadmin: ãã³ãã©ãªãã¡ã¤ã«ãä½æã§ãã¾ãã: %s\n"
+
+#: systemv/lpadmin.c:1855
+#, c-format
msgid "lpadmin: Unable to open PPD file \"%s\" - %s\n"
-msgstr "lpadminï¼PPD ãã¡ã¤ã«â%sâãéãã¾ãã - %s\n"
+msgstr "lpadmin: PPD ãã¡ã¤ã« \"%s\" ãéãã¾ãã - %s\n"
+
+#: systemv/lpadmin.c:1462
+#, c-format
msgid "lpadmin: Unable to open file \"%s\": %s\n"
-msgstr "lpadminï¼ãã¡ã¤ã«â%sâãéãã¾ããï¼%s\n"
-msgid "lpadmin: Unable to remove a printer from the class:\n You must specify a printer name first!\n"
-msgstr "lpadminï¼ã¯ã©ã¹ããããªã³ã¿ãåãé¤ãã¾ããï¼\n å
ã«ããªã³ã¿åãæå®ããå¿
è¦ãããã¾ãï¼\n"
-msgid "lpadmin: Unable to set the PPD file:\n You must specify a printer name first!\n"
-msgstr "lpadminï¼PPD ãã¡ã¤ã«ãè¨å®ã§ãã¾ããï¼\n å
ã«ããªã³ã¿åãæå®ããå¿
è¦ãããã¾ãï¼\n"
-msgid "lpadmin: Unable to set the device URI:\n You must specify a printer name first!\n"
-msgstr "lpadminï¼ããã¤ã¹ URI ãè¨å®ã§ãã¾ããï¼\n å
ã«ããªã³ã¿åãæå®ããå¿
è¦ãããã¾ãï¼\n"
-msgid "lpadmin: Unable to set the interface script or PPD file:\n You must specify a printer name first!\n"
-msgstr "lpadminï¼ã¤ã³ã¿ã¼ãã§ã¤ã¹ã»ã¹ã¯ãªããã¾ã㯠PPD ãã¡ã¤ã«ãè¨å®ã§ãã¾ããï¼\n å
ã«ããªã³ã¿åãæå®ããå¿
è¦ãããã¾ãï¼\n"
-msgid "lpadmin: Unable to set the interface script:\n You must specify a printer name first!\n"
-msgstr "lpadminï¼ã¤ã³ã¿ã¼ãã§ã¤ã¹ã»ã¹ã¯ãªãããè¨å®ã§ãã¾ããï¼\n å
ã«ããªã³ã¿åãæå®ããå¿
è¦ãããã¾ãï¼\n"
-msgid "lpadmin: Unable to set the printer description:\n You must specify a printer name first!\n"
-msgstr "lpadminï¼ããªã³ã¿ã®èª¬æãè¨å®ã§ãã¾ããï¼\n å
ã«ããªã³ã¿åãæå®ããå¿
è¦ãããã¾ãï¼\n"
-msgid "lpadmin: Unable to set the printer location:\n You must specify a printer name first!\n"
-msgstr "lpadminï¼ããªã³ã¿ã®å ´æãè¨å®ã§ãã¾ããï¼\n å
ã«ããªã³ã¿åãæå®ããå¿
è¦ãããã¾ãï¼\n"
-msgid "lpadmin: Unable to set the printer options:\n You must specify a printer name first!\n"
-msgstr "lpadminï¼ããªã³ã¿ãªãã·ã§ã³ãè¨å®ã§ãã¾ããï¼\n å
ã«ããªã³ã¿åãæå®ããå¿
è¦ãããã¾ãï¼\n"
+msgstr "lpadmin: ãã¡ã¤ã« \"%s\" ãéãã¾ãã: %s\n"
+
+#: systemv/lpadmin.c:426
+msgid ""
+"lpadmin: Unable to remove a printer from the class:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: ã¯ã©ã¹ããããªã³ã¿ã¼ãåé¤ã§ãã¾ãã:\n"
+" å
ã«ããªã³ã¿ã¼åãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpadmin.c:732
+msgid ""
+"lpadmin: Unable to set the PPD file:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: PPD ãã¡ã¤ã«ãè¨å®ã§ãã¾ãã:\n"
+" å
ã«ããªã³ã¿ã¼åãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpadmin.c:532
+msgid ""
+"lpadmin: Unable to set the device URI:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: ããã¤ã¹ URI ãè¨å®ã§ãã¾ãã:\n"
+" å
ã«ããªã³ã¿ã¼åãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpadmin.c:319
+msgid ""
+"lpadmin: Unable to set the interface script or PPD file:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: ã¤ã³ã¿ã¼ãã§ã¤ã¹ã»ã¹ã¯ãªããã¾ã㯠PPD ãã¡ã¤ã«ãè¨å®ã§ãã¾ãã:\n"
+" å
ã«ããªã³ã¿ã¼åãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpadmin.c:239
+msgid ""
+"lpadmin: Unable to set the interface script:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: ã¤ã³ã¿ã¼ãã§ã¤ã¹ã¹ã¯ãªãããè¨å®ã§ãã¾ãã:\n"
+" å
ã«ããªã³ã¿ã¼åãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpadmin.c:624
+msgid ""
+"lpadmin: Unable to set the printer description:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: ããªã³ã¿ã¼ã®èª¬æãè¨å®ã§ãã¾ãã:\n"
+" å
ã«ããªã³ã¿ã¼åãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpadmin.c:686
+msgid ""
+"lpadmin: Unable to set the printer location:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: ããªã³ã¿ã¼ã®å ´æãè¨å®ã§ãã¾ãã:\n"
+" å
ã«ããªã³ã¿ã¼åãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpadmin.c:793
+msgid ""
+"lpadmin: Unable to set the printer options:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: ããªã³ã¿ã¼ã»ãªãã·ã§ã³ãè¨å®ã§ãã¾ãã:\n"
+" å
ã«ããªã³ã¿ã¼åãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpadmin.c:508
+#, c-format
msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
-msgstr "lpadminï¼â%sâã¯ä¸æãªè¨±å¯ï¼æå¦ãªãã·ã§ã³ã§ãï¼\n"
+msgstr "lpadmin:\"%s\" ã¯æªç¥ã® allow/deny ãªãã·ã§ã³ã§ã!\n"
+
+#: systemv/lpadmin.c:766
+#, c-format
msgid "lpadmin: Unknown argument '%s'!\n"
-msgstr "lpadminï¼â%sâã¯ä¸æãªå¼æ°ã§ãï¼\n"
+msgstr "lpadmin: '%s' ã¯æªç¥ã®å¼æ°ã§ã!\n"
+
+#: systemv/lpadmin.c:761
+#, c-format
msgid "lpadmin: Unknown option '%c'!\n"
-msgstr "lpadminï¼â%câã¯ä¸æãªãªãã·ã§ã³ã§ãï¼\n"
+msgstr "lpadmin: '%c' ã¯æªç¥ã®ãªãã·ã§ã³ã§ã!\n"
+
+#: systemv/lpadmin.c:665
msgid "lpadmin: Warning - content type list ignored!\n"
-msgstr "lpadminï¼è¦å - ã³ã³ãã³ãã»ã¿ã¤ãã»ãªã¹ãã¯ç¡è¦ããã¾ããï¼\n"
+msgstr "lpadmin: è¦å - ã³ã³ãã³ãã¿ã¤ããªã¹ãã¯ç¡è¦ããã¾ã!\n"
+
+#: berkeley/lpc.c:81 berkeley/lpc.c:109 berkeley/lpc.c:145
msgid "lpc> "
msgstr "lpc> "
+
+#: systemv/lpinfo.c:143
msgid "lpinfo: Expected 1284 device ID string after --device-id!\n"
-msgstr "lpinfoï¼--device-id ã®å¾ã« 1284 ããã¤ã¹ ID æååãå¿
è¦ã§ãï¼\n"
+msgstr "lpinfo: --device-id ã®å¾ã«ã¯ã1284ããã¤ã¹IDãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpinfo.c:196
msgid "lpinfo: Expected language after --language!\n"
-msgstr "lpinfoï¼--language ã®å¾ã«è¨èªãå¿
è¦ã§ãï¼\n"
+msgstr "lpinfo: --language ã®å¾ã«ã¯ãè¨èªãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpinfo.c:213
msgid "lpinfo: Expected make and model after --make-and-model!\n"
-msgstr "lpinfoï¼--make-and-model ã®å¾ã«è£½é å
ã¨æ©ç¨®ãå¿
è¦ã§ãï¼\n"
+msgstr "lpinfo: --make-and-model ã®å¾ã«ã¯ãã¡ã¼ã«ã¼ã¨ã¢ãã«ãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpinfo.c:230
msgid "lpinfo: Expected product string after --product!\n"
-msgstr "lpinfoï¼--product ã®å¾ã«è£½åæååãå¿
è¦ã§ãï¼\n"
+msgstr "lpinfo: --product ã®å¾ã«ã¯ã製ååãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpinfo.c:161
msgid "lpinfo: Expected scheme list after --exclude-schemes!\n"
-msgstr "lpinfoï¼--exclude-schemes ã®å¾ã«ã¹ãã¼ã ãªã¹ããå¿
è¦ã§ãï¼\n"
+msgstr "lpinfo: --exclude-schemes ã®å¾ã«ã¯ãã¹ãã¼ãã»ãªã¹ããæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpinfo.c:179
msgid "lpinfo: Expected scheme list after --include-schemes!\n"
-msgstr "lpinfoï¼--include-schemes ã®å¾ã«ã¹ãã¼ã ãªã¹ããå¿
è¦ã§ãï¼\n"
+msgstr "lpinfo: --include-schemes ã®å¾ã«ã¯ãã¹ãã¼ãã»ãªã¹ããæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpinfo.c:247
msgid "lpinfo: Expected timeout after --timeout!\n"
-msgstr "lpinfoï¼--timeout ã®å¾ã«ã¿ã¤ã ã¢ã¦ããå¿
è¦ã§ãï¼\n"
+msgstr "lpinfo: --timeout ã®å¾ã«ã¯ãã¿ã¤ã ã¢ã¦ãå¤ãæå®ããå¿
è¦ãããã¾ã!\n"
+
+#: systemv/lpinfo.c:270
+#, c-format
msgid "lpinfo: Unknown argument '%s'!\n"
-msgstr "lpinfoï¼â%sâã¯ä¸æãªå¼æ°ã§ãï¼\n"
+msgstr "lpinfo: æªç¥ã®å¼æ° '%s'!\n"
+
+#: systemv/lpinfo.c:264
+#, c-format
msgid "lpinfo: Unknown option '%c'!\n"
-msgstr "lpinfoï¼â%câã¯ä¸æãªãªãã·ã§ã³ã§ãï¼\n"
+msgstr "lpinfo: æªç¥ã®ãªãã·ã§ã³ '%c'!\n"
+
+#: systemv/lpinfo.c:257
+#, c-format
msgid "lpinfo: Unknown option '%s'!\n"
-msgstr "lpinfoï¼â%sâã¯ä¸æãªãªãã·ã§ã³ã§ãï¼\n"
+msgstr "lpinfo: æªç¥ã®ãªãã·ã§ã³ '%s'!\n"
+
+#: systemv/lpmove.c:141
+#, c-format
msgid "lpmove: Unable to connect to server: %s\n"
-msgstr "lpmoveï¼ãµã¼ãã«æ¥ç¶ã§ãã¾ããï¼%s\n"
+msgstr "lpmove: ãµã¼ãã¼ã«æ¥ç¶ã§ãã¾ãã: %s!\n"
+
+#: systemv/lpmove.c:125
+#, c-format
msgid "lpmove: Unknown argument '%s'!\n"
-msgstr "lpmoveï¼â%sâã¯ä¸æãªå¼æ°ã§ãï¼\n"
+msgstr "lpmove: æªç¥ã®å¼æ° '%s'!\n"
+
+#: systemv/lpmove.c:103
+#, c-format
msgid "lpmove: Unknown option '%c'!\n"
-msgstr "lpmoveï¼â%câã¯ä¸æãªãªãã·ã§ã³ã§ãï¼\n"
+msgstr "lpmove: æªç¥ã®ãªãã·ã§ã³ '%c'!\n"
+
+#: systemv/lpoptions.c:154 systemv/lpoptions.c:172 systemv/lpoptions.c:248
msgid "lpoptions: No printers!?!\n"
-msgstr "lpoptionsï¼ããªã³ã¿ãããã¾ãã!?!\n"
+msgstr "lpoptions: ããªã³ã¿ã¼ãããã¾ãã!?!\n"
+
+#: systemv/lpoptions.c:223
+#, c-format
msgid "lpoptions: Unable to add printer or instance: %s\n"
-msgstr "lpoptionsï¼ããªã³ã¿ã¾ãã¯ã¤ã³ã¹ã¿ã³ã¹ã追å ã§ãã¾ããï¼%s\n"
+msgstr "lpoptions: ããªã³ã¿ã¼ã¾ãã¯ã¤ã³ã¹ã¿ã³ã¹ã追å ã§ãã¾ãã: %s\n"
+
+#: systemv/lpoptions.c:507
+#, c-format
msgid "lpoptions: Unable to get PPD file for %s: %s\n"
-msgstr "lpoptionsï¼%s ã® PPD ãã¡ã¤ã«ãåå¾ã§ãã¾ããï¼%s\n"
+msgstr "lpoptions: %s ã® PPD ãã¡ã¤ã«ãéãã¾ãã!: %s\n"
+
+#: systemv/lpoptions.c:516
+#, c-format
msgid "lpoptions: Unable to open PPD file for %s!\n"
-msgstr "lpoptionsï¼%s ã® PPD ãã¡ã¤ã«ãéãã¾ããï¼n"
+msgstr "lpoptions: %s ã® PPD ãã¡ã¤ã«ãéãã¾ãã!\n"
+
+#: systemv/lpoptions.c:104
msgid "lpoptions: Unknown printer or class!\n"
-msgstr "lpoptionsï¼ããªã³ã¿ã¾ãã¯ã¯ã©ã¹ãä¸æã§ãï¼\n"
+msgstr "lpoptions: æªç¥ã®ããªã³ã¿ã¼ã¾ãã¯ã¯ã©ã¹ã§ã!\n"
+
+#: systemv/lppasswd.c:185
msgid "lppasswd: Only root can add or delete passwords!\n"
-msgstr "lppasswdï¼ãã¹ã¯ã¼ãã追å ã¾ãã¯åé¤ã§ããã®ã¯ã«ã¼ãã ãã§ãï¼\n"
+msgstr "lppasswd: root ã ãããã¹ã¯ã¼ãã®è¿½å ã¨åé¤ãè¡ãã¾ã!\n"
+
+#: systemv/lppasswd.c:314
msgid "lppasswd: Password file busy!\n"
-msgstr "lppasswdï¼ãã¹ã¯ã¼ããã¡ã¤ã«ããã¸ã¼ç¶æ
ã§ãï¼\n"
+msgstr "lppasswd: ãã¹ã¯ã¼ããã¡ã¤ã«ããã¸ã¼ç¶æ
ã§ã!\n"
+
+#: systemv/lppasswd.c:447
msgid "lppasswd: Password file not updated!\n"
-msgstr "lppasswdï¼ãã¹ã¯ã¼ããã¡ã¤ã«ã¯ã¢ãããã¼ãããã¾ããã§ããï¼\n"
+msgstr "lppasswd: ãã¹ã¯ã¼ããã¡ã¤ã«ã¯æ´æ°ããã¾ãã!\n"
+
+#: systemv/lppasswd.c:414
msgid "lppasswd: Sorry, password doesn't match!\n"
-msgstr "lppasswdï¼ãã¹ã¯ã¼ããä¸è´ãã¾ããï¼\n"
-msgid "lppasswd: Sorry, password rejected.\nYour password must be at least 6 characters long, cannot contain\nyour username, and must contain at least one letter and number.\n"
-msgstr "lppasswdï¼ãã¹ã¯ã¼ããæå¦ããã¾ããã\nãã¹ã¯ã¼ãã®é·ã㯠6 æå以ä¸ã§ãªããã°ãªãããã¦ã¼ã¶åãå«ãããã¨ã¯\nã§ãããè±åã¨æ°åããããã 1 æå以ä¸å«ããå¿
è¦ãããã¾ãã\n"
+msgstr "lppasswd: ãã¿ã¾ãããããã¹ã¯ã¼ããããããã¾ãã!\n"
+
+#: systemv/lppasswd.c:264
+msgid ""
+"lppasswd: Sorry, password rejected.\n"
+"Your password must be at least 6 characters long, cannot contain\n"
+"your username, and must contain at least one letter and number.\n"
+msgstr ""
+"lppasswd: ãã¿ã¾ãããããã¹ã¯ã¼ãã¯æå¦ããã¾ããã\n"
+"ãã¹ã¯ã¼ãã¯å°ãªãã¨ã 6 æå以ä¸ã§ãããªãã®ã¦ã¼ã¶ã¼åãå«ãã§ã¯ãªããã\n"
+"å°ãªãã¨ã 1 ã¤ã®è±åããã³æ°å¤ãå«ãã§ãªããã°ãªãã¾ããã\n"
+
+#: systemv/lppasswd.c:240
msgid "lppasswd: Sorry, passwords don't match!\n"
-msgstr "lppasswdï¼ãã¹ã¯ã¼ããä¸è´ãã¾ããï¼\n"
+msgstr "lppasswd: ãã¿ã¾ãããããã¹ã¯ã¼ããããããã¾ãã!\n"
+
+#: systemv/lppasswd.c:211 systemv/lppasswd.c:229
+#, c-format
msgid "lppasswd: Unable to copy password string: %s\n"
-msgstr "lppasswdï¼ãã¹ã¯ã¼ãæååãã³ãã¼ã§ãã¾ããï¼%s\n"
+msgstr "lppasswd: ãã¹ã¯ã¼ãæååãã³ãã¼ã§ãã¾ãã: %s\n"
+
+#: systemv/lppasswd.c:317 systemv/lppasswd.c:326 systemv/lppasswd.c:344
+#, c-format
msgid "lppasswd: Unable to open password file: %s\n"
-msgstr "lppasswdï¼ãã¹ã¯ã¼ããã¡ã¤ã«ãéãã¾ããï¼%s\n"
+msgstr "lppasswd: ãã¹ã¯ã¼ããã¡ã¤ã«ãéãã¾ãã: %s\n"
+
+#: systemv/lppasswd.c:379 systemv/lppasswd.c:392 systemv/lppasswd.c:424
+#, c-format
msgid "lppasswd: Unable to write to password file: %s\n"
-msgstr "lppasswdï¼ãã¹ã¯ã¼ããã¡ã¤ã«ã«æ¸ãè¾¼ãã¾ããï¼%s\n"
+msgstr "lppasswd: ãã¹ã¯ã¼ããã¡ã¤ã«ã«æ¸ãè¾¼ãã¾ãã: %s\n"
+
+#: systemv/lppasswd.c:462
+#, c-format
msgid "lppasswd: failed to backup old password file: %s\n"
-msgstr "lppasswdï¼å¤ããã¹ã¯ã¼ããã¡ã¤ã«ã®ããã¯ã¢ããä½æã«å¤±æãã¾ããï¼%s\n"
+msgstr "lppasswd: å¤ããã¹ã¯ã¼ããã¡ã¤ã«ã®ããã¯ã¢ããã«å¤±æãã¾ãã: %s\n"
+
+#: systemv/lppasswd.c:475
+#, c-format
msgid "lppasswd: failed to rename password file: %s\n"
-msgstr "lppasswdï¼ãã¹ã¯ã¼ããã¡ã¤ã«ã®å称å¤æ´ã«å¤±æãã¾ããï¼%s\n"
+msgstr "lppasswd: ãã¹ã¯ã¼ããã¡ã¤ã«ã®ååã®å¤æ´ã«å¤±æãã¾ãã: %s\n"
+
+#: systemv/lppasswd.c:404
+#, c-format
msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n"
-msgstr "lppasswdï¼ã¦ã¼ã¶â%sâã¨ã°ã«ã¼ãâ%sâãåå¨ãã¾ããã\n"
+msgstr "lppasswd: ã¦ã¼ã¶ã¼ \"%s\" ããã³ã°ã«ã¼ã \"%s\" ã¯åå¨ãã¾ããã\n"
+
+#: systemv/lpstat.c:1039
+#, c-format
msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "lpstatï¼ã¨ã©ã¼ - %s ç°å¢å¤æ°ã«åå¨ããªãéä¿¡å
â%sâãæå®ããã¦ãã¾ãï¼\n"
+msgstr "lpstat: ã¨ã©ã¼ - ç°å¢å¤æ° %s ããåå¨ããªãå®å
\"%s\" ãæãã¦ãã¾ã!\n"
+
+#: systemv/lpstat.c:969
+#, c-format
msgid "members of class %s:\n"
-msgstr "ã¯ã©ã¹ %s ã®ã¡ã³ãã¼ï¼\n"
+msgstr "ã¯ã©ã¹ %s ã®ã¡ã³ãã¼:\n"
+
+#: berkeley/lpq.c:575
msgid "no entries\n"
msgstr "ã¨ã³ããªã¼ãããã¾ãã\n"
+
+#: systemv/lpstat.c:1043
msgid "no system default destination\n"
-msgstr "ã·ã¹ãã ã®ããã©ã«ãã®éä¿¡å
ãããã¾ãã\n"
+msgstr "ã·ã¹ãã ã®ããã©ã«ãã®å®å
ãããã¾ãã\n"
+
+#: scheduler/ipp.c:6249
msgid "notify-events not specified!"
-msgstr "notify-events ãæå®ããã¦ãã¾ããï¼"
+msgstr "notify-events ãæå®ããã¦ãã¾ãã!"
+
+#: scheduler/ipp.c:2102 scheduler/ipp.c:6154
+#, c-format
msgid "notify-recipient-uri URI \"%s\" is already used!"
-msgstr "notify-recipient-uri ã® URIâ%sâã¯ãã§ã«ä½¿ç¨ããã¦ãã¾ãï¼"
+msgstr "notify-recipient-uri URI \"%s\" ã¯ãã§ã«ä½¿ããã¦ãã¾ã!"
+
+#: scheduler/ipp.c:2092 scheduler/ipp.c:6144
+#, c-format
msgid "notify-recipient-uri URI \"%s\" uses unknown scheme!"
-msgstr "notify-recipient-uri ã® URIâ%sâã«ä¸æãªã¹ãã¼ã ã使ç¨ããã¦ãã¾ãï¼"
+msgstr "notify-recipient-uri URI \"%s\" ã«ã¯æªç¥ã®ã¹ãã¼ã ã使ããã¦ãã¾ã!"
+
+#: scheduler/ipp.c:4136 scheduler/ipp.c:7079 scheduler/ipp.c:7780
+#: scheduler/ipp.c:9269
+#, c-format
msgid "notify-subscription-id %d no good!"
-msgstr "notify-subscription-id %d ãæ£ããããã¾ããï¼"
+msgstr "notify-subscription-id %d ã¯è¯ãããã¾ãã!"
+
+#: cups/notify.c:87
msgid "pending"
-msgstr "ä¿çä¸"
+msgstr "ä¿ç"
+
+#: ppdc/ppdc.cxx:108 ppdc/ppdpo.cxx:94
+#, c-format
msgid "ppdc: Adding include directory \"%s\"...\n"
-msgstr "ppdcï¼ã¤ã³ã¯ã«ã¼ããã£ã¬ã¯ããªâ%sâã追å ä¸...\n"
+msgstr "ppdc: ãã£ã¬ã¯ããªã¼ \"%s\" ã追å ãã¦ãã¾ã...\n"
+
+#: ppdc/ppdpo.cxx:136
+#, c-format
msgid "ppdc: Adding/updating UI text from %s...\n"
-msgstr "ppdcï¼%s ãã UI ããã¹ãã追å ï¼ã¢ãããã¼ãä¸...\n"
+msgstr "ppdc: %s ãã UI ããã¹ãã追å ã¾ãã¯æ´æ°ãã¦ãã¾ã...\n"
+
+#: ppdc/ppdc-source.cxx:375
+#, c-format
msgid "ppdc: Bad boolean value (%s) on line %d of %s.\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®è«çå¤ï¼%1$sï¼ãæ£ããããã¾ããã\n"
+msgstr "ppdc: ä¸æ£ãª boolean å¤ (%s) ãããã¾ãã%d è¡ç®ããã¡ã¤ã«å %sã\n"
+
+#: ppdc/ppdc-source.cxx:1750
+#, c-format
msgid "ppdc: Bad resolution name \"%s\" on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®è§£å度åâ%1$sâãæ£ããããã¾ããï¼\n"
+msgstr "ppdc: ä¸æ£ãª resolution å \"%s\" ãããã¾ãã%d è¡ç®ããã¡ã¤ã«å %s !\n"
+
+#: ppdc/ppdc-source.cxx:1078
+#, c-format
msgid "ppdc: Bad status keyword %s on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®ç¶æ³ãã¼ã¯ã¼ã %1$s ãæ£ããããã¾ããï¼\n"
+msgstr "ppdc: ä¸æ£ãª status ãã¼ã¯ã¼ã %s ãããã¾ãã%d è¡ç®ããã¡ã¤ã«å %s !\n"
+
+#: ppdc/ppdc-source.cxx:1987
+#, c-format
msgid "ppdc: Bad variable substitution ($%c) on line %d of %s.\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®å¤æ°ä»£å
¥ï¼$%1$cï¼ãæ£ããããã¾ããã\n"
+msgstr "ppdc: ä¸æ£ãªæ°å¤ç½®æ ($%c) ãããã¾ãã%d è¡ç®ããã¡ã¤ã«å %sã\n"
+
+#: ppdc/ppdc-source.cxx:2657
+#, c-format
msgid "ppdc: Choice found on line %d of %s with no Option!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«ãªãã·ã§ã³ã®ãªãé¸æãè¦ã¤ããã¾ããï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã§ãOption ããªãã®ã« Choice ãè¦ã¤ããã¾ãã!\n"
+
+#: ppdc/ppdc-source.cxx:1654
+#, c-format
msgid "ppdc: Duplicate #po for locale %s on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®ãã±ã¼ã« %1$s ã® #po ãéè¤ãã¦ãã¾ãï¼\n"
+msgstr "ppdc: locale %s ã«å¯¾ã㦠#po ã2éã«å®ç¾©ããã¦ãã¾ãã%d è¡ç®ããã¡ã¤ã«å %s !\n"
+
+#: ppdc/ppdc-source.cxx:897
+#, c-format
msgid "ppdc: Expected a filter definition on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«ãã£ã«ã¿å®ç¾©ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ããã¦ãã£ã«ã¿ã¼å®ç¾©ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:920
+#, c-format
msgid "ppdc: Expected a program name on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«ããã°ã©ã åãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ããã¦ããã°ã©ã åãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:359
+#, c-format
msgid "ppdc: Expected boolean value on line %d of %s.\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«è«çå¤ãå¿
è¦ã§ãã\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠boolean å¤ãå¿
è¦ã§ãã\n"
+
+#: ppdc/ppdc-source.cxx:1058
+#, c-format
msgid "ppdc: Expected charset after Font on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Font ã®å¾ã«æåã»ãããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Font ã®å¾ã« charset ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:412
+#, c-format
msgid "ppdc: Expected choice code on line %d of %s.\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«é¸æã³ã¼ããå¿
è¦ã§ãã\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠choice code ãå¿
è¦ã§ãã\n"
+
+#: ppdc/ppdc-source.cxx:400
+#, c-format
msgid "ppdc: Expected choice name/text on line %d of %s.\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«é¸æåï¼ããã¹ããå¿
è¦ã§ãã\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠choice name/text ãå¿
è¦ã§ãã\n"
+
+#: ppdc/ppdc-source.cxx:468
+#, c-format
msgid "ppdc: Expected color order for ColorModel on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã« ColorModel ã®è²é åºãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠ColorModel ã«å¯¾ãã color order ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:457
+#, c-format
msgid "ppdc: Expected colorspace for ColorModel on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã« ColorModel ã®è²ç©ºéãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠ColorModel ã«å¯¾ãã colorspace ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:479
+#, c-format
msgid "ppdc: Expected compression for ColorModel on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã« ColorModel ã®å§ç¸®ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠ColorModel ã«å¯¾ãã compression ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:660
+#, c-format
msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã« UIConstraints ã®å¶ç´æååãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠UIConstraints ã«å¯¾ãã constraint ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:2834
+#, c-format
msgid "ppdc: Expected driver type keyword following DriverType on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® DriverType ã®å¾ã«ãã©ã¤ãã»ã¿ã¤ãã»ãã¼ã¯ã¼ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠DriverType ã®å¾ã« driver type keyword ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:791
+#, c-format
msgid "ppdc: Expected duplex type after Duplex on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã³ Duplex ã®å¾ã«ä¸¡é¢ã¿ã¤ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Duplex ã®å¾ã« type ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1042
+#, c-format
msgid "ppdc: Expected encoding after Font on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Font ã®å¾ã«ã¨ã³ã³ã¼ãã£ã³ã°ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Font ã®å¾ã« encoding ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1645
+#, c-format
msgid "ppdc: Expected filename after #po %s on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã® #po %1$s ã®å¾ã«ãã¡ã¤ã«åãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: #po %s ã®å¾ã«ãã¡ã¤ã«åãå¿
è¦ã§ã! (%d è¡ç®, ãã¡ã¤ã« %s)\n"
+
+#: ppdc/ppdc-source.cxx:1170
+#, c-format
msgid "ppdc: Expected group name/text on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«ã°ã«ã¼ãåï¼ããã¹ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠group name/text ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:2557
+#, c-format
msgid "ppdc: Expected include filename on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«åãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠include ãã¡ã¤ã«åãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1466
+#, c-format
msgid "ppdc: Expected integer on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«æ´æ°ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ããã¦æ´æ°æå®ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1637
+#, c-format
msgid "ppdc: Expected locale after #po on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® #po ã®å¾ã«ãã±ã¼ã«ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠#po ã®å¾ã« locale ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:318
+#, c-format
msgid "ppdc: Expected name after %s on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã® %1$s ã®å¾ã«ååãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %s ã®å¾ã« name ãå¿
è¦ã§ãã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:3178
+#, c-format
msgid "ppdc: Expected name after FileName on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® FileName ã®å¾ã«ååãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠FileName ã®å¾ã« name ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1023
+#, c-format
msgid "ppdc: Expected name after Font on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Font ã®å¾ã«ååãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Font ã®å¾ã« name ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:3018
+#, c-format
msgid "ppdc: Expected name after Manufacturer on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Manufacturer ã®å¾ã«ååãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Manufacturer ã®å¾ã« name ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:3051
+#, c-format
msgid "ppdc: Expected name after MediaSize on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® MediaSize ã®å¾ã«ååãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠MediaSize ã®å¾ã« name ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:3132
+#, c-format
msgid "ppdc: Expected name after ModelName on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® ModelName ã®å¾ã«ååãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠ModelName ã®å¾ã« name ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:3195
+#, c-format
msgid "ppdc: Expected name after PCFileName on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® PCFileName ã®å¾ã«ååãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠PCFileName ã®å¾ã« name ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1121
+#, c-format
msgid "ppdc: Expected name/text after %s on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã® %1$s ã®å¾ã«ååï¼ããã¹ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %s ã®å¾ã« name/text ãå¿
è¦ã§ãã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:1210
+#, c-format
msgid "ppdc: Expected name/text after Installable on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Installable ã®å¾ã«ååï¼ããã¹ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Installable ã®å¾ã« name/text ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1736
+#, c-format
msgid "ppdc: Expected name/text after Resolution on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Resolution ã®å¾ã«ååï¼ããã¹ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Resolution ã®å¾ã« name/text ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:444
+#, c-format
msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® ColorModel ã«ååï¼ããã¹ãã®çµã¿åãããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠ColorModel ã«å¯¾ãã name/text ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1537
+#, c-format
msgid "ppdc: Expected option name/text on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«ãªãã·ã§ã³åï¼ããã¹ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠option name/text ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1571
+#, c-format
msgid "ppdc: Expected option section on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«ãªãã·ã§ã³ã»ã¯ã·ã§ã³ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠option section ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1549
+#, c-format
msgid "ppdc: Expected option type on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«ãªãã·ã§ã³ã¿ã¤ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠option type ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1719
+#, c-format
msgid "ppdc: Expected override field after Resolution on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Resolution ã®å¾ã«ãªã¼ãã¼ã©ã¤ããã£ã¼ã«ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Resolution ã®å¾ã« override field ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:969
+#, c-format
msgid "ppdc: Expected real number on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã«å®æ°ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ããã¦å®æ°ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:537
+#, c-format
msgid "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® ColorProfile ã®å¾ã«è§£å度ï¼ã¡ãã£ã¢ã¿ã¤ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠ColorProfile ã«ç¶ã㦠resolution/mediatype ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:1817
+#, c-format
msgid "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® SimpleColorProfile ã®å¾ã«è§£å度ï¼ã¡ãã£ã¢ã¿ã¤ããå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠SimpleColorProfile ã«ç¶ã㦠resolution/mediatype ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:326
+#, c-format
msgid "ppdc: Expected selector after %s on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã® %1$s ã®å¾ã«ã»ã¬ã¯ã¿ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %s ã®å¾ã« selector ãå¿
è¦ã§ãã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:1066
+#, c-format
msgid "ppdc: Expected status after Font on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Font ã®å¾ã«ç¶æ³ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Font ã®å¾ã« status ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:2732
+#, c-format
msgid "ppdc: Expected string after Copyright on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Copyright ã®å¾ã«æååãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Copyright ã®å¾ã«æååãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:3289
+#, c-format
msgid "ppdc: Expected string after Version on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Version ã®å¾ã«æååãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Version ã®å¾ã«æååãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:693
+#, c-format
msgid "ppdc: Expected two option names on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã« 2 ã¤ã®ãªãã·ã§ã³åãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠2 ã¤ã®ãªãã·ã§ã³åãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:337
+#, c-format
msgid "ppdc: Expected value after %s on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã® %1$s ã®å¾ã«å¤ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %s ã®å¾ã« value ãå¿
è¦ã§ãã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:1050
+#, c-format
msgid "ppdc: Expected version after Font on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã® Font ã®å¾ã«ãã¼ã¸ã§ã³ãå¿
è¦ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Font ã®å¾ã« version ãå¿
è¦ã§ã!\n"
+
+#: ppdc/ppdc-source.cxx:192
+#, c-format
msgid "ppdc: Invalid #include/#po filename \"%s\"!\n"
-msgstr "ppdcï¼#include/#po ãã¡ã¤ã«åâ%sâãç¡å¹ã§ãï¼\n"
+msgstr "ppdc: ç¡å¹ãª #include/#po ãã¡ã¤ã«åã§ã \"%s\"!\n"
+
+#: ppdc/ppdc-source.cxx:937
+#, c-format
msgid "ppdc: Invalid cost for filter on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã®ãã£ã«ã¿ã®ã³ã¹ããç¡å¹ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ããã¦ãã£ã«ã¿ã¼ã«å¯¾ããç¡å¹ãª cost ãããã¾ã!\n"
+
+#: ppdc/ppdc-source.cxx:929
+#, c-format
msgid "ppdc: Invalid empty MIME type for filter on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã®ãã£ã«ã¿ã® MIME ã¿ã¤ãã空ã§ããã®ã¯ç¡å¹ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ããã¦ãã£ã«ã¿ã¼ã«å¯¾ããç¡å¹ãªç©ºã® MIME type ãããã¾ã!\n"
+
+#: ppdc/ppdc-source.cxx:945
+#, c-format
msgid "ppdc: Invalid empty program name for filter on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã®ãã£ã«ã¿ã®ããã°ã©ã åã空ã§ããã®ã¯ç¡å¹ã§ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ããã¦ãã£ã«ã¿ã¼ã«å¯¾ããç¡å¹ãªç©ºã® program name ãããã¾ã!\n"
+
+#: ppdc/ppdc-source.cxx:1591
+#, c-format
msgid "ppdc: Invalid option section \"%s\" on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®ãªãã·ã§ã³ã»ã¯ã·ã§ã³â%1$sâãç¡å¹ã§ãï¼\n"
+msgstr "ppdc: ç¡å¹ãª option section ãããã¾ã \"%s\"ã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:1563
+#, c-format
msgid "ppdc: Invalid option type \"%s\" on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®ãªãã·ã§ã³ã¿ã¤ãâ%1$sâãç¡å¹ã§ãï¼\n"
+msgstr "ppdc: ç¡å¹ãª option type ãããã¾ã \"%s\"ã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc.cxx:244 ppdc/ppdpo.cxx:124
+#, c-format
msgid "ppdc: Loading driver information file \"%s\"...\n"
-msgstr "ppdcï¼ãã©ã¤ãæ
å ±ãã¡ã¤ã«â%sâãèªã¿è¾¼ã¿ä¸...\n"
+msgstr "ppdc: ãã©ã¤ãã¼æ
å ±ãã¡ã¤ã« \"%s\" ãèªã¿è¾¼ãã§ãã¾ã...\n"
+
+#: ppdc/ppdc.cxx:180
+#, c-format
msgid "ppdc: Loading messages for locale \"%s\"...\n"
-msgstr "ppdcï¼ãã±ã¼ã«â%sâã®ã¡ãã»ã¼ã¸ãèªã¿è¾¼ã¿ä¸...\n"
+msgstr "ppdc: ãã±ã¼ã« \"%s\" ã®ã¡ãã»ã¼ã¸ãèªã¿è¾¼ãã§ãã¾ã...\n"
+
+#: ppdc/ppdc.cxx:121
+#, c-format
msgid "ppdc: Loading messages from \"%s\"...\n"
-msgstr "ppdcï¼â%sâããã¡ãã»ã¼ã¸ãèªã¿è¾¼ã¿ä¸...\n"
+msgstr "ppdc: \"%s\" ããã¡ãã»ã¼ã¸ãèªã¿è¾¼ãã§ãã¾ã...\n"
+
+#: ppdc/ppdc-source.cxx:2354 ppdc/ppdc-source.cxx:2582
+#, c-format
msgid "ppdc: Missing #endif at end of \"%s\"!\n"
-msgstr "ppdcï¼â%sâã®æå¾ã« #endif ãããã¾ããï¼\n"
+msgstr "ppdc: \"%s\" ã®æå¾ã« #endif ãè¦ã¤ããã¾ãã!\n"
+
+#: ppdc/ppdc-source.cxx:2451 ppdc/ppdc-source.cxx:2486
+#: ppdc/ppdc-source.cxx:2516
+#, c-format
msgid "ppdc: Missing #if on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã« #if ãããã¾ããï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠#if ãè¦ã¤ããã¾ãã!\n"
+
+#: ppdc/ppdc-driver.cxx:683
+#, c-format
msgid "ppdc: No message catalog provided for locale %s!\n"
-msgstr "ppdcï¼ãã±ã¼ã« %s ã«ã¡ãã»ã¼ã¸ã«ã¿ãã°ã渡ããã¦ãã¾ããï¼\n"
+msgstr "ppdc: ãã±ã¼ã« %s ã«å¯¾ããã¡ãã»ã¼ã¸ã«ã¿ãã°ãè¦ã¤ããã¾ãã!\n"
+
+#: ppdc/ppdc-source.cxx:1607
+#, c-format
msgid "ppdc: Option %s redefined with a different type on line %d of %s!\n"
-msgstr "ppdcï¼ãªãã·ã§ã³ %1$s 㯠%3$s ã® %2$d è¡ç®ã§å¥ã®ã¿ã¤ãã§åå®ç¾©ããã¦ãã¾ãï¼\n"
+msgstr "ppdc: ãªãã·ã§ã³ %s ã¯ç°ãªãåã§åå®ç¾©ããã¦ãã¾ãã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:670
+#, c-format
msgid "ppdc: Option constraint must *name on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã®ãªãã·ã§ã³å¶ç´ã¯ *name ã§ããå¿
è¦ãããã¾ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠Option constraint 㯠*name ã§æå®ãã¾ã!\n"
+
+#: ppdc/ppdc-source.cxx:2433
+#, c-format
msgid "ppdc: Too many nested #if's on line %d of %s!\n"
-msgstr "ppdcï¼%2$s ã® %1$d è¡ç®ã« #if ã®å
¥ãåãå¤ããã¾ãï¼\n"
+msgstr "ppdc: %d è¡ç®ããã¡ã¤ã«å %s ã«ãã㦠#if ã®ãã¹ããå¤ããã¾ã!\n"
+
+#: ppdc/ppdc.cxx:348
+#, c-format
msgid "ppdc: Unable to create PPD file \"%s\" - %s.\n"
-msgstr "ppdcï¼PPD ãã¡ã¤ã«â%sâãä½æã§ãã¾ãã - %sã\n"
+msgstr "ppdc: PPD ãã¡ã¤ã« \"%s\" ãä½æã§ãã¾ãã - %sã\n"
+
+#: ppdc/ppdc.cxx:259
+#, c-format
msgid "ppdc: Unable to create output directory %s: %s\n"
-msgstr "ppdcï¼åºåãã£ã¬ã¯ã㪠%s ãä½æã§ãã¾ããï¼%s\n"
+msgstr "ppdc: ãã£ã¬ã¯ããªã¼ \"%s\" ãä½æã§ãã¾ãã - %s\n"
+
+#: ppdc/ppdc.cxx:280
+#, c-format
msgid "ppdc: Unable to create output pipes: %s\n"
-msgstr "ppdcï¼åºåãã¤ããä½æã§ãã¾ããï¼%s\n"
+msgstr "ppdc: åºå pipe ãä½æã§ãã¾ãã: %s\n"
+
+#: ppdc/ppdc.cxx:297 ppdc/ppdc.cxx:304
+#, c-format
msgid "ppdc: Unable to execute cupstestppd: %s\n"
-msgstr "ppdcï¼cupstestppd ãå®è¡ã§ãã¾ããï¼%s\n"
+msgstr "ppdc: cupstestppd ãå®è¡ã§ãã¾ãã: %s\n"
+
+#: ppdc/ppdc-source.cxx:1684
+#, c-format
msgid "ppdc: Unable to find #po file %s on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã« #po ãã¡ã¤ã« %1$s ãè¦ã¤ããã¾ããï¼\n"
+msgstr "ppdc: #po ãã¡ã¤ã« %s ãè¦ã¤ããã¾ããã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:2589
+#, c-format
msgid "ppdc: Unable to find include file \"%s\" on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã«ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«â%1$sâãè¦ã¤ããã¾ããï¼\n"
+msgstr "ppdc: ã¤ã³ã¯ã«ã¼ããã¡ã¤ã« %s ãè¦ã¤ããã¾ããã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc.cxx:191
+#, c-format
msgid "ppdc: Unable to find localization for \"%s\" - %s\n"
-msgstr "ppdcï¼â%sâã®ãã¼ã«ãªã¼ã¼ã·ã§ã³ãè¦ã¤ããã¾ãã - %s\n"
+msgstr "ppdc: \"%s\" ã«å¯¾ããå°ååæ
å ±ãè¦ã¤ããã¾ãã - %s \n"
+
+#: ppdc/ppdc.cxx:130
+#, c-format
msgid "ppdc: Unable to load localization file \"%s\" - %s\n"
-msgstr "ppdcï¼ãã¼ã«ãªã¼ã¼ã·ã§ã³ãã¡ã¤ã«â%sâãèªã¿è¾¼ãã¾ãã - %s\n"
+msgstr "ppdc: \"%s\" ã«å¯¾ããå°ååæ
å ±ãèªã¿è¾¼ãã¾ãã - %s \n"
+
+#: ppdc/ppdc-source.cxx:2007
+#, c-format
msgid "ppdc: Undefined variable (%s) on line %d of %s.\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®å¤æ°ï¼%1$sï¼ãæªå®ç¾©ã§ãã\n"
+msgstr "ppdc: å¤æ° (%s) ã¯æªå®ç¾©ã§ãã%d è¡ç®ããã¡ã¤ã«å %sã\n"
+
+#: ppdc/ppdc-source.cxx:2853
+#, c-format
msgid "ppdc: Unknown driver type %s on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®ãã©ã¤ãã¿ã¤ã %1$s ãä¸æã§ãï¼\n"
+msgstr "ppdc: %s ã¯æªç¥ã®ãã©ã¤ãã¼ã¿ã¤ãã§ãã%d è¡ç®ããã¡ã¤ã«å %sã\n"
+
+#: ppdc/ppdc-source.cxx:871
+#, c-format
msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®ä¸¡é¢ã¿ã¤ãâ%1$sâãä¸æã§ãï¼\n"
+msgstr "ppdc: \"%s\" ã¯æªç¥ã®ä¸¡é¢ã¿ã¤ãã§ãã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:3064
+#, c-format
msgid "ppdc: Unknown media size \"%s\" on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®ã¡ãã£ã¢ãµã¤ãºâ%1$sâãä¸æã§ãï¼\n"
+msgstr "ppdc: \"%s\" ã¯æªç¥ã®ç¨ç´ãµã¤ãºã§ãã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:3300
+#, c-format
msgid "ppdc: Unknown token \"%s\" seen on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®ãã¼ã¯ã³â%1$sâãä¸æã§ãï¼\n"
+msgstr "ppdc: æªç¥ã® token \"%s\" ãããã¾ãã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:979
+#, c-format
msgid "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã®å®æ°â%1$sâã®å¾ç¶æååãä¸æã§ãï¼\n"
+msgstr "ppdc: å®æ°ã«æªç¥ã®çµäºæå \"%s\" ãããã¾ãã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc-source.cxx:2116
+#, c-format
msgid "ppdc: Unterminated string starting with %c on line %d of %s!\n"
-msgstr "ppdcï¼%3$s ã® %2$d è¡ç®ã® %1$c ã§å§ã¾ãæååãçµäºãã¦ãã¾ããï¼\n"
+msgstr "ppdc: %c ã§å§ã¾ãæåã«å¯¾ãã¦çµç«¯æåãããã¾ããã%d è¡ç®ããã¡ã¤ã«å %s!\n"
+
+#: ppdc/ppdc.cxx:354
+#, c-format
msgid "ppdc: Writing %s...\n"
-msgstr "ppdcï¼%s ãæ¸ãè¾¼ã¿ä¸...\n"
+msgstr "ppdc: %s ãæ¸ãè¾¼ãã§ãã¾ã...\n"
+
+#: ppdc/ppdc.cxx:143
+#, c-format
msgid "ppdc: Writing PPD files to directory \"%s\"...\n"
-msgstr "ppdcï¼ãã£ã¬ã¯ããªâ%sâã« PPD ãã¡ã¤ã«ãæ¸ãè¾¼ã¿ä¸...\n"
+msgstr "ppdc: ãã£ã¬ã¯ããªã¼ \"%s\" ã« PPD ãã¡ã¤ã«ãæ¸ãè¾¼ãã§ãã¾ã...\n"
+
+#: ppdc/ppdmerge.cxx:138
+#, c-format
msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s!\n"
-msgstr "ppdmergeï¼%2$s ã® LanguageVersionâ%1$sâãæ£ããããã¾ããï¼\n"
+msgstr "ppdmerge: ä¸æ£ãª LanguageVersion \"%s\" ã %s ã«ããã¾ã!\n"
+
+#: ppdc/ppdmerge.cxx:178
+#, c-format
msgid "ppdmerge: Ignoring PPD file %s...\n"
-msgstr "ppdmergeï¼PPD ãã¡ã¤ã« %s ã¯ç¡è¦ããã¾ã...\n"
+msgstr "ppdmerge: PPD ãã¡ã¤ã« %s ãç¡è¦ãã¾ã...\n"
+
+#: ppdc/ppdmerge.cxx:162
+#, c-format
msgid "ppdmerge: Unable to backup %s to %s- %s\n"
-msgstr "ppdmergeï¼%s ã®ããã¯ã¢ããã %s ã«ä½æã§ãã¾ãã - %s\n"
+msgstr "ppdmerge: %s ã %s ã«ããã¯ã¢ããã§ãã¾ãã - %s\n"
+
+#: systemv/lpstat.c:1769
+#, c-format
msgid "printer %s disabled since %s -\n"
-msgstr "ããªã³ã¿ %s 㯠%s 以æ¥ç¡å¹ã«ãªã£ã¦ãã¾ã -\n"
+msgstr "ããªã³ã¿ã¼ %s 㯠%s ããç¡å¹ã§ã -\n"
+
+#: systemv/lpstat.c:1758
+#, c-format
msgid "printer %s is idle. enabled since %s\n"
-msgstr "ããªã³ã¿ %s ã¯å¾
æ©ä¸ã§ãã%s 以æ¥æå¹ã«ãªã£ã¦ãã¾ã\n"
+msgstr "ããªã³ã¿ã¼ %s ã¯å¾
æ©ä¸ã§ãã%s 以æ¥æå¹ã§ã\n"
+
+#: systemv/lpstat.c:1763
+#, c-format
msgid "printer %s now printing %s-%d. enabled since %s\n"
-msgstr "ããªã³ã¿ %s ã¯ç¾å¨ %s-%d ãããªã³ãä¸ã§ãã%s 以æ¥æå¹ã«ãªã£ã¦ãã¾ã\n"
+msgstr "ããªã³ã¿ã¼ %s 㯠%s-%d ãå°å·ãã¦ãã¾ãã%s 以æ¥æå¹ã§ã\n"
+
+#: systemv/lpstat.c:1881
+#, c-format
msgid "printer %s/%s disabled since %s -\n"
-msgstr "ããªã³ã¿ %s/%s 㯠%s 以æ¥ç¡å¹ã«ãªã£ã¦ãã¾ã -\n"
+msgstr "ããªã³ã¿ã¼ %s/%s 㯠%s ããç¡å¹ã§ã -\n"
+
+#: systemv/lpstat.c:1867
+#, c-format
msgid "printer %s/%s is idle. enabled since %s\n"
-msgstr "ããªã³ã¿ %s/%s ã¯å¾
æ©ä¸ã§ãã%s 以æ¥æå¹ã«ãªã£ã¦ãã¾ã\n"
+msgstr "ããªã³ã¿ã¼ %s/%s ã¯å¾
æ©ä¸ã§ãã%s 以æ¥æå¹ã§ã\n"
+
+#: systemv/lpstat.c:1874
+#, c-format
msgid "printer %s/%s now printing %s-%d. enabled since %s\n"
-msgstr "ããªã³ã¿ %s/%s ã¯ç¾å¨ %s-%d ãããªã³ãä¸ã§ãã%s 以æ¥æå¹ã«ãªã£ã¦ãã¾ã\n"
+msgstr "ããªã³ã¿ã¼ %s/%s ã¯ç¾å¨ %s-%d ãå°å·ä¸ã§ãã%s 以æ¥æå¹ã§ã\n"
+
+#: cups/notify.c:93 cups/notify.c:134
msgid "processing"
msgstr "å¦çä¸"
+
+#: systemv/lp.c:660
+#, c-format
msgid "request id is %s-%d (%d file(s))\n"
-msgstr "è¦æ± ID 㯠%s-%d ã§ãï¼%d åã®ãã¡ã¤ã«ï¼\n"
+msgstr "ãªã¯ã¨ã¹ã ID 㯠%s-%d ã§ã (%d åã®ãã¡ã¤ã«)\n"
+
+#: cups/snmp.c:1019
msgid "request-id uses indefinite length"
-msgstr "request-id ã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "ãªã¯ã¨ã¹ã ID ã®é·ããä¸å®"
+
+#: systemv/lpstat.c:2008
msgid "scheduler is not running\n"
-msgstr "ã¹ã±ã¸ã¥ã¼ã©ã¯å®è¡ããã¦ãã¾ãã\n"
+msgstr "ã¹ã±ã¸ã¥ã¼ã©ã¼ã¯åä½ãã¦ãã¾ãã\n"
+
+#: systemv/lpstat.c:2004
msgid "scheduler is running\n"
-msgstr "ã¹ã±ã¸ã¥ã¼ã©ã¯å®è¡ä¸ã§ã\n"
+msgstr "ã¹ã±ã¸ã¥ã¼ã©ã¼ã¯åä½ä¸ã§ã\n"
+
+#: cups/adminutil.c:2261
+#, c-format
msgid "stat of %s failed: %s"
-msgstr "%s ã®çµ±è¨æ
å ±ãåå¾ã§ãã¾ããã§ããï¼%s"
+msgstr "%s ã®ç¶æ
åå¾ã«å¤±æãã¾ãã: %s"
+
+#: berkeley/lpc.c:216
msgid "status\t\tshow status of daemon and queue\n"
-msgstr "status\t\tãã¼ã¢ã³ã¨ãã¥ã¼ã®ç¶æ³ã表示ãã¾ã\n"
+msgstr "status\t\tãã¼ã¢ã³ã¨ãã¥ã¼ã®ç¶æ
ã表示\n"
+
+#: cups/notify.c:96 cups/notify.c:137
msgid "stopped"
-msgstr "åæ¢ä¸"
+msgstr "åæ¢"
+
+#: systemv/lpstat.c:1017
+#, c-format
msgid "system default destination: %s\n"
-msgstr "ã·ã¹ãã ã®ããã©ã«ãã®éä¿¡å
ï¼%s\n"
+msgstr "ã·ã¹ãã ã®ããã©ã«ãã®å®å
: %s\n"
+
+#: systemv/lpstat.c:1014
+#, c-format
msgid "system default destination: %s/%s\n"
-msgstr "ã·ã¹ãã ã®ããã©ã«ãã®éä¿¡å
ï¼%s/%s\n"
+msgstr "ã·ã¹ãã ã®ããã©ã«ãã®å®å
: %s/%s\n"
+
+#: cups/notify.c:108 cups/notify.c:140
msgid "unknown"
-msgstr "ä¸æ"
+msgstr "æªç¥"
+
+#: cups/notify.c:117
msgid "untitled"
-msgstr "å称æªè¨å®"
+msgstr "ã¿ã¤ãã«ãªã"
+
+#: cups/snmp.c:1044
msgid "variable-bindings uses indefinite length"
-msgstr "variable-bindings ã«ä½¿ããã¦ããé·ããä¸å®ã§ã"
+msgstr "variable-bindings ã®é·ããä¸å®"
+
+
+#
+# End of "$Id$".
+#
diff --git a/locale/cups_ko.po b/locale/cups_ko.po
index 6d53d00fe..6ccd38e99 100644
--- a/locale/cups_ko.po
+++ b/locale/cups_ko.po
@@ -168,9 +168,9 @@ msgstr " %s %s %sì´(ê°) ì¡´ì¬íì§ ììµëë¤!\n"
msgid " %s Bad %s choice %s!\n REF: Page 122, section 5.17\n"
msgstr " %s ì못ë %s - ì íì¬í %s!\n REF: 122íì´ì§, ì¹ì
5.17\n"
msgid " %s Bad UTF-8 \"%s\" translation string for option %s!\n"
-msgstr " %s %s ìµì
ì ëí ì못ë \"%s\" UTF-8 ë²ì ì¤í¸ë§!\n"
+msgstr " %1$s %3$s ìµì
ì ëí ì못ë UTF-8 \"%2$s\" ë²ì ì¤í¸ë§!\n"
msgid " %s Bad UTF-8 \"%s\" translation string for option %s, choice %s!\n"
-msgstr " %s %s ìµì
ì ëí ì못ë \"%s\" UTF-8 ë²ì ì¤í¸ë§, %s ì íì¬í!\n"
+msgstr " %1$s %3$s ìµì
, %4$s ì íì¬íì ëí ì못ë UTF-8 \"%2$s\" ë²ì ì¤í¸ë§!\n"
msgid " %s Bad cupsFilter value \"%s\"!\n"
msgstr " %s ì못ë \"%s\" cupsFilter ê°!\n"
msgid " %s Bad cupsICCProfile %s!\n"
@@ -184,13 +184,13 @@ msgstr " %s ì못ë \"%s\" ì¸ì´!\n"
msgid " %s Empty cupsUIConstraints %s!\n"
msgstr " %s cupsUIConstraints %sì´(ê°) ë¹ì´ìì!\n"
msgid " %s Missing \"%s\" translation string for option %s!\n"
-msgstr " %s %s ìµì
ì ëí \"%s\" ë²ì ì¤í¸ë§ ì ì¤ë¨!\n"
+msgstr " %1$s %3$s ìµì
ì ëí \"%2$s\" ë²ì ì¤í¸ë§ ì ì¤ë¨!\n"
msgid " %s Missing \"%s\" translation string for option %s, choice %s!\n"
-msgstr " %s %s ìµì
ì ëí \"%s\" ë²ì ì¤í¸ë§ ì ì¤ë¨, %s ì íì¬í!\n"
+msgstr " %1$s %3$s ìµì
, %4$s ì íì¬íì ëí \"%2$s\" ë²ì ì¤í¸ë§ ì ì¤ë¨!\n"
msgid " %s Missing choice *%s %s in UIConstraints \"*%s %s *%s %s\"!\n"
-msgstr " %s UIConstraint \"*%s %s *%s %s\"ì ìë *%s %s ì íì¬í ì ì¤ë¨!\n"
+msgstr " %1$s \"*%4$s %5$s *%6$s %7$s\" UIConstraintsì ìë *%2$s %3$s ì íì¬í ì ì¤ë¨!\n"
msgid " %s Missing choice *%s %s in cupsUIConstraints %s: \"%s\"!\n"
-msgstr " %s %s cupsUIConstraintsì ìë *%s %s ì íì¬í ì ì¤ë¨: \"%s\"!\n"
+msgstr " %1$s %4$s cupsUIConstraintsì ìë *%2$s %3$s ì íì¬í ì ì¤ë¨: \"%5$s\"!\n"
msgid " %s Missing cupsFilter file \"%s\"\n"
msgstr " %s \"%s\" cupsFilter íì¼ì´ ì ì¤ë¨\n"
msgid " %s Missing cupsICCProfile file \"%s\"!\n"
@@ -200,13 +200,13 @@ msgstr " %s \"%s\" cupsPreFilter íì¼ ì ì¤ë¨\n"
msgid " %s Missing cupsUIResolver %s!\n"
msgstr " %s %s cupsUIResolver ì ì¤ë¨!\n"
msgid " %s Missing option %s in UIConstraints \"*%s %s *%s %s\"!\n"
-msgstr " %s UIConstraint \"*%s %s *%s %s\"ì ìë %s ìµì
ì ì¤ë¨!\n"
+msgstr " %1$s \"*%3$s %4$s *%5$s %6$s\" UIConstraintsì ìë %2$s ìµì
ì ì¤ë¨!\n"
msgid " %s Missing option %s in cupsUIConstraints %s: \"%s\"!\n"
-msgstr " %s %s cupsUIConstraintsì ìë %s ìµì
ì ì¤ë¨: \"%s\"!\n"
+msgstr " %1$s %3$s cupsUIConstraintsì ìë %2$s ìµì
ì ì¤ë¨: \"%4$s\"!\n"
msgid " %s No base translation \"%s\" is included in file!\n"
-msgstr " %s \"%s\" ê¸°ì´ ë²ìì´ ìë ê²ì´ íì¼ì í¬í¨ëì´ ììµëë¤!\n"
+msgstr " %s íì¼ì \"%s\" ê¸°ì´ ë²ìì´ í¬í¨ëì´ ìì§ ììµëë¤!\n"
msgid " %s REQUIRED %s does not define choice None!\n REF: Page 122, section 5.17\n"
-msgstr " %s ì íì¬íì ì ìíì§ ìë íìí %sì´(ê°) ìì!\n REF: 122íì´ì§, ì¹ì
5.17\n"
+msgstr " %s ì íì¬í ììì ì ìíì§ ìì %sì´(ê°) íì!\n REF: 122íì´ì§, ì¹ì
5.17\n"
msgid " %s cupsICCProfile %s hash value collides with %s!\n"
msgstr " %s ë¶íìí %s cupsICCProfile ê°ì´ %sì(ê³¼) 충ëí¨!\n"
msgid " %s cupsUIResolver %s causes a loop!\n"
@@ -224,17 +224,17 @@ msgstr " **FAIL** ì못ë DefaultPaperDimension %s!\n REF
msgid " **FAIL** BAD JobPatchFile attribute in file\n REF: Page 24, section 3.4.\n"
msgstr " **FAIL** íì¼ì ìë ì못ë JobPatchFile ìì±\n REF: 24íì´ì§, ì¹ì
3.4.\n"
msgid " **FAIL** BAD Manufacturer (should be \"HP\")\n REF: Page 211, table D.1.\n"
-msgstr " **FAIL** ì못ë Manufacturer(\"HP\"ì´ì´ì¼ í¨)\n REF: 211íì´ì§, table D.1.\n"
+msgstr " **FAIL** ì못ë Manufacturer(\"HP\"ì´ì´ì¼ í¨)\n REF: 211íì´ì§, í D.1.\n"
msgid " **FAIL** BAD Manufacturer (should be \"Oki\")\n REF: Page 211, table D.1.\n"
-msgstr " **FAIL** ì못ë Manufacturer(\"Oki\"ì´ì´ì¼ í¨)\n REF: 211íì´ì§, table D.1.\n"
+msgstr " **FAIL** ì못ë Manufacturer(\"Oki\"ì´ì´ì¼ í¨)\n REF: 211íì´ì§, í D.1.\n"
msgid " **FAIL** BAD ModelName - \"%c\" not allowed in string.\n REF: Pages 59-60, section 5.3.\n"
-msgstr " **FAIL** ì못ë ModelName - \"%c\"ì(ë) ì¤í¸ë§ìì íì©ëì§ ììµëë¤.\n REF: 59-60íì´ì§, section 5.3.\n"
+msgstr " **FAIL** ì못ë ModelName - \"%c\"ì(ë) ì¤í¸ë§ìì íì©ëì§ ììµëë¤.\n REF: 59-60íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** BAD PSVersion - not \"(string) int\".\n REF: Pages 62-64, section 5.3.\n"
msgstr " **FAIL** ì못ë PSVersion - \"(string) int\"ì´(ê°) ìëëë¤.\n REF: 62-64íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** BAD Product - not \"(string)\".\n REF: Page 62, section 5.3.\n"
msgstr " **FAIL** ì못ë Product - \"(string)\"ì´(ê°) ìëëë¤.\n REF: 62íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** BAD ShortNickName - longer than 31 chars.\n REF: Pages 64-65, section 5.3.\n"
-msgstr " **FAIL** ì못ë ShortNickName - 31ì ì´ìì
ëë¤.\n REF: 64-65íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** ì못ë ShortNickName - 31ìë³´ë¤ ê¹ëë¤.\n REF: 64-65íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** Bad %s choice %s!\n REF: Page 84, section 5.9\n"
msgstr " **FAIL** ì못ë %s - ì íì¬í %s!\n REF: 84íì´ì§, ì¹ì
5.9\n"
msgid " **FAIL** Bad FileVersion \"%s\"\n REF: Page 56, section 5.3.\n"
@@ -258,45 +258,45 @@ msgstr " **FAIL** ë¤ì¤ %s íëª©ì´ %s ì´ë¦ì ì í!\n"
msgid " **FAIL** Option names %s and %s differ only by case!\n"
msgstr " **FAIL** %s ë° %s ìµì
ì´ë¦ì´ ê²½ì°ë³ë¡ë§ ë¤ë¦!\n"
msgid " **FAIL** REQUIRED Default%s\n REF: Page 40, section 4.5.\n"
-msgstr " **FAIL** íìí Default%s\n REF: 40íì´ì§, section 4.5.\n"
+msgstr " **FAIL** Default%s íì\n REF: 40íì´ì§, ì¹ì
4.5.\n"
msgid " **FAIL** REQUIRED DefaultImageableArea\n REF: Page 102, section 5.15.\n"
-msgstr " **FAIL** íìí DefaultImageableArea\n REF: 102íì´ì§, ì¹ì
5.15.\n"
+msgstr " **FAIL** DefaultImageableArea íì\n REF: 102íì´ì§, ì¹ì
5.15.\n"
msgid " **FAIL** REQUIRED DefaultPaperDimension\n REF: Page 103, section 5.15.\n"
-msgstr " **FAIL** íìí DefaultPaperDimension\n REF: 103íì´ì§, ì¹ì
5.15.\n"
+msgstr " **FAIL** DefaultPaperDimension íì\n REF: 103íì´ì§, ì¹ì
5.15.\n"
msgid " **FAIL** REQUIRED FileVersion\n REF: Page 56, section 5.3.\n"
-msgstr " **FAIL** íìí FileVersion\n REF: 56íì´ì§, section 5.3.\n"
+msgstr " **FAIL** FileVersion íì\n REF: 56íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** REQUIRED FormatVersion\n REF: Page 56, section 5.3.\n"
-msgstr " **FAIL** íìí FormatVersion\n REF: 56íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** FormatVersion íì\n REF: 56íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** REQUIRED ImageableArea for PageSize %s\n REF: Page 41, section 5.\n REF: Page 102, section 5.15.\n"
-msgstr " **FAIL** %s PageSizeì ëí íìí ImageableArea\n REF: 41íì´ì§, ì¹ì
5.\n REF: 102íì´ì§, ì¹ì
5.15.\n"
+msgstr " **FAIL** %s PageSizeì ëí ImageableArea íì\n REF: 41íì´ì§, ì¹ì
5.\n REF: 102íì´ì§, ì¹ì
5.15.\n"
msgid " **FAIL** REQUIRED LanguageEncoding\n REF: Pages 56-57, section 5.3.\n"
-msgstr " **FAIL** íìí LanguageEncoding\n REF: 56-57íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** LanguageEncoding íì\n REF: 56-57íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** REQUIRED LanguageVersion\n REF: Pages 57-58, section 5.3.\n"
-msgstr " **FAIL** íìí LanguageVersion\n REF: 57-58íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** LanguageVersion íì\n REF: 57-58íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** REQUIRED Manufacturer\n REF: Pages 58-59, section 5.3.\n"
-msgstr " **FAIL** íìí Manufacturer\n REF: 58-59íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** Manufacturer íì\n REF: 58-59íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** REQUIRED ModelName\n REF: Pages 59-60, section 5.3.\n"
-msgstr " **FAIL** íìí ModelName\n REF: 59-60íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** ModelName íì\n REF: 59-60íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** REQUIRED NickName\n REF: Page 60, section 5.3.\n"
-msgstr " **FAIL** íìí NickName\n REF: 60íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** NickName íì\n REF: 60íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** REQUIRED PCFileName\n REF: Pages 61-62, section 5.3.\n"
-msgstr " **FAIL** íìí PCFileName\n REF: 61-62íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** PCFileName íì\n REF: 61-62íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** REQUIRED PSVersion\n REF: Pages 62-64, section 5.3.\n"
-msgstr " **FAIL** íìí PSVersion\n REF: 62-64íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** PSVersion íì\n REF: 62-64íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** REQUIRED PageRegion\n REF: Page 100, section 5.14.\n"
-msgstr " **FAIL** íìí PageRegion\n REF: 100íì´ì§, ì¹ì
5.14.\n"
+msgstr " **FAIL** PageRegion íì\n REF: 100íì´ì§, ì¹ì
5.14.\n"
msgid " **FAIL** REQUIRED PageSize\n REF: Page 41, section 5.\n REF: Page 99, section 5.14.\n"
-msgstr " **FAIL** íìí PageSize\n REF: 41íì´ì§, ì¹ì
5.\n REF: Page 99, section 5.14.\n"
+msgstr " **FAIL** PageSize íì\n REF: 41íì´ì§, ì¹ì
5.\n REF: 99íì´ì§, ì¹ì
5.14.\n"
msgid " **FAIL** REQUIRED PageSize\n REF: Pages 99-100, section 5.14.\n"
-msgstr " **FAIL** íìí PageSize\n REF: 99-100íì´ì§, ì¹ì
5.14.\n"
+msgstr " **FAIL** PageSize íì\n REF: 99-100íì´ì§, ì¹ì
5.14.\n"
msgid " **FAIL** REQUIRED PaperDimension for PageSize %s\n REF: Page 41, section 5.\n REF: Page 103, section 5.15.\n"
-msgstr " **FAIL** %s PageSizeì ëí íìí PaperDimension\n REF: Page 41, ì¹ì
5.\n REF: 103íì´ì§, ì¹ì
5.15.\n"
+msgstr " **FAIL** %s PageSizeì ëí PaperDimension íì\n REF: 41íì´ì§, ì¹ì
5.\n REF: 103íì´ì§, ì¹ì
5.15.\n"
msgid " **FAIL** REQUIRED Product\n REF: Page 62, section 5.3.\n"
-msgstr " **FAIL** íìí Product\n REF: 62íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** Product íì\n REF: 62íì´ì§, ì¹ì
5.3.\n"
msgid " **FAIL** REQUIRED ShortNickName\n REF: Page 64-65, section 5.3.\n"
-msgstr " **FAIL** íìí ShortNickName\n REF: 64-65íì´ì§, ì¹ì
5.3.\n"
+msgstr " **FAIL** ShortNickName íì\n REF: 64-65íì´ì§, ì¹ì
5.3.\n"
msgid " %d ERRORS FOUND\n"
-msgstr " %d ì¤ë¥ ë°ê²¬\n"
+msgstr " %dê°ì ì¤ë¥ ë°ê²¬\n"
msgid " Bad %%%%BoundingBox: on line %d!\n REF: Page 39, %%%%BoundingBox:\n"
msgstr " ì못ë %%%%BoundingBox: %dë²ì§¸ ì¤!\n REF: 39íì´ì§, %%%%BoundingBox:\n"
msgid " Bad %%%%Page: on line %d!\n REF: Page 53, %%%%Page:\n"
@@ -304,7 +304,7 @@ msgstr " ì못ë %%%%Page: %dë²ì§¸ ì¤!\n REF: 53íì´ì§, %%%%Pag
msgid " Bad %%%%Pages: on line %d!\n REF: Page 43, %%%%Pages:\n"
msgstr " ì못ë %%%%Pages: %dë²ì§¸ ì¤!\n REF: 43íì´ì§, %%%%Pages:\n"
msgid " Line %d is longer than 255 characters (%d)!\n REF: Page 25, Line Length\n"
-msgstr " %dë²ì§¸ ì¤ì´ 255ì ì´ìì
ëë¤(%d)!\n REF: 25íì´ì§, ì¤ ê¸¸ì´\n"
+msgstr " %dë²ì§¸ ì¤ì´ 255ìë³´ë¤ ê¹ëë¤(%d)!\n REF: 25íì´ì§, ì¤ ê¸¸ì´\n"
msgid " Missing %!PS-Adobe-3.0 on first line!\n REF: Page 17, 3.1 Conforming Documents\n"
msgstr " 첫ë²ì§¸ ì¤ì ìë %!PS-Adobe-3.0ì´ ì ì¤ë¨!\n REF: 17íì´ì§, 3.1 ëíë©í¸ 구ì±í기\n"
msgid " Missing %%EndComments comment!\n REF: Page 41, %%EndComments\n"
@@ -324,11 +324,11 @@ msgstr " ë무 ë§ì %%BeginDocument ì¤ëª
!\n"
msgid " Too many %%EndDocument comments!\n"
msgstr " ë무 ë§ì %%EndDocument ì¤ëª
!\n"
msgid " Warning: file contains binary data!\n"
-msgstr " WARN: íì¼ì ë°ì´ë리 ë°ì´í°ê° í¬í¨ëì´ ììµëë¤!\n"
+msgstr " ê²½ê³ : íì¼ì ë°ì´ë리 ë°ì´í°ê° í¬í¨ëì´ ììµëë¤!\n"
msgid " Warning: no %%EndComments comment in file!\n"
-msgstr " WARN: íì¼ì %%EndComments ì¤ëª
ì´ ììµëë¤!\n"
+msgstr " ê²½ê³ : íì¼ì %%EndComments ì¤ëª
ì´ ììµëë¤!\n"
msgid " Warning: obsolete DSC version %.1f in file!\n"
-msgstr " WARN: íì¼ì ì´ì DSC ë²ì %.1fê° ììµëë¤!\n"
+msgstr " ê²½ê³ : íì¼ì ì´ì DSC ë²ì %.1fê° ììµëë¤!\n"
msgid " FAIL\n"
msgstr " FAIL\n"
msgid " FAIL\n **FAIL** Unable to open PPD file - %s\n"
@@ -336,7 +336,7 @@ msgstr " FAIL\n **FAIL** PPD íì¼ì ì´ ì ìì - %s\n"
msgid " FAIL\n **FAIL** Unable to open PPD file - %s on line %d.\n"
msgstr " FAIL\n **FAIL** PPD íì¼ì ì´ ì ìì - %s, %dë²ì§¸ ì¤.\n"
msgid " PASS\n"
-msgstr " íµê³¼\n"
+msgstr " PASS\n"
msgid "#10 Envelope"
msgstr "#10 ë´í¬"
msgid "#11 Envelope"
@@ -354,13 +354,13 @@ msgstr "%-7s %-7.7s %-7d %-31.31s %.0fë°ì´í¸\n"
msgid "%.0f x %.0f millimeters"
msgstr "%.0f x %.0fmm"
msgid "%.0f x %.0f to %.0f x %.0f millimeters"
-msgstr "%.0f x %.0f to %.0f x %.0fmm"
+msgstr "%.0f x %.0f~%.0f x %.0fmm"
msgid "%.2f x %.2f inches"
msgstr "%.2f x %.2fì¸ì¹"
msgid "%.2f x %.2f to %.2f x %.2f inches"
-msgstr "%.2f x %.2f to %.2f x %.2fì¸ì¹"
+msgstr "%.2f x %.2f~%.2f x %.2fì¸ì¹"
msgid "%s accepting requests since %s\n"
-msgstr " %s ì´íì %s ì¹ì¸ ìì²\n"
+msgstr " %2$s ì´íì %1$s ì¹ì¸ ìì²\n"
msgid "%s cannot be changed."
msgstr "%sì(를) ë³ê²½í ì ììµëë¤."
msgid "%s is not implemented by the CUPS version of lpc.\n"
@@ -372,13 +372,13 @@ msgstr "%sì´(ê°) ì¤ë¹ë¨\n"
msgid "%s is ready and printing\n"
msgstr "%sì´(ê°) ì¤ë¹ëìê³ íë¦°í¸ ì¤\n"
msgid "%s not accepting requests since %s -\n\t%s\n"
-msgstr "%s ì´íì %s ì¹ì¸ ìì² ì í¨ -\n\t%s\n"
+msgstr "%2$s ì´íì %1$s ì¹ì¸ ìì² ì í¨ -\n\t%1$s\n"
msgid "%s not supported!"
msgstr "%sì´(ê°) ì§ìëì§ ìì!"
msgid "%s/%s accepting requests since %s\n"
-msgstr "%s ì´íì %s/%s ì¹ì¸ ìì²\n"
+msgstr "%3$s ì´íì %1$s/%2$s ì¹ì¸ ìì²\n"
msgid "%s/%s not accepting requests since %s -\n\t%s\n"
-msgstr "%s ì´íì %s/%s ì¹ì¸ ìì² ì í¨ -\n\t%s\n"
+msgstr "%3$s ì´íì %1$s/%2$s ì¹ì¸ ìì² ì í¨ -\n\t%4$s\n"
msgid "%s: %-33.33s [job %d localhost]\n"
msgstr "%s: %-33.33s [ìì
%d ë¡ì»¬í¸ì¤í¸]\n"
msgid "%s: %s failed: %s\n"
@@ -386,7 +386,7 @@ msgstr "%s: %s ì¤í¨: %s\n"
msgid "%s: Don't know what to do!\n"
msgstr "%s: í´ì¼í ì¼ì ëª¨ë¥´ê² ì!\n"
msgid "%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "%s: ì¤ë¥ - \"%s\" ëìì ì¡´ì¬íì§ ìë %s íê²½ ë³ì ì´ë¦!\n"
+msgstr "%1$s: ì¤ë¥ - \"%3$s\" ëìì ì¡´ì¬íì§ ìë %2$s íê²½ ë³ì ì´ë¦!\n"
msgid "%s: Error - bad job ID!\n"
msgstr "%s: ì¤ë¥ - ì못ë ìì
ID!\n"
msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
@@ -396,9 +396,9 @@ msgstr "%s: ì¤ë¥ - íì¼ ëë ìì
IDê° ì ê³µëìë¤ë©´ stdinìì
msgid "%s: Error - expected character set after '-S' option!\n"
msgstr "%s: ì¤ë¥ - '-S' ìµì
ë¤ì 문ì ì¸í¸ê° ììë¨!\n"
msgid "%s: Error - expected content type after '-T' option!\n"
-msgstr "%s: ì¤ë¥ - '-T' ìµì
ë¤ì ì½í
ì¸ ì íì´ ììë¨ !\n"
+msgstr "%s: ì¤ë¥ - '-T' ìµì
ë¤ì ì½í
ì¸ ì íì´ ììë¨!\n"
msgid "%s: Error - expected copies after '-n' option!\n"
-msgstr "%s: ì¤ë¥ - -n' ìµì
ë¤ì ì¥ ìê° ììë¨!\n"
+msgstr "%s: ì¤ë¥ - '-n' ìµì
ë¤ì ë³µì¬ ë§¤ìê° ììë¨!\n"
msgid "%s: Error - expected copy count after '-#' option!\n"
msgstr "%s: ì¤ë¥ - '-#' ìµì
ë¤ì ë³µì¬ë³¸ ìê° ììë¨!\n"
msgid "%s: Error - expected destination after '-P' option!\n"
@@ -436,7 +436,7 @@ msgstr "%s: ì¤ë¥ - '-u' ìµì
ë¤ì ì¬ì©ì ì´ë¦ì´ ììë¨!\n"
msgid "%s: Error - expected value after '-%c' option!\n"
msgstr "%s: ì¤ë¥ - '-%c' ìµì
ë¤ì ê°ì´ ììë¨!\n"
msgid "%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' option!\n"
-msgstr "%s: ì¤ë¥ - '-W' ìµì
ë¤ì \"ìë£ë¨\", \"ìë£ëì§ ìì\" ëë \"모ë\"ê° íì!\n"
+msgstr "%s: ì¤ë¥ - '-W' ìµì
ë¤ì \"completed\", \"not-completed\" ëë \"all\"ì´ íì!\n"
msgid "%s: Error - no default destination available.\n"
msgstr "%s: ì¤ë¥ - ì¬ì© ê°ë¥í 기본 ëìì´ ììµëë¤.\n"
msgid "%s: Error - priority must be between 1 and 100.\n"
@@ -480,11 +480,13 @@ msgstr "%s: ìë²ì ì°ê²°í ì ìì!\n"
msgid "%s: Unable to determine MIME type of \"%s\"!\n"
msgstr "%s: MIME ì íì \"%s\"ì(를) ê²°ì í ì ìì!\n"
msgid "%s: Unable to open %s - %s\n"
-msgstr "%s: %s를 ì´ ì ìì - %s\n"
+msgstr "%s: %sì(를) ì´ ì ìì - %s\n"
+msgid "%s: Unable to open %s - %s on line %d.\n"
+msgstr "%s: %sì(를) ì´ ì ìì - %s, %dë²ì§¸ ì¤\n"
msgid "%s: Unable to open %s: %s\n"
msgstr "%s: %sì(를) ì´ ì ìì: %s\n"
msgid "%s: Unable to open PPD file: %s on line %d\n"
-msgstr "%1$s: %3$dë²ì§¸ ì¤ì ìë %2$s PPD íì¼ì ì´ ì ìì\n"
+msgstr "%s: PPD íì¼ì ì´ ì ìì: %s, %dë²ì§¸ ì¤\n"
msgid "%s: Unable to read MIME database from \"%s\" or \"%s\"!\n"
msgstr "%s: \"%s\" ëë \"%s\"ìì MIME ë°ì´í°ë² ì´ì¤ë¥¼ ì½ì ì ìì!\n"
msgid "%s: Unknown destination \"%s\"!\n"
@@ -506,9 +508,9 @@ msgstr "%s: ê²½ê³ - êµ¬ì± ìµì
ì´ ë¬´ìë¨!\n"
msgid "%s: Warning - mode option ignored!\n"
msgstr "%s: ê²½ê³ - 모ë ìµì
ì´ ë¬´ìë¨!\n"
msgid "%s: error - %s environment variable names non-existent destination \"%s\"!\n"
-msgstr "%s: ì¤ë¥ - \"%s\" ëìì ì¡´ì¬íì§ ìë %s íê²½ ë³ì ì´ë¦!\n"
+msgstr "%1$s: ì¤ë¥ - \"%3$s\" ëìì ì¡´ì¬íì§ ìë %2$s íê²½ ë³ì ì´ë¦!\n"
msgid "%s: error - expected option=value after '-o' option!\n"
-msgstr "%s: ì¤ë¥ - '-o' ìµì
ë¤ì ìµì
=ê°ì´ ììë¨!\n"
+msgstr "%s: ì¤ë¥ - '-o' ìµì
ë¤ì option=valueê° ììë¨!\n"
msgid "%s: error - no default destination available.\n"
msgstr "%s: ì¤ë¥ - ì¬ì© ê°ë¥í 기본 ëìì´ ììµëë¤.\n"
msgid "-1"
@@ -912,9 +914,9 @@ msgstr "íë¦°í° ëë¼ì´ë²ë¥¼ ë³´ë´ë ¤ë©´ Samba ìí¸ê° íìí¨!"
msgid "A Samba username is required to export printer drivers!"
msgstr "íë¦°í° ëë¼ì´ë²ë¥¼ ë³´ë´ë ¤ë©´ Samba ì¬ì©ì ì´ë¦ì´ íìí¨!"
msgid "A class named \"%s\" already exists!"
-msgstr "\"%s\"ë¼ë ì´ë¦ì í´ëì¤ê° ì´ë¯¸ ì¡´ì¬í©ëë¤!"
+msgstr "\"%s\"(ì´)ë¼ë ì´ë¦ì í´ëì¤ê° ì´ë¯¸ ì¡´ì¬í©ëë¤!"
msgid "A printer named \"%s\" already exists!"
-msgstr "\"%s\"ë¼ë ì´ë¦ì í린í°ê° ì´ë¯¸ ì¡´ì¬í©ëë¤!"
+msgstr "\"%s\"(ì´)ë¼ë ì´ë¦ì í린í°ê° ì´ë¯¸ ì¡´ì¬í©ëë¤!"
msgid "A0"
msgstr "A0"
msgid "A1"
@@ -1028,7 +1030,7 @@ msgstr "ì못ë SNMP ë²ì ë²í¸"
msgid "Bad UIConstraints"
msgstr "ì못ë UIConstraints"
msgid "Bad copies value %d."
-msgstr "ì못ë ë³µì¬ë³¸ ê° %d."
+msgstr "ì못ë ë³µì¬ ë§¤ì ê° %d."
msgid "Bad custom parameter"
msgstr "ì못ë ì¬ì©ì ì¤ì 매ê°ë³ì"
msgid "Bad device URI \"%s\"!\n"
@@ -1060,7 +1062,7 @@ msgstr "ì못ë notify-recipient-uri URI \"%s\"!"
msgid "Bad number-up value %d."
msgstr "ì못ë number-up ê° %d."
msgid "Bad option + choice on line %d!"
-msgstr "%dë²ì§¸ ì¤ì ìë ì못ë ìµì
+ ì í!"
+msgstr "%dë²ì§¸ ì¤ì ìë ì못ë ìµì
+ ì íì¬í!"
msgid "Bad page-ranges values %d-%d."
msgstr "ì못ë page-ranges ê° %d-%d."
msgid "Bad port-monitor \"%s\"!"
@@ -1104,13 +1106,13 @@ msgstr "C7 ë´í¬"
msgid "CMYK"
msgstr "CMYK"
msgid "CPCL Label Printer"
-msgstr "CPCL ë ì´ë¸ í린í°"
+msgstr "CPCL ë ì´ë¸ í린í°"
msgid "Cancel RSS Subscription"
msgstr "RSS 구ë
ì·¨ì"
msgid "Change Settings"
-msgstr "ì¤ì ê° ë³ê²½"
+msgstr "ì¤ì ê° ë³ê²½"
msgid "Character set \"%s\" not supported!"
-msgstr "\"%s\" 문ì ì¤ì ì´ ì§ìëì§ ìì!"
+msgstr "\"%s\" 문ì ì¸í¸ê° ì§ìëì§ ìì!"
msgid "Chou3 Envelope"
msgstr "Chou3 ë´í¬"
msgid "Chou4 Envelope"
@@ -1124,7 +1126,7 @@ msgstr "ìì"
msgid "Color Mode"
msgstr "ìì 모ë"
msgid "Commands may be abbreviated. Commands are:\n\nexit help quit status ?\n"
-msgstr "ëª
ë ¹ì´ ìëµë ì ììµëë¤. ëª
ë ¹ì ë¤ìê³¼ ê°ìµëë¤:\n\nì¢
ë£ ëìë§ ì¢
ë£ ìí ?\n"
+msgstr "ëª
ë ¹ì´ ìëµë ì ììµëë¤. ëª
ë ¹ì ë¤ìê³¼ ê°ìµëë¤:\n\nexit help quit status ?\n"
msgid "Community name uses indefinite length"
msgstr "커뮤ëí° ì´ë¦ 길ì´ê° 무ì íì
ëë¤"
msgid "Continue"
@@ -1172,7 +1174,7 @@ msgstr "íìì¡ì´ ê±°ì ë¹ììµëë¤."
msgid "Developer empty!"
msgstr "íìì¡ì´ ë¹ì´ ìì!"
msgid "Device: uri = %s\n class = %s\n info = %s\n make-and-model = %s\n device-id = %s\n location = %s\n"
-msgstr "ì¥ë¹: uri = %s\n í´ëì¤ = %s\n ì ë³´ = %s\n ì ì ë° ëª¨ë¸ = %s\n ì¥ë¹-id = %s\n ìì¹ = %s\n"
+msgstr "ì¥ë¹: uri = %s\n class = %s\n info = %s\n make-and-model = %s\n device-id = %s\n location = %s\n"
msgid "Direct Thermal Media"
msgstr "ì§ì ì´ ë¯¸ëì´"
msgid "Disabled"
@@ -1190,11 +1192,11 @@ msgstr "ëë¼ì´ë² ë²ì : "
msgid "Duplexer"
msgstr "ìë©´ í린í°"
msgid "Dymo"
-msgstr "ë¤ì´ëª¨"
+msgstr "Dymo"
msgid "EMERG: Unable to allocate memory for page info: %s\n"
msgstr "EMERG: íì´ì§ ì ë³´ì ë©ëª¨ë¦¬ë¥¼ í ë¹í ì ììµëë¤: %s\n"
msgid "EMERG: Unable to allocate memory for pages array: %s\n"
-msgstr "EMERG: íì´ì§ ì´ë ì´ì ë©ëª¨ë¦¬ë¥¼ í ë¹í ì ììµëë¤: %s\n"
+msgstr "EMERG: íì´ì§ ë°°ì´ì ë©ëª¨ë¦¬ë¥¼ í ë¹í ì ììµëë¤: %s\n"
msgid "EPL1 Label Printer"
msgstr "EPL1 ë ì´ë¸ í린í°"
msgid "EPL2 Label Printer"
@@ -1208,11 +1210,11 @@ msgstr "ERROR: ì못ë %%Page: íì¼ì ìë ì¤ëª
!\n"
msgid "ERROR: Bad %%PageBoundingBox: comment in file!\n"
msgstr "ERROR: ì못ë %%PageBoundingBox: íì¼ì ìë ì¤ëª
!\n"
msgid "ERROR: Bad SCSI device file \"%s\"!\n"
-msgstr "ERROR: ì못ë \"%s\" SCSI ì¥ë¹ íì¼!\n"
+msgstr "ERROR: ì못ë SCSI ì¥ë¹ íì¼ \"%s\"!\n"
msgid "ERROR: Bad charset file %s\n"
-msgstr "ERROR: ì못ë %s 문ì íì¼\n"
+msgstr "ERROR: ì못ë 문ì ì¸í¸ íì¼ %s\n"
msgid "ERROR: Bad charset type %s\n"
-msgstr "ERROR: ì못ë %s 문ì ì í\n"
+msgstr "ERROR: ì못ë 문ì ì¸í¸ ì í %s\n"
msgid "ERROR: Bad columns value %d!\n"
msgstr "ERROR: ì못ë ì´ ê° %d!\n"
msgid "ERROR: Bad cpi value %f!\n"
@@ -1240,7 +1242,7 @@ msgstr "ERROR: %d ì¤ë¥ê° ë¤ì PAPSendData ìì²ì ë³´ë´ë ì¤: %s\n"
msgid "ERROR: Expected quoted string on line %d of %s!\n"
msgstr "ERROR: %2$sì %1$dë²ì§¸ ì¤ì ì¸ì© ì¤í¸ë§ì´ ììë¨!\n"
msgid "ERROR: Fatal USB error!\n"
-msgstr "ERROR: ì¬ê°íUSB ì¤ë¥!\n"
+msgstr "ERROR: ì¬ê°í USB ì¤ë¥!\n"
msgid "ERROR: Invalid HP-GL/2 command seen, unable to print file!\n"
msgstr "ERROR: íì¼ì í린í¸í ì ìë, ì í¨íì§ ìì HP-GL/2 ëª
ë ¹ì´ ë³´ì!\n"
msgid "ERROR: Missing %%EndProlog!\n"
@@ -1248,17 +1250,17 @@ msgstr "ERROR: %%EndPrologê° ì ì¤ë¨!\n"
msgid "ERROR: Missing %%EndSetup!\n"
msgstr "ERROR: %%EndSetupì´ ì ì¤ë¨!\n"
msgid "ERROR: Missing device URI on command-line and no DEVICE_URI environment variable!\n"
-msgstr "ERROR: ëª
ë ¹ ë¼ì¸ì ì¥ë¹ URIì´ ì ì¤ëìê³ DEVICE_URI íê²½ ë³ìê° ìì!\n"
+msgstr "ERROR: ëª
ë ¹ ë¼ì¸ì ì¥ë¹ URIê° ì ì¤ëìê³ DEVICE_URI íê²½ ë³ìê° ìì!\n"
msgid "ERROR: Missing value on line %d of banner file!\n"
msgstr "ERROR: ë°°ë íì¼ì %dë²ì§¸ ì¤ ê°ì´ ì ì¤ë¨!\n"
msgid "ERROR: Need a msgid line before any translation strings on line %d of %s!\n"
-msgstr "ERROR: %2$sì %1$dë²ì§¸ ì¤ì ìë 모ë ë²ì ì¤í¸ë§ ìì msgid íì!\n"
+msgstr "ERROR: %2$sì %1$dë²ì§¸ ì¤ì ìë 모ë ë²ì ì¤í¸ë§ ìì msgid ì¤ íì!\n"
msgid "ERROR: No %%BoundingBox: comment in header!\n"
msgstr "ERROR: %%BoundingBoxê° ìì: 머리ë§ì ì¤ëª
!\n"
msgid "ERROR: No %%Pages: comment in header!\n"
msgstr "ERROR: %%Pagesê° ìì: 머리ë§ì ì¤ëª
!\n"
msgid "ERROR: No device URI found in argv[0] or in DEVICE_URI environment variable!\n"
-msgstr "ERROR: argv[0] ëë DEVICE_URI íê²½ìì ë°ê²¬ë ì¥ë¹ URIê° ìì!\n"
+msgstr "ERROR: argv[0] ëë DEVICE_URI íê²½ ë³ììì ë°ê²¬ë ì¥ë¹ URIê° ìì!\n"
msgid "ERROR: No fonts in charset file %s\n"
msgstr "ERROR: %s 문ì ì¸í¸ íì¼ì ìì²´ ìì\n"
msgid "ERROR: No pages found!\n"
@@ -1266,7 +1268,7 @@ msgstr "ERROR: íì´ì§ ìì!\n"
msgid "ERROR: Out of paper!\n"
msgstr "ERROR: ì¢
ì´ ìì!\n"
msgid "ERROR: PRINTER environment variable not defined!\n"
-msgstr "ERROR: íë¦°í° íê²½ ë³ìê° ì ìëì§ ìì!\n"
+msgstr "ERROR: PRINTER íê²½ ë³ìê° ì ìëì§ ìì!\n"
msgid "ERROR: Print file was not accepted (%s)!\n"
msgstr "ERROR: íë¦°í¸ íì¼ì´ íì©ëì§ ìì(%s)!\n"
msgid "ERROR: Printer not responding\n"
@@ -1276,9 +1278,9 @@ msgstr "ERROR: í린í°ê° ìëµíì§ ìì!\n"
msgid "ERROR: Printer sent unexpected EOF\n"
msgstr "ERROR: í린í°ê° ìê¸°ì¹ ìì EOF를 ë³´ë\n"
msgid "ERROR: Remote host did not accept control file (%d)\n"
-msgstr "ERROR: ì격 í¸ì¤í¸ê° ì ì´ íì¼(%d)ì íì©íì§ ìì\n"
+msgstr "ERROR: ì격 í¸ì¤í¸ê° ì ì´ íì¼ì íì©íì§ ìì(%d)\n"
msgid "ERROR: Remote host did not accept data file (%d)\n"
-msgstr "ERROR: ì격 í¸ì¤í¸ê° ë°ì´í° íì¼(%d)ì íì©íì§ ìì\n"
+msgstr "ERROR: ì격 í¸ì¤í¸ê° ë°ì´í° íì¼ì íì©íì§ ìì(%d)\n"
msgid "ERROR: There was a timeout error while sending data to the printer\n"
msgstr "ERROR: ë°ì´í°ë¥¼ í린í°ë¡ ì ì¡íë ëì ìê°ì´ê³¼ ì¤ë¥ê° ë°ìíìµëë¤\n"
msgid "ERROR: Unable to add file %d to job: %s\n"
@@ -1298,29 +1300,29 @@ msgstr "ERROR: ìì íì¼ì ìì±í ì ìì - %s.\n"
msgid "ERROR: Unable to create temporary file: %s\n"
msgstr "ERROR: ìì íì¼ì ìì±í ì ìì: %s\n"
msgid "ERROR: Unable to exec pictwpstops: %s\n"
-msgstr "ERROR: pictwpstops를 ìì±í ì ìì: %s\n"
+msgstr "ERROR: pictwpstops를 ì¤íí ì ìì: %s\n"
msgid "ERROR: Unable to execute gs program"
msgstr "ERROR: gs íë¡ê·¸ë¨ì ì¤íí ì ìì"
msgid "ERROR: Unable to execute pdftops program"
msgstr "ERROR: pdftops íë¡ê·¸ë¨ì ì¤íí ì ìì"
msgid "ERROR: Unable to fork pictwpstops: %s\n"
-msgstr "ERROR: pictwpstops를 ë¶ë¦¬í ì ìì: %s\n"
+msgstr "ERROR: pictwpstops를 ë¶ë¦¬(fork)í ì ìì: %s\n"
msgid "ERROR: Unable to get PAP request"
msgstr "ERROR: PAP ìì²ì ì»ì ì ìì"
msgid "ERROR: Unable to get PAP response"
-msgstr "ERROR: PAP ë°ìì ì»ì ì ìì"
+msgstr "ERROR: PAP ìëµì ì»ì ì ìì"
msgid "ERROR: Unable to get PPD file for printer \"%s\" - %s.\n"
-msgstr "ERROR: \"%s\"í린í°ì ëí PPD íì¼ì ì»ì ì ììµëë¤. - %s.\n"
+msgstr "ERROR: \"%s\"í린í°ì ëí PPD íì¼ì ì»ì ì ìì - %s.\n"
msgid "ERROR: Unable to get default AppleTalk zone"
msgstr "ERROR: 기본 AppleTalk ììì ì»ì ì ìì"
msgid "ERROR: Unable to get job %d attributes (%s)!\n"
-msgstr "ERROR: %d ìì
ìì±ì ì»ì ì ìì(%s)!\n"
+msgstr "ERROR: ìì
%d ìì±ì ì»ì ì ìì(%s)!\n"
msgid "ERROR: Unable to get printer status (%s)!\n"
msgstr "ERROR: íë¦°í° ìí를 ì ì ìì(%s)!\n"
msgid "ERROR: Unable to locate printer '%s'!\n"
msgstr "ERROR: '%s' í린í°ë¥¼ ì°¾ì ì ìì!\n"
msgid "ERROR: Unable to look for PAP response"
-msgstr "ERROR: PAP ë°ìì ì°¾ì ì ìì"
+msgstr "ERROR: PAP ìëµì ì°¾ì ì ìì"
msgid "ERROR: Unable to lookup AppleTalk printers"
msgstr "ERROR: AppleTalk í린í°ë¥¼ ì°¾ì ì ìì"
msgid "ERROR: Unable to make AppleTalk address"
@@ -1350,7 +1352,7 @@ msgstr "ERROR: ììë¡ ìì¶í íë¦°í¸ íì¼ì ì´ ì ìì: %s\n"
msgid "ERROR: Unable to open temporary file"
msgstr "ERROR: ìì íì¼ì ì´ ì ìì"
msgid "ERROR: Unable to print %d text columns!\n"
-msgstr "ERROR: %d í
ì¤í¸ ì´ì í린í¸í ì ìì!\n"
+msgstr "ERROR: %dê°ì í
ì¤í¸ ì´ì í린í¸í ì ìì!\n"
msgid "ERROR: Unable to print %dx%d text page!\n"
msgstr "ERROR: %dx%d í
ì¤í¸ íì´ì§ë¥¼ í린í¸í ì ìì!\n"
msgid "ERROR: Unable to read print data"
@@ -1360,9 +1362,9 @@ msgstr "ERROR: íë¦°í¸ ë°ì´í°ë¥¼ ì½ì ì ìì!\n"
msgid "ERROR: Unable to reserve port"
msgstr "ERROR: í¬í¸ë¥¼ ìì½í ì ìì"
msgid "ERROR: Unable to seek to offset %ld in file - %s\n"
-msgstr "ERROR: íì¼ì ìë %ld ì¤íì
ì ì°¾ì ì ìì - %s\n"
+msgstr "ERROR: íì¼ìì %ld ì¤íì
ì ì°¾ì ì ìì - %s\n"
msgid "ERROR: Unable to seek to offset %lld in file - %s\n"
-msgstr "ERROR: íì¼ì ìë %lld ì¤íì
ì ì°¾ì ì ìì - %s\n"
+msgstr "ERROR: íì¼ìì %lld ì¤íì
ì ì°¾ì ì ìì - %s\n"
msgid "ERROR: Unable to send LPD command"
msgstr "ERROR: LPD ëª
ë ¹ì ë³´ë¼ ì ìì"
msgid "ERROR: Unable to send PAP tickle request"
@@ -1376,7 +1378,7 @@ msgstr "ERROR: íë¦°í¸ ë°ì´í°ë¥¼ ë³´ë¼ ì ìì!\n"
msgid "ERROR: Unable to send print file to printer"
msgstr "ERROR: íë¦°í¸ íì¼ì í린í°ë¡ ë³´ë¼ ì ìì"
msgid "ERROR: Unable to send trailing nul to printer"
-msgstr "ERROR: ì¶ì nulì í린í°ë¡ ë³´ë¼ ì ìì"
+msgstr "ERROR: ëì리 nulì í린í°ë¡ ë³´ë¼ ì ìì"
msgid "ERROR: Unable to wait for pictwpstops: %s\n"
msgstr "ERROR: pictwpstops를 기ë¤ë¦´ ì ìì: %s\n"
msgid "ERROR: Unable to write %d bytes to \"%s\": %s\n"
@@ -1406,35 +1408,35 @@ msgstr "ERROR: ì ì ìë í¬ë§· 문ì \"%c\"\n"
msgid "ERROR: Unknown message catalog format for \"%s\"!\n"
msgstr "ERROR: \"%s\"ì ëí ì ì ìë ë©ìì§ ì¹´íë¡ê·¸ í¬ë§·!\n"
msgid "ERROR: Unknown option \"%s\" with value \"%s\"!\n"
-msgstr "ERROR: \"%s\" ê°ì ê°ì§ ì ì ìë \"%s\" ìµì
!\n"
+msgstr "ERROR: \"%2$s\" ê°ì´ ìë ì ì ìë \"%1$s\" ìµì
!\n"
msgid "ERROR: Unknown print mode \"%s\"\n"
msgstr "ERROR: ì ì ìë \"%s\" íë¦°í¸ ëª¨ë\n"
msgid "ERROR: Unknown version option value \"%s\"!\n"
msgstr "ERROR: ì ì ìë \"%s\" ë²ì ìµì
ê°!\n"
msgid "ERROR: Unsupported brightness value %s, using brightness=100!\n"
-msgstr "ERROR: ë°ê¸°=100ì ì¬ì©íë, ì§ìëì§ ìë %s ë°ê¸° ê°!\n"
+msgstr "ERROR: brightness=100ì ì¬ì©íë, ì§ìëì§ ìë ë°ê¸° ê° %s!\n"
msgid "ERROR: Unsupported gamma value %s, using gamma=1000!\n"
-msgstr "ERROR: ê°ë§=1000ì ì¬ì©íë, ì§ìëì§ ìë %s ê°ë§ ê°ã
!\n"
+msgstr "ERROR: gamma=1000ì ì¬ì©íë, ì§ìëì§ ìë ê°ë§ ê° %s!\n"
msgid "ERROR: Unsupported number-up value %d, using number-up=1!\n"
-msgstr "ERROR: number-up=1ì ì¬ì©íë, ì§ìëì§ ìë %d number-up ê°!\n"
+msgstr "ERROR: number-up=1ì ì¬ì©íë, ì§ìëì§ ìë number-up ê° %d!\n"
msgid "ERROR: Unsupported number-up-layout value %s, using number-up-layout=lrtb!\n"
-msgstr "ERROR: number-up-layout=lrtbì ì¬ì©íë, ì§ìëì§ ìë number-up-layout %s!\n"
+msgstr "ERROR: number-up-layout=lrtbì ì¬ì©íë, ì§ìëì§ ìë number-up-layout ê° %s!\n"
msgid "ERROR: Unsupported page-border value %s, using page-border=none!\n"
-msgstr "ERROR: page-border=ììì ì¬ì©íë, ì§ìëì§ ìë page-border ê° %s!\n"
+msgstr "ERROR: page-border=noneì ì¬ì©íë, ì§ìëì§ ìë page-border ê° %s!\n"
msgid "ERROR: doc_printf overflow (%d bytes) detected, aborting!\n"
msgstr "ERROR: doc_printf ì¤ë²íë¡ì°(%dë°ì´í¸)ê° ë°ê²¬ë¨, ì¤ë¨ ì¤!\n"
msgid "ERROR: pdftops filter crashed on signal %d!\n"
-msgstr "ERROR: pictwpstopsê° %d ì í¸ìì ì¢
ë£ë¨!\n"
+msgstr "ERROR: pdftops íí°ê° ì í¸ %dìì 충ëí¨!\n"
msgid "ERROR: pdftops filter exited with status %d!\n"
-msgstr "ERROR: pictwpstopsê° %d ìíë¡ ì¢
ë£ë¨!\n"
+msgstr "ERROR: pdftops íí°ê° ìí %d(ì¼)ë¡ ì¢
ë£ë¨!\n"
msgid "ERROR: pictwpstops exited on signal %d!\n"
-msgstr "ERROR: pictwpstopsê° %d ì í¸ìì ì¢
ë£ë¨!\n"
+msgstr "ERROR: pictwpstopsê° ì í¸ %dìì ì¢
ë£ë¨!\n"
msgid "ERROR: pictwpstops exited with status %d!\n"
-msgstr "ERROR: pictwpstopsê° %d ìíë¡ ì¢
ë£ë¨!\n"
+msgstr "ERROR: pictwpstopsê° ìí %d(ì¼)ë¡ ì¢
ë£ë¨!\n"
msgid "ERROR: recoverable: Unable to connect to printer; will retry in 30 seconds...\n"
msgstr "ERROR: ë³µì ê°ë¥: í린í°ì ì°ê²°í ì ìì; 30ì´ íì ë¤ì ìë...\n"
msgid "ERROR: select() failed"
-msgstr "ERROR: ì í() ì¤í¨"
+msgstr "ERROR: select() ì¤í¨"
msgid "ERROR: unable to stat print file"
msgstr "ERROR: íë¦°í¸ íì¼ì ììí ì ìì"
msgid "Edit Configuration File"
@@ -1450,7 +1452,7 @@ msgstr "ìí¸ ë¤ì ì
ë ¥:"
msgid "Enter password:"
msgstr "ìí¸ ì
ë ¥:"
msgid "Enter your username and password or the root username and password to access this page. If you are using Kerberos authentication, make sure you have a valid Kerberos ticket."
-msgstr "ì´ íì´ì§ì ì°ê²°íë ¤ë©´ ì¬ì©ì ì´ë¦ ë° ìí¸ ëë ë£¨í¸ ì¬ì©ì ì´ë¦ ë° ìí¸ë¥¼ ì
ë ¥íììì¤. Kerberos ì¸ì¦ì ì¬ì©íê³ ìë¤ë©´, ì í¨í Kerberos í°ì¼ì ê°ì§ê³ ìëì§ íì¸íììì¤."
+msgstr "ì´ íì´ì§ì ì°ê²°íë ¤ë©´ ì¬ì©ì ì´ë¦ ë° ìí¸ ëë root ì¬ì©ì ì´ë¦ ë° ìí¸ë¥¼ ì
ë ¥íììì¤. Kerberos ì¸ì¦ì ì¬ì©íê³ ìë¤ë©´, ì í¨í Kerberos í°ì¼ì ê°ì§ê³ ìëì§ íì¸íììì¤."
msgid "Envelope Feed"
msgstr "ë´í¬ ê³µê¸"
msgid "Epson"
@@ -1458,25 +1460,25 @@ msgstr "Epson"
msgid "Error Policy"
msgstr "ì¤ë¥ ì ì±
"
msgid "Error: need hostname after '-h' option!\n"
-msgstr "ì¤ë¥: '-h' ìµì
ë¤ì í¸ì¤í¸ ì´ë¦ì´ íìí¨!!\n"
+msgstr "ì¤ë¥: '-h' ìµì
ë¤ì í¸ì¤í¸ ì´ë¦ì´ íì!\n"
msgid "Every 10 Labels"
-msgstr "10ë ì´ë¸ë§ë¤"
+msgstr "10ê° ë ì´ë¸ë§ë¤"
msgid "Every 2 Labels"
-msgstr "2ë ì´ë¸ë§ë¤"
+msgstr "2ê° ë ì´ë¸ë§ë¤"
msgid "Every 3 Labels"
-msgstr "3ë ì´ë¸ë§ë¤"
+msgstr "3ê° ë ì´ë¸ë§ë¤"
msgid "Every 4 Labels"
-msgstr "4ë ì´ë¸ë§ë¤"
+msgstr "4ê° ë ì´ë¸ë§ë¤"
msgid "Every 5 Labels"
-msgstr "5ë ì´ë¸ë§ë¤"
+msgstr "5ê° ë ì´ë¸ë§ë¤"
msgid "Every 6 Labels"
-msgstr "6ë ì´ë¸ë§ë¤"
+msgstr "6ê° ë ì´ë¸ë§ë¤"
msgid "Every 7 Labels"
-msgstr "7ë ì´ë¸ë§ë¤"
+msgstr "7ê° ë ì´ë¸ë§ë¤"
msgid "Every 8 Labels"
-msgstr "8ë ì´ë¸ë§ë¤"
+msgstr "8ê° ë ì´ë¸ë§ë¤"
msgid "Every 9 Labels"
-msgstr "9ë ì´ë¸ë§ë¤"
+msgstr "9ê° ë ì´ë¸ë§ë¤"
msgid "Every Label"
msgstr "모ë ë ì´ë¸"
msgid "Expectation Failed"
@@ -1490,15 +1492,15 @@ msgstr "íì¼ í´ë"
msgid "File Folder - 9/16 x 3 7/16\""
msgstr "íì¼ í´ë - 9/16 x 3 7/16\""
msgid "File device URIs have been disabled! To enable, see the FileDevice directive in \"%s/cupsd.conf\"."
-msgstr "íì¼ ì¥ë¹ URIê° ë¹íì±íëììµëë¤! íì±ííë ¤ë©´, \"%s/cupsd.conf\"ì ìë FileDevice를 ë³´ììì¤."
+msgstr "íì¼ ì¥ë¹ URIê° ë¹íì±íëììµëë¤! íì±ííë ¤ë©´, \"%s/cupsd.conf\"ì ìë FileDevice ì§ì문ì ë³´ììì¤."
msgid "Folio"
-msgstr "í´ë¦¬ì¤"
+msgstr "2ì ì§"
msgid "Forbidden"
msgstr "ê¸ì§ë¨"
msgid "Fuser temperature high!"
-msgstr "Fuser ì¨ëê° ëì!"
+msgstr "í¨ì ì¨ëê° ëì!"
msgid "Fuser temperature low!"
-msgstr "Fuser ì¨ëê° ë®ì!"
+msgstr "í¨ì ì¨ëê° ë®ì!"
msgid "General"
msgstr "ì¼ë°"
msgid "Generic"
@@ -1506,7 +1508,7 @@ msgstr "ì¼ë°"
msgid "German FanFold"
msgstr "ë
ì¼ FanFold"
msgid "German FanFold Legal"
-msgstr "ë
ì¼ FanFold Legal"
+msgstr "ë
ì¼ FanFold 공문ì"
msgid "Get-Response-PDU uses indefinite length"
msgstr "Get-Response-PDU 길ì´ê° 무ì íì
ëë¤"
msgid "Glossy Paper"
@@ -1544,7 +1546,7 @@ msgstr "INFO: íë¦°í° ê²ì ì¤...\n"
msgid "INFO: Opening connection\n"
msgstr "INFO: ì°ê²° ì´ê¸°\n"
msgid "INFO: Print file sent, waiting for printer to finish...\n"
-msgstr "INFO: íë¦°í¸ íì¼ì ë³´ëê³ , íë¦°í° ìì
ì´ ì¢
ë£ ë기 ì¤...\n"
+msgstr "INFO: íë¦°í¸ íì¼ì ë³´ëê³ , íë¦°í° ìì
ì¢
ë£ ë기 ì¤...\n"
msgid "INFO: Printer busy; will retry in 10 seconds...\n"
msgstr "INFO: íë¦°í° ì¬ì© ì¤; 10ì´ íì ë¤ì ìë...\n"
msgid "INFO: Printer busy; will retry in 30 seconds...\n"
@@ -1584,15 +1586,15 @@ msgstr "INFO: ë°ì´í° íì¼ ë³´ë´ë ì¤(%lldë°ì´í¸)\n"
msgid "INFO: Sending print data...\n"
msgstr "INFO: íë¦°í¸ ë°ì´í° ë³´ë´ë ì¤...\n"
msgid "INFO: Sent print file, %ld bytes...\n"
-msgstr "INFO: íë¦°í¸ íì¼ ë³´ë´ê¸°, %ldë°ì´í¸...\n"
+msgstr "INFO: íë¦°í¸ íì¼ ë³´ë, %ldë°ì´í¸...\n"
msgid "INFO: Sent print file, %lld bytes...\n"
-msgstr "INFO: íë¦°í¸ íì¼ ë³´ë´ê¸°, %lldë°ì´í¸...\n"
+msgstr "INFO: íë¦°í¸ íì¼ ë³´ë, %lldë°ì´í¸...\n"
msgid "INFO: Spooling LPR job, %.0f%% complete...\n"
msgstr "INFO: LPR ìì
ì¤í ì¤, %.0f%% ìë£...\n"
msgid "INFO: Unable to contact printer, queuing on next printer in class...\n"
msgstr "INFO: í린í°ì ì°ê²°í ì ì기 ë문ì, í´ëì¤ì ìë ë¤ì íë¦°í° ë기 ì¤...\n"
msgid "INFO: Using default AppleTalk zone \"%s\"\n"
-msgstr "INFO: 기본 AppleTalk ìì ì¬ì© ì¤ \"%s\"\n"
+msgstr "INFO: \"%s\" 기본 AppleTalk ìì ì¬ì© ì¤ \n"
msgid "INFO: Waiting for job to complete...\n"
msgstr "INFO: ìì
ìë£ ë기 ì¤...\n"
msgid "INFO: Waiting for printer to become available...\n"
@@ -1634,7 +1636,7 @@ msgstr "ì¬ë°ë¥´ì§ ìì 주 í¤ìë ì¤í¸ë§"
msgid "Illegal option keyword string"
msgstr "ì¬ë°ë¥´ì§ ìì ìµì
í¤ìë ì¤í¸ë§"
msgid "Illegal translation string"
-msgstr "ì¬ë°ë¥´ì§ ë²ì ì¤í¸ë§"
+msgstr "ì¬ë°ë¥´ì§ ìì ë²ì ì¤í¸ë§"
msgid "Illegal whitespace character"
msgstr "ì¬ë°ë¥´ì§ ìì ì¬ë°± 문ì"
msgid "Ink/toner almost empty."
@@ -1688,13 +1690,13 @@ msgstr "#%d ìì
ì´ ì¢
ë£ëìê³ ëì²´í ì ìì!"
msgid "Job #%d is not complete!"
msgstr "#%d ìì
ì´ ì¼ë£ëì§ ìì!"
msgid "Job #%d is not held for authentication!"
-msgstr "#%d ìì
ì´ ì¸ì¦ëì§ ìì!"
+msgstr "#%d ìì
ì´ ì¸ì¦ì ìí´ ì ì§ëì§ ìì!"
msgid "Job #%d is not held!"
msgstr "#%d ìì
ì´ ì ì§ëì§ ìì!"
msgid "Job #%s does not exist!"
msgstr "#%s ìì
ì´ ì¡´ì¬íì§ ìì!"
msgid "Job %d not found!"
-msgstr "#%d ìì
ì´ ë°ê²¬ëì§ ìì!"
+msgstr "%d ìì
ì´ ë°ê²¬ëì§ ìì!"
msgid "Job Completed"
msgstr "ìì
ì´ ìë£ë¨"
msgid "Job Created"
@@ -1746,7 +1748,7 @@ msgstr "ìì¹: "
msgid "Long-Edge (Portrait)"
msgstr "ê°ì¥ì리 길ê²(ì¸ë¡)"
msgid "Make and Model: "
-msgstr "ìì± ë° ëª¨ë¸: "
+msgstr "ì ì¡°ì¬ ë° ëª¨ë¸: "
msgid "Manual Feed"
msgstr "ìë ê³µê¸"
msgid "Media Dimensions: "
@@ -1764,11 +1766,11 @@ msgstr "미ëì´ ì¶ì "
msgid "Media Type"
msgstr "미ëì´ ì í"
msgid "Media jam!"
-msgstr "미ëì´ ì ì²´!"
+msgstr "미ëì´ê° 걸림!"
msgid "Media tray almost empty."
msgstr "미ëì´ í¸ë ì´ê° ê±°ì ë¹ììµëë¤."
msgid "Media tray empty!"
-msgstr "미ëì´ í¸ë ì´ê° ë¹ì´ìì!"
+msgstr "미ëì´ í¸ë ì´ê° ë¹ì´ ìì!"
msgid "Media tray missing!"
msgstr "미ëì´ í¸ë ì´ê° ì ì¤ë¨!"
msgid "Media tray needs to be filled."
@@ -1782,7 +1784,7 @@ msgstr "PPD-Adobe-4.x 머리ë§ì´ ì ì¤ë¨"
msgid "Missing asterisk in column 1"
msgstr "1ì´ì ìë ë³íê° ì ì¤ë¨"
msgid "Missing document-number attribute!"
-msgstr "ëíë©í¸ ë²í¸ ìì±ì´ ì ì¤ë¨!"
+msgstr "document-number ìì±ì´ ì ì¤ë¨!"
msgid "Missing double quote on line %d!"
msgstr "%dë²ì§¸ ì¤ì ìë í° ë°ì´íê° ì ì¤ë¨!"
msgid "Missing form variable!"
@@ -1798,7 +1800,7 @@ msgstr "%dë²ì§¸ ì¤ì ìë ê°ì´ ì ì¤ë¨!"
msgid "Missing value string"
msgstr "ê° ì¤í¸ë§ì´ ì ì¤ë¨"
msgid "Model: name = %s\n natural_language = %s\n make-and-model = %s\n device-id = %s\n"
-msgstr "모ë¸: ì´ë¦ = %s\n 기본 ì¸ì´ = %s\n ìì± ë° ëª¨ë¸ = %s\n ì¥ë¹ id = %s\n"
+msgstr "모ë¸: name = %s\n natural_language = %s\n make-and-model = %s\n device-id = %s\n"
msgid "Modify Class"
msgstr "í´ëì¤ ìì "
msgid "Modify Printer"
@@ -1820,15 +1822,15 @@ msgstr "NOTICE: íë¦°í¸ íì¼ì´ íì©ë¨ - ì ì ìë ìì
ID.\n"
msgid "NULL PPD file pointer"
msgstr "NULL PPD íì¼ í¬ì¸í°"
msgid "Name OID uses indefinite length"
-msgstr "OID ì´ë¦ 길ì´ê° 무ì íì
ëë¤"
+msgstr "ì´ë¦ OID 길ì´ê° 무ì íì
ëë¤"
msgid "Never"
msgstr "ì í¨"
msgid "New Stylus Color Series"
-msgstr "ìë¡ì´ Stylus ìì ì리ì¦"
+msgstr "ìë¡ì´ Stylus Color ì리ì¦"
msgid "New Stylus Photo Series"
-msgstr "ìë¡ì´ Stylus ì¬ì§ ì리ì¦"
+msgstr "ìë¡ì´ Stylus Photo ì리ì¦"
msgid "No"
-msgstr "ìëì¤"
+msgstr "ìëì"
msgid "No Content"
msgstr "ì½í
ì¸ ìì"
msgid "No PPD name!"
@@ -1838,13 +1840,13 @@ msgstr "VarBind SEQUENCE ìì"
msgid "No Windows printer drivers are installed!"
msgstr "ì¤ì¹ë Windows íë¦°í° ëë¼ì´ë²ê° ìì!"
msgid "No active connection"
-msgstr "íì± ìì
ì´ ìì"
+msgstr "íì± ì°ê²°ì´ ìì"
msgid "No active jobs on %s!"
msgstr "%sì íì± ìì
ì´ ìì!"
msgid "No attributes in request!"
msgstr "ìì²ì ìì±ì´ ìì!"
msgid "No authentication information provided!"
-msgstr "ì ê³µë ì ë³´ì ì¸ì¦ì´ ìì!"
+msgstr "ì ê³µë ì¸ì¦ ì ë³´ê° ìì!"
msgid "No community name"
msgstr "커뮤ëí° ì´ë¦ ìì"
msgid "No default printer"
@@ -1852,15 +1854,15 @@ msgstr "기본 í린í°ê° ìì"
msgid "No destinations added."
msgstr "ì¶ê°ë ëìì´ ììµëë¤."
msgid "No error-index"
-msgstr "ì¤ë¥-ì¸ë±ì¤ ìì"
+msgstr "error-index ìì"
msgid "No error-status"
-msgstr "ì¤ë¥-ìí ìì"
+msgstr "error-status ìì"
msgid "No file!?!"
msgstr "íì¼ì´ ìì!?!"
msgid "No modification time!"
msgstr "ìì ìê° ìì!"
msgid "No name OID"
-msgstr "OID ì´ë¦ ìì"
+msgstr "ì´ë¦ OID ìì"
msgid "No printer name!"
msgstr "íë¦°í° ì´ë¦ ìì!"
msgid "No printer-uri found for class!"
@@ -1874,7 +1876,7 @@ msgstr "request-id ìì"
msgid "No subscription attributes in request!"
msgstr "ìì²ì 구ë
ìì±ì´ ìì!"
msgid "No subscriptions found."
-msgstr "구ë
ì´ ììµëë¤."
+msgstr "ë°ê²¬ë 구ë
ì´ ììµëë¤."
msgid "No variable-bindings SEQUENCE"
msgstr "variable-bindings SEQUENCE ìì"
msgid "No version number"
@@ -1916,7 +1918,7 @@ msgstr "%s ì´ê¸° ì¤í¨: %s"
msgid "OpenGroup without a CloseGroup first"
msgstr "ì°ì CloseGroupì´ ìë OpenGroup"
msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
-msgstr "ì°ì CloseUI/JCLCloseUIì´ ìë OpenUI/JCLOpenUI"
+msgstr "ì°ì CloseUI/JCLCloseUIê° ìë OpenUI/JCLOpenUI"
msgid "Operation Policy"
msgstr "ëì ì ì±
"
msgid "Options Installed"
@@ -1928,21 +1930,21 @@ msgstr "í ëê° ìì!"
msgid "Output Mode"
msgstr "ì¶ë ¥ 모ë"
msgid "Output bin almost full."
-msgstr "ì¶ë ¥ì ê±°ì ì°¾ìµëë¤."
+msgstr "ì¶ë ¥ì ê±°ì ì°¼ìµëë¤."
msgid "Output bin full!"
-msgstr "ì¶ë ¥ìê° ê°ë ì°¸!"
+msgstr "ì¶ë ¥ìê° ì°¼ìµëë¤!"
msgid "Output for printer %s is sent to %s\n"
msgstr "%s íë¦°í° ì¶ë ¥ì %s(ì¼)ë¡ ë³´ë\n"
msgid "Output for printer %s is sent to remote printer %s on %s\n"
-msgstr "%s íë¦°í° ì¶ë ¥ì %sì ìë %s ì격 í린í°ë¡ ë³´ë\n"
+msgstr "%1$s íë¦°í° ì¶ë ¥ì %3$sì ìë %2$s ì격 í린í°ë¡ ë³´ë\n"
msgid "Output for printer %s/%s is sent to %s\n"
msgstr "%s/%s íë¦°í° ì¶ë ¥ì %së¡ ë³´ë\n"
msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
-msgstr "%s/%s íë¦°í° ì¶ë ¥ì %sì ìë %s ì격 í린í°ë¡ ë³´ë\n"
+msgstr "%1$s/%2$s íë¦°í° ì¶ë ¥ì %4$sì ìë %3$s ì격 í린í°ë¡ ë³´ë\n"
msgid "Output tray missing!"
msgstr "ì¶ë ¥ í¸ë ì´ê° ì ì¤ë¨!"
msgid "PASS\n"
-msgstr "íµê³¼\n"
+msgstr "PASS\n"
msgid "PCL Laser Printer"
msgstr "PCL ë ì´ì í린í°"
msgid "PRC1 Envelope"
@@ -1980,9 +1982,9 @@ msgstr "ParamCustominCutInterval"
msgid "ParamCustominTearInterval"
msgstr "ParamCustominTearInterval"
msgid "Password for %s on %s? "
-msgstr "%s ìí¸(%sìì ì¬ì©)? "
+msgstr "%2$sì %1$s ìí¸? "
msgid "Password for %s required to access %s via SAMBA: "
-msgstr "%sì ëí ìí¸ë SAMBA를 íµí´ %sì ì°ê²°í´ì¼ í©ëë¤: "
+msgstr "SAMBA를 íµí´ %2$sì ì°ê²°íë ¤ë©´ íìí %1$sì ìí¸: "
msgid "Pause Class"
msgstr "í´ëì¤ ì¼ìì ì§"
msgid "Pause Printer"
@@ -2058,7 +2060,7 @@ msgstr "ì©ëì´ íê³ì ëë¬íìµëë¤."
msgid "Rank Owner Job File(s) Total Size\n"
msgstr "ë¨ê³ ìì ì ìì
íì¼ ì´ í¬ê¸°\n"
msgid "Rank Owner Pri Job Files Total Size\n"
-msgstr "ë¨ê³ ìì ì 미리 ìì
íì¼ ì´ í¬ê¸°\n"
+msgstr "ë¨ê³ ìì ì ì°ì ìì ìì
íì¼ ì´ í¬ê¸°\n"
msgid "Reject Jobs"
msgstr "ìì
ê±°ë¶"
msgid "Reprint After Error"
@@ -2088,25 +2090,25 @@ msgstr "기í 보기"
msgid "Serial Port #%d"
msgstr "ìë¦¬ì¼ í¬í¸ #%d"
msgid "Server Restarted"
-msgstr "ìëë ìë²"
+msgstr "ìë² ì¬ìëë¨"
msgid "Server Security Auditing"
msgstr "ìë² ë³´ì ê°ì¬"
msgid "Server Started"
-msgstr "ììí ìë²"
+msgstr "ìë² ìëë¨"
msgid "Server Stopped"
-msgstr "ì¤ë¨ë ìë²"
+msgstr "ìë² ì¤ë¨ë¨"
msgid "Service Unavailable"
msgstr "ì¬ì©í ì ìë ìë¹ì¤"
msgid "Set Allowed Users"
msgstr "íì©ë ì¬ì©ì ì¤ì "
msgid "Set As Server Default"
-msgstr "기본ì¼ë¡ ì¤ì "
+msgstr "ìë² ê¸°ë³¸ê°ì¼ë¡ ì¤ì "
msgid "Set Class Options"
msgstr "í´ëì¤ ìµì
ì¤ì "
msgid "Set Printer Options"
msgstr "íë¦°í° ìµì
ì¤ì "
msgid "Set Publishing"
-msgstr "ë°íí기 ì¤ì "
+msgstr "ë°í ì¤ì "
msgid "Shipping Address"
msgstr "ë°ì¡ 주ì"
msgid "Shipping Address - 2 5/16 x 4\""
@@ -2120,11 +2122,11 @@ msgstr "íì¤"
msgid "Starting Banner"
msgstr "ë°°ë ìì ì¤"
msgid "Statement"
-msgstr "ìí"
+msgstr "ëì°¨í"
msgid "Stylus Color Series"
-msgstr "Stylus ìì ì리ì¦"
+msgstr "Stylus Color ì리ì¦"
msgid "Stylus Photo Series"
-msgstr "Stylus ì¬ì§ ì리ì¦"
+msgstr "Stylus Photo ì리ì¦"
msgid "Super A"
msgstr "ìí¼ A"
msgid "Super B"
@@ -2146,15 +2148,15 @@ msgstr "ì ì·¨ì ì¡°ì ìì¹"
msgid "The PPD file \"%s\" could not be found."
msgstr "\"%s\" PPD íì¼ì ì°¾ì ì ììµëë¤."
msgid "The PPD file \"%s\" could not be opened: %s"
-msgstr "\"%s\" PPD íì¼ì ì´ ì ììµëë¤. %s"
+msgstr "\"%s\" PPD íì¼ì ì´ ì ììµëë¤: %s"
msgid "The class name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "í´ëì¤ ì´ë¦ì ìµë 127ìì íë¦°í¸ ê°ë¥í 문ìë§ì í¬í¨í ì ìê³ ë¹ ì¹¸, ì¬ëì(/) ëë íì´ë 기í¸(#)를 í¬í¨íì§ ìì ì ììµëë¤."
+msgstr "í´ëì¤ ì´ë¦ì ìµë 127ìì íë¦°í¸ ê°ë¥í 문ìë§ì í¬í¨í ì ìê³ ë¹ ì¹¸, ì¬ëì(/) ëë íì´ë 기í¸(#)를 í¬í¨íì§ ììµëë¤."
msgid "The notify-lease-duration attribute cannot be used with job subscriptions."
msgstr "notify-lease-duration ìì±ì ìì
구ë
ê³¼ í¨ê» ì¬ì©í ì ììµëë¤."
msgid "The notify-user-data value is too large (%d > 63 octets)!"
msgstr "notify-user-data ê°ì´ ë무 í¼!(%d > 63í)!"
msgid "The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/), or the pound sign (#)."
-msgstr "íë¦°í° ì´ë¦ì ìµë 127ìì íë¦°í¸ ê°ë¥í 문ìë§ì í¬í¨í ì ìê³ ë¹ ì¹¸, ì¬ëì(/) ëë íì´ë 기í¸(#)를 í¬í¨íì§ ìì ì ììµëë¤."
+msgstr "íë¦°í° ì´ë¦ì ìµë 127ìì íë¦°í¸ ê°ë¥í 문ìë§ì í¬í¨í ì ìê³ ë¹ ì¹¸, ì¬ëì(/) ëë íì´ë 기í¸(#)를 í¬í¨íì§ ììµëë¤."
msgid "The printer or class is not shared!"
msgstr "íë¦°í° ëë í´ëì¤ë¥¼ ê³µì í ì ìì!"
msgid "The printer or class was not found."
@@ -2168,7 +2170,7 @@ msgstr "printer-urië \"ipp://HOSTNAME/classes/CLASSNAME\" ííì¬ì¼ í©ë
msgid "The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
msgstr "printer-urië \"ipp://HOSTNAME/printers/PRINTERNAME\" ííì¬ì¼ í©ëë¤."
msgid "The subscription name may not contain spaces, slashes (/), question marks (?), or the pound sign (#)."
-msgstr "구ë
ì´ë¦ì ìµë 127ìì íë¦°í¸ ê°ë¥í 문ìë§ì í¬í¨í ì ìê³ ë¹ ì¹¸, ì¬ëì(/) ëë íì´ë 기í¸(#)를 í¬í¨íì§ ìì ì ììµëë¤."
+msgstr "구ë
ì´ë¦ì ë¹ ì¹¸, ì¬ëì(/), 물ìí(?) ëë íì´ë 기í¸(#)를 í¬í¨íì§ ììµëë¤."
msgid "There are too many subscriptions."
msgstr "구ë
ì´ ë무 ë§ìµëë¤."
msgid "Thermal Transfer Media"
@@ -2178,7 +2180,7 @@ msgstr "ì 목: "
msgid "Toner low."
msgstr "í ëê° ë¶ì¡±í©ëë¤."
msgid "Too many active jobs."
-msgstr "ë무 ë§ì ìì
ì´ íì±ëììµëë¤."
+msgstr "íì± ìì
ì´ ë무 ë§ìµëë¤."
msgid "Too many job-sheets values (%d > 2)!"
msgstr "job-sheets ê°ì´ ë무 ë§ìµëë¤(%d > 2)!"
msgid "Too many printer-state-reasons values (%d > %d)!"
@@ -2216,53 +2218,53 @@ msgstr "US í¸ì§ì§(ì)"
msgid "USB Serial Port #%d"
msgstr "USB ìë¦¬ì¼ í¬í¸ #%d"
msgid "Unable to access cupsd.conf file:"
-msgstr "cupsd.conf íì¼ì ì°ê²°í ì ììµëë¤:"
+msgstr "cupsd.conf íì¼ì ì°ê²°í ì ìì:"
msgid "Unable to add RSS subscription:"
-msgstr "RSS 구ë
ì ì¶ê°í ì ììµëë¤:"
+msgstr "RSS 구ë
ì ì¶ê°í ì ìì:"
msgid "Unable to add class:"
-msgstr "í´ëì¤ë¥¼ ì¶ê°í ì ììµëë¤:"
+msgstr "í´ëì¤ë¥¼ ì¶ê°í ì ìì:"
msgid "Unable to add job for destination \"%s\"!"
-msgstr "\"%s\" ëìì ëí ìì
ì ì¶ê°í ì ìì!"
+msgstr "\"%s\" ëìì ëí ìì
ì ì¶ê°í ì ììµëë¤!"
msgid "Unable to add printer:"
-msgstr "í린í°ë¥¼ ì¶ê°í ì ììµëë¤:"
+msgstr "í린í°ë¥¼ ì¶ê°í ì ìì:"
msgid "Unable to allocate memory for file types!"
-msgstr "íì¼ ì íì ëí ë©ëª¨ë¦¬ë¥¼ í ë¹í ì ìì!"
+msgstr "íì¼ ì íì ëí ë©ëª¨ë¦¬ë¥¼ í ë¹í ì ììµëë¤!"
msgid "Unable to cancel RSS subscription:"
-msgstr "RSS 구ë
ì ì·¨ìììµëë¤:"
+msgstr "RSS 구ë
ì ì·¨ìí ì ìì:"
msgid "Unable to change printer-is-shared attribute:"
-msgstr "printer-is-shared ìì±ì ë³ê²½í ì ììµëë¤:"
+msgstr "printer-is-shared ìì±ì ë³ê²½í ì ìì:"
msgid "Unable to change printer:"
-msgstr "í린í°ë¥¼ ë³ê²½í ì ììµëë¤:"
+msgstr "í린í°ë¥¼ ë³ê²½í ì ìì:"
msgid "Unable to change server settings:"
-msgstr "ìë² ì¤ì ê°ì ë³ê²½í ì ììµëë¤:"
+msgstr "ìë² ì¤ì ê°ì ë³ê²½í ì ìì:"
msgid "Unable to connect to host."
-msgstr "í¸ì¤í¸ì ì°ê²°í ì ììµëë¤."
+msgstr "í¸ì¤í¸ì ì°ê²°í ì ìì."
msgid "Unable to copy 64-bit CUPS printer driver files (%d)!"
-msgstr "64ë¹í¸ CUPS íë¦°í° ëë¼ì´ë² íì¼ì ë³µì¬í ì ìì(%d)!"
+msgstr "64ë¹í¸ CUPS íë¦°í° ëë¼ì´ë² íì¼ì ë³µì¬í ì ììµëë¤(%d)!"
msgid "Unable to copy 64-bit Windows printer driver files (%d)!"
-msgstr "64ë¹í¸ Windows íë¦°í° ëë¼ì´ë² íì¼ì ë³µì¬í ì ìì(%d)!"
+msgstr "64ë¹í¸ Windows íë¦°í° ëë¼ì´ë² íì¼ì ë³µì¬í ì ììµëë¤(%d)!"
msgid "Unable to copy CUPS printer driver files (%d)!"
-msgstr "CUPS íë¦°í° ëë¼ì´ë² íì¼ì ë³µì¬í ì ìì(%d)!"
+msgstr "CUPS íë¦°í° ëë¼ì´ë² íì¼ì ë³µì¬í ì ììµëë¤(%d)!"
msgid "Unable to copy PPD file - %s!"
msgstr "PPD íì¼ì ë³µì¬í ì ìì - %s!"
msgid "Unable to copy PPD file!"
-msgstr "PPD íì¼ì ë³µì¬í ì ìì!"
+msgstr "PPD íì¼ì ë³µì¬í ì ììµëë¤!"
msgid "Unable to copy Windows 2000 printer driver files (%d)!"
-msgstr "Windows 2000 íë¦°í° ëë¼ì´ë² íì¼ì ë³µì¬í ì ìì(%d)!"
+msgstr "Windows 2000 íë¦°í° ëë¼ì´ë² íì¼ì ë³µì¬í ì ììµëë¤(%d)!"
msgid "Unable to copy Windows 9x printer driver files (%d)!"
-msgstr "Windows 9x íë¦°í° ëë¼ì´ë² íì¼ì ë³µì¬í ì ìì(%d)!"
+msgstr "Windows 9x íë¦°í° ëë¼ì´ë² íì¼ì ë³µì¬í ì ììµëë¤(%d)!"
msgid "Unable to copy interface script - %s!"
msgstr "ì¸í°íì´ì¤ ì¤í¬ë¦½í¸ë¥¼ ë³µì¬í ì ìì - %s!"
msgid "Unable to create printer-uri!"
-msgstr "printer-uri를 ìì±í ì ìì!"
+msgstr "printer-uri를 ìì±í ì ììµëë¤!"
msgid "Unable to create temporary file:"
-msgstr "ìì íì¼ì ìì±í ì ììµëë¤:"
+msgstr "ìì íì¼ì ìì±í ì ìì:"
msgid "Unable to delete class:"
-msgstr "í´ëì¤ë¥¼ ìì í ì ììµëë¤:"
+msgstr "í´ëì¤ë¥¼ ìì í ì ìì:"
msgid "Unable to delete printer:"
-msgstr "í린í°ë¥¼ ìì í ì ììµëë¤:"
+msgstr "í린í°ë¥¼ ìì í ì ìì:"
msgid "Unable to do maintenance command:"
-msgstr "ëª
ë ¹ì ì ì§í ì ììµëë¤:"
+msgstr "ëª
ë ¹ì ì ì§í ì ìì:"
msgid "Unable to edit cupsd.conf files larger than 1MB!"
msgstr "1MBë³´ë¤ í° cupsd.conf íì¼ì í¸ì§í ì ììµëë¤!"
msgid "Unable to find destination for job!"
@@ -2270,15 +2272,15 @@ msgstr "ìì
ì ëí ëìì ì°¾ì ì ììµëë¤!"
msgid "Unable to find printer!\n"
msgstr "í린í°ë¥¼ ì°¾ì ì ììµëë¤!\n"
msgid "Unable to get class list:"
-msgstr "í´ëì¤ ëª©ë¡ì ì»ì ì ììµëë¤:"
+msgstr "í´ëì¤ ëª©ë¡ì ì»ì ì ìì:"
msgid "Unable to get class status:"
-msgstr "í´ëì¤ ìí를 ì ì ììµëë¤:"
+msgstr "í´ëì¤ ìí를 ì ì ìì:"
msgid "Unable to get list of printer drivers:"
-msgstr "íë¦°í° ëë¼ì´ë² 목ë¡ì ì»ì ì ììµëë¤:"
+msgstr "íë¦°í° ëë¼ì´ë² 목ë¡ì ì»ì ì ìì:"
msgid "Unable to get printer attributes:"
-msgstr "íë¦°í° ìì±ì ì»ì ì ììµëë¤:"
+msgstr "íë¦°í° ìì±ì ì»ì ì ìì:"
msgid "Unable to get printer list:"
-msgstr "íë¦°í° ëª©ë¡ì ì»ì ì ììµëë¤:"
+msgstr "íë¦°í° ëª©ë¡ì ì»ì ì ìì:"
msgid "Unable to get printer status:"
msgstr "íë¦°í° ìí를 ì ì ììµëë¤:"
msgid "Unable to install Windows 2000 printer driver files (%d)!"
@@ -2286,9 +2288,9 @@ msgstr "Windows 2000 íë¦°í° ëë¼ì´ë² íì¼ì ì¤ì¹í ì ììµëë¤
msgid "Unable to install Windows 9x printer driver files (%d)!"
msgstr "Windows 9x íë¦°í° ëë¼ì´ë² íì¼ì ì¤ì¹í ì ììµëë¤(%d)!"
msgid "Unable to modify class:"
-msgstr "í´ëì¤ë¥¼ ìì í ì ììµëë¤:"
+msgstr "í´ëì¤ë¥¼ ìì í ì ìì:"
msgid "Unable to modify printer:"
-msgstr "í린í°ë¥¼ ìì í ì ììµëë¤:"
+msgstr "í린í°ë¥¼ ìì í ì ìì:"
msgid "Unable to move job"
msgstr "ìì
ì ì´ëí ì ììµëë¤"
msgid "Unable to move jobs"
@@ -2296,23 +2298,23 @@ msgstr "ìì
ì ì´ëí ì ììµëë¤"
msgid "Unable to open PPD file"
msgstr "PPD íì¼ì ì´ ì ììµëë¤"
msgid "Unable to open PPD file:"
-msgstr "PPD íì¼ì ì´ ì ììµëë¤:"
+msgstr "PPD íì¼ì ì´ ì ìì:"
msgid "Unable to open cupsd.conf file:"
-msgstr "cupsd.conf íì¼ì ì´ ì ììµëë¤:"
+msgstr "cupsd.conf íì¼ì ì´ ì ìì:"
msgid "Unable to open document %d in job %d!"
-msgstr "%dê°ì ëíë©í¸ë¥¼ ìì
%dìì ì´ ì ììµëë¤!"
+msgstr "ëíë©í¸ %dì(를) ìì
%dìì ì´ ì ììµëë¤!"
msgid "Unable to print test page:"
-msgstr "í
ì¤í¸ íì´ì§ë¥¼ í린í¸í ì ììµëë¤:"
+msgstr "í
ì¤í¸ íì´ì§ë¥¼ í린í¸í ì ìì:"
msgid "Unable to run \"%s\": %s\n"
-msgstr "\"%s\"ì(를) ì¤íí ì ììµëë¤: %s\n"
+msgstr "\"%s\"ì(를) ì¤íí ì ìì: %s\n"
msgid "Unable to send command to printer driver!"
-msgstr "íë¦°í° ëë¼ì´ë²ë¡ ëª
ë ¹ì ë³´ë¼ ì ìì!"
+msgstr "íë¦°í° ëë¼ì´ë²ë¡ ëª
ë ¹ì ë³´ë¼ ì ììµëë¤!"
msgid "Unable to set Windows printer driver (%d)!"
-msgstr "Windows íë¦°í° ëë¼ì´ë²ë¥¼ ì¤ì í ì ìì(%d)!"
+msgstr "Windows íë¦°í° ëë¼ì´ë²ë¥¼ ì¤ì í ì ììµëë¤(%d)!"
msgid "Unable to set options:"
-msgstr "ìµì
ì ì¤ì í ì ììµëë¤:"
+msgstr "ìµì
ì ì¤ì í ì ìì:"
msgid "Unable to set server default:"
-msgstr "기본 ìë²ë¥¼ ì¤ì í ì ììµëë¤:"
+msgstr "ìë² ê¸°ë³¸ê°ì ì¤ì í ì ìì:"
msgid "Unable to upload cupsd.conf file:"
msgstr "cupsd.conf íì¼ì ì
ë¡ëí ì ììµëë¤:"
msgid "Unable to use legacy USB class driver!\n"
@@ -2348,11 +2350,11 @@ msgstr "ì
ê·¸ë ì´ë íìí¨"
msgid "Usage:\n\n lpadmin [-h server] -d destination\n lpadmin [-h server] -x destination\n lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n [-r remove-class] [-v device] [-D description]\n [-P ppd-file] [-o name=value]\n [-u allow:user,user] [-u deny:user,user]\n\n"
msgstr "ì¬ì©ë²:\n\n lpadmin [-h server] -d destination\n lpadmin [-h server] -x destination\n lpadmin [-h server] -p printer [-c add-class] [-i interface] [-m model]\n [-r remove-class] [-v device] [-D description]\n [-P ppd-file] [-o name=value]\n [-u allow:user,user] [-u deny:user,user]\n\n"
msgid "Usage: %s job user title copies options [filename]\n"
-msgstr "ì¬ì©ë²: %s ìì
ì¬ì©ì ì 목 ë³µì¬ ìµì
[íì¼ ì´ë¦]\n"
+msgstr "ì¬ì©ë²: %s job user title copies options [filename]\n"
msgid "Usage: %s job-id user title copies options [file]\n"
-msgstr "ì¬ì©ë²: %s job-id ì¬ì©ì ì 목 ë³µì¬ ìµì
[íì¼]\n"
+msgstr "ì¬ì©ë²: %s job-id user title copies options [file]\n"
msgid "Usage: %s job-id user title copies options file\n"
-msgstr "ì¬ì©ë²: %s job-id ì¬ì©ì ì 목 ë³µì¬ ìµì
íì¼\n"
+msgstr "ì¬ì©ë²: %s job-id user title copies options file\n"
msgid "Usage: convert [ options ]\n\nOptions:\n\n -f filename Set file to be converted (otherwise stdin)\n -o filename Set file to be generated (otherwise stdout)\n -i mime/type Set input MIME type (otherwise auto-typed)\n -j mime/type Set output MIME type (otherwise application/pdf)\n -P filename.ppd Set PPD file\n -a 'name=value ...' Set option(s)\n -U username Set username for job\n -J title Set title\n -c copies Set number of copies\n -u Remove the PPD file when finished\n -D Remove the input file when finished\n"
msgstr "ì¬ì©ë²: convert [ options ]\n\nìµì
:\n\n -f filename ë³íí íì¼ ì¤ì (ëë stdin)\n -o filename ìì±í íì¼ ì¤ì (ëë stdout)\n -i mime/type ì
ë ¥ MIME ì í ì¤ì (ëë ìë ì í ì¤ì )\n -j mime/type ì¶ë ¥ MIME ì í ì¤ì (ëë ìì© íë¡ê·¸ë¨/pdf)\n -P filename.ppd PPD íì¼ ì¤ì \n -a 'name=value ...' ìµì
ì¤ì (s)\n -U username ìì
ì ëí ì¬ì©ì ì´ë¦ ì¤ì \n -J title ì 목 ì¤ì \n -c copies ë³µì¬ ì¥ ì ì¤ì \n -u ì¢
ë£ ì PPD íì¼ ì ê±°\n -D ì¢
ë£ ì ì
ë ¥ íì¼ ì ê±°\n"
msgid "Usage: cupsaddsmb [options] printer1 ... printerN\n cupsaddsmb [options] -a\n\nOptions:\n -E Encrypt the connection to the server\n -H samba-server Use the named SAMBA server\n -U samba-user Authenticate using the named SAMBA user\n -a Export all printers\n -h cups-server Use the named CUPS server\n -v Be verbose (show commands)\n"
@@ -2422,11 +2424,11 @@ msgstr "WARNING: \"%s:%s\"ì(를) ì´ ì ììµëë¤: %s\n"
msgid "WARNING: Unable to send PAP status request"
msgstr "WARNING: PAP ìí ìì²ì ë³´ë¼ ì ììµëë¤"
msgid "WARNING: Unexpected PAP packet of type %d\n"
-msgstr "WARNING: %d ì íì ì기ì¹ìì PAP í¨í·\n"
+msgstr "WARNING: %d ì íì ìê¸°ì¹ ìì PAP í¨í·\n"
msgid "WARNING: Unknown PAP packet of type %d\n"
msgstr "WARNING: %d ì íì ì ì ìë PAP í¨í·\n"
msgid "WARNING: Unknown choice \"%s\" for option \"%s\"!\n"
-msgstr "WARNING: \"%s\" ìµì
ì ëí ì ì ìë ì í \"%s\"!\n"
+msgstr "WARNING: \"%2$s\" ìµì
ì ëí ì ì ìë \"%1$s\" ì íì¬í!\n"
msgid "WARNING: Unknown option \"%s\"!\n"
msgstr "WARNING: ì ì ìë \"%s\" ìµì
!\n"
msgid "WARNING: Unsupported baud rate %s!\n"
@@ -2496,9 +2498,9 @@ msgstr "%s/%sì ëí ì¥ë¹: %s\n"
msgid "device for %s: %s\n"
msgstr "%sì ëí ì¥ë¹: %s\n"
msgid "error-index uses indefinite length"
-msgstr "ì¤ë¥-ì¸ë±ì¤ 길ì´ê° 무ì íì
ëë¤"
+msgstr "error-index 길ì´ê° 무ì íì
ëë¤"
msgid "error-status uses indefinite length"
-msgstr "ì¤ë¥-ìí 길ì´ê° 무ì íì
ëë¤"
+msgstr "error-status 길ì´ê° 무ì íì
ëë¤"
msgid "held"
msgstr "ì ì§ë¨"
msgid "help\t\tget help on commands\n"
@@ -2510,37 +2512,37 @@ msgstr "job-printer-uri ìì±ì´ ì ì¤ë¨!"
msgid "lpadmin: Class name can only contain printable characters!\n"
msgstr "lpadmin: í´ëì¤ ì´ë¦ì íë¦°í¸ ê°ë¥í 문ìë§ í¬í¨í ì ìì!\n"
msgid "lpadmin: Expected PPD after '-P' option!\n"
-msgstr "lpadmin: '-P'ìµì
ë¤ì PPDê° ììë¨!\n"
+msgstr "lpadmin: '-P' ìµì
ë¤ì PPDê° ììë¨!\n"
msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
-msgstr "lpadmin: '-u'ìµì
ë¤ì íì©/ê±°ë¶:ì¬ì©ì목ë¡ì´ ììë¨!\n"
+msgstr "lpadmin: '-u' ìµì
ë¤ì allow/deny:userlistê° ììë¨!\n"
msgid "lpadmin: Expected class after '-r' option!\n"
-msgstr "lpadmin: '-r'ìµì
ë¤ì í´ëì¤ê° ììë¨!\n"
+msgstr "lpadmin: '-r' ìµì
ë¤ì í´ëì¤ê° ììë¨!\n"
msgid "lpadmin: Expected class name after '-c' option!\n"
-msgstr "lpadmin: '-c'ìµì
ë¤ì í´ëì¤ ì´ë¦ì´ ììë¨!\n"
+msgstr "lpadmin: '-c' ìµì
ë¤ì í´ëì¤ ì´ë¦ì´ ììë¨!\n"
msgid "lpadmin: Expected description after '-D' option!\n"
-msgstr "lpadmin: '-D'ìµì
ë¤ì ì¤ëª
ì´ ììë¨!\n"
+msgstr "lpadmin: '-D' ìµì
ë¤ì ì¤ëª
ì´ ììë¨!\n"
msgid "lpadmin: Expected device URI after '-v' option!\n"
-msgstr "lpadmin: '-v'ìµì
ë¤ì ì¥ë¹ URIê° ììë¨!\n"
+msgstr "lpadmin: '-v' ìµì
ë¤ì ì¥ë¹ URIê° ììë¨!\n"
msgid "lpadmin: Expected file type(s) after '-I' option!\n"
-msgstr "lpadmin: '-I'ìµì
ë¤ì íì¼ ì íì´ ììë¨!\n"
+msgstr "lpadmin: '-I' ìµì
ë¤ì íì¼ ì íì´ ììë¨!\n"
msgid "lpadmin: Expected hostname after '-h' option!\n"
-msgstr "lpadmin: '-h'ìµì
ë¤ì í¸ì¤í¸ ì´ë¦ì´ ììë¨!\n"
+msgstr "lpadmin: '-h' ìµì
ë¤ì í¸ì¤í¸ ì´ë¦ì´ ììë¨!\n"
msgid "lpadmin: Expected interface after '-i' option!\n"
-msgstr "lpadmin: '-i'ìµì
ë¤ì ì¸í°íì´ì¤ê° ììë¨!\n"
+msgstr "lpadmin: '-i' ìµì
ë¤ì ì¸í°íì´ì¤ê° ììë¨!\n"
msgid "lpadmin: Expected location after '-L' option!\n"
-msgstr "lpadmin: '-L'ìµì
ë¤ì ìì¹ê° ììë¨!\n"
+msgstr "lpadmin: '-L' ìµì
ë¤ì ìì¹ê° ììë¨!\n"
msgid "lpadmin: Expected model after '-m' option!\n"
-msgstr "lpadmin: '-m'ìµì
ë¤ì 모ë¸ì´ ììë¨!\n"
+msgstr "lpadmin: '-m' ìµì
ë¤ì 모ë¸ì´ ììë¨!\n"
msgid "lpadmin: Expected name=value after '-o' option!\n"
-msgstr "lpadmin: '-o'ìµì
ë¤ì ì´ë¦=ê°ì´ ììë¨!\n"
+msgstr "lpadmin: '-o' ìµì
ë¤ì name=valueê° ììë¨!\n"
msgid "lpadmin: Expected printer after '-p' option!\n"
-msgstr "lpadmin: '-p'ìµì
ë¤ì í린í°ê° ììë¨!\n"
+msgstr "lpadmin: '-p' ìµì
ë¤ì í린í°ê° ììë¨!\n"
msgid "lpadmin: Expected printer name after '-d' option!\n"
-msgstr "lpadmin: '-d'ìµì
ë¤ì í린í°ê° ììë¨!\n"
+msgstr "lpadmin: '-d' ìµì
ë¤ì íë¦°í° ì´ë¦ì´ ììë¨!\n"
msgid "lpadmin: Expected printer or class after '-x' option!\n"
-msgstr "lpadmin: '-x'ìµì
ë¤ì íë¦°í° ëë í´ëì¤ê° ììë¨!\n"
+msgstr "lpadmin: '-x' ìµì
ë¤ì íë¦°í° ëë í´ëì¤ê° ììë¨!\n"
msgid "lpadmin: No member names were seen!\n"
-msgstr "lpadmin: ë³´ì´ë íì ì´ë¦ì´ ìì!\n"
+msgstr "lpadmin: íì ì´ë¦ì´ ë³´ì´ì§ ìì!\n"
msgid "lpadmin: Printer %s is already a member of class %s.\n"
msgstr "lpadmin: %s í린í°ì ì´ë¯¸ %s í´ëì¤ íìì´ ììµëë¤.\n"
msgid "lpadmin: Printer %s is not a member of class %s.\n"
@@ -2576,7 +2578,7 @@ msgstr "lpadmin: íë¦°í° ìì¹ë¥¼ ì¤ì í ì ìì:\n 먼ì í
msgid "lpadmin: Unable to set the printer options:\n You must specify a printer name first!\n"
msgstr "lpadmin: íë¦°í° ìµì
ì ì¤ì í ì ìì:\n 먼ì íë¦°í° ì´ë¦ì ì§ì í´ì¼ í©ëë¤!\n"
msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
-msgstr "lpadmin: ì ì ìë \"%s\" íì©/ê±°ë¶ ìµì
!\n"
+msgstr "lpadmin: ì ì ìë allow/deny ìµì
\"%s\"!\n"
msgid "lpadmin: Unknown argument '%s'!\n"
msgstr "lpadmin: ì ì ìë '%s' ë³ì!\n"
msgid "lpadmin: Unknown option '%c'!\n"
@@ -2590,7 +2592,7 @@ msgstr "lpinfo: --device-id ë¤ì 1284 ì¥ë¹ ID ì¤í¸ë§ì´ ììë¨!\n"
msgid "lpinfo: Expected language after --language!\n"
msgstr "lpinfo: --language ë¤ì ì¸ì´ê° ììë¨!\n"
msgid "lpinfo: Expected make and model after --make-and-model!\n"
-msgstr "lpinfo: --make-and-model ë¤ì ìì± ë° ëª¨ë¸ì´ ììë¨!\n"
+msgstr "lpinfo: --make-and-model ë¤ì ì ì¡°ì¬ ë° ëª¨ë¸ì´ ììë¨!\n"
msgid "lpinfo: Expected product string after --product!\n"
msgstr "lpinfo: --product ë¤ì ì í ì¤í¸ë§ì´ ììë¨!\n"
msgid "lpinfo: Expected scheme list after --exclude-schemes!\n"
@@ -2622,7 +2624,7 @@ msgstr "lpoptions: %sì ëí PPD íì¼ì ì´ ì ìì!\n"
msgid "lpoptions: Unknown printer or class!\n"
msgstr "lpoptions: ì ì ìë íë¦°í° ëë í´ëì¤!\n"
msgid "lppasswd: Only root can add or delete passwords!\n"
-msgstr "lppasswd: 루í¸ë§ ìí¸ë¥¼ ì¶ê° ëë ì ê±°í ì ìì!\n"
+msgstr "lppasswd: rootë§ ìí¸ë¥¼ ì¶ê° ëë ì ê±°í ì ìì!\n"
msgid "lppasswd: Password file busy!\n"
msgstr "lppasswd: ìí¸ íì¼ ì¬ì© ì¤!\n"
msgid "lppasswd: Password file not updated!\n"
@@ -2630,7 +2632,7 @@ msgstr "lppasswd: ìí¸ íì¼ì´ ì
ë°ì´í¸ëì§ ìì!\n"
msgid "lppasswd: Sorry, password doesn't match!\n"
msgstr "lppasswd: ì£ì¡í©ëë¤, ìí¸ê° ì¼ì¹íì§ ììµëë¤!\n"
msgid "lppasswd: Sorry, password rejected.\nYour password must be at least 6 characters long, cannot contain\nyour username, and must contain at least one letter and number.\n"
-msgstr "lppasswd: ì£ì¡í©ëë¤, ìí¸ê° ê±°ë¶ëììµëë¤.\nìí¸ë ìµìí 6ì ì´ìì´ì´ì¼ íê³ , ì¬ì©ì ì´ë¦ì í¬í¨í´ìë ìëë©°, ìµì íë ì´ìì 문ì ë° ì«ì를 í¬í¨í´ì¼ í©ëë¤.\n"
+msgstr "lppasswd: ì£ì¡í©ëë¤, ìí¸ê° ê±°ë¶ëììµëë¤.\nìí¸ë ìµìí 6ì ì´ìì´ì´ì¼ íê³ , ì¬ì©ì ì´ë¦ì í¬í¨í´ìë ìëë©°, \nìµì íë ì´ìì 문ì ë° ì«ì를 í¬í¨í´ì¼ í©ëë¤.\n"
msgid "lppasswd: Sorry, passwords don't match!\n"
msgstr "lppasswd: ì£ì¡í©ëë¤, ìí¸ê° ì¼ì¹íì§ ììµëë¤!\n"
msgid "lppasswd: Unable to copy password string: %s\n"
@@ -2648,7 +2650,7 @@ msgstr "lppasswd: \"%s\" ì¬ì©ì ë° \"%s\" ê·¸ë£¹ì´ ì¡´ì¬íì§ ììµë
msgid "lpstat: error - %s environment variable names non-existent destination \"%s\"!\n"
msgstr "lpstat: ì¤ë¥ - %s íê²½ ë³ì ì´ë¦ì´ ì¡´ì¬íì§ ìë ëì \"%s\" ì´ë¦ì!\n"
msgid "members of class %s:\n"
-msgstr "í´ëì¤ íì %s:\n"
+msgstr "%s í´ëì¤ íì:\n"
msgid "no entries\n"
msgstr "ìí¸ë¦¬ ìì\n"
msgid "no system default destination\n"
@@ -2668,7 +2670,7 @@ msgstr "ppdc: \"%s\" í¬í¨ ëë í 리 ì¶ê° ì¤...\n"
msgid "ppdc: Adding/updating UI text from %s...\n"
msgstr "ppdc: %sìì UI í
ì¤í¸ ì¶ê°/ì
ë°ì´í¸ ì¤...\n"
msgid "ppdc: Bad boolean value (%s) on line %d of %s.\n"
-msgstr "ppdc: ì못ë ë¶ë¦¬ì¸ ê°(%1$s)ì´(ê°) %3$sì %2$dë²ì§¸ ì¤ì ìì.\n"
+msgstr "ppdc: ì못ë ë¶ë¦¬ì¸ ê°(%1$s)ì´ %3$sì %2$dë²ì§¸ ì¤ì ìì.\n"
msgid "ppdc: Bad resolution name \"%s\" on line %d of %s!\n"
msgstr "ppdc: ì못ë \"%1$s\" í´ìë ì´ë¦ì´ %3$sì %2$dë²ì§¸ ì¤ì ìì!\n"
msgid "ppdc: Bad status keyword %s on line %d of %s!\n"
@@ -2686,7 +2688,7 @@ msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì íë¡ê·¸ë¨ ì´ë¦ì´ ììë¨!\n"
msgid "ppdc: Expected boolean value on line %d of %s.\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ë¶ë¦¬ì¸ ê°ì´ ììë¨.\n"
msgid "ppdc: Expected charset after Font on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Font ë¤ì 문ì ì¸í¸ê° ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Font ë¤ì 문ì ì¸í¸ê° ììë¨!\n"
msgid "ppdc: Expected choice code on line %d of %s.\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ì íì¬í ì½ëê° ììë¨.\n"
msgid "ppdc: Expected choice name/text on line %d of %s.\n"
@@ -2694,19 +2696,19 @@ msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ì íì¬í ì´ë¦/í
ì¤í¸ê° ìì
msgid "ppdc: Expected color order for ColorModel on line %d of %s!\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ColorModelì ëí ìì ììê° ììë¨!\n"
msgid "ppdc: Expected colorspace for ColorModel on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ColorModelì ëí´ ìì ê³µê°ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ColorModelì ëí ìì ê³µê°ì´ ììë¨!\n"
msgid "ppdc: Expected compression for ColorModel on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ColorModelì ëí´ ìì¶ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ColorModelì ëí ìì¶ì´ ììë¨!\n"
msgid "ppdc: Expected constraints string for UIConstraints on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì UIConstraintsì ëí´ ì í ì¤í¸ë§ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì UIConstraintsì ëí ì í ì¤í¸ë§ì´ ììë¨!\n"
msgid "ppdc: Expected driver type keyword following DriverType on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì DriverType ë¤ì ëë¼ì´ë² ì í í¤ìëê° ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, DriverType ë¤ì ëë¼ì´ë² ì í í¤ìëê° ììë¨!\n"
msgid "ppdc: Expected duplex type after Duplex on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Duplex ë¤ì ìë©´ ì íì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Duplex ë¤ì ìë©´ ì íì´ ììë¨!\n"
msgid "ppdc: Expected encoding after Font on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Font ë¤ì ì¸ì½ë©ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Font ë¤ì ì¸ì½ë©ì´ ììë¨!\n"
msgid "ppdc: Expected filename after #po %s on line %d of %s!\n"
-msgstr "ppdc: #po %1$s ë¤ì íì¼ ì´ë¦ì´ ììë¨(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤, #po %1$s ë¤ì íì¼ ì´ë¦ì´ ììë¨!\n"
msgid "ppdc: Expected group name/text on line %d of %s!\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì 그룹 ì´ë¦/í
ì¤í¸ê° ììë¨!\n"
msgid "ppdc: Expected include filename on line %d of %s!\n"
@@ -2714,29 +2716,29 @@ msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì í¬í¨ íì¼ ì´ë¦ì´ ììë¨!\n"
msgid "ppdc: Expected integer on line %d of %s!\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ì ìê° ììë¨!\n"
msgid "ppdc: Expected locale after #po on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì #po ë¤ì ë¡ì»¬ ìì¹ê° ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, #po ë¤ì ë¡ì»¬ ìì¹ê° ììë¨!\n"
msgid "ppdc: Expected name after %s on line %d of %s!\n"
-msgstr "ppdc: %1$s ë¤ì ì´ë¦ì´ ììë¨(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤, %1$s ë¤ì ì´ë¦ì´ ììë¨!\n"
msgid "ppdc: Expected name after FileName on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì FileName ë¤ì ì´ë¦ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, FileName ë¤ì ì´ë¦ì´ ììë¨!\n"
msgid "ppdc: Expected name after Font on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Font ë¤ì ì´ë¦ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Font ë¤ì ì´ë¦ì´ ììë¨!\n"
msgid "ppdc: Expected name after Manufacturer on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Manufacturer ë¤ì ì´ë¦ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Manufacturer ë¤ì ì´ë¦ì´ ììë¨!\n"
msgid "ppdc: Expected name after MediaSize on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì MediaSize ë¤ì ì´ë¦ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, MediaSize ë¤ì ì´ë¦ì´ ììë¨!\n"
msgid "ppdc: Expected name after ModelName on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ModelName ë¤ì ì´ë¦ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, ModelName ë¤ì ì´ë¦ì´ ììë¨!\n"
msgid "ppdc: Expected name after PCFileName on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì PCFileName ë¤ì ì´ë¦ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, PCFileName ë¤ì ì´ë¦ì´ ììë¨!\n"
msgid "ppdc: Expected name/text after %s on line %d of %s!\n"
-msgstr "ppdc: %1$s ë¤ì ì´ë¦/í
ì¤í¸ê° ììë¨(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤, %1$s ë¤ì ì´ë¦/í
ì¤í¸ê° ììë¨!\n"
msgid "ppdc: Expected name/text after Installable on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Installable ë¤ì ì´ë¦/í
ì¤í¸ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Installable ë¤ì ì´ë¦/í
ì¤í¸ ììë¨!\n"
msgid "ppdc: Expected name/text after Resolution on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Resolution ë¤ì ì´ë¦/í
ì¤í¸ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Resolution ë¤ì ì´ë¦/í
ì¤í¸ ììë¨!\n"
msgid "ppdc: Expected name/text combination for ColorModel on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ColorModelì ëí´ ì´ë¦/í
ì¤í¸ ì¡°í©ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, ColorModelì ëí´ ì´ë¦/í
ì¤í¸ ì¡°í©ì´ ììë¨!\n"
msgid "ppdc: Expected option name/text on line %d of %s!\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ìµì
ì´ë¦/í
ì¤í¸ê° ììë¨!\n"
msgid "ppdc: Expected option section on line %d of %s!\n"
@@ -2744,27 +2746,27 @@ msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ìµì
ì¹ì
ì´ ììë¨!\n"
msgid "ppdc: Expected option type on line %d of %s!\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ìµì
ì íì´ ììë¨!\n"
msgid "ppdc: Expected override field after Resolution on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Resolution ë¤ì ì¤ë²ë¼ì´ë íëê° ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Resolution ë¤ì ì¤ë²ë¼ì´ë íëê° ììë¨!\n"
msgid "ppdc: Expected real number on line %d of %s!\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ì¤ì ë²í¸ê° ììë¨!\n"
msgid "ppdc: Expected resolution/mediatype following ColorProfile on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ColorProfile ë¤ì í´ìë/미ëì´ ì íì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, ColorProfile ë¤ì í´ìë/미ëì´ ì íì´ ììë¨!\n"
msgid "ppdc: Expected resolution/mediatype following SimpleColorProfile on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì SimpleColorProfile ë¤ì í´ìë/미ëì´ ì íì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, SimpleColorProfile ë¤ì í´ìë/미ëì´ ì íì´ ììë¨!\n"
msgid "ppdc: Expected selector after %s on line %d of %s!\n"
-msgstr "ppdc: %1$s ë¤ì ì íìê° ììë¨(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤, %1$s ë¤ì ì íìê° ììë¨!\n"
msgid "ppdc: Expected status after Font on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Font ë¤ì ìíê° ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Font ë¤ì ìíê° ììë¨!\n"
msgid "ppdc: Expected string after Copyright on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Copyright ë¤ì ì¤í¸ë§ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Copyright ë¤ì ì¤í¸ë§ì´ ììë¨!\n"
msgid "ppdc: Expected string after Version on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Version ë¤ì ì¤í¸ë§ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Version ë¤ì ì¤í¸ë§ì´ ììë¨!\n"
msgid "ppdc: Expected two option names on line %d of %s!\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ìµì
ì´ë¦ 2ê°ê° ììë¨!\n"
msgid "ppdc: Expected value after %s on line %d of %s!\n"
-msgstr "ppdc: %1$s ë¤ì ê°ì´ ììë¨(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤, %1$s ë¤ì ê°ì´ ììë¨!\n"
msgid "ppdc: Expected version after Font on line %d of %s!\n"
-msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì Font ë¤ì ë²ì ì´ ììë¨!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤, Font ë¤ì ë²ì ì´ ììë¨!\n"
msgid "ppdc: Invalid #include/#po filename \"%s\"!\n"
msgstr "ppdc: ì í¨íì§ ìì #include/#po íì¼ ì´ë¦ \"%s\"!\n"
msgid "ppdc: Invalid cost for filter on line %d of %s!\n"
@@ -2774,9 +2776,9 @@ msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì íí°ì ëí´ ì í¨íì§ ìì ë¹
msgid "ppdc: Invalid empty program name for filter on line %d of %s!\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì íí°ì ëí´ ì í¨íì§ ìì ë¹ íë¡ê·¸ë¨ ì´ë¦!\n"
msgid "ppdc: Invalid option section \"%s\" on line %d of %s!\n"
-msgstr "ppdc: ì í¨íì§ ìì \"%1$s\"ìµì
ì¹ì
(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ì ì í¨íì§ ìì \"%1$s\" ìµì
ì¹ì
!\n"
msgid "ppdc: Invalid option type \"%s\" on line %d of %s!\n"
-msgstr "ppdc: ì í¨íì§ ìì \"%1$s\ ìµì
ì í(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ì ì í¨íì§ ìì \"%1$s\ ìµì
ì í!\n"
msgid "ppdc: Loading driver information file \"%s\"...\n"
msgstr "ppdc: \"%s\" ëë¼ì´ë² ì ë³´ íì¼ ë¡ë ì¤...\n"
msgid "ppdc: Loading messages for locale \"%s\"...\n"
@@ -2790,9 +2792,9 @@ msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ìì #if ì ì¤ë¨!\n"
msgid "ppdc: No message catalog provided for locale %s!\n"
msgstr "ppdc: ë¡ì»¬ %sì ëí´ ì ê³µë ë©ìì§ ì¹´íë¡ê·¸ ìì!\n"
msgid "ppdc: Option %s redefined with a different type on line %d of %s!\n"
-msgstr "ppdc: %1$s ìµì
ì´ ë¤ë¥¸ ì íì¼ë¡ ì¬ì ìë¨(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ì %1$s ìµì
ì´ ë¤ë¥¸ ì íì¼ë¡ ì¬ì ìë¨!\n"
msgid "ppdc: Option constraint must *name on line %d of %s!\n"
-msgstr "ppdc: ìµì
ì íì *nameì´ì´ì¼ í¨(%2$sì %1$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ìë ìµì
ì íì *nameì´ì´ì¼ í¨!\n"
msgid "ppdc: Too many nested #if's on line %d of %s!\n"
msgstr "ppdc: %2$sì %1$dë²ì§¸ ì¤ì ë무 ë§ì´ ì¤ì²©ë #ifê° ìì!\n"
msgid "ppdc: Unable to create PPD file \"%s\" - %s.\n"
@@ -2804,41 +2806,41 @@ msgstr "ppdc: ì¶ë ¥ íì´í를 ìì±í ì ìì: %s\n"
msgid "ppdc: Unable to execute cupstestppd: %s\n"
msgstr "ppdc: cupstestppd를 ì¤íí ì ìì: %s\n"
msgid "ppdc: Unable to find #po file %s on line %d of %s!\n"
-msgstr "ppdc: #po íì¼ %1$sì(를) ì°¾ì ì ìì(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ìì #po íì¼ %1$sì(를) ì°¾ì ì ìì!\n"
msgid "ppdc: Unable to find include file \"%s\" on line %d of %s!\n"
-msgstr "ppdc: \"%1$s\" í¬í¨ íì¼ì ì°¾ì ì ìì(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ìì í¬í¨ íì¼ \"%1$s\"ì(를) ì°¾ì ì ìì!\n"
msgid "ppdc: Unable to find localization for \"%s\" - %s\n"
msgstr "ppdc: \"%s\"ì ëí íì§í를 ì°¾ì ì ìì - %s\n"
msgid "ppdc: Unable to load localization file \"%s\" - %s\n"
msgstr "ppdc: \"%s\"ì ëí íì§í íì¼ì ë¡ëí ì ìì - %s\n"
msgid "ppdc: Undefined variable (%s) on line %d of %s.\n"
-msgstr "ppdc: ë³ì(%1$s)ê° ì ìëì§ ìì(%3$sì %2$dë²ì§¸ ì¤).\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ì ë³ì(%1$s)ê° ì ìëì§ ìì.\n"
msgid "ppdc: Unknown driver type %s on line %d of %s!\n"
-msgstr "ppdc: ì ì ìë %1$s ëë¼ì´ë¸ ì í(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ì ì ì ìë %1$s ëë¼ì´ë¸ ì í!\n"
msgid "ppdc: Unknown duplex type \"%s\" on line %d of %s!\n"
-msgstr "ppdc: ì ì ìë \"%1$s\" ìë©´ ì í(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ì ì ì ìë \"%1$s\" ìë©´ ì í!\n"
msgid "ppdc: Unknown media size \"%s\" on line %d of %s!\n"
-msgstr "ppdc: ì ì ìë \"%1$s\" 미ëì´ í¬ê¸°(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ì ì ì ìë \"%1$s\" 미ëì´ í¬ê¸°!\n"
msgid "ppdc: Unknown token \"%s\" seen on line %d of %s!\n"
-msgstr "ppdc: ì ì ìë \"%1$s\" í í°(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ì ë³´ì´ë ì ì ìë \"%1$s\" í í°!\n"
msgid "ppdc: Unknown trailing characters in real number \"%s\" on line %d of %s!\n"
-msgstr "ppdc: ì¤ìì \"%1$s\" ì ì ìë ë§ì§ë§ 문ì(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ì ìë \"%1$s\" ì¤ìì ì ì ìë ë§ì§ë§ 문ì!\n"
msgid "ppdc: Unterminated string starting with %c on line %d of %s!\n"
-msgstr "ppdc: %1$c(ì¼)ë¡ ììíë ëëì§ ìë ì¤í¸ë§(%3$sì %2$dë²ì§¸ ì¤)!\n"
+msgstr "ppdc: %3$sì %2$dë²ì§¸ ì¤ì %1$c(ì¼)ë¡ ììíë ëëì§ ìë ì¤í¸ë§!\n"
msgid "ppdc: Writing %s...\n"
msgstr "ppdc: %s ì°ë ì¤...\n"
msgid "ppdc: Writing PPD files to directory \"%s\"...\n"
msgstr "ppdc: \"%s\" ëë í 리ì PPD íì¼ ì°ë ì¤...\n"
msgid "ppdmerge: Bad LanguageVersion \"%s\" in %s!\n"
-msgstr "ppdmerge: ì못ë \"%s\" LanguageVersion(%sì ìì)!\n"
+msgstr "ppdmerge: %2$sì ì못ë \"%1$s\" LanguageVersion!\n"
msgid "ppdmerge: Ignoring PPD file %s...\n"
msgstr "ppdmerge: %s PPD íì¼ ë¬´ì ì¤...\n"
msgid "ppdmerge: Unable to backup %s to %s- %s\n"
msgstr "ppdmerge: %sì(를) %s(ì¼)ë¡ ë°±ì
í ì ìì- %s\n"
msgid "printer %s disabled since %s -\n"
-msgstr "%s í린í°ê° ë¹íì±íë¨(%s ì´í) -\n"
+msgstr "%2$s ì´íë¡ %1$s í린í°ê° ë¹íì±íë¨ -\n"
msgid "printer %s is idle. enabled since %s\n"
-msgstr "%s í린í°ê° ë기 ì¤. %s ì´íì íì±íë¨\n"
+msgstr "%s í린í°ê° ë기 ì¤. %s ì´íì íì±íë¨\n"
msgid "printer %s now printing %s-%d. enabled since %s\n"
msgstr "%s í린í°ê° íì¬ %s-%dì(를) íë¦°í¸ ì¤ì
ëë¤. %s ì´íì íì±íë¨\n"
msgid "printer %s/%s disabled since %s -\n"
@@ -2850,15 +2852,15 @@ msgstr "%s/%s í린í°ê° íì¬ %s-%dì(를) íë¦°í¸ ì¤ì
ëë¤. %s ì´
msgid "processing"
msgstr "ì²ë¦¬ ì¤"
msgid "request id is %s-%d (%d file(s))\n"
-msgstr "id ìì²ì %s-%d(%dê°ì íì¼)\n"
+msgstr "ìì² idë %s-%d(%dê°ì íì¼)\n"
msgid "request-id uses indefinite length"
-msgstr "id ìì²ì 길ì´ê° 무ì íì
ëë¤"
+msgstr "request-id 길ì´ê° 무ì íì
ëë¤"
msgid "scheduler is not running\n"
msgstr "ì¼ì ì´ ì¤íëì§ ìì\n"
msgid "scheduler is running\n"
msgstr "ì¼ì ì´ ì¤í ì¤\n"
msgid "stat of %s failed: %s"
-msgstr "%s ììì ì¤í¨í¨: %s"
+msgstr "%s íµê³ì ì¤í¨í¨: %s"
msgid "status\t\tshow status of daemon and queue\n"
msgstr "ìí\t\të°ëª¬ ë° ëê¸°ì´ ìí 보기\n"
msgid "stopped"
@@ -2872,4 +2874,4 @@ msgstr "ì ì ìì"
msgid "untitled"
msgstr "무ì "
msgid "variable-bindings uses indefinite length"
-msgstr "variable-bindingsë 길ì´ê° 무ì íì
ëë¤"
+msgstr "variable-bindingsì 길ì´ê° 무ì íì
ëë¤"
diff --git a/packaging/cups.list.in b/packaging/cups.list.in
index 2116b1930..26b051a84 100644
--- a/packaging/cups.list.in
+++ b/packaging/cups.list.in
@@ -551,11 +551,14 @@ f 0644 root sys $DATADIR/templates/es templates/es/*.tmpl
#d 0755 root sys $DATADIR/templates/it
#f 0644 root sys $DATADIR/templates/it templates/it/*.tmpl
-#d 0755 root sys $DATADIR/templates/ja
-#f 0644 root sys $DATADIR/templates/ja templates/ja/*.tmpl
+d 0755 root sys $DATADIR/templates/ja
+f 0644 root sys $DATADIR/templates/ja templates/ja/*.tmpl
-#d 0755 root sys $DATADIR/templates/pl
-#f 0644 root sys $DATADIR/templates/pl templates/pl/*.tmpl
+d 0755 root sys $DATADIR/templates/pl
+f 0644 root sys $DATADIR/templates/pl templates/pl/*.tmpl
+
+d 0755 root sys $DATADIR/templates/ru
+f 0644 root sys $DATADIR/templates/ru templates/ru/*.tmpl
#d 0755 root sys $DATADIR/templates/sv
#f 0644 root sys $DATADIR/templates/sv templates/sv/*.tmpl
@@ -660,11 +663,14 @@ f 0644 root sys $DOCDIR/es doc/es/*.html
#d 0755 root sys $DOCDIR/it
#f 0644 root sys $DOCDIR/it doc/it/*.html
-#d 0755 root sys $DOCDIR/ja
-#f 0644 root sys $DOCDIR/ja doc/ja/*.html
+d 0755 root sys $DOCDIR/ja
+f 0644 root sys $DOCDIR/ja doc/ja/*.html
+
+d 0755 root sys $DOCDIR/pl
+f 0644 root sys $DOCDIR/pl doc/pl/*.html
-#d 0755 root sys $DOCDIR/pl
-#f 0644 root sys $DOCDIR/pl doc/pl/*.html
+d 0755 root sys $DOCDIR/ru
+f 0644 root sys $DOCDIR/ru doc/ru/*.html
#d 0755 root sys $DOCDIR/sv
#f 0644 root sys $DOCDIR/sv doc/sv/*.html
diff --git a/packaging/cups.spec.in b/packaging/cups.spec.in
index c76655c67..e431b8c5e 100644
--- a/packaging/cups.spec.in
+++ b/packaging/cups.spec.in
@@ -244,6 +244,12 @@ rm -rf $RPM_BUILD_ROOT
/usr/share/doc/cups/*.*
%dir /usr/share/doc/cups/es
/usr/share/doc/cups/es/*
+%dir /usr/share/doc/cups/ja
+/usr/share/doc/cups/ja/*
+%dir /usr/share/doc/cups/pl
+/usr/share/doc/cups/pl/*
+%dir /usr/share/doc/cups/ru
+/usr/share/doc/cups/ru/*
%dir /usr/share/doc/cups/help
/usr/share/doc/cups/help/accounting.html
/usr/share/doc/cups/help/cgi.html
diff --git a/scheduler/Dependencies b/scheduler/Dependencies
index 279262d32..8a2a20cc7 100644
--- a/scheduler/Dependencies
+++ b/scheduler/Dependencies
@@ -206,10 +206,12 @@ cupsfilter.o: ../cups/versioning.h ../cups/ppd.h ../cups/array.h
cupsfilter.o: ../cups/file.h ../cups/language.h ../cups/i18n.h
cupsfilter.o: ../cups/transcode.h ../cups/string.h ../config.h mime.h
cupsfilter.o: ../cups/array.h ../cups/ipp.h ../cups/file.h
-cups-deviced.o: util.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-cups-deviced.o: ../cups/versioning.h ../cups/ppd.h ../cups/array.h
-cups-deviced.o: ../cups/file.h ../cups/language.h ../cups/file.h
-cups-deviced.o: ../cups/string.h ../config.h ../cups/array.h ../cups/dir.h
+cups-deviced.o: util.h ../cups/file-private.h ../cups/http-private.h
+cups-deviced.o: ../config.h ../cups/http.h ../cups/versioning.h ../cups/md5.h
+cups-deviced.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/globals.h
+cups-deviced.o: ../cups/string.h ../cups/cups.h ../cups/i18n.h
+cups-deviced.o: ../cups/transcode.h ../cups/language.h ../cups/array.h
+cups-deviced.o: ../cups/debug.h ../cups/array.h ../cups/dir.h
cups-lpd.o: ../cups/http-private.h ../config.h ../cups/http.h
cups-lpd.o: ../cups/versioning.h ../cups/md5.h ../cups/ipp-private.h
cups-lpd.o: ../cups/ipp.h ../cups/cups.h ../cups/ppd.h ../cups/array.h
@@ -235,12 +237,16 @@ testspeed.o: ../cups/language.h ../cups/debug.h
testsub.o: ../cups/cups.h ../cups/ipp.h ../cups/http.h ../cups/versioning.h
testsub.o: ../cups/ppd.h ../cups/array.h ../cups/file.h ../cups/language.h
testsub.o: ../cups/debug.h ../cups/string.h ../config.h
-util.o: util.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-util.o: ../cups/versioning.h ../cups/ppd.h ../cups/array.h ../cups/file.h
-util.o: ../cups/language.h ../cups/file.h ../cups/string.h ../config.h
-cups-driverd.o: util.h ../cups/cups.h ../cups/ipp.h ../cups/http.h
-cups-driverd.o: ../cups/versioning.h ../cups/ppd.h ../cups/array.h
-cups-driverd.o: ../cups/file.h ../cups/language.h ../cups/file.h
-cups-driverd.o: ../cups/string.h ../config.h ../cups/dir.h
-cups-driverd.o: ../cups/transcode.h ../cups/ppd-private.h ../cups/cups.h
-cups-driverd.o: ../ppdc/ppdc.h
+util.o: util.h ../cups/file-private.h ../cups/http-private.h ../config.h
+util.o: ../cups/http.h ../cups/versioning.h ../cups/md5.h
+util.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/globals.h
+util.o: ../cups/string.h ../cups/cups.h ../cups/i18n.h ../cups/transcode.h
+util.o: ../cups/language.h ../cups/array.h ../cups/debug.h
+cups-driverd.o: util.h ../cups/file-private.h ../cups/http-private.h
+cups-driverd.o: ../config.h ../cups/http.h ../cups/versioning.h ../cups/md5.h
+cups-driverd.o: ../cups/ipp-private.h ../cups/ipp.h ../cups/globals.h
+cups-driverd.o: ../cups/string.h ../cups/cups.h ../cups/i18n.h
+cups-driverd.o: ../cups/transcode.h ../cups/language.h ../cups/array.h
+cups-driverd.o: ../cups/debug.h ../cups/dir.h ../cups/transcode.h
+cups-driverd.o: ../cups/ppd-private.h ../ppdc/ppdc.h ../cups/string.h
+cups-driverd.o: ../cups/file.h
diff --git a/scheduler/cert.c b/scheduler/cert.c
index 650363401..d7ece80fa 100644
--- a/scheduler/cert.c
+++ b/scheduler/cert.c
@@ -4,7 +4,7 @@
* Authentication certificate routines for the Common UNIX
* Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -54,7 +54,7 @@ cupsdAddCert(int pid, /* I - Process ID */
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAddCert: adding certificate for pid %d", pid);
+ "cupsdAddCert: Adding certificate for PID %d", pid);
/*
* Allocate memory for the certificate...
@@ -84,7 +84,7 @@ cupsdAddCert(int pid, /* I - Process ID */
if ((fd = open(filename, O_WRONLY | O_CREAT | O_EXCL, 0400)) < 0)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
- "cupsdAddCert: Unable to create certificate file %s - %s",
+ "Unable to create certificate file %s - %s",
filename, strerror(errno));
free(cert);
return;
@@ -283,7 +283,7 @@ cupsdDeleteCert(int pid) /* I - Process ID */
*/
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdDeleteCert: removing certificate for pid %d", pid);
+ "cupsdDeleteCert: Removing certificate for PID %d", pid);
DEBUG_printf(("DELETE pid=%d, username=%s, cert=%s\n", cert->pid,
cert->username, cert->certificate));
@@ -310,8 +310,7 @@ cupsdDeleteCert(int pid) /* I - Process ID */
snprintf(filename, sizeof(filename), "%s/certs/%d", StateDir, pid);
if (unlink(filename))
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "cupsdDeleteCert: Unable to remove %s!", filename);
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to remove %s!", filename);
return;
}
@@ -342,8 +341,7 @@ cupsdDeleteAllCerts(void)
snprintf(filename, sizeof(filename), "%s/certs/%d", StateDir, cert->pid);
if (unlink(filename))
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "cupsdDeleteAllCerts: Unable to remove %s!", filename);
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to remove %s!", filename);
/*
* Free memory...
@@ -368,15 +366,17 @@ cupsdFindCert(const char *certificate) /* I - Certificate */
cupsd_cert_t *cert; /* Current certificate */
- DEBUG_printf(("cupsdFindCert(certificate=%s)\n", certificate));
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdFindCert(certificate=%s)",
+ certificate);
for (cert = Certs; cert != NULL; cert = cert->next)
if (!strcasecmp(certificate, cert->certificate))
{
- DEBUG_printf((" returning %s...\n", cert->username));
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdFindCert: Returning %s...",
+ cert->username);
return (cert);
}
- DEBUG_puts(" certificate not found!");
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdFindCert: Certificate not found!");
return (NULL);
}
diff --git a/scheduler/client.c b/scheduler/client.c
index 758c47196..853a9db55 100644
--- a/scheduler/client.c
+++ b/scheduler/client.c
@@ -137,7 +137,7 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAcceptClient(lis=%p) %d Clients = %d",
+ "cupsdAcceptClient(lis=%p(%d)) Clients=%d",
lis, lis->fd, cupsArrayCount(Clients));
/*
@@ -300,10 +300,6 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
* Can't have an unresolved IP address with double-lookups enabled...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAcceptClient: Closing connection %d...",
- con->http.fd);
-
#ifdef WIN32
closesocket(con->http.fd);
#else
@@ -347,10 +343,6 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
* with double-lookups enabled...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAcceptClient: Closing connection %d...",
- con->http.fd);
-
#ifdef WIN32
closesocket(con->http.fd);
#else
@@ -375,10 +367,6 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
if (!hosts_access(&wrap_req))
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAcceptClient: Closing connection %d...",
- con->http.fd);
-
#ifdef WIN32
closesocket(con->http.fd);
#else
@@ -459,15 +447,10 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
cupsArrayAdd(Clients, con);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAcceptClient: %d connected to server on %s:%d",
- con->http.fd, con->servername, con->serverport);
-
/*
- * Using TCP_NODELAY improves responsiveness, especially on systems
- * with a slow loopback interface... Since we write large buffers
- * when sending print files and requests, there shouldn't be any
- * performance penalty for this...
+ * Using TCP_NODELAY improves responsiveness, especially on systems with a slow
+ * loopback interface. Since we write large buffers when sending print files
+ * and requests there shouldn't be any performance penalty for this...
*/
val = 1;
@@ -480,7 +463,7 @@ cupsdAcceptClient(cupsd_listener_t *lis)/* I - Listener socket */
fcntl(con->http.fd, F_SETFD, fcntl(con->http.fd, F_GETFD) | FD_CLOEXEC);
/*
- * Add the socket to the select() input mask.
+ * Add the socket to the server select.
*/
cupsdAddSelect(con->http.fd, (cupsd_selfunc_t)cupsdReadClient, NULL, con);
@@ -524,6 +507,9 @@ cupsdCloseAllClients(void)
cupsd_client_t *con; /* Current client */
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCloseAllClients() Clients=%d",
+ cupsArrayCount(Clients));
+
for (con = (cupsd_client_t *)cupsArrayFirst(Clients);
con;
con = (cupsd_client_t *)cupsArrayNext(Clients))
@@ -554,7 +540,8 @@ cupsdCloseClient(cupsd_client_t *con) /* I - Client to close */
#endif /* HAVE_LIBSSL */
- cupsdLogMessage(CUPSD_LOG_DEBUG, "cupsdCloseClient: %d", con->http.fd);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCloseClient(con=%p(%d))", con,
+ con->http.fd);
/*
* Flush pending writes before closing...
@@ -642,9 +629,6 @@ cupsdCloseClient(cupsd_client_t *con) /* I - Client to close */
* Stop any CGI process...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdCloseClient: %d Killing process ID %d...",
- con->http.fd, con->pipe_pid);
cupsdEndProcess(con->pipe_pid, 1);
con->pipe_pid = 0;
}
@@ -653,10 +637,6 @@ cupsdCloseClient(cupsd_client_t *con) /* I - Client to close */
{
cupsdRemoveSelect(con->file);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdCloseClient: %d Closing data file %d.",
- con->http.fd, con->file);
-
close(con->file);
con->file = -1;
}
@@ -797,12 +777,21 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
status = HTTP_CONTINUE;
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d, used=%d, file=%d state=%d",
- con->http.fd, con->http.used, con->file, con->http.state);
+ "cupsdReadClient(con=%p(%d)) "
+ "con->http.error=%d "
+ "con->http.used=%d, "
+ "con->http.state=%d "
+ "con->data_encoding=HTTP_ENCODE_%s, "
+ "con->data_remaining=" CUPS_LLFMT ", "
+ "con->file=%d",
+ con, con->http.fd, con->http.error, con->http.used,
+ con->http.state,
+ con->http.data_encoding == HTTP_ENCODE_CHUNKED ?
+ "CHUNKED" : "LENGTH",
+ CUPS_LLCAST con->http.data_remaining, con->file);
if (con->http.error)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdReadClient: http error seen...");
cupsdCloseClient(con);
return;
}
@@ -824,8 +813,8 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
*/
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: Saw first byte %02X, auto-negotiating SSL/TLS session...",
- buf[0] & 255);
+ "cupsdReadClient: Saw first byte %02X, auto-negotiating "
+ "SSL/TLS session...", buf[0] & 255);
if (!encrypt_client(con))
cupsdCloseClient(con);
@@ -844,8 +833,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
if (httpGets(line, sizeof(line) - 1, HTTP(con)) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: httpGets returned EOF...");
cupsdCloseClient(con);
return;
}
@@ -1116,10 +1103,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
snprintf(locale, sizeof(locale), "%s.%s",
con->http.fields[HTTP_FIELD_ACCEPT_LANGUAGE], DefaultCharset);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d Browser asked for language \"%s\"...",
- con->http.fd, locale);
-
con->language = cupsLangGet(locale);
}
else
@@ -1297,9 +1280,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
if ((status = cupsdIsAuthorized(con, NULL)) != HTTP_OK)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: Unauthorized request for %s...",
- con->uri);
cupsdSendError(con, status, CUPSD_AUTH_NONE);
cupsdCloseClient(con);
return;
@@ -1540,10 +1520,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
* so check the length against any limits that are set...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "POST %s", con->uri);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "CONTENT_TYPE = %s",
- con->http.fields[HTTP_FIELD_CONTENT_TYPE]);
-
if (con->http.fields[HTTP_FIELD_CONTENT_LENGTH][0] &&
MaxRequestSize > 0 &&
con->http.data_remaining > MaxRequestSize)
@@ -1645,12 +1621,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
cupsdSetString(&con->options, NULL);
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d command=\"%s\", "
- "options = \"%s\"",
- con->http.fd, con->command,
- con->options ? con->options : "(null)");
-
if (con->http.version <= HTTP_1_0)
con->http.keep_alive = HTTP_KEEPALIVE_OFF;
}
@@ -1720,10 +1690,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
* so check the length against any limits that are set...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "PUT %s", con->uri);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "CONTENT_TYPE = %s",
- con->http.fields[HTTP_FIELD_CONTENT_TYPE]);
-
if (con->http.fields[HTTP_FIELD_CONTENT_LENGTH][0] &&
MaxRequestSize > 0 &&
con->http.data_remaining > MaxRequestSize)
@@ -1776,10 +1742,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
}
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d REQUEST %s=%d", con->http.fd,
- con->filename, con->file);
-
fchmod(con->file, 0640);
fchown(con->file, RunUser, Group);
fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC);
@@ -1955,14 +1917,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
switch (con->http.state)
{
case HTTP_PUT_RECV :
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d con->data_encoding=HTTP_ENCODE_%s, "
- "con->data_remaining=" CUPS_LLFMT ", con->file=%d",
- con->http.fd,
- con->http.data_encoding == HTTP_ENCODE_CHUNKED ?
- "CHUNKED" : "LENGTH",
- CUPS_LLCAST con->http.data_remaining, con->file);
-
do
{
if ((bytes = httpRead2(HTTP(con), line, sizeof(line))) < 0)
@@ -1974,20 +1928,12 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
{
con->bytes += bytes;
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d writing %d bytes to %d",
- con->http.fd, bytes, con->file);
-
if (write(con->file, line, bytes) < bytes)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
"cupsdReadClient: Unable to write %d bytes to %s: %s",
bytes, con->filename, strerror(errno));
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: Closing data file %d...",
- con->file);
-
close(con->file);
con->file = -1;
unlink(con->filename);
@@ -2011,12 +1957,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
fstat(con->file, &filestats);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d Closing data file %d, size="
- CUPS_LLFMT ".",
- con->http.fd, con->file,
- CUPS_LLCAST filestats.st_size);
-
close(con->file);
con->file = -1;
@@ -2027,9 +1967,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
* Request is too big; remove it and send an error...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d Removing temp file %s",
- con->http.fd, con->filename);
unlink(con->filename);
cupsdClearString(&con->filename);
@@ -2059,14 +1996,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
break;
case HTTP_POST_RECV :
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d con->data_encoding=HTTP_ENCODE_"
- "%s, con->data_remaining=" CUPS_LLFMT ", con->file=%d",
- con->http.fd,
- con->http.data_encoding == HTTP_ENCODE_CHUNKED ?
- "CHUNKED" : "LENGTH",
- CUPS_LLCAST con->http.data_remaining, con->file);
-
do
{
if (con->request)
@@ -2122,9 +2051,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
}
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdReadClient: %d REQUEST %s=%d", con->http.fd,
- con->filename, con->file);
-
fchmod(con->file, 0640);
fchown(con->file, RunUser, Group);
fcntl(con->file, F_SETFD, fcntl(con->file, F_GETFD) | FD_CLOEXEC);
@@ -2141,20 +2067,12 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
{
con->bytes += bytes;
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d writing %d bytes to %d",
- con->http.fd, bytes, con->file);
-
if (write(con->file, line, bytes) < bytes)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
"cupsdReadClient: Unable to write %d bytes to %s: %s",
bytes, con->filename, strerror(errno));
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: Closing file %d...",
- con->file);
-
close(con->file);
con->file = -1;
unlink(con->filename);
@@ -2184,12 +2102,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
{
fstat(con->file, &filestats);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d Closing data file %d, "
- "size=" CUPS_LLFMT ".",
- con->http.fd, con->file,
- CUPS_LLCAST filestats.st_size);
-
close(con->file);
con->file = -1;
@@ -2200,9 +2112,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
* Request is too big; remove it and send an error...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d Removing temp file %s",
- con->http.fd, con->filename);
unlink(con->filename);
cupsdClearString(&con->filename);
@@ -2244,9 +2153,6 @@ cupsdReadClient(cupsd_client_t *con) /* I - Client to read from */
if (con->filename)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdReadClient: %d Removing temp file %s",
- con->http.fd, con->filename);
unlink(con->filename);
cupsdClearString(&con->filename);
}
@@ -2341,6 +2247,10 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
http_status_t code, /* I - Error code */
int auth_type)/* I - Authentication type */
{
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "cupsdSendError(con=%p(%d), code=%d, auth_type=%d", con,
+ con->http.fd, code, auth_type);
+
#ifdef HAVE_SSL
/*
* Force client to upgrade for authentication if that is how the
@@ -2352,8 +2262,6 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
strcasecmp(con->http.hostname, "localhost") &&
!con->http.tls)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdSendError: Encryption before authentication!");
code = HTTP_UPGRADE_REQUIRED;
}
#endif /* HAVE_SSL */
@@ -2364,9 +2272,6 @@ cupsdSendError(cupsd_client_t *con, /* I - Connection */
cupsdLogRequest(con, code);
- cupsdLogMessage(CUPSD_LOG_DEBUG, "cupsdSendError: %d code=%d (%s)",
- con->http.fd, code, httpStatus(code));
-
/*
* To work around bugs in some proxies, don't use Keep-Alive for some
* error messages...
@@ -2731,14 +2636,12 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
ipp_state_t ipp_state; /* IPP state value */
-#ifdef DEBUG
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdWriteClient(con=%p) %d response=%p(%d), file=%d "
+ "cupsdWriteClient(con=%p(%d)) response=%p(%d), file=%d "
"pipe_pid=%d state=%d",
con, con->http.fd, con->response,
con->response ? con->response->state : -1,
con->file, con->pipe_pid, con->http.state);
-#endif /* DEBUG */
if (con->http.state != HTTP_GET_SEND &&
con->http.state != HTTP_POST_SEND)
@@ -2773,10 +2676,6 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
}
else if ((bytes = read(con->file, buf, sizeof(buf) - 1)) > 0)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdWriteClient: Read %d bytes from file %d...",
- bytes, con->file);
-
if (con->pipe_pid && !con->got_fields)
{
/*
@@ -2834,9 +2733,6 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
if (strncasecmp(buf, "Status:", 7))
httpPrintf(HTTP(con), "%s\r\n", buf);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdWriteClient: %d %s",
- con->http.fd, buf);
-
/*
* Update buffer...
*/
@@ -2874,10 +2770,6 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
con->field_col ++;
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdWriteClient: %d bytes=%d, got_fields=%d",
- con->http.fd, bytes, con->got_fields);
-
if (bytes > 0 && !con->got_fields)
{
/*
@@ -2900,10 +2792,6 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
{
if (httpWrite2(HTTP(con), buf, bytes) < 0)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdWriteClient: %d Write of %d bytes failed!",
- con->http.fd, bytes);
-
cupsdCloseClient(con);
return;
}
@@ -2920,9 +2808,6 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
if (bytes <= 0)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdWriteClient: %d bytes < 0",
- con->http.fd);
-
cupsdLogRequest(con, HTTP_OK);
httpFlushWrite(HTTP(con));
@@ -2947,10 +2832,6 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
if (con->pipe_pid)
cupsdEndProcess(con->pipe_pid, 0);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdWriteClient: %d Closing data file %d.",
- con->http.fd, con->file);
-
close(con->file);
con->file = -1;
con->pipe_pid = 0;
@@ -2958,9 +2839,6 @@ cupsdWriteClient(cupsd_client_t *con) /* I - Client connection */
if (con->filename)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdWriteClient: %d Removing temp file %s",
- con->http.fd, con->filename);
unlink(con->filename);
cupsdClearString(&con->filename);
}
@@ -3014,8 +2892,10 @@ check_if_modified(
return (1);
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "check_if_modified: %d If-Modified-Since=\"%s\"",
- con->http.fd, ptr);
+ "check_if_modified(con=%p(%d), "
+ "filestats=%p(" CUPS_LLFMT ", %d)) If-Modified-Since=\"%s\"",
+ con, con->http.fd, filestats, CUPS_LLCAST filestats->st_size,
+ (int)filestats->st_mtime, ptr);
while (*ptr != '\0')
{
@@ -3040,13 +2920,6 @@ check_if_modified(
ptr ++;
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "check_if_modified: %d sizes=" CUPS_LLFMT ","
- CUPS_LLFMT " dates=%d,%d",
- con->http.fd, CUPS_LLCAST size,
- CUPS_LLCAST filestats->st_size, (int)date,
- (int)filestats->st_mtime);
-
return ((size != filestats->st_size && size != 0) ||
(date < filestats->st_mtime && date != 0) ||
(size == 0 && date == 0));
@@ -3120,6 +2993,9 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */
unsigned long error; /* Error code */
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "encrypt_client(con=%p(%d))", con,
+ con->http.fd);
+
/*
* Verify that we have a certificate...
*/
@@ -3154,22 +3030,19 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */
if (SSL_accept(conn) != 1)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "encrypt_client: Unable to encrypt connection from %s!",
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to encrypt connection from %s!",
con->http.hostname);
while ((error = ERR_get_error()) != 0)
- cupsdLogMessage(CUPSD_LOG_ERROR, "encrypt_client: %s",
- ERR_error_string(error, NULL));
+ cupsdLogMessage(CUPSD_LOG_ERROR, "%s", ERR_error_string(error, NULL));
SSL_CTX_free(context);
SSL_free(conn);
return (0);
}
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "encrypt_client: %d Connection from %s now encrypted.",
- con->http.fd, con->http.hostname);
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
+ con->http.hostname);
con->http.tls = conn;
return (1);
@@ -3181,6 +3054,9 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */
/* TLS credentials */
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "encrypt_client(con=%p(%d))", con,
+ con->http.fd);
+
/*
* Verify that we have a certificate...
*/
@@ -3209,9 +3085,8 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */
if (credentials == NULL)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
- "encrypt_client: Unable to encrypt connection from %s!",
- con->http.hostname);
- cupsdLogMessage(CUPSD_LOG_ERROR, "encrypt_client: %s", strerror(errno));
+ "Unable to encrypt connection from %s - %s",
+ con->http.hostname, strerror(errno));
free(conn);
return (0);
@@ -3233,10 +3108,8 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */
if (error != GNUTLS_E_SUCCESS)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
- "encrypt_client: Unable to encrypt connection from %s!",
- con->http.hostname);
- cupsdLogMessage(CUPSD_LOG_ERROR, "encrypt_client: %s",
- gnutls_strerror(error));
+ "Unable to encrypt connection from %s - %s",
+ con->http.hostname, gnutls_strerror(error));
gnutls_deinit(conn->session);
gnutls_certificate_free_credentials(*credentials);
@@ -3245,9 +3118,8 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */
return (0);
}
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "encrypt_client: %d Connection from %s now encrypted.",
- con->http.fd, con->http.hostname);
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
+ con->http.hostname);
conn->credentials = credentials;
con->http.tls = conn;
@@ -3258,6 +3130,9 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */
http_tls_t *conn; /* CDSA connection information */
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "encrypt_client(con=%p(%d))", con,
+ con->http.fd);
+
if ((conn = (http_tls_t *)malloc(sizeof(http_tls_t))) == NULL)
return (0);
@@ -3278,8 +3153,8 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */
if (!conn->certsArray)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
- "encrypt_client: Could not find signing key in keychain "
- "\"%s\"", ServerCertificate);
+ "Could not find signing key in keychain \"%s\"",
+ ServerCertificate);
error = errSSLBadCert; /* errSSLBadConfiguration is a better choice, but not available on 10.2.x */
}
@@ -3317,11 +3192,8 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */
if (error)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
- "encrypt_client: Unable to encrypt connection from %s!",
- con->http.hostname);
-
- cupsdLogMessage(CUPSD_LOG_ERROR, "encrypt_client: %s (%d)",
- cssmErrorString(error), (int)error);
+ "Unable to encrypt connection from %s - %s (%d)",
+ con->http.hostname, cssmErrorString(error), (int)error);
con->http.error = error;
con->http.status = HTTP_ERROR;
@@ -3337,9 +3209,8 @@ encrypt_client(cupsd_client_t *con) /* I - Client to encrypt */
return (0);
}
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "encrypt_client: %d Connection from %s now encrypted.",
- con->http.fd, con->http.hostname);
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Connection from %s now encrypted.",
+ con->http.hostname);
con->http.tls = conn;
return (1);
@@ -3367,8 +3238,8 @@ get_cdsa_certificate(cupsd_client_t *con) /* I - Client connection */
if ((err = SecKeychainOpen(ServerCertificate, &keychain)))
{
- cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot open keychain \"%s\", %s",
- ServerCertificate, cssmErrorString(err));
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Cannot open keychain \"%s\" - %s (%d)",
+ ServerCertificate, cssmErrorString(err), (int)err);
return (NULL);
}
@@ -3395,7 +3266,7 @@ get_cdsa_certificate(cupsd_client_t *con) /* I - Client connection */
if (SecPolicySearchCopyNext(policy_search, &policy))
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
+ cupsdLogMessage(CUPSD_LOG_ERROR,
"Cannot find a policy to use for searching");
CFRelease(keychain);
CFRelease(policy_search);
@@ -3412,7 +3283,7 @@ get_cdsa_certificate(cupsd_client_t *con) /* I - Client connection */
if (SecPolicySetValue(policy, &options))
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
+ cupsdLogMessage(CUPSD_LOG_ERROR,
"Cannot set policy value to use for searching");
CFRelease(keychain);
CFRelease(policy_search);
@@ -3431,15 +3302,15 @@ get_cdsa_certificate(cupsd_client_t *con) /* I - Client connection */
if (err)
cupsdLogMessage(CUPSD_LOG_DEBUG,
- "Cannot create keychain search reference: %s",
- cssmErrorString(err));
+ "Cannot create keychain search reference: %s (%d)",
+ cssmErrorString(err), (int)err);
else
{
if ((err = SecIdentitySearchCopyNext(search, &identity)))
{
cupsdLogMessage(CUPSD_LOG_DEBUG,
- "Cannot find signing key in keychain \"%s\", error %d",
- ServerCertificate, (int)err);
+ "Cannot find signing key in keychain \"%s\": %s (%d)",
+ ServerCertificate, cssmErrorString(err), (int)err);
}
else
{
@@ -3643,9 +3514,10 @@ get_file(cupsd_client_t *con, /* I - Client connection */
while (status && language[0]);
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "get_file: %d filename=%s size=%d",
- con->http.fd, filename,
- status ? -1 : (int)filestats->st_size);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "get_file(con=%p(%d), filestats=%p, filename=%p, len=%d) = "
+ "%s", con, con->http.fd, filestats, filename, len,
+ status ? "(null)" : filename);
if (!status)
con->http.data_remaining = (int)filestats->st_size;
@@ -3833,11 +3705,6 @@ is_cgi(cupsd_client_t *con, /* I - Client connection */
const char *options; /* Options on URL */
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "is_cgi(con=%p, filename=\"%s\", filestats=%p, type=%s/%s)",
- con, filename, filestats, type ? type->super : "unknown",
- type ? type->type : "unknown");
-
/*
* Get the options, if any...
*/
@@ -3854,7 +3721,11 @@ is_cgi(cupsd_client_t *con, /* I - Client connection */
if (!type || strcasecmp(type->super, "application"))
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "is_cgi: Returning 0...");
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "is_cgi(con=%p(%d), filename=\"%s\", filestats=%p, "
+ "type=%s/%s) = 0", con, con->http.fd, filename, filestats,
+ type ? type->super : "unknown",
+ type ? type->type : "unknown");
return (0);
}
@@ -3871,9 +3742,10 @@ is_cgi(cupsd_client_t *con, /* I - Client connection */
cupsdSetStringf(&con->options, " %s", options);
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "is_cgi: Returning 1 with command=\"%s\" and options=\"%s\"",
- con->command, con->options);
-
+ "is_cgi(con=%p(%d), filename=\"%s\", filestats=%p, "
+ "type=%s/%s) = 1", con, con->http.fd, filename, filestats,
+ type ? type->super : "unknown",
+ type ? type->type : "unknown");
return (1);
}
#ifdef HAVE_JAVA
@@ -3891,9 +3763,10 @@ is_cgi(cupsd_client_t *con, /* I - Client connection */
cupsdSetStringf(&con->options, " %s", filename);
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "is_cgi: Returning 1 with command=\"%s\" and options=\"%s\"",
- con->command, con->options);
-
+ "is_cgi(con=%p(%d), filename=\"%s\", filestats=%p, "
+ "type=%s/%s) = 1", con, con->http.fd, filename, filestats,
+ type ? type->super : "unknown",
+ type ? type->type : "unknown");
return (1);
}
#endif /* HAVE_JAVA */
@@ -3912,9 +3785,10 @@ is_cgi(cupsd_client_t *con, /* I - Client connection */
cupsdSetStringf(&con->options, " %s", filename);
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "is_cgi: Returning 1 with command=\"%s\" and options=\"%s\"",
- con->command, con->options);
-
+ "is_cgi(con=%p(%d), filename=\"%s\", filestats=%p, "
+ "type=%s/%s) = 1", con, con->http.fd, filename, filestats,
+ type ? type->super : "unknown",
+ type ? type->type : "unknown");
return (1);
}
#endif /* HAVE_PERL */
@@ -3933,9 +3807,10 @@ is_cgi(cupsd_client_t *con, /* I - Client connection */
cupsdSetStringf(&con->options, " %s", filename);
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "is_cgi: Returning 1 with command=\"%s\" and options=\"%s\"",
- con->command, con->options);
-
+ "is_cgi(con=%p(%d), filename=\"%s\", filestats=%p, "
+ "type=%s/%s) = 1", con, con->http.fd, filename, filestats,
+ type ? type->super : "unknown",
+ type ? type->type : "unknown");
return (1);
}
#endif /* HAVE_PHP */
@@ -3954,15 +3829,19 @@ is_cgi(cupsd_client_t *con, /* I - Client connection */
cupsdSetStringf(&con->options, " %s", filename);
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "is_cgi: Returning 1 with command=\"%s\" and options=\"%s\"",
- con->command, con->options);
-
+ "is_cgi(con=%p(%d), filename=\"%s\", filestats=%p, "
+ "type=%s/%s) = 1", con, con->http.fd, filename, filestats,
+ type ? type->super : "unknown",
+ type ? type->type : "unknown");
return (1);
}
#endif /* HAVE_PYTHON */
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "is_cgi: Returning 0...");
-
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "is_cgi(con=%p(%d), filename=\"%s\", filestats=%p, "
+ "type=%s/%s) = 0", con, con->http.fd, filename, filestats,
+ type ? type->super : "unknown",
+ type ? type->type : "unknown");
return (0);
}
@@ -4090,7 +3969,7 @@ make_certificate(cupsd_client_t *con) /* I - Client connection */
envp[envc++] = home;
envp[envc] = NULL;
- if (!cupsdStartProcess(command, argv, envp, -1, -1, -1, -1, -1, 1, NULL,
+ if (!cupsdStartProcess(command, argv, envp, -1, -1, -1, -1, -1, 1, NULL, 0,
&pid))
{
unlink(seedfile);
@@ -4104,7 +3983,7 @@ make_certificate(cupsd_client_t *con) /* I - Client connection */
break;
}
- cupsdFinishProcess(pid, command, sizeof(command));
+ cupsdFinishProcess(pid, command, sizeof(command), NULL);
/*
* Remove the seed file, as it is no longer needed...
@@ -4169,7 +4048,7 @@ make_certificate(cupsd_client_t *con) /* I - Client connection */
infofd = open(infofile, O_RDONLY);
if (!cupsdStartProcess(command, argv, envp, infofd, -1, -1, -1, -1, 1, NULL,
- &pid))
+ 0, &pid))
{
close(infofd);
unlink(infofile);
@@ -4186,7 +4065,7 @@ make_certificate(cupsd_client_t *con) /* I - Client connection */
break;
}
- cupsdFinishProcess(pid, command, sizeof(command));
+ cupsdFinishProcess(pid, command, sizeof(command), NULL);
if (status)
{
@@ -4403,7 +4282,7 @@ make_certificate(cupsd_client_t *con) /* I - Client connection */
infofd = open(infofile, O_RDONLY);
if (!cupsdStartProcess(command, argv, envp, infofd, -1, -1, -1, -1, 1, NULL,
- &pid))
+ 0, &pid))
{
close(infofd);
unlink(infofile);
@@ -4420,7 +4299,7 @@ make_certificate(cupsd_client_t *con) /* I - Client connection */
break;
}
- cupsdFinishProcess(pid, command, sizeof(command));
+ cupsdFinishProcess(pid, command, sizeof(command), NULL);
if (status)
{
@@ -4517,8 +4396,10 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
*/
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "pipe_command: command=\"%s\", options=\"%s\"",
- command, options ? options : "(null)");
+ "pipe_command(con=%p(%d), infile=%d, outfile=%p, "
+ "command=\"%s\", options=\"%s\", root=%d)",
+ con, con->http.fd, infile, outfile, command,
+ options ? options : "(null)", root);
argv[0] = command;
@@ -4757,7 +4638,8 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
{
KerberosContext = NULL;
- cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to initialize Kerberos context");
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Unable to initialize Kerberos context");
}
}
@@ -4801,8 +4683,8 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
principal)))
{
cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to initialize credentials cache (%d/%s)", error,
- strerror(errno));
+ "Unable to initialize credentials cache (%d/%s)",
+ error, strerror(errno));
krb5_cc_destroy(KerberosContext, ccache);
krb5_free_principal(KerberosContext, principal);
ccache = NULL;
@@ -4943,7 +4825,7 @@ pipe_command(cupsd_client_t *con, /* I - Client connection */
*/
if (cupsdStartProcess(command, argv, envp, infile, fds[1], CGIPipes[1],
- -1, -1, root, DefaultProfile, &pid) < 0)
+ -1, -1, root, DefaultProfile, 0, &pid) < 0)
{
/*
* Error - can't fork!
@@ -4992,8 +4874,10 @@ write_file(cupsd_client_t *con, /* I - Client connection */
{
con->file = open(filename, O_RDONLY);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "write_file: %d file=%d", con->http.fd,
- con->file);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "write_file(con=%p(%d), code=%d, filename=\"%s\" (%d), "
+ "type=\"%s\", filestats=%p)", con, con->http.fd,
+ code, filename, con->file, type ? type : "(null)", filestats);
if (con->file < 0)
return (0);
@@ -5039,8 +4923,9 @@ write_file(cupsd_client_t *con, /* I - Client connection */
static void
write_pipe(cupsd_client_t *con) /* I - Client connection */
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "write_pipe: CGI output on fd %d...",
- con->file);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "write_pipe(con=%p(%d)) CGI output on fd %d",
+ con, con->http.fd, con->file);
con->file_ready = 1;
diff --git a/scheduler/cups-deviced.c b/scheduler/cups-deviced.c
index 912109f1b..547a032d0 100644
--- a/scheduler/cups-deviced.c
+++ b/scheduler/cups-deviced.c
@@ -3,7 +3,7 @@
*
* Device scanning mini-daemon for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2006 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -313,11 +313,22 @@ main(int argc, /* I - Number of command-line args */
{
for (i = 0; i < num_backends; i ++)
if (backend_fds[i].revents && backends[i].pipe)
- if (get_device(backends + i))
+ {
+ cups_file_t *bpipe = backends[i].pipe;
+ /* Copy of pipe for backend... */
+
+ do
{
- backend_fds[i].fd = 0;
- backend_fds[i].events = 0;
+ if (get_device(backends + i))
+ {
+ backend_fds[i].fd = 0;
+ backend_fds[i].events = 0;
+ break;
+ }
}
+ while (bpipe->ptr &&
+ memchr(bpipe->ptr, '\n', bpipe->end - bpipe->ptr));
+ }
}
/*
diff --git a/scheduler/cupsd.h b/scheduler/cupsd.h
index 6bab44e0f..e9d8df1f0 100644
--- a/scheduler/cupsd.h
+++ b/scheduler/cupsd.h
@@ -3,7 +3,7 @@
*
* Main header file for the Common UNIX Printing System (CUPS) scheduler.
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -217,11 +217,13 @@ __attribute__ ((__format__ (__printf__, 2, 3)))
extern void *cupsdCreateProfile(int job_id);
extern void cupsdDestroyProfile(void *profile);
extern int cupsdEndProcess(int pid, int force);
-extern const char *cupsdFinishProcess(int pid, char *name, int namelen);
+extern const char *cupsdFinishProcess(int pid, char *name, int namelen,
+ int *job_id);
extern int cupsdStartProcess(const char *command, char *argv[],
char *envp[], int infd, int outfd,
int errfd, int backfd, int sidefd,
- int root, void *profile, int *pid);
+ int root, void *profile, int job_id,
+ int *pid);
extern int cupsdAddSelect(int fd, cupsd_selfunc_t read_cb,
cupsd_selfunc_t write_cb, void *data);
diff --git a/scheduler/dirsvc.c b/scheduler/dirsvc.c
index f41fb451b..dfa996a86 100644
--- a/scheduler/dirsvc.c
+++ b/scheduler/dirsvc.c
@@ -1748,7 +1748,7 @@ cupsdStartPolling(void)
argv[1] = pollp->hostname;
if (cupsdStartProcess(polld, argv, envp, -1, -1, statusfds[1], -1, -1,
- 0, DefaultProfile, &(pollp->pid)) < 0)
+ 0, DefaultProfile, 0, &(pollp->pid)) < 0)
{
cupsdLogMessage(CUPSD_LOG_ERROR,
"cupsdStartPolling: Unable to fork polling daemon - %s",
@@ -5273,7 +5273,7 @@ update_lpd(int onoff) /* - 1 = turn on, 0 = turn off */
argv[4] = NULL;
cupsdStartProcess("/bin/launchctl", argv, envp, -1, -1, -1, -1, -1, 1,
- NULL, &pid);
+ NULL, 0, &pid);
}
#endif /* __APPLE__ */
else
diff --git a/scheduler/ipp.c b/scheduler/ipp.c
index 82e7a7eca..3fc1f33b0 100644
--- a/scheduler/ipp.c
+++ b/scheduler/ipp.c
@@ -1216,23 +1216,14 @@ add_class(cupsd_client_t *con, /* I - Client connection */
if (need_restart_job && pclass->job)
{
- cupsd_job_t *job;
-
/*
- * Stop the current job and then restart it below...
+ * Reset the current job to a "pending" status...
*/
- job = (cupsd_job_t *)pclass->job;
-
- cupsdStopJob(job, 1);
-
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
+ cupsdSetJobState(pclass->job, IPP_JOB_PENDING, CUPSD_JOB_FORCE,
+ "Job restarted because the class was modified.");
}
- if (need_restart_job)
- cupsdCheckJobs();
-
cupsdMarkDirty(CUPSD_DIRTY_PRINTCAP);
if (modify)
@@ -1299,7 +1290,8 @@ add_file(cupsd_client_t *con, /* I - Connection to client */
if (!compressions || !filetypes)
{
- cupsdCancelJob(job, 1, IPP_JOB_ABORTED);
+ cupsdSetJobState(job, IPP_JOB_ABORTED, CUPSD_JOB_PURGE,
+ "Job aborted because the scheduler ran out of memory.");
if (con)
send_ipp_status(con, IPP_INTERNAL_ERROR,
@@ -1738,7 +1730,7 @@ add_job(cupsd_client_t *con, /* I - Client connection */
* Hold job until specified time...
*/
- cupsdSetJobHoldUntil(job, attr->values[0].string.text);
+ cupsdSetJobHoldUntil(job, attr->values[0].string.text, 0);
job->state->values[0].integer = IPP_JOB_HELD;
job->state_value = IPP_JOB_HELD;
@@ -1896,7 +1888,9 @@ add_job(cupsd_client_t *con, /* I - Client connection */
if ((kbytes = copy_banner(con, job, attr->values[0].string.text)) < 0)
{
- cupsdDeleteJob(job);
+ cupsdSetJobState(job, IPP_JOB_ABORTED, CUPSD_JOB_PURGE,
+ "Aborting job because the start banner could not be "
+ "copied.");
return (NULL);
}
@@ -2926,23 +2920,14 @@ add_printer(cupsd_client_t *con, /* I - Client connection */
if (need_restart_job && printer->job)
{
- cupsd_job_t *job;
-
/*
- * Stop the current job and then restart it below...
+ * Restart the current job...
*/
- job = (cupsd_job_t *)printer->job;
-
- cupsdStopJob(job, 1);
-
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
+ cupsdSetJobState(printer->job, IPP_JOB_PENDING, CUPSD_JOB_FORCE,
+ "Job restarted because the printer was modified.");
}
- if (need_restart_job)
- cupsdCheckJobs();
-
cupsdMarkDirty(CUPSD_DIRTY_PRINTCAP);
if (modify)
@@ -3974,21 +3959,28 @@ cancel_job(cupsd_client_t *con, /* I - Client connection */
}
/*
- * See if the printer is currently printing a job...
+ * See if there are any pending jobs...
*/
- if (printer->job)
- jobid = ((cupsd_job_t *)printer->job)->id;
+ for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
+ job;
+ job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
+ if (job->state_value <= IPP_JOB_PROCESSING &&
+ !strcasecmp(job->dest, printer->name))
+ break;
+
+ if (job)
+ jobid = job->id;
else
{
/*
- * No, see if there are any pending jobs...
+ * No, try stopped jobs...
*/
- for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
+ for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
job;
job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
- if (job->state_value <= IPP_JOB_PROCESSING &&
+ if (job->state_value == IPP_JOB_STOPPED &&
!strcasecmp(job->dest, printer->name))
break;
@@ -3996,21 +3988,9 @@ cancel_job(cupsd_client_t *con, /* I - Client connection */
jobid = job->id;
else
{
- for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
- job;
- job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
- if (job->state_value == IPP_JOB_STOPPED &&
- !strcasecmp(job->dest, printer->name))
- break;
-
- if (job)
- jobid = job->id;
- else
- {
- send_ipp_status(con, IPP_NOT_POSSIBLE, _("No active jobs on %s!"),
- printer->name);
- return;
- }
+ send_ipp_status(con, IPP_NOT_POSSIBLE, _("No active jobs on %s!"),
+ printer->name);
+ return;
}
}
}
@@ -4109,7 +4089,9 @@ cancel_job(cupsd_client_t *con, /* I - Client connection */
* Cancel the job and return...
*/
- cupsdCancelJob(job, purge, IPP_JOB_CANCELED);
+ cupsdSetJobState(job, IPP_JOB_CANCELED, purge,
+ purge ? "Job purged by \"%s\"" : "Job canceled by \"%s\"",
+ username);
cupsdCheckJobs();
if (purge)
@@ -5131,7 +5113,7 @@ copy_model(cupsd_client_t *con, /* I - Client connection */
"copy_model: Running \"cups-driverd cat %s\"...", from);
if (!cupsdStartProcess(buffer, argv, envp, -1, temppipe[1], CGIPipes[1],
- -1, -1, 0, DefaultProfile, &temppid))
+ -1, -1, 0, DefaultProfile, 0, &temppid))
{
close(tempfd);
unlink(tempfile);
@@ -6870,7 +6852,7 @@ get_jobs(cupsd_client_t *con, /* I - Client connection */
sizeof(scheme), username, sizeof(username), host,
sizeof(host), &port, resource, sizeof(resource));
- if (!strcmp(resource, "/"))
+ if (!strcmp(resource, "/") || !strcmp(resource, "/jobs"))
{
dest = NULL;
dtype = (cups_ptype_t)0;
@@ -7998,8 +7980,8 @@ static void
hold_job(cupsd_client_t *con, /* I - Client connection */
ipp_attribute_t *uri) /* I - Job or Printer URI */
{
- ipp_attribute_t *attr, /* Current job-hold-until */
- *newattr; /* New job-hold-until */
+ ipp_attribute_t *attr; /* Current job-hold-until */
+ const char *when; /* New value */
int jobid; /* Job ID */
char scheme[HTTP_MAX_URI], /* Method portion of URI */
username[HTTP_MAX_URI], /* Username portion of URI */
@@ -8085,50 +8067,23 @@ hold_job(cupsd_client_t *con, /* I - Client connection */
* Hold the job and return...
*/
- cupsdHoldJob(job);
-
- cupsdAddEvent(CUPSD_EVENT_JOB_STATE, cupsdFindDest(job->dest), job,
- "Job held by user.");
-
- if ((newattr = ippFindAttribute(con->request, "job-hold-until",
- IPP_TAG_KEYWORD)) == NULL)
- newattr = ippFindAttribute(con->request, "job-hold-until", IPP_TAG_NAME);
-
- if ((attr = ippFindAttribute(job->attrs, "job-hold-until",
- IPP_TAG_KEYWORD)) == NULL)
- attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
+ if ((attr = ippFindAttribute(con->request, "job-hold-until",
+ IPP_TAG_KEYWORD)) == NULL)
+ attr = ippFindAttribute(con->request, "job-hold-until", IPP_TAG_NAME);
if (attr)
{
- /*
- * Free the old hold value and copy the new one over...
- */
-
- _cupsStrFree(attr->values[0].string.text);
-
- if (newattr)
- {
- attr->value_tag = newattr->value_tag;
- attr->values[0].string.text =
- _cupsStrRetain(newattr->values[0].string.text);
- }
- else
- {
- attr->value_tag = IPP_TAG_KEYWORD;
- attr->values[0].string.text = _cupsStrAlloc("indefinite");
- }
-
- /*
- * Hold job until specified time...
- */
-
- cupsdSetJobHoldUntil(job, attr->values[0].string.text);
+ when = attr->values[0].string.text;
cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED, cupsdFindDest(job->dest), job,
- "Job job-hold-until value changed by user.");
+ "Job job-hold-until value changed by user.");
}
+ else
+ when = "indefinite";
- cupsdLogJob(job, CUPSD_LOG_INFO, "Held by \"%s\".", username);
+ cupsdSetJobHoldUntil(job, when, 1);
+ cupsdSetJobState(job, IPP_JOB_HELD, CUPSD_JOB_DEFAULT, "Job held by \"%s\".",
+ username);
con->response->request.status.status_code = IPP_OK;
}
@@ -10548,11 +10503,9 @@ set_job_attrs(cupsd_client_t *con, /* I - Client connection */
{
cupsdLogJob(job, CUPSD_LOG_DEBUG, "Setting job-state to %d",
attr->values[0].integer);
-
- job->state->values[0].integer = attr->values[0].integer;
- job->state_value = (ipp_jstate_t)attr->values[0].integer;
-
- event |= CUPSD_EVENT_JOB_STATE;
+ cupsdSetJobState(job, attr->values[0].integer,
+ CUPSD_JOB_DEFAULT,
+ "Job state changed by \"%s\"", username);
check_jobs = 1;
}
break;
@@ -10580,8 +10533,9 @@ set_job_attrs(cupsd_client_t *con, /* I - Client connection */
{
cupsdLogJob(job, CUPSD_LOG_DEBUG, "Setting job-state to %d",
attr->values[0].integer);
- cupsdCancelJob(job, 0, (ipp_jstate_t)attr->values[0].integer);
-
+ cupsdSetJobState(job, (ipp_jstate_t)attr->values[0].integer,
+ CUPSD_JOB_DEFAULT,
+ "Job state changed by \"%s\"", username);
check_jobs = 1;
}
break;
@@ -10621,15 +10575,18 @@ set_job_attrs(cupsd_client_t *con, /* I - Client connection */
{
cupsdLogJob(job, CUPSD_LOG_DEBUG, "Setting job-hold-until to %s",
attr->values[0].string.text);
- cupsdSetJobHoldUntil(job, attr->values[0].string.text);
+ cupsdSetJobHoldUntil(job, attr->values[0].string.text, 0);
if (!strcmp(attr->values[0].string.text, "no-hold"))
+ {
cupsdReleaseJob(job);
+ check_jobs = 1;
+ }
else
- cupsdHoldJob(job);
+ cupsdSetJobState(job, IPP_JOB_HELD, CUPSD_JOB_DEFAULT,
+ "Job held by \"%s\".", username);
- check_jobs = 1;
- event |= CUPSD_EVENT_JOB_CONFIG_CHANGED | CUPSD_EVENT_JOB_STATE;
+ event |= CUPSD_EVENT_JOB_CONFIG_CHANGED | CUPSD_EVENT_JOB_STATE;
}
}
else if (attr->value_tag == IPP_TAG_DELETEATTR)
diff --git a/scheduler/job.c b/scheduler/job.c
index ee83e4c74..25ddffd9f 100644
--- a/scheduler/job.c
+++ b/scheduler/job.c
@@ -14,13 +14,13 @@
*
* Contents:
*
- * cupsdAddJob() - Add a new job to the job queue...
- * cupsdCancelJob() - Cancel the specified print job.
+ * cupsdAddJob() - Add a new job to the job queue.
* cupsdCancelJobs() - Cancel all jobs for the given
- * destination/user...
+ * destination/user.
* cupsdCheckJobs() - Check the pending jobs and start any if the
* destination is available.
* cupsdCleanJobs() - Clean out old jobs.
+ * cupsdContinueJob() - Continue printing with the next file in a job.
* cupsdDeleteJob() - Free all memory used by a job.
* cupsdFinishJob() - Finish a job.
* cupsdFreeAllJobs() - Free all jobs from memory.
@@ -29,34 +29,37 @@
* jobs in a printer or class.
* cupsdGetUserJobCount() - Get the number of pending, processing, or held
* jobs for a user.
- * cupsdHoldJob() - Hold the specified job.
* cupsdLoadAllJobs() - Load all jobs from disk.
- * cupsdLoadJob() - Load a single job...
+ * cupsdLoadJob() - Load a single job.
* cupsdMoveJob() - Move the specified job to a different
* destination.
* cupsdReleaseJob() - Release the specified job.
* cupsdRestartJob() - Restart the specified job.
* cupsdSaveAllJobs() - Save a summary of all jobs to disk.
* cupsdSaveJob() - Save a job to disk.
- * cupsdSetJobHoldUntil() - Set the hold time for a job...
+ * cupsdSetJobHoldUntil() - Set the hold time for a job.
* cupsdSetJobPriority() - Set the priority of a job, moving it up/down
* in the list as needed.
+ * cupsdSetJobState() - Set the state of the specified print job.
* cupsdStopAllJobs() - Stop all print jobs.
- * cupsdStopJob() - Stop a print job.
* cupsdUnloadCompletedJobs() - Flush completed job history from memory.
* compare_active_jobs() - Compare the job IDs and priorities of two
* jobs.
* compare_jobs() - Compare the job IDs of two jobs.
+ * finalize_job() - Cleanup after job filter processes and support
+ * data.
+ * get_options() - Get a string containing the job options.
* ipp_length() - Compute the size of the buffer needed to hold
* the textual IPP attributes.
* load_job_cache() - Load jobs from the job.cache file.
* load_next_job_id() - Load the NextJobId value from the job.cache
* file.
* load_request_root() - Load jobs from the RequestRoot directory.
- * set_time() - Set one of the "time-at-xyz" attributes...
* set_hold_until() - Set the hold time and update job-hold-until
- * attribute...
+ * attribute.
+ * set_time() - Set one of the "time-at-xyz" attributes.
* start_job() - Start a print job.
+ * stop_job() - Stop a print job.
* unload_job() - Unload a job from memory.
* update_job() - Read a status update from a job's filters.
* update_job_attrs() - Update the job-printer-* attributes.
@@ -72,6 +75,78 @@
#include
+/*
+ * Design Notes for Job Management
+ * -------------------------------
+ *
+ * STATE CHANGES
+ *
+ * pending Do nothing/check jobs
+ * pending-held Send SIGTERM to filters and backend
+ * processing Do nothing/start job
+ * stopped Send SIGKILL to filters and backend
+ * canceled Send SIGTERM to filters and backend
+ * aborted Finalize
+ * completed Finalize
+ *
+ * Finalize clears the printer <-> job association, deletes the status
+ * buffer, closes all of the pipes, etc. and doesn't get run until all of
+ * the print processes are finished.
+ *
+ * UNLOADING OF JOBS (cupsdUnloadCompletedJobs)
+ *
+ * We unload the job attributes when they are not needed to reduce overall
+ * memory consumption. We don't unload jobs where job->state_value <
+ * IPP_JOB_STOPPED, job->printer != NULL, or job->access_time is recent.
+ *
+ * STARTING OF JOBS (start_job)
+ *
+ * When a job is started, a status buffer, several pipes, a security
+ * profile, and a backend process are created for the life of that job.
+ * These are shared for every file in a job. For remote print jobs, the
+ * IPP backend is provided with every file in the job and no filters are
+ * run.
+ *
+ * The job->printer member tracks which printer is printing a job, which
+ * can be different than the destination in job->dest for classes. The
+ * printer object also has a job pointer to track which job is being
+ * printed.
+ *
+ * PRINTING OF JOB FILES (cupsdContinueJob)
+ *
+ * Each file in a job is filtered by 0 or more programs. After getting the
+ * list of filters needed and the total cost, the job is either passed or
+ * put back to the processing state until the current FilterLevel comes down
+ * enough to allow printing.
+ *
+ * If we can print, we build a string for the print options and run each of
+ * the filters, piping the output from one into the next.
+ *
+ * JOB STATUS UPDATES (update_job)
+ *
+ * The update_job function gets called whenever there are pending messages
+ * on the status pipe. These generally are updates to the marker-*,
+ * printer-state-message, or printer-state-reasons attributes. On EOF,
+ * finalize_job is called to clean up.
+ *
+ * FINALIZING JOBS (finalize_job)
+ *
+ * When all filters and the backend are done, we set the job state to
+ * completed (no errors), aborted (filter errors or abort-job policy),
+ * pending-held (auth required or retry-job policy), or pending
+ * (retry-current-job or stop-printer policies) as appropriate.
+ *
+ * Then we close the pipes and free the status buffers and profiles.
+ *
+ * JOB FILE COMPLETION (process_children in main.c)
+ *
+ * For multiple-file jobs, process_children (in main.c) sees that all
+ * filters have exited and calls in to print the next file if there are
+ * more files in the job, otherwise it waits for the backend to exit and
+ * update_job to do the cleanup.
+ */
+
+
/*
* Local globals...
*/
@@ -91,20 +166,25 @@ static mime_filter_t gziptoany_filter =
static int compare_active_jobs(void *first, void *second, void *data);
static int compare_jobs(void *first, void *second, void *data);
+static void finalize_job(cupsd_job_t *job);
+static char *get_options(cupsd_job_t *job, int banner_page, char *copies,
+ size_t copies_size, char *title,
+ size_t title_size);
static int ipp_length(ipp_t *ipp);
static void load_job_cache(const char *filename);
static void load_next_job_id(const char *filename);
static void load_request_root(void);
-static void set_time(cupsd_job_t *job, const char *name);
static void set_hold_until(cupsd_job_t *job, time_t holdtime);
+static void set_time(cupsd_job_t *job, const char *name);
static void start_job(cupsd_job_t *job, cupsd_printer_t *printer);
+static void stop_job(cupsd_job_t *job, cupsd_jobaction_t action);
static void unload_job(cupsd_job_t *job);
static void update_job(cupsd_job_t *job);
static void update_job_attrs(cupsd_job_t *job, int do_message);
/*
- * 'cupsdAddJob()' - Add a new job to the job queue...
+ * 'cupsdAddJob()' - Add a new job to the job queue.
*/
cupsd_job_t * /* O - New job record */
@@ -142,186 +222,7 @@ cupsdAddJob(int priority, /* I - Job priority */
/*
- * 'cupsdCancelJob()' - Cancel the specified print job.
- */
-
-void
-cupsdCancelJob(cupsd_job_t *job, /* I - Job to cancel */
- int purge, /* I - Purge jobs? */
- ipp_jstate_t newstate) /* I - New job state */
-{
- int i; /* Looping var */
- char filename[1024]; /* Job filename */
- cupsd_printer_t *printer; /* Printer used by job */
-
-
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCancelJob: id = %d", job->id);
-
- /*
- * Stop any processes that are working on the current job...
- */
-
- if ((printer = job->printer) == NULL)
- printer = cupsdFindDest(job->dest);
-
- if (job->state_value == IPP_JOB_PROCESSING)
- cupsdStopJob(job, 0);
-
- cupsdLoadJob(job);
-
- if (job->attrs)
- job->state->values[0].integer = newstate;
-
- job->state_value = newstate;
-
- set_time(job, "time-at-completed");
-
- /*
- * Send any pending notifications and then expire them...
- */
-
- switch (newstate)
- {
- default :
- break;
-
- case IPP_JOB_CANCELED :
- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, printer, job,
- purge ? "Job purged." : "Job canceled.");
- break;
-
- case IPP_JOB_ABORTED :
- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, printer, job,
- "Job aborted; please consult the error_log file "
- "for details.");
- break;
-
- case IPP_JOB_COMPLETED :
- /*
- * Clear the printer's printer-state-message and move on...
- */
-
- printer->state_message[0] = '\0';
-
- cupsdSetPrinterState(printer, IPP_PRINTER_IDLE, 0);
-
- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, printer, job,
- "Job completed.");
- break;
- }
-
- cupsdExpireSubscriptions(NULL, job);
-
- /*
- * Remove the job from the active and printing lists...
- */
-
- cupsArrayRemove(ActiveJobs, job);
- cupsArrayRemove(PrintingJobs, job);
-
-#ifdef __APPLE__
- /*
- * If we are going to sleep and the PrintingJobs count is now 0, allow the
- * sleep to happen immediately...
- */
-
- if (Sleeping && cupsArrayCount(PrintingJobs) == 0)
- cupsdAllowSleep();
-#endif /* __APPLE__ */
-
- /*
- * Remove any authentication data...
- */
-
- snprintf(filename, sizeof(filename), "%s/a%05d", RequestRoot, job->id);
- if (cupsdRemoveFile(filename) && errno != ENOENT)
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to remove authentication cache: %s",
- strerror(errno));
-
- cupsdClearString(&job->auth_username);
- cupsdClearString(&job->auth_domain);
- cupsdClearString(&job->auth_password);
-
-#ifdef HAVE_GSSAPI
- /*
- * Destroy the credential cache and clear the KRB5CCNAME env var string.
- */
-
- if (job->ccache)
- {
- krb5_cc_destroy(KerberosContext, job->ccache);
- job->ccache = NULL;
- }
-
- cupsdClearString(&job->ccname);
-#endif /* HAVE_GSSAPI */
-
- /*
- * Remove the print file for good if we aren't preserving jobs or
- * files...
- */
-
- job->current_file = 0;
-
- if (!JobHistory || !JobFiles || purge)
- {
- for (i = 1; i <= job->num_files; i ++)
- {
- snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot,
- job->id, i);
- unlink(filename);
- }
-
- if (job->num_files > 0)
- {
- free(job->filetypes);
- free(job->compressions);
-
- job->num_files = 0;
- job->filetypes = NULL;
- job->compressions = NULL;
- }
- }
-
- if (JobHistory && !purge)
- {
- /*
- * Save job state info...
- */
-
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
- }
- else
- {
- /*
- * Remove the job info file...
- */
-
- snprintf(filename, sizeof(filename), "%s/c%05d", RequestRoot,
- job->id);
- unlink(filename);
-
- /*
- * Remove the job from the "all jobs" list...
- */
-
- cupsArrayRemove(Jobs, job);
-
- /*
- * Free all memory used...
- */
-
- cupsdDeleteJob(job);
- }
-
- cupsdSetBusyState();
-}
-
-
-/*
- * 'cupsdCancelJobs()' - Cancel all jobs for the given destination/user...
+ * 'cupsdCancelJobs()' - Cancel all jobs for the given destination/user.
*/
void
@@ -336,20 +237,22 @@ cupsdCancelJobs(const char *dest, /* I - Destination to cancel */
job;
job = (cupsd_job_t *)cupsArrayNext(Jobs))
{
- if (!job->dest || !job->username)
- cupsdLoadJob(job);
-
- if (!job->dest || !job->username)
+ if ((!job->dest || !job->username) && !cupsdLoadJob(job))
continue;
- if ((dest == NULL || !strcmp(job->dest, dest)) &&
- (username == NULL || !strcmp(job->username, username)))
+ if ((!dest || !strcmp(job->dest, dest)) &&
+ (!username || !strcmp(job->username, username)))
{
/*
* Cancel all jobs matching this destination/user...
*/
- cupsdCancelJob(job, purge, IPP_JOB_CANCELED);
+ if (purge)
+ cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_PURGE,
+ "Job purged by user.");
+ else
+ cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_DEFAULT,
+ "Job canceled by user.");
}
}
@@ -371,8 +274,6 @@ cupsdCheckJobs(void)
ipp_attribute_t *attr; /* Job attribute */
- DEBUG_puts("cupsdCheckJobs()");
-
cupsdLogMessage(CUPSD_LOG_DEBUG2,
"cupsdCheckJobs: %d active jobs, sleeping=%d, reload=%d",
cupsArrayCount(ActiveJobs), Sleeping, NeedReload);
@@ -385,11 +286,6 @@ cupsdCheckJobs(void)
* Start held jobs if they are ready...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdCheckJobs: Job %d: dest=%s, dtype=%x, "
- "state_value=%d, loaded=%s", job->id, job->dest, job->dtype,
- job->state_value, job->attrs ? "yes" : "no");
-
if (job->state_value == IPP_JOB_HELD &&
job->hold_until &&
job->hold_until < time(NULL))
@@ -419,27 +315,16 @@ cupsdCheckJobs(void)
continue;
}
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
-
- if ((attr = ippFindAttribute(job->attrs, "job-hold-until",
- IPP_TAG_KEYWORD)) == NULL)
- attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
-
- if (attr)
- {
- attr->value_tag = IPP_TAG_KEYWORD;
- cupsdSetString(&(attr->values[0].string.text), "no-hold");
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
- }
+ cupsdSetJobState(job, IPP_JOB_PENDING, CUPSD_JOB_DEFAULT,
+ "Job submission timed out.");
}
/*
* Start pending jobs if the destination is available...
*/
- if (job->state_value == IPP_JOB_PENDING && !NeedReload && !Sleeping)
+ if (job->state_value == IPP_JOB_PENDING && !NeedReload && !Sleeping &&
+ !job->printer)
{
printer = cupsdFindDest(job->dest);
pclass = NULL;
@@ -468,15 +353,9 @@ cupsdCheckJobs(void)
* cancel the job...
*/
- cupsdLogMessage(CUPSD_LOG_WARN,
- "[Job %d] Printer/class %s has gone away; canceling "
- "job!", job->id, job->dest);
-
- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
- "Job canceled because the destination printer/class has "
- "gone away.");
-
- cupsdCancelJob(job, 1, IPP_JOB_ABORTED);
+ cupsdSetJobState(job, IPP_JOB_ABORTED, CUPSD_JOB_PURGE,
+ "Job aborted because the destination printer/class "
+ "has gone away.");
}
else if (printer && !printer->holding_new_jobs)
{
@@ -508,12 +387,6 @@ cupsdCheckJobs(void)
((printer->type & CUPS_PRINTER_DISCOVERED) && /* Printer is remote */
!printer->job)) /* and not printing */
{
- /*
- * Clear any message for the queue...
- */
-
- printer->state_message[0] = '\0';
-
/*
* Start the job...
*/
@@ -542,1224 +415,1328 @@ cupsdCleanJobs(void)
for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
job && cupsArrayCount(Jobs) >= MaxJobs;
job = (cupsd_job_t *)cupsArrayNext(Jobs))
- if (job->state_value >= IPP_JOB_CANCELED)
- cupsdCancelJob(job, 1, IPP_JOB_CANCELED);
+ if (job->state_value >= IPP_JOB_CANCELED && !job->printer)
+ cupsdDeleteJob(job, CUPSD_JOB_PURGE);
}
/*
- * 'cupsdDeleteJob()' - Free all memory used by a job.
+ * 'cupsdContinueJob()' - Continue printing with the next file in a job.
*/
void
-cupsdDeleteJob(cupsd_job_t *job) /* I - Job */
+cupsdContinueJob(cupsd_job_t *job) /* I - Job */
{
- cupsdClearString(&job->username);
- cupsdClearString(&job->dest);
- cupsdClearString(&job->auth_username);
- cupsdClearString(&job->auth_domain);
- cupsdClearString(&job->auth_password);
+ int i; /* Looping var */
+ int slot; /* Pipe slot */
+ cups_array_t *filters, /* Filters for job */
+ *prefilters; /* Filters with prefilters */
+ mime_filter_t *filter, /* Current filter */
+ *prefilter, /* Prefilter */
+ port_monitor; /* Port monitor filter */
+ char scheme[255]; /* Device URI scheme */
+ ipp_attribute_t *attr; /* Current attribute */
+ const char *ptr, /* Pointer into value */
+ *abort_message; /* Abort message */
+ struct stat backinfo; /* Backend file information */
+ int backroot; /* Run backend as root? */
+ int pid; /* Process ID of new filter process */
+ int banner_page; /* 1 if banner page, 0 otherwise */
+ int filterfds[2][2];/* Pipes used between filters */
+ int envc; /* Number of environment variables */
+ char **argv, /* Filter command-line arguments */
+ filename[1024], /* Job filename */
+ command[1024], /* Full path to command */
+ jobid[255], /* Job ID string */
+ title[IPP_MAX_NAME],
+ /* Job title string */
+ copies[255], /* # copies string */
+ *options, /* Options string */
+ *envp[MAX_ENV + 19],
+ /* Environment variables */
+ charset[255], /* CHARSET env variable */
+ class_name[255],/* CLASS env variable */
+ classification[1024],
+ /* CLASSIFICATION env variable */
+ content_type[1024],
+ /* CONTENT_TYPE env variable */
+ device_uri[1024],
+ /* DEVICE_URI env variable */
+ final_content_type[1024],
+ /* FINAL_CONTENT_TYPE env variable */
+ lang[255], /* LANG env variable */
+#ifdef __APPLE__
+ apple_language[255],
+ /* APPLE_LANGUAGE env variable */
+#endif /* __APPLE__ */
+ ppd[1024], /* PPD env variable */
+ printer_info[255],
+ /* PRINTER_INFO env variable */
+ printer_location[255],
+ /* PRINTER_LOCATION env variable */
+ printer_name[255],
+ /* PRINTER env variable */
+ rip_max_cache[255];
+ /* RIP_MAX_CACHE env variable */
+
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "cupsdContinueJob(job=%p(%d)): current_file=%d, num_files=%d",
+ job, job->id, job->current_file, job->num_files);
-#ifdef HAVE_GSSAPI
/*
- * Destroy the credential cache and clear the KRB5CCNAME env var string.
+ * Figure out what filters are required to convert from
+ * the source to the destination type...
*/
- if (job->ccache)
- {
- krb5_cc_destroy(KerberosContext, job->ccache);
- job->ccache = NULL;
- }
+ FilterLevel -= job->cost;
- cupsdClearString(&job->ccname);
-#endif /* HAVE_GSSAPI */
+ filters = NULL;
- if (job->num_files > 0)
+ if (job->printer->raw)
{
- free(job->compressions);
- free(job->filetypes);
- }
-
- ippDelete(job->attrs);
+ /*
+ * Remote jobs and raw queues go directly to the printer without
+ * filtering...
+ */
- free(job);
-}
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "Sending job to queue tagged as raw...");
+ filters = NULL;
+ }
+ else
+ {
+ /*
+ * Local jobs get filtered...
+ */
-/*
- * 'cupsdFinishJob()' - Finish a job.
- */
+ filters = mimeFilter(MimeDatabase, job->filetypes[job->current_file],
+ job->printer->filetype, &(job->cost));
-void
-cupsdFinishJob(cupsd_job_t *job) /* I - Job */
-{
- cupsd_printer_t *printer; /* Current printer */
- ipp_attribute_t *attr; /* job-hold-until attribute */
+ if (!filters)
+ {
+ cupsdLogJob(job, CUPSD_LOG_ERROR,
+ "Unable to convert file %d to printable format!",
+ job->current_file);
+ job->current_file ++;
- cupsdLogJob(job, CUPSD_LOG_DEBUG, "File %d is complete.",
- job->current_file - 1);
+ if (job->current_file == job->num_files)
+ cupsdSetJobState(job, IPP_JOB_ABORTED, CUPSD_JOB_DEFAULT,
+ "Aborting job because it cannot be printed.");
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "cupsdFinishJob: job->status is %d",
- job->status);
+ return;
+ }
- if (job->status_buffer &&
- (job->status < 0 || job->current_file >= job->num_files))
- {
/*
- * Close the pipe and clear the input bit.
+ * Remove NULL ("-") filters...
*/
- cupsdRemoveSelect(job->status_buffer->fd);
+ for (filter = (mime_filter_t *)cupsArrayFirst(filters);
+ filter;
+ filter = (mime_filter_t *)cupsArrayNext(filters))
+ if (!strcmp(filter->filter, "-"))
+ cupsArrayRemove(filters, filter);
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "cupsdFinishJob: Closing status pipes [ %d %d ]...",
- job->status_pipes[0], job->status_pipes[1]);
+ if (cupsArrayCount(filters) == 0)
+ {
+ cupsArrayDelete(filters);
+ filters = NULL;
+ }
- cupsdClosePipe(job->status_pipes);
- cupsdStatBufDelete(job->status_buffer);
+ /*
+ * If this printer has any pre-filters, insert the required pre-filter
+ * in the filters array...
+ */
- job->status_buffer = NULL;
- }
+ if (job->printer->prefiltertype && filters)
+ {
+ prefilters = cupsArrayNew(NULL, NULL);
+
+ for (filter = (mime_filter_t *)cupsArrayFirst(filters);
+ filter;
+ filter = (mime_filter_t *)cupsArrayNext(filters))
+ {
+ if ((prefilter = mimeFilterLookup(MimeDatabase, filter->src,
+ job->printer->prefiltertype)))
+ {
+ cupsArrayAdd(prefilters, prefilter);
+ job->cost += prefilter->cost;
+ }
- if ((printer = job->printer) == NULL)
- printer = cupsdFindDest(job->dest);
+ cupsArrayAdd(prefilters, filter);
+ }
- update_job_attrs(job, 0);
+ cupsArrayDelete(filters);
+ filters = prefilters;
+ }
+ }
/*
- * Clear the "connecting-to-device" reason, which is only valid when a
- * printer is processing...
+ * Set a minimum cost of 100 for all jobs so that FilterLimit
+ * works with raw queues and other low-cost paths.
*/
- cupsdSetPrinterReasons(printer, "-connecting-to-device");
+ if (job->cost < 100)
+ job->cost = 100;
/*
- * Similarly, clear the "offline-report" reason for non-USB devices since we
- * rarely have current information for network devices...
+ * See if the filter cost is too high...
*/
- if (strncmp(printer->device_uri, "usb:", 4))
- cupsdSetPrinterReasons(printer, "-offline-report");
-
- if (job->status < 0)
+ if ((FilterLevel + job->cost) > FilterLimit && FilterLevel > 0 &&
+ FilterLimit > 0)
{
/*
- * Backend had errors; stop it...
+ * Don't print this job quite yet...
*/
- int exit_code; /* Exit code from backend */
-
+ cupsArrayDelete(filters);
- /*
- * Convert the status to an exit code. Due to the way the W* macros are
- * implemented on MacOS X (bug?), we have to store the exit status in a
- * variable first and then convert...
- */
+ cupsdLogJob(job, CUPSD_LOG_INFO,
+ "Holding because filter limit has been reached.");
+ cupsdLogJob(job, CUPSD_LOG_DEBUG2,
+ "cupsdContinueJob: file=%d, cost=%d, level=%d, limit=%d",
+ job->current_file, job->cost, FilterLevel,
+ FilterLimit);
+ return;
+ }
- exit_code = -job->status;
- if (WIFEXITED(exit_code))
- exit_code = WEXITSTATUS(exit_code);
- else
- exit_code = job->status;
+ FilterLevel += job->cost;
- cupsdLogJob(job, CUPSD_LOG_INFO, "Backend returned status %d (%s)",
- exit_code,
- exit_code == CUPS_BACKEND_FAILED ? "failed" :
- exit_code == CUPS_BACKEND_AUTH_REQUIRED ?
- "authentication required" :
- exit_code == CUPS_BACKEND_HOLD ? "hold job" :
- exit_code == CUPS_BACKEND_STOP ? "stop printer" :
- exit_code == CUPS_BACKEND_CANCEL ? "cancel job" :
- exit_code < 0 ? "crashed" : "unknown");
+ /*
+ * Add decompression/raw filter as needed...
+ */
+ if ((!job->printer->raw && job->compressions[job->current_file]) ||
+ (!filters && !job->printer->remote &&
+ (job->num_files > 1 || !strncmp(job->printer->device_uri, "file:", 5))))
+ {
/*
- * Do what needs to be done...
+ * Add gziptoany filter to the front of the list...
*/
- switch (exit_code)
- {
- default :
- case CUPS_BACKEND_FAILED :
- /*
- * Backend failure, use the error-policy to determine how to
- * act...
- */
+ if (!filters)
+ filters = cupsArrayNew(NULL, NULL);
- cupsdStopJob(job, 0);
+ if (!cupsArrayInsert(filters, &gziptoany_filter))
+ {
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "Unable to add decompression filter - %s", strerror(errno));
- if (job->dtype & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT))
- {
- /*
- * Mark the job as pending again - we'll retry on another
- * printer...
- */
+ cupsArrayDelete(filters);
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
- }
+ cupsdSetJobState(job, IPP_JOB_STOPPED, CUPSD_JOB_DEFAULT,
+ "Stopping job because the scheduler ran out of "
+ "memory.");
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+ FilterLevel -= job->cost;
+ return;
+ }
+ }
- /*
- * If the job was queued to a class or the error policy is
- * "retry-current-job", try requeuing it... For faxes and retry-job
- * queues, hold the current job for 5 minutes.
- */
+ /*
+ * Add port monitor, if any...
+ */
- if ((job->dtype & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT)) ||
- !strcmp(printer->error_policy, "retry-current-job"))
- cupsdCheckJobs();
- else if ((printer->type & CUPS_PRINTER_FAX) ||
- !strcmp(printer->error_policy, "retry-job"))
- {
- /*
- * See how many times we've tried to send the job; if more than
- * the limit, cancel the job.
- */
+ if (job->printer->port_monitor)
+ {
+ /*
+ * Add port monitor to the end of the list...
+ */
- job->tries ++;
+ if (!filters)
+ filters = cupsArrayNew(NULL, NULL);
- if (job->tries >= JobRetryLimit)
- {
- /*
- * Too many tries...
- */
+ port_monitor.src = NULL;
+ port_monitor.dst = NULL;
+ port_monitor.cost = 0;
- cupsdLogJob(job, CUPSD_LOG_ERROR,
- "Canceling job since it could not be "
- "sent after %d tries.",
- JobRetryLimit);
+ snprintf(port_monitor.filter, sizeof(port_monitor.filter),
+ "%s/monitor/%s", ServerBin, job->printer->port_monitor);
- cupsdCancelJob(job, 0, IPP_JOB_ABORTED);
- }
- else
- {
- /*
- * Try again in N seconds...
- */
+ if (!cupsArrayAdd(filters, &port_monitor))
+ {
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "Unable to add port monitor - %s", strerror(errno));
- set_hold_until(job, time(NULL) + JobRetryInterval);
+ cupsArrayDelete(filters);
- cupsdAddEvent(CUPSD_EVENT_JOB_STATE, printer, job,
- "Job held due to fax errors; please consult "
- "the error_log file for details.");
- cupsdSetPrinterState(printer, IPP_PRINTER_IDLE, 0);
- }
- }
- else if (!strcmp(printer->error_policy, "abort-job"))
- cupsdCancelJob(job, 0, IPP_JOB_ABORTED);
- else
- {
- cupsdSetPrinterState(printer, IPP_PRINTER_STOPPED, 1);
+ cupsdSetJobState(job, IPP_JOB_STOPPED, CUPSD_JOB_DEFAULT,
+ "Stopping job because the scheduler ran out of "
+ "memory.");
- cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, printer, job,
- "Job stopped due to backend errors; please consult "
- "the error_log file for details.");
- }
- break;
+ FilterLevel -= job->cost;
+ return;
+ }
+ }
- case CUPS_BACKEND_CANCEL :
- /*
- * Cancel the job...
- */
+ /*
+ * Make sure we don't go over the "MAX_FILTERS" limit...
+ */
- cupsdCancelJob(job, 0, IPP_JOB_CANCELED);
- break;
+ if (cupsArrayCount(filters) > MAX_FILTERS)
+ {
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "Too many filters (%d > %d), unable to print!",
+ cupsArrayCount(filters), MAX_FILTERS);
- case CUPS_BACKEND_HOLD :
- /*
- * Hold the job...
- */
+ cupsArrayDelete(filters);
+ cupsdSetJobState(job, IPP_JOB_STOPPED, CUPSD_JOB_DEFAULT,
+ "Stopping job because it needs too many filters to "
+ "print.");
- cupsdStopJob(job, 0);
+ FilterLevel -= job->cost;
+ return;
+ }
- cupsdSetJobHoldUntil(job, "indefinite");
+ /*
+ * Determine if we are printing a banner page or not...
+ */
- job->state->values[0].integer = IPP_JOB_HELD;
- job->state_value = IPP_JOB_HELD;
+ if (job->job_sheets == NULL)
+ {
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "No job-sheets attribute.");
+ if ((job->job_sheets =
+ ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_ZERO)) != NULL)
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "... but someone added one without setting job_sheets!");
+ }
+ else if (job->job_sheets->num_values == 1)
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "job-sheets=%s",
+ job->job_sheets->values[0].string.text);
+ else
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "job-sheets=%s,%s",
+ job->job_sheets->values[0].string.text,
+ job->job_sheets->values[1].string.text);
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+ if (job->printer->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT))
+ banner_page = 0;
+ else if (job->job_sheets == NULL)
+ banner_page = 0;
+ else if (strcasecmp(job->job_sheets->values[0].string.text, "none") != 0 &&
+ job->current_file == 0)
+ banner_page = 1;
+ else if (job->job_sheets->num_values > 1 &&
+ strcasecmp(job->job_sheets->values[1].string.text, "none") != 0 &&
+ job->current_file == (job->num_files - 1))
+ banner_page = 1;
+ else
+ banner_page = 0;
- cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, printer, job,
- "Job held due to backend errors; please consult "
- "the error_log file for details.");
- break;
+ if ((options = get_options(job, banner_page, copies, sizeof(copies), title,
+ sizeof(title))) == NULL)
+ {
+ cupsdSetJobState(job, IPP_JOB_STOPPED, CUPSD_JOB_DEFAULT,
+ "Stopping job because the scheduler ran out of memory.");
+ cupsArrayDelete(filters);
- case CUPS_BACKEND_STOP :
- /*
- * Stop the printer...
- */
+ FilterLevel -= job->cost;
+ return;
+ }
- cupsdStopJob(job, 0);
+ /*
+ * 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.
+ *
+ * For remote jobs, we send all of the files in the argument list.
+ */
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
+ if (job->printer->remote)
+ argv = calloc(7 + job->num_files, sizeof(char *));
+ else
+ argv = calloc(8, sizeof(char *));
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
-
- cupsdSetPrinterState(printer, IPP_PRINTER_STOPPED, 1);
-
- cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, printer, job,
- "Job stopped due to backend errors; please consult "
- "the error_log file for details.");
- break;
-
- case CUPS_BACKEND_AUTH_REQUIRED :
- cupsdStopJob(job, 0);
-
- cupsdSetJobHoldUntil(job, "auth-info-required");
-
- if ((attr = ippFindAttribute(job->attrs, "job-hold-until",
- IPP_TAG_KEYWORD)) == NULL)
- attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
-
- if (attr)
- {
- attr->value_tag = IPP_TAG_KEYWORD;
- cupsdSetString(&(attr->values[0].string.text),
- "auth-info-required");
- }
-
- job->state->values[0].integer = IPP_JOB_HELD;
- job->state_value = IPP_JOB_HELD;
+ if (!argv)
+ {
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Unable to allocate argument array - %s",
+ strerror(errno));
+ cupsdSetJobState(job, IPP_JOB_STOPPED, CUPSD_JOB_DEFAULT,
+ "Stopping job because the scheduler ran out of memory.");
+ cupsArrayDelete(filters);
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+ FilterLevel -= job->cost;
+ return;
+ }
- cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, printer, job,
- "Authentication is required for job %d.", job->id);
- break;
- }
+ sprintf(jobid, "%d", job->id);
- /*
- * Try printing another job...
- */
+ argv[0] = job->printer->name;
+ argv[1] = jobid;
+ argv[2] = job->username;
+ argv[3] = title;
+ argv[4] = copies;
+ argv[5] = options;
- cupsdCheckJobs();
- }
- else if (job->status > 0)
+ if (job->printer->remote && job->num_files > 1)
{
- /*
- * Filter had errors; stop job...
- */
-
- cupsdLogJob(job, CUPSD_LOG_ERROR, "Job stopped due to filter errors.");
- cupsdStopJob(job, 1);
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
- cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, printer, job,
- "Job stopped due to filter errors; please consult the "
- "error_log file for details.");
- cupsdCheckJobs();
+ for (i = 0; i < job->num_files; i ++)
+ {
+ snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot,
+ job->id, i + 1);
+ argv[6 + i] = strdup(filename);
+ }
}
else
{
- /*
- * Job printed successfully; cancel it...
- */
-
- if (job->current_file < job->num_files)
- {
- /*
- * Start the next file in the job...
- */
-
- FilterLevel -= job->cost;
- start_job(job, printer);
- }
- else
- {
- /*
- * Close out this job...
- */
-
- cupsdLogJob(job, CUPSD_LOG_INFO, "Completed successfully.");
- cupsdCancelJob(job, 0, IPP_JOB_COMPLETED);
- cupsdCheckJobs();
- }
+ snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot,
+ job->id, job->current_file + 1);
+ argv[6] = filename;
}
-}
-
-
-/*
- * 'cupsdFreeAllJobs()' - Free all jobs from memory.
- */
-
-void
-cupsdFreeAllJobs(void)
-{
- cupsd_job_t *job; /* Current job */
+ for (i = 0; argv[i]; i ++)
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "argv[%d]=\"%s\"", i, argv[i]);
- if (!Jobs)
- return;
+ /*
+ * Create environment variable strings for the filters...
+ */
- cupsdHoldSignals();
+ attr = ippFindAttribute(job->attrs, "attributes-natural-language",
+ IPP_TAG_LANGUAGE);
- cupsdStopAllJobs(1);
- cupsdSaveAllJobs();
+#ifdef __APPLE__
+ strcpy(apple_language, "APPLE_LANGUAGE=");
+ _cupsAppleLanguage(attr->values[0].string.text,
+ apple_language + 15, sizeof(apple_language) - 15);
+#endif /* __APPLE__ */
- for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
- job;
- job = (cupsd_job_t *)cupsArrayNext(Jobs))
+ switch (strlen(attr->values[0].string.text))
{
- cupsArrayRemove(Jobs, job);
- cupsArrayRemove(ActiveJobs, job);
- cupsArrayRemove(PrintingJobs, job);
-
- cupsdDeleteJob(job);
- }
-
- cupsdReleaseSignals();
-}
+ default :
+ /*
+ * This is an unknown or badly formatted language code; use
+ * the POSIX locale...
+ */
+ strcpy(lang, "LANG=C");
+ break;
-/*
- * 'cupsdFindJob()' - Find the specified job.
- */
+ case 2 :
+ /*
+ * Just the language code (ll)...
+ */
-cupsd_job_t * /* O - Job data */
-cupsdFindJob(int id) /* I - Job ID */
-{
- cupsd_job_t key; /* Search key */
+ snprintf(lang, sizeof(lang), "LANG=%s.UTF8",
+ attr->values[0].string.text);
+ break;
+ case 5 :
+ /*
+ * Language and country code (ll-cc)...
+ */
- key.id = id;
+ snprintf(lang, sizeof(lang), "LANG=%c%c_%c%c.UTF8",
+ attr->values[0].string.text[0],
+ attr->values[0].string.text[1],
+ toupper(attr->values[0].string.text[3] & 255),
+ toupper(attr->values[0].string.text[4] & 255));
+ break;
+ }
- return ((cupsd_job_t *)cupsArrayFind(Jobs, &key));
-}
+ if ((attr = ippFindAttribute(job->attrs, "document-format",
+ IPP_TAG_MIMETYPE)) != NULL &&
+ (ptr = strstr(attr->values[0].string.text, "charset=")) != NULL)
+ snprintf(charset, sizeof(charset), "CHARSET=%s", ptr + 8);
+ else
+ strlcpy(charset, "CHARSET=utf-8", sizeof(charset));
+ snprintf(content_type, sizeof(content_type), "CONTENT_TYPE=%s/%s",
+ job->filetypes[job->current_file]->super,
+ job->filetypes[job->current_file]->type);
+ snprintf(device_uri, sizeof(device_uri), "DEVICE_URI=%s",
+ job->printer->device_uri);
+ snprintf(ppd, sizeof(ppd), "PPD=%s/ppd/%s.ppd", ServerRoot,
+ job->printer->name);
+ snprintf(printer_info, sizeof(printer_name), "PRINTER_INFO=%s",
+ job->printer->info ? job->printer->info : "");
+ snprintf(printer_location, sizeof(printer_name), "PRINTER_LOCATION=%s",
+ job->printer->location ? job->printer->location : "");
+ snprintf(printer_name, sizeof(printer_name), "PRINTER=%s", job->printer->name);
+ snprintf(rip_max_cache, sizeof(rip_max_cache), "RIP_MAX_CACHE=%s", RIPCache);
-/*
- * 'cupsdGetPrinterJobCount()' - Get the number of pending, processing,
- * or held jobs in a printer or class.
- */
+ envc = cupsdLoadEnv(envp, (int)(sizeof(envp) / sizeof(envp[0])));
-int /* O - Job count */
-cupsdGetPrinterJobCount(
- const char *dest) /* I - Printer or class name */
-{
- int count; /* Job count */
- cupsd_job_t *job; /* Current job */
+ envp[envc ++] = charset;
+ envp[envc ++] = lang;
+#ifdef __APPLE__
+ envp[envc ++] = apple_language;
+#endif /* __APPLE__ */
+ envp[envc ++] = ppd;
+ envp[envc ++] = rip_max_cache;
+ envp[envc ++] = content_type;
+ envp[envc ++] = device_uri;
+ envp[envc ++] = printer_info;
+ envp[envc ++] = printer_location;
+ envp[envc ++] = printer_name;
+ envp[envc ++] = banner_page ? "CUPS_FILETYPE=job-sheet" :
+ "CUPS_FILETYPE=document";
+ if (!job->printer->remote && !job->printer->raw)
+ {
+ filter = (mime_filter_t *)cupsArrayLast(filters);
- for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs), count = 0;
- job;
- job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
- if (job->dest && !strcasecmp(job->dest, dest))
- count ++;
+ if (job->printer->port_monitor)
+ filter = (mime_filter_t *)cupsArrayPrev(filters);
- return (count);
-}
+ if (filter && filter->dst)
+ {
+ snprintf(final_content_type, sizeof(final_content_type),
+ "FINAL_CONTENT_TYPE=%s/%s",
+ filter->dst->super, filter->dst->type);
+ envp[envc ++] = final_content_type;
+ }
+ }
+ if (Classification && !banner_page)
+ {
+ if ((attr = ippFindAttribute(job->attrs, "job-sheets",
+ IPP_TAG_NAME)) == NULL)
+ snprintf(classification, sizeof(classification), "CLASSIFICATION=%s",
+ Classification);
+ else if (attr->num_values > 1 &&
+ strcmp(attr->values[1].string.text, "none") != 0)
+ snprintf(classification, sizeof(classification), "CLASSIFICATION=%s",
+ attr->values[1].string.text);
+ else
+ snprintf(classification, sizeof(classification), "CLASSIFICATION=%s",
+ attr->values[0].string.text);
-/*
- * 'cupsdGetUserJobCount()' - Get the number of pending, processing,
- * or held jobs for a user.
- */
+ envp[envc ++] = classification;
+ }
-int /* O - Job count */
-cupsdGetUserJobCount(
- const char *username) /* I - Username */
-{
- int count; /* Job count */
- cupsd_job_t *job; /* Current job */
+ if (job->dtype & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT))
+ {
+ snprintf(class_name, sizeof(class_name), "CLASS=%s", job->dest);
+ envp[envc ++] = class_name;
+ }
+ if (job->auth_username)
+ envp[envc ++] = job->auth_username;
+ if (job->auth_domain)
+ envp[envc ++] = job->auth_domain;
+ if (job->auth_password)
+ envp[envc ++] = job->auth_password;
- for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs), count = 0;
- job;
- job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
- if (!strcasecmp(job->username, username))
- count ++;
+#ifdef HAVE_GSSAPI
+ if (job->ccname)
+ envp[envc ++] = job->ccname;
+#endif /* HAVE_GSSAPI */
- return (count);
-}
+ envp[envc] = NULL;
+ for (i = 0; i < envc; i ++)
+ if (!strncmp(envp[i], "AUTH_", 5))
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "envp[%d]=\"AUTH_%c****\"", i,
+ envp[i][5]);
+ else if (strncmp(envp[i], "DEVICE_URI=", 11))
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "envp[%d]=\"%s\"", i, envp[i]);
+ else
+ cupsdLogJob(job, CUPSD_LOG_DEBUG, "envp[%d]=\"DEVICE_URI=%s\"", i,
+ job->printer->sanitized_device_uri);
-/*
- * 'cupsdHoldJob()' - Hold the specified job.
- */
+ if (job->printer->remote)
+ job->current_file = job->num_files;
+ else
+ job->current_file ++;
-void
-cupsdHoldJob(cupsd_job_t *job) /* I - Job data */
-{
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdHoldJob: id = %d", job->id);
+ /*
+ * Now create processes for all of the filters...
+ */
- if (job->state_value == IPP_JOB_PROCESSING)
- cupsdStopJob(job, 0);
- else
- cupsdLoadJob(job);
+ filterfds[0][0] = -1;
+ filterfds[0][1] = -1;
+ filterfds[1][0] = -1;
+ filterfds[1][1] = -1;
- DEBUG_puts("cupsdHoldJob: setting state to held...");
+ memset(job->filters, 0, sizeof(job->filters));
- job->state->values[0].integer = IPP_JOB_HELD;
- job->state_value = IPP_JOB_HELD;
- job->current_file = 0;
+ for (i = 0, slot = 0, filter = (mime_filter_t *)cupsArrayFirst(filters);
+ filter;
+ i ++, filter = (mime_filter_t *)cupsArrayNext(filters))
+ {
+ if (filter->filter[0] != '/')
+ snprintf(command, sizeof(command), "%s/filter/%s", ServerBin,
+ filter->filter);
+ else
+ strlcpy(command, filter->filter, sizeof(command));
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
-}
+ if (i < (cupsArrayCount(filters) - 1))
+ {
+ if (cupsdOpenPipe(filterfds[slot]))
+ {
+ abort_message = "Stopping job because the scheduler could not create "
+ "the filter pipes.";
+ goto abort_job;
+ }
+ }
+ else
+ {
+ if (job->current_file == 1)
+ {
+ if (strncmp(job->printer->device_uri, "file:", 5) != 0)
+ {
+ if (cupsdOpenPipe(job->print_pipes))
+ {
+ abort_message = "Stopping job because the scheduler could not "
+ "create the backend pipes.";
-/*
- * 'cupsdLoadAllJobs()' - Load all jobs from disk.
- */
+ goto abort_job;
+ }
+ }
+ else
+ {
+ job->print_pipes[0] = -1;
+ if (!strcmp(job->printer->device_uri, "file:/dev/null") ||
+ !strcmp(job->printer->device_uri, "file:///dev/null"))
+ job->print_pipes[1] = -1;
+ else
+ {
+ if (!strncmp(job->printer->device_uri, "file:/dev/", 10))
+ job->print_pipes[1] = open(job->printer->device_uri + 5,
+ O_WRONLY | O_EXCL);
+ else if (!strncmp(job->printer->device_uri, "file:///dev/", 12))
+ job->print_pipes[1] = open(job->printer->device_uri + 7,
+ O_WRONLY | O_EXCL);
+ else if (!strncmp(job->printer->device_uri, "file:///", 8))
+ job->print_pipes[1] = open(job->printer->device_uri + 7,
+ O_WRONLY | O_CREAT | O_TRUNC, 0600);
+ else
+ job->print_pipes[1] = open(job->printer->device_uri + 5,
+ O_WRONLY | O_CREAT | O_TRUNC, 0600);
-void
-cupsdLoadAllJobs(void)
-{
- char filename[1024]; /* Full filename of job.cache file */
- struct stat fileinfo, /* Information on job.cache file */
- dirinfo; /* Information on RequestRoot dir */
+ if (job->print_pipes[1] < 0)
+ {
+ abort_message = "Stopping job because the scheduler could not "
+ "open the output file.";
+ goto abort_job;
+ }
+ fcntl(job->print_pipes[1], F_SETFD,
+ fcntl(job->print_pipes[1], F_GETFD) | FD_CLOEXEC);
+ }
+ }
+ }
- /*
- * Create the job arrays as needed...
- */
+ filterfds[slot][0] = job->print_pipes[0];
+ filterfds[slot][1] = job->print_pipes[1];
+ }
- if (!Jobs)
- Jobs = cupsArrayNew(compare_jobs, NULL);
+ pid = cupsdStartProcess(command, argv, envp, filterfds[!slot][0],
+ filterfds[slot][1], job->status_pipes[1],
+ job->back_pipes[0], job->side_pipes[0], 0,
+ job->profile, job->id, job->filters + i);
- if (!ActiveJobs)
- ActiveJobs = cupsArrayNew(compare_active_jobs, NULL);
+ cupsdClosePipe(filterfds[!slot]);
- if (!PrintingJobs)
- PrintingJobs = cupsArrayNew(compare_jobs, NULL);
+ if (pid == 0)
+ {
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "Unable to start filter \"%s\" - %s.",
+ filter->filter, strerror(errno));
- /*
- * See whether the job.cache file is older than the RequestRoot directory...
- */
+ abort_message = "Stopped job because the scheduler could not execute a "
+ "filter.";
- snprintf(filename, sizeof(filename), "%s/job.cache", CacheDir);
+ goto abort_job;
+ }
- if (stat(filename, &fileinfo))
- {
- fileinfo.st_mtime = 0;
+ cupsdLogJob(job, CUPSD_LOG_INFO, "Started filter %s (PID %d)", command,
+ pid);
- if (errno != ENOENT)
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to get file information for \"%s\" - %s",
- filename, strerror(errno));
+ argv[6] = NULL;
+ slot = !slot;
}
- if (stat(RequestRoot, &dirinfo))
- {
- dirinfo.st_mtime = 0;
-
- if (errno != ENOENT)
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to get directory information for \"%s\" - %s",
- RequestRoot, strerror(errno));
- }
+ cupsArrayDelete(filters);
+ filters = NULL;
/*
- * Load the most recent source for job data...
+ * Finally, pipe the final output into a backend process if needed...
*/
- if (dirinfo.st_mtime > fileinfo.st_mtime)
+ if (strncmp(job->printer->device_uri, "file:", 5) != 0)
{
- load_request_root();
+ if (job->current_file == 1 || job->printer->remote)
+ {
+ sscanf(job->printer->device_uri, "%254[^:]", scheme);
+ snprintf(command, sizeof(command), "%s/backend/%s", ServerBin, scheme);
- load_next_job_id(filename);
- }
- else
- load_job_cache(filename);
+ /*
+ * See if the backend needs to run as root...
+ */
- /*
- * Clean out old jobs as needed...
- */
+ if (RunUser)
+ backroot = 0;
+ else if (stat(command, &backinfo))
+ backroot = 0;
+ else
+ backroot = !(backinfo.st_mode & (S_IRWXG | S_IRWXO));
- if (MaxJobs > 0 && cupsArrayCount(Jobs) >= MaxJobs)
- cupsdCleanJobs();
-}
+ argv[0] = job->printer->sanitized_device_uri;
+ filterfds[slot][0] = -1;
+ filterfds[slot][1] = -1;
-/*
- * 'cupsdLoadJob()' - Load a single job...
- */
+ pid = cupsdStartProcess(command, argv, envp, filterfds[!slot][0],
+ filterfds[slot][1], job->status_pipes[1],
+ job->back_pipes[1], job->side_pipes[1],
+ backroot, job->profile, job->id, &(job->backend));
-int /* O - 1 on success, 0 on failure */
-cupsdLoadJob(cupsd_job_t *job) /* I - Job */
-{
- char jobfile[1024]; /* Job filename */
- cups_file_t *fp; /* Job file */
- int fileid; /* Current file ID */
- ipp_attribute_t *attr; /* Job attribute */
- const char *dest; /* Destination name */
- cupsd_printer_t *destptr; /* Pointer to destination */
- mime_type_t **filetypes; /* New filetypes array */
- int *compressions; /* New compressions array */
+ if (pid == 0)
+ {
+ abort_message = "Stopping job because the sheduler could not execute "
+ "the backend.";
+
+ goto abort_job;
+ }
+ else
+ {
+ cupsdLogJob(job, CUPSD_LOG_INFO, "Started backend %s (PID %d)",
+ command, pid);
+ }
+ }
+ if (job->current_file == job->num_files)
+ {
+ cupsdClosePipe(job->print_pipes);
+ cupsdClosePipe(job->back_pipes);
+ cupsdClosePipe(job->side_pipes);
- if (job->attrs)
+ close(job->status_pipes[1]);
+ job->status_pipes[1] = -1;
+ }
+ }
+ else
{
- if (job->state_value > IPP_JOB_STOPPED)
- job->access_time = time(NULL);
+ filterfds[slot][0] = -1;
+ filterfds[slot][1] = -1;
- return (1);
+ if (job->current_file == job->num_files)
+ {
+ cupsdClosePipe(job->print_pipes);
+
+ close(job->status_pipes[1]);
+ job->status_pipes[1] = -1;
+ }
}
- if ((job->attrs = ippNew()) == NULL)
+ cupsdClosePipe(filterfds[slot]);
+
+ if (job->printer->remote && job->num_files > 1)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Ran out of memory for job attributes!", job->id);
- return (0);
+ for (i = 0; i < job->num_files; i ++)
+ free(argv[i + 6]);
}
- /*
- * Load job attributes...
- */
+ free(argv);
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] Loading attributes...", job->id);
+ cupsdAddSelect(job->status_buffer->fd, (cupsd_selfunc_t)update_job, NULL,
+ job);
- snprintf(jobfile, sizeof(jobfile), "%s/c%05d", RequestRoot, job->id);
- if ((fp = cupsFileOpen(jobfile, "r")) == NULL)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to open job control file \"%s\" - %s!",
- job->id, jobfile, strerror(errno));
- goto error;
- }
+ cupsdAddEvent(CUPSD_EVENT_JOB_STATE, job->printer, job, "Job #%d started.",
+ job->id);
- if (ippReadIO(fp, (ipp_iocb_t)cupsFileRead, 1, NULL, job->attrs) != IPP_DATA)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to read job control file \"%s\"!", job->id,
- jobfile);
- cupsFileClose(fp);
- goto error;
- }
+ return;
- cupsFileClose(fp);
/*
- * Copy attribute data to the job object...
+ * If we get here, we need to abort the current job and close out all
+ * files and pipes...
*/
- if (!ippFindAttribute(job->attrs, "time-at-creation", IPP_TAG_INTEGER))
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Missing or bad time-at-creation attribute in "
- "control file!", job->id);
- goto error;
- }
+ abort_job:
- if ((job->state = ippFindAttribute(job->attrs, "job-state",
- IPP_TAG_ENUM)) == NULL)
+ for (slot = 0; slot < 2; slot ++)
+ cupsdClosePipe(filterfds[slot]);
+
+ cupsdClosePipe(job->status_pipes);
+ cupsdStatBufDelete(job->status_buffer);
+ job->status_buffer = NULL;
+
+ cupsArrayDelete(filters);
+
+ if (job->printer->remote && job->num_files > 1)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Missing or bad job-state attribute in control "
- "file!", job->id);
- goto error;
+ for (i = 0; i < job->num_files; i ++)
+ free(argv[i + 6]);
}
- job->state_value = (ipp_jstate_t)job->state->values[0].integer;
+ free(argv);
- if (!job->dest)
- {
- if ((attr = ippFindAttribute(job->attrs, "job-printer-uri",
- IPP_TAG_URI)) == NULL)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] No job-printer-uri attribute in control file!",
- job->id);
- goto error;
- }
-
- if ((dest = cupsdValidateDest(attr->values[0].string.text, &(job->dtype),
- &destptr)) == NULL)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to queue job for destination \"%s\"!",
- job->id, attr->values[0].string.text);
- goto error;
- }
-
- cupsdSetString(&job->dest, dest);
- }
- else if ((destptr = cupsdFindDest(job->dest)) == NULL)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to queue job for destination \"%s\"!",
- job->id, job->dest);
- goto error;
- }
-
- job->sheets = ippFindAttribute(job->attrs, "job-media-sheets-completed",
- IPP_TAG_INTEGER);
- job->job_sheets = ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_NAME);
-
- if (!job->priority)
- {
- if ((attr = ippFindAttribute(job->attrs, "job-priority",
- IPP_TAG_INTEGER)) == NULL)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Missing or bad job-priority attribute in "
- "control file!", job->id);
- goto error;
- }
-
- job->priority = attr->values[0].integer;
- }
-
- if (!job->username)
- {
- if ((attr = ippFindAttribute(job->attrs, "job-originating-user-name",
- IPP_TAG_NAME)) == NULL)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Missing or bad job-originating-user-name "
- "attribute in control file!", job->id);
- goto error;
- }
-
- cupsdSetString(&job->username, attr->values[0].string.text);
- }
+ cupsdSetJobState(job, IPP_JOB_STOPPED, CUPSD_JOB_DEFAULT, "%s",
+ abort_message);
+}
- /*
- * Set the job hold-until time and state...
- */
- if (job->state_value == IPP_JOB_HELD)
- {
- if ((attr = ippFindAttribute(job->attrs, "job-hold-until",
- IPP_TAG_KEYWORD)) == NULL)
- attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
+/*
+ * 'cupsdDeleteJob()' - Free all memory used by a job.
+ */
- if (attr)
- cupsdSetJobHoldUntil(job, attr->values[0].string.text);
- else
- {
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
- }
- }
- else if (job->state_value == IPP_JOB_PROCESSING)
- {
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
- }
+void
+cupsdDeleteJob(cupsd_job_t *job, /* I - Job */
+ cupsd_jobaction_t action)/* I - Action */
+{
+ if (job->printer)
+ finalize_job(job);
- if (!job->num_files)
+ if (action == CUPSD_JOB_PURGE)
{
/*
- * Find all the d##### files...
+ * Remove the job info file...
*/
- for (fileid = 1; fileid < 10000; fileid ++)
- {
- snprintf(jobfile, sizeof(jobfile), "%s/d%05d-%03d", RequestRoot,
- job->id, fileid);
-
- if (access(jobfile, 0))
- break;
-
- cupsdLogMessage(CUPSD_LOG_DEBUG,
- "[Job %d] Auto-typing document file \"%s\"...", job->id,
- jobfile);
-
- if (fileid > job->num_files)
- {
- if (job->num_files == 0)
- {
- compressions = (int *)calloc(fileid, sizeof(int));
- filetypes = (mime_type_t **)calloc(fileid, sizeof(mime_type_t *));
- }
- else
- {
- compressions = (int *)realloc(job->compressions,
- sizeof(int) * fileid);
- filetypes = (mime_type_t **)realloc(job->filetypes,
- sizeof(mime_type_t *) *
- fileid);
- }
-
- if (!compressions || !filetypes)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Ran out of memory for job file types!",
- job->id);
- return (1);
- }
-
- job->compressions = compressions;
- job->filetypes = filetypes;
- job->num_files = fileid;
- }
-
- job->filetypes[fileid - 1] = mimeFileType(MimeDatabase, jobfile, NULL,
- job->compressions + fileid - 1);
+ char filename[1024]; /* Job filename */
- if (!job->filetypes[fileid - 1])
- job->filetypes[fileid - 1] = mimeType(MimeDatabase, "application",
- "vnd.cups-raw");
- }
+ snprintf(filename, sizeof(filename), "%s/c%05d", RequestRoot,
+ job->id);
+ unlink(filename);
}
+ cupsdClearString(&job->username);
+ cupsdClearString(&job->dest);
+ cupsdClearString(&job->auth_username);
+ cupsdClearString(&job->auth_domain);
+ cupsdClearString(&job->auth_password);
+
+#ifdef HAVE_GSSAPI
/*
- * Load authentication information as needed...
+ * Destroy the credential cache and clear the KRB5CCNAME env var string.
*/
- if (job->state_value < IPP_JOB_STOPPED)
+ if (job->ccache)
{
- snprintf(jobfile, sizeof(jobfile), "%s/a%05d", RequestRoot, job->id);
-
- cupsdClearString(&job->auth_username);
- cupsdClearString(&job->auth_domain);
- cupsdClearString(&job->auth_password);
-
- if ((fp = cupsFileOpen(jobfile, "r")) != NULL)
- {
- int i, /* Looping var */
- bytes; /* Size of auth data */
- char line[255], /* Line from file */
- data[255]; /* Decoded data */
-
+ krb5_cc_destroy(KerberosContext, job->ccache);
+ job->ccache = NULL;
+ }
- for (i = 0;
- i < destptr->num_auth_info_required &&
- cupsFileGets(fp, line, sizeof(line));
- i ++)
- {
- bytes = sizeof(data);
- httpDecode64_2(data, &bytes, line);
+ cupsdClearString(&job->ccname);
+#endif /* HAVE_GSSAPI */
- if (!strcmp(destptr->auth_info_required[i], "username"))
- cupsdSetStringf(&job->auth_username, "AUTH_USERNAME=%s", data);
- else if (!strcmp(destptr->auth_info_required[i], "domain"))
- cupsdSetStringf(&job->auth_domain, "AUTH_DOMAIN=%s", data);
- else if (!strcmp(destptr->auth_info_required[i], "password"))
- cupsdSetStringf(&job->auth_password, "AUTH_PASSWORD=%s", data);
- }
+ if (job->num_files > 0)
+ {
+ free(job->compressions);
+ free(job->filetypes);
- cupsFileClose(fp);
- }
+ job->num_files = 0;
}
- job->access_time = time(NULL);
- return (1);
-
- /*
- * If we get here then something bad happened...
- */
+ unload_job(job);
- error:
+ cupsArrayRemove(Jobs, job);
+ cupsArrayRemove(ActiveJobs, job);
+ cupsArrayRemove(PrintingJobs, job);
- ippDelete(job->attrs);
- job->attrs = NULL;
- unlink(jobfile);
- return (0);
+ free(job);
}
/*
- * 'cupsdMoveJob()' - Move the specified job to a different destination.
+ * 'cupsdFreeAllJobs()' - Free all jobs from memory.
*/
void
-cupsdMoveJob(cupsd_job_t *job, /* I - Job */
- cupsd_printer_t *p) /* I - Destination printer or class */
+cupsdFreeAllJobs(void)
{
- ipp_attribute_t *attr; /* job-printer-uri attribute */
- const char *olddest; /* Old destination */
- cupsd_printer_t *oldp; /* Old pointer */
-
+ cupsd_job_t *job; /* Current job */
- /*
- * Don't move completed jobs...
- */
- if (job->state_value > IPP_JOB_STOPPED)
+ if (!Jobs)
return;
- /*
- * Get the old destination...
- */
+ cupsdHoldSignals();
- olddest = job->dest;
+ cupsdStopAllJobs(1);
+ cupsdSaveAllJobs();
- if (job->printer)
- oldp = job->printer;
- else
- oldp = cupsdFindDest(olddest);
+ for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
+ job;
+ job = (cupsd_job_t *)cupsArrayNext(Jobs))
+ cupsdDeleteJob(job, CUPSD_JOB_DEFAULT);
- /*
- * Change the destination information...
- */
+ cupsdReleaseSignals();
+}
- if (job->state_value == IPP_JOB_PROCESSING)
- cupsdStopJob(job, 0);
- else
- cupsdLoadJob(job);
- cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, oldp, job,
- "Job #%d moved from %s to %s.", job->id, olddest,
- p->name);
+/*
+ * 'cupsdFindJob()' - Find the specified job.
+ */
- cupsdSetString(&job->dest, p->name);
- job->dtype = p->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_REMOTE |
- CUPS_PRINTER_IMPLICIT);
+cupsd_job_t * /* O - Job data */
+cupsdFindJob(int id) /* I - Job ID */
+{
+ cupsd_job_t key; /* Search key */
- if ((attr = ippFindAttribute(job->attrs, "job-printer-uri",
- IPP_TAG_URI)) != NULL)
- cupsdSetString(&(attr->values[0].string.text), p->uri);
- cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, p, job,
- "Job #%d moved from %s to %s.", job->id, olddest,
- p->name);
+ key.id = id;
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+ return ((cupsd_job_t *)cupsArrayFind(Jobs, &key));
}
/*
- * 'cupsdReleaseJob()' - Release the specified job.
+ * 'cupsdGetPrinterJobCount()' - Get the number of pending, processing,
+ * or held jobs in a printer or class.
*/
-void
-cupsdReleaseJob(cupsd_job_t *job) /* I - Job */
+int /* O - Job count */
+cupsdGetPrinterJobCount(
+ const char *dest) /* I - Printer or class name */
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdReleaseJob: id = %d", job->id);
-
- if (job->state_value == IPP_JOB_HELD)
- {
- /*
- * Add trailing banner as needed...
- */
+ int count; /* Job count */
+ cupsd_job_t *job; /* Current job */
- if (job->pending_timeout)
- cupsdTimeoutJob(job);
- DEBUG_puts("cupsdReleaseJob: setting state to pending...");
+ for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs), count = 0;
+ job;
+ job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
+ if (job->dest && !strcasecmp(job->dest, dest))
+ count ++;
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
- }
+ return (count);
}
/*
- * 'cupsdRestartJob()' - Restart the specified job.
+ * 'cupsdGetUserJobCount()' - Get the number of pending, processing,
+ * or held jobs for a user.
*/
-void
-cupsdRestartJob(cupsd_job_t *job) /* I - Job */
+int /* O - Job count */
+cupsdGetUserJobCount(
+ const char *username) /* I - Username */
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdRestartJob: id = %d", job->id);
-
- if (job->state_value == IPP_JOB_STOPPED || job->num_files)
- {
- ipp_jstate_t old_state; /* Old job state */
-
-
- cupsdLoadJob(job);
-
- old_state = job->state_value;
+ int count; /* Job count */
+ cupsd_job_t *job; /* Current job */
- job->tries = 0;
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+ for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs), count = 0;
+ job;
+ job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
+ if (!strcasecmp(job->username, username))
+ count ++;
- if (old_state > IPP_JOB_STOPPED)
- cupsArrayAdd(ActiveJobs, job);
- }
+ return (count);
}
/*
- * 'cupsdSaveAllJobs()' - Save a summary of all jobs to disk.
+ * 'cupsdLoadAllJobs()' - Load all jobs from disk.
*/
void
-cupsdSaveAllJobs(void)
+cupsdLoadAllJobs(void)
{
- int i; /* Looping var */
- cups_file_t *fp; /* Job cache file */
- char temp[1024]; /* Temporary string */
- cupsd_job_t *job; /* Current job */
- time_t curtime; /* Current time */
- struct tm *curdate; /* Current date */
-
+ char filename[1024]; /* Full filename of job.cache file */
+ struct stat fileinfo, /* Information on job.cache file */
+ dirinfo; /* Information on RequestRoot dir */
- snprintf(temp, sizeof(temp), "%s/job.cache", CacheDir);
- if ((fp = cupsFileOpen(temp, "w")) == NULL)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to create job cache file \"%s\" - %s",
- temp, strerror(errno));
- return;
- }
- cupsdLogMessage(CUPSD_LOG_INFO, "Saving job cache file \"%s\"...", temp);
/*
- * Restrict access to the file...
+ * Create the job arrays as needed...
*/
- fchown(cupsFileNumber(fp), getuid(), Group);
- fchmod(cupsFileNumber(fp), ConfigFilePerm);
+ if (!Jobs)
+ Jobs = cupsArrayNew(compare_jobs, NULL);
+
+ if (!ActiveJobs)
+ ActiveJobs = cupsArrayNew(compare_active_jobs, NULL);
+
+ if (!PrintingJobs)
+ PrintingJobs = cupsArrayNew(compare_jobs, NULL);
/*
- * Write a small header to the file...
+ * See whether the job.cache file is older than the RequestRoot directory...
*/
- curtime = time(NULL);
- curdate = localtime(&curtime);
- strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", curdate);
+ snprintf(filename, sizeof(filename), "%s/job.cache", CacheDir);
- cupsFilePuts(fp, "# Job cache file for " CUPS_SVERSION "\n");
- cupsFilePrintf(fp, "# Written by cupsd on %s\n", temp);
- cupsFilePrintf(fp, "NextJobId %d\n", NextJobId);
+ if (stat(filename, &fileinfo))
+ {
+ fileinfo.st_mtime = 0;
+
+ if (errno != ENOENT)
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Unable to get file information for \"%s\" - %s",
+ filename, strerror(errno));
+ }
+
+ if (stat(RequestRoot, &dirinfo))
+ {
+ dirinfo.st_mtime = 0;
+
+ if (errno != ENOENT)
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Unable to get directory information for \"%s\" - %s",
+ RequestRoot, strerror(errno));
+ }
/*
- * Write each job known to the system...
+ * Load the most recent source for job data...
*/
- for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
- job;
- job = (cupsd_job_t *)cupsArrayNext(Jobs))
+ if (dirinfo.st_mtime > fileinfo.st_mtime)
{
- cupsFilePrintf(fp, "\n", job->id);
- cupsFilePrintf(fp, "State %d\n", job->state_value);
- cupsFilePrintf(fp, "Priority %d\n", job->priority);
- cupsFilePrintf(fp, "Username %s\n", job->username);
- cupsFilePrintf(fp, "Destination %s\n", job->dest);
- cupsFilePrintf(fp, "DestType %d\n", job->dtype);
- cupsFilePrintf(fp, "NumFiles %d\n", job->num_files);
- for (i = 0; i < job->num_files; i ++)
- cupsFilePrintf(fp, "File %d %s/%s %d\n", i + 1, job->filetypes[i]->super,
- job->filetypes[i]->type, job->compressions[i]);
- cupsFilePuts(fp, " \n");
+ load_request_root();
+
+ load_next_job_id(filename);
}
+ else
+ load_job_cache(filename);
- cupsFileClose(fp);
+ /*
+ * Clean out old jobs as needed...
+ */
+
+ if (MaxJobs > 0 && cupsArrayCount(Jobs) >= MaxJobs)
+ cupsdCleanJobs();
}
/*
- * 'cupsdSaveJob()' - Save a job to disk.
+ * 'cupsdLoadJob()' - Load a single job.
*/
-void
-cupsdSaveJob(cupsd_job_t *job) /* I - Job */
+int /* O - 1 on success, 0 on failure */
+cupsdLoadJob(cupsd_job_t *job) /* I - Job */
{
- char filename[1024]; /* Job control filename */
- cups_file_t *fp; /* Job file */
+ char jobfile[1024]; /* Job filename */
+ cups_file_t *fp; /* Job file */
+ int fileid; /* Current file ID */
+ ipp_attribute_t *attr; /* Job attribute */
+ const char *dest; /* Destination name */
+ cupsd_printer_t *destptr; /* Pointer to destination */
+ mime_type_t **filetypes; /* New filetypes array */
+ int *compressions; /* New compressions array */
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p(%d)): job->attrs=%p",
- job, job->id, job->attrs);
+ if (job->attrs)
+ {
+ if (job->state_value > IPP_JOB_STOPPED)
+ job->access_time = time(NULL);
- snprintf(filename, sizeof(filename), "%s/c%05d", RequestRoot, job->id);
+ return (1);
+ }
- if ((fp = cupsFileOpen(filename, "w")) == NULL)
+ if ((job->attrs = ippNew()) == NULL)
{
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to create job control file \"%s\" - %s.",
- job->id, filename, strerror(errno));
- return;
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "Ran out of memory for job attributes!");
+ return (0);
}
- fchmod(cupsFileNumber(fp), 0600);
- fchown(cupsFileNumber(fp), RunUser, Group);
+ /*
+ * Load job attributes...
+ */
- job->attrs->state = IPP_IDLE;
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] Loading attributes...", job->id);
- if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL,
- job->attrs) != IPP_DATA)
+ snprintf(jobfile, sizeof(jobfile), "%s/c%05d", RequestRoot, job->id);
+ if ((fp = cupsFileOpen(jobfile, "r")) == NULL)
+ {
cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unable to write job control file!", job->id);
-
- cupsFileClose(fp);
-
- job->dirty = 0;
-}
-
-
-/*
- * 'cupsdSetJobHoldUntil()' - Set the hold time for a job...
- */
-
-void
-cupsdSetJobHoldUntil(cupsd_job_t *job, /* I - Job */
- const char *when) /* I - When to resume */
-{
- time_t curtime; /* Current time */
- struct tm *curdate; /* Current date */
- int hour; /* Hold hour */
- int minute; /* Hold minute */
- int second; /* Hold second */
+ "[Job %d] Unable to open job control file \"%s\" - %s!",
+ job->id, jobfile, strerror(errno));
+ goto error;
+ }
+ if (ippReadIO(fp, (ipp_iocb_t)cupsFileRead, 1, NULL, job->attrs) != IPP_DATA)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Unable to read job control file \"%s\"!", job->id,
+ jobfile);
+ cupsFileClose(fp);
+ goto error;
+ }
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSetJobHoldUntil(%d, \"%s\")",
- job->id, when);
+ cupsFileClose(fp);
- second = 0;
+ /*
+ * Copy attribute data to the job object...
+ */
- if (!strcmp(when, "indefinite") || !strcmp(when, "auth-info-required"))
+ if (!ippFindAttribute(job->attrs, "time-at-creation", IPP_TAG_INTEGER))
{
- /*
- * Hold indefinitely...
- */
-
- job->hold_until = 0;
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Missing or bad time-at-creation attribute in "
+ "control file!", job->id);
+ goto error;
}
- else if (!strcmp(when, "day-time"))
+
+ if ((job->state = ippFindAttribute(job->attrs, "job-state",
+ IPP_TAG_ENUM)) == NULL)
{
- /*
- * Hold to 6am the next morning unless local time is < 6pm.
- */
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Missing or bad job-state attribute in control "
+ "file!", job->id);
+ goto error;
+ }
- curtime = time(NULL);
- curdate = localtime(&curtime);
+ job->state_value = (ipp_jstate_t)job->state->values[0].integer;
- if (curdate->tm_hour < 18)
- job->hold_until = curtime;
- else
- job->hold_until = curtime +
- ((29 - curdate->tm_hour) * 60 + 59 -
- curdate->tm_min) * 60 + 60 - curdate->tm_sec;
- }
- else if (!strcmp(when, "evening") || !strcmp(when, "night"))
+ if (!job->dest)
{
- /*
- * Hold to 6pm unless local time is > 6pm or < 6am.
- */
+ if ((attr = ippFindAttribute(job->attrs, "job-printer-uri",
+ IPP_TAG_URI)) == NULL)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] No job-printer-uri attribute in control file!",
+ job->id);
+ goto error;
+ }
- curtime = time(NULL);
- curdate = localtime(&curtime);
+ if ((dest = cupsdValidateDest(attr->values[0].string.text, &(job->dtype),
+ &destptr)) == NULL)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Unable to queue job for destination \"%s\"!",
+ job->id, attr->values[0].string.text);
+ goto error;
+ }
- if (curdate->tm_hour < 6 || curdate->tm_hour >= 18)
- job->hold_until = curtime;
- else
- job->hold_until = curtime +
- ((17 - curdate->tm_hour) * 60 + 59 -
- curdate->tm_min) * 60 + 60 - curdate->tm_sec;
+ cupsdSetString(&job->dest, dest);
}
- else if (!strcmp(when, "second-shift"))
+ else if ((destptr = cupsdFindDest(job->dest)) == NULL)
{
- /*
- * Hold to 4pm unless local time is > 4pm.
- */
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Unable to queue job for destination \"%s\"!",
+ job->id, job->dest);
+ goto error;
+ }
- curtime = time(NULL);
- curdate = localtime(&curtime);
+ job->sheets = ippFindAttribute(job->attrs, "job-media-sheets-completed",
+ IPP_TAG_INTEGER);
+ job->job_sheets = ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_NAME);
- if (curdate->tm_hour >= 16)
- job->hold_until = curtime;
- else
- job->hold_until = curtime +
- ((15 - curdate->tm_hour) * 60 + 59 -
- curdate->tm_min) * 60 + 60 - curdate->tm_sec;
+ if (!job->priority)
+ {
+ if ((attr = ippFindAttribute(job->attrs, "job-priority",
+ IPP_TAG_INTEGER)) == NULL)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Missing or bad job-priority attribute in "
+ "control file!", job->id);
+ goto error;
+ }
+
+ job->priority = attr->values[0].integer;
}
- else if (!strcmp(when, "third-shift"))
+
+ if (!job->username)
{
- /*
- * Hold to 12am unless local time is < 8am.
- */
+ if ((attr = ippFindAttribute(job->attrs, "job-originating-user-name",
+ IPP_TAG_NAME)) == NULL)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Missing or bad job-originating-user-name "
+ "attribute in control file!", job->id);
+ goto error;
+ }
- curtime = time(NULL);
- curdate = localtime(&curtime);
+ cupsdSetString(&job->username, attr->values[0].string.text);
+ }
- if (curdate->tm_hour < 8)
- job->hold_until = curtime;
+ /*
+ * Set the job hold-until time and state...
+ */
+
+ if (job->state_value == IPP_JOB_HELD)
+ {
+ if ((attr = ippFindAttribute(job->attrs, "job-hold-until",
+ IPP_TAG_KEYWORD)) == NULL)
+ attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
+
+ if (attr)
+ cupsdSetJobHoldUntil(job, attr->values[0].string.text, CUPSD_JOB_DEFAULT);
else
- job->hold_until = curtime +
- ((23 - curdate->tm_hour) * 60 + 59 -
- curdate->tm_min) * 60 + 60 - curdate->tm_sec;
+ {
+ job->state->values[0].integer = IPP_JOB_PENDING;
+ job->state_value = IPP_JOB_PENDING;
+ }
}
- else if (!strcmp(when, "weekend"))
+ else if (job->state_value == IPP_JOB_PROCESSING)
+ {
+ job->state->values[0].integer = IPP_JOB_PENDING;
+ job->state_value = IPP_JOB_PENDING;
+ }
+
+ if (!job->num_files)
{
/*
- * Hold to weekend unless we are in the weekend.
+ * Find all the d##### files...
*/
- curtime = time(NULL);
- curdate = localtime(&curtime);
+ for (fileid = 1; fileid < 10000; fileid ++)
+ {
+ snprintf(jobfile, sizeof(jobfile), "%s/d%05d-%03d", RequestRoot,
+ job->id, fileid);
- if (curdate->tm_wday == 0 || curdate->tm_wday == 6)
- job->hold_until = curtime;
- else
- job->hold_until = curtime +
- (((5 - curdate->tm_wday) * 24 +
- (17 - curdate->tm_hour)) * 60 + 59 -
- curdate->tm_min) * 60 + 60 - curdate->tm_sec;
+ if (access(jobfile, 0))
+ break;
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG,
+ "[Job %d] Auto-typing document file \"%s\"...", job->id,
+ jobfile);
+
+ if (fileid > job->num_files)
+ {
+ if (job->num_files == 0)
+ {
+ compressions = (int *)calloc(fileid, sizeof(int));
+ filetypes = (mime_type_t **)calloc(fileid, sizeof(mime_type_t *));
+ }
+ else
+ {
+ compressions = (int *)realloc(job->compressions,
+ sizeof(int) * fileid);
+ filetypes = (mime_type_t **)realloc(job->filetypes,
+ sizeof(mime_type_t *) *
+ fileid);
+ }
+
+ if (!compressions || !filetypes)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Ran out of memory for job file types!",
+ job->id);
+ return (1);
+ }
+
+ job->compressions = compressions;
+ job->filetypes = filetypes;
+ job->num_files = fileid;
+ }
+
+ job->filetypes[fileid - 1] = mimeFileType(MimeDatabase, jobfile, NULL,
+ job->compressions + fileid - 1);
+
+ if (!job->filetypes[fileid - 1])
+ job->filetypes[fileid - 1] = mimeType(MimeDatabase, "application",
+ "vnd.cups-raw");
+ }
}
- else if (sscanf(when, "%d:%d:%d", &hour, &minute, &second) >= 2)
+
+ /*
+ * Load authentication information as needed...
+ */
+
+ if (job->state_value < IPP_JOB_STOPPED)
{
- /*
- * Hold to specified GMT time (HH:MM or HH:MM:SS)...
- */
+ snprintf(jobfile, sizeof(jobfile), "%s/a%05d", RequestRoot, job->id);
- curtime = time(NULL);
- curdate = gmtime(&curtime);
+ cupsdClearString(&job->auth_username);
+ cupsdClearString(&job->auth_domain);
+ cupsdClearString(&job->auth_password);
- job->hold_until = curtime +
- ((hour - curdate->tm_hour) * 60 + minute -
- curdate->tm_min) * 60 + second - curdate->tm_sec;
+ if ((fp = cupsFileOpen(jobfile, "r")) != NULL)
+ {
+ int i, /* Looping var */
+ bytes; /* Size of auth data */
+ char line[255], /* Line from file */
+ data[255]; /* Decoded data */
- /*
- * Hold until next day as needed...
- */
- if (job->hold_until < curtime)
- job->hold_until += 24 * 60 * 60;
+ for (i = 0;
+ i < destptr->num_auth_info_required &&
+ cupsFileGets(fp, line, sizeof(line));
+ i ++)
+ {
+ bytes = sizeof(data);
+ httpDecode64_2(data, &bytes, line);
+
+ if (!strcmp(destptr->auth_info_required[i], "username"))
+ cupsdSetStringf(&job->auth_username, "AUTH_USERNAME=%s", data);
+ else if (!strcmp(destptr->auth_info_required[i], "domain"))
+ cupsdSetStringf(&job->auth_domain, "AUTH_DOMAIN=%s", data);
+ else if (!strcmp(destptr->auth_info_required[i], "password"))
+ cupsdSetStringf(&job->auth_password, "AUTH_PASSWORD=%s", data);
+ }
+
+ cupsFileClose(fp);
+ }
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSetJobHoldUntil: hold_until = %d",
- (int)job->hold_until);
+ job->access_time = time(NULL);
+ return (1);
+
+ /*
+ * If we get here then something bad happened...
+ */
+
+ error:
+
+ ippDelete(job->attrs);
+ job->attrs = NULL;
+ unlink(jobfile);
+
+ return (0);
}
/*
- * 'cupsdSetJobPriority()' - Set the priority of a job, moving it up/down in
- * the list as needed.
+ * 'cupsdMoveJob()' - Move the specified job to a different destination.
*/
void
-cupsdSetJobPriority(
- cupsd_job_t *job, /* I - Job ID */
- int priority) /* I - New priority (0 to 100) */
+cupsdMoveJob(cupsd_job_t *job, /* I - Job */
+ cupsd_printer_t *p) /* I - Destination printer or class */
{
- ipp_attribute_t *attr; /* Job attribute */
+ ipp_attribute_t *attr; /* job-printer-uri attribute */
+ const char *olddest; /* Old destination */
+ cupsd_printer_t *oldp; /* Old pointer */
/*
- * Don't change completed jobs...
+ * Don't move completed jobs...
*/
- if (job->state_value >= IPP_JOB_PROCESSING)
+ if (job->state_value > IPP_JOB_STOPPED)
return;
/*
- * Set the new priority and re-add the job into the active list...
+ * Get the old destination...
*/
- cupsArrayRemove(ActiveJobs, job);
-
- job->priority = priority;
+ olddest = job->dest;
- if ((attr = ippFindAttribute(job->attrs, "job-priority",
- IPP_TAG_INTEGER)) != NULL)
- attr->values[0].integer = priority;
+ if (job->printer)
+ oldp = job->printer;
else
- ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-priority",
- priority);
+ oldp = cupsdFindDest(olddest);
- cupsArrayAdd(ActiveJobs, job);
+ /*
+ * Change the destination information...
+ */
+
+ cupsdSetJobState(job, IPP_JOB_PENDING, CUPSD_JOB_DEFAULT,
+ "Stopping job prior to move.");
+
+ cupsdAddEvent(CUPSD_EVENT_JOB_CONFIG_CHANGED, oldp, job,
+ "Job #%d moved from %s to %s.", job->id, olddest,
+ p->name);
+
+ cupsdSetString(&job->dest, p->name);
+ job->dtype = p->type & (CUPS_PRINTER_CLASS | CUPS_PRINTER_REMOTE |
+ CUPS_PRINTER_IMPLICIT);
+
+ if ((attr = ippFindAttribute(job->attrs, "job-printer-uri",
+ IPP_TAG_URI)) != NULL)
+ cupsdSetString(&(attr->values[0].string.text), p->uri);
+
+ cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, p, job,
+ "Job #%d moved from %s to %s.", job->id, olddest,
+ p->name);
job->dirty = 1;
cupsdMarkDirty(CUPSD_DIRTY_JOBS);
@@ -1767,1117 +1744,966 @@ cupsdSetJobPriority(
/*
- * 'cupsdStopAllJobs()' - Stop all print jobs.
+ * 'cupsdReleaseJob()' - Release the specified job.
*/
void
-cupsdStopAllJobs(int force) /* I - 1 = Force all filters to stop */
+cupsdReleaseJob(cupsd_job_t *job) /* I - Job */
{
- cupsd_job_t *job; /* Current job */
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdReleaseJob(job=%p(%d))", job,
+ job->id);
+ if (job->state_value == IPP_JOB_HELD)
+ {
+ /*
+ * Add trailing banner as needed...
+ */
- DEBUG_puts("cupsdStopAllJobs()");
+ if (job->pending_timeout)
+ cupsdTimeoutJob(job);
- for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
- job;
- job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
- if (job->state_value == IPP_JOB_PROCESSING)
- {
- cupsdStopJob(job, force);
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
- }
+ cupsdSetJobState(job, IPP_JOB_PENDING, CUPSD_JOB_DEFAULT,
+ "Job released by user.");
+ }
}
/*
- * 'cupsdStopJob()' - Stop a print job.
+ * 'cupsdRestartJob()' - Restart the specified job.
*/
void
-cupsdStopJob(cupsd_job_t *job, /* I - Job */
- int force) /* I - 1 = Force all filters to stop */
+cupsdRestartJob(cupsd_job_t *job) /* I - Job */
{
- int i; /* Looping var */
-
-
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] cupsdStopJob: force = %d",
- job->id, force);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdRestartJob(job=%p(%d))", job,
+ job->id);
- if (job->state_value != IPP_JOB_PROCESSING)
- return;
-
- FilterLevel -= job->cost;
+ if (job->state_value == IPP_JOB_STOPPED || job->num_files)
+ cupsdSetJobState(job, IPP_JOB_PENDING, CUPSD_JOB_DEFAULT,
+ "Job restarted by user.");
+}
- if (job->printer->state == IPP_PRINTER_PROCESSING)
- cupsdSetPrinterState(job->printer, IPP_PRINTER_IDLE, 0);
- job->state->values[0].integer = IPP_JOB_STOPPED;
- job->state_value = IPP_JOB_STOPPED;
- job->printer->job = NULL;
- job->printer = NULL;
+/*
+ * 'cupsdSaveAllJobs()' - Save a summary of all jobs to disk.
+ */
- job->current_file --;
+void
+cupsdSaveAllJobs(void)
+{
+ int i; /* Looping var */
+ cups_file_t *fp; /* Job cache file */
+ char temp[1024]; /* Temporary string */
+ cupsd_job_t *job; /* Current job */
+ time_t curtime; /* Current time */
+ struct tm *curdate; /* Current date */
- for (i = 0; job->filters[i]; i ++)
- if (job->filters[i] > 0)
- {
- cupsdEndProcess(job->filters[i], force);
- if (force)
- job->filters[i] = 0;
- }
- if (job->backend > 0)
+ snprintf(temp, sizeof(temp), "%s/job.cache", CacheDir);
+ if ((fp = cupsFileOpen(temp, "w")) == NULL)
{
- cupsdEndProcess(job->backend, force);
- if (force)
- job->backend = 0;
- }
-
- if (!force)
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Unable to create job cache file \"%s\" - %s",
+ temp, strerror(errno));
return;
+ }
- cupsdDestroyProfile(job->profile);
- job->profile = NULL;
+ cupsdLogMessage(CUPSD_LOG_INFO, "Saving job cache file \"%s\"...", temp);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] Closing print pipes [ %d %d ]...",
- job->id, job->print_pipes[0], job->print_pipes[1]);
+ /*
+ * Restrict access to the file...
+ */
- cupsdClosePipe(job->print_pipes);
+ fchown(cupsFileNumber(fp), getuid(), Group);
+ fchmod(cupsFileNumber(fp), ConfigFilePerm);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] Closing back pipes [ %d %d ]...",
- job->id, job->back_pipes[0], job->back_pipes[1]);
+ /*
+ * Write a small header to the file...
+ */
- cupsdClosePipe(job->back_pipes);
+ curtime = time(NULL);
+ curdate = localtime(&curtime);
+ strftime(temp, sizeof(temp) - 1, "%Y-%m-%d %H:%M", curdate);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "[Job %d] Closing side pipes [ %d %d ]...",
- job->id, job->side_pipes[0], job->side_pipes[1]);
+ cupsFilePuts(fp, "# Job cache file for " CUPS_SVERSION "\n");
+ cupsFilePrintf(fp, "# Written by cupsd on %s\n", temp);
+ cupsFilePrintf(fp, "NextJobId %d\n", NextJobId);
- cupsdClosePipe(job->side_pipes);
+ /*
+ * Write each job known to the system...
+ */
- if (job->status_buffer)
+ for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
+ job;
+ job = (cupsd_job_t *)cupsArrayNext(Jobs))
{
- /*
- * Close the pipe and clear the input bit.
- */
-
- cupsdRemoveSelect(job->status_buffer->fd);
-
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "[Job %d] Closing status pipes [ %d %d ]...",
- job->id, job->status_pipes[0], job->status_pipes[1]);
-
- cupsdClosePipe(job->status_pipes);
- cupsdStatBufDelete(job->status_buffer);
-
- job->status_buffer = NULL;
+ cupsFilePrintf(fp, "\n", job->id);
+ cupsFilePrintf(fp, "State %d\n", job->state_value);
+ cupsFilePrintf(fp, "Priority %d\n", job->priority);
+ cupsFilePrintf(fp, "Username %s\n", job->username);
+ cupsFilePrintf(fp, "Destination %s\n", job->dest);
+ cupsFilePrintf(fp, "DestType %d\n", job->dtype);
+ cupsFilePrintf(fp, "NumFiles %d\n", job->num_files);
+ for (i = 0; i < job->num_files; i ++)
+ cupsFilePrintf(fp, "File %d %s/%s %d\n", i + 1, job->filetypes[i]->super,
+ job->filetypes[i]->type, job->compressions[i]);
+ cupsFilePuts(fp, " \n");
}
+
+ cupsFileClose(fp);
}
/*
- * 'cupsdUnloadCompletedJobs()' - Flush completed job history from memory.
+ * 'cupsdSaveJob()' - Save a job to disk.
*/
void
-cupsdUnloadCompletedJobs(void)
+cupsdSaveJob(cupsd_job_t *job) /* I - Job */
{
- cupsd_job_t *job; /* Current job */
- time_t expire; /* Expiration time */
-
-
- expire = time(NULL) - 60;
-
- for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
- job;
- job = (cupsd_job_t *)cupsArrayNext(Jobs))
- if (job->attrs && job->state_value >= IPP_JOB_STOPPED &&
- job->access_time < expire)
- {
- if (job->dirty)
- cupsdSaveJob(job);
+ char filename[1024]; /* Job control filename */
+ cups_file_t *fp; /* Job file */
- unload_job(job);
- }
-}
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSaveJob(job=%p(%d)): job->attrs=%p",
+ job, job->id, job->attrs);
-/*
- * 'compare_active_jobs()' - Compare the job IDs and priorities of two jobs.
- */
+ snprintf(filename, sizeof(filename), "%s/c%05d", RequestRoot, job->id);
-static int /* O - Difference */
-compare_active_jobs(void *first, /* I - First job */
- void *second, /* I - Second job */
- void *data) /* I - App data (not used) */
-{
- int diff; /* Difference */
+ if ((fp = cupsFileOpen(filename, "w")) == NULL)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Unable to create job control file \"%s\" - %s.",
+ job->id, filename, strerror(errno));
+ return;
+ }
+ fchmod(cupsFileNumber(fp), 0600);
+ fchown(cupsFileNumber(fp), RunUser, Group);
- if ((diff = ((cupsd_job_t *)second)->priority -
- ((cupsd_job_t *)first)->priority) != 0)
- return (diff);
- else
- return (((cupsd_job_t *)first)->id - ((cupsd_job_t *)second)->id);
-}
+ job->attrs->state = IPP_IDLE;
+ if (ippWriteIO(fp, (ipp_iocb_t)cupsFileWrite, 1, NULL,
+ job->attrs) != IPP_DATA)
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Unable to write job control file!", job->id);
-/*
- * 'compare_jobs()' - Compare the job IDs of two jobs.
- */
+ cupsFileClose(fp);
-static int /* O - Difference */
-compare_jobs(void *first, /* I - First job */
- void *second, /* I - Second job */
- void *data) /* I - App data (not used) */
-{
- return (((cupsd_job_t *)first)->id - ((cupsd_job_t *)second)->id);
+ job->dirty = 0;
}
/*
- * 'ipp_length()' - Compute the size of the buffer needed to hold
- * the textual IPP attributes.
+ * 'cupsdSetJobHoldUntil()' - Set the hold time for a job.
*/
-static int /* O - Size of attribute buffer */
-ipp_length(ipp_t *ipp) /* I - IPP request */
+void
+cupsdSetJobHoldUntil(cupsd_job_t *job, /* I - Job */
+ const char *when, /* I - When to resume */
+ int update)/* I - Update job-hold-until attr? */
{
- int bytes; /* Number of bytes */
- int i; /* Looping var */
- ipp_attribute_t *attr; /* Current attribute */
-
+ time_t curtime; /* Current time */
+ struct tm *curdate; /* Current date */
+ int hour; /* Hold hour */
+ int minute; /* Hold minute */
+ int second = 0; /* Hold second */
- /*
- * Loop through all attributes...
- */
- bytes = 0;
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "cupsdSetJobHoldUntil(job=%p(%d), when=\"%s\", update=%d)",
+ job, job->id, when, update);
- for (attr = ipp->attrs; attr != NULL; attr = attr->next)
+ if (update)
{
/*
- * Skip attributes that won't be sent to filters...
+ * Update the job-hold-until attribute...
*/
- 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;
+ ipp_attribute_t *attr; /* job-hold-until attribute */
- if (strncmp(attr->name, "time-", 5) == 0)
- continue;
+ if ((attr = ippFindAttribute(job->attrs, "job-hold-until",
+ IPP_TAG_KEYWORD)) == NULL)
+ attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
- /*
- * Add space for a leading space and commas between each value.
- * For the first attribute, the leading space isn't used, so the
- * extra byte can be used as the nul terminator...
- */
+ if (attr)
+ cupsdSetString(&(attr->values[0].string.text), when);
+ else
+ attr = ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_KEYWORD,
+ "job-hold-until", NULL, when);
- bytes ++; /* " " separator */
- bytes += attr->num_values; /* "," separators */
+ if (attr)
+ {
+ if (isdigit(when[0] & 255))
+ attr->value_tag = IPP_TAG_NAME;
+ else
+ attr->value_tag = IPP_TAG_KEYWORD;
+
+ job->dirty = 1;
+ cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+ }
+ }
+ /*
+ * Update the hold time...
+ */
+
+ if (!strcmp(when, "indefinite") || !strcmp(when, "auth-info-required"))
+ {
/*
- * Boolean attributes appear as "foo,nofoo,foo,nofoo", while
- * other attributes appear as "foo=value1,value2,...,valueN".
+ * Hold indefinitely...
*/
- if (attr->value_tag != IPP_TAG_BOOLEAN)
- bytes += strlen(attr->name);
- else
- bytes += attr->num_values * strlen(attr->name);
-
+ job->hold_until = 0;
+ }
+ else if (!strcmp(when, "day-time"))
+ {
/*
- * Now add the size required for each value in the attribute...
+ * Hold to 6am the next morning unless local time is < 6pm.
*/
- switch (attr->value_tag)
- {
- case IPP_TAG_INTEGER :
- case IPP_TAG_ENUM :
- /*
- * Minimum value of a signed integer is -2147483647, or 11 digits.
- */
+ curtime = time(NULL);
+ curdate = localtime(&curtime);
- bytes += attr->num_values * 11;
- break;
+ if (curdate->tm_hour < 18)
+ job->hold_until = curtime;
+ else
+ job->hold_until = curtime +
+ ((29 - curdate->tm_hour) * 60 + 59 -
+ curdate->tm_min) * 60 + 60 - curdate->tm_sec;
+ }
+ else if (!strcmp(when, "evening") || !strcmp(when, "night"))
+ {
+ /*
+ * Hold to 6pm unless local time is > 6pm or < 6am.
+ */
- case IPP_TAG_BOOLEAN :
- /*
- * Add two bytes for each false ("no") value...
- */
+ curtime = time(NULL);
+ curdate = localtime(&curtime);
- for (i = 0; i < attr->num_values; i ++)
- if (!attr->values[i].boolean)
- bytes += 2;
- break;
+ if (curdate->tm_hour < 6 || curdate->tm_hour >= 18)
+ job->hold_until = curtime;
+ else
+ job->hold_until = curtime +
+ ((17 - curdate->tm_hour) * 60 + 59 -
+ curdate->tm_min) * 60 + 60 - curdate->tm_sec;
+ }
+ else if (!strcmp(when, "second-shift"))
+ {
+ /*
+ * Hold to 4pm unless local time is > 4pm.
+ */
- case IPP_TAG_RANGE :
- /*
- * A range is two signed integers separated by a hyphen, or
- * 23 characters max.
- */
+ curtime = time(NULL);
+ curdate = localtime(&curtime);
- bytes += attr->num_values * 23;
- break;
+ if (curdate->tm_hour >= 16)
+ job->hold_until = curtime;
+ else
+ job->hold_until = curtime +
+ ((15 - curdate->tm_hour) * 60 + 59 -
+ curdate->tm_min) * 60 + 60 - curdate->tm_sec;
+ }
+ else if (!strcmp(when, "third-shift"))
+ {
+ /*
+ * Hold to 12am unless local time is < 8am.
+ */
- case IPP_TAG_RESOLUTION :
- /*
- * A resolution is two signed integers separated by an "x" and
- * suffixed by the units, or 26 characters max.
- */
+ curtime = time(NULL);
+ curdate = localtime(&curtime);
- bytes += attr->num_values * 26;
- break;
+ if (curdate->tm_hour < 8)
+ job->hold_until = curtime;
+ else
+ job->hold_until = curtime +
+ ((23 - curdate->tm_hour) * 60 + 59 -
+ curdate->tm_min) * 60 + 60 - curdate->tm_sec;
+ }
+ else if (!strcmp(when, "weekend"))
+ {
+ /*
+ * Hold to weekend unless we are in the weekend.
+ */
- case IPP_TAG_STRING :
- case IPP_TAG_TEXT :
- case IPP_TAG_NAME :
- case IPP_TAG_KEYWORD :
- case IPP_TAG_CHARSET :
- case IPP_TAG_LANGUAGE :
- case IPP_TAG_URI :
- /*
- * Strings can contain characters that need quoting. We need
- * at least 2 * len + 2 characters to cover the quotes and
- * any backslashes in the string.
- */
+ curtime = time(NULL);
+ curdate = localtime(&curtime);
- for (i = 0; i < attr->num_values; i ++)
- bytes += 2 * strlen(attr->values[i].string.text) + 2;
- break;
+ if (curdate->tm_wday == 0 || curdate->tm_wday == 6)
+ job->hold_until = curtime;
+ else
+ job->hold_until = curtime +
+ (((5 - curdate->tm_wday) * 24 +
+ (17 - curdate->tm_hour)) * 60 + 59 -
+ curdate->tm_min) * 60 + 60 - curdate->tm_sec;
+ }
+ else if (sscanf(when, "%d:%d:%d", &hour, &minute, &second) >= 2)
+ {
+ /*
+ * Hold to specified GMT time (HH:MM or HH:MM:SS)...
+ */
- default :
- break; /* anti-compiler-warning-code */
- }
+ curtime = time(NULL);
+ curdate = gmtime(&curtime);
+
+ job->hold_until = curtime +
+ ((hour - curdate->tm_hour) * 60 + minute -
+ curdate->tm_min) * 60 + second - curdate->tm_sec;
+
+ /*
+ * Hold until next day as needed...
+ */
+
+ if (job->hold_until < curtime)
+ job->hold_until += 24 * 60 * 60;
}
- return (bytes);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSetJobHoldUntil: hold_until=%d",
+ (int)job->hold_until);
}
/*
- * 'load_job_cache()' - Load jobs from the job.cache file.
+ * 'cupsdSetJobPriority()' - Set the priority of a job, moving it up/down in
+ * the list as needed.
*/
-static void
-load_job_cache(const char *filename) /* I - job.cache filename */
+void
+cupsdSetJobPriority(
+ cupsd_job_t *job, /* I - Job ID */
+ int priority) /* I - New priority (0 to 100) */
{
- cups_file_t *fp; /* job.cache file */
- char line[1024], /* Line buffer */
- *value; /* Value on line */
- int linenum; /* Line number in file */
- cupsd_job_t *job; /* Current job */
- int jobid; /* Job ID */
- char jobfile[1024]; /* Job filename */
+ ipp_attribute_t *attr; /* Job attribute */
/*
- * Open the job.cache file...
+ * Don't change completed jobs...
*/
- if ((fp = cupsFileOpen(filename, "r")) == NULL)
- {
- if (errno != ENOENT)
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to open job cache file \"%s\": %s",
- filename, strerror(errno));
-
- load_request_root();
-
+ if (job->state_value >= IPP_JOB_PROCESSING)
return;
- }
/*
- * Read entries from the job cache file and create jobs as needed.
+ * Set the new priority and re-add the job into the active list...
*/
- cupsdLogMessage(CUPSD_LOG_INFO, "Loading job cache file \"%s\"...",
- filename);
+ cupsArrayRemove(ActiveJobs, job);
- linenum = 0;
- job = NULL;
+ job->priority = priority;
- while (cupsFileGetConf(fp, line, sizeof(line), &value, &linenum))
- {
- if (!strcasecmp(line, "NextJobId"))
- {
- if (value)
- NextJobId = atoi(value);
- }
- else if (!strcasecmp(line, " directive on line %d!",
- linenum);
- continue;
- }
+ if ((attr = ippFindAttribute(job->attrs, "job-priority",
+ IPP_TAG_INTEGER)) != NULL)
+ attr->values[0].integer = priority;
+ else
+ ippAddInteger(job->attrs, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-priority",
+ priority);
- if (!value)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR, "Missing job ID on line %d!", linenum);
- continue;
- }
+ cupsArrayAdd(ActiveJobs, job);
- jobid = atoi(value);
+ job->dirty = 1;
+ cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+}
- if (jobid < 1)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR, "Bad job ID %d on line %d!", jobid,
- linenum);
- continue;
- }
- snprintf(jobfile, sizeof(jobfile), "%s/c%05d", RequestRoot, jobid);
- if (access(jobfile, 0))
- {
- cupsdLogMessage(CUPSD_LOG_ERROR, "[Job %d] Files have gone away!",
- jobid);
- continue;
- }
+/*
+ * 'cupsdSetJobState()' - Set the state of the specified print job.
+ */
- job = calloc(1, sizeof(cupsd_job_t));
- if (!job)
- {
- cupsdLogMessage(CUPSD_LOG_EMERG,
- "[Job %d] Unable to allocate memory for job!", jobid);
- break;
- }
+void
+cupsdSetJobState(
+ cupsd_job_t *job, /* I - Job to cancel */
+ ipp_jstate_t newstate, /* I - New job state */
+ cupsd_jobaction_t action, /* I - Action to take */
+ const char *message, /* I - Message to log */
+ ...) /* I - Additional arguments as needed */
+{
+ int i; /* Looping var */
+ ipp_jstate_t oldstate; /* Old state */
+ char filename[1024]; /* Job filename */
+ ipp_attribute_t *attr; /* Job attribute */
- job->id = jobid;
- job->back_pipes[0] = -1;
- job->back_pipes[1] = -1;
- job->print_pipes[0] = -1;
- job->print_pipes[1] = -1;
- job->side_pipes[0] = -1;
- job->side_pipes[1] = -1;
- job->status_pipes[0] = -1;
- job->status_pipes[1] = -1;
- cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] Loading from cache...",
- job->id);
- }
- else if (!job)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Missing directive on line %d!", linenum);
- continue;
- }
- else if (!strcasecmp(line, " "))
- {
- cupsArrayAdd(Jobs, job);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "cupsdSetJobState(job=%p(%d), state=%d, newstate=%d, "
+ "action=%d, message=\"%s\")", job, job->id, job->state_value,
+ newstate, action, message ? message : "(null)");
- if (job->state_value <= IPP_JOB_STOPPED)
- {
- cupsArrayAdd(ActiveJobs, job);
- cupsdLoadJob(job);
- }
- job = NULL;
- }
- else if (!value)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR, "Missing value on line %d!", linenum);
- continue;
- }
- else if (!strcasecmp(line, "State"))
- {
- job->state_value = (ipp_jstate_t)atoi(value);
+ /*
+ * Make sure we have the job attributes...
+ */
- if (job->state_value < IPP_JOB_PENDING)
- job->state_value = IPP_JOB_PENDING;
- else if (job->state_value > IPP_JOB_COMPLETED)
- job->state_value = IPP_JOB_COMPLETED;
- }
- else if (!strcasecmp(line, "Priority"))
- {
- job->priority = atoi(value);
- }
- else if (!strcasecmp(line, "Username"))
- {
- cupsdSetString(&job->username, value);
- }
- else if (!strcasecmp(line, "Destination"))
- {
- cupsdSetString(&job->dest, value);
- }
- else if (!strcasecmp(line, "DestType"))
- {
- job->dtype = (cups_ptype_t)atoi(value);
- }
- else if (!strcasecmp(line, "NumFiles"))
- {
- job->num_files = atoi(value);
+ if (!cupsdLoadJob(job))
+ return;
- if (job->num_files < 0)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR, "Bad NumFiles value %d on line %d!",
- job->num_files, linenum);
- job->num_files = 0;
- continue;
- }
+ /*
+ * Don't do anything if the state is unchanged...
+ */
- if (job->num_files > 0)
- {
- snprintf(jobfile, sizeof(jobfile), "%s/d%05d-001", RequestRoot,
- job->id);
- if (access(jobfile, 0))
- {
- cupsdLogMessage(CUPSD_LOG_INFO, "[Job %d] Data files have gone away!",
- job->id);
- job->num_files = 0;
- continue;
- }
+ if (newstate == (oldstate = job->state_value))
+ return;
- job->filetypes = calloc(job->num_files, sizeof(mime_type_t *));
- job->compressions = calloc(job->num_files, sizeof(int));
+ /*
+ * Stop any processes that are working on the current job...
+ */
- if (!job->filetypes || !job->compressions)
+ if (oldstate == IPP_JOB_PROCESSING)
+ stop_job(job, action != CUPSD_JOB_DEFAULT);
+
+ /*
+ * Set the new job state...
+ */
+
+ job->state->values[0].integer = newstate;
+ job->state_value = newstate;
+
+ switch (newstate)
+ {
+ case IPP_JOB_PENDING :
+ /*
+ * Update job-hold-until as needed...
+ */
+
+ if ((attr = ippFindAttribute(job->attrs, "job-hold-until",
+ IPP_TAG_KEYWORD)) == NULL)
+ attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
+
+ if (attr)
{
- cupsdLogMessage(CUPSD_LOG_EMERG,
- "[Job %d] Unable to allocate memory for %d files!",
- job->id, job->num_files);
- break;
+ attr->value_tag = IPP_TAG_KEYWORD;
+ cupsdSetString(&(attr->values[0].string.text), "no-hold");
}
- }
- }
- else if (!strcasecmp(line, "File"))
- {
- int number, /* File number */
- compression; /* Compression value */
- char super[MIME_MAX_SUPER], /* MIME super type */
- type[MIME_MAX_TYPE]; /* MIME type */
+ default :
+ break;
- if (sscanf(value, "%d%*[ \t]%15[^/]/%255s%d", &number, super, type,
- &compression) != 4)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR, "Bad File on line %d!", linenum);
- continue;
- }
+ case IPP_JOB_ABORTED :
+ case IPP_JOB_CANCELED :
+ case IPP_JOB_COMPLETED :
+ set_time(job, "time-at-completed");
+ break;
+ }
- if (number < 1 || number > job->num_files)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR, "Bad File number %d on line %d!",
- number, linenum);
- continue;
- }
+ /*
+ * Log message as needed...
+ */
- number --;
+ if (message)
+ {
+ char buffer[2048]; /* Message buffer */
+ va_list ap; /* Pointer to additional arguments */
- job->compressions[number] = compression;
- job->filetypes[number] = mimeType(MimeDatabase, super, type);
+ va_start(ap, message);
+ vsnprintf(buffer, sizeof(buffer), message, ap);
+ va_end(ap);
- if (!job->filetypes[number])
- {
+ if (newstate > IPP_JOB_STOPPED)
+ cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job, "%s", buffer);
+ else
+ cupsdAddEvent(CUPSD_EVENT_JOB_STATE, job->printer, job, "%s", buffer);
+
+ if (newstate == IPP_JOB_STOPPED || newstate == IPP_JOB_ABORTED)
+ cupsdLogJob(job, CUPSD_LOG_ERROR, "%s", buffer);
+ else
+ cupsdLogJob(job, CUPSD_LOG_INFO, "%s", buffer);
+ }
+
+ /*
+ * Handle post-state-change actions...
+ */
+
+ switch (newstate)
+ {
+ case IPP_JOB_PROCESSING :
/*
- * If the original MIME type is unknown, auto-type it!
+ * Add the job to the "printing" list...
*/
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "[Job %d] Unknown MIME type %s/%s for file %d!",
- job->id, super, type, number + 1);
+ if (!cupsArrayFind(PrintingJobs, job))
+ cupsArrayAdd(PrintingJobs, job);
- snprintf(jobfile, sizeof(jobfile), "%s/d%05d-%03d", RequestRoot,
- job->id, number + 1);
- job->filetypes[number] = mimeFileType(MimeDatabase, jobfile, NULL,
- job->compressions + number);
+ /*
+ * Set the processing time...
+ */
+ set_time(job, "time-at-processing");
+
+ case IPP_JOB_PENDING :
+ case IPP_JOB_HELD :
+ case IPP_JOB_STOPPED :
/*
- * If that didn't work, assume it is raw...
+ * Make sure the job is in the active list...
*/
- if (!job->filetypes[number])
- job->filetypes[number] = mimeType(MimeDatabase, "application",
- "vnd.cups-raw");
- }
- }
- else
- cupsdLogMessage(CUPSD_LOG_ERROR, "Unknown %s directive on line %d!",
- line, linenum);
- }
+ if (!cupsArrayFind(ActiveJobs, job))
+ cupsArrayAdd(ActiveJobs, job);
- cupsFileClose(fp);
-}
+ /*
+ * Save the job state to disk...
+ */
+ job->dirty = 1;
+ cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+ break;
-/*
- * 'load_next_job_id()' - Load the NextJobId value from the job.cache file.
- */
+ case IPP_JOB_ABORTED :
+ case IPP_JOB_CANCELED :
+ case IPP_JOB_COMPLETED :
+ /*
+ * Expire job subscriptions since the job is now "completed"...
+ */
-static void
-load_next_job_id(const char *filename) /* I - job.cache filename */
-{
- cups_file_t *fp; /* job.cache file */
- char line[1024], /* Line buffer */
- *value; /* Value on line */
- int linenum; /* Line number in file */
- int next_job_id; /* NextJobId value from line */
+ cupsdExpireSubscriptions(NULL, job);
+ /*
+ * Remove the job from the active list...
+ */
- /*
- * Read the NextJobId directive from the job.cache file and use
- * the value (if any).
- */
+ cupsArrayRemove(ActiveJobs, job);
- if ((fp = cupsFileOpen(filename, "r")) == NULL)
- {
- if (errno != ENOENT)
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to open job cache file \"%s\": %s",
- filename, strerror(errno));
+#ifdef __APPLE__
+ /*
+ * If we are going to sleep and the PrintingJobs count is now 0, allow the
+ * sleep to happen immediately...
+ */
- return;
- }
+ if (Sleeping && cupsArrayCount(PrintingJobs) == 0)
+ cupsdAllowSleep();
+#endif /* __APPLE__ */
- cupsdLogMessage(CUPSD_LOG_INFO,
- "Loading NextJobId from job cache file \"%s\"...", filename);
+ /*
+ * Remove any authentication data...
+ */
- linenum = 0;
+ snprintf(filename, sizeof(filename), "%s/a%05d", RequestRoot, job->id);
+ if (cupsdRemoveFile(filename) && errno != ENOENT)
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Unable to remove authentication cache: %s",
+ strerror(errno));
- while (cupsFileGetConf(fp, line, sizeof(line), &value, &linenum))
- {
- if (!strcasecmp(line, "NextJobId"))
- {
- if (value)
- {
- next_job_id = atoi(value);
+ cupsdClearString(&job->auth_username);
+ cupsdClearString(&job->auth_domain);
+ cupsdClearString(&job->auth_password);
- if (next_job_id > NextJobId)
- NextJobId = next_job_id;
- }
- break;
- }
- }
+#ifdef HAVE_GSSAPI
+ /*
+ * Destroy the credential cache and clear the KRB5CCNAME env var string.
+ */
- cupsFileClose(fp);
-}
+ if (job->ccache)
+ {
+ krb5_cc_destroy(KerberosContext, job->ccache);
+ job->ccache = NULL;
+ }
+ cupsdClearString(&job->ccname);
+#endif /* HAVE_GSSAPI */
-/*
- * 'load_request_root()' - Load jobs from the RequestRoot directory.
- */
+ /*
+ * Remove the print file for good if we aren't preserving jobs or
+ * files...
+ */
-static void
-load_request_root(void)
-{
- cups_dir_t *dir; /* Directory */
- cups_dentry_t *dent; /* Directory entry */
- cupsd_job_t *job; /* New job */
+ if (!JobHistory || !JobFiles || action == CUPSD_JOB_PURGE)
+ {
+ for (i = 1; i <= job->num_files; i ++)
+ {
+ snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot,
+ job->id, i);
+ unlink(filename);
+ }
+ if (job->num_files > 0)
+ {
+ free(job->filetypes);
+ free(job->compressions);
- /*
- * Open the requests directory...
- */
+ job->num_files = 0;
+ job->filetypes = NULL;
+ job->compressions = NULL;
+ }
+ }
- cupsdLogMessage(CUPSD_LOG_DEBUG, "Scanning %s for jobs...", RequestRoot);
+ if (JobHistory && action != CUPSD_JOB_PURGE)
+ {
+ /*
+ * Save job state info...
+ */
- if ((dir = cupsDirOpen(RequestRoot)) == NULL)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR,
- "Unable to open spool directory \"%s\": %s",
- RequestRoot, strerror(errno));
- return;
+ job->dirty = 1;
+ cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+ }
+ else if (!job->printer)
+ cupsdDeleteJob(job, CUPSD_JOB_PURGE);
+ break;
}
/*
- * Read all the c##### files...
+ * Update the server "busy" state...
*/
- while ((dent = cupsDirRead(dir)) != NULL)
- if (strlen(dent->filename) >= 6 && dent->filename[0] == 'c')
- {
- /*
- * Allocate memory for the job...
- */
+ cupsdSetBusyState();
+}
- if ((job = calloc(sizeof(cupsd_job_t), 1)) == NULL)
- {
- cupsdLogMessage(CUPSD_LOG_ERROR, "Ran out of memory for jobs!");
- cupsDirClose(dir);
- return;
- }
- /*
- * Assign the job ID...
- */
+/*
+ * 'cupsdStopAllJobs()' - Stop all print jobs.
+ */
- job->id = atoi(dent->filename + 1);
- job->back_pipes[0] = -1;
- job->back_pipes[1] = -1;
- job->print_pipes[0] = -1;
- job->print_pipes[1] = -1;
- job->side_pipes[0] = -1;
- job->side_pipes[1] = -1;
- job->status_pipes[0] = -1;
- job->status_pipes[1] = -1;
+void
+cupsdStopAllJobs(
+ cupsd_jobaction_t action) /* I - Action */
+{
+ cupsd_job_t *job; /* Current job */
- if (job->id >= NextJobId)
- NextJobId = job->id + 1;
- /*
- * Load the job...
- */
+ DEBUG_puts("cupsdStopAllJobs()");
- cupsdLoadJob(job);
+ for (job = (cupsd_job_t *)cupsArrayFirst(PrintingJobs);
+ job;
+ job = (cupsd_job_t *)cupsArrayNext(PrintingJobs))
+ cupsdSetJobState(job, IPP_JOB_PENDING, action, NULL);
+}
- /*
- * Insert the job into the array, sorting by job priority and ID...
- */
- cupsArrayAdd(Jobs, job);
+/*
+ * 'cupsdUnloadCompletedJobs()' - Flush completed job history from memory.
+ */
- if (job->state_value <= IPP_JOB_STOPPED)
- cupsArrayAdd(ActiveJobs, job);
- else
- unload_job(job);
- }
+void
+cupsdUnloadCompletedJobs(void)
+{
+ cupsd_job_t *job; /* Current job */
+ time_t expire; /* Expiration time */
- cupsDirClose(dir);
+
+ expire = time(NULL) - 60;
+
+ for (job = (cupsd_job_t *)cupsArrayFirst(Jobs);
+ job;
+ job = (cupsd_job_t *)cupsArrayNext(Jobs))
+ if (job->attrs && job->state_value >= IPP_JOB_STOPPED && !job->printer &&
+ job->access_time < expire)
+ {
+ if (job->dirty)
+ cupsdSaveJob(job);
+
+ unload_job(job);
+ }
}
/*
- * 'set_time()' - Set one of the "time-at-xyz" attributes...
+ * 'compare_active_jobs()' - Compare the job IDs and priorities of two jobs.
*/
-static void
-set_time(cupsd_job_t *job, /* I - Job to update */
- const char *name) /* I - Name of attribute */
+static int /* O - Difference */
+compare_active_jobs(void *first, /* I - First job */
+ void *second, /* I - Second job */
+ void *data) /* I - App data (not used) */
{
- ipp_attribute_t *attr; /* Time attribute */
+ int diff; /* Difference */
- if ((attr = ippFindAttribute(job->attrs, name, IPP_TAG_ZERO)) != NULL)
- {
- attr->value_tag = IPP_TAG_INTEGER;
- attr->values[0].integer = time(NULL);
- }
+ if ((diff = ((cupsd_job_t *)second)->priority -
+ ((cupsd_job_t *)first)->priority) != 0)
+ return (diff);
+ else
+ return (((cupsd_job_t *)first)->id - ((cupsd_job_t *)second)->id);
}
/*
- * 'set_hold_until()' - Set the hold time and update job-hold-until attribute...
+ * 'compare_jobs()' - Compare the job IDs of two jobs.
*/
-static void
-set_hold_until(cupsd_job_t *job, /* I - Job to update */
- time_t holdtime) /* I - Hold until time */
+static int /* O - Difference */
+compare_jobs(void *first, /* I - First job */
+ void *second, /* I - Second job */
+ void *data) /* I - App data (not used) */
{
- ipp_attribute_t *attr; /* job-hold-until attribute */
- struct tm *holddate; /* Hold date */
- char holdstr[64]; /* Hold time */
+ return (((cupsd_job_t *)first)->id - ((cupsd_job_t *)second)->id);
+}
- /*
- * Set the hold_until value and hold the job...
- */
+/*
+ * 'finalize_job()' - Cleanup after job filter processes and support data.
+ */
- cupsdLogMessage(CUPSD_LOG_DEBUG, "set_hold_until: hold_until = %d",
- (int)holdtime);
+static void
+finalize_job(cupsd_job_t *job) /* I - Job */
+{
+ ipp_pstate_t printer_state; /* New printer state value */
+ ipp_jstate_t job_state; /* New job state value */
+ const char *message; /* Message for job state */
+ char buffer[1024]; /* Buffer for formatted messages */
- job->state->values[0].integer = IPP_JOB_HELD;
- job->state_value = IPP_JOB_HELD;
- job->hold_until = holdtime;
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "finalize_job(job=%p(%d))", job, job->id);
/*
- * Update the job-hold-until attribute with a string representing GMT
- * time (HH:MM:SS)...
+ * Clear the "connecting-to-device" reason, which is only valid when a
+ * printer is processing...
*/
- holddate = gmtime(&holdtime);
- snprintf(holdstr, sizeof(holdstr), "%d:%d:%d", holddate->tm_hour,
- holddate->tm_min, holddate->tm_sec);
-
- if ((attr = ippFindAttribute(job->attrs, "job-hold-until",
- IPP_TAG_KEYWORD)) == NULL)
- attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
+ cupsdSetPrinterReasons(job->printer, "-connecting-to-device");
/*
- * Either add the attribute or update the value of the existing one
+ * Similarly, clear the "offline-report" reason for non-USB devices since we
+ * rarely have current information for network devices...
*/
- if (attr == NULL)
- ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-hold-until",
- NULL, holdstr);
- else
- cupsdSetString(&attr->values[0].string.text, holdstr);
-
- job->dirty = 1;
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
-}
+ if (strncmp(job->printer->device_uri, "usb:", 4))
+ cupsdSetPrinterReasons(job->printer, "-offline-report");
+ /*
+ * Free the security profile...
+ */
-/*
- * 'start_job()' - Start a print job.
- */
+ cupsdDestroyProfile(job->profile);
+ job->profile = NULL;
-static void
-start_job(cupsd_job_t *job, /* I - Job ID */
- cupsd_printer_t *printer) /* I - Printer to print job */
-{
- int i; /* Looping var */
- int slot; /* Pipe slot */
- cups_array_t *filters, /* Filters for job */
- *prefilters; /* Filters with prefilters */
- mime_filter_t *filter, /* Current filter */
- *prefilter, /* Prefilter */
- port_monitor; /* Port monitor filter */
- char method[255], /* Method for output */
- *optptr, /* Pointer to options */
- *valptr; /* Pointer in value string */
- ipp_attribute_t *attr; /* Current attribute */
- struct stat backinfo; /* Backend file information */
- int backroot; /* Run backend as root? */
- int pid; /* Process ID of new filter process */
- int banner_page; /* 1 if banner page, 0 otherwise */
- int filterfds[2][2];/* Pipes used between filters */
- int envc; /* Number of environment variables */
- char **argv, /* Filter command-line arguments */
- filename[1024], /* Job filename */
- command[1024], /* Full path to command */
- jobid[255], /* Job ID string */
- title[IPP_MAX_NAME],
- /* Job title string */
- copies[255], /* # copies string */
- *envp[MAX_ENV + 19],
- /* Environment variables */
- charset[255], /* CHARSET env variable */
- class_name[255],/* CLASS env variable */
- classification[1024],
- /* CLASSIFICATION env variable */
- content_type[1024],
- /* CONTENT_TYPE env variable */
- device_uri[1024],
- /* DEVICE_URI env variable */
- final_content_type[1024],
- /* FINAL_CONTENT_TYPE env variable */
- lang[255], /* LANG env variable */
-#ifdef __APPLE__
- apple_language[255],
- /* APPLE_LANGUAGE env variable */
-#endif /* __APPLE__ */
- ppd[1024], /* PPD env variable */
- printer_info[255],
- /* PRINTER_INFO env variable */
- printer_location[255],
- /* PRINTER_LOCATION env variable */
- printer_name[255],
- /* PRINTER env variable */
- rip_max_cache[255];
- /* RIP_MAX_CACHE env variable */
- static char *options = NULL;/* Full list of options */
- static int optlength = 0; /* Length of option buffer */
+ /*
+ * Close pipes and status buffer...
+ */
+ cupsdRemoveSelect(job->status_buffer->fd);
- cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: file = %d/%d",
- job->current_file, job->num_files);
+ cupsdClosePipe(job->print_pipes);
+ cupsdClosePipe(job->back_pipes);
+ cupsdClosePipe(job->side_pipes);
+ cupsdClosePipe(job->status_pipes);
- if (job->num_files == 0)
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR, "No files, canceling job!");
- cupsdCancelJob(job, 0, IPP_JOB_ABORTED);
- return;
- }
+ cupsdStatBufDelete(job->status_buffer);
+ job->status_buffer = NULL;
/*
- * Figure out what filters are required to convert from
- * the source to the destination type...
+ * Process the exit status...
*/
- filters = NULL;
- job->cost = 0;
+ printer_state = IPP_PRINTER_IDLE;
+ job_state = IPP_JOB_COMPLETED;
+ message = "Job completed.";
- if (printer->raw)
+ if (job->status < 0)
{
/*
- * Remote jobs and raw queues go directly to the printer without
- * filtering...
+ * Backend had errors...
*/
- cupsdLogJob(job, CUPSD_LOG_DEBUG, "Sending job to queue tagged as raw...");
+ int exit_code; /* Exit code from backend */
+
- filters = NULL;
- }
- else
- {
/*
- * Local jobs get filtered...
+ * Convert the status to an exit code. Due to the way the W* macros are
+ * implemented on MacOS X (bug?), we have to store the exit status in a
+ * variable first and then convert...
*/
- filters = mimeFilter(MimeDatabase, job->filetypes[job->current_file],
- printer->filetype, &(job->cost));
-
- if (!filters)
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR,
- "Unable to convert file %d to printable format!",
- job->current_file);
- cupsdLogMessage(CUPSD_LOG_INFO,
- "Hint: Do you have Ghostscript installed?");
-
- if (LogLevel < CUPSD_LOG_DEBUG)
- cupsdLogMessage(CUPSD_LOG_INFO,
- "Hint: Try setting the LogLevel to \"debug\".");
-
- job->current_file ++;
-
- if (job->current_file == job->num_files)
- cupsdCancelJob(job, 0, IPP_JOB_ABORTED);
+ exit_code = -job->status;
+ if (WIFEXITED(exit_code))
+ exit_code = WEXITSTATUS(exit_code);
+ else
+ exit_code = job->status;
- return;
- }
+ cupsdLogJob(job, CUPSD_LOG_INFO, "Backend returned status %d (%s)",
+ exit_code,
+ exit_code == CUPS_BACKEND_FAILED ? "failed" :
+ exit_code == CUPS_BACKEND_AUTH_REQUIRED ?
+ "authentication required" :
+ exit_code == CUPS_BACKEND_HOLD ? "hold job" :
+ exit_code == CUPS_BACKEND_STOP ? "stop printer" :
+ exit_code == CUPS_BACKEND_CANCEL ? "cancel job" :
+ exit_code < 0 ? "crashed" : "unknown");
/*
- * Remove NULL ("-") filters...
+ * Do what needs to be done...
*/
- for (filter = (mime_filter_t *)cupsArrayFirst(filters);
- filter;
- filter = (mime_filter_t *)cupsArrayNext(filters))
- if (!strcmp(filter->filter, "-"))
- cupsArrayRemove(filters, filter);
-
- if (cupsArrayCount(filters) == 0)
- {
- cupsArrayDelete(filters);
- filters = NULL;
- }
-
- /*
- * If this printer has any pre-filters, insert the required pre-filter
- * in the filters array...
- */
-
- if (printer->prefiltertype && filters)
+ switch (exit_code)
{
- prefilters = cupsArrayNew(NULL, NULL);
+ default :
+ case CUPS_BACKEND_FAILED :
+ /*
+ * Backend failure, use the error-policy to determine how to
+ * act...
+ */
- for (filter = (mime_filter_t *)cupsArrayFirst(filters);
- filter;
- filter = (mime_filter_t *)cupsArrayNext(filters))
- {
- if ((prefilter = mimeFilterLookup(MimeDatabase, filter->src,
- printer->prefiltertype)))
- {
- cupsArrayAdd(prefilters, prefilter);
- job->cost += prefilter->cost;
- }
+ if (job->dtype & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT))
+ {
+ /*
+ * Queued on a class - mark the job as pending and we'll retry on
+ * another printer...
+ */
- cupsArrayAdd(prefilters, filter);
- }
+ job_state = IPP_JOB_PENDING;
+ message = "Retrying job on another printer.";
+ }
+ else if (!strcmp(job->printer->error_policy, "retry-current-job"))
+ {
+ /*
+ * The error policy is "retry-current-job" - mark the job as pending
+ * and we'll retry on the same printer...
+ */
- cupsArrayDelete(filters);
- filters = prefilters;
- }
- }
+ job_state = IPP_JOB_PENDING;
+ message = "Retrying job on same printer.";
+ }
+ else if ((job->printer->type & CUPS_PRINTER_FAX) ||
+ !strcmp(job->printer->error_policy, "retry-job"))
+ {
+ /*
+ * The job was queued on a fax or the error policy is "retry-job" -
+ * hold the job if the number of retries is less than the
+ * JobRetryLimit, otherwise abort the job.
+ */
- /*
- * Set a minimum cost of 100 for all jobs so that FilterLimit
- * works with raw queues and other low-cost paths.
- */
+ job->tries ++;
- if (job->cost < 100)
- job->cost = 100;
+ if (job->tries >= JobRetryLimit)
+ {
+ /*
+ * Too many tries...
+ */
- /*
- * See if the filter cost is too high...
- */
+ snprintf(buffer, sizeof(buffer),
+ "Job aborted after %d unsuccessful attempts.",
+ JobRetryLimit);
+ job_state = IPP_JOB_ABORTED;
+ message = buffer;
+ }
+ else
+ {
+ /*
+ * Try again in N seconds...
+ */
- if ((FilterLevel + job->cost) > FilterLimit && FilterLevel > 0 &&
- FilterLimit > 0)
- {
- /*
- * Don't print this job quite yet...
- */
+ set_hold_until(job, time(NULL) + JobRetryInterval);
- cupsArrayDelete(filters);
+ snprintf(buffer, sizeof(buffer),
+ "Job held for %d seconds since it could not be sent.",
+ JobRetryInterval);
+ job_state = IPP_JOB_HELD;
+ message = buffer;
+ }
+ }
+ else if (!strcmp(job->printer->error_policy, "abort-job"))
+ {
+ job_state = IPP_JOB_ABORTED;
+ message = "Job aborted due to backend errors; please consult "
+ "the error_log file for details.";
+ }
+ else
+ {
+ printer_state = IPP_PRINTER_STOPPED;
+ job_state = IPP_JOB_PENDING;
+ message = "Printer stopped due to backend errors; please "
+ "consult the error_log file for details.";
+ }
+ break;
- cupsdLogJob(job, CUPSD_LOG_INFO,
- "Holding because filter limit has been reached.");
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: file=%d, cost=%d, level=%d, limit=%d",
- job->current_file, job->cost, FilterLevel,
- FilterLimit);
- return;
- }
+ case CUPS_BACKEND_CANCEL :
+ /*
+ * Abort the job...
+ */
- FilterLevel += job->cost;
+ job_state = IPP_JOB_ABORTED;
+ message = "Job aborted due to backend errors; please consult "
+ "the error_log file for details.";
+ break;
- /*
- * Add decompression/raw filter as needed...
- */
+ case CUPS_BACKEND_HOLD :
+ /*
+ * Hold the job...
+ */
- if ((!printer->raw && job->compressions[job->current_file]) ||
- (!filters && !printer->remote &&
- (job->num_files > 1 || !strncmp(printer->device_uri, "file:", 5))))
- {
- /*
- * Add gziptoany filter to the front of the list...
- */
+ cupsdSetJobHoldUntil(job, "indefinite", 1);
- if (!filters)
- filters = cupsArrayNew(NULL, NULL);
+ job_state = IPP_JOB_HELD;
+ message = "Job held indefinitely due to backend errors; please "
+ "consult the error_log file for details.";
+ break;
- if (!cupsArrayInsert(filters, &gziptoany_filter))
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR,
- "Unable to add decompression filter - %s", strerror(errno));
+ case CUPS_BACKEND_STOP :
+ /*
+ * Stop the printer...
+ */
- cupsArrayDelete(filters);
+ printer_state = IPP_PRINTER_STOPPED;
+ job_state = IPP_JOB_PENDING;
+ message = "Printer stopped due to backend errors; please "
+ "consult the error_log file for details.";
+ break;
- job->current_file ++;
+ case CUPS_BACKEND_AUTH_REQUIRED :
+ /*
+ * Hold the job for authentication...
+ */
- if (job->current_file == job->num_files)
- cupsdCancelJob(job, 0, IPP_JOB_ABORTED);
+ cupsdSetJobHoldUntil(job, "auth-info-required", 1);
- return;
+ job_state = IPP_JOB_HELD;
+ message = "Job held for authentication.";
+ break;
}
}
-
- /*
- * Add port monitor, if any...
- */
-
- if (printer->port_monitor)
+ else if (job->status > 0)
{
/*
- * Add port monitor to the end of the list...
+ * Filter had errors; stop job...
*/
- if (!filters)
- filters = cupsArrayNew(NULL, NULL);
-
- port_monitor.src = NULL;
- port_monitor.dst = NULL;
- port_monitor.cost = 0;
-
- snprintf(port_monitor.filter, sizeof(port_monitor.filter),
- "%s/monitor/%s", ServerBin, printer->port_monitor);
-
- if (!cupsArrayAdd(filters, &port_monitor))
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR,
- "Unable to add port monitor - %s", strerror(errno));
-
- cupsArrayDelete(filters);
-
- job->current_file ++;
-
- if (job->current_file == job->num_files)
- cupsdCancelJob(job, 0, IPP_JOB_ABORTED);
-
- return;
- }
+ job_state = IPP_JOB_STOPPED;
+ message = "Job stopped due to filter errors; please consult the "
+ "error_log file for details.";
}
/*
- * Make sure we don't go over the "MAX_FILTERS" limit...
+ * Update the printer and job state.
*/
- if (cupsArrayCount(filters) > MAX_FILTERS)
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR,
- "Too many filters (%d > %d), unable to print!",
- cupsArrayCount(filters), MAX_FILTERS);
-
- cupsArrayDelete(filters);
- cupsdCancelJob(job, 0, IPP_JOB_STOPPED);
+ cupsdSetJobState(job, job_state, CUPSD_JOB_DEFAULT, "%s", message);
+ cupsdSetPrinterState(job->printer, printer_state,
+ printer_state == IPP_PRINTER_STOPPED);
+ update_job_attrs(job, 0);
- return;
- }
+ cupsArrayRemove(PrintingJobs, job);
/*
- * Update the printer and job state to "processing"...
+ * Clear the printer <-> job association...
*/
- job->state->values[0].integer = IPP_JOB_PROCESSING;
- job->state_value = IPP_JOB_PROCESSING;
- job->progress = 0;
- job->status = 0;
- job->printer = printer;
- printer->job = job;
-
- cupsdSetPrinterState(printer, IPP_PRINTER_PROCESSING, 0);
-
- if (job->current_file == 0)
- {
- /*
- * Add to the printing list...
- */
-
- cupsArrayAdd(PrintingJobs, job);
- cupsdSetBusyState();
-
- /*
- * Set the processing time...
- */
-
- set_time(job, "time-at-processing");
-
- /*
- * Create the backchannel pipes and make them non-blocking...
- */
-
- cupsdOpenPipe(job->back_pipes);
-
- fcntl(job->back_pipes[0], F_SETFL,
- fcntl(job->back_pipes[0], F_GETFL) | O_NONBLOCK);
-
- fcntl(job->back_pipes[1], F_SETFL,
- fcntl(job->back_pipes[1], F_GETFL) | O_NONBLOCK);
-
- /*
- * Create the side-channel pipes and make them non-blocking...
- */
-
- socketpair(AF_LOCAL, SOCK_STREAM, 0, job->side_pipes);
-
- fcntl(job->side_pipes[0], F_SETFL,
- fcntl(job->side_pipes[0], F_GETFL) | O_NONBLOCK);
-
- fcntl(job->side_pipes[1], F_SETFL,
- fcntl(job->side_pipes[1], F_GETFL) | O_NONBLOCK);
- }
+ job->printer->job = NULL;
+ job->printer = NULL;
/*
- * Determine if we are printing a banner page or not...
+ * Try printing another job...
*/
- if (job->job_sheets == NULL)
- {
- cupsdLogJob(job, CUPSD_LOG_DEBUG, "No job-sheets attribute.");
- if ((job->job_sheets =
- ippFindAttribute(job->attrs, "job-sheets", IPP_TAG_ZERO)) != NULL)
- cupsdLogJob(job, CUPSD_LOG_DEBUG,
- "... but someone added one without setting job_sheets!");
- }
- else if (job->job_sheets->num_values == 1)
- cupsdLogJob(job, CUPSD_LOG_DEBUG, "job-sheets=%s",
- job->job_sheets->values[0].string.text);
- else
- cupsdLogJob(job, CUPSD_LOG_DEBUG, "job-sheets=%s,%s",
- job->job_sheets->values[0].string.text,
- job->job_sheets->values[1].string.text);
+ if (printer_state != IPP_PRINTER_STOPPED)
+ cupsdCheckJobs();
+}
- if (printer->type & (CUPS_PRINTER_REMOTE | CUPS_PRINTER_IMPLICIT))
- banner_page = 0;
- else if (job->job_sheets == NULL)
- banner_page = 0;
- else if (strcasecmp(job->job_sheets->values[0].string.text, "none") != 0 &&
- job->current_file == 0)
- banner_page = 1;
- else if (job->job_sheets->num_values > 1 &&
- strcasecmp(job->job_sheets->values[1].string.text, "none") != 0 &&
- job->current_file == (job->num_files - 1))
- banner_page = 1;
- else
- banner_page = 0;
- cupsdLogJob(job, CUPSD_LOG_DEBUG, "banner_page = %d", banner_page);
+/*
+ * 'get_options()' - Get a string containing the job options.
+ */
+
+static char * /* O - Options string */
+get_options(cupsd_job_t *job, /* I - Job */
+ int banner_page, /* I - Printing a banner page? */
+ char *copies, /* I - Copies buffer */
+ size_t copies_size, /* I - Size of copies buffer */
+ char *title, /* I - Title buffer */
+ size_t title_size) /* I - Size of title buffer */
+{
+ int i; /* Looping var */
+ char *optptr, /* Pointer to options */
+ *valptr; /* Pointer in value string */
+ ipp_attribute_t *attr; /* Current attribute */
+ static char *options = NULL;/* Full list of options */
+ static int optlength = 0; /* Length of option buffer */
+
/*
* Building the options string is harder than it needs to be, but
@@ -2891,22 +2717,16 @@ start_job(cupsd_job_t *job, /* I - Job ID */
if (i > optlength || !options)
{
- if (optlength == 0)
+ if (!options)
optptr = malloc(i);
else
optptr = realloc(options, i);
- if (optptr == NULL)
+ if (!optptr)
{
cupsdLogJob(job, CUPSD_LOG_CRIT,
"Unable to allocate %d bytes for option buffer!", i);
-
- cupsArrayDelete(filters);
-
- FilterLevel -= job->cost;
-
- cupsdCancelJob(job, 0, IPP_JOB_ABORTED);
- return;
+ return (NULL);
}
options = optptr;
@@ -2921,7 +2741,7 @@ start_job(cupsd_job_t *job, /* I - Job ID */
optptr = options;
*optptr = '\0';
- snprintf(title, sizeof(title), "%s-%d", printer->name, job->id);
+ snprintf(title, sizeof(title), "%s-%d", job->printer->name, job->id);
strcpy(copies, "1");
for (attr = job->attrs->attrs; attr != NULL; attr = attr->next)
@@ -2962,7 +2782,7 @@ start_job(cupsd_job_t *job, /* I - Job ID */
strcmp(attr->name, "job-impressions") &&
strcmp(attr->name, "job-originating-host-name") &&
strcmp(attr->name, "job-uuid") &&
- !(printer->type & CUPS_PRINTER_REMOTE))
+ !(job->printer->type & CUPS_PRINTER_REMOTE))
continue;
if ((!strcmp(attr->name, "job-impressions") ||
@@ -3061,572 +2881,739 @@ start_job(cupsd_job_t *job, /* I - Job ID */
}
}
- /*
- * 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.
- *
- * For remote jobs, we send all of the files in the argument list.
+
+ return (options);
+}
+
+
+/*
+ * 'ipp_length()' - Compute the size of the buffer needed to hold
+ * the textual IPP attributes.
+ */
+
+static int /* O - Size of attribute buffer */
+ipp_length(ipp_t *ipp) /* I - IPP request */
+{
+ int bytes; /* Number of bytes */
+ int i; /* Looping var */
+ ipp_attribute_t *attr; /* Current attribute */
+
+
+ /*
+ * Loop through all attributes...
*/
- if (printer->remote && job->num_files > 1)
- argv = calloc(7 + job->num_files, sizeof(char *));
- else
- argv = calloc(8, sizeof(char *));
+ bytes = 0;
- if (!argv)
+ for (attr = ipp->attrs; attr != NULL; attr = attr->next)
{
- cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to allocate argument array!");
- cupsArrayDelete(filters);
+ /*
+ * Skip attributes that won't be sent to filters...
+ */
- FilterLevel -= job->cost;
+ 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;
- cupsdStopPrinter(printer, 0);
- return;
- }
+ if (strncmp(attr->name, "time-", 5) == 0)
+ continue;
- sprintf(jobid, "%d", job->id);
+ /*
+ * Add space for a leading space and commas between each value.
+ * For the first attribute, the leading space isn't used, so the
+ * extra byte can be used as the nul terminator...
+ */
- argv[0] = printer->name;
- argv[1] = jobid;
- argv[2] = job->username;
- argv[3] = title;
- argv[4] = copies;
- argv[5] = options;
+ bytes ++; /* " " separator */
+ bytes += attr->num_values; /* "," separators */
- if (printer->remote && job->num_files > 1)
- {
- for (i = 0; i < job->num_files; i ++)
+ /*
+ * Boolean attributes appear as "foo,nofoo,foo,nofoo", while
+ * other attributes appear as "foo=value1,value2,...,valueN".
+ */
+
+ if (attr->value_tag != IPP_TAG_BOOLEAN)
+ bytes += strlen(attr->name);
+ else
+ bytes += attr->num_values * strlen(attr->name);
+
+ /*
+ * Now add the size required for each value in the attribute...
+ */
+
+ switch (attr->value_tag)
{
- snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot,
- job->id, i + 1);
- argv[6 + i] = strdup(filename);
+ case IPP_TAG_INTEGER :
+ case IPP_TAG_ENUM :
+ /*
+ * Minimum value of a signed integer is -2147483647, or 11 digits.
+ */
+
+ bytes += attr->num_values * 11;
+ break;
+
+ case IPP_TAG_BOOLEAN :
+ /*
+ * Add two bytes for each false ("no") value...
+ */
+
+ for (i = 0; i < attr->num_values; i ++)
+ if (!attr->values[i].boolean)
+ bytes += 2;
+ break;
+
+ case IPP_TAG_RANGE :
+ /*
+ * A range is two signed integers separated by a hyphen, or
+ * 23 characters max.
+ */
+
+ bytes += attr->num_values * 23;
+ break;
+
+ case IPP_TAG_RESOLUTION :
+ /*
+ * A resolution is two signed integers separated by an "x" and
+ * suffixed by the units, or 26 characters max.
+ */
+
+ bytes += attr->num_values * 26;
+ 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 :
+ case IPP_TAG_URI :
+ /*
+ * Strings can contain characters that need quoting. We need
+ * at least 2 * len + 2 characters to cover the quotes and
+ * any backslashes in the string.
+ */
+
+ for (i = 0; i < attr->num_values; i ++)
+ bytes += 2 * strlen(attr->values[i].string.text) + 2;
+ break;
+
+ default :
+ break; /* anti-compiler-warning-code */
}
}
- else
+
+ return (bytes);
+}
+
+
+/*
+ * 'load_job_cache()' - Load jobs from the job.cache file.
+ */
+
+static void
+load_job_cache(const char *filename) /* I - job.cache filename */
+{
+ cups_file_t *fp; /* job.cache file */
+ char line[1024], /* Line buffer */
+ *value; /* Value on line */
+ int linenum; /* Line number in file */
+ cupsd_job_t *job; /* Current job */
+ int jobid; /* Job ID */
+ char jobfile[1024]; /* Job filename */
+
+
+ /*
+ * Open the job.cache file...
+ */
+
+ if ((fp = cupsFileOpen(filename, "r")) == NULL)
{
- snprintf(filename, sizeof(filename), "%s/d%05d-%03d", RequestRoot,
- job->id, job->current_file + 1);
- argv[6] = filename;
- }
+ if (errno != ENOENT)
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Unable to open job cache file \"%s\": %s",
+ filename, strerror(errno));
- for (i = 0; argv[i]; i ++)
- cupsdLogJob(job, CUPSD_LOG_DEBUG,
- "argv[%d]=\"%s\"", i, argv[i]);
+ load_request_root();
+
+ return;
+ }
/*
- * Create environment variable strings for the filters...
+ * Read entries from the job cache file and create jobs as needed.
*/
- attr = ippFindAttribute(job->attrs, "attributes-natural-language",
- IPP_TAG_LANGUAGE);
+ cupsdLogMessage(CUPSD_LOG_INFO, "Loading job cache file \"%s\"...",
+ filename);
-#ifdef __APPLE__
- strcpy(apple_language, "APPLE_LANGUAGE=");
- _cupsAppleLanguage(attr->values[0].string.text,
- apple_language + 15, sizeof(apple_language) - 15);
-#endif /* __APPLE__ */
+ linenum = 0;
+ job = NULL;
+
+ while (cupsFileGetConf(fp, line, sizeof(line), &value, &linenum))
+ {
+ if (!strcasecmp(line, "NextJobId"))
+ {
+ if (value)
+ NextJobId = atoi(value);
+ }
+ else if (!strcasecmp(line, " directive on line %d!",
+ linenum);
+ continue;
+ }
+
+ if (!value)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Missing job ID on line %d!", linenum);
+ continue;
+ }
+
+ jobid = atoi(value);
+
+ if (jobid < 1)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Bad job ID %d on line %d!", jobid,
+ linenum);
+ continue;
+ }
+
+ snprintf(jobfile, sizeof(jobfile), "%s/c%05d", RequestRoot, jobid);
+ if (access(jobfile, 0))
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "[Job %d] Files have gone away!",
+ jobid);
+ continue;
+ }
+
+ job = calloc(1, sizeof(cupsd_job_t));
+ if (!job)
+ {
+ cupsdLogMessage(CUPSD_LOG_EMERG,
+ "[Job %d] Unable to allocate memory for job!", jobid);
+ break;
+ }
+
+ job->id = jobid;
+ job->back_pipes[0] = -1;
+ job->back_pipes[1] = -1;
+ job->print_pipes[0] = -1;
+ job->print_pipes[1] = -1;
+ job->side_pipes[0] = -1;
+ job->side_pipes[1] = -1;
+ job->status_pipes[0] = -1;
+ job->status_pipes[1] = -1;
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "[Job %d] Loading from cache...",
+ job->id);
+ }
+ else if (!job)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Missing directive on line %d!", linenum);
+ continue;
+ }
+ else if (!strcasecmp(line, " "))
+ {
+ cupsArrayAdd(Jobs, job);
+
+ if (job->state_value <= IPP_JOB_STOPPED)
+ {
+ cupsArrayAdd(ActiveJobs, job);
+ cupsdLoadJob(job);
+ }
+
+ job = NULL;
+ }
+ else if (!value)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Missing value on line %d!", linenum);
+ continue;
+ }
+ else if (!strcasecmp(line, "State"))
+ {
+ job->state_value = (ipp_jstate_t)atoi(value);
+
+ if (job->state_value < IPP_JOB_PENDING)
+ job->state_value = IPP_JOB_PENDING;
+ else if (job->state_value > IPP_JOB_COMPLETED)
+ job->state_value = IPP_JOB_COMPLETED;
+ }
+ else if (!strcasecmp(line, "Priority"))
+ {
+ job->priority = atoi(value);
+ }
+ else if (!strcasecmp(line, "Username"))
+ {
+ cupsdSetString(&job->username, value);
+ }
+ else if (!strcasecmp(line, "Destination"))
+ {
+ cupsdSetString(&job->dest, value);
+ }
+ else if (!strcasecmp(line, "DestType"))
+ {
+ job->dtype = (cups_ptype_t)atoi(value);
+ }
+ else if (!strcasecmp(line, "NumFiles"))
+ {
+ job->num_files = atoi(value);
+
+ if (job->num_files < 0)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Bad NumFiles value %d on line %d!",
+ job->num_files, linenum);
+ job->num_files = 0;
+ continue;
+ }
+
+ if (job->num_files > 0)
+ {
+ snprintf(jobfile, sizeof(jobfile), "%s/d%05d-001", RequestRoot,
+ job->id);
+ if (access(jobfile, 0))
+ {
+ cupsdLogMessage(CUPSD_LOG_INFO, "[Job %d] Data files have gone away!",
+ job->id);
+ job->num_files = 0;
+ continue;
+ }
+
+ job->filetypes = calloc(job->num_files, sizeof(mime_type_t *));
+ job->compressions = calloc(job->num_files, sizeof(int));
+
+ if (!job->filetypes || !job->compressions)
+ {
+ cupsdLogMessage(CUPSD_LOG_EMERG,
+ "[Job %d] Unable to allocate memory for %d files!",
+ job->id, job->num_files);
+ break;
+ }
+ }
+ }
+ else if (!strcasecmp(line, "File"))
+ {
+ int number, /* File number */
+ compression; /* Compression value */
+ char super[MIME_MAX_SUPER], /* MIME super type */
+ type[MIME_MAX_TYPE]; /* MIME type */
+
+
+ if (sscanf(value, "%d%*[ \t]%15[^/]/%255s%d", &number, super, type,
+ &compression) != 4)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Bad File on line %d!", linenum);
+ continue;
+ }
+
+ if (number < 1 || number > job->num_files)
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Bad File number %d on line %d!",
+ number, linenum);
+ continue;
+ }
- switch (strlen(attr->values[0].string.text))
- {
- default :
- /*
- * This is an unknown or badly formatted language code; use
- * the POSIX locale...
- */
+ number --;
- strcpy(lang, "LANG=C");
- break;
+ job->compressions[number] = compression;
+ job->filetypes[number] = mimeType(MimeDatabase, super, type);
- case 2 :
+ if (!job->filetypes[number])
+ {
/*
- * Just the language code (ll)...
+ * If the original MIME type is unknown, auto-type it!
*/
- snprintf(lang, sizeof(lang), "LANG=%s.UTF8",
- attr->values[0].string.text);
- break;
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "[Job %d] Unknown MIME type %s/%s for file %d!",
+ job->id, super, type, number + 1);
+
+ snprintf(jobfile, sizeof(jobfile), "%s/d%05d-%03d", RequestRoot,
+ job->id, number + 1);
+ job->filetypes[number] = mimeFileType(MimeDatabase, jobfile, NULL,
+ job->compressions + number);
- case 5 :
/*
- * Language and country code (ll-cc)...
+ * If that didn't work, assume it is raw...
*/
- snprintf(lang, sizeof(lang), "LANG=%c%c_%c%c.UTF8",
- attr->values[0].string.text[0],
- attr->values[0].string.text[1],
- toupper(attr->values[0].string.text[3] & 255),
- toupper(attr->values[0].string.text[4] & 255));
- break;
- }
-
- attr = ippFindAttribute(job->attrs, "document-format",
- IPP_TAG_MIMETYPE);
- if (attr != NULL &&
- (optptr = strstr(attr->values[0].string.text, "charset=")) != NULL)
- snprintf(charset, sizeof(charset), "CHARSET=%s", optptr + 8);
- else
- {
- attr = ippFindAttribute(job->attrs, "attributes-charset",
- IPP_TAG_CHARSET);
- snprintf(charset, sizeof(charset), "CHARSET=%s",
- attr->values[0].string.text);
+ if (!job->filetypes[number])
+ job->filetypes[number] = mimeType(MimeDatabase, "application",
+ "vnd.cups-raw");
+ }
+ }
+ else
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unknown %s directive on line %d!",
+ line, linenum);
}
- snprintf(content_type, sizeof(content_type), "CONTENT_TYPE=%s/%s",
- job->filetypes[job->current_file]->super,
- job->filetypes[job->current_file]->type);
- snprintf(device_uri, sizeof(device_uri), "DEVICE_URI=%s",
- printer->device_uri);
- snprintf(ppd, sizeof(ppd), "PPD=%s/ppd/%s.ppd", ServerRoot, printer->name);
- snprintf(printer_info, sizeof(printer_name), "PRINTER_INFO=%s",
- printer->info ? printer->info : "");
- snprintf(printer_location, sizeof(printer_name), "PRINTER_LOCATION=%s",
- printer->location ? printer->location : "");
- snprintf(printer_name, sizeof(printer_name), "PRINTER=%s", printer->name);
- snprintf(rip_max_cache, sizeof(rip_max_cache), "RIP_MAX_CACHE=%s", RIPCache);
+ cupsFileClose(fp);
+}
- envc = cupsdLoadEnv(envp, (int)(sizeof(envp) / sizeof(envp[0])));
- envp[envc ++] = charset;
- envp[envc ++] = lang;
-#ifdef __APPLE__
- envp[envc ++] = apple_language;
-#endif /* __APPLE__ */
- envp[envc ++] = ppd;
- envp[envc ++] = rip_max_cache;
- envp[envc ++] = content_type;
- envp[envc ++] = device_uri;
- envp[envc ++] = printer_info;
- envp[envc ++] = printer_location;
- envp[envc ++] = printer_name;
- envp[envc ++] = banner_page ? "CUPS_FILETYPE=job-sheet" :
- "CUPS_FILETYPE=document";
+/*
+ * 'load_next_job_id()' - Load the NextJobId value from the job.cache file.
+ */
- if (!printer->remote && !printer->raw)
- {
- filter = (mime_filter_t *)cupsArrayLast(filters);
+static void
+load_next_job_id(const char *filename) /* I - job.cache filename */
+{
+ cups_file_t *fp; /* job.cache file */
+ char line[1024], /* Line buffer */
+ *value; /* Value on line */
+ int linenum; /* Line number in file */
+ int next_job_id; /* NextJobId value from line */
- if (printer->port_monitor)
- filter = (mime_filter_t *)cupsArrayPrev(filters);
- if (filter && filter->dst)
- {
- snprintf(final_content_type, sizeof(final_content_type),
- "FINAL_CONTENT_TYPE=%s/%s",
- filter->dst->super, filter->dst->type);
- envp[envc ++] = final_content_type;
- }
- }
+ /*
+ * Read the NextJobId directive from the job.cache file and use
+ * the value (if any).
+ */
- if (Classification && !banner_page)
+ if ((fp = cupsFileOpen(filename, "r")) == NULL)
{
- if ((attr = ippFindAttribute(job->attrs, "job-sheets",
- IPP_TAG_NAME)) == NULL)
- snprintf(classification, sizeof(classification), "CLASSIFICATION=%s",
- Classification);
- else if (attr->num_values > 1 &&
- strcmp(attr->values[1].string.text, "none") != 0)
- snprintf(classification, sizeof(classification), "CLASSIFICATION=%s",
- attr->values[1].string.text);
- else
- snprintf(classification, sizeof(classification), "CLASSIFICATION=%s",
- attr->values[0].string.text);
+ if (errno != ENOENT)
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Unable to open job cache file \"%s\": %s",
+ filename, strerror(errno));
- envp[envc ++] = classification;
+ return;
}
- if (job->dtype & (CUPS_PRINTER_CLASS | CUPS_PRINTER_IMPLICIT))
+ cupsdLogMessage(CUPSD_LOG_INFO,
+ "Loading NextJobId from job cache file \"%s\"...", filename);
+
+ linenum = 0;
+
+ while (cupsFileGetConf(fp, line, sizeof(line), &value, &linenum))
{
- snprintf(class_name, sizeof(class_name), "CLASS=%s", job->dest);
- envp[envc ++] = class_name;
+ if (!strcasecmp(line, "NextJobId"))
+ {
+ if (value)
+ {
+ next_job_id = atoi(value);
+
+ if (next_job_id > NextJobId)
+ NextJobId = next_job_id;
+ }
+ break;
+ }
}
- if (job->auth_username)
- envp[envc ++] = job->auth_username;
- if (job->auth_domain)
- envp[envc ++] = job->auth_domain;
- if (job->auth_password)
- envp[envc ++] = job->auth_password;
+ cupsFileClose(fp);
+}
-#ifdef HAVE_GSSAPI
- if (job->ccname)
- envp[envc ++] = job->ccname;
-#endif /* HAVE_GSSAPI */
- envp[envc] = NULL;
+/*
+ * 'load_request_root()' - Load jobs from the RequestRoot directory.
+ */
- for (i = 0; i < envc; i ++)
- if (!strncmp(envp[i], "AUTH_", 5))
- cupsdLogJob(job, CUPSD_LOG_DEBUG, "envp[%d]=\"AUTH_%c****\"", i,
- envp[i][5]);
- else if (strncmp(envp[i], "DEVICE_URI=", 11))
- cupsdLogJob(job, CUPSD_LOG_DEBUG, "envp[%d]=\"%s\"", i, envp[i]);
- else
- cupsdLogJob(job, CUPSD_LOG_DEBUG, "envp[%d]=\"DEVICE_URI=%s\"", i,
- printer->sanitized_device_uri);
+static void
+load_request_root(void)
+{
+ cups_dir_t *dir; /* Directory */
+ cups_dentry_t *dent; /* Directory entry */
+ cupsd_job_t *job; /* New job */
- if (printer->remote)
- job->current_file = job->num_files;
- else
- job->current_file ++;
/*
- * Now create processes for all of the filters...
+ * Open the requests directory...
*/
- filterfds[0][0] = -1;
- filterfds[0][1] = -1;
- filterfds[1][0] = -1;
- filterfds[1][1] = -1;
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "Scanning %s for jobs...", RequestRoot);
- if (!job->status_buffer)
+ if ((dir = cupsDirOpen(RequestRoot)) == NULL)
{
- if (cupsdOpenPipe(job->status_pipes))
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR,
- "Unable to create job status pipes - %s.", strerror(errno));
- snprintf(printer->state_message, sizeof(printer->state_message),
- "Unable to create status pipes - %s.", strerror(errno));
-
- cupsdAddPrinterHistory(printer);
-
- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
- "Job canceled because the server could not create the job "
- "status pipes.");
-
- goto abort_job;
- }
-
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: status_pipes = [ %d %d ]",
- job->status_pipes[0], job->status_pipes[1]);
-
- job->status_buffer = cupsdStatBufNew(job->status_pipes[0], NULL);
- job->status_level = CUPSD_LOG_INFO;
+ cupsdLogMessage(CUPSD_LOG_ERROR,
+ "Unable to open spool directory \"%s\": %s",
+ RequestRoot, strerror(errno));
+ return;
}
- job->status = 0;
- memset(job->filters, 0, sizeof(job->filters));
-
- if (!job->profile)
- job->profile = cupsdCreateProfile(job->id);
-
- for (i = 0, slot = 0, filter = (mime_filter_t *)cupsArrayFirst(filters);
- filter;
- i ++, filter = (mime_filter_t *)cupsArrayNext(filters))
- {
- if (filter->filter[0] != '/')
- snprintf(command, sizeof(command), "%s/filter/%s", ServerBin,
- filter->filter);
- else
- strlcpy(command, filter->filter, sizeof(command));
+ /*
+ * Read all the c##### files...
+ */
- if (i < (cupsArrayCount(filters) - 1))
+ while ((dent = cupsDirRead(dir)) != NULL)
+ if (strlen(dent->filename) >= 6 && dent->filename[0] == 'c')
{
- if (cupsdOpenPipe(filterfds[slot]))
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR,
- "Unable to create job filter pipes - %s.", strerror(errno));
- snprintf(printer->state_message, sizeof(printer->state_message),
- "Unable to create filter pipes - %s.", strerror(errno));
- cupsdAddPrinterHistory(printer);
-
- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
- "Job canceled because the server could not create the "
- "filter pipes.");
+ /*
+ * Allocate memory for the job...
+ */
- goto abort_job;
- }
- }
- else
- {
- if (job->current_file == 1)
+ if ((job = calloc(sizeof(cupsd_job_t), 1)) == NULL)
{
- if (strncmp(printer->device_uri, "file:", 5) != 0)
- {
- if (cupsdOpenPipe(job->print_pipes))
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR,
- "Unable to create job backend pipes - %s.",
- strerror(errno));
- snprintf(printer->state_message, sizeof(printer->state_message),
- "Unable to create backend pipes - %s.", strerror(errno));
- cupsdAddPrinterHistory(printer);
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Ran out of memory for jobs!");
+ cupsDirClose(dir);
+ return;
+ }
- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
- "Job canceled because the server could not create "
- "the backend pipes.");
+ /*
+ * Assign the job ID...
+ */
- goto abort_job;
- }
- }
- else
- {
- job->print_pipes[0] = -1;
- if (!strcmp(printer->device_uri, "file:/dev/null") ||
- !strcmp(printer->device_uri, "file:///dev/null"))
- job->print_pipes[1] = -1;
- else
- {
- if (!strncmp(printer->device_uri, "file:/dev/", 10))
- job->print_pipes[1] = open(printer->device_uri + 5,
- O_WRONLY | O_EXCL);
- else if (!strncmp(printer->device_uri, "file:///dev/", 12))
- job->print_pipes[1] = open(printer->device_uri + 7,
- O_WRONLY | O_EXCL);
- else if (!strncmp(printer->device_uri, "file:///", 8))
- job->print_pipes[1] = open(printer->device_uri + 7,
- O_WRONLY | O_CREAT | O_TRUNC, 0600);
- else
- job->print_pipes[1] = open(printer->device_uri + 5,
- O_WRONLY | O_CREAT | O_TRUNC, 0600);
+ job->id = atoi(dent->filename + 1);
+ job->back_pipes[0] = -1;
+ job->back_pipes[1] = -1;
+ job->print_pipes[0] = -1;
+ job->print_pipes[1] = -1;
+ job->side_pipes[0] = -1;
+ job->side_pipes[1] = -1;
+ job->status_pipes[0] = -1;
+ job->status_pipes[1] = -1;
- if (job->print_pipes[1] < 0)
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR,
- "Unable to open output file \"%s\" - %s.",
- printer->device_uri, strerror(errno));
- snprintf(printer->state_message, sizeof(printer->state_message),
- "Unable to open output file \"%s\" - %s.",
- printer->device_uri, strerror(errno));
+ if (job->id >= NextJobId)
+ NextJobId = job->id + 1;
- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
- "Job canceled because the server could not open the "
- "output file.");
+ /*
+ * Load the job...
+ */
- goto abort_job;
- }
+ cupsdLoadJob(job);
- fcntl(job->print_pipes[1], F_SETFD,
- fcntl(job->print_pipes[1], F_GETFD) | FD_CLOEXEC);
- }
- }
+ /*
+ * Insert the job into the array, sorting by job priority and ID...
+ */
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: print_pipes = [ %d %d ]",
- job->print_pipes[0], job->print_pipes[1]);
- }
+ cupsArrayAdd(Jobs, job);
- filterfds[slot][0] = job->print_pipes[0];
- filterfds[slot][1] = job->print_pipes[1];
+ if (job->state_value <= IPP_JOB_STOPPED)
+ cupsArrayAdd(ActiveJobs, job);
+ else
+ unload_job(job);
}
- cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: filter=\"%s\"", command);
- cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: filterfds[%d]=[ %d %d ]",
- slot, filterfds[slot][0], filterfds[slot][1]);
+ cupsDirClose(dir);
+}
- pid = cupsdStartProcess(command, argv, envp, filterfds[!slot][0],
- filterfds[slot][1], job->status_pipes[1],
- job->back_pipes[0], job->side_pipes[0], 0,
- job->profile, job->filters + i);
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: Closing filter pipes for slot %d [ %d %d ]...",
- !slot, filterfds[!slot][0], filterfds[!slot][1]);
+/*
+ * 'set_hold_until()' - Set the hold time and update job-hold-until attribute.
+ */
- cupsdClosePipe(filterfds[!slot]);
+static void
+set_hold_until(cupsd_job_t *job, /* I - Job to update */
+ time_t holdtime) /* I - Hold until time */
+{
+ ipp_attribute_t *attr; /* job-hold-until attribute */
+ struct tm *holddate; /* Hold date */
+ char holdstr[64]; /* Hold time */
- if (pid == 0)
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR, "Unable to start filter \"%s\" - %s.",
- filter->filter, strerror(errno));
- snprintf(printer->state_message, sizeof(printer->state_message),
- "Unable to start filter \"%s\" - %s.",
- filter->filter, strerror(errno));
- cupsdAddPrinterHistory(printer);
+ /*
+ * Set the hold_until value and hold the job...
+ */
- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
- "Job canceled because the server could not execute a "
- "filter.");
+ cupsdLogMessage(CUPSD_LOG_DEBUG, "set_hold_until: hold_until = %d",
+ (int)holdtime);
- goto abort_job;
- }
+ job->state->values[0].integer = IPP_JOB_HELD;
+ job->state_value = IPP_JOB_HELD;
+ job->hold_until = holdtime;
- cupsdLogJob(job, CUPSD_LOG_INFO, "Started filter %s (PID %d)", command,
- pid);
+ /*
+ * Update the job-hold-until attribute with a string representing GMT
+ * time (HH:MM:SS)...
+ */
- argv[6] = NULL;
- slot = !slot;
- }
+ holddate = gmtime(&holdtime);
+ snprintf(holdstr, sizeof(holdstr), "%d:%d:%d", holddate->tm_hour,
+ holddate->tm_min, holddate->tm_sec);
- cupsArrayDelete(filters);
- filters = NULL;
+ if ((attr = ippFindAttribute(job->attrs, "job-hold-until",
+ IPP_TAG_KEYWORD)) == NULL)
+ attr = ippFindAttribute(job->attrs, "job-hold-until", IPP_TAG_NAME);
/*
- * Finally, pipe the final output into a backend process if needed...
+ * Either add the attribute or update the value of the existing one
*/
- if (strncmp(printer->device_uri, "file:", 5) != 0)
- {
- if (job->current_file == 1 || printer->remote)
- {
- sscanf(printer->device_uri, "%254[^:]", method);
- snprintf(command, sizeof(command), "%s/backend/%s", ServerBin, method);
+ if (attr == NULL)
+ ippAddString(job->attrs, IPP_TAG_JOB, IPP_TAG_KEYWORD, "job-hold-until",
+ NULL, holdstr);
+ else
+ cupsdSetString(&attr->values[0].string.text, holdstr);
- /*
- * See if the backend needs to run as root...
- */
+ job->dirty = 1;
+ cupsdMarkDirty(CUPSD_DIRTY_JOBS);
+}
- if (RunUser)
- backroot = 0;
- else if (stat(command, &backinfo))
- backroot = 0;
- else
- backroot = !(backinfo.st_mode & (S_IRWXG | S_IRWXO));
- argv[0] = printer->sanitized_device_uri;
+/*
+ * 'set_time()' - Set one of the "time-at-xyz" attributes.
+ */
- filterfds[slot][0] = -1;
- filterfds[slot][1] = -1;
+static void
+set_time(cupsd_job_t *job, /* I - Job to update */
+ const char *name) /* I - Name of attribute */
+{
+ ipp_attribute_t *attr; /* Time attribute */
- cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: backend=\"%s\"", command);
- cupsdLogJob(job, CUPSD_LOG_DEBUG2, "start_job: filterfds[%d] = [ %d %d ]",
- slot, filterfds[slot][0], filterfds[slot][1]);
- pid = cupsdStartProcess(command, argv, envp, filterfds[!slot][0],
- filterfds[slot][1], job->status_pipes[1],
- job->back_pipes[1], job->side_pipes[1],
- backroot, job->profile, &(job->backend));
+ if ((attr = ippFindAttribute(job->attrs, name, IPP_TAG_ZERO)) != NULL)
+ {
+ attr->value_tag = IPP_TAG_INTEGER;
+ attr->values[0].integer = time(NULL);
+ }
+}
- if (pid == 0)
- {
- cupsdLogJob(job, CUPSD_LOG_ERROR, "Unable to start backend \"%s\" - %s.",
- method, strerror(errno));
- snprintf(printer->state_message, sizeof(printer->state_message),
- "Unable to start backend \"%s\" - %s.", method,
- strerror(errno));
- cupsdAddEvent(CUPSD_EVENT_JOB_COMPLETED, job->printer, job,
- "Job canceled because the server could not execute "
- "the backend.");
+/*
+ * 'start_job()' - Start a print job.
+ */
- goto abort_job;
- }
- else
- {
- cupsdLogJob(job, CUPSD_LOG_INFO, "Started backend %s (PID %d)",
- command, pid);
- }
- }
+static void
+start_job(cupsd_job_t *job, /* I - Job ID */
+ cupsd_printer_t *printer) /* I - Printer to print job */
+{
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "start_job(job=%p(%d), printer=%p(%s))",
+ job, job->id, printer, printer->name);
- if (job->current_file == job->num_files)
- {
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: Closing print pipes [ %d %d ]...",
- job->print_pipes[0], job->print_pipes[1]);
+ /*
+ * Make sure we have some files around before we try to print...
+ */
- cupsdClosePipe(job->print_pipes);
+ if (job->num_files == 0)
+ {
+ cupsdSetJobState(job, IPP_JOB_ABORTED, CUPSD_JOB_DEFAULT,
+ "Aborting job because it has no files.");
+ return;
+ }
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: Closing back pipes [ %d %d ]...",
- job->back_pipes[0], job->back_pipes[1]);
+ /*
+ * Update the printer and job state to "processing"...
+ */
- cupsdClosePipe(job->back_pipes);
+ if (!cupsdLoadJob(job))
+ return;
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: Closing side pipes [ %d %d ]...",
- job->side_pipes[0], job->side_pipes[1]);
+ cupsdSetJobState(job, IPP_JOB_PROCESSING, CUPSD_JOB_DEFAULT, NULL);
+ cupsdSetPrinterState(printer, IPP_PRINTER_PROCESSING, 0);
- cupsdClosePipe(job->side_pipes);
+ job->cost = 0;
+ job->progress = 0;
+ job->printer = printer;
+ printer->job = job;
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: Closing status output pipe %d...",
- job->status_pipes[1]);
+ /*
+ * Setup the last exit status and security profiles...
+ */
- close(job->status_pipes[1]);
- job->status_pipes[1] = -1;
- }
- }
- else
- {
- filterfds[slot][0] = -1;
- filterfds[slot][1] = -1;
+ job->status = 0;
+ job->profile = cupsdCreateProfile(job->id);
- if (job->current_file == job->num_files)
- {
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: Closing print pipes [ %d %d ]...",
- job->print_pipes[0], job->print_pipes[1]);
+ /*
+ * Create the status pipes and buffer...
+ */
- cupsdClosePipe(job->print_pipes);
+ if (cupsdOpenPipe(job->status_pipes))
+ {
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "Unable to create job status pipes - %s.", strerror(errno));
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: Closing status output pipe %d...",
- job->status_pipes[1]);
+ cupsdSetJobState(job, IPP_JOB_STOPPED, CUPSD_JOB_DEFAULT,
+ "Job stopped because the scheduler could not create the "
+ "job status pipes.");
- close(job->status_pipes[1]);
- job->status_pipes[1] = -1;
- }
+ cupsdDestroyProfile(job->profile);
+ job->profile = NULL;
+ return;
}
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: Closing filter pipes for slot %d [ %d %d ]...",
- slot, filterfds[slot][0], filterfds[slot][1]);
- cupsdClosePipe(filterfds[slot]);
+ job->status_buffer = cupsdStatBufNew(job->status_pipes[0], NULL);
+ job->status_level = CUPSD_LOG_INFO;
+
+ /*
+ * Create the backchannel pipes and make them non-blocking...
+ */
- if (printer->remote && job->num_files > 1)
+ if (cupsdOpenPipe(job->back_pipes))
{
- for (i = 0; i < job->num_files; i ++)
- free(argv[i + 6]);
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "Unable to create back-channel pipes - %s.", strerror(errno));
+
+ cupsdSetJobState(job, IPP_JOB_STOPPED, CUPSD_JOB_DEFAULT,
+ "Job stopped because the scheduler could not create the "
+ "back-channel pipes.");
+
+ cupsdClosePipe(job->status_pipes);
+ cupsdStatBufDelete(job->status_buffer);
+ job->status_buffer = NULL;
+
+ cupsdDestroyProfile(job->profile);
+ job->profile = NULL;
+ return;
}
- free(argv);
+ fcntl(job->back_pipes[0], F_SETFL,
+ fcntl(job->back_pipes[0], F_GETFL) | O_NONBLOCK);
+ fcntl(job->back_pipes[1], F_SETFL,
+ fcntl(job->back_pipes[1], F_GETFL) | O_NONBLOCK);
- cupsdAddSelect(job->status_buffer->fd, (cupsd_selfunc_t)update_job, NULL,
- job);
+ /*
+ * Create the side-channel pipes and make them non-blocking...
+ */
- cupsdAddEvent(CUPSD_EVENT_JOB_STATE, job->printer, job, "Job #%d started.",
- job->id);
+ if (socketpair(AF_LOCAL, SOCK_STREAM, 0, job->side_pipes))
+ {
+ cupsdLogJob(job, CUPSD_LOG_DEBUG,
+ "Unable to create side-channel pipes - %s.", strerror(errno));
- return;
+ cupsdSetJobState(job, IPP_JOB_STOPPED, CUPSD_JOB_DEFAULT,
+ "Job stopped because the scheduler could not create the "
+ "side-channel pipes.");
+ cupsdClosePipe(job->back_pipes);
+
+ cupsdClosePipe(job->status_pipes);
+ cupsdStatBufDelete(job->status_buffer);
+ job->status_buffer = NULL;
+
+ cupsdDestroyProfile(job->profile);
+ job->profile = NULL;
+ return;
+ }
+
+ fcntl(job->side_pipes[0], F_SETFL,
+ fcntl(job->side_pipes[0], F_GETFL) | O_NONBLOCK);
+ fcntl(job->side_pipes[1], F_SETFL,
+ fcntl(job->side_pipes[1], F_GETFL) | O_NONBLOCK);
/*
- * If we get here, we need to abort the current job and close out all
- * files and pipes...
+ * Now start the first file in the job...
*/
- abort_job:
+ cupsdContinueJob(job);
+}
- for (slot = 0; slot < 2; slot ++)
- {
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: Closing filter pipes for slot %d [ %d %d ]...",
- slot, filterfds[slot][0], filterfds[slot][1]);
- cupsdClosePipe(filterfds[slot]);
- }
- cupsdLogJob(job, CUPSD_LOG_DEBUG2,
- "start_job: Closing status pipes [ %d %d ]...",
- job->status_pipes[0], job->status_pipes[1]);
- cupsdClosePipe(job->status_pipes);
- cupsdStatBufDelete(job->status_buffer);
+/*
+ * 'stop_job()' - Stop a print job.
+ */
- job->status_buffer = NULL;
+static void
+stop_job(cupsd_job_t *job, /* I - Job */
+ cupsd_jobaction_t action) /* I - Action */
+{
+ int i; /* Looping var */
- cupsArrayDelete(filters);
- if (printer->remote && job->num_files > 1)
- {
- for (i = 0; i < job->num_files; i ++)
- free(argv[i + 6]);
- }
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "stop_job(job=%p(%d), action=%d)", job,
+ job->id, action);
- free(argv);
+ FilterLevel -= job->cost;
+ job->cost = 0;
- cupsdStopJob(job, 0);
+ for (i = 0; job->filters[i]; i ++)
+ if (job->filters[i] > 0)
+ cupsdEndProcess(job->filters[i], action == CUPSD_JOB_FORCE);
+
+ if (job->backend > 0)
+ cupsdEndProcess(job->backend, action == CUPSD_JOB_FORCE);
}
@@ -3666,7 +3653,6 @@ update_job(cupsd_job_t *job) /* I - Job to check */
*ptr; /* Pointer update... */
int loglevel, /* Log level for message */
event = 0; /* Events? */
- cupsd_printer_t *printer; /* Printer for job */
static const char * const levels[] = /* Log levels */
{
"NONE",
@@ -3688,9 +3674,6 @@ update_job(cupsd_job_t *job) /* I - Job to check */
* a valid pointer...
*/
- if ((printer = job->printer) == NULL)
- printer = cupsdFindDest(job->dest);
-
while ((ptr = cupsdStatBufUpdate(job->status_buffer, &loglevel,
message, sizeof(message))) != NULL)
{
@@ -3723,9 +3706,9 @@ update_job(cupsd_job_t *job) /* I - Job to check */
job->sheets->values[0].integer += copies;
- if (printer->page_limit)
+ if (job->printer->page_limit)
{
- cupsd_quota_t *q = cupsdUpdateQuota(printer, job->username,
+ cupsd_quota_t *q = cupsdUpdateQuota(job->printer, job->username,
copies, 0);
#ifdef __APPLE__
@@ -3735,13 +3718,11 @@ update_job(cupsd_job_t *job) /* I - Job to check */
* Quota limit exceeded, cancel job in progress immediately...
*/
- cupsdLogJob(job, CUPSD_LOG_INFO,
- "Canceled because pages exceed user %s "
- "quota limit on printer %s (%s).",
- job->username, printer->name,
- printer->info);
-
- cupsdCancelJob(job, 1, IPP_JOB_CANCELED);
+ cupsdSetJobState(job, IPP_JOB_CANCELED, CUPSD_JOB_DEFAULT,
+ "Canceled job because pages exceed user %s "
+ "quota limit on printer %s (%s).",
+ job->username, job->printer->name,
+ job->printer->info);
return;
}
#else
@@ -3753,7 +3734,7 @@ update_job(cupsd_job_t *job) /* I - Job to check */
cupsdLogPage(job, message);
if (job->sheets)
- cupsdAddEvent(CUPSD_EVENT_JOB_PROGRESS, printer, job,
+ cupsdAddEvent(CUPSD_EVENT_JOB_PROGRESS, job->printer, job,
"Printed %d page(s).", job->sheets->values[0].integer);
}
else if (loglevel == CUPSD_LOG_STATE)
@@ -3762,13 +3743,13 @@ update_job(cupsd_job_t *job) /* I - Job to check */
if (!strcmp(message, "paused"))
{
- cupsdStopPrinter(printer, 1);
+ cupsdStopPrinter(job->printer, 1);
return;
}
else
{
- cupsdSetPrinterReasons(printer, message);
- cupsdAddPrinterHistory(printer);
+ cupsdSetPrinterReasons(job->printer, message);
+ cupsdAddPrinterHistory(job->printer);
event |= CUPSD_EVENT_PRINTER_STATE;
}
@@ -3792,10 +3773,10 @@ update_job(cupsd_job_t *job) /* I - Job to check */
if ((attr = cupsGetOption("auth-info-required", num_attrs,
attrs)) != NULL)
{
- cupsdSetAuthInfoRequired(printer, attr, NULL);
- cupsdSetPrinterAttrs(printer);
+ cupsdSetAuthInfoRequired(job->printer, attr, NULL);
+ cupsdSetPrinterAttrs(job->printer);
- if (printer->type & CUPS_PRINTER_DISCOVERED)
+ if (job->printer->type & CUPS_PRINTER_DISCOVERED)
cupsdMarkDirty(CUPSD_DIRTY_REMOTE);
else
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
@@ -3812,7 +3793,7 @@ update_job(cupsd_job_t *job) /* I - Job to check */
job->progress = progress;
if (job->sheets)
- cupsdAddEvent(CUPSD_EVENT_JOB_PROGRESS, printer, job,
+ cupsdAddEvent(CUPSD_EVENT_JOB_PROGRESS, job->printer, job,
"Printing page %d, %d%%",
job->sheets->values[0].integer, job->progress);
}
@@ -3820,69 +3801,69 @@ update_job(cupsd_job_t *job) /* I - Job to check */
if ((attr = cupsGetOption("printer-alert", num_attrs, attrs)) != NULL)
{
- cupsdSetString(&printer->alert, attr);
+ cupsdSetString(&job->printer->alert, attr);
event |= CUPSD_EVENT_PRINTER_STATE;
}
if ((attr = cupsGetOption("printer-alert-description", num_attrs,
attrs)) != NULL)
{
- cupsdSetString(&printer->alert_description, attr);
+ cupsdSetString(&job->printer->alert_description, attr);
event |= CUPSD_EVENT_PRINTER_STATE;
}
if ((attr = cupsGetOption("marker-colors", num_attrs, attrs)) != NULL)
{
- cupsdSetPrinterAttr(printer, "marker-colors", (char *)attr);
- printer->marker_time = time(NULL);
+ cupsdSetPrinterAttr(job->printer, "marker-colors", (char *)attr);
+ job->printer->marker_time = time(NULL);
event |= CUPSD_EVENT_PRINTER_STATE;
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
}
if ((attr = cupsGetOption("marker-levels", num_attrs, attrs)) != NULL)
{
- cupsdSetPrinterAttr(printer, "marker-levels", (char *)attr);
- printer->marker_time = time(NULL);
+ cupsdSetPrinterAttr(job->printer, "marker-levels", (char *)attr);
+ job->printer->marker_time = time(NULL);
event |= CUPSD_EVENT_PRINTER_STATE;
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
}
if ((attr = cupsGetOption("marker-low-levels", num_attrs, attrs)) != NULL)
{
- cupsdSetPrinterAttr(printer, "marker-low-levels", (char *)attr);
- printer->marker_time = time(NULL);
+ cupsdSetPrinterAttr(job->printer, "marker-low-levels", (char *)attr);
+ job->printer->marker_time = time(NULL);
event |= CUPSD_EVENT_PRINTER_STATE;
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
}
if ((attr = cupsGetOption("marker-high-levels", num_attrs, attrs)) != NULL)
{
- cupsdSetPrinterAttr(printer, "marker-high-levels", (char *)attr);
- printer->marker_time = time(NULL);
+ cupsdSetPrinterAttr(job->printer, "marker-high-levels", (char *)attr);
+ job->printer->marker_time = time(NULL);
event |= CUPSD_EVENT_PRINTER_STATE;
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
}
if ((attr = cupsGetOption("marker-message", num_attrs, attrs)) != NULL)
{
- cupsdSetPrinterAttr(printer, "marker-message", (char *)attr);
- printer->marker_time = time(NULL);
+ cupsdSetPrinterAttr(job->printer, "marker-message", (char *)attr);
+ job->printer->marker_time = time(NULL);
event |= CUPSD_EVENT_PRINTER_STATE;
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
}
if ((attr = cupsGetOption("marker-names", num_attrs, attrs)) != NULL)
{
- cupsdSetPrinterAttr(printer, "marker-names", (char *)attr);
- printer->marker_time = time(NULL);
+ cupsdSetPrinterAttr(job->printer, "marker-names", (char *)attr);
+ job->printer->marker_time = time(NULL);
event |= CUPSD_EVENT_PRINTER_STATE;
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
}
if ((attr = cupsGetOption("marker-types", num_attrs, attrs)) != NULL)
{
- cupsdSetPrinterAttr(printer, "marker-types", (char *)attr);
- printer->marker_time = time(NULL);
+ cupsdSetPrinterAttr(job->printer, "marker-types", (char *)attr);
+ job->printer->marker_time = time(NULL);
event |= CUPSD_EVENT_PRINTER_STATE;
cupsdMarkDirty(CUPSD_DIRTY_PRINTERS);
}
@@ -3903,8 +3884,8 @@ update_job(cupsd_job_t *job) /* I - Job to check */
num_keywords = cupsParseOptions(message, 0, &keywords);
- if (cupsdUpdatePrinterPPD(printer, num_keywords, keywords))
- cupsdSetPrinterAttrs(printer);
+ if (cupsdUpdatePrinterPPD(job->printer, num_keywords, keywords))
+ cupsdSetPrinterAttrs(job->printer);
cupsFreeOptions(num_keywords, keywords);
}
@@ -3917,41 +3898,44 @@ update_job(cupsd_job_t *job) /* I - Job to check */
if (*ptr)
{
- cupsdSetPrinterReasons(printer, "+com.apple.print.recoverable-warning");
- cupsdSetString(&(printer->recoverable), ptr);
- cupsdAddPrinterHistory(printer);
+ cupsdSetPrinterReasons(job->printer,
+ "+com.apple.print.recoverable-warning");
+ cupsdSetString(&(job->printer->recoverable), ptr);
+ cupsdAddPrinterHistory(job->printer);
event |= CUPSD_EVENT_PRINTER_STATE;
}
}
else if (!strncmp(message, "recovered:", 10))
{
- cupsdSetPrinterReasons(printer, "-com.apple.print.recoverable-warning");
+ cupsdSetPrinterReasons(job->printer,
+ "-com.apple.print.recoverable-warning");
ptr = message + 10;
while (isspace(*ptr & 255))
ptr ++;
- cupsdSetString(&(printer->recoverable), ptr);
- cupsdAddPrinterHistory(printer);
+ cupsdSetString(&(job->printer->recoverable), ptr);
+ cupsdAddPrinterHistory(job->printer);
event |= CUPSD_EVENT_PRINTER_STATE;
}
#endif /* __APPLE__ */
else
{
- cupsdLogJob(job, loglevel, "%s", message);
+ if (loglevel != CUPSD_LOG_INFO && loglevel > LogLevel)
+ cupsdLogJob(job, loglevel, "%d %s", loglevel, message);
if (loglevel < CUPSD_LOG_DEBUG)
{
- strlcpy(printer->state_message, message,
- sizeof(printer->state_message));
- cupsdAddPrinterHistory(printer);
+ strlcpy(job->printer->state_message, message,
+ sizeof(job->printer->state_message));
+ cupsdAddPrinterHistory(job->printer);
event |= CUPSD_EVENT_PRINTER_STATE;
if (loglevel <= job->status_level)
{
/*
- * Some messages show in the printer-state-message attribute...
+ * Some messages show in the job-printer-state-message attribute...
*/
if (loglevel != CUPSD_LOG_NOTICE)
@@ -3973,11 +3957,11 @@ update_job(cupsd_job_t *job) /* I - Job to check */
}
if (event & CUPSD_EVENT_PRINTER_STATE)
- cupsdAddEvent(CUPSD_EVENT_PRINTER_STATE, printer, NULL,
- (printer->type & CUPS_PRINTER_CLASS) ?
+ cupsdAddEvent(CUPSD_EVENT_PRINTER_STATE, job->printer, NULL,
+ (job->printer->type & CUPS_PRINTER_CLASS) ?
"Class \"%s\" state changed." :
"Printer \"%s\" state changed.",
- printer->name);
+ job->printer->name);
if (ptr == NULL && !job->status_buffer->bufused)
{
@@ -3998,7 +3982,13 @@ update_job(cupsd_job_t *job) /* I - Job to check */
* Handle the end of job stuff...
*/
- cupsdFinishJob(job);
+ finalize_job(job);
+
+ /*
+ * Check for new jobs...
+ */
+
+ cupsdCheckJobs();
}
}
@@ -4009,10 +3999,9 @@ update_job(cupsd_job_t *job) /* I - Job to check */
void
update_job_attrs(cupsd_job_t *job, /* I - Job to update */
- int do_message)/* I - 1 = update job-printer-state message */
+ int do_message)/* I - 1 = copy job-printer-state message */
{
int i; /* Looping var */
- cupsd_printer_t *printer; /* Printer for job */
int num_reasons; /* Actual number of reasons */
const char * const *reasons; /* Reasons */
static const char *none = "none"; /* "none" reason */
@@ -4037,38 +4026,38 @@ update_job_attrs(cupsd_job_t *job, /* I - Job to update */
"job-printer-state-reasons",
IPP_TAG_KEYWORD);
- if ((printer = job->printer) == NULL)
- printer = cupsdFindDest(job->dest);
-
- if (!printer)
- return;
-
/*
- * Otherwise copy the printer-state-message value...
+ * Copy or clear the printer-state-message value as needed...
*/
- if (printer->state_message[0] &&
- (do_message || !job->printer_message->values[0].string.text[0]))
+ if (job->state_value != IPP_JOB_PROCESSING &&
+ job->status_level == CUPSD_LOG_INFO)
+ cupsdSetString(&(job->printer_message->values[0].string.text), "");
+ else if (job->printer->state_message[0] && do_message)
cupsdSetString(&(job->printer_message->values[0].string.text),
- printer->state_message);
-
+ job->printer->state_message);
+
/*
* ... and the printer-state-reasons value...
*/
- if (printer->num_reasons == 0)
+ if (job->printer->num_reasons == 0)
{
num_reasons = 1;
reasons = &none;
}
else
{
- num_reasons = printer->num_reasons;
- reasons = (const char * const *)printer->reasons;
+ num_reasons = job->printer->num_reasons;
+ reasons = (const char * const *)job->printer->reasons;
}
if (!job->printer_reasons || job->printer_reasons->num_values != num_reasons)
{
+ /*
+ * Replace/create a job-printer-state-reasons attribute...
+ */
+
ippDeleteAttribute(job->attrs, job->printer_reasons);
job->printer_reasons = ippAddStrings(job->attrs,
@@ -4076,12 +4065,31 @@ update_job_attrs(cupsd_job_t *job, /* I - Job to update */
"job-printer-state-reasons",
num_reasons, NULL, NULL);
}
- else if (job->printer_reasons)
+ else
{
- for (i = 0; i < job->printer_reasons->num_values; i ++)
+ /*
+ * Don't bother clearing the reason strings if they are the same...
+ */
+
+ for (i = 0; i < num_reasons; i ++)
+ if (strcmp(job->printer_reasons->values[i].string.text, reasons[i]))
+ break;
+
+ if (i >= num_reasons)
+ return;
+
+ /*
+ * Not the same, so free the current strings...
+ */
+
+ for (i = 0; i < num_reasons; i ++)
_cupsStrFree(job->printer_reasons->values[i].string.text);
}
+ /*
+ * Copy the reasons...
+ */
+
for (i = 0; i < num_reasons; i ++)
job->printer_reasons->values[i].string.text = _cupsStrAlloc(reasons[i]);
}
diff --git a/scheduler/job.h b/scheduler/job.h
index e3f2faa3b..2056e4ab7 100644
--- a/scheduler/job.h
+++ b/scheduler/job.h
@@ -13,6 +13,18 @@
* file is missing or damaged, see the license at "http://www.cups.org/".
*/
+/*
+ * Constants...
+ */
+
+typedef enum cupsd_jobaction_e /**** Actions for state changes ****/
+{
+ CUPSD_JOB_DEFAULT, /* Use default action */
+ CUPSD_JOB_FORCE, /* Force the change */
+ CUPSD_JOB_PURGE /* Force the change and purge */
+} cupsd_jobaction_t;
+
+
/*
* Job request structure...
*/
@@ -23,10 +35,11 @@ typedef struct cupsd_job_s
priority, /* Job priority */
dirty; /* Do we need to write the "c" file? */
ipp_jstate_t state_value; /* Cached job-state */
- int pending_timeout;/* Non-zero if the job was created and waiting on files */
+ int pending_timeout;/* Non-zero if the job was created and
+ * waiting on files */
char *username; /* Printing user */
char *dest; /* Destination printer or class */
- cups_ptype_t dtype; /* Destination type (class/remote bits) */
+ cups_ptype_t dtype; /* Destination type */
int num_files; /* Number of files in job */
mime_type_t **filetypes; /* File types */
int *compressions; /* Compression status of each file */
@@ -46,7 +59,8 @@ typedef struct cupsd_job_s
side_pipes[2], /* Sidechannel pipes */
status_pipes[2];/* Status pipes */
cupsd_statbuf_t *status_buffer; /* Status buffer for this job */
- int status_level; /* Highest log level in a status message */
+ int status_level; /* Highest log level in a status
+ * message */
int cost; /* Filtering cost */
int filters[MAX_FILTERS + 1];
/* Filter process IDs, 0 terminated */
@@ -54,9 +68,12 @@ typedef struct cupsd_job_s
int status; /* Status code from filters */
cupsd_printer_t *printer; /* Printer this job is assigned to */
int tries; /* Number of tries for this job */
- char *auth_username, /* AUTH_USERNAME environment variable, if any */
- *auth_domain, /* AUTH_DOMAIN environment variable, if any */
- *auth_password; /* AUTH_PASSWORD environment variable, if any */
+ char *auth_username, /* AUTH_USERNAME environment variable,
+ * if any */
+ *auth_domain, /* AUTH_DOMAIN environment variable,
+ * if any */
+ *auth_password; /* AUTH_PASSWORD environment variable,
+ * if any */
void *profile; /* Security profile */
int progress; /* Printing progress */
#ifdef HAVE_GSSAPI
@@ -103,19 +120,17 @@ VAR int JobRetryLimit VALUE(5),
*/
extern cupsd_job_t *cupsdAddJob(int priority, const char *dest);
-extern void cupsdCancelJob(cupsd_job_t *job, int purge,
- ipp_jstate_t newstate);
extern void cupsdCancelJobs(const char *dest, const char *username,
int purge);
extern void cupsdCheckJobs(void);
extern void cupsdCleanJobs(void);
-extern void cupsdDeleteJob(cupsd_job_t *job);
+extern void cupsdContinueJob(cupsd_job_t *job);
+extern void cupsdDeleteJob(cupsd_job_t *job,
+ cupsd_jobaction_t action);
extern cupsd_job_t *cupsdFindJob(int id);
-extern void cupsdFinishJob(cupsd_job_t *job);
extern void cupsdFreeAllJobs(void);
extern int cupsdGetPrinterJobCount(const char *dest);
extern int cupsdGetUserJobCount(const char *username);
-extern void cupsdHoldJob(cupsd_job_t *job);
extern void cupsdLoadAllJobs(void);
extern int cupsdLoadJob(cupsd_job_t *job);
extern void cupsdMoveJob(cupsd_job_t *job, cupsd_printer_t *p);
@@ -123,10 +138,18 @@ extern void cupsdReleaseJob(cupsd_job_t *job);
extern void cupsdRestartJob(cupsd_job_t *job);
extern void cupsdSaveAllJobs(void);
extern void cupsdSaveJob(cupsd_job_t *job);
-extern void cupsdSetJobHoldUntil(cupsd_job_t *job, const char *when);
+extern void cupsdSetJobHoldUntil(cupsd_job_t *job,
+ const char *when, int update);
extern void cupsdSetJobPriority(cupsd_job_t *job, int priority);
-extern void cupsdStopAllJobs(int force);
-extern void cupsdStopJob(cupsd_job_t *job, int force);
+extern void cupsdSetJobState(cupsd_job_t *job,
+ ipp_jstate_t newstate,
+ cupsd_jobaction_t action,
+ const char *message, ...)
+#ifdef __GNUC__
+__attribute__ ((__format__ (__printf__, 4, 5)))
+#endif /* __GNUC__ */
+;
+extern void cupsdStopAllJobs(cupsd_jobaction_t action);
extern int cupsdTimeoutJob(cupsd_job_t *job);
extern void cupsdUnloadCompletedJobs(void);
diff --git a/scheduler/main.c b/scheduler/main.c
index b7e61a17f..437f0f5ba 100644
--- a/scheduler/main.c
+++ b/scheduler/main.c
@@ -670,12 +670,6 @@ main(int argc, /* I - Number of command-line args */
while (!stop_scheduler)
{
-#ifdef DEBUG
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "main: Top of loop, dead_children=%d, NeedReload=%d",
- dead_children, NeedReload);
-#endif /* DEBUG */
-
/*
* Check if there are dead children to handle...
*/
@@ -1628,7 +1622,8 @@ static void
process_children(void)
{
int status; /* Exit status of child */
- int pid; /* Process ID of child */
+ int pid, /* Process ID of child */
+ job_id; /* Job ID of child */
cupsd_job_t *job; /* Current job */
int i; /* Looping var */
char name[1024]; /* Process name */
@@ -1658,7 +1653,7 @@ process_children(void)
* Collect the name of the process that finished...
*/
- cupsdFinishProcess(pid, name, sizeof(name));
+ cupsdFinishProcess(pid, name, sizeof(name), &job_id);
/*
* Delete certificates for CGI processes...
@@ -1668,76 +1663,87 @@ process_children(void)
cupsdDeleteCert(pid);
/*
- * Lookup the PID in the jobs list...
+ * Handle completed job filters...
*/
- for (job = (cupsd_job_t *)cupsArrayFirst(ActiveJobs);
- job;
- job = (cupsd_job_t *)cupsArrayNext(ActiveJobs))
- if (job->state_value >= IPP_JOB_HELD && (job->filters[0] || job->backend))
+ if (job_id > 0 && (job = cupsdFindJob(job_id)) != NULL)
+ {
+ for (i = 0; job->filters[i]; i ++)
+ if (job->filters[i] == pid)
+ break;
+
+ if (job->filters[i] || job->backend == pid)
{
- for (i = 0; job->filters[i]; i ++)
- if (job->filters[i] == pid)
- break;
+ /*
+ * OK, this process has gone away; what's left?
+ */
+
+ if (job->filters[i])
+ job->filters[i] = -pid;
+ else
+ job->backend = -pid;
- if (job->filters[i] || job->backend == pid)
+ if (status && status != SIGTERM && status != SIGKILL &&
+ job->status >= 0)
{
/*
- * OK, this process has gone away; what's left?
+ * An error occurred; save the exit status so we know to stop
+ * the printer or cancel the job when all of the filters finish...
+ *
+ * A negative status indicates that the backend failed and the
+ * printer needs to be stopped.
*/
- if (job->filters[i])
- job->filters[i] = -pid;
+ if (job->filters[i])
+ job->status = status; /* Filter failed */
else
- job->backend = -pid;
+ job->status = -status; /* Backend failed */
- if (status && job->status >= 0)
+ if (!(job->printer->type & CUPS_PRINTER_FAX) &&
+ job->status_level >= CUPSD_LOG_ERROR)
{
- /*
- * An error occurred; save the exit status so we know to stop
- * the printer or cancel the job when all of the filters finish...
- *
- * A negative status indicates that the backend failed and the
- * printer needs to be stopped.
- */
+ job->status_level = CUPSD_LOG_ERROR;
- if (job->filters[i])
- job->status = status; /* Filter failed */
- else
- job->status = -status; /* Backend failed */
+ snprintf(job->printer->state_message,
+ sizeof(job->printer->state_message), "%s failed", name);
+ cupsdAddPrinterHistory(job->printer);
- if (job->printer && !(job->printer->type & CUPS_PRINTER_FAX) &&
- job->status_level > CUPSD_LOG_ERROR)
+ if (!job->printer_message)
{
- job->status_level = CUPSD_LOG_ERROR;
-
- snprintf(job->printer->state_message,
- sizeof(job->printer->state_message), "%s failed", name);
- cupsdAddPrinterHistory(job->printer);
+ if ((job->printer_message =
+ ippFindAttribute(job->attrs, "job-printer-state-message",
+ IPP_TAG_TEXT)) == NULL)
+ job->printer_message = ippAddString(job->attrs, IPP_TAG_JOB,
+ IPP_TAG_TEXT,
+ "job-printer-state-message",
+ NULL, "");
}
+
+ cupsdSetString(&(job->printer_message->values[0].string.text),
+ job->printer->state_message);
}
+ }
- /*
- * If this is not the last file in a job, see if all of the
- * filters are done, and if so move to the next file.
- */
+ /*
+ * If this is not the last file in a job, see if all of the
+ * filters are done, and if so move to the next file.
+ */
- if (job->current_file < job->num_files)
- {
- for (i = 0; job->filters[i] < 0; i ++);
+ if (job->current_file < job->num_files)
+ {
+ for (i = 0; job->filters[i] < 0; i ++);
- if (!job->filters[i])
- {
- /*
- * Process the next file...
- */
+ if (!job->filters[i])
+ {
+ /*
+ * Process the next file...
+ */
- cupsdFinishJob(job);
- }
+ cupsdContinueJob(job);
}
- break;
}
}
+ }
/*
* Show the exit status as needed, ignoring SIGTERM and SIGKILL errors
diff --git a/scheduler/printers.c b/scheduler/printers.c
index 003210aa4..c826120f1 100644
--- a/scheduler/printers.c
+++ b/scheduler/printers.c
@@ -803,14 +803,14 @@ cupsdDeletePrinter(
free(p->history);
}
+ delete_printer_filters(p);
+
for (i = 0; i < p->num_reasons; i ++)
_cupsStrFree(p->reasons[i]);
ippDelete(p->attrs);
ippDelete(p->ppd_attrs);
- delete_printer_filters(p);
-
mimeDeleteType(MimeDatabase, p->filetype);
mimeDeleteType(MimeDatabase, p->prefiltertype);
@@ -1099,7 +1099,11 @@ cupsdLoadAllPrinters(void)
}
else if (!strcasecmp(line, "Reason"))
{
- if (value)
+ if (value &&
+ strcmp(value, "com.apple.print.recoverable-warning") &&
+ strcmp(value, "connecting-to-device") &&
+ strcmp(value, "cups-insecure-filter-error") &&
+ strcmp(value, "cups-missing-filter-error"))
{
for (i = 0 ; i < p->num_reasons; i ++)
if (!strcmp(value, p->reasons[i]))
@@ -1590,7 +1594,9 @@ cupsdSaveAllPrinters(void)
cupsFilePrintf(fp, "StateTime %d\n", (int)printer->state_time);
for (i = 0; i < printer->num_reasons; i ++)
- if (strcmp(printer->reasons[i], "connecting-to-device") &&
+ if (strcmp(printer->reasons[i], "com.apple.print.recoverable-warning") &&
+ strcmp(printer->reasons[i], "connecting-to-device") &&
+ strcmp(printer->reasons[i], "cups-insecure-filter-error") &&
strcmp(printer->reasons[i], "cups-missing-filter-error"))
cupsFilePutConf(fp, "Reason", printer->reasons[i]);
@@ -2442,6 +2448,30 @@ cupsdSetPrinterAttrs(cupsd_printer_t *p)/* I - Printer to setup */
}
}
+ if ((oldattr = ippFindAttribute(oldattrs, "marker-low-levels",
+ IPP_TAG_INTEGER)) != NULL)
+ {
+ if ((attr = ippAddIntegers(p->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
+ "marker-low-levels", oldattr->num_values,
+ NULL)) != NULL)
+ {
+ for (i = 0; i < oldattr->num_values; i ++)
+ attr->values[i].integer = oldattr->values[i].integer;
+ }
+ }
+
+ if ((oldattr = ippFindAttribute(oldattrs, "marker-high-levels",
+ IPP_TAG_INTEGER)) != NULL)
+ {
+ if ((attr = ippAddIntegers(p->attrs, IPP_TAG_PRINTER, IPP_TAG_INTEGER,
+ "marker-high-levels", oldattr->num_values,
+ NULL)) != NULL)
+ {
+ for (i = 0; i < oldattr->num_values; i ++)
+ attr->values[i].integer = oldattr->values[i].integer;
+ }
+ }
+
if ((oldattr = ippFindAttribute(oldattrs, "marker-names",
IPP_TAG_NAME)) != NULL)
{
@@ -2638,24 +2668,8 @@ cupsdSetPrinterReasons(
*rptr; /* Pointer into reason */
- if (!p || !s)
- {
- cupsdLogMessage(CUPSD_LOG_EMERG,
- "cupsdSetPrinterReasons called with p=%p and s=%p!", p, s);
- return;
- }
-
- if (LogLevel == CUPSD_LOG_DEBUG2)
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdSetPrinterReasons(p=%p(%s),s=\"%s\"", p, p->name, s);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdSetPrinterReasons: num_reasons=%d",
- p->num_reasons);
- for (i = 0; i < p->num_reasons; i ++)
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdSetPrinterReasons: reasons[%d]=%p(\"%s\")", i,
- p->reasons[i], p->reasons[i]);
- }
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "cupsdSetPrinterReasons(p=%p(%s),s=\"%s\"", p, p->name, s);
if (s[0] == '-' || s[0] == '+')
{
@@ -2783,17 +2797,6 @@ cupsdSetPrinterReasons(
}
}
}
-
- if (LogLevel == CUPSD_LOG_DEBUG2)
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdSetPrinterReasons: NEW num_reasons=%d",
- p->num_reasons);
- for (i = 0; i < p->num_reasons; i ++)
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdSetPrinterReasons: NEW reasons[%d]=%p(\"%s\")", i,
- p->reasons[i], p->reasons[i]);
- }
}
@@ -2848,11 +2851,26 @@ cupsdSetPrinterState(
#endif /* __sgi */
}
+ /*
+ * Set/clear the paused reason as needed...
+ */
+
if (s == IPP_PRINTER_STOPPED)
cupsdSetPrinterReasons(p, "+paused");
else
cupsdSetPrinterReasons(p, "-paused");
+ /*
+ * Clear the message for the queue when going to processing...
+ */
+
+ if (s == IPP_PRINTER_PROCESSING)
+ p->state_message[0] = '\0';
+
+ /*
+ * Update the printer history...
+ */
+
cupsdAddPrinterHistory(p);
/*
@@ -2867,8 +2885,8 @@ cupsdSetPrinterState(
* to stopped (or visa-versa)...
*/
- if ((old_state == IPP_PRINTER_STOPPED) != (s == IPP_PRINTER_STOPPED) &&
- update)
+ if (update &&
+ (old_state == IPP_PRINTER_STOPPED) != (s == IPP_PRINTER_STOPPED))
{
if (p->type & CUPS_PRINTER_CLASS)
cupsdMarkDirty(CUPSD_DIRTY_CLASSES);
@@ -2886,9 +2904,6 @@ void
cupsdStopPrinter(cupsd_printer_t *p, /* I - Printer to stop */
int update)/* I - Update printers.conf? */
{
- cupsd_job_t *job; /* Active print job */
-
-
/*
* Set the printer state...
*/
@@ -2900,32 +2915,8 @@ cupsdStopPrinter(cupsd_printer_t *p, /* I - Printer to stop */
*/
if (p->job)
- {
- /*
- * Get pointer to job...
- */
-
- job = (cupsd_job_t *)p->job;
-
- /*
- * Stop it...
- */
-
- cupsdStopJob(job, 0);
-
- /*
- * Reset the state to pending...
- */
-
- job->state->values[0].integer = IPP_JOB_PENDING;
- job->state_value = IPP_JOB_PENDING;
- job->dirty = 1;
-
- cupsdMarkDirty(CUPSD_DIRTY_JOBS);
-
- cupsdAddEvent(CUPSD_EVENT_JOB_STOPPED, p, job,
- "Job stopped due to printer being paused");
- }
+ cupsdSetJobState(p->job, IPP_JOB_PENDING, CUPSD_JOB_DEFAULT,
+ "Job stopped due to printer being paused.");
}
@@ -3889,6 +3880,9 @@ delete_printer_filters(
mimeDeleteFilter(MimeDatabase, filter);
}
+
+ cupsdSetPrinterReasons(p, "-cups-insecure-filter-error"
+ ",cups-missing-filter-error");
}
@@ -4060,9 +4054,13 @@ load_ppd(cupsd_printer_t *p) /* I - Printer */
if (ppd->num_sizes == 0)
{
- cupsdLogMessage(CUPSD_LOG_CRIT,
- "The PPD file for printer %s contains no media "
- "options and is therefore invalid!", p->name);
+ if (!ppdFindAttr(ppd, "APScannerOnly", NULL))
+ cupsdLogMessage(CUPSD_LOG_CRIT,
+ "The PPD file for printer %s contains no media "
+ "options and is therefore invalid!", p->name);
+
+ ippAddString(p->ppd_attrs, IPP_TAG_PRINTER, IPP_TAG_KEYWORD,
+ "media-supported", NULL, "unknown");
}
else
{
@@ -4237,6 +4235,16 @@ load_ppd(cupsd_printer_t *p) /* I - Printer */
else
p->type |= CUPS_PRINTER_SMALL;
+ if ((ppd_attr = ppdFindAttr(ppd, "APICADriver", NULL)) != NULL &&
+ ppd_attr->value && !strcasecmp(ppd_attr->value, "true"))
+ {
+ if ((ppd_attr = ppdFindAttr(ppd, "APScannerOnly", NULL)) != NULL &&
+ ppd_attr->value && !strcasecmp(ppd_attr->value, "true"))
+ p->type |= CUPS_PRINTER_SCANNER;
+ else
+ p->type |= CUPS_PRINTER_MFP;
+ }
+
/*
* Add a filter from application/vnd.cups-raw to printer/name to
* handle "raw" printing by users.
diff --git a/scheduler/process.c b/scheduler/process.c
index d4cedbe31..bd548ff06 100644
--- a/scheduler/process.c
+++ b/scheduler/process.c
@@ -44,7 +44,8 @@
typedef struct
{
- int pid; /* Process ID */
+ int pid, /* Process ID */
+ job_id; /* Job associated with process */
char name[1]; /* Name of process */
} cupsd_proc_t;
@@ -82,8 +83,22 @@ cupsdCreateProfile(int job_id) /* I - Job ID or 0 for none */
temp[1024]; /* Quoted TempDir */
+ if (RunUser)
+ {
+ /*
+ * Only use sandbox profiles as root...
+ */
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d) = NULL",
+ job_id);
+
+ return (NULL);
+ }
+
if ((fp = cupsTempFile2(profile, sizeof(profile))) == NULL)
{
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d) = NULL",
+ job_id);
cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to create security profile: %s",
strerror(errno));
return (NULL);
@@ -129,7 +144,10 @@ cupsdCreateProfile(int job_id) /* I - Job ID or 0 for none */
cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d) = \"%s\"",
job_id, profile);
return ((void *)strdup(profile));
+
#else
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdCreateProfile(job_id=%d) = NULL",
+ job_id);
return (NULL);
#endif /* HAVE_SANDBOX_H */
@@ -143,11 +161,12 @@ cupsdCreateProfile(int job_id) /* I - Job ID or 0 for none */
void
cupsdDestroyProfile(void *profile) /* I - Profile */
{
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDeleteProfile(profile=\"%s\")",
+ profile ? (char *)profile : "(null)");
+
#ifdef HAVE_SANDBOX_H
if (profile)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDeleteProfile(profile=\"%s\")",
- (char *)profile);
unlink((char *)profile);
free(profile);
}
@@ -163,6 +182,9 @@ int /* O - 0 on success, -1 on failure */
cupsdEndProcess(int pid, /* I - Process ID */
int force) /* I - Force child to die */
{
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdEndProcess(pid=%d, force=%d)", pid,
+ force);
+
if (force)
return (kill(pid, SIGKILL));
else
@@ -177,7 +199,8 @@ cupsdEndProcess(int pid, /* I - Process ID */
const char * /* O - Process name */
cupsdFinishProcess(int pid, /* I - Process ID */
char *name, /* I - Name buffer */
- int namelen) /* I - Size of name buffer */
+ int namelen, /* I - Size of name buffer */
+ int *job_id) /* O - Job ID pointer or NULL */
{
cupsd_proc_t key, /* Search key */
*proc; /* Matching process */
@@ -187,14 +210,27 @@ cupsdFinishProcess(int pid, /* I - Process ID */
if ((proc = (cupsd_proc_t *)cupsArrayFind(process_array, &key)) != NULL)
{
+ if (job_id)
+ *job_id = proc->job_id;
+
strlcpy(name, proc->name, namelen);
cupsArrayRemove(process_array, proc);
free(proc);
-
- return (name);
}
else
- return ("unknown");
+ {
+ if (job_id)
+ *job_id = 0;
+
+ strlcpy(name, "unknown", namelen);
+ }
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "cupsdFinishProcess(pid=%d, name=%p, namelen=%d, "
+ "job_id=%p(%d)) = \"%s\"", pid, name, namelen, job_id,
+ job_id ? *job_id : 0, name);
+
+ return (name);
}
@@ -204,17 +240,18 @@ cupsdFinishProcess(int pid, /* I - Process ID */
int /* O - Process ID or 0 */
cupsdStartProcess(
- const char *command, /* I - Full path to command */
- char *argv[], /* I - Command-line arguments */
- char *envp[], /* I - Environment */
- int infd, /* I - Standard input file descriptor */
- int outfd, /* I - Standard output file descriptor */
- int errfd, /* I - Standard error file descriptor */
- int backfd, /* I - Backchannel file descriptor */
- int sidefd, /* I - Sidechannel file descriptor */
- int root, /* I - Run as root? */
- void *profile, /* I - Security profile to use */
- int *pid) /* O - Process ID */
+ const char *command, /* I - Full path to command */
+ char *argv[], /* I - Command-line arguments */
+ char *envp[], /* I - Environment */
+ int infd, /* I - Standard input file descriptor */
+ int outfd, /* I - Standard output file descriptor */
+ int errfd, /* I - Standard error file descriptor */
+ int backfd, /* I - Backchannel file descriptor */
+ int sidefd, /* I - Sidechannel file descriptor */
+ int root, /* I - Run as root? */
+ void *profile, /* I - Security profile to use */
+ int job_id, /* I - Job associated with process */
+ int *pid) /* O - Process ID */
{
int user; /* Command UID */
struct stat commandinfo; /* Command file information */
@@ -229,10 +266,6 @@ cupsdStartProcess(
#endif /* __APPLE__ */
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdStartProcess(\"%s\", %p, %p, %d, %d, %d)",
- command, argv, envp, infd, outfd, errfd);
-
if (RunUser)
user = RunUser;
else if (root)
@@ -242,17 +275,32 @@ cupsdStartProcess(
if (stat(command, &commandinfo))
{
+ *pid = 0;
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "cupsdStartProcess(command=\"%s\", argv=%p, envp=%p, "
+ "infd=%d, outfd=%d, errfd=%d, backfd=%d, sidefd=%d, root=%d, "
+ "profile=%p, job_id=%d, pid=%p) = %d",
+ command, argv, envp, infd, outfd, errfd, backfd, sidefd,
+ root, profile, job_id, pid, *pid);
cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to execute %s: %s", command,
strerror(errno));
- *pid = 0;
return (0);
}
else if (commandinfo.st_mode & S_IWOTH)
{
+ *pid = 0;
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "cupsdStartProcess(command=\"%s\", argv=%p, envp=%p, "
+ "infd=%d, outfd=%d, errfd=%d, backfd=%d, sidefd=%d, root=%d, "
+ "profile=%p, job_id=%d, pid=%p) = %d",
+ command, argv, envp, infd, outfd, errfd, backfd, sidefd,
+ root, profile, job_id, pid, *pid);
cupsdLogMessage(CUPSD_LOG_ERROR,
"Unable to execute %s: insecure file permissions (0%o)",
command, commandinfo.st_mode);
- *pid = 0;
+
errno = EPERM;
return (0);
}
@@ -260,10 +308,18 @@ cupsdStartProcess(
(commandinfo.st_gid != Group || !(commandinfo.st_mode & S_IXGRP)) &&
!(commandinfo.st_mode & S_IXOTH))
{
+ *pid = 0;
+
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "cupsdStartProcess(command=\"%s\", argv=%p, envp=%p, "
+ "infd=%d, outfd=%d, errfd=%d, backfd=%d, sidefd=%d, root=%d, "
+ "profile=%p, job_id=%d, pid=%p) = %d",
+ command, argv, envp, infd, outfd, errfd, backfd, sidefd,
+ root, profile, job_id, pid, *pid);
cupsdLogMessage(CUPSD_LOG_ERROR,
"Unable to execute %s: no execute permissions (0%o)",
command, commandinfo.st_mode);
- *pid = 0;
+
errno = EPERM;
return (0);
}
@@ -470,7 +526,8 @@ cupsdStartProcess(
{
if ((proc = calloc(1, sizeof(cupsd_proc_t) + strlen(command))) != NULL)
{
- proc->pid = *pid;
+ proc->pid = *pid;
+ proc->job_id = job_id;
strcpy(proc->name, command);
cupsArrayAdd(process_array, proc);
@@ -480,6 +537,13 @@ cupsdStartProcess(
cupsdReleaseSignals();
+ cupsdLogMessage(CUPSD_LOG_DEBUG2,
+ "cupsdStartProcess(command=\"%s\", argv=%p, envp=%p, "
+ "infd=%d, outfd=%d, errfd=%d, backfd=%d, sidefd=%d, root=%d, "
+ "profile=%p, job_id=%d, pid=%p) = %d",
+ command, argv, envp, infd, outfd, errfd, backfd, sidefd,
+ root, profile, job_id, pid, *pid);
+
return (*pid);
}
diff --git a/scheduler/quotas.c b/scheduler/quotas.c
index 6d45b300d..3288c4d11 100644
--- a/scheduler/quotas.c
+++ b/scheduler/quotas.c
@@ -178,24 +178,14 @@ cupsdUpdateQuota(
attr = ippFindAttribute(job->attrs, "time-at-creation",
IPP_TAG_INTEGER);
- if (!attr)
- {
- /*
- * This should never happen since cupsdLoadJob() checks for
- * time-at-creation, but if it does just ignore this job...
- */
-
- continue;
- }
-
if (attr->values[0].integer < curtime)
{
/*
* This job is too old to count towards the quota, ignore it...
*/
- if (JobAutoPurge)
- cupsdCancelJob(job, 1, IPP_JOB_CANCELED);
+ if (JobAutoPurge && !job->printer && job->state_value > IPP_JOB_STOPPED)
+ cupsdDeleteJob(job, CUPSD_JOB_PURGE);
continue;
}
diff --git a/scheduler/select.c b/scheduler/select.c
index 4e81c4a9e..0ac6ce063 100644
--- a/scheduler/select.c
+++ b/scheduler/select.c
@@ -3,7 +3,7 @@
*
* Select abstraction functions for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 2006-2007 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -269,7 +269,7 @@ cupsdAddSelect(int fd, /* I - File descriptor */
*/
cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAddSelect: fd=%d, read_cb=%p, write_cb=%p, data=%p",
+ "cupsdAddSelect(fd=%d, read_cb=%p, write_cb=%p, data=%p)",
fd, read_cb, write_cb, data);
if (fd < 0)
@@ -325,8 +325,7 @@ cupsdAddSelect(int fd, /* I - File descriptor */
if (kevent(cupsd_kqueue_fd, &event, 1, NULL, 0, &timeout))
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAddSelect: kevent() returned %s",
+ cupsdLogMessage(CUPSD_LOG_EMERG, "kevent() returned %s",
strerror(errno));
return (0);
}
@@ -341,8 +340,7 @@ cupsdAddSelect(int fd, /* I - File descriptor */
if (kevent(cupsd_kqueue_fd, &event, 1, NULL, 0, &timeout))
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAddSelect: kevent() returned %s",
+ cupsdLogMessage(CUPSD_LOG_EMERG, "kevent() returned %s",
strerror(errno));
return (0);
}
@@ -386,29 +384,17 @@ cupsdAddSelect(int fd, /* I - File descriptor */
*/
if (read_cb)
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAddSelect: Adding fd %d to input set...", fd);
FD_SET(fd, &cupsd_global_input);
- }
else
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAddSelect: Removing fd %d from input set...", fd);
FD_CLR(fd, &cupsd_global_input);
FD_CLR(fd, &cupsd_current_input);
}
if (write_cb)
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAddSelect: Adding fd %d to output set...", fd);
FD_SET(fd, &cupsd_global_output);
- }
else
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdAddSelect: Removing fd %d from output set...", fd);
FD_CLR(fd, &cupsd_global_output);
FD_CLR(fd, &cupsd_current_output);
}
@@ -441,10 +427,6 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
struct timespec ktimeout; /* kevent() timeout */
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdDoSelect: polling %d fds for %ld seconds...",
- cupsArrayCount(cupsd_fds), timeout);
-
cupsd_in_select = 1;
if (timeout >= 0 && timeout < 86400)
@@ -458,10 +440,6 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
else
nfds = kevent(cupsd_kqueue_fd, NULL, 0, cupsd_kqueue_events, MaxFDs, NULL);
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdDoSelect: kevent(%d, ..., %d, ...) returned %d...",
- cupsd_kqueue_fd, MaxFDs, nfds);
-
cupsd_kqueue_changes = 0;
for (i = nfds, event = cupsd_kqueue_events; i > 0; i --, event ++)
@@ -471,24 +449,13 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
if (cupsArrayFind(cupsd_inactive_fds, fdptr))
continue;
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "event->filter=%d, event->ident=%d",
- event->filter, (int)event->ident);
-
retain_fd(fdptr);
if (fdptr->read_cb && event->filter == EVFILT_READ)
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Read on fd %d...",
- fdptr->fd);
(*(fdptr->read_cb))(fdptr->data);
- }
if (fdptr->write_cb && event->filter == EVFILT_WRITE)
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Write on fd %d...",
- fdptr->fd);
(*(fdptr->write_cb))(fdptr->data);
- }
release_fd(fdptr);
}
@@ -498,10 +465,6 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
int count; /* Number of file descriptors */
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdDoSelect: polling %d fds for %ld seconds...",
- cupsArrayCount(cupsd_fds), timeout);
-
# ifdef HAVE_EPOLL
cupsd_in_select = 1;
@@ -517,9 +480,6 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
else
nfds = epoll_wait(cupsd_epoll_fd, cupsd_epoll_events, MaxFDs, -1);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: epoll() returned %d...",
- nfds);
-
if (nfds < 0 && errno != EINTR)
{
close(cupsd_epoll_fd);
@@ -537,18 +497,10 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
retain_fd(fdptr);
if (fdptr->read_cb && (event->events & (EPOLLIN | EPOLLERR | EPOLLHUP)))
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Read on fd %d...",
- fdptr->fd);
(*(fdptr->read_cb))(fdptr->data);
- }
if (fdptr->write_cb && (event->events & (EPOLLOUT | EPOLLERR | EPOLLHUP)))
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Write on fd %d...",
- fdptr->fd);
(*(fdptr->write_cb))(fdptr->data);
- }
release_fd(fdptr);
}
@@ -568,8 +520,6 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
cupsd_update_pollfds = 0;
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Updating pollfd array...");
-
/*
* (Re)allocate memory as needed...
*/
@@ -616,18 +566,11 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
}
}
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdDoSelect: polling %d fds for %ld seconds...",
- count, timeout);
-
if (timeout >= 0 && timeout < 86400)
nfds = poll(cupsd_pollfds, count, timeout * 1000);
else
nfds = poll(cupsd_pollfds, count, -1);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: poll() returned %d...",
- nfds);
-
if (nfds > 0)
{
/*
@@ -636,10 +579,6 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
for (pfd = cupsd_pollfds; count > 0; pfd ++, count --)
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdDoSelect: pollfds[%d]={fd=%d, revents=%x}",
- (int)(pfd - cupsd_pollfds), pfd->fd, pfd->revents);
-
if (!pfd->revents)
continue;
@@ -649,18 +588,10 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
retain_fd(fdptr);
if (fdptr->read_cb && (pfd->revents & (POLLIN | POLLERR | POLLHUP)))
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Read on fd %d...",
- fdptr->fd);
(*(fdptr->read_cb))(fdptr->data);
- }
if (fdptr->write_cb && (pfd->revents & (POLLOUT | POLLERR | POLLHUP)))
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Write on fd %d...",
- fdptr->fd);
(*(fdptr->write_cb))(fdptr->data);
- }
release_fd(fdptr);
}
@@ -687,10 +618,6 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
cupsd_current_input = cupsd_global_input;
cupsd_current_output = cupsd_global_output;
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdDoSelect: selecting %d fds for %ld seconds...",
- maxfd, timeout);
-
if (timeout >= 0 && timeout < 86400)
{
stimeout.tv_sec = timeout;
@@ -703,9 +630,6 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
nfds = select(maxfd, &cupsd_current_input, &cupsd_current_output, NULL,
NULL);
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: select() returned %d...",
- nfds);
-
if (nfds > 0)
{
/*
@@ -719,18 +643,10 @@ cupsdDoSelect(long timeout) /* I - Timeout in seconds */
retain_fd(fdptr);
if (fdptr->read_cb && FD_ISSET(fdptr->fd, &cupsd_current_input))
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Read on fd %d...",
- fdptr->fd);
(*(fdptr->read_cb))(fdptr->data);
- }
if (fdptr->write_cb && FD_ISSET(fdptr->fd, &cupsd_current_output))
- {
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdDoSelect: Write on fd %d...",
- fdptr->fd);
(*(fdptr->write_cb))(fdptr->data);
- }
release_fd(fdptr);
}
@@ -802,7 +718,7 @@ cupsdRemoveSelect(int fd) /* I - File descriptor */
* Range check input...
*/
- cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdRemoveSelect: fd=%d", fd);
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdRemoveSelect(fd=%d)", fd);
if (fd < 0)
return;
@@ -832,8 +748,7 @@ cupsdRemoveSelect(int fd) /* I - File descriptor */
if (kevent(cupsd_kqueue_fd, &event, 1, NULL, 0, &timeout))
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdRemoveSelect: kevent() returned %s",
+ cupsdLogMessage(CUPSD_LOG_EMERG, "kevent() returned %s",
strerror(errno));
return;
}
@@ -845,8 +760,7 @@ cupsdRemoveSelect(int fd) /* I - File descriptor */
if (kevent(cupsd_kqueue_fd, &event, 1, NULL, 0, &timeout))
{
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdRemoveSelect: kevent() returned %s",
+ cupsdLogMessage(CUPSD_LOG_EMERG, "kevent() returned %s",
strerror(errno));
return;
}
@@ -861,9 +775,6 @@ cupsdRemoveSelect(int fd) /* I - File descriptor */
cupsd_update_pollfds = 1;
#else /* select() */
- cupsdLogMessage(CUPSD_LOG_DEBUG2,
- "cupsdRemoveSelect: Removing fd %d from input and output "
- "sets...", fd);
FD_CLR(fd, &cupsd_global_input);
FD_CLR(fd, &cupsd_global_output);
FD_CLR(fd, &cupsd_current_input);
@@ -894,6 +805,8 @@ cupsdRemoveSelect(int fd) /* I - File descriptor */
void
cupsdStartSelect(void)
{
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStartSelect()");
+
cupsd_fds = cupsArrayNew((cups_array_func_t)compare_fds, NULL);
#if defined(HAVE_EPOLL) || defined(HAVE_KQUEUE)
@@ -930,6 +843,8 @@ cupsdStopSelect(void)
_cupsd_fd_t *fdptr; /* Current file descriptor */
+ cupsdLogMessage(CUPSD_LOG_DEBUG2, "cupsdStopSelect()");
+
for (fdptr = (_cupsd_fd_t *)cupsArrayFirst(cupsd_fds);
fdptr;
fdptr = (_cupsd_fd_t *)cupsArrayNext(cupsd_fds))
diff --git a/scheduler/statbuf.c b/scheduler/statbuf.c
index 925b60169..9e422418e 100644
--- a/scheduler/statbuf.c
+++ b/scheduler/statbuf.c
@@ -57,7 +57,7 @@ cupsdStatBufDelete(cupsd_statbuf_t *sb) /* I - Status buffer */
*/
cupsd_statbuf_t * /* O - New status buffer */
-cupsdStatBufNew(int fd, /* I - File descriptor of pipe */
+cupsdStatBufNew(int fd, /* I - File descriptor of pipe */
const char *prefix, /* I - Printf-style prefix string */
...) /* I - Additional args as needed */
{
diff --git a/scheduler/subscriptions.c b/scheduler/subscriptions.c
index 4412c33d7..ba866ca10 100644
--- a/scheduler/subscriptions.c
+++ b/scheduler/subscriptions.c
@@ -3,7 +3,7 @@
*
* Subscription routines for the Common UNIX Printing System (CUPS) scheduler.
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2007 by Easy Software Products, all rights reserved.
*
* These coded instructions, statements, and computer programs are the
@@ -1622,7 +1622,7 @@ cupsd_start_notifier(
*/
if (cupsdStartProcess(command, argv, envp, fds[0], -1, NotifierPipes[1],
- -1, -1, 0, DefaultProfile, &pid) < 0)
+ -1, -1, 0, DefaultProfile, 0, &pid) < 0)
{
/*
* Error - can't fork!
diff --git a/scheduler/util.h b/scheduler/util.h
index 31e729730..fab50eee5 100644
--- a/scheduler/util.h
+++ b/scheduler/util.h
@@ -3,7 +3,7 @@
*
* Mini-daemon utility definitions for the Common UNIX Printing System (CUPS).
*
- * Copyright 2007-2008 by Apple Inc.
+ * Copyright 2007-2009 by Apple Inc.
* Copyright 1997-2005 by Easy Software Products.
*
* These coded instructions, statements, and computer programs are the
@@ -20,13 +20,8 @@
* Include necessary headers...
*/
-# include
-# include
-# include
-# include
-# include
+# include
# include
-# include
/*
diff --git a/templates/pl/add-class.tmpl b/templates/pl/add-class.tmpl
new file mode 100644
index 000000000..af5c69ff1
--- /dev/null
+++ b/templates/pl/add-class.tmpl
@@ -0,0 +1,39 @@
+
diff --git a/templates/pl/add-printer.tmpl b/templates/pl/add-printer.tmpl
new file mode 100644
index 000000000..2010a0b0a
--- /dev/null
+++ b/templates/pl/add-printer.tmpl
@@ -0,0 +1,42 @@
+
+
+
Dodawanie drukarki
+
+
+
diff --git a/templates/pl/add-rss-subscription.tmpl b/templates/pl/add-rss-subscription.tmpl
new file mode 100644
index 000000000..0523454b6
--- /dev/null
+++ b/templates/pl/add-rss-subscription.tmpl
@@ -0,0 +1,43 @@
+
diff --git a/templates/pl/admin.tmpl b/templates/pl/admin.tmpl
new file mode 100644
index 000000000..5a5e828d2
--- /dev/null
+++ b/templates/pl/admin.tmpl
@@ -0,0 +1,109 @@
+
+
+
+Drukarki
+
+
+
+
+
+{have_samba?:}
+
+
+Klasy
+
+
+
+
+
+
+Zadania
+
+
+
+
+
+
+
+Serwery
+
+
+
+
+
+
+
+
+{SETTINGS_ERROR?{SETTINGS_MESSAGE}
+{SETTINGS_ERROR} :
+
+}
+
+
+
+
+
+
+
Subskrypcje RSS
+
+
+
+
+
+
+
+{notify_subscription_id?
+Name Zdarzenia Nazwa kolejki
+{[notify_subscription_id]
+{notify_recipient_name}
+ {notify_events} {notify_printer_name?{notify_printer_name}:Wszystkie kolejki} }
+
+
:}
diff --git a/templates/pl/choose-device.tmpl b/templates/pl/choose-device.tmpl
new file mode 100644
index 000000000..7fc06ded4
--- /dev/null
+++ b/templates/pl/choose-device.tmpl
@@ -0,0 +1,53 @@
+
+
+
{op=modify-printer?Modyfikowanie {printer_name}:Dodawanie drukarki}
+
+{CUPS_GET_DEVICES_DONE?:
Wyszukiwanie drukarek...
}
+
+
+
diff --git a/templates/pl/choose-make.tmpl b/templates/pl/choose-make.tmpl
new file mode 100644
index 000000000..d632619d0
--- /dev/null
+++ b/templates/pl/choose-make.tmpl
@@ -0,0 +1,63 @@
+
+
+
{op=modify-printer?Modify {printer_name}:Dodawanie drukarki}
+
+
+
diff --git a/templates/pl/choose-model.tmpl b/templates/pl/choose-model.tmpl
new file mode 100644
index 000000000..6a7cbb672
--- /dev/null
+++ b/templates/pl/choose-model.tmpl
@@ -0,0 +1,59 @@
+
+
+
{op=modify-printer?Modyfikowanie {printer_name}:Dodawanie drukarki}
+
+
+
diff --git a/templates/pl/choose-serial.tmpl b/templates/pl/choose-serial.tmpl
new file mode 100644
index 000000000..5c42b2434
--- /dev/null
+++ b/templates/pl/choose-serial.tmpl
@@ -0,0 +1,51 @@
+
+
+
{op=modify-printer?Modyfikowanie {printer_name}:Dodawanie drukarki}
+
+
+
diff --git a/templates/pl/choose-uri.tmpl b/templates/pl/choose-uri.tmpl
new file mode 100644
index 000000000..5c87dbbb2
--- /dev/null
+++ b/templates/pl/choose-uri.tmpl
@@ -0,0 +1,43 @@
+
+
+
{op=modify-printer?Modyfikowanie {printer_name}:Dodawanie drukarki}
+
+
+
diff --git a/templates/pl/class-added.tmpl b/templates/pl/class-added.tmpl
new file mode 100644
index 000000000..2bee7d8ca
--- /dev/null
+++ b/templates/pl/class-added.tmpl
@@ -0,0 +1,8 @@
+
+
+
Dodawanie klasy
+
+
Klasa {printer_name} zostaÅa pomyÅlnie
+dodana.
+
+
diff --git a/templates/pl/class-confirm.tmpl b/templates/pl/class-confirm.tmpl
new file mode 100644
index 000000000..7c38b894b
--- /dev/null
+++ b/templates/pl/class-confirm.tmpl
@@ -0,0 +1,10 @@
+
+
+
Usuwanie klasy {printer_name}
+
+
Ostrzeżenie: UsunÄ
Ä klasÄ
+{printer_name}?
+
+
+
+
diff --git a/templates/pl/class-deleted.tmpl b/templates/pl/class-deleted.tmpl
new file mode 100644
index 000000000..1a78c903e
--- /dev/null
+++ b/templates/pl/class-deleted.tmpl
@@ -0,0 +1,7 @@
+
+
+
Usuwanie klasy {printer_name}
+
+
Klasa {printer_name} zostaÅa pomyÅlnie usuniÄta.
+
+
diff --git a/templates/pl/class-jobs-header.tmpl b/templates/pl/class-jobs-header.tmpl
new file mode 100644
index 000000000..83dcfbcd5
--- /dev/null
+++ b/templates/pl/class-jobs-header.tmpl
@@ -0,0 +1,3 @@
+
+
Zadania
+
diff --git a/templates/pl/class-modified.tmpl b/templates/pl/class-modified.tmpl
new file mode 100644
index 000000000..be91caaed
--- /dev/null
+++ b/templates/pl/class-modified.tmpl
@@ -0,0 +1,8 @@
+
+
+
Modyfikowanie klasy {printer_name}
+
+
Klasa {printer_name} zostaÅa
+pomyÅlnie zmodyfikowana.
+
+
diff --git a/templates/pl/class.tmpl b/templates/pl/class.tmpl
new file mode 100644
index 000000000..9ba9ff431
--- /dev/null
+++ b/templates/pl/class.tmpl
@@ -0,0 +1,41 @@
+
+
{printer_name}
+({printer_state=3?Bezczynna:{printer_state=4?Przetwarzanie:Wstrzymane}},
+{printer_is_accepting_jobs=0?Odrzucanie zadaÅ:Akceptowanie zadaÅ},
+{server_is_sharing_printers=0?Nie:{printer_is_shared=0?Nie:}} WspóÅdzielona{default_name={printer_name}?, DomyÅlne serwera:})
+
+
+
+
+
+
+Opis: {printer_info}
+PoÅożenie: {printer_location}
+CzÅonkowie: {?member_uris=?None:{member_uris}}
+DomyÅlne: job-sheets={job_sheets_default}
+media={media_default?{media_default}:unknown}
+{sides_default?sides={sides_default}:}
+
+
+
diff --git a/templates/pl/classes-header.tmpl b/templates/pl/classes-header.tmpl
new file mode 100644
index 000000000..8482fd19c
--- /dev/null
+++ b/templates/pl/classes-header.tmpl
@@ -0,0 +1 @@
+{total=0?Brak klas:WyÅwietlanie {#printer_name} z {total} klas{total=1?:es}}.
diff --git a/templates/pl/classes.tmpl b/templates/pl/classes.tmpl
new file mode 100644
index 000000000..1d8c766da
--- /dev/null
+++ b/templates/pl/classes.tmpl
@@ -0,0 +1,11 @@
+{#printer_name=0?:
+}
diff --git a/templates/pl/command.tmpl b/templates/pl/command.tmpl
new file mode 100644
index 000000000..9a87439ca
--- /dev/null
+++ b/templates/pl/command.tmpl
@@ -0,0 +1,12 @@
+
+
+
{title} On {printer_name}
+
+
{job_state>5?: }Printer command job
+{job_state=3?pending:{job_state=4?held:
+{job_state=5?processing:{job_state=6?stopped:
+{job_state=7?canceled:{job_state=8?aborted:completed}}}}}}{job_state=9?:{job_printer_state_message?,
+"{job_printer_state_message}" :}}
+
+
diff --git a/templates/pl/edit-config.tmpl b/templates/pl/edit-config.tmpl
new file mode 100644
index 000000000..84c4359bd
--- /dev/null
+++ b/templates/pl/edit-config.tmpl
@@ -0,0 +1,24 @@
+
+
+
+
+
Modyfikowanie pliku konfiguracji
+
+
+
+
diff --git a/templates/pl/error-op.tmpl b/templates/pl/error-op.tmpl
new file mode 100644
index 000000000..b9e5f7194
--- /dev/null
+++ b/templates/pl/error-op.tmpl
@@ -0,0 +1,9 @@
+
+
+
{?title} {?printer_name} BÅÄ
d
+
+
BÅÄ
d:
+
+
Nieznana operacja "{op}"!
+
+
diff --git a/templates/pl/error.tmpl b/templates/pl/error.tmpl
new file mode 100644
index 000000000..f9992930b
--- /dev/null
+++ b/templates/pl/error.tmpl
@@ -0,0 +1,9 @@
+
+
+
{?title} {?printer_name} BÅÄ
d
+
+
{?message?{message}:BÅÄ
d:}
+
+
{error}
+
+
diff --git a/templates/pl/header.tmpl.in b/templates/pl/header.tmpl.in
new file mode 100644
index 000000000..1ee544fbf
--- /dev/null
+++ b/templates/pl/header.tmpl.in
@@ -0,0 +1,29 @@
+
+
+
+
+ {title} - CUPS @CUPS_VERSION@@CUPS_REVISION@
+
+
+ {refresh_page? :}
+
+
+
+
+
diff --git a/templates/pl/help-header.tmpl b/templates/pl/help-header.tmpl
new file mode 100644
index 000000000..88f552421
--- /dev/null
+++ b/templates/pl/help-header.tmpl
@@ -0,0 +1,51 @@
+
+
+{TOPIC? :}
+
+Wyszukaj w
+{HELPTITLE?{HELPTITLE}:{TOPIC?{TOPIC}:Wszystkie dokumenty}}:
+
+
+
+
+
+
+
+
+{QUERY?
Wyniki wyszukiwania w {HELPFILE?{HELPTITLE}:{TOPIC?{TOPIC}:Wszystkie dokumenty}}\:
+{QTEXT?
:}
+:
Nie znaleziono.
}
+
:}
+{HELPTITLE?
{HELPTITLE}
+
:
+
+
Pomoc online
+
+
To jest interfejs pomocy online CUPS. Należy podaÄ wyszukiwane sÅowa
+powyżej lub nacisnÄ
Ä na jeden z odnoÅników do dokumentacji, aby wyÅwietliÄ
+informacje o pomocy online.
+
+
Nowi użytkownicy CUPS powinni przeczytaÄ stronÄ "PrzeglÄ
d CUPS ". Zaawansowani użytkownicy
+powinni przeczytaÄ stronÄ "Co nowego w CUPS
+1.4 ".
+
+
Strona domowa CUPS także
+dostarcza wiele zasobów, w tym fora dyskusyjne użytkowników, odpowiedzi
+na najczÄÅciej zadawane pytania oraz formularz do wysyÅania raportów
+bÅÄdów i próÅb o nowe funkcje.
}
diff --git a/templates/pl/help-printable.tmpl b/templates/pl/help-printable.tmpl
new file mode 100644
index 000000000..a326d9762
--- /dev/null
+++ b/templates/pl/help-printable.tmpl
@@ -0,0 +1,11 @@
+
+
+
+
+
{HELPTITLE}
+
+
+
+
+
+
{HELPTITLE}
diff --git a/templates/pl/help-trailer.tmpl b/templates/pl/help-trailer.tmpl
new file mode 100644
index 000000000..4c1ebed85
--- /dev/null
+++ b/templates/pl/help-trailer.tmpl
@@ -0,0 +1 @@
+
diff --git a/templates/pl/job-cancel.tmpl b/templates/pl/job-cancel.tmpl
new file mode 100644
index 000000000..bcfffcf0d
--- /dev/null
+++ b/templates/pl/job-cancel.tmpl
@@ -0,0 +1,7 @@
+
diff --git a/templates/pl/job-hold.tmpl b/templates/pl/job-hold.tmpl
new file mode 100644
index 000000000..8827d9e28
--- /dev/null
+++ b/templates/pl/job-hold.tmpl
@@ -0,0 +1,7 @@
+
diff --git a/templates/pl/job-move.tmpl b/templates/pl/job-move.tmpl
new file mode 100644
index 000000000..666a1509a
--- /dev/null
+++ b/templates/pl/job-move.tmpl
@@ -0,0 +1,26 @@
+
diff --git a/templates/pl/job-moved.tmpl b/templates/pl/job-moved.tmpl
new file mode 100644
index 000000000..bd3db7686
--- /dev/null
+++ b/templates/pl/job-moved.tmpl
@@ -0,0 +1,8 @@
+
diff --git a/templates/pl/job-release.tmpl b/templates/pl/job-release.tmpl
new file mode 100644
index 000000000..09bffda03
--- /dev/null
+++ b/templates/pl/job-release.tmpl
@@ -0,0 +1,7 @@
+
diff --git a/templates/pl/job-restart.tmpl b/templates/pl/job-restart.tmpl
new file mode 100644
index 000000000..6edf8b247
--- /dev/null
+++ b/templates/pl/job-restart.tmpl
@@ -0,0 +1,7 @@
+
+
+
Ponowne drukowanie zadania {job_id}
+
+
Zadanie {job_id} zostaÅo ponownie uruchomione.
+
+
diff --git a/templates/pl/jobs-header.tmpl b/templates/pl/jobs-header.tmpl
new file mode 100644
index 000000000..c91943f6b
--- /dev/null
+++ b/templates/pl/jobs-header.tmpl
@@ -0,0 +1,5 @@
+{?which_jobs=?:
}
+{?which_jobs=completed?: }
+{?which_jobs=all?: }
+
+{total=0?Brak zadaÅ:WyÅwietlanie {#job_id} z {total} {?which_jobs=?aktywnych:{which_jobs=wszystkich?:zakoÅczonych}} zadaÅ{total=1?:s}}.
diff --git a/templates/pl/jobs.tmpl b/templates/pl/jobs.tmpl
new file mode 100644
index 000000000..dbb7fd9bb
--- /dev/null
+++ b/templates/pl/jobs.tmpl
@@ -0,0 +1,37 @@
+{#job_id=0?:
+
+}
diff --git a/templates/pl/list-available-printers.tmpl b/templates/pl/list-available-printers.tmpl
new file mode 100644
index 000000000..d5ba1aa13
--- /dev/null
+++ b/templates/pl/list-available-printers.tmpl
@@ -0,0 +1,11 @@
+
+
+
DostÄpne drukarki
+
+{#device_uri=0?
Nie znaleziono drukarek.
+:
}
+
+
diff --git a/templates/pl/modify-class.tmpl b/templates/pl/modify-class.tmpl
new file mode 100644
index 000000000..c66cfda81
--- /dev/null
+++ b/templates/pl/modify-class.tmpl
@@ -0,0 +1,32 @@
+
+
+
Modyfikowanie klasy {printer_name}
+
+
+
+
+
+
+
+
diff --git a/templates/pl/modify-printer.tmpl b/templates/pl/modify-printer.tmpl
new file mode 100644
index 000000000..08df3c694
--- /dev/null
+++ b/templates/pl/modify-printer.tmpl
@@ -0,0 +1,37 @@
+
diff --git a/templates/pl/norestart.tmpl b/templates/pl/norestart.tmpl
new file mode 100644
index 000000000..d29b0f4c7
--- /dev/null
+++ b/templates/pl/norestart.tmpl
@@ -0,0 +1,8 @@
+
+
+
Zmienianie ustawieÅ
+
+
Serwer nie zostaŠponownie uruchomiony, ponieważ nie wprowadzono żadnych zmian do
+konfiguracji...
+
+
diff --git a/templates/pl/option-boolean.tmpl b/templates/pl/option-boolean.tmpl
new file mode 100644
index 000000000..2d0dd551a
--- /dev/null
+++ b/templates/pl/option-boolean.tmpl
@@ -0,0 +1,6 @@
+
+{keytext} :
+
+{[choices] {text}}
+
+
diff --git a/templates/pl/option-conflict.tmpl b/templates/pl/option-conflict.tmpl
new file mode 100644
index 000000000..42aa5759d
--- /dev/null
+++ b/templates/pl/option-conflict.tmpl
@@ -0,0 +1,7 @@
+BÅÄ
d: nastÄpujÄ
ce opcje sÄ
w konflikcie ze sobÄ
:
+
+
+
+ProszÄ zmieniÄ jednÄ
lub wiÄcej opcji, aby rozwiÄ
zaÄ konflikt.
diff --git a/templates/pl/option-header.tmpl b/templates/pl/option-header.tmpl
new file mode 100644
index 000000000..464726a50
--- /dev/null
+++ b/templates/pl/option-header.tmpl
@@ -0,0 +1,5 @@
+
+
+
{group}
+
+
diff --git a/templates/pl/option-pickmany.tmpl b/templates/pl/option-pickmany.tmpl
new file mode 100644
index 000000000..067075aec
--- /dev/null
+++ b/templates/pl/option-pickmany.tmpl
@@ -0,0 +1,6 @@
+
+{keytext} :
+
+{[choices]{text}}
+
+
diff --git a/templates/pl/option-pickone.tmpl b/templates/pl/option-pickone.tmpl
new file mode 100644
index 000000000..93100729c
--- /dev/null
+++ b/templates/pl/option-pickone.tmpl
@@ -0,0 +1,18 @@
+
+{keytext} :
+
+{[choices]{text}}
+
+{iscustom=1?
+ :}
+
diff --git a/templates/pl/option-trailer.tmpl b/templates/pl/option-trailer.tmpl
new file mode 100644
index 000000000..21eec5678
--- /dev/null
+++ b/templates/pl/option-trailer.tmpl
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/templates/pl/pager.tmpl b/templates/pl/pager.tmpl
new file mode 100644
index 000000000..ce3515e57
--- /dev/null
+++ b/templates/pl/pager.tmpl
@@ -0,0 +1,6 @@
+
diff --git a/templates/pl/printer-accept.tmpl b/templates/pl/printer-accept.tmpl
new file mode 100644
index 000000000..6589b60f3
--- /dev/null
+++ b/templates/pl/printer-accept.tmpl
@@ -0,0 +1,9 @@
+
+
+
Akceptowanie zadaÅ na {is_class?klasie:drukarce} {printer_name}
+
+
{is_class?Klasa:Drukarka} {printer_name}
+akceptujÄ
zadania.
+
+
diff --git a/templates/pl/printer-added.tmpl b/templates/pl/printer-added.tmpl
new file mode 100644
index 000000000..e217ee4f0
--- /dev/null
+++ b/templates/pl/printer-added.tmpl
@@ -0,0 +1,8 @@
+
+
+
Dodawanie drukarki
+
+
Drukarka {printer_name} zostaÅa
+pomyÅlnie dodana.
+
+
diff --git a/templates/pl/printer-configured.tmpl b/templates/pl/printer-configured.tmpl
new file mode 100644
index 000000000..994ed3461
--- /dev/null
+++ b/templates/pl/printer-configured.tmpl
@@ -0,0 +1,8 @@
+
+
+
Ustawianie domyÅlnych opcji dla {printer_name}
+
+
DomyÅlne opcje {OP=set-class-options?klasy :drukarki }{printer_name}
+zostaÅy pomyÅlnie ustawione.
+
+
diff --git a/templates/pl/printer-confirm.tmpl b/templates/pl/printer-confirm.tmpl
new file mode 100644
index 000000000..2e9ab7e41
--- /dev/null
+++ b/templates/pl/printer-confirm.tmpl
@@ -0,0 +1,10 @@
+
diff --git a/templates/pl/printer-default.tmpl b/templates/pl/printer-default.tmpl
new file mode 100644
index 000000000..541de9d99
--- /dev/null
+++ b/templates/pl/printer-default.tmpl
@@ -0,0 +1,13 @@
+
+
+
Ustawianie {is_class?klasy:drukarki} {printer_name} jako domyÅlnej
+
+
{is_class?Klasa:Drukarka} {printer_name}
+zostaÅa ustawiona jako domyÅlna drukarka serwera.
+
+
Uwaga: każda domyÅla opcja użytkownika ustawiona przez
+polecenie lpoptions zostanie zastÄ
piona tym domyÅlnym
+ustawieniem.
+
+
diff --git a/templates/pl/printer-deleted.tmpl b/templates/pl/printer-deleted.tmpl
new file mode 100644
index 000000000..26e170b13
--- /dev/null
+++ b/templates/pl/printer-deleted.tmpl
@@ -0,0 +1,7 @@
+
+
+
Usuwanie drukarki {printer_name}
+
+
Drukarka {printer_name} zostaÅa pomyÅlnie usuniÄta.
+
+
diff --git a/templates/pl/printer-jobs-header.tmpl b/templates/pl/printer-jobs-header.tmpl
new file mode 100644
index 000000000..83dcfbcd5
--- /dev/null
+++ b/templates/pl/printer-jobs-header.tmpl
@@ -0,0 +1,3 @@
+
+
Zadania
+
diff --git a/templates/pl/printer-modified.tmpl b/templates/pl/printer-modified.tmpl
new file mode 100644
index 000000000..9bf074dbc
--- /dev/null
+++ b/templates/pl/printer-modified.tmpl
@@ -0,0 +1,8 @@
+
+
+
Modyfikowanie drukarki {printer_name}
+
+
Drukarka {printer_name} zostaÅa
+pomyÅlnie zmodyfikowana.
+
+
diff --git a/templates/pl/printer-purge.tmpl b/templates/pl/printer-purge.tmpl
new file mode 100644
index 000000000..065217511
--- /dev/null
+++ b/templates/pl/printer-purge.tmpl
@@ -0,0 +1,9 @@
+
+
+
Czyszczenie zadaÅ na {is_class?klasie:drukarce} {printer_name}
+
+
{is_class?Klasa:Drukarka} {printer_name}
+zostaÅa wyczyszczona ze wszystkich zadaÅ.
+
+
diff --git a/templates/pl/printer-reject.tmpl b/templates/pl/printer-reject.tmpl
new file mode 100644
index 000000000..038f8bab2
--- /dev/null
+++ b/templates/pl/printer-reject.tmpl
@@ -0,0 +1,9 @@
+
+
+
Odrzucanie zadaÅ na {is_class?klasie:drukarce} {printer_name}
+
+
{is_class?Klasa:Drukarka} {printer_name}
+nie akceptuje zadaÅ.
+
+
diff --git a/templates/pl/printer-start.tmpl b/templates/pl/printer-start.tmpl
new file mode 100644
index 000000000..e291f49d9
--- /dev/null
+++ b/templates/pl/printer-start.tmpl
@@ -0,0 +1,9 @@
+
+
+
Wznawianie {is_class?klasy:drukarki} {printer_name}
+
+
{is_class?Klasa:Drukarka} {printer_name}
+zostaÅa wznowiona.
+
+
diff --git a/templates/pl/printer-stop.tmpl b/templates/pl/printer-stop.tmpl
new file mode 100644
index 000000000..06f94f699
--- /dev/null
+++ b/templates/pl/printer-stop.tmpl
@@ -0,0 +1,9 @@
+
+
+
Wstrzymywanie {is_class?klasy:drukarki} {printer_name}
+
+
{is_class?Klasa:Drukarka} {printer_name}
+zostaÅa wstrzymana.
+
+
diff --git a/templates/pl/printer.tmpl b/templates/pl/printer.tmpl
new file mode 100644
index 000000000..43d18ef2d
--- /dev/null
+++ b/templates/pl/printer.tmpl
@@ -0,0 +1,45 @@
+
diff --git a/templates/pl/printers-header.tmpl b/templates/pl/printers-header.tmpl
new file mode 100644
index 000000000..6a06c7f59
--- /dev/null
+++ b/templates/pl/printers-header.tmpl
@@ -0,0 +1 @@
+{total=0?Brak drukarek:WyÅwietlanie {#printer_name} z {total} drukarek{total=1?:s}}.
diff --git a/templates/pl/printers.tmpl b/templates/pl/printers.tmpl
new file mode 100644
index 000000000..810ecb4a5
--- /dev/null
+++ b/templates/pl/printers.tmpl
@@ -0,0 +1,11 @@
+{#printer_name=0?:
+
+
+{ORDER=dec?▲ Nazwa kolejki ▲ :▼ Nazwa kolejki ▼ } Opis PoÅożenie Producent i model Stan
+
+
+{[printer_name]
+{printer_name} {printer_info} {printer_location} {printer_make_and_model} {printer_state=3?Bezczynna:{printer_state=4?Przetwarzanie:Wstrzymana}}{printer_state_message? - "{printer_state_message}":}
+}
+
+
}
diff --git a/templates/pl/restart.tmpl b/templates/pl/restart.tmpl
new file mode 100644
index 000000000..6965e6b50
--- /dev/null
+++ b/templates/pl/restart.tmpl
@@ -0,0 +1,8 @@
+
+
+
Zmienianie ustawieÅ
+
+
ProszÄ czekaÄ, trwa ponowne uruchamianie serwera...
+
+
diff --git a/templates/pl/samba-export.tmpl b/templates/pl/samba-export.tmpl
new file mode 100644
index 000000000..c927c3bb5
--- /dev/null
+++ b/templates/pl/samba-export.tmpl
@@ -0,0 +1,54 @@
+
+
+
+
+
+Eksportowanie drukarek do Samby
+
+{error?Nie można wyeksportowaÄ drukarek do Samby\:
+{error}
+ProszÄ zobaczyÄ plik error_log , aby uzyskaÄ wiÄcej informacji.
:
+Ta strona umożliwia wyeksportowanie drukarek do Samby, aby
+klienci Windows mogli mieÄ do nich dostÄp przez ikonÄ Otoczenie
+sieciowe lub Miejsca sieciowe na pulpitach.
+Należy wczeÅniej zainstalowaÄ sterowniki drukarki Windows PostScript,
+tak jak opisano na stronie podrÄcznika cupsaddsmb(8) .
}
+
+
+
+
diff --git a/templates/pl/samba-exported.tmpl b/templates/pl/samba-exported.tmpl
new file mode 100644
index 000000000..55ba02866
--- /dev/null
+++ b/templates/pl/samba-exported.tmpl
@@ -0,0 +1 @@
+PomyÅlnie wyeksportowano drukarki do Samby.
diff --git a/templates/pl/search.tmpl b/templates/pl/search.tmpl
new file mode 100644
index 000000000..593071a79
--- /dev/null
+++ b/templates/pl/search.tmpl
@@ -0,0 +1,10 @@
+
+{WHICH_JOBS? :}
+{ORDER? :}
+
+Znajdź w
+{SEARCH_DEST?{SEARCH_DEST}:{SECTION=classes?klasach:{SECTION=jobs?zadaniach:drukarkach}}}:
+
+
+
diff --git a/templates/pl/set-printer-options-header.tmpl b/templates/pl/set-printer-options-header.tmpl
new file mode 100644
index 000000000..206a5bbe7
--- /dev/null
+++ b/templates/pl/set-printer-options-header.tmpl
@@ -0,0 +1,25 @@
+
diff --git a/templates/pl/subscription-added.tmpl b/templates/pl/subscription-added.tmpl
new file mode 100644
index 000000000..af87082b1
--- /dev/null
+++ b/templates/pl/subscription-added.tmpl
@@ -0,0 +1,5 @@
+
+
+
Subskrypcja {subscription_name} zostaÅa pomyÅlnie dodana.
+
+
diff --git a/templates/pl/subscription-canceled.tmpl b/templates/pl/subscription-canceled.tmpl
new file mode 100644
index 000000000..58ce44c7a
--- /dev/null
+++ b/templates/pl/subscription-canceled.tmpl
@@ -0,0 +1,5 @@
+
+
+
Subskrypcja #{notify_subscription_id} zostaÅa usuniÄta.
+
+
diff --git a/templates/pl/test-page.tmpl b/templates/pl/test-page.tmpl
new file mode 100644
index 000000000..346a6d2fc
--- /dev/null
+++ b/templates/pl/test-page.tmpl
@@ -0,0 +1,8 @@
+
+
+
Drukowanie strony próbnej na {printer_name}
+
+
WysÅano stronÄ próbnÄ
; identyfikator zadania to
+{printer_name}-{job_id} .
+
+
diff --git a/templates/pl/trailer.tmpl b/templates/pl/trailer.tmpl
new file mode 100644
index 000000000..4d59f7ee4
--- /dev/null
+++ b/templates/pl/trailer.tmpl
@@ -0,0 +1,8 @@
+
+
+Wspólny uniksowy system drukowania, CUPS i logo CUPS
+sÄ
znakami handlowymi Apple Inc. CUPS
+copyright 2007-2009 Apple Inc. Wszystkie prawa zastrzeżone.
+
+
+
diff --git a/templates/pl/users.tmpl b/templates/pl/users.tmpl
new file mode 100644
index 000000000..7907c7abb
--- /dev/null
+++ b/templates/pl/users.tmpl
@@ -0,0 +1,29 @@
+
diff --git a/test/5.5-lp.sh b/test/5.5-lp.sh
index c048d7867..9dd1dd001 100644
--- a/test/5.5-lp.sh
+++ b/test/5.5-lp.sh
@@ -4,7 +4,7 @@
#
# Test the lp command.
#
-# Copyright 2007-2008 by Apple Inc.
+# Copyright 2007-2009 by Apple Inc.
# Copyright 1997-2005 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -57,9 +57,17 @@ echo " lp -d Test2 testfile.jpg"
i=0
while test $i -lt $1; do
echo " flood copy $i..." 1>&2
+
+ j=1
+ while test $j -le $2; do
+ ../systemv/lp -d test-$j testfile.jpg 2>&1
+ j=`expr $j + 1`
+ done
+
../systemv/lp -d Test1 testfile.jpg 2>&1 &
../systemv/lp -d Test2 testfile.jpg 2>&1 &
lppid=$!
+
i=`expr $i + 1`
done
wait $lppid
diff --git a/test/5.6-lpr.sh b/test/5.6-lpr.sh
index 7dabf84c6..72c757106 100644
--- a/test/5.6-lpr.sh
+++ b/test/5.6-lpr.sh
@@ -4,7 +4,7 @@
#
# Test the lpr command.
#
-# Copyright 2007-2008 by Apple Inc.
+# Copyright 2007-2009 by Apple Inc.
# Copyright 1997-2005 by Easy Software Products, all rights reserved.
#
# These coded instructions, statements, and computer programs are the
@@ -57,9 +57,17 @@ echo " lpr -P Test2 testfile.jpg"
i=0
while test $i -lt $1; do
echo " flood copy $i..." 1>&2
+
+ j=1
+ while test $j -le $2; do
+ ../berkeley/lpr -P test-$j testfile.jpg 2>&1
+ j=`expr $j + 1`
+ done
+
../berkeley/lpr -P Test1 testfile.jpg 2>&1 &
../berkeley/lpr -P Test2 testfile.jpg 2>&1 &
lprpid=$!
+
i=`expr $i + 1`
done
wait $lppid
diff --git a/test/run-stp-tests.sh b/test/run-stp-tests.sh
index 8b116f534..64e1b792f 100755
--- a/test/run-stp-tests.sh
+++ b/test/run-stp-tests.sh
@@ -74,30 +74,35 @@ case "$testtype" in
nprinters1=0
nprinters2=0
pjobs=0
+ pprinters=0
;;
2)
echo "Running the medium tests (2)"
nprinters1=10
nprinters2=20
pjobs=20
+ pprinters=10
;;
3)
echo "Running the extreme tests (3)"
nprinters1=500
nprinters2=1000
pjobs=100
+ pprinters=50
;;
4)
echo "Running the torture tests (4)"
nprinters1=10000
nprinters2=20000
pjobs=200
+ pprinters=100
;;
*)
echo "Running the timid tests (1)"
nprinters1=0
nprinters2=0
pjobs=10
+ pprinters=0
;;
esac
@@ -335,6 +340,7 @@ AccessLog /tmp/cups-$user/log/access_log
ErrorLog /tmp/cups-$user/log/error_log
PageLog /tmp/cups-$user/log/page_log
LogLevel debug2
+LogTimeFormat usecs
PreserveJobHistory Yes
@@ -454,7 +460,13 @@ echo "Starting scheduler:"
echo " $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &"
echo ""
-$valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
+if test `uname` = Darwin -a "x$valgrind" = x; then
+ DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib \
+ $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
+else
+ $valgrind ../scheduler/cupsd -c /tmp/cups-$user/cupsd.conf -f >/tmp/cups-$user/log/debug_log 2>&1 &
+fi
+
cupsd=$!
if test "x$testtype" = x0; then
@@ -568,7 +580,7 @@ for file in 5*.sh; do
echo "" >>$strfile
echo "\"$file\":" >>$strfile
- sh $file $pjobs | tee -a $strfile
+ sh $file $pjobs $pprinters | tee -a $strfile
status=$?
if test $status != 0; then
diff --git a/test/waitjobs.sh b/test/waitjobs.sh
index d69e44080..7a79fb69b 100755
--- a/test/waitjobs.sh
+++ b/test/waitjobs.sh
@@ -4,7 +4,7 @@
#
# Script to wait for jobs to complete.
#
-# Copyright 2008 by Apple Inc.
+# Copyright 2008-2009 by Apple Inc.
#
# These coded instructions, statements, and computer programs are the
# property of Apple Inc. and are protected by Federal copyright
@@ -13,25 +13,48 @@
# file is missing or damaged, see the license at "http://www.cups.org/".
#
+#
# Get timeout from command-line
+#
+
if test $# = 1; then
timeout=$1
else
- timeout=60
+ timeout=360
+fi
+
+#
+# Figure out the proper echo options...
+#
+
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
+ ac_n=-n
+ ac_c=
+else
+ ac_n=
+ ac_c='\c'
fi
-echo "Waiting for jobs to complete..."
+echo $ac_n "Waiting for jobs to complete...$ac_c"
+oldjobs=0
while test $timeout -gt 0; do
- jobs=`../systemv/lpstat 2>/dev/null`
- if test "x$jobs" = "x"; then
+ jobs=`../systemv/lpstat 2>/dev/null | wc -l | tr -d ' '`
+ if test $jobs = 0; then
break
fi
+ if test $jobs != $oldjobs; then
+ echo $ac_n "$jobs...$ac_c"
+ oldjobs=$jobs
+ fi
+
sleep 5
timeout=`expr $timeout - 5`
done
+echo ""
+
#
# End of "$Id$".
#
--
2.39.2