summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Müller <ulm@gentoo.org>2015-04-06 16:23:03 +0000
committerUlrich Müller <ulm@gentoo.org>2015-04-06 16:24:17 +0000
commit6611d008e9d18e9da243b0ee8076ab3ae22d5355 (patch)
treed505709d62a0520ff3e7fa9055a46539386bf8b4 /test-plans
downloademacs-6611d008e9d18e9da243b0ee8076ab3ae22d5355.tar.gz
emacs-6611d008e9d18e9da243b0ee8076ab3ae22d5355.tar.bz2
emacs-6611d008e9d18e9da243b0ee8076ab3ae22d5355.zip
Import test plans.
Diffstat (limited to 'test-plans')
-rw-r--r--test-plans/ChangeLog18
-rw-r--r--test-plans/Emacs.ad21
-rw-r--r--test-plans/Hello.vb33
-rw-r--r--test-plans/Interp2.lhs111
-rw-r--r--test-plans/LICENSES116
-rw-r--r--test-plans/aclocal.m4600
-rw-r--r--test-plans/admin.php758
-rw-r--r--test-plans/alt_getopt.lua168
-rw-r--r--test-plans/biorhythm.rb160
-rw-r--r--test-plans/circ.tex479
-rw-r--r--test-plans/cldoc-test.lisp3
-rw-r--r--test-plans/cups_de.po3002
-rw-r--r--test-plans/dotemacs.initsplit8
-rw-r--r--test-plans/emacs.deck9
-rw-r--r--test-plans/example.org24
-rw-r--r--test-plans/example.pl34
-rw-r--r--test-plans/example.rst8
-rw-r--r--test-plans/example.teco26
-rw-r--r--test-plans/example.vhdl40
-rw-r--r--test-plans/hello.c7
-rw-r--r--test-plans/hello.j17
-rw-r--r--test-plans/helloworld.dot7
-rw-r--r--test-plans/lcm.js77
-rw-r--r--test-plans/mmm-example.sh42
-rw-r--r--test-plans/p1025rdb.dtsi326
-rw-r--r--test-plans/p1025rdb_32b.dts133
-rw-r--r--test-plans/strawberry.jam19
-rw-r--r--test-plans/test.cs14
-rw-r--r--test-plans/test.csv4
-rw-r--r--test-plans/test.invalid.xml8
-rw-r--r--test-plans/test.m4
-rw-r--r--test-plans/test.muse82
-rw-r--r--test-plans/test.sml2
-rw-r--r--test-plans/test.sql6
-rw-r--r--test-plans/test.valid.xml8
-rw-r--r--test-plans/test.xsl24
-rw-r--r--test-plans/test_suite.cfg228
-rw-r--r--test-plans/text.ml55
-rw-r--r--test-plans/use_flag.h174
39 files changed, 6855 insertions, 0 deletions
diff --git a/test-plans/ChangeLog b/test-plans/ChangeLog
new file mode 100644
index 0000000..682d673
--- /dev/null
+++ b/test-plans/ChangeLog
@@ -0,0 +1,18 @@
+Sun Jan 19 11:29:00 1992 (Eric Youngdale at youngdale@v6550c.nrl.navy.mil)
+
+ * etags-vmslib.c (fn_exp): Add type cast.
+
+Tue Nov 29 09:59:54 1988 Richard Mlynarik (mly at pickled-brain.ai.mit.edu)
+
+ * movemail.c: Better error message when can't create tempname.
+ This file needs a great deal of extra error-checking and lucid reporting...
+
+Fri Apr 29 00:22:26 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu)
+
+ * loadst.c: Add BSD4_3 conditional for file dk.h instead of dkstat.h.
+
+Thu Apr 28 08:55:46 1988 Richard Stallman (rms at frosted-flakes.ai.mit.edu)
+
+ * movemail.c: #undef close, since config can #define it on V.3.
+ * emacsclient.c, fakemail.c, loadst.c, server.c: likewise.
+
diff --git a/test-plans/Emacs.ad b/test-plans/Emacs.ad
new file mode 100644
index 0000000..d40be72
--- /dev/null
+++ b/test-plans/Emacs.ad
@@ -0,0 +1,21 @@
+Emacs.default.attributeForeground: WINDOW_FOREGROUND
+Emacs.default.attributeBackground: WINDOW_BACKGROUND
+
+Emacs*Foreground: WINDOW_FOREGROUND
+Emacs*Background: WINDOW_BACKGROUND
+Emacs*menubar*foreground: FOREGROUND
+Emacs*menubar*background: BACKGROUND
+Emacs*popup*Foreground: FOREGROUND
+Emacs*popup*Background: BACKGROUND
+Emacs*Dialog*foreground: FOREGROUND
+Emacs*Dialog*background: BACKGROUND
+Emacs*XlwScrollBar.Foreground: FOREGROUND
+Emacs*XlwScrollBar.Background: BACKGROUND
+Emacs*topToolBarShadowColor: BACKGROUND
+Emacs*bottomToolBarShadowColor: BACKGROUND
+Emacs*backgroundToolBarColor: BACKGROUND
+Emacs.scroll-bar.attributeBackground: BACKGROUND
+Emacs.scroll-bar.attributeForeground: FOREGROUND
+Emacs.mode-line.attributeForeground: FOREGROUND
+Emacs.tool-bar.attributeBackground: BACKGROUND
+Emacs.tool-bar.attributeForeground: FOREGROUND
diff --git a/test-plans/Hello.vb b/test-plans/Hello.vb
new file mode 100644
index 0000000..4511c24
--- /dev/null
+++ b/test-plans/Hello.vb
@@ -0,0 +1,33 @@
+' First of all, this comment should be highlighted in a different
+' font than the code.
+'
+' Next, the Function, Class, and Sub declarations should be
+' highlighted. Their respective names should also be highlighted, but
+' in a different font than the rest of the declaration.
+Public Function IsProgramRunning() As Boolean
+ ' The name of the variable is in the normal font face, but the
+ ' keyword True should be highlighted.
+ IsProgramRunning = True
+End Function
+
+Public Class HelloWorld
+ ' Strings get their own font face.
+ Private hello_text As String = "Hello, World!"
+
+ Public Sub DoHello()
+ Console.WriteLine(Me.hello_text)
+ End Sub
+End Class
+
+Sub Main()
+ ' If you press <Tab> on the following lines, that line
+ ' should be auto-indented to eight spaces (the visual-basic-mode
+ ' default).
+ Dim ipr As Boolean = IsProgramRunning()
+ Dim hw As New HelloWorld()
+
+ ' However, if you press <Tab> on the next line, it should be
+ ' indented to four spaces to match the line above it (i.e. this
+ ' comment).
+ hw.DoHello()
+End Sub
diff --git a/test-plans/Interp2.lhs b/test-plans/Interp2.lhs
new file mode 100644
index 0000000..f32e9d6
--- /dev/null
+++ b/test-plans/Interp2.lhs
@@ -0,0 +1,111 @@
+> {-# OPTIONS -fglasgow-exts #-}
+
+Parameterized Syntax
+~~~~~~~~~~~~~~~~~~~~
+
+> type Name = String
+>
+> data Expr e d = Let d e
+> | App e e
+> | Var Name
+> | Int Int
+>
+> data Decl e d = Fun Name [Name] e
+
+
+Parameterized Semantics
+~~~~~~~~~~~~~~~~~~~~~~~
+
+> data Val = IntVal Int | FunVal (Val -> Val)
+> type Env = [(Name,Val)]
+>
+> class Eval e d | e -> d, d -> e where
+> expr :: e -> Env -> Val
+> decl :: d -> Env -> Env
+>
+> instance (Eval e d) => Eval (Expr e d) (Decl e d) where
+> expr e env = case e of
+> Let d e -> expr e (decl d env ++ env)
+> App e1 e2 -> case expr e1 env of
+> FunVal f -> f (expr e2 env)
+> _ -> error "Type error."
+> Var x -> case lookup x env of
+> Just v -> v
+> Nothing -> error "Undefined variable."
+> Int x -> IntVal x
+>
+> decl d env = case d of
+> Fun f xs e -> [(f,args env xs)]
+> where args env (x:xs) = FunVal (\v -> args ((x,v):env) xs)
+> args env [] = expr e env
+
+
+Language 1: Tying the Knot
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+> newtype Expr1 = E1 (Expr Expr1 Decl1)
+> newtype Decl1 = D1 (Decl Expr1 Decl1)
+>
+> instance Eval Expr1 Decl1 where
+> expr (E1 e) env = expr e env
+> decl (D1 e) env = decl e env
+
+Examples:
+
+> var1 x = E1 $ Var x
+> int1 x = E1 $ Int x
+> app1 f x = E1 $ App f x
+> let1 d e = E1 $ Let d e
+> fun1 f xs e = D1 $ Fun f xs e
+>
+> test1 e = expr
+> ( let1 (fun1 "id" ["x"] $ var1 "x")
+> $ let1 (fun1 "const" ["x","y"] $ var1 "x") e) []
+>
+> ex1 = test1 $ var1 "id" `app1` int1 2
+> ex2 = test1 $ var1 "const" `app1` int1 2 `app1` int1 3
+> ex3 = test1 $ var1 "const" `app1` var1 "id" `app1` int1 2 `app1` int1 3
+
+
+Language 2: Tying the Know with an Extension
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+> data Expr2 = E2 (Expr Expr2 Decl2)
+> | Add Expr2 Expr2
+> newtype Decl2 = D2 (Decl Expr2 Decl2)
+>
+> instance Eval Expr2 Decl2 where
+> expr (E2 e) env = expr e env
+> expr (Add e1 e2) env = case (expr e1 env, expr e2 env) of
+> (IntVal x, IntVal y) -> IntVal (x+y)
+> _ -> error "Type error."
+> decl (D2 d) env = decl d env
+
+Examples:
+
+> var2 x = E2 $ Var x
+> int2 x = E2 $ Int x
+> app2 f x = E2 $ App f x
+> let2 d e = E2 $ Let d e
+> fun2 f xs e = D2 $ Fun f xs e
+>
+> test2 e = expr
+> ( let2 (fun2 "id" ["x"] $ var2 "x")
+> $ let2 (fun2 "const" ["x","y"] $ var2 "x") e) []
+>
+> ex4 = test2 $ var2 "id" `app2` int2 2
+> ex5 = test2 $ var2 "const" `app2` int2 2 `app2` int2 3
+> ex6 = test2 $ var2 "const" `app2` var2 "id" `app2` int2 2 `app2` int2 3
+> ex7 = test2 $ var2 "id" `app2` (int2 3 `Add` int2 7)
+
+
+> instance Show Val where
+> show val = case val of
+> IntVal x -> show x
+> FunVal _ -> error "<function>"
+
+
+
+
+
+
diff --git a/test-plans/LICENSES b/test-plans/LICENSES
new file mode 100644
index 0000000..a1dd8b8
--- /dev/null
+++ b/test-plans/LICENSES
@@ -0,0 +1,116 @@
+List of licenses for example files. Format of entries is:
+
+category/package
+ filename license origin/comment
+
+------------------------------------------------------
+
+app-emacs/auctex
+ circ.tex GPL-3+ AUCTeX
+
+app-emacs/autoconf-mode
+ aclocal.m4 permissive aclocal
+
+app-emacs/cldoc
+ cldoc-test.lisp public-domain trivial
+
+app-emacs/cperl-mode
+ example.pl GPL-1+/Artistic Archive-Zip
+
+app-emacs/csharp-mode
+ test.cs public-domain trivial
+
+app-emacs/csv-mode
+ test.csv public-domain trivial
+
+app-emacs/develock
+ ChangeLog permissive GNU Emacs
+
+app-emacs/doxymacs
+ use_flag.h GPL-2 Gatt
+
+app-emacs/dts-mode
+ p1025rdb.dtsi BSD || GPL-2+ Linux kernel (arch/powerpc/boot/dts)
+ p1025rdb_32b.dts BSD || GPL-2+ Linux kernel (arch/powerpc/boot/dts)
+
+app-emacs/flashcard
+ emacs.deck public-domain trivial
+
+app-emacs/graphviz-dot-mode
+ helloworld.dot public-domain trivial
+
+app-emacs/haskell-mode
+ Interp2.lhs approx. MIT http://www.haskell.org/haskellwiki/File:Interp2.lhs
+
+app-emacs/initsplit
+ dotemacs.initsplit public-domain trivial
+
+app-emacs/jam-mode
+ strawberry.jam public-domain trivial
+
+app-emacs/jasmin
+ hello.j CC-BY-SA-3.0 http://en.wikipedia.org/wiki/Jasmin_(software)
+
+app-emacs/javascript
+ lcm.js CC-BY-SA-3.0 http://en.wikipedia.org/wiki/JavaScript
+
+app-emacs/lua-mode
+ alt_getopt.lua MIT TeXlive
+
+app-emacs/matlab
+ test.m public-domain trivial
+
+app-emacs/mmm-mode
+ mmm-example.sh Texinfo-manual mmm-mode
+
+app-emacs/mode-compile
+ hello.c public-domain trivial
+
+app-emacs/muse
+ test.muse public-domain trivial
+
+app-emacs/nagios-mode
+ test_suite.cfg GPL-3+ nagios-mode
+
+app-emacs/nxml-mode
+ test.valid.xml public-domain trivial
+ test.invalid.xml public-domain trivial
+
+app-emacs/ocaml-mode, app-emacs/tuareg-mode
+ text.ml LGPL-2+ OCaml
+
+app-emacs/org-mode
+ example.org FDL-1.3+ org-mode
+
+app-emacs/php-mode
+ admin.php GPL-2 GAMMU
+
+app-emacs/po-mode
+ cups_de.po GPL-2 CUPS
+
+app-emacs/psql
+ test.sql public-domain trivial
+
+app-emacs/rst
+ example.rst public-domain trivial
+
+app-emacs/ruby-mode
+ biorhythm.rb BSD-2 Ruby
+
+app-emacs/sml-mode
+ test.sml public-domain trivial
+
+app-emacs/teco
+ example.teco unknown 99-bottles-of-beer.net
+
+app-emacs/vhdl-mode
+ example.vhdl CC-BY-SA-3.0 http://en.wikipedia.org/wiki/VHDL
+
+app-emacs/visual-basic-mode
+ Hello.vb public-domain https://bugs.gentoo.org/506866#c7
+
+app-emacs/xrdb-mode
+ Emacs.ad public-domain trivial
+
+app-emacs/xslide
+ test.xsl public-domain trivial
diff --git a/test-plans/aclocal.m4 b/test-plans/aclocal.m4
new file mode 100644
index 0000000..76038d3
--- /dev/null
+++ b/test-plans/aclocal.m4
@@ -0,0 +1,600 @@
+# generated automatically by aclocal 1.10 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+m4_if(m4_PACKAGE_VERSION, [2.61],,
+[m4_fatal([this file was generated for autoconf 2.61.
+You have another version of autoconf. If you want to use that,
+you should regenerate the build system entirely.], [63])])
+
+# Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_AUTOMAKE_VERSION(VERSION)
+# ----------------------------
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
+# generated from the m4 files accompanying Automake X.Y.
+# (This private macro should not be called outside this file.)
+AC_DEFUN([AM_AUTOMAKE_VERSION],
+[am__api_version='1.10'
+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+dnl require some minimum version. Point them to the right macro.
+m4_if([$1], [1.10], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+])
+
+# _AM_AUTOCONF_VERSION(VERSION)
+# -----------------------------
+# aclocal traces this macro to find the Autoconf version.
+# This is a private macro too. Using m4_define simplifies
+# the logic in aclocal, which can simply ignore this definition.
+m4_define([_AM_AUTOCONF_VERSION], [])
+
+# AM_SET_CURRENT_AUTOMAKE_VERSION
+# -------------------------------
+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10])dnl
+_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to
+# `$srcdir', `$srcdir/..', or `$srcdir/../..'.
+#
+# Of course, Automake must honor this variable whenever it calls a
+# tool from the auxiliary directory. The problem is that $srcdir (and
+# therefore $ac_aux_dir as well) can be either absolute or relative,
+# depending on how configure is run. This is pretty annoying, since
+# it makes $ac_aux_dir quite unusable in subdirectories: in the top
+# source directory, any form will work fine, but in subdirectories a
+# relative path needs to be adjusted first.
+#
+# $ac_aux_dir/missing
+# fails when called from a subdirectory if $ac_aux_dir is relative
+# $top_srcdir/$ac_aux_dir/missing
+# fails if $ac_aux_dir is absolute,
+# fails when called from a subdirectory in a VPATH build with
+# a relative $ac_aux_dir
+#
+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir
+# are both prefixed by $srcdir. In an in-source build this is usually
+# harmless because $srcdir is `.', but things will broke when you
+# start a VPATH build or use an absolute $srcdir.
+#
+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing,
+# iff we strip the leading $srcdir from $ac_aux_dir. That would be:
+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"`
+# and then we would define $MISSING as
+# MISSING="\${SHELL} $am_aux_dir/missing"
+# This will work as long as MISSING is not called from configure, because
+# unfortunately $(top_srcdir) has no meaning in configure.
+# However there are other variables, like CC, which are often used in
+# configure, and could therefore not use this "fixed" $ac_aux_dir.
+#
+# Another solution, used here, is to always expand $ac_aux_dir to an
+# absolute PATH. The drawback is that using absolute paths prevent a
+# configured tree to be moved without reconfiguration.
+
+AC_DEFUN([AM_AUX_DIR_EXPAND],
+[dnl Rely on autoconf to set up CDPATH properly.
+AC_PREREQ([2.50])dnl
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+])
+
+# Do all the work for Automake. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 12
+
+# This macro actually does too much. Some checks are only needed if
+# your package does certain things. But this isn't really a big deal.
+
+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
+# AM_INIT_AUTOMAKE([OPTIONS])
+# -----------------------------------------------
+# The call with PACKAGE and VERSION arguments is the old style
+# call (pre autoconf-2.50), which is being phased out. PACKAGE
+# and VERSION should now be passed to AC_INIT and removed from
+# the call to AM_INIT_AUTOMAKE.
+# We support both call styles for the transition. After
+# the next Automake release, Autoconf can make the AC_INIT
+# arguments mandatory, and then we can depend on a new Autoconf
+# release and drop the old call support.
+AC_DEFUN([AM_INIT_AUTOMAKE],
+[AC_PREREQ([2.60])dnl
+dnl Autoconf wants to disallow AM_ names. We explicitly allow
+dnl the ones we care about.
+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
+AC_REQUIRE([AC_PROG_INSTALL])dnl
+if test "`cd $srcdir && pwd`" != "`pwd`"; then
+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output
+ # is not polluted with repeated "-I."
+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl
+ # test to see if srcdir already configured
+ if test -f $srcdir/config.status; then
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
+ fi
+fi
+
+# test whether we have cygpath
+if test -z "$CYGPATH_W"; then
+ if (cygpath --version) >/dev/null 2>/dev/null; then
+ CYGPATH_W='cygpath -w'
+ else
+ CYGPATH_W=echo
+ fi
+fi
+AC_SUBST([CYGPATH_W])
+
+# Define the identity of the package.
+dnl Distinguish between old-style and new-style calls.
+m4_ifval([$2],
+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
+ AC_SUBST([PACKAGE], [$1])dnl
+ AC_SUBST([VERSION], [$2])],
+[_AM_SET_OPTIONS([$1])dnl
+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT.
+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl
+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl
+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl
+
+_AM_IF_OPTION([no-define],,
+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl
+
+# Some tools Automake needs.
+AC_REQUIRE([AM_SANITY_CHECK])dnl
+AC_REQUIRE([AC_ARG_PROGRAM])dnl
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version})
+AM_MISSING_PROG(AUTOCONF, autoconf)
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version})
+AM_MISSING_PROG(AUTOHEADER, autoheader)
+AM_MISSING_PROG(MAKEINFO, makeinfo)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+AC_REQUIRE([AM_PROG_MKDIR_P])dnl
+# We need awk for the "check" target. The system "awk" is bad on
+# some platforms.
+AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+AC_REQUIRE([AM_SET_LEADING_DOT])dnl
+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])],
+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])],
+ [_AM_PROG_TAR([v7])])])
+_AM_IF_OPTION([no-dependencies],,
+[AC_PROVIDE_IFELSE([AC_PROG_CC],
+ [_AM_DEPENDENCIES(CC)],
+ [define([AC_PROG_CC],
+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [_AM_DEPENDENCIES(CXX)],
+ [define([AC_PROG_CXX],
+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl
+AC_PROVIDE_IFELSE([AC_PROG_OBJC],
+ [_AM_DEPENDENCIES(OBJC)],
+ [define([AC_PROG_OBJC],
+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl
+])
+])
+
+
+# When config.status generates a header, we must update the stamp-h file.
+# This file resides in the same directory as the config header
+# that is generated. The stamp files are numbered to have different names.
+
+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the
+# loop where config.status creates the headers, so we can generate
+# our stamp files there.
+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK],
+[# Compute $1's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+AC_SUBST(install_sh)])
+
+# Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# Check whether the underlying file-system supports filenames
+# with a leading dot. For instance MS-DOS doesn't.
+AC_DEFUN([AM_SET_LEADING_DOT],
+[rm -rf .tst 2>/dev/null
+mkdir .tst 2>/dev/null
+if test -d .tst; then
+ am__leading_dot=.
+else
+ am__leading_dot=_
+fi
+rmdir .tst 2>/dev/null
+AC_SUBST([am__leading_dot])])
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+# 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 10
+
+# AM_PATH_LISPDIR
+# ---------------
+AC_DEFUN([AM_PATH_LISPDIR],
+[AC_PREREQ([2.60])dnl
+ # If set to t, that means we are running in a shell under Emacs.
+ # If you have an Emacs named "t", then use the full path.
+ test x"$EMACS" = xt && EMACS=
+ AC_CHECK_PROGS([EMACS], [emacs xemacs], [no])
+ AC_ARG_VAR([EMACS], [the Emacs editor command])
+ AC_ARG_VAR([EMACSLOADPATH], [the Emacs library search path])
+ AC_ARG_WITH([lispdir],
+ [ --with-lispdir override the default lisp directory],
+ [ lispdir="$withval"
+ AC_MSG_CHECKING([where .elc files should go])
+ AC_MSG_RESULT([$lispdir])],
+ [
+ AC_CACHE_CHECK([where .elc files should go], [am_cv_lispdir], [
+ if test $EMACS != "no"; then
+ if test x${lispdir+set} != xset; then
+ # If $EMACS isn't GNU Emacs or XEmacs, this can blow up pretty badly
+ # Some emacsen will start up in interactive mode, requiring C-x C-c to exit,
+ # which is non-obvious for non-emacs users.
+ # Redirecting /dev/null should help a bit; pity we can't detect "broken"
+ # emacsen earlier and avoid running this altogether.
+ AC_RUN_LOG([$EMACS -batch -q -eval '(while load-path (princ (concat (car load-path) "\n")) (setq load-path (cdr load-path)))' </dev/null >conftest.out])
+ am_cv_lispdir=`sed -n \
+ -e 's,/$,,' \
+ -e '/.*\/lib\/x*emacs\/site-lisp$/{s,.*/lib/\(x*emacs/site-lisp\)$,${libdir}/\1,;p;q;}' \
+ -e '/.*\/share\/x*emacs\/site-lisp$/{s,.*/share/\(x*emacs/site-lisp\),${datarootdir}/\1,;p;q;}' \
+ conftest.out`
+ rm conftest.out
+ fi
+ fi
+ test -z "$am_cv_lispdir" && am_cv_lispdir='${datadir}/emacs/site-lisp'
+ ])
+ lispdir="$am_cv_lispdir"
+])
+AC_SUBST([lispdir])
+])# AM_PATH_LISPDIR
+
+AU_DEFUN([ud_PATH_LISPDIR], [AM_PATH_LISPDIR])
+
+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*-
+
+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 5
+
+# AM_MISSING_PROG(NAME, PROGRAM)
+# ------------------------------
+AC_DEFUN([AM_MISSING_PROG],
+[AC_REQUIRE([AM_MISSING_HAS_RUN])
+$1=${$1-"${am_missing_run}$2"}
+AC_SUBST($1)])
+
+
+# AM_MISSING_HAS_RUN
+# ------------------
+# Define MISSING if not defined so far and test if it supports --run.
+# If it does, set am_missing_run to use it, otherwise, to nothing.
+AC_DEFUN([AM_MISSING_HAS_RUN],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([missing])dnl
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ AC_MSG_WARN([`missing' script is too old or missing])
+fi
+])
+
+# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_MKDIR_P
+# ---------------
+# Check for `mkdir -p'.
+AC_DEFUN([AM_PROG_MKDIR_P],
+[AC_PREREQ([2.60])dnl
+AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P,
+dnl while keeping a definition of mkdir_p for backward compatibility.
+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
+dnl Makefile.ins that do not define MKDIR_P, so we do our own
+dnl adjustment using top_builddir (which is defined more often than
+dnl MKDIR_P).
+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
+case $mkdir_p in
+ [[\\/$]]* | ?:[[\\/]]*) ;;
+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
+esac
+])
+
+# Helper functions for option handling. -*- Autoconf -*-
+
+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 3
+
+# _AM_MANGLE_OPTION(NAME)
+# -----------------------
+AC_DEFUN([_AM_MANGLE_OPTION],
+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])])
+
+# _AM_SET_OPTION(NAME)
+# ------------------------------
+# Set option NAME. Presently that only means defining a flag for this option.
+AC_DEFUN([_AM_SET_OPTION],
+[m4_define(_AM_MANGLE_OPTION([$1]), 1)])
+
+# _AM_SET_OPTIONS(OPTIONS)
+# ----------------------------------
+# OPTIONS is a space-separated list of Automake options.
+AC_DEFUN([_AM_SET_OPTIONS],
+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])])
+
+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET])
+# -------------------------------------------
+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise.
+AC_DEFUN([_AM_IF_OPTION],
+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
+
+# Check to make sure that the build environment is sane. -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
+# Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 4
+
+# AM_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# Do `set' in a subshell so we don't clobber the current shell's
+# arguments. Must try -L first in case configure is actually a
+# symlink; some systems play weird games with the mod time of symlinks
+# (eg FreeBSD returns the mod time of the symlink's containing
+# directory).
+if (
+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null`
+ if test "$[*]" = "X"; then
+ # -L didn't work.
+ set X `ls -t $srcdir/configure conftest.file`
+ fi
+ rm -f conftest.file
+ if test "$[*]" != "X $srcdir/configure conftest.file" \
+ && test "$[*]" != "X conftest.file $srcdir/configure"; then
+
+ # If neither matched, then we have a broken ls. This can happen
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
+ # broken ls alias from the environment. This has actually
+ # happened. Such a system could not be considered "sane".
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
+alias in your environment])
+ fi
+
+ test "$[2]" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ AC_MSG_ERROR([newly created file is older than distributed files!
+Check your system clock])
+fi
+AC_MSG_RESULT(yes)])
+
+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_PROG_INSTALL_STRIP
+# ---------------------
+# One issue with vendor `install' (even GNU) is that you can't
+# specify the program used to strip binaries. This is especially
+# annoying in cross-compiling environments, where the build's strip
+# is unlikely to handle the host's binaries.
+# Fortunately install-sh will honor a STRIPPROG variable, so we
+# always use install-sh in `make install-strip', and initialize
+# STRIPPROG with the value of the STRIP variable (set by the user).
+AC_DEFUN([AM_PROG_INSTALL_STRIP],
+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl
+# Installed binaries are usually stripped using `strip' when the user
+# run `make install-strip'. However `strip' might not be the right
+# tool to use in cross-compilation environments, therefore Automake
+# will honor the `STRIP' environment variable to overrule this program.
+dnl Don't test for $cross_compiling = yes, because it might be `maybe'.
+if test "$cross_compiling" != no; then
+ AC_CHECK_TOOL([STRIP], [strip], :)
+fi
+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
+AC_SUBST([INSTALL_STRIP_PROGRAM])])
+
+# Copyright (C) 2006 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_AM_SUBST_NOTMAKE])
+
+# Check how to create a tarball. -*- Autoconf -*-
+
+# Copyright (C) 2004, 2005 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# serial 2
+
+# _AM_PROG_TAR(FORMAT)
+# --------------------
+# Check how to create a tarball in format FORMAT.
+# FORMAT should be one of `v7', `ustar', or `pax'.
+#
+# Substitute a variable $(am__tar) that is a command
+# writing to stdout a FORMAT-tarball containing the directory
+# $tardir.
+# tardir=directory && $(am__tar) > result.tar
+#
+# Substitute a variable $(am__untar) that extract such
+# a tarball read from stdin.
+# $(am__untar) < result.tar
+AC_DEFUN([_AM_PROG_TAR],
+[# Always define AMTAR for backward compatibility.
+AM_MISSING_PROG([AMTAR], [tar])
+m4_if([$1], [v7],
+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'],
+ [m4_case([$1], [ustar],, [pax],,
+ [m4_fatal([Unknown tar format])])
+AC_MSG_CHECKING([how to create a $1 tar archive])
+# Loop over all known methods to create a tar archive until one works.
+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none'
+_am_tools=${am_cv_prog_tar_$1-$_am_tools}
+# Do not fold the above two line into one, because Tru64 sh and
+# Solaris sh will not grok spaces in the rhs of `-'.
+for _am_tool in $_am_tools
+do
+ case $_am_tool in
+ gnutar)
+ for _am_tar in tar gnutar gtar;
+ do
+ AM_RUN_LOG([$_am_tar --version]) && break
+ done
+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"'
+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"'
+ am__untar="$_am_tar -xf -"
+ ;;
+ plaintar)
+ # Must skip GNU tar: if it does not support --format= it doesn't create
+ # ustar tarball either.
+ (tar --version) >/dev/null 2>&1 && continue
+ am__tar='tar chf - "$$tardir"'
+ am__tar_='tar chf - "$tardir"'
+ am__untar='tar xf -'
+ ;;
+ pax)
+ am__tar='pax -L -x $1 -w "$$tardir"'
+ am__tar_='pax -L -x $1 -w "$tardir"'
+ am__untar='pax -r'
+ ;;
+ cpio)
+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L'
+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L'
+ am__untar='cpio -i -H $1 -d'
+ ;;
+ none)
+ am__tar=false
+ am__tar_=false
+ am__untar=false
+ ;;
+ esac
+
+ # If the value was cached, stop now. We just wanted to have am__tar
+ # and am__untar set.
+ test -n "${am_cv_prog_tar_$1}" && break
+
+ # tar/untar a dummy directory, and stop if the command works
+ rm -rf conftest.dir
+ mkdir conftest.dir
+ echo GrepMe > conftest.dir/file
+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar])
+ rm -rf conftest.dir
+ if test -s conftest.tar; then
+ AM_RUN_LOG([$am__untar <conftest.tar])
+ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break
+ fi
+done
+rm -rf conftest.dir
+
+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool])
+AC_MSG_RESULT([$am_cv_prog_tar_$1])])
+AC_SUBST([am__tar])
+AC_SUBST([am__untar])
+]) # _AM_PROG_TAR
+
+m4_include([m4/m4.m4])
diff --git a/test-plans/admin.php b/test-plans/admin.php
new file mode 100644
index 0000000..7fc1ddd
--- /dev/null
+++ b/test-plans/admin.php
@@ -0,0 +1,758 @@
+<?
+# CONFIGURATION
+//they can be defined or not. if not, interface will give login form
+//$db_serv="127.0.0.1";
+//$db_user="root";
+//$db_pass="";
+
+//these must be defined
+$dokument="admin.php"; //name of current document
+$delall = true; //should be Delete All available for folders ?
+$max_limit=1; //maximal number of sms for outgoing sms editor
+
+#############################
+## DO NOT CHANGE BELOW !!! ##
+#############################
+
+$inbox="UpdatedInDB,ReceivingDateTime,Text,SenderNumber,Coding,UDH,SMSCNumber,Class,TextDecoded,ID,RecipientID";
+$outbox="UpdatedInDB,InsertIntoDB,Text,DestinationNumber,Coding,UDH,Class,TextDecoded,ID,MultiPart,RelativeValidity,SendingDateTime,SenderID,SendingTimeOut,DeliveryReport";
+$outbox_multipart="Text,Coding,UDH,Class,TextDecoded,ID,SequencePosition";
+$sentitems="UpdatedInDB,InsertIntoDB,SendingDateTime,DeliveryDateTime,Text,DestinationNumber,Coding,UDH,SMSCNumber,Class,TextDecoded,ID,SenderID,SequencePosition,Status,StatusError,TPMR,RelativeValidity";
+$phones="ID,InsertIntoDB,TimeOut,Send,Receive,IMEI,Client";
+$daemons="Start,Info";
+
+function dispdatetime($dt)
+{
+ return "$dt[0]$dt[1]$dt[2]$dt[3]-$dt[5]$dt[6]-$dt[8]$dt[9] $dt[11]$dt[12]:$dt[14]$dt[15]:$dt[17]$dt[18]";
+}
+function dispdate($dt)
+{
+ return "$dt[0]$dt[1]$dt[2]$dt[3]-$dt[5]$dt[6]-$dt[8]$dt[9]";
+}
+function dispsmsinfo($class,$udh,$text,$textdecoded,$coding)
+{
+ if (!$udh == "") {
+ echo "UDH AVAILABLE<br>\n";
+ }
+ if ($class == "0" || $class == "1" || $class == "2" || $class == "3") {
+ echo "Class: $class<br>\n";
+ }
+ if ($coding == "8bit") {
+ echo "BINARY<br>\n";
+ } else {
+ if (!$text == "") echo "<b>";
+ if ($coding == "Unicode_No_Compression" || $coding == "Unicode_Compression") {
+ echo "Unicode t";
+ } else {
+ echo "T";
+ }
+ if ($textdecoded == "") {
+ echo "ext</b><br>\n";
+ } else {
+ echo "ext</b>: $textdecoded<br>\n";
+ }
+ if ($text == "") echo "</b>";
+ echo "<br>\n";
+ }
+}
+function dispvalidity($validity) {
+ if ($validity == -1) {
+ echo "default";
+ } else if ($validity == 0) {
+ echo "5 minutes";
+ } else if ($validity == 255) {
+ echo "max. time";
+ } else {
+ echo "$validity";
+ }
+}
+
+$arg="";
+if (!isset($db_serv) && isset($_GET['serv'])) {
+ $db_serv = $_GET['serv'];
+ if ($arg == "") {$arg="?";} else {$arg=$arg."&";};
+ $arg = $arg . "serv=$db_serv";
+ $dbservorig=false;
+}
+if (!isset($db_user) && isset($_GET['user'])) {
+ $db_user = $_GET['user'];
+ if ($arg == "") {$arg="?";} else {$arg=$arg."&";};
+ $arg = $arg . "user=$db_user";
+ $dbuserorig=false;
+}
+if (!isset($db_pass) && isset($_GET['pass'])) {
+ $db_pass = $_GET['pass'];
+ if ($arg == "") {$arg="?";} else {$arg=$arg."&";};
+ $arg = $arg . "pass=$db_pass";
+ $dbpassorig=false;
+}
+if ($arg == "") {$arg="?";} else {$arg=$arg."&";};
+
+if (!isset($db_name) && isset($_GET['db'])) {
+ $db_name = $_GET['db'];
+}
+
+if (isset($db_pass) && isset($db_user) && isset($db_serv)) {
+ $dbpass = @mysql_connect("$db_serv","$db_user","$db_pass");
+ if ($dbpass) {
+ mysql_query("SET NAMES UTF8;");
+ if (isset($db_name)) {
+ $dbconnect = mysql_select_db("$db_name");
+ }
+ }
+}
+
+if (isset($dbpass) && isset($dbconnect) && isset($_GET['op']) &&
+ isset($_GET['year']) && isset($_GET['month']) && isset($_GET['day']) &&
+ isset($_GET['hour']) && isset($_GET['minute']) && isset($_GET['second']) &&
+ isset($_GET['number']) && isset($_GET['tresc']) && isset($_GET['validity']) &&
+ isset($_GET['report']) && isset($_GET['phone']))
+{
+ if ($_GET['op']=="addsms") {
+ $year = $_GET['year'];
+ $month = $_GET['month'];
+ $day = $_GET['day'];
+ $hour = $_GET['hour'];
+ $minute = $_GET['minute'];
+ $second = $_GET['second'];
+ $datoom="$year$month$day$hour$minute$second";
+ $number=$_GET['number'];
+ $tresc=$_GET['tresc'];
+ $validity=$_GET['validity'];
+ if (isset($_GET['class'])) {
+ $class = $_GET['class'];
+ } else {
+ $class = "-1";
+ }
+ $phone = $_GET['phone'];
+ $report = $_GET['report'];
+ if (strlen($tresc) > 160) {
+// $result2 = mysql_db_query("$db_name","select ID from outbox order by ID desc limit 1");
+// $rekord2 = mysql_fetch_row($result2);
+// if ($rekord == null) {
+// $newid = 0;
+// } else {
+// $newid = $rekord2[0];
+// }
+// mysql_free_result($result2);
+// $pos = 0;
+// $text = "";
+ } else {
+ if ($report == "yes") {
+ mysql_query ("insert into outbox(UpdatedInDB,InsertIntoDB,Class,DestinationNumber,TextDecoded,SendingDateTime,RelativeValidity,SenderID,DeliveryReport,Coding) VALUES(now(),now(),'$class','$number','$tresc','$datoom','$validity','$phone','yes','Default_No_Compression')");
+ }
+ if ($report == "no") {
+ mysql_query ("insert into outbox(UpdatedInDB,InsertIntoDB,Class,DestinationNumber,TextDecoded,SendingDateTime,RelativeValidity,SenderID,DeliveryReport,Coding) VALUES(now(),now(),'$class','$number','$tresc','$datoom','$validity','$phone','no','Default_No_Compression')");
+ }
+ if ($report == "default") {
+ mysql_query ("insert into outbox(UpdatedInDB,InsertIntoDB,Class,DestinationNumber,TextDecoded,SendingDateTime,RelativeValidity,SenderID,Coding) VALUES(now(),now(),'$class','$number','$tresc','$datoom','$validity','$phone','Default_No_Compression')");
+ }
+ }
+ }
+}
+
+if (isset($dbpass) && isset($dbconnect) && isset($_GET['op']) && isset($_GET['dzial'])) {
+ if ($_GET['op']=="del") {
+ if (isset($_GET['id'])) {
+ $dzial = $_GET['dzial'];
+ $id = $_GET['id'];
+ mysql_query ("delete from $dzial where id='$id'");
+ if ($dzial == "outbox") {
+ mysql_query ("delete from outbox_multipart where id='$id'");
+ }
+ } else if ($delall) {
+ $dzial = $_GET['dzial'];
+ mysql_query ("delete from $dzial");
+ if ($dzial == "outbox") {
+ mysql_query ("delete from outbox_multipart");
+ }
+ }
+ }
+ $_GET['op']=$dzial;
+}
+
+echo "<HTML>\n<HEAD>\n";
+echo " <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />";
+
+echo "<STYLE TYPE=text/css>\n";
+echo "<!--\n";
+echo "BODY {text-decoration: none; color: #404040; font-family: verdana, arial; font-weight: normal; font-size: 10px; margin-left: 0pt; margin-right: 0pt; margin-top: 0pt; margin-bottom: 0pt}\n";
+echo "input,select,option {text-decoration: none; color: #404040; font-family: verdana, arial; font-weight: normal; font-size: 10px;}\n";
+echo "TD,P,BR {text-decoration: none; color: #404040; font-family: verdana, arial; font-weight: normal; font-size: 10px;}\n";
+echo "B {text-decoration: none; font-family: verdana, arial; font-weight: bold; font-size: 10px;}\n";
+echo "LI {text-decoration: none; color: #404040; font-family: verdana, arial; font-weight: normal; font-size: 10px;}\n";
+echo "A:link {text-decoration: none; color: navy; font-family: verdana, arial; font-weight: normal; font-variant: small-caps; font-size: 10px;}\n";
+echo "A:visited {text-decoration: none; color: navy; font-family: verdana, arial; font-weight: normal; font-variant: small-caps; font-size: 10px;}\n";
+echo "A:active {text-decoration: none; color: navy; font-family: verdana, arial; font-weight: normal; font-variant: small-caps; font-size: 10px;}\n";
+echo "A:hover {text-decoration: none; color: red; font-family: verdana, arial; font-weight: normal; font-variant: small-caps; font-size: 10px;}\n";
+echo "-->\n";
+echo "</STYLE>\n";
+echo "<TITLE>SMS SERVER based on GAMMU</TITLE>\n<body bgcolor=#ededed>\n";
+
+if (isset($dbpass) && isset($dbconnect) && isset($_GET['op']) && isset($_GET['action'])) {
+ if ($_GET['op']=="daemons") {
+ $action = urldecode($_GET['action']);
+ popen ($action, "r");
+ }
+}
+
+if (isset($dbpass) && isset($dbconnect) && isset($_GET['op']) && isset($_GET['year']) && isset($_GET['month']) && isset($_GET['day']) && isset($_GET['hour']) && isset($_GET['minute']) && isset($_GET['second']) && isset($_GET['number']) && isset($_GET['tresc']) && isset($_GET['validity'])) {
+ if ($_GET['op']=="addsms") {
+ echo "<script>";
+ echo "document.location.href='$dokument$arg"."db=$db_name&op=outbox';";
+ echo "</script>";
+ }
+}
+
+if (!isset($dbpass)) {
+ echo "<b>LOGIN</b><p>\n";
+ echo "<form method=\"GET\" action=$dokument name=login>\n<table>\n";
+ echo "<tr><td>Server address:port :</td><td><input name=serv maxlength=20></td></tr>\n";
+ echo "<tr><td>Name :</td><td><input name=user maxlength=20></td></tr>\n";
+ echo "<tr><td>Password :</td><td><input name=pass maxlength=20></td></tr>\n";
+ echo "<tr><td colspan=2><input type=submit name=send value=SEND OnClick=\"if (login.db_serv.value=='') {alert('Sender number not filled'); return false;} else return true;\"></td></tr></table></form>\n";
+ exit;
+}
+if (!$dbpass) {
+ echo "&nbsp;<p><center>Authorization error with MySQL server\n";
+
+ if (isset($dbservorig) || isset($dbuserorig) || isset($dbpassorig)) {
+ echo "<p><a href=ala OnClick=\"history.back(); return false;\">Back to login form</a>";
+ }
+
+ echo "</center></body>\n</html>";
+ exit;
+}
+if (isset($dbconnect) && !$dbconnect) {
+ echo "&nbsp;<p><center>No database in MySQL server</center>\n</body>\n</html>";
+ exit;
+}
+
+echo "<script language=JavaScript>\n";
+echo "function Del(ID) {\n";
+echo " return confirm(\"Do you want to delete SMS with ID \"+ID+\" ?\");\n";
+echo "}\n";
+if ($delall) {
+ echo "function DelAll(ID) {\n";
+ echo " if (confirm(\"Do you want to delete all SMS from \"+ID+\" ?\")) {\n";
+ echo " if (confirm(\"REALLY ?\")) {\n";
+ echo " return true;\n";
+ echo " }\n";
+ echo " }\n";
+ echo " return false;\n";
+ echo "}\n";
+ echo "function update() {\n";
+ if ($max_limit == 1) {
+ echo " if (document.newsms.tresc.value.length > 160) {\n";
+ echo " document.newsms.tresc.value = document.newsms.tresc.value.substring(0, 160);";
+ } else {
+ echo " if (document.newsms.tresc.value.length > ". 153*$max_limit .") {\n";
+ echo " document.newsms.tresc.value = document.newsms.tresc.value.substring(0, ". 153*$max_limit .");";
+ }
+ echo " \n }\nif (document.newsms.tresc.value.length > 160) {\n";
+ echo " document.newsms.smsnum.value = Math.ceil(document.newsms.tresc.value.length/153);\n";
+ echo " document.newsms.left.value = document.newsms.smsnum.value*153 - document.newsms.tresc.value.length;\n";
+ echo " } else {\n";
+ echo " document.newsms.smsnum.value = 1;\n";
+ echo " document.newsms.left.value = 160 - document.newsms.tresc.value.length;\n";
+ echo " }\n";
+ echo "}\n";
+}
+echo "</script>\n";
+echo "<table width = 100% cellspacing=1 cellpadding=5 border=0 bgcolor=silver>\n";
+echo "<tr>\n<td colspan=2 bgcolor=red>\n";
+echo "<b><font color=white size=2 face=verdana>SMS Gateway example, user $db_user</font></b>";
+echo "</td>\n</tr>\n<tr>\n<td bgcolor=whitesmoke valign=top>";
+
+#MENU
+
+if (isset($dbservorig) || isset($dbuserorig) || isset($dbpassorig)) {
+ echo "<nobr><a href=$dokument>OTHER USER</a></nobr><br>\n";
+}
+
+$result0 = mysql_list_dbs($dbpass);
+while ($row0 = mysql_fetch_object($result0)) {
+ $result = mysql_db_query("$row0->Database","select Version from gammu");
+ $rekord = @mysql_fetch_row($result);
+ if (!$rekord) continue;
+ mysql_free_result($result);
+ if ($rekord[0]!='7') continue;
+
+ $result2 = @mysql_list_tables($row0->Database);
+ if (!$result2) continue;
+ $found = false;
+ while ($row2 = mysql_fetch_row($result2)) {
+ if ($row2[0] == "inbox") $found = true;
+ if ($row2[0] == "outbox") $found = true;
+ if ($row2[0] == "outbox_multipart") $found = true;
+ if ($row2[0] == "sentitems") $found = true;
+ }
+ mysql_free_result($result2);
+ if (!$found) continue;
+ if (!isset($_GET['db']) || $_GET['db']!=$row0->Database) {
+ echo "<a href=$dokument$arg"."db=$row0->Database>[>>] $row0->Database</a><br>\n";
+ continue;
+ }
+ echo "<a href=$dokument$arg"."x=x>[<<] $row0->Database</a><br>\n";
+
+ echo "&nbsp <a href=$dokument$arg"."db=$row0->Database&op=daemons>DAEMONS</a><br>\n";
+ echo "&nbsp <a href=$dokument$arg"."db=$row0->Database&op=phones>PHONES</a><p>\n";
+
+ echo "<nobr>&nbsp <a href=$dokument$arg"."db=$row0->Database&op=newsms>NEW OUTBOX SMS</a></nobr><br><br>\n";
+
+ echo "&nbsp <a href=$dokument$arg"."db=$row0->Database&op=inbox>INBOX</a><br>\n";
+ if (isset($_GET['op']) && $_GET['op']=="inbox") {
+ $result = mysql_db_query("$db_name","select substring(ReceivingDateTime,1,10) from inbox group by substring(ReceivingDateTime,1,10) order by substring(ReceivingDateTime,1,10) desc");
+ while($rekord = mysql_fetch_row($result)) {
+ $d = dispdate($rekord[0]);
+ echo " &nbsp &nbsp &middot <a href=$dokument$arg"."db=$row0->Database&op=inbox&date=$rekord[0]>$d</a><br>";
+ }
+ mysql_free_result($result);
+ }
+
+ echo "&nbsp <a href=$dokument$arg"."db=$row0->Database&op=outbox>OUTBOX</a><br>\n";
+ if (isset($_GET['op']) && $_GET['op']=="outbox") {
+ $result = mysql_db_query("$db_name","select substring(SendingDateTime,1,10) from outbox group by substring(SendingDateTime,1,10) order by substring(SendingDateTime,1,10) desc");
+ while($rekord = mysql_fetch_row($result)) {
+ $d = dispdate($rekord[0]);
+ echo " &nbsp &nbsp &middot <a href=$dokument$arg"."db=$row0->Database&op=outbox&date=$rekord[0]>$d</a><br>";
+ }
+ mysql_free_result($result);
+ }
+
+ echo "&nbsp <a href=$dokument$arg"."db=$row0->Database&op=sentitems>SENT ITEMS</a><br>\n";
+ if (isset($_GET['op']) && $_GET['op']=="sentitems") {
+ $result = mysql_db_query("$db_name","select $sentitems,substring(SendingDateTime,1,10) from sentitems group by substring(SendingDateTime,1,10) order by substring(SendingDateTime,1,10) desc");
+ while($rekord = mysql_fetch_row($result)) {
+ $d = dispdate($rekord[18]);
+ echo " &nbsp &nbsp &middot <a href=$dokument$arg"."db=$row0->Database&op=sentitems&date=$rekord[18]>$d</a><br>";
+ }
+ mysql_free_result($result);
+ }
+}
+mysql_free_result($result0);
+
+# /MENU
+
+echo "</td>\n<td bgcolor=whitesmoke valign=top>\n";
+
+#TRESC
+
+if (isset($_GET['op'])) {
+ if ($_GET['op']=="inbox") {
+ $innum = 0;
+ echo "<b>DATABASE $db_name, INBOX";
+ if (isset($_GET['date']) && $_GET['date']!="") {
+ $d = $_GET['date'];
+ $d2 = dispdate($d);
+ echo " $d2";
+ }
+ echo "</b><br><br>\n";
+ echo "<table width=620 cellspacing=1 border=1>";
+ echo "<tr bgcolor=gold><td>ID</td>\n";
+ echo "<td>FROM</td>\n";
+ echo "<td>SMSC</td>\n";
+ echo "<td>CLASS</td>\n";
+ echo "<td>RECEIVE TIME</td>\n";
+ echo "<td>PHONE</td>\n";
+ if ($delall) {
+ echo "<td><a href=$dokument$arg"."db=$db_name&op=del&dzial=inbox Title='Click to delete all SMS' OnClick=\"return DelAll('Inbox');\">[X]</td></tr>\n";
+ } else {
+ echo "<td></td></tr>\n";
+ }
+ if (!isset($_GET['date']) || $_GET['date']=="") {
+ $result = mysql_db_query("$db_name","select $inbox from inbox order by ReceivingDateTime desc");
+ } else {
+ $d = $_GET['date'];
+ $result = mysql_db_query("$db_name","select $inbox from inbox where ReceivingDateTime like '$d%' order by ReceivingDateTime desc");
+ }
+ while($rekord = mysql_fetch_row($result)) {
+ $innum++;
+ if (!isset($_GET['date']) || $_GET['date']=="") {
+ if (isset($_GET['id']) && $_GET['id']!="" && $_GET['id'] == $rekord[9]) {
+ echo "<tr><td>$rekord[9] <a href=$dokument$arg"."db=$db_name&op=inbox title='Click to hide details'>[<<]</a></td>";
+ } else {
+ echo "<tr><td>$rekord[9] <a href=$dokument$arg"."db=$db_name&op=inbox&id=$rekord[9] title='Click to display details'>[>>]</a></td>";
+ }
+ } else {
+ if (isset($_GET['id']) && $_GET['id']!="" && $_GET['id'] == $rekord[9]) {
+ echo "<tr><td>$rekord[9] <a href=$dokument$arg"."db=$db_name&op=inbox&date=$d title='Click to hide details'>[<<]</a></td>";
+ } else {
+ echo "<tr><td>$rekord[9] <a href=$dokument$arg"."db=$db_name&op=inbox&date=$d&id=$rekord[9] title='Click to display details'>[>>]</a></td>";
+ }
+ }
+ echo "<td>$rekord[3]</td><td>$rekord[6]</td>";
+ if ($rekord[7] == "-1") {
+ echo "<td>not set</td>";
+ } else {
+ echo "<td>$rekord[7]</td>";
+ }
+ $d2 = dispdatetime($rekord[1]);
+ echo "<td>$d2</td>";
+ echo "<td>$rekord[10]</td>";
+ if (!isset($_GET['date']) || $_GET['date']=="") {
+ echo "<td><a href=$dokument$arg"."db=$db_name&op=del&dzial=inbox&id=$rekord[9] OnClick=\"return Del($rekord[9]);\" Title='Click to delete'>[X]</a></td></tr>";
+ } else {
+ echo "<td><a href=$dokument$arg"."db=$db_name&op=del&dzial=inbox&date=$d&id=$rekord[9] OnClick=\"return Del($rekord[9]);\" Title='Click to delete'>[X]</a></td></tr>";
+ }
+ if (isset($_GET['id']) && $_GET['id']!="" && $_GET['id'] == $rekord[9]) {
+ $op = $_GET['op'];
+ $id = $_GET['id'];
+ echo "</tr><tr><td colspan=7 bgcolor=white>";
+ $d2 = dispdatetime($rekord[0]);
+ echo "Last changed in DB: $d2<br>";
+ $d2 = dispdatetime($rekord[1]);
+ echo "Insert into DB: $d2<br>";
+ dispsmsinfo($rekord[7],$rekord[5],$rekord[2],$rekord[8],$rekord[4]);
+ echo "</td></tr>\n";
+ }
+ }
+ mysql_free_result($result);
+ echo "</table>";
+ echo "<br>$innum SMS received";
+ }
+ if ($_GET['op']=="outbox") {
+ $outduring = 0;
+ $outfuture = 0;
+ echo "<b>DATABASE $db_name, OUTBOX";
+ if (isset($_GET['date']) && $_GET['date']!="") {
+ $d = $_GET['date'];
+ $d2 = dispdate($d);
+ echo " $d2";
+ }
+ echo "</b><br><br>\n";
+ echo "<table width=620 cellspacing=1 border=1>";
+ echo "<tr bgcolor=gold><td>ID</td>\n";
+ echo "<td>TO</td>\n";
+ echo "<td>TIME 2BE SENT</td>\n";
+ echo "<td>PARTS</td>\n";
+ echo "<td>VALIDITY</td>\n";
+ echo "<td>SENDING</td>\n";
+ echo "<td>PHONE</td>\n";
+ echo "<td>REPORT</td>\n";
+ if ($delall) {
+ echo "<td><a href=$dokument$arg"."db=$db_name&op=del&dzial=outbox Title='Click to delete all SMS' OnClick=\"return DelAll('Outbox');\">[X]</td></tr>\n";
+ } else {
+ echo "<td></td></tr>\n";
+ }
+ if (!isset($_GET['date']) || $_GET['date']=="") {
+ $result = mysql_db_query("$db_name","select $outbox from outbox order by SendingDateTime desc");
+ } else {
+ $d = $_GET['date'];
+ $result = mysql_db_query("$db_name","select $outbox from outbox where SendingDateTime like '$d%' order by SendingDateTime desc");
+ }
+ while($rekord = mysql_fetch_row($result)) {
+ if (!isset($_GET['date']) || $_GET['date']=="") {
+ if (isset($_GET['id']) && $_GET['id']!="" && $_GET['id'] == $rekord[8]) {
+ echo "<tr><td>$rekord[8] <a href=$dokument$arg"."db=$db_name&op=outbox title='Click to hide details'>[<<]</a></td>";
+ } else {
+ echo "<tr><td>$rekord[8] <a href=$dokument$arg"."db=$db_name&op=outbox&id=$rekord[8] title='Click to display details'>[>>]</a></td>";
+ }
+ } else {
+ if (isset($_GET['id']) && $_GET['id']!="" && $_GET['id'] == $rekord[8]) {
+ echo "<tr><td>$rekord[8] <a href=$dokument$arg"."db=$db_name&op=outbox&date=$d title='Click to hide details'>[<<]</a></td>";
+ } else {
+ echo "<tr><td>$rekord[8] <a href=$dokument$arg"."db=$db_name&op=outbox&date=$d&id=$rekord[8] title='Click to display details'>[>>]</a></td>";
+ }
+ }
+ echo "<td>$rekord[3]</td>";
+ $d2 = dispdatetime($rekord[11]);
+ echo "<td>$d2</td>";
+ $counter = 1;
+ if ($rekord[9] == "true") {
+ $result2 = mysql_db_query("$db_name","select $outbox_multipart from outbox_multipart where id='$rekord[8]'");
+ while($rekord2 = mysql_fetch_row($result2)) $counter++;
+ mysql_free_result($result2);
+ }
+ echo "<td>$counter</td><td>";
+ dispvalidity($rekord[10]);
+ if ($rekord[13] != "00000000000000") {
+ $result2 = mysql_db_query("$db_name","select now()+0;");
+ $rekord2 = mysql_fetch_row($result2);
+ if ($rekord[13]<$rekord2[0]) {
+ echo "</td><td>no (earlier failed)</td><td>";
+ $outfuture++;
+ } else {
+ echo "</td><td>yes (now)</td><td>";
+ $outduring++;
+ }
+ mysql_free_result($result2);
+ } else {
+ echo "</td><td>no (earlier not tried)</td><td>";
+ $outfuture++;
+ }
+ if ($rekord[12] == "") {
+ echo "<< any >>";
+ } else {
+ echo "$rekord[12]";
+ }
+ echo "</td><td>$rekord[14]</td><td>";
+ if (!isset($_GET['date']) || $_GET['date']=="") {
+ echo "<a href=$dokument$arg"."db=$db_name&op=del&dzial=outbox&id=$rekord[8] Title='Click to delete' OnClick=\"return Del($rekord[8]);\" >[X]</a></td></tr>";
+ } else {
+ echo "<a href=$dokument$arg"."db=$db_name&op=del&dzial=outbox&date=$d&id=$rekord[8] Title='Click to delete' OnClick=\"return Del($rekord[8]);\" >[X]</a></td></tr>";
+ }
+
+ if (isset($_GET['id']) && $_GET['id']!="" && $_GET['id'] == $rekord[8]) {
+ $op = $_GET['op'];
+ $id = $_GET['id'];
+ echo "</tr><tr><td colspan=9 bgcolor=white>";
+ $result2 = mysql_db_query("$db_name","select $outbox from outbox where ID='$id'");
+ while($rekord2 = mysql_fetch_row($result2)) {
+ $d2 = dispdatetime($rekord2[0]);
+ echo "Last changed in DB: $d2<br>";
+ $d2 = dispdatetime($rekord2[1]);
+ echo "Insert into DB: $d2<br>";
+ if ($rekord2[9] == "true") {
+ echo "<hr size=1 color=silver>";
+ }
+ dispsmsinfo($rekord2[6],$rekord2[5],$rekord2[2],$rekord2[7],$rekord2[4]);
+ if ($rekord[9] == "true") {
+ $result3 = mysql_db_query("$db_name","select $outbox_multipart from outbox_multipart where id='$rekord[8]'");
+ while($rekord3 = mysql_fetch_row($result3)) {
+ echo "<hr size=1 color=silver>";
+ dispsmsinfo($rekord3[3],$rekord3[2],$rekord3[0],$rekord3[4],$rekord3[1]);
+ }
+ mysql_free_result($result3);
+ }
+ }
+ mysql_free_result($result2);
+ echo "</td></tr>\n";
+ }
+ }
+ mysql_free_result($result);
+ echo "</table>";
+ echo "<br>$outduring SMS sequences during sending, $outfuture SMS sequences waiting for sending";
+ }
+ if ($_GET['op']=="sentitems") {
+ $sentnum = 0;
+ echo "<b>DATABASE $db_name, SENT ITEMS";
+ if (isset($_GET['date']) && $_GET['date']!="") {
+ $d = $_GET['date'];
+ $d2 = dispdate($d);
+ echo " $d2";
+ }
+ echo "</b><br><br>\n";
+ echo "<table width=620 cellspacing=1 border=1>";
+ echo "<tr bgcolor=gold><td>ID</td>\n";
+ echo "<td>TO</td>\n";
+ echo "<td>SMSC</td>\n";
+ echo "<td>UPDATED</td>\n";
+ echo "<td>PHONE</td>\n";
+ if ($delall) {
+ echo "<td><a href=$dokument$arg"."db=$db_name&op=del&dzial=sentitems Title='Click to delete all SMS' OnClick=\"return DelAll('Sent Items');\">[X]</td></tr>\n";
+ } else {
+ echo "<td></td></tr>\n";
+ }
+ if (!isset($_GET['date']) || $_GET['date']=="") {
+ $result = mysql_db_query("$db_name","select $sentitems from sentitems order by SendingDateTime");
+ } else {
+ $d = $_GET['date'];
+ $result = mysql_db_query("$db_name","select $sentitems from sentitems where SendingDateTime like '$d%' group by ID order by ID");
+ }
+ while($rekord = mysql_fetch_row($result)) {
+ if (!isset($_GET['date']) || $_GET['date']=="") {
+ if (isset($_GET['id']) && $_GET['id']!="" && $_GET['id'] == $rekord[11]) {
+ echo "<tr><td>$rekord[11] <a href=$dokument$arg"."db=$db_name&op=sentitems title='Click to hide details'>[<<]</a></td>\n";
+ } else {
+ echo "<tr><td>$rekord[11] <a href=$dokument$arg"."db=$db_name&op=sentitems&id=$rekord[11] title='Click to display details'>[>>]</a></td>\n";
+ }
+ } else {
+ if (isset($_GET['id']) && $_GET['id']!="" && $_GET['id'] == $rekord[11]) {
+ echo "<tr><td>$rekord[11] <a href=$dokument$arg"."db=$db_name&op=sentitems&date=$d title='Click to hide details'>[<<]</a></td>\n";
+ } else {
+ echo "<tr><td>$rekord[11] <a href=$dokument$arg"."db=$db_name&op=sentitems&date=$d&id=$rekord[11] title='Click to display details'>[>>]</a></td>\n";
+ }
+ }
+ echo "<td>$rekord[5]</td>\n";
+ echo "<td>$rekord[8]</td>\n";
+ $d2 = dispdatetime($rekord[0]);
+ echo "<td>$d2</td>\n";
+ echo "<td>$rekord[12]</td>\n";
+ if (!isset($_GET['date']) || $_GET['date']=="") {
+ echo "<td><a href=$dokument$arg"."db=$db_name&op=del&dzial=sentitems&id=$rekord[11] Title='Click to delete' OnClick=\"return Del($rekord[11]);\" >[X]</a></td></tr>";
+ } else {
+ echo "<td><a href=$dokument$arg"."db=$db_name&op=del&dzial=sentitems&date=$d&id=$rekord[11] Title='Click to delete' OnClick=\"return Del($rekord[11]);\" >[X]</a></td></tr>";
+ }
+ echo "</tr>\n";
+ $sentnum++;
+ if (isset($_GET['id']) && $_GET['id']!="" && $_GET['id'] == $rekord[11]) {
+ $op = $_GET['op'];
+ $id = $_GET['id'];
+ echo "</tr><tr><td colspan=6 bgcolor=white>";
+
+ for ($i = 1; $i <= 10; $i++) {
+ $result2 = mysql_db_query("$db_name","select $sentitems from sentitems where ID='$id' and SequencePosition='$i' limit 1");
+ if ($result2 == null) break;
+ while($rekord2 = mysql_fetch_row($result2)) {
+ if (!$i == 1) echo "<hr size=1 color=silver>";
+ echo "Validity: ";
+ dispvalidity($rekord2[17]);
+ echo "<br>\n";
+ dispsmsinfo($rekord2[9],$rekord2[7],$rekord2[4],$rekord2[10],$rekord2[6]);
+ }
+ mysql_free_result($result2);
+ }
+
+ echo "<table width=100%><tr bgcolor=silver>\n";
+ echo "<td>PART</td>\n";
+ echo "<td>ERROR CODE</td>\n";
+ echo "<td>STATUS</td>\n";
+ echo "<td>SENDING TIME</td>\n";
+ echo "<td>DELIVERY TIME</td></tr>\n";
+
+ $result2 = mysql_db_query("$db_name","select $sentitems from sentitems where ID='$id'");
+ while($rekord2 = mysql_fetch_row($result2)) {
+ echo "<tr><td>$rekord2[13]</td>\n";
+ echo "<td>$rekord2[15]</td>\n";
+ echo "<td>$rekord2[14]</td>";
+ $d2 = dispdatetime($rekord2[2]);
+ echo "<td>$d2</td>\n";
+ if ($rekord2[3] != "00000000000000") {
+ $d2 = dispdatetime($rekord2[3]);
+ echo "<td>$d2</td></tr>\n";
+ } else {
+ echo "<td>not set</td></tr>\n";
+ }
+ }
+ mysql_free_result($result2);
+
+ echo "</td></tr></table>\n";
+ }
+ }
+ mysql_free_result($result);
+ echo "</table>";
+ echo "<br>$sentnum SMS sequences sent";
+ }
+ if ($_GET['op']=="newsms") {
+ $result2 = mysql_db_query("$db_name","select now()+0;");
+ $rekord2 = mysql_fetch_row($result2);
+ $fulldt = $rekord2[0];
+ mysql_free_result($result2);
+
+ $rok="$fulldt[0]$fulldt[1]$fulldt[2]$fulldt[3]";
+ $miesiac="$fulldt[4]$fulldt[5]";
+ $dzionek="$fulldt[6]$fulldt[7]";
+ $godzina="$fulldt[8]$fulldt[9]";
+ $minuta="$fulldt[10]$fulldt[11]";
+ $sekunda="$fulldt[12]$fulldt[13]";
+
+ echo "<b>DATABASE $db_name, NEW OUTBOX SMS</b><p>\n";
+ echo "<form method=\"GET\" action=$dokument name=newsms>\n";
+ echo "<input type=hidden name=op value=addsms>\n";
+ echo "<input type=hidden name=serv value=$db_serv>\n";
+ echo "<input type=hidden name=user value=$db_user>\n";
+ echo "<input type=hidden name=pass value=$db_pass>\n";
+ echo "<input type=hidden name=db value=$db_name>\n";
+
+ echo "<table><tr><td>Recipient (eg. +48xxxxxxxxx)</td>";
+ echo "<td><input name=number maxlength=20></td></tr>\n";
+
+ echo "<tr><td>Sending date (year-month-day)</td>";
+ echo "<td><input name=year maxlength=4 value=\"$rok\" size=4>\n";
+ echo " - <input name=month maxlength=2 value=\"$miesiac\" size=2>\n";
+ echo " - <input name=day maxlength=2 value=\"$dzionek\" size=2></td></tr>\n";
+
+ echo "<tr><td>Sending time (hour:minute:second)</td><td><input name=hour maxlength=2 value=\"$godzina\" size=2>\n";
+ echo " : <input name=minute maxlength=2 value=\"$minuta\" size=2>\n";
+ echo " : <input name=second maxlength=2 value=\"$sekunda\" size=2></td></tr>\n";
+
+ echo "<tr><td>Validity</td><td><select name=validity>\n";
+ echo "<option value=-1 select>Default (taken from sending phone)\n";
+ echo "<option value=0>5 minutes\n";
+ echo "<option value=1>10 minutes\n";
+ echo "<option value=255>max. time (depends on SMSC)\n";
+ echo "</select></td></tr><tr>\n";
+
+ echo "<tr><td>Delivery Report</td><td><select name=report>\n";
+ echo "<option value=default select>Default (depends on sending daemon)\n";
+ echo "<option value=yes>yes\n";
+ echo "<option value=no>no\n";
+ echo "</select></td></tr><tr>\n";
+
+ echo "<tr><td>Sending phone</td><td><select name=phone>\n";
+ echo "<option value=\"\" select>any\n";
+// echo "<option value=bzzz>ala\n";
+ $result = mysql_db_query("$db_name","select $phones from phones where TimeOut>NOW() AND ID<>\"\"");
+ while($rekord = mysql_fetch_row($result)) {
+ echo "<option value=$rekord[0]>$rekord[5] / $rekord[0]\n";
+ }
+ echo "</select></td></tr><tr>\n";
+
+ echo "<td colspan=2><input type=checkbox name=class value=0>Send class 0 SMS</input><br>\n";
+
+ echo "<textarea name=tresc cols=70 rows=5 onChange=\"update();\" onFocus=\"update();\" onKeyUp=\"update();\" onKeyDown=\"update();\" onclick=\"update();\"></textarea></td></tr>\n";
+
+ echo "<tr><td colspan=2><input type=submit value=SEND OnClick=\"if (newsms.number.value=='') {alert('Sender number not filled'); return false;} else return true;\"></td></tr>\n";
+
+ echo "<tr><td><b>Chars left in current SMS</b></td><td><input name=left maxlength=3 value=\"160\" size=3 readonly></td></tr>\n";
+
+ echo "<tr><td><b>SMS number</b></td><td><input name=smsnum maxlength=3 value=\"1\" size=3 readonly> / $max_limit</td></tr>\n";
+
+ echo "</table></form>\n";
+ echo "<table width=620 cellspacing=1 border=0>";
+ echo "<tr><td>&nbsp;</td></tr></table>\n";
+ }
+ if ($_GET['op']=="daemons") {
+ echo "<b>DATABASE $db_name, DAEMONS</b><p>\n";
+
+ echo "<table width=620 cellspacing=1 border=1>";
+ echo "<tr bgcolor=gold><td>INFO</td>\n";
+ echo "<td></td></tr>\n";
+ $result = mysql_db_query("$db_name","select $daemons from daemons");
+ while($rekord = mysql_fetch_row($result)) {
+ echo "<td>$rekord[1]</td>\n";
+ $x = urlencode($rekord[0]);
+ echo "<td><a href=$dokument$arg"."db=$db_name&action=$x&op=daemons Title='Click to start' OnClick=\"return Del('ala');\" >[X]</a></td></tr>";
+ }
+ mysql_free_result($result);
+ echo "</table>";
+
+ echo "<table width=620 cellspacing=1 border=0>";
+ echo "<tr><td>&nbsp;</td></tr></table>\n";
+ }
+ if ($_GET['op']=="phones") {
+ $counter = 0;
+ echo "<b>DATABASE $db_name, PHONES</b><p>\n";
+ echo "<table width=620 cellspacing=1 border=1>";
+ echo "<tr bgcolor=gold><td>IMEI</td>\n";
+ echo "<td>ID</td>\n";
+ echo "<td>SEND SMS</td>\n";
+ echo "<td>RECEIVE SMS</td>\n";
+ echo "<td>LOGGED</td>\n";
+ echo "<td>CLIENT</td></tr>\n";
+ $result = mysql_db_query("$db_name","select $phones from phones where TimeOut>NOW()");
+ while($rekord = mysql_fetch_row($result)) {
+ $counter++;
+ echo "<td>$rekord[5]</td>\n";
+ echo "<td>$rekord[0]</td>\n";
+ echo "<td>$rekord[3]</td>\n";
+ echo "<td>$rekord[4]</td>\n";
+ $d2 = dispdatetime($rekord[1]);
+ echo "<td>$d2</td>\n";
+ echo "<td>$rekord[6]</td>\n";
+ }
+ mysql_free_result($result);
+ echo "</table>";
+ echo "<br>$counter phones<p>";
+ echo "<table width=620 cellspacing=1 border=0>";
+ echo "<tr><td>&nbsp;</td></tr></table>\n";
+ }
+} else {
+ echo "<table width=620 cellspacing=1 border=0>";
+ echo "<tr><td>&nbsp;</td></tr></table>\n";
+}
+
+echo "</td></tr>\n<tr>\n<td colspan=2 height=15 bgcolor=red align=center>\n";
+echo "<b><font color=white size=2 face=verdana>\n";
+echo "SMS Gateway example version 0.0.3 (c) 2004 by Michal Kruger & <a href=mailto:marcin@mwiacek.com>Marcin Wiacek</a>. Part of <a href=http://www.mwiacek.com>Gammu</a> project<br><hr width=100>\n";
+echo "This PC - IP ".$HTTP_SERVER_VARS['REMOTE_ADDR'].":".$HTTP_SERVER_VARS['REMOTE_PORT'];
+//." (".gethostbyaddr($HTTP_SERVER_VARS['REMOTE_ADDR']).
+echo ", ".$HTTP_SERVER_VARS['HTTP_USER_AGENT']."<br>\n";
+echo "WWW server - IP ".$HTTP_SERVER_VARS['HTTP_HOST'].":".$HTTP_SERVER_VARS['SERVER_PORT'];
+//echo " (".gethostbyaddr($HTTP_SERVER_VARS['HTTP_HOST'])."), \n";
+echo ", ".$HTTP_SERVER_VARS['SERVER_SOFTWARE'].", MySQL client ",mysql_get_client_info(),"<br>\n";
+echo "MySQL server - IP $db_serv, ",mysql_get_server_info(),"<br>\n";
+echo "</font></b>\n";
+echo "</td>\n</tr>\n</table>";
+?>
diff --git a/test-plans/alt_getopt.lua b/test-plans/alt_getopt.lua
new file mode 100644
index 0000000..eb80ce4
--- /dev/null
+++ b/test-plans/alt_getopt.lua
@@ -0,0 +1,168 @@
+-- Copyright (c) 2009 Aleksey Cheusov <vle@gmx.net>
+--
+-- Permission is hereby granted, free of charge, to any person obtaining
+-- a copy of this software and associated documentation files (the
+-- "Software"), to deal in the Software without restriction, including
+-- without limitation the rights to use, copy, modify, merge, publish,
+-- distribute, sublicense, and/or sell copies of the Software, and to
+-- permit persons to whom the Software is furnished to do so, subject to
+-- the following conditions:
+--
+-- The above copyright notice and this permission notice shall be
+-- included in all copies or substantial portions of the Software.
+--
+-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+-- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+-- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+-- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+-- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+-- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+local type, pairs, ipairs, io, os = type, pairs, ipairs, io, os
+
+module ("alt_getopt")
+
+local function convert_short2long (opts)
+ local i = 1
+ local len = #opts
+ local ret = {}
+
+ for short_opt, accept_arg in opts:gmatch("(%w)(:?)") do
+ ret[short_opt]=#accept_arg
+ end
+
+ return ret
+end
+
+local function exit_with_error (msg, exit_status)
+ io.stderr:write (msg)
+ os.exit (exit_status)
+end
+
+local function err_unknown_opt (opt)
+ exit_with_error ("Unknown option `-" ..
+ (#opt > 1 and "-" or "") .. opt .. "'\n", 1)
+end
+
+local function canonize (options, opt)
+ if not options [opt] then
+ err_unknown_opt (opt)
+ end
+
+ while type (options [opt]) == "string" do
+ opt = options [opt]
+
+ if not options [opt] then
+ err_unknown_opt (opt)
+ end
+ end
+
+ return opt
+end
+
+function get_ordered_opts (arg, sh_opts, long_opts)
+ local i = 1
+ local count = 1
+ local opts = {}
+ local optarg = {}
+
+ local options = convert_short2long (sh_opts)
+ for k,v in pairs (long_opts) do
+ options [k] = v
+ end
+
+ while i <= #arg do
+ local a = arg [i]
+
+ if a == "--" then
+ i = i + 1
+ break
+
+ elseif a == "-" then
+ break
+
+ elseif a:sub (1, 2) == "--" then
+ local pos = a:find ("=", 1, true)
+
+ if pos then
+ local opt = a:sub (3, pos-1)
+
+ opt = canonize (options, opt)
+
+ if options [opt] == 0 then
+ exit_with_error ("Bad usage of option `" .. a .. "'\n", 1)
+ end
+
+ optarg [count] = a:sub (pos+1)
+ opts [count] = opt
+ else
+ local opt = a:sub (3)
+
+ opt = canonize (options, opt)
+
+ if options [opt] == 0 then
+ opts [count] = opt
+ else
+ if i == #arg then
+ exit_with_error ("Missed value for option `"
+ .. a .. "'\n", 1)
+ end
+
+ optarg [count] = arg [i+1]
+ opts [count] = opt
+ i = i + 1
+ end
+ end
+ count = count + 1
+
+ elseif a:sub (1, 1) == "-" then
+ local j
+ for j=2,a:len () do
+ local opt = canonize (options, a:sub (j, j))
+
+ if options [opt] == 0 then
+ opts [count] = opt
+ count = count + 1
+ elseif a:len () == j then
+ if i == #arg then
+ exit_with_error ("Missed value for option `-"
+ .. opt .. "'\n", 1)
+ end
+
+ optarg [count] = arg [i+1]
+ opts [count] = opt
+ i = i + 1
+ count = count + 1
+ break
+ else
+ optarg [count] = a:sub (j+1)
+ opts [count] = opt
+ count = count + 1
+ break
+ end
+ end
+ else
+ break
+ end
+
+ i = i + 1
+ end
+
+ return opts,i,optarg
+end
+
+function get_opts (arg, sh_opts, long_opts)
+ local ret = {}
+
+ local opts,optind,optarg = get_ordered_opts (arg, sh_opts, long_opts)
+ for i,v in ipairs (opts) do
+ if optarg [i] then
+ ret [v] = optarg [i]
+ else
+ ret [v] = 1
+ end
+ end
+
+ return ret,optind
+end
diff --git a/test-plans/biorhythm.rb b/test-plans/biorhythm.rb
new file mode 100644
index 0000000..0f89bb9
--- /dev/null
+++ b/test-plans/biorhythm.rb
@@ -0,0 +1,160 @@
+#!/usr/local/bin/ruby
+#
+# biorhythm.rb -
+# $Release Version: $
+# $Revision: 1.9 $
+# $Date: 2003/05/05 14:02:14 $
+# by Yasuo OHBA(STAFS Development Room)
+#
+# --
+#
+#
+#
+
+# probably based on:
+#
+# Newsgroups: comp.sources.misc,de.comp.sources.os9
+# From: fkk@stasys.sta.sub.org (Frank Kaefer)
+# Subject: v41i126: br - Biorhythm v3.0, Part01/01
+# Message-ID: <1994Feb1.070616.15982@sparky.sterling.com>
+# Sender: kent@sparky.sterling.com (Kent Landfield)
+# Organization: Sterling Software
+# Date: Tue, 1 Feb 1994 07:06:16 GMT
+#
+# Posting-number: Volume 41, Issue 126
+# Archive-name: br/part01
+# Environment: basic, dos, os9
+
+include Math
+require "date.rb"
+require "parsearg.rb"
+require "parsedate.rb"
+
+def usage()
+ print "Usage:\n"
+ print "biorhythm.rb [options]\n"
+ print " options...\n"
+ print " -D YYYYMMDD(birthday) : use default values.\n"
+ print " --sdate | --date YYYYMMDD : use system date; use specified date.\n"
+ print " --birthday YYYYMMDD : specifies your birthday.\n"
+ print " -v | -g : show values or graph.\n"
+ print " --days DAYS : graph range (only in effect for graphs).\n"
+ print " --help : help\n"
+end
+$USAGE = 'usage'
+
+def printHeader(y, m, d, p, w)
+ print "\n>>> Biorhythm <<<\n"
+ printf "The birthday %04d.%02d.%02d is a %s\n", y, m, d, w
+ printf "Age in days: [%d]\n\n", p
+end
+
+def getPosition(z)
+ pi = Math::PI
+ z = Integer(z)
+ phys = (50.0 * (1.0 + sin((z / 23.0 - (z / 23)) * 360.0 * pi / 180.0))).to_i
+ emot = (50.0 * (1.0 + sin((z / 28.0 - (z / 28)) * 360.0 * pi / 180.0))).to_i
+ geist =(50.0 * (1.0 + sin((z / 33.0 - (z / 33)) * 360.0 * pi / 180.0))).to_i
+ return phys, emot, geist
+end
+
+def parsedate(s)
+ ParseDate::parsedate(s).values_at(0, 1, 2)
+end
+
+def name_of_week(date)
+ Date::DAYNAMES[date.wday]
+end
+
+#
+# main program
+#
+parseArgs(0, nil, "vg", "D:", "sdate", "date:", "birthday:", "days:")
+
+if $OPT_D
+ dd = Date.today
+ bd = Date.new(*parsedate($OPT_D))
+ ausgabeart = "g"
+else
+ if $OPT_birthday
+ bd = Date.new(*parsedate($OPT_birthday))
+ else
+ STDERR.print("Birthday (YYYYMMDD) : ")
+ unless (si = STDIN.gets.chop).empty?
+ bd = Date.new(*parsedate(si))
+ end
+ end
+ if !bd
+ STDERR.print "BAD Input Birthday!!\n"
+ exit()
+ end
+
+ if $OPT_sdate
+ dd = Date.today
+ elsif $OPT_date
+ dd = Date.new(*parsedate($OPT_date))
+ else
+ STDERR.print("Date [<RETURN> for Systemdate] (YYYYMMDD) : ")
+ unless (si = STDIN.gets.chop).empty?
+ dd = Date.new(*parsedate(si))
+ end
+ end
+ dd ||= Date.today
+
+ if $OPT_v
+ ausgabeart = "v"
+ elsif $OPT_g
+ ausgabeart = "g"
+ else
+ STDERR.print("Values for today or Graph (v/g) [default g] : ")
+ ausgabeart = STDIN.gets.chop
+ end
+end
+if ausgabeart == "v"
+ printHeader(bd.year, bd.month, bd.day, dd - bd, name_of_week(bd))
+ print "\n"
+
+ phys, emot, geist = getPosition(dd - bd)
+ printf "Biorhythm: %04d.%02d.%02d\n", dd.year, dd.month, dd.day
+ printf "Physical: %d%%\n", phys
+ printf "Emotional: %d%%\n", emot
+ printf "Mental: %d%%\n", geist
+ print "\n"
+else
+ if $OPT_days
+ display_period = $OPT_days.to_i
+ elsif $OPT_D
+ display_period = 9
+ else
+ STDERR.printf("Graph for how many days [default 10] : ")
+ display_period = STDIN.gets.chop
+ if display_period.empty?
+ display_period = 9
+ else
+ display_period = display_period.to_i - 1
+ end
+ end
+
+ printHeader(bd.year, bd.month, bd.day, dd - bd, name_of_week(bd))
+ print " P=physical, E=emotional, M=mental\n"
+ print " -------------------------+-------------------------\n"
+ print " Bad Condition | Good Condition\n"
+ print " -------------------------+-------------------------\n"
+
+ (dd - bd).step(dd - bd + display_period) do |z|
+ phys, emot, geist = getPosition(z)
+
+ printf "%04d.%02d.%02d : ", dd.year, dd.month, dd.day
+ p = (phys / 2.0 + 0.5).to_i
+ e = (emot / 2.0 + 0.5).to_i
+ g = (geist / 2.0 + 0.5).to_i
+ graph = "." * 51
+ graph[25] = ?|
+ graph[p] = ?P
+ graph[e] = ?E
+ graph[g] = ?M
+ print graph, "\n"
+ dd = dd + 1
+ end
+ print " -------------------------+-------------------------\n\n"
+end
diff --git a/test-plans/circ.tex b/test-plans/circ.tex
new file mode 100644
index 0000000..48a177e
--- /dev/null
+++ b/test-plans/circ.tex
@@ -0,0 +1,479 @@
+\documentclass[a4paper,twocolumn]{article}
+\usepackage[german]{babel}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage[showlabels,sections,floats,textmath,displaymath]{preview}
+\newbox\chaos
+\newdimen\tdim
+\def\fframe{%
+\tdim=\columnwidth
+\advance\tdim by -2\fboxsep
+\advance\tdim by -2\fboxrule
+\setbox\chaos=\hbox\bgroup\begin{minipage}{\tdim}}
+\def\endfframe{\end{minipage}\egroup\fbox{\box\chaos}}
+\unitlength 1mm
+\newcount\fives
+\fives 14
+\newcount\ones
+\ones\fives
+\multiply \ones by 5
+\newsavebox{\raster}
+\savebox{\raster}(\ones,\ones)
+{\thicklines
+ \put(0,0){\line(0,1){\ones}}
+ \put(0,0){\line(1,0){\ones}}
+ \multiput(0,0)(5,0){\fives}
+ {\begin{picture}(0,0)
+ \put(5,0){\line(0,1){\ones}}
+ \thinlines\multiput(1,0)(1,0){4}{\line(0,1){\ones}}
+ \end{picture}}
+ \multiput(0,0)(0,5){\fives}
+ {\begin{picture}(0,0)
+ \put(0,5){\line(1,0){\ones}}
+ \thinlines\multiput(0,1)(0,1){4}{\line(1,0){\ones}}
+ \end{picture}}
+}
+\begin{document}
+\title{Einfache Kurven auf Rastergrafiken}
+\author{David Kastrup}
+\maketitle
+
+\begin{abstract}
+Es sollen hier einfache Methoden vorgestellt werden, um auf einer
+Rastereinheit verschiedene Kurven darzustellen. Vorgestellt werden
+Zeichenalgorithmen für Linien, Kreise und Hyperbeln. Die hier
+hergeleiteten Gleichungen sind auch unter dem Namen {\tt DDA}s bekannt.
+\end{abstract}
+
+\section{Einführung}
+Bei den hier vorgestellten Algorithmen werden zunächst nur
+Kurvenstücke betrachtet, die die folgenden Eigenschaften besitzen:
+\begin{enumerate}
+\item Sie lassen sich als Funktion $y = f(x)$ darstellen.
+\item $y$ ist im betrachteten Bereich monoton, das heißt, entweder
+ durchgehend steigend oder durchgehend fallend.
+\item Wenn $x$ sich um $1$ ändert, so ändert sich $y$ betragsmäßig
+ höchstens um $1$
+ ($\left|\frac{\partial y}{\partial x}\right| \leq 1$).
+\end{enumerate}
+
+\section{Die gerade Linie}
+Wir betrachten hier zunächst nur die gerade Linie im ersten Oktanten,
+die durch den Punkt $0 \choose 0$ geht. Alle anderen Linien lassen
+sich durch Vertauschen von $x$ und~$y$ sowie Vorzeichenwechsel
+erzeugen. Im ersten Oktanten gilt $x \geq y \geq 0$. Zum Zeichnen
+einer Linie genügt es also, $x$ durchlaufen zu lassen und für $y$ die
+dazugehörigen Werte zu berechnen und zu runden.
+
+Die Gleichung einer Geraden durch $\Delta x \choose \Delta y$ lautet:
+\begin{equation}
+\label{lgi}
+y = \frac{\Delta y}{\Delta x}x
+\end{equation}
+%
+Nun stellen wir $y$ als Summe eines ganzzahligen Wertes $e$ und eines
+gebrochenen Wertes $f$ dar, für den gilt: $-0.5 \leq f < 0.5$. Somit
+stellt dann $e$ den gewünschten, auf die nächste ganze Zahl gerundeten
+$y$-Wert dar. Jetzt formen wir (\ref{lgi}) um:
+\begin{eqnarray}
+e + f &=& x \frac{\Delta y}{\Delta x}\nonumber\\
+e \Delta x + f \Delta x &=& x \Delta y\nonumber\\
+f \Delta x - \left\lceil\frac{\Delta x}2\right\rceil &=&
+x \Delta y - e \Delta x - \left\lceil\frac{\Delta x}2\right\rceil \label{lgii}
+\end{eqnarray}
+%
+Den linken Ausdruck in (\ref{lgii}) bezeichnen wir jetzt mit $d$. Für
+positive gerade Werte von $\Delta x$ ist offensichtlich $d < 0$ eine
+zu~$f < 0.5$ equivalente Bedingung.
+
+Für ungerade Werte von~$\Delta x$ ist $f < 0.5$ equivalent zu
+$d + 0.5 < 0$.
+Da $d$ stets eine ganze Zahl ist, ist dies wieder zu $d < 0$
+equivalent.
+
+% INTENTIONAL ERRORS! INTENTIONAL ERRORS! INTENTIONAL ERRORS!
+%
+% The following line should flag a PostScript error when previewing,
+% but processing of other previews should continue.
+%
+Wird nun $\ifPreview\special{ps: junk}\fi f \geq 0.5$, wie sich durch
+den Vergleich $d \stackrel{?}{<} 0$ feststellen läßt, so muß man
+korrigieren, indem man $f$ um~1 erniedrigt und $e$ um~$1$ erhöht.
+%
+% The following line will make Ghostscript abort unexpectedly when
+% previewing, but processing of other previews should continue.
+%
+$\ifPreview\special{ps: quit}\fi d$ muß dann auch entsprechend
+angepaßt werden.
+
+Mit den angegebenen Formeln ergibt sich jetzt bei Berücksichtigung der
+Einflüsse von $x$ und $e$ auf $d$ der in Tabelle~\ref{linalg}
+angegebene Algorithmus. Eine optimierte C-function, die die
+Oktantenaufteilung berücksichtigt, ist in Tabelle~\ref{linc} zu
+finden. Einige hiermit gezeichnete Linien sind in
+Abbildung~\ref{linpict} zu sehen.
+\begin{table}
+ \caption{Linienzugalgorithmus} \label{linalg}
+ \begin{fframe}
+ \begin{enumerate}
+ \item Setze $x \gets 0$, $y \gets 0$, $d \gets
+ -\left\lceil\frac{\Delta x}2\right\rceil$
+ \item Wiederhole bis $x = \Delta x$
+ \begin{enumerate}
+ \item Zeichne Punkt an $x \choose y$
+ \item Setze $x \gets x + 1$, $d \gets d + \Delta y$
+ \item Falls $d \geq 0$
+ \begin{enumerate}
+ \item Setze $d \gets d - \Delta x$
+ \item Setze $y \gets y + 1$
+ \end{enumerate}
+ \end{enumerate}
+ \end{enumerate}
+ \end{fframe}
+\end{table}
+\begin{table}
+\caption{Linienziehen in C} \label{linc}
+\begin{fframe}
+\small
+\begin{verbatim}
+extern int x,y;
+/* (x,y) ist Koordinate des nicht
+ * gezeichneten Startpunktes, zeigt
+ * nachher auf gezeichneten Endpunkt
+ */
+#define doline(dx,dy,advx,advy) { \
+ d = -(((i = dx) + 1) >> 1); \
+ while (i--) { \
+ advx; \
+ if ((d += dy) >= 0) { \
+ d -= dx; advy; \
+ } \
+ dot(x,y); \
+ } \
+ return; \
+} /* Grundalgorithmus 1. Oktant */
+/* dx ist Distanz in unabh. Richtung, *
+ * dy in abh. Richtung, advx geht *
+ * in unabh. Richtung, advy in abh. */
+
+#define docond(cond,advx,advy) { \
+ if (cond) doline(dx,dy,advx,advy) \
+ doline(dy,dx,advy,advx) \
+} /* Grundalgorithmus 1./2. Oktant */
+/* cond ist true falls |dx| > |dy| */
+
+void
+linedraw(int dx, int dy)
+/* Von (x,y) nach (x+dx, y+dx). */
+{
+ int i;
+
+ if (dx >= 0) {
+ if (dy >= 0)
+ docond(dx > dy, ++x, ++y)
+ docond(dx > (dy = -dy), ++x, --y)
+ }
+ if (dy >= 0)
+ docond((dx = -dx) > dy,--x,++y)
+ docond((dx = -dx) > (dy = -dy),
+ --x, --y )
+}
+\end{verbatim}
+\end{fframe}
+\end{table}
+\begin{figure}
+ \begin{picture}(\ones,\ones) \put(0,0){\usebox{\raster}}
+ \newcount\x
+ \newcount\y
+ \newcount\d
+ \newcount\dx
+ \newcount\dy
+ \x 0
+ \y 0
+ \dx \ones
+ \dy \ones
+ \loop %{
+ \d -\dx
+ \divide \d by 2 %}
+ \ifnum \dy > 0 %{
+ {\loop %{
+ \put(\x,\y){\circle*{1}}%}
+ \ifnum \x < \ones %{
+ \advance \x by 1
+ \advance \d by \dy %}
+ \ifnum \d > -1 %{
+ \advance \y by 1
+ \advance \d by -\dx %}
+ \fi %}}
+ \repeat}
+ \advance \x by 5
+ \advance \dx by -5
+ \advance \dy by -15 %}
+ \repeat
+ \end{picture}
+\caption{Einige Linien}\label{linpict}
+\end{figure}
+
+\section{Der Kreis}
+Wir betrachten hier nur den Achtelkreis im zweiten Oktanten
+($y \geq x \geq 0$). Hier gelten die oben angegebenen Beziehungen.
+Alle anderen Achtelkreise lassen sich durch elementare Spiegelungen
+erzeugen.
+
+Die Gleichung eines Kreises ist hier
+\begin{equation}
+y = ±\sqrt{r^2 - x^2}
+\end{equation}
+
+Der Wert $y$ läßt sich darstellen als Summe einer ganzen Zahl $e$ und
+einem Wert $f$ mit $-0.5 \leq f < 0.5$. Der Wertebereich von $f$ ist
+so gewählt worden, damit $e$ einen auf ganze Zahlen gerundeten Wert
+für $y$ darstellt.
+
+Nun gilt:
+\begin{eqnarray}
+e + f&=&\sqrt{r^2 - x^2}\nonumber\\
+\label{ggg}e^2 + 2ef + f^2&=&r^2 - x^2
+\end{eqnarray}
+%
+Die Gleichung (\ref{ggg}) hat für $x+1$ folgende Form:
+\begin{eqnarray}
+\label{hhh}e'^2 + 2e'f' + f'^2&=&r^2 - x^2 - 2x -1
+\end{eqnarray}
+%
+Zieht man die Gleichung (\ref{ggg}) von (\ref{hhh}) ab, so ergibt sich
+nach Umsortieren:
+\begin{eqnarray*}
+ e' = e:\\
+ 2e'f' + f'^2&=&2ef+f^2-2x-1\\
+ e' = e-1:\\
+ 2e'f' + f'^2&=&2ef+f^2+2e-2x-2
+\end{eqnarray*}
+%
+Jetzt wird $2ef + f^2$ mit $m$ getauft. Also:
+\begin{eqnarray*}
+ e' = e:\\
+ m'&=&m -2x-1\\
+ e' = e-1:\\
+ m'&=&m +2e-1 -2x-1
+\end{eqnarray*}
+Wie groß ist jetzt $m$? Für $x=0$ ist es sicher $0$. Solange $e$
+konstant bleibt, schrumpft $f$ stetig. Fällt $f$ unter $-0.5$, so
+fällt $m$ (unter Vernachlässigung von $f^2$) unter $-e$. Dies wird
+jetzt als Kriterium für einen Unterlauf von $f$ verwendet. Tritt
+dieser auf, so muß $f$ um $1$ erhöht und $e$ um $1$ erniedrigt werden.
+
+Um die Abfragebedingung zu vereinfachen, setzt man jetzt $q$ = $m+e$.
+Der resultierende Algorithmus ist in Tabelle \ref{alg}, ein
+optimiertes C-Programm ist in Tabelle \ref{prog} zu finden.
+\begin{table}
+ \caption{Kreiszeichenalgorithmus}\label{alg}
+ \begin{fframe}
+ \begin{enumerate}
+ \item Setze $x\gets 0$, $y\gets r$, $q\gets r$
+ \item Wiederhole bis $x>y$:
+ \begin{enumerate}
+ \item Setze einen Punkt an $x \choose y$.
+ \item Setze $q\gets q-2x-1$
+ \item Falls $q<0$
+ \begin{enumerate}
+ \item Setze $q\gets q + 2y-2$
+ \item Setze $y\gets y-1$
+ \end{enumerate}
+ \item Setze $x\gets x+1$
+ \end{enumerate}
+ \end{enumerate}
+ \end{fframe}
+\end{table}
+\begin{table}
+ \caption{Kreiszeichenprogramm}\label{prog}
+ \begin{fframe}
+ \small
+\begin{verbatim}
+void
+fourfold(int x0, int y0, int x, int y)
+/* Zeichne in Oktant 1,3,5,7 */
+/* Wird benutzt, um Anfangs- und End- *
+ * Punkte nicht zweimal zu zeichnen */
+{
+ dot(x0+x,y0+y);
+ dot(x0-y,y0+x);
+ dot(x0-x,y0-y);
+ dot(x0+y,y0-x);
+}
+
+void
+eightfold(int x0, int y0, int x, int y)
+/* Zeichne in allen Quadranten */
+{
+ fourfold(x0,y0,x,y); /* 1357 */
+ fourfold(x0,y0,x,-y); /* 8642 */
+}
+
+void
+circle(int x0, int y0, int r)
+{
+ fourfold(x0,y0,0,r);
+ /* Die ersten vier Punkte */
+ for (x=0, y=q=r;; ) {
+ if ((q -= 2* x++ + 1) < 0)
+ q += 2* --y;
+ if (x >= y)
+ break;
+ eightfold(x0,y0,x,y);
+ }
+ if (x==y)
+ fourfold(x0,y0,x,y);
+ /* Eventuell die letzten vier */
+}
+\end{verbatim}
+ \end{fframe}
+\end{table}
+\begin{figure}
+ \begin{picture}(\ones,\ones)
+ \put(0,0){\usebox{\raster}}
+ \newcount\x
+ \newcount\y
+ \newcount\q
+ \loop
+ {\x 0
+ \y \ones
+ \q \ones
+ \loop
+ \put(\x,\y){\circle*{1}}
+ \put(\y,\x){\circle*{1}}
+ \advance \q by -\x
+ \advance \x by 1
+ \advance \q by -\x
+ \ifnum \x < \y
+ \ifnum \q < 0
+ \advance \y by -1
+ \advance \q by \y
+ \advance \q by \y
+ \fi
+ \repeat}
+ \advance \ones by -10
+ \ifnum \ones > 0
+ \repeat
+ \end{picture}
+ \caption{Viertelkreise}\label{zeich}
+\end{figure}
+
+\section{Einfache Hyperbeln}
+Als letztes Beispiel betrachten wir hier Hyperbeln, die der Formel
+$y = r^2\!/x$ genügen, und zwar im Bereich~$x \geq r$.
+
+Mit dem Ansatz $y = e + f$ ergibt sich:
+\begin{eqnarray}
+ e+f &=& r^2\!/x\nonumber\\
+ ex + fx &=& r^2\nonumber\\
+ fx &=& r^2 - ex\label{phyp}
+\end{eqnarray}
+\pagebreak[2]
+Für $x' = x+1$ hat nun (\ref{phyp}) die Form
+\begin{eqnarray*}
+ e' = e:\\
+ f'x' &=& r^2 - ex - e\\
+ e' = e - 1:\\
+ f'x' &=& r^2 - ex - e + x + 1
+\end{eqnarray*}
+Setzt man jetzt $d = (2f + 1)x$, so ist $f < -0.5$ mit~$d < 0$
+equivalent. Erreicht man diesen Fall unter Verwendung der Annahme
+$e' = e$,
+dann muß in bekannter Weise $f$ um~$1$ erhöht und $e$ um~$1$
+vermindert werden.
+
+\pagebreak
+Für $d'$ ergeben sich dann die folgenden Werte:
+\begin{eqnarray*}
+ e' = e:\\
+ d' &=& d - 2e + 1\\
+ e' = e - 1:\\
+ d' &=& d - 2e + 2x + 2 + 1
+\end{eqnarray*}
+Daraus ergibt sich der in Tabelle~\ref{halg} angegebene
+Hyperbelalgorithmus für den ersten Oktanten.
+\begin{table}
+ \caption{Hyperbelalgorithmus}\label{halg}
+ \begin{fframe}
+ \begin{enumerate}
+ \item Setze $d \gets r$, $x \gets r$, $y \gets r$
+ \item Wiederhole bis zufrieden
+ \begin{enumerate}
+ \item Setze Punkt an $x \choose y$
+ \item Setze $x \gets x + 1$
+ \item Setze $d \gets d - 2y + 1$
+ \item Falls $d < 0$
+ \begin{enumerate}
+ \item Setze $d \gets d + 2x$
+ \item Setze $y \gets y - 1$
+ \end{enumerate}
+ \end{enumerate}
+ \end{enumerate}
+ \end{fframe}
+\end{table}
+\begin{table}
+ \caption{Hyperbeln in C}
+ \begin{fframe}
+ \small
+\begin{verbatim}
+void
+four(int x0, int y0, int x, int y)
+/* Hyperbeln sind nur in 4 Oktanten */
+{
+ dot(x0+x,y0+y);
+ dot(x0+y,y0+x);
+ dot(x0-x,y0-y);
+ dot(x0-y,y0-x);
+}
+
+void
+hyperb(int x0, int y0, int r, int dx)
+{
+ int d, x, y;
+
+ for (x = y = d = r; dx--;) {
+ four(x0,y0,x,y);
+ ++x;
+ if ((d -= 2*y + 1) < 0) {
+ d += 2*x;
+ --y;
+ }
+ }
+}
+\end{verbatim}
+ \end{fframe}
+\end{table}
+\begin{figure}
+ \begin{picture}(\ones,\ones)
+ \put(0,0){\usebox{\raster}}
+ \newcount\x
+ \newcount\y
+ \newcount\q
+ \newcount\r
+ \r\ones
+ \loop
+ \advance \r by -10
+ \ifnum \r > 0
+ {\x \r
+ \y \r
+ \q \r
+ \loop
+ \put(\x,\y){\circle*{1}}
+ \put(\y,\x){\circle*{1}}
+ \ifnum \x < \ones
+ \advance \x by 1
+ \advance \q by -\y
+ \advance \q by -\y
+ \advance \q by 1
+ \ifnum \q < 0
+ \advance \q by \x
+ \advance \q by \x
+ \advance \y by -1
+ \fi
+ \repeat}
+ \repeat
+ \end{picture}
+ \caption{Hyperbeln}\label{hzeich}
+\end{figure}
+\end{document}
diff --git a/test-plans/cldoc-test.lisp b/test-plans/cldoc-test.lisp
new file mode 100644
index 0000000..5498e28
--- /dev/null
+++ b/test-plans/cldoc-test.lisp
@@ -0,0 +1,3 @@
+;;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; -*-
+
+(defun foo (x) (* x 3))
diff --git a/test-plans/cups_de.po b/test-plans/cups_de.po
new file mode 100644
index 0000000..0b92379
--- /dev/null
+++ b/test-plans/cups_de.po
@@ -0,0 +1,3002 @@
+#
+# "$Id$"
+#
+# Message catalog template for the Common UNIX Printing System (CUPS).
+#
+# Copyright 2005-2006 by Easy Software Products.
+#
+# These coded instructions, statements, and computer programs are the
+# property of Easy Software Products and are protected by Federal
+# copyright law. Distribution and use rights are outlined in the file
+# "LICENSE.txt" which should have been included with this file. If this
+# file is missing or damaged please contact Easy Software Products
+# at:
+#
+# Attn: CUPS Licensing Information
+# Easy Software Products
+# 44141 Airport View Drive, Suite 204
+# Hollywood, Maryland 20636 USA
+#
+# Voice: (301) 373-9600
+# EMail: cups-info@cups.org
+# WWW: http://www.cups.org
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: CUPS 1.2\n"
+"Report-Msgid-Bugs-To: http://www.cups.org/str.php\n"
+"POT-Creation-Date: 2007-01-23 09:19-0500\n"
+"PO-Revision-Date: 2006-07-17 19:55+0200\n"
+"Last-Translator: Bernd Krumböck <b.krumboeck@rewe-group.at>\n"
+"Language-Team: Deutsch\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+msgid "Options Installed"
+msgstr "Installierte Optionen"
+
+msgid "Class"
+msgstr "Klasse"
+
+msgid "Printer"
+msgstr "Drucker"
+
+msgid "Extra"
+msgstr "Extra"
+
+msgid "General"
+msgstr "Allgemein"
+
+msgid "Media Size"
+msgstr "Mediengröße"
+
+msgid "Media Type"
+msgstr "Medientyp"
+
+msgid "Media Source"
+msgstr "Medienquelle"
+
+msgid "Output Mode"
+msgstr "Ausgabemodus"
+
+msgid "Resolution"
+msgstr "Auflösung"
+
+msgid "Variable"
+msgstr "Variable"
+
+msgid "Yes"
+msgstr "Ja"
+
+msgid "No"
+msgstr "Nein"
+
+msgid "Auto"
+msgstr "Automatisch"
+
+msgid ""
+"Enter your username and password or the root username and password to access "
+"this page."
+msgstr ""
+"Für Zugang Benutzername und Passwort (oder Benutzername und Passwort für "
+"root) eingeben."
+
+msgid "You must use a https: URL to access this page."
+msgstr "Eine https:-URL ist für den Zugriff erforderlich."
+
+#, c-format
+msgid "Bad request version number %d.%d!"
+msgstr "Ungültige Versionsnummer %d.%d für Abfrage!"
+
+msgid "No attributes in request!"
+msgstr "Abfrage enthält keine Eigenschaften!"
+
+#, c-format
+msgid "Attribute groups are out of order (%x < %x)!"
+msgstr "Eigenschaftsgruppen haben falsche Reihenfolge (%x<%x)!"
+
+msgid "Missing required attributes!"
+msgstr "Benötigte Eigenschaften fehlen!"
+
+#, c-format
+msgid "%s not supported!"
+msgstr "%s nicht unterstützt!"
+
+msgid "The printer or class was not found."
+msgstr "Drucker oder Klasse nicht gefunden."
+
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/classes/CLASSNAME\"."
+msgstr ""
+"Die printer-uri muss in der Form \"ipp://HOSTNAME/classes/KLASSENNAME\" sein."
+
+#, c-format
+msgid "The printer-uri \"%s\" contains invalid characters."
+msgstr "Die printer-uri \"%s\" enthält ungültige Zeichen."
+
+#, c-format
+msgid "A printer named \"%s\" already exists!"
+msgstr "Ein Drucker mit dem Namen \"%s\" existiert bereits!"
+
+#, c-format
+msgid "Attempt to set %s printer-state to bad value %d!"
+msgstr "Versuch den %s printer-state auf ungültigen Wert %d zu setzen!"
+
+#, c-format
+msgid "add_class: Unknown printer-op-policy \"%s\"."
+msgstr "add_class: Unbekannte printer-op-policy \"%s\"."
+
+#, c-format
+msgid "add_class: Unknown printer-error-policy \"%s\"."
+msgstr "add_class: Unbekannte printer-error-policy \"%s\"."
+
+msgid "Unable to allocate memory for file types!"
+msgstr "Speicherreservierung für Dateitypen fehlgeschlagen!"
+
+#, c-format
+msgid "Character set \"%s\" not supported!"
+msgstr "Zeichensatz \"%s\" nicht unterstützt!"
+
+#, c-format
+msgid "Language \"%s\" not supported!"
+msgstr "Sprache \"%s\" nicht unterstützt!"
+
+#, c-format
+msgid "The notify-user-data value is too large (%d > 63 octets)!"
+msgstr "Der Wert von notify-user-data ist zu groß (%d > 63 Oktette)!"
+
+msgid ""
+"The notify-lease-duration attribute cannot be used with job subscriptions."
+msgstr ""
+"notify-lease-duration kann nicht bei Auftragssubskriptionen verwendet werden."
+
+msgid ""
+"The printer-uri must be of the form \"ipp://HOSTNAME/printers/PRINTERNAME\"."
+msgstr ""
+"Die printer-uri muss in der Form \"ipp://HOSTNAME/printers/DRUCKERNAME\" "
+"sein."
+
+#, c-format
+msgid "A class named \"%s\" already exists!"
+msgstr "Eine Klasse namens \"%s\" existiert bereits!"
+
+#, c-format
+msgid ""
+"File device URIs have been disabled! To enable, see the FileDevice directive "
+"in \"%s/cupsd.conf\"."
+msgstr ""
+"Ausgabe auf Dateien gesperrt! Gegebenenfalls FileDevice-Einstellung in \"%s/"
+"cupsd.conf\" ändern."
+
+#, c-format
+msgid "Bad device-uri \"%s\"!"
+msgstr "Falsche device-uri \"%s\"!"
+
+#, c-format
+msgid "Bad port-monitor \"%s\"!"
+msgstr "Falscher port-monitor \"%s\"!"
+
+#, c-format
+msgid "Bad printer-state value %d!"
+msgstr "Falscher printer-state Wert %d!"
+
+#, c-format
+msgid "Unknown printer-op-policy \"%s\"."
+msgstr "Unbekannte printer-op-policy \"%s\"."
+
+#, c-format
+msgid "Unknown printer-error-policy \"%s\"."
+msgstr "Unbekannte printer-error-policy \"%s\"."
+
+#, c-format
+msgid "Unable to copy interface script - %s!"
+msgstr "Interface Skript konnte nicht kopiert werden - %s!"
+
+#, c-format
+msgid "Unable to copy PPD file - %s!"
+msgstr "PPD Datei konnte nicht kopiert werden - %s!"
+
+msgid "Unable to copy PPD file!"
+msgstr "Kann PPD Datei nicht kopieren!"
+
+msgid "Got a printer-uri attribute but no job-id!"
+msgstr "Eigenschaft der printer-uri ohne job-id erhalten!"
+
+#, c-format
+msgid "Bad job-uri attribute \"%s\"!"
+msgstr "Falsche job-uri Eigenschaft \"%s\"!"
+
+#, c-format
+msgid "Job #%d doesn't exist!"
+msgstr "Auftrag #%d existiert nicht!"
+
+#, c-format
+msgid "Job #%d is not held for authentication!"
+msgstr "Auftrag %d nicht für Authentifizierung angehalten!"
+
+#, c-format
+msgid "You are not authorized to authenticate job #%d owned by \"%s\"!"
+msgstr "Nicht berechtigt den Auftrag #%d von \"%s\" zu authentifizieren!"
+
+msgid "The printer-uri attribute is required!"
+msgstr "Die Eigenschaft printer-uri wird benötigt!"
+
+msgid "Missing requesting-user-name attribute!"
+msgstr "Vermisse die Eigenschaft requesting-user-name!"
+
+#, c-format
+msgid "The printer-uri \"%s\" is not valid."
+msgstr "Die printer-uri \"%s\" ist nicht gültig."
+
+#, c-format
+msgid "No active jobs on %s!"
+msgstr "Keine aktiven Aufträge auf %s!"
+
+#, c-format
+msgid "You are not authorized to delete job #%d owned by \"%s\"!"
+msgstr "Sie sind nicht berechtigt den Auftrag #%d, von \"%s\" zu löschen!"
+
+#, c-format
+msgid "Job #%d is already %s - can't cancel."
+msgstr "Auftrag #%d ist bereits %s - Abbruch unmöglich."
+
+msgid "The printer or class is not shared!"
+msgstr "Drucker oder Klasse ist nicht verteilt!"
+
+#, c-format
+msgid "Destination \"%s\" is not accepting jobs."
+msgstr "Ziel \"%s\" akzeptiert keine Aufträge."
+
+#, c-format
+msgid "Bad copies value %d."
+msgstr "Falscher Wert für Kopien: %d."
+
+#, c-format
+msgid "Bad page-ranges values %d-%d."
+msgstr "Falscher page-ranges Wert %d-%d."
+
+msgid "Too many active jobs."
+msgstr "Zu viele aktive Aufträge."
+
+msgid "Quota limit reached."
+msgstr "Kontigentsgrenze erreicht."
+
+#, c-format
+msgid "Unable to add job for destination \"%s\"!"
+msgstr "Kann Auftrag nicht zu Ziel \"%s\" hinzufügen!"
+
+msgid "No subscription attributes in request!"
+msgstr "Keine Subskriptionseigenschaften in der Abfrage!"
+
+msgid "notify-events not specified!"
+msgstr "notify-events nicht festgelegt!"
+
+#, c-format
+msgid "Job %d not found!"
+msgstr "Auftrag %d nicht gefunden!"
+
+msgid "No default printer"
+msgstr "Kein Standarddrucker"
+
+msgid "cups-deviced failed to execute."
+msgstr "cups-deviced konnte nicht ausgeführt werden."
+
+msgid "cups-driverd failed to execute."
+msgstr "cups-driverd konnte nicht ausgeführt werden."
+
+msgid "No destinations added."
+msgstr "Keine Ziele hinzugefügt."
+
+#, c-format
+msgid "notify-subscription-id %d no good!"
+msgstr "notify-subscription-id %d unbrauchbar!"
+
+#, c-format
+msgid "Job #%s does not exist!"
+msgstr "Auftrag #%s existiert nicht!"
+
+#, c-format
+msgid "Job #%d does not exist!"
+msgstr "Auftrag #%d existiert nicht!"
+
+msgid "No subscriptions found."
+msgstr "Keine Subskription gefunden."
+
+#, c-format
+msgid "Not authorized to hold job #%d owned by \"%s\"!"
+msgstr "Nicht berechtigt den Auftrag #%d von \"%s\" aufzuhalten!"
+
+#, c-format
+msgid "Job #%d is finished and cannot be altered!"
+msgstr "Auftrag #%d ist bereits fertig und nicht änderbar!"
+
+#, c-format
+msgid "You are not authorized to move job #%d owned by \"%s\"!"
+msgstr "Nicht berechtigt den Auftrag #%d von \"%s\" zu verschieben!"
+
+msgid "job-printer-uri attribute missing!"
+msgstr "Eigenschaft job-printer-uri fehlt."
+
+#, c-format
+msgid "Unsupported compression \"%s\"!"
+msgstr "Nicht unterstützte Kompression \"%s\"!"
+
+msgid "No file!?!"
+msgstr "Keine Datei!?!"
+
+#, c-format
+msgid "Could not scan type \"%s\"!"
+msgstr "Konnte Typ nicht scannen \"%s\"!"
+
+#, c-format
+msgid "Unsupported format '%s/%s'!"
+msgstr "Nicht unterstütztes Format '%s/%s'!"
+
+msgid "Printer not shared!"
+msgstr "Drucker nicht verteilt!"
+
+#, c-format
+msgid "Too many jobs - %d jobs, max jobs is %d."
+msgstr "Zu viele Aufträge - %d; das Maximum ist %d."
+
+#, c-format
+msgid "Job #%d is not held!"
+msgstr "Auftrag #%d wurde nicht aufgehalten!"
+
+#, c-format
+msgid "You are not authorized to release job id %d owned by \"%s\"!"
+msgstr "Nicht berechtigt den Auftrag mit der ID %d von \"%s\" freizugeben!"
+
+#, c-format
+msgid "Job #%d is not complete!"
+msgstr "Auftrag #%d ist nicht komplett!"
+
+#, c-format
+msgid "Job #%d cannot be restarted - no files!"
+msgstr "Auftrag #%d kann nicht neu gestartet werden - keine Dateien!"
+
+#, c-format
+msgid "You are not authorized to restart job id %d owned by \"%s\"!"
+msgstr ""
+"Sie sind nicht berechtigt den Auftrag mit der ID %d von \"%s\" neu zu "
+"starten!"
+
+#, c-format
+msgid "You are not authorized to send document for job #%d owned by \"%s\"!"
+msgstr ""
+"Sie sind nicht berechtigt ein Dokument für den Auftrag #%d von \"%s\" zu "
+"senden!"
+
+#, c-format
+msgid "Bad document-format \"%s\"!"
+msgstr "document-format \"%s\" ist falsch!"
+
+#, c-format
+msgid "You are not authorized to alter job id %d owned by \"%s\"!"
+msgstr ""
+"Sie sind nicht berechtigt den Aufrag mit der ID %d von \"%s\" abzuändern."
+
+#, c-format
+msgid "%s cannot be changed."
+msgstr "%s kann nicht geändert werden."
+
+msgid "Bad job-priority value!"
+msgstr "Falscher job-priority Wert!"
+
+msgid "Job is completed and cannot be changed."
+msgstr "Auftrag abgeschlossen, kann nicht geändert werden."
+
+msgid "Bad job-state value!"
+msgstr "Falscher job-state Wert!"
+
+msgid "Job state cannot be changed."
+msgstr "Auftragsstatus kann nicht geändert werden."
+
+#, c-format
+msgid "Unsupported compression attribute %s!"
+msgstr "Nicht unterstützte Kompressionseigenschaft %s!"
+
+#, c-format
+msgid "Unsupported format \"%s\"!"
+msgstr "Nicht unterstütztes Format \"%s\"!"
+
+#, c-format
+msgid "%s is not implemented by the CUPS version of lpc.\n"
+msgstr "%s ist in der CUPS Version von lpc nicht implementiert.\n"
+
+msgid ""
+"Commands may be abbreviated. Commands are:\n"
+"\n"
+"exit help quit status ?\n"
+msgstr ""
+"Befehle sind abkürzbar. Befehle sind:\n"
+"\n"
+"exit help quit status ?\n"
+
+msgid "help\t\tget help on commands\n"
+msgstr "help\t\tum Hilfe für die Befehle zu bekommen\n"
+
+msgid "status\t\tshow status of daemon and queue\n"
+msgstr "status\t\tzeigt den Status von Diensten und Warteschlangen\n"
+
+msgid "?Invalid help command unknown\n"
+msgstr "?Ungültiger Hilfebefehl nicht bekannt\n"
+
+#, c-format
+msgid "\tprinter is on device '%s' speed -1\n"
+msgstr "\tDrucker verbunden über '%s' Geschwindigkeit -1\n"
+
+msgid "\tqueuing is enabled\n"
+msgstr "\tWarteschlange ist freigegeben\n"
+
+msgid "\tqueuing is disabled\n"
+msgstr "\tWarteschlange ist gesperrt\n"
+
+msgid "\tprinting is enabled\n"
+msgstr "\tDrucken ist freigegeben\n"
+
+msgid "\tprinting is disabled\n"
+msgstr "\tDrucken ist gesperrt\n"
+
+msgid "\tno entries\n"
+msgstr "\tKeine Einträge\n"
+
+#, c-format
+msgid "\t%d entries\n"
+msgstr "\t%d Einträge\n"
+
+msgid "\tdaemon present\n"
+msgstr "\tDienst läuft\n"
+
+msgid "lpq: Unable to contact server!\n"
+msgstr "lpq: Kann Server nicht kontaktieren!\n"
+
+#, c-format
+msgid "%s: Sorry, no encryption support compiled in!\n"
+msgstr "%s: Bedaure, Verschlüsselungen nicht mitkompiliert!\n"
+
+#, c-format
+msgid "lpq: Unknown destination \"%s/%s\"!\n"
+msgstr "lpq: Unbekanntes Ziel \"%s/%s\"!\n"
+
+#, c-format
+msgid "lpq: Unknown destination \"%s\"!\n"
+msgstr "lpq: Unbekanntes Ziel \"%s\"!\n"
+
+#, c-format
+msgid ""
+"lp: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"lp: Fehler - Umgebungsvariable %s enhält nicht vorhandenes Ziel \"%s\"!\n"
+
+msgid "lpq: error - no default destination available.\n"
+msgstr "lpq: Fehler - kein Standardziel verfügbar.\n"
+
+#, c-format
+msgid "lpq: get-jobs failed: %s\n"
+msgstr "lpq: get-jobs fehlgeschlagen: %s\n"
+
+msgid ""
+"Rank Owner Pri Job Files Total Size\n"
+msgstr ""
+"Rang Besitzer Pri Auftrag Dateien Gesamtgröße\n"
+
+msgid "Rank Owner Job File(s) Total Size\n"
+msgstr "Rang Besitz Auftrag Datei(en) Gesamtgröße\n"
+
+#, c-format
+msgid "%s: %-33.33s [job %d localhost]\n"
+msgstr "%s: %-33.33s [Auftrag %d localhost]\n"
+
+#, c-format
+msgid " %-39.39s %.0f bytes\n"
+msgstr " %-39.39s %.0f Byte\n"
+
+#, c-format
+msgid "%-6s %-10.10s %-4d %-10d %-27.27s %.0f bytes\n"
+msgstr "%-6s %-10.10s %-4d %-10d %-27.27s %.0f Byte\n"
+
+#, c-format
+msgid "%-7s %-7.7s %-7d %-31.31s %.0f bytes\n"
+msgstr "%-7s %-7.7s %-7d %-31.31s %.0f Byte\n"
+
+msgid "no entries\n"
+msgstr "keine Einträge\n"
+
+#, c-format
+msgid "lpq: get-printer-attributes failed: %s\n"
+msgstr "lpq: get-printer-attributes fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "%s is ready\n"
+msgstr "%s ist bereit\n"
+
+#, c-format
+msgid "%s is ready and printing\n"
+msgstr "%s ist bereit und druckt\n"
+
+#, c-format
+msgid "%s is not ready\n"
+msgstr "%s ist nicht bereit\n"
+
+msgid "Usage: lpq [-P dest] [-l] [+interval]\n"
+msgstr "Benutzung: lpq [-P Ziel] [-l] [+Intervall]\n"
+
+#, c-format
+msgid "lpr: error - expected value after -%c option!\n"
+msgstr "lpr: Fehler - Es wird ein Wert hinter dem Parameter -%c erwartet!\n"
+
+#, c-format
+msgid ""
+"lpr: warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr ""
+"lpr: Warnung - Formatangabe '%c' nicht unterstützt - Ausgabe evtl. "
+"fehlerhaft!\n"
+
+msgid "lpr: error - expected option=value after -o option!\n"
+msgstr "lpr: Fehler - Erwarte Parameter=Wert hinter dem Parameter -o!\n"
+
+msgid "lpr: warning - email notification is not currently supported!\n"
+msgstr ""
+"lpr: Warnung - Email Benachrichtigung wird zurzeit nicht unterstützt!\n"
+
+msgid "lpr: error - expected destination after -P option!\n"
+msgstr "lpr: Fehler - Erwarte Ziel hinter dem Parameter -P!\n"
+
+msgid "lpr: error - expected copy count after -# option!\n"
+msgstr "lpr: Fehler - Erwarte Kopienanzahl hinter dem Parameter -#!\n"
+
+#, c-format
+msgid "lpr: error - expected name after -%c option!\n"
+msgstr "lpr: Fehler - Erwarte Name hinter dem Parameter -%c!\n"
+
+msgid "lpr: error - expected username after -U option!\n"
+msgstr "lpr: Fehler - Erwarte Benutzername hinter dem Parameter -U!\n"
+
+#, c-format
+msgid "lpr: error - unknown option '%c'!\n"
+msgstr "lpr: Fehler - Unbekannter Parameter '%c'!\n"
+
+#, c-format
+msgid "lpr: error - unable to access \"%s\" - %s\n"
+msgstr "lpr: Fehler - Zugriff nicht möglich auf \"%s\" - %s\n"
+
+#, c-format
+msgid "lpr: error - too many files - \"%s\"\n"
+msgstr "lpr: Fehler - Zu viele Dateien \"%s\"\n"
+
+#, c-format
+msgid ""
+"lpr: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"lpr: Fehler - Die Umgebungsvariable %s beinhaltet das nicht vorhandene Ziel "
+"\"%s\"!\n"
+
+msgid "lpr: error - no default destination available.\n"
+msgstr "lpr: Fehler - Kein Standardziel verfügbar.\n"
+
+msgid "lpr: error - scheduler not responding!\n"
+msgstr "lpr: Fehler - Scheduler antwortet nicht!\n"
+
+#, c-format
+msgid "lpr: error - unable to create temporary file \"%s\" - %s\n"
+msgstr "lpr: Fehler - Kann temporäre Datei \"%s\" nicht erstellen - %s\n"
+
+#, c-format
+msgid "lpr: error - unable to write to temporary file \"%s\" - %s\n"
+msgstr ""
+"lpr: Fehler - Kann nicht in die temporäre Datei \"%s\" schreiben - %s\n"
+
+msgid "lpr: error - stdin is empty, so no job has been sent.\n"
+msgstr "lpr: Fehler - stdin ist leer, kein Auftrag gesendet.\n"
+
+#, c-format
+msgid "lpr: error - unable to print file: %s\n"
+msgstr "lpr: Fehler - Kann Datei nicht drucken: %s\n"
+
+msgid "lprm: Unable to contact server!\n"
+msgstr "lprm: Server nicht erreichbar!\n"
+
+#, c-format
+msgid "lprm: Unknown destination \"%s\"!\n"
+msgstr "lprm: Unbekanntes Ziel \"%s\"\n"
+
+#, c-format
+msgid "lprm: Unknown option '%c'!\n"
+msgstr "lprm: Unbekannter Parameter '%c'!\n"
+
+msgid "lprm: Job or printer not found!\n"
+msgstr "lprm: Auftrag oder Drucker nicht gefunden!\n"
+
+msgid "lprm: Not authorized to lprm job(s)!\n"
+msgstr "lprm: Keine Berechtigung um Aufträge zu löschen!\n"
+
+#, c-format
+msgid "lprm: You don't own job ID %d!\n"
+msgstr "lprm: Ihnen gehört die Auftrags ID %d nicht!\n"
+
+msgid "lprm: Unable to lprm job(s)!\n"
+msgstr "lprm: Kann keine Aufträge löschen!\n"
+
+msgid "lprm: Unable to cancel job(s)!\n"
+msgstr "lprm: Kann keine Aufträge abbrechen!\n"
+
+#, c-format
+msgid "%s: Don't know what to do!\n"
+msgstr "%s: Keine Ahnung was zu tun ist!\n"
+
+#, c-format
+msgid "%s: Expected server name after -h!\n"
+msgstr "%s: Servername wird hinter -h erwartet!\n"
+
+#, c-format
+msgid "%s: Expected reason text after -r!\n"
+msgstr "%s: Begründungstext wird hinter -r erwartet!\n"
+
+#, c-format
+msgid "%s: Unknown option '%c'!\n"
+msgstr "%s: Unbekannter Parameter '%c'!\n"
+
+#, c-format
+msgid "%s: Unable to connect to server: %s\n"
+msgstr "%s: Server nicht erreichbar: %s!\n"
+
+#, c-format
+msgid "%s: Operation failed: %s\n"
+msgstr "%s: Vorgang fehlgeschlagen: %s\n"
+
+msgid "cancel: Error - expected hostname after '-h' option!\n"
+msgstr "cancel: Fehler - Erwarte Hostname hinter dem Parameter -h!\n"
+
+msgid "cancel: Error - expected username after '-u' option!\n"
+msgstr "cancel: Fehler - Erwarte Benutzername hinter dem Parameter -u!\n"
+
+#, c-format
+msgid "cancel: Unknown option '%c'!\n"
+msgstr "cancel: Unbekannter Parameter '%c'!\n"
+
+#, c-format
+msgid "cancel: Unknown destination \"%s\"!\n"
+msgstr "cancel: Unbekanntes Ziel \"%s\"!\n"
+
+msgid "cancel: Unable to contact server!\n"
+msgstr "cancel: Server nicht erreichbar!\n"
+
+#, c-format
+msgid "cancel: %s failed: %s\n"
+msgstr "cancel: %s fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "cupsaddsmb: Missing value on line %d!\n"
+msgstr "cupsaddsmb: Vermisse Wert in Zeile %d!\n"
+
+#, c-format
+msgid "cupsaddsmb: Missing double quote on line %d!\n"
+msgstr "cupsaddsmb: Vermisse doppelte Anführungszeichen in Zeile %d!\n"
+
+#, c-format
+msgid "cupsaddsmb: Bad option + choice on line %d!\n"
+msgstr "cupsaddsmb: Falscher Parameter + Auswahl in Zeile %d!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to connect to server \"%s\" for %s - %s\n"
+msgstr "cupsaddsmb: Server \"%s\" nicht erreichbar für %s - %s\n"
+
+#, c-format
+msgid "cupsaddsmb: No PPD file for printer \"%s\" - skipping!\n"
+msgstr "cupsaddsmb: PPD Datei für Drucker \"%s\" fehlt - überspringe!\n"
+
+#, c-format
+msgid "cupsaddsmb: get-printer-attributes failed for \"%s\": %s\n"
+msgstr "cupsaddsmb: get-printer-attributes fehlgeschlagen für \"%s\": %s\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to convert PPD file for %s - %s\n"
+msgstr "cupsaddsmb: Kann PPD Datei nicht konvertieren für %s - %s\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy Windows 2000 printer driver files (%d)!\n"
+msgstr ""
+"cupsaddsmb: Kann Windows 2000 Druckertreiberdateien (%d) nicht kopieren!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy CUPS printer driver files (%d)!\n"
+msgstr "cupsaddsmb: Kann CUPS Druckertreiberdateien (%d) nicht kopieren!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to install Windows 2000 printer driver files (%d)!\n"
+msgstr ""
+"cupsaddsmb: Kann Windows 2000 Druckertreiberdateien (%d) nicht "
+"installieren!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to copy Windows 9x printer driver files (%d)!\n"
+msgstr ""
+"cupsaddsmb: Kann Windows 9x Druckertreiberdateien (%d) nicht kopieren!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to install Windows 9x printer driver files (%d)!\n"
+msgstr ""
+"cupsaddsmb: Kann Windows 9x Druckertreiberdateien (%d) nicht installieren!\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to set Windows printer driver (%d)!\n"
+msgstr "cupsaddsmb: Kann Windows Druckertreiber (%d) nicht festlegen!\n"
+
+msgid ""
+"Usage: cupsaddsmb [options] printer1 ... printerN\n"
+" cupsaddsmb [options] -a\n"
+"\n"
+"Options:\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 ""
+"Benutzung: cupsaddsmb [Parameter] Drucker1 ... DruckerN\n"
+" cupsaddsmb [Parameter] -a\n"
+"\n"
+"Options:\n"
+" -H Samba-Server Benutze den genannten Samba Server\n"
+" -U Samba-Benutzer Authentifiziere mit dem genannten Samba Benutzer\n"
+" -a Alle Drucker exportieren\n"
+" -h CUPS-Server Benutze den genannten CUPS Server\n"
+" -v Zusätzliche Ausgaben einschalten (zeige Kommandos)\n"
+
+msgid "cupstestppd: The -q option is incompatible with the -v option.\n"
+msgstr ""
+"cupstestppd: Der Parameter -q ist nicht kompatibel mit dem Parameter -v.\n"
+
+msgid "cupstestppd: The -v option is incompatible with the -q option.\n"
+msgstr ""
+"cupstestppd: Der Parameter -v ist nicht kompatibel mit dem Parameter -d.\n"
+
+#, c-format
+msgid ""
+" FAIL\n"
+" **FAIL** Unable to open PPD file - %s\n"
+msgstr ""
+" FEHLGESCHLAGEN\n"
+" **FEHLGESCHLAGEN** Kann PPD Datei nicht öffnen - %s\n"
+
+#, c-format
+msgid ""
+" FAIL\n"
+" **FAIL** Unable to open PPD file - %s on line %d.\n"
+msgstr ""
+" FEHLGESCHLAGEN\n"
+" **FEHLGESCHLAGEN** Kann PPD Datei nicht öffnen - %s in Zeile %d.\n"
+
+msgid " REF: Page 42, section 5.2.\n"
+msgstr " REF: Seite 42, Kapitel 5.2.\n"
+
+msgid " REF: Page 20, section 3.4.\n"
+msgstr " REF: Seite 20, Kapitel 3.4.\n"
+
+msgid " REF: Pages 45-46, section 5.2.\n"
+msgstr " REF: Seite 45-46, Kapitel 5.2.\n"
+
+msgid " REF: Pages 42-45, section 5.2.\n"
+msgstr " REF: Seiten 42-45, Kapitel 5.2.\n"
+
+msgid " REF: Pages 48-49, section 5.2.\n"
+msgstr " REF: Seiten 48-49, Kapitel 5.2.\n"
+
+msgid " REF: Pages 52-54, section 5.2.\n"
+msgstr " REF: Seiten 52-54, Kapitel 5.2.\n"
+
+msgid " REF: Page 15, section 3.2.\n"
+msgstr " REF: Seite 15, Kapitel 3.2.\n"
+
+msgid " REF: Page 15, section 3.1.\n"
+msgstr " REF: Seite 15, Kapitel 3.1.\n"
+
+msgid " REF: Pages 16-17, section 3.2.\n"
+msgstr " REF: Seite 16-17, Kapitel 3.2.\n"
+
+msgid " REF: Page 19, section 3.3.\n"
+msgstr " REF: Seite 19, Kapitel 3.3.\n"
+
+msgid " REF: Page 27, section 3.5.\n"
+msgstr " REF: Seite 27, Kapitel 3.5.\n"
+
+msgid ""
+"\n"
+" DETAILED CONFORMANCE TEST RESULTS\n"
+msgstr ""
+"\n"
+" DETAILIERTE ERGEBNISSE DES KONFORMITÄTSTESTS\n"
+
+#, c-format
+msgid " WARN %s has no corresponding options!\n"
+msgstr " WARNUNG %s hat keine entsprechenden Parameter!\n"
+
+msgid " FAIL\n"
+msgstr " FEHLGESCHLAGEN\n"
+
+msgid ""
+" **FAIL** REQUIRED DefaultImageableArea\n"
+" REF: Page 102, section 5.15.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT DefaultImageableArea\n"
+" REF: Seite 102, Kapitel 5.15.\n"
+
+#, c-format
+msgid ""
+" **FAIL** BAD DefaultImageableArea %s!\n"
+" REF: Page 102, section 5.15.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** FALSCHE DefaultImageableArea %s!\n"
+" REF: Seite 102, Kapitel 5.15.\n"
+
+msgid " PASS DefaultImageableArea\n"
+msgstr " BESTANDEN DefaultImageableArea\n"
+
+msgid ""
+" **FAIL** REQUIRED DefaultPaperDimension\n"
+" REF: Page 103, section 5.15.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT DefaultPaperDimension\n"
+" REF: Seite 103, Kapitel 5.15.\n"
+
+#, c-format
+msgid ""
+" **FAIL** BAD DefaultPaperDimension %s!\n"
+" REF: Page 103, section 5.15.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** FALSCHE DefaultPaperDimension %s!\n"
+" REF: Seite 103, Kapitel 5.15.\n"
+
+msgid " PASS DefaultPaperDimension\n"
+msgstr " BESTANDEN DefaultPaperDimension\n"
+
+#, c-format
+msgid ""
+" **FAIL** BAD Default%s %s\n"
+" REF: Page 40, section 4.5.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** FALSCHE Default%s %s\n"
+" REF: Seite 40, Kapitel 4.5.\n"
+
+#, c-format
+msgid " PASS Default%s\n"
+msgstr " BESTANDEN Default%s\n"
+
+#, c-format
+msgid ""
+" **FAIL** REQUIRED Default%s\n"
+" REF: Page 40, section 4.5.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT Default%s\n"
+" REF: Seite 40, Kapitel 4.5.\n"
+
+msgid " PASS FileVersion\n"
+msgstr " BESTANDEN FileVersion\n"
+
+msgid ""
+" **FAIL** REQUIRED FileVersion\n"
+" REF: Page 56, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT FileVersion\n"
+" REF: Seite 56, Kapitel 5.3.\n"
+
+msgid " PASS FormatVersion\n"
+msgstr " BESTANDEN FormatVersion\n"
+
+msgid ""
+" **FAIL** REQUIRED FormatVersion\n"
+" REF: Page 56, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT FormatVersion\n"
+" REF: Seite 56, Kapitel 5.3.\n"
+
+msgid " PASS LanguageEncoding\n"
+msgstr " BESTANDEN LanguageEncoding\n"
+
+msgid ""
+" **FAIL** REQUIRED LanguageEncoding\n"
+" REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT LanguageEncoding\n"
+" REF: Seiten 56-57, Kapitel 5.3.\n"
+
+msgid " PASS LanguageVersion\n"
+msgstr " BESTANDEN LanguageVersion\n"
+
+msgid ""
+" **FAIL** REQUIRED LanguageVersion\n"
+" REF: Pages 57-58, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT LanguageVersion\n"
+" REF: Seiten 57-58, Kapitel 5.3.\n"
+
+msgid ""
+" **FAIL** BAD Manufacturer (should be \"HP\")\n"
+" REF: Page 211, table D.1.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** FALSCHER Manufacturer (sollte \"HP\" sein)\n"
+" REF: Seite 211, Tabelle D.1.\n"
+
+msgid " PASS Manufacturer\n"
+msgstr " BESTANDEN Manufacturer\n"
+
+msgid ""
+" **FAIL** REQUIRED Manufacturer\n"
+" REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT Manufacturer\n"
+" REF: Seiten 58-59, Kapitel 5.3.\n"
+
+#, c-format
+msgid ""
+" **FAIL** BAD ModelName - \"%c\" not allowed in string.\n"
+" REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** FALSCH ModelName - \"%c\" nicht in Zeichenkette "
+"erlaubt.\n"
+" REF: Seiten 59-60, Kapitel 5.3.\n"
+
+msgid " PASS ModelName\n"
+msgstr " BESTANDEN Modellname\n"
+
+msgid ""
+" **FAIL** REQUIRED ModelName\n"
+" REF: Pages 59-60, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT ModelName\n"
+" REF: Seiten 59-60, Kapitel 5.3.\n"
+
+# NickName is a PPD term
+msgid " PASS NickName\n"
+msgstr " BESTANDEN NickName\n"
+
+msgid ""
+" **FAIL** REQUIRED NickName\n"
+" REF: Page 60, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT NickName\n"
+" REF: Seite 60, Kapitel 5.3.\n"
+
+msgid " PASS PageSize\n"
+msgstr " BESTANDEN PageSize\n"
+
+msgid ""
+" **FAIL** REQUIRED PageSize\n"
+" REF: Pages 99-100, section 5.14.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT PageSize\n"
+" REF: Seiten 99-100, Kapitel 5.14.\n"
+
+msgid " PASS PageRegion\n"
+msgstr " BESTANDEN PageRegion\n"
+
+msgid ""
+" **FAIL** REQUIRED PageRegion\n"
+" REF: Page 100, section 5.14.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT PageRegion\n"
+" REF: Seite 100, Kapitel 5.14.\n"
+
+msgid " PASS PCFileName\n"
+msgstr " BESTANDEN PCFileName\n"
+
+msgid ""
+" **FAIL** REQUIRED PCFileName\n"
+" REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT PCFileName\n"
+" REF: Seiten 61-62, Kapitel 5.3.\n"
+
+msgid ""
+" **FAIL** BAD Product - not \"(string)\".\n"
+" REF: Page 62, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** FALSCH Product - ist nicht \"(string)\".\n"
+" REF: Seite 62, Kapitel 5.3.\n"
+
+msgid " PASS Product\n"
+msgstr " BESTANDEN Product\n"
+
+msgid ""
+" **FAIL** REQUIRED Product\n"
+" REF: Page 62, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT Product\n"
+" REF: Seite 62, Kapitel 5.3.\n"
+
+msgid ""
+" **FAIL** BAD PSVersion - not \"(string) int\".\n"
+" REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** FALSCH PSVersion - ist nicht \"(string) int\".\n"
+" REF: Seiten 62-64, Kapitel 5.3.\n"
+
+msgid " PASS PSVersion\n"
+msgstr " BESTANDEN PSVersion\n"
+
+msgid ""
+" **FAIL** REQUIRED PSVersion\n"
+" REF: Pages 62-64, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT PSVersion\n"
+" REF: Seiten 62-64, Kapitel 5.3.\n"
+
+msgid ""
+" **FAIL** BAD ShortNickName - longer than 31 chars.\n"
+" REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** FALSCH ShortNickName - länger als 31 Zeichen.\n"
+" REF: Seiten 64-65, Kapitel 5.3.\n"
+
+msgid " PASS ShortNickName\n"
+msgstr " BESTANDEN ShortNickName\n"
+
+msgid ""
+" **FAIL** REQUIRED ShortNickName\n"
+" REF: Page 64-65, section 5.3.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT ShortNickName\n"
+" REF: Seiten 64-65, Kapitel 5.3.\n"
+
+msgid ""
+" **FAIL** BAD JobPatchFile attribute in file\n"
+" REF: Page 24, section 3.4.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** FALSCH JobPatchFile Eigenschaften in Datei\n"
+" REF: Seiten 24, Kapitel 3.4.\n"
+
+msgid ""
+" **FAIL** REQUIRED PageSize\n"
+" REF: Page 41, section 5.\n"
+" REF: Page 99, section 5.14.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT PageSize\n"
+" REF: Seite 41, Kapitel 5.\n"
+" REF: Seite 99, Kapitel 5.14.\n"
+
+#, c-format
+msgid ""
+" **FAIL** REQUIRED ImageableArea for PageSize %s\n"
+" REF: Page 41, section 5.\n"
+" REF: Page 102, section 5.15.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT ImageableArea für PageSize %s\n"
+" REF: Seite 41, Kapitel 5.\n"
+" REF: Seite 102, Kapitel 5.15.\n"
+
+#, c-format
+msgid ""
+" **FAIL** REQUIRED PaperDimension for PageSize %s\n"
+" REF: Page 41, section 5.\n"
+" REF: Page 103, section 5.15.\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT PaperDimension für PageSize %s\n"
+" REF: Seite 41, Kapitel 5.\n"
+" REF: Seite 103, Kapitel 5.15.\n"
+
+#, c-format
+msgid ""
+" **FAIL** Bad %s choice %s!\n"
+" REF: Page 84, section 5.9\n"
+msgstr ""
+" **FEHLGESCHLAGEN** Falsche %s Auswahl %s!\n"
+" REF: Seite 84, Kapitel 5.9\n"
+
+#, c-format
+msgid ""
+" **FAIL** REQUIRED %s does not define choice None!\n"
+" REF: Page 122, section 5.17\n"
+msgstr ""
+" **FEHLGESCHLAGEN** BENÖTIGT %s definiert nicht die Auswahl \"None\"!\n"
+" REF: Seite 122, Kapitel 5.17\n"
+
+#, c-format
+msgid ""
+" **FAIL** Bad %s choice %s!\n"
+" REF: Page 122, section 5.17\n"
+msgstr ""
+" **FEHLGESCHLAGEN** Falsche %s Auswahl %s!\n"
+" REF: Seite 122, Kapitel 5.17\n"
+
+msgid " PASS\n"
+msgstr " BESTANDEN\n"
+
+#, c-format
+msgid ""
+" WARN Duplex option keyword %s should be named Duplex or "
+"JCLDuplex!\n"
+" REF: Page 122, section 5.17\n"
+msgstr ""
+" WARNUNG Schlüsselwort für Duplexparameter %s sollte Duplex oder "
+"JCLDuplex heißen!\n"
+" REF: Seite 122, Kapitel 5.17\n"
+
+msgid " WARN Default choices conflicting!\n"
+msgstr " WARNUNG Konflikte in der Standardauswahl!\n"
+
+#, c-format
+msgid ""
+" WARN Obsolete PPD version %.1f!\n"
+" REF: Page 42, section 5.2.\n"
+msgstr ""
+" WARNUNG Obsolete PPD Version %.1f!\n"
+" REF: Seite 42, Kapitel 5.2.\n"
+
+msgid ""
+" WARN LanguageEncoding required by PPD 4.3 spec.\n"
+" REF: Pages 56-57, section 5.3.\n"
+msgstr ""
+" WARNUNG LanguageEncoding wird verlangt von PPD 4.3 Spez.\n"
+" REF: Seiten 56-57, Kapitel 5.3.\n"
+
+msgid ""
+" WARN Manufacturer required by PPD 4.3 spec.\n"
+" REF: Pages 58-59, section 5.3.\n"
+msgstr ""
+" WARNUNG Manufacturer wird verlangt von PPD 4.3 Spez.\n"
+" REF: Seiten 58-59, Kapitel 5.3.\n"
+
+msgid ""
+" WARN PCFileName longer than 8.3 in violation of PPD spec.\n"
+" REF: Pages 61-62, section 5.3.\n"
+msgstr ""
+" WARNUNG PCFileName länger als 8.3 ist eine Verletzung der PPD "
+"Spez.\n"
+" REF: Seiten 61-62, Kapitel 5.3.\n"
+
+msgid ""
+" WARN ShortNickName required by PPD 4.3 spec.\n"
+" REF: Pages 64-65, section 5.3.\n"
+msgstr ""
+" WARNUNG ShortNickName wird verlangt von PPD 4.3 Spez.\n"
+" REF: Seiten 64-65, Kapitel 5.3.\n"
+
+msgid ""
+" WARN Protocols contains both PJL and BCP; expected TBCP.\n"
+" REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+" WARNUNG Protokoll enthält PJL und BCP; TBCP wird erwartet.\n"
+" REF: Seiten 78-79, Kapitel 5.7.\n"
+
+msgid ""
+" WARN Protocols contains PJL but JCL attributes are not set.\n"
+" REF: Pages 78-79, section 5.7.\n"
+msgstr ""
+" WARNUNG Protokoll enthält PJL jedoch sind keine JCL Eigenschaften "
+"gesetzt.\n"
+" REF: Seiten 78-79, Kapitel 5.7.\n"
+
+#, c-format
+msgid ""
+" WARN %s shares a common prefix with %s\n"
+" REF: Page 15, section 3.2.\n"
+msgstr ""
+" WARNUNG %s teilt ein gemeinsames Präfix mit %s\n"
+" REF: Seite 15, Kapitel 3.2.\n"
+
+#, c-format
+msgid " %d ERROR%s FOUND\n"
+msgstr " %d FEHLER%s GEFUNDEN\n"
+
+msgid " NO ERRORS FOUND\n"
+msgstr " KEINE FEHLER GEFUNDEN\n"
+
+#, c-format
+msgid ""
+" WARN \"%s %s\" conflicts with \"%s %s\"\n"
+" (constraint=\"%s %s %s %s\")\n"
+msgstr ""
+" WARNUNG \"%s %s\" kolidiert mit \"%s %s\"\n"
+" (Beschränkung=\"%s %s %s %s\")\n"
+
+msgid ""
+"Usage: cupstestppd [-q] [-r] [-v[v]] filename1.ppd[.gz] [... filenameN.ppd[."
+"gz]]\n"
+" program | cupstestppd [-q] [-r] [-v[v]] -\n"
+msgstr ""
+"Benutzung: cupstestppd [-q] [-r] [-v[v]] Dateiname1.ppd[.gz] [... DateinameN."
+"ppd[.gz]]\n"
+" Programm | cupstestppd [-q] [-r] [-v[v]] -\n"
+
+msgid "lpstat: Need \"completed\" or \"not-completed\" after -W!\n"
+msgstr "lpstat: Braucht \"completed\" oder \"not-completed\" hinter -W!\n"
+
+msgid "lpstat: The -b option requires a destination argument.\n"
+msgstr "lpstat: Der Parameter -b benötigt ein Zielargument.\n"
+
+msgid "Error: need hostname after '-h' option!\n"
+msgstr "Fehler: Brauche Hostname hinter dem Parameter '-h'!\n"
+
+#, c-format
+msgid "lpstat: Unknown option '%c'!\n"
+msgstr "lpstat: Unbekannter Parameter '%c'!\n"
+
+#, c-format
+msgid "lpstat: Invalid destination name in list \"%s\"!\n"
+msgstr "lpstat: Ungültiger Zielname in der Liste \"%s\"!\n"
+
+#, c-format
+msgid "lpstat: Unknown destination \"%s\"!\n"
+msgstr "lpstat: Unbekanntes Ziel \"%s\"!\n"
+
+#, c-format
+msgid "lpstat: Unable to connect to server %s on port %d: %s\n"
+msgstr "lpstat: Kann Server %s auf Port %d nicht erreichen: %s\n"
+
+#, c-format
+msgid "lpstat: get-printers failed: %s\n"
+msgstr "lpstat: get-printers fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "%s accepting requests since Jan 01 00:00\n"
+msgstr "%s akzeptiert Anfragen seit Jan 01 00:00\n"
+
+#, c-format
+msgid ""
+"%s not accepting requests since Jan 01 00:00 -\n"
+"\t%s\n"
+msgstr ""
+"%s akzeptiert keine Anfragen seit Jan 01 00:00 -\n"
+"\t%s\n"
+
+#, c-format
+msgid "%s/%s accepting requests since Jan 01 00:00\n"
+msgstr "%s/%s akzeptiert Anfragen seit Jan 01 00:00\n"
+
+#, c-format
+msgid ""
+"%s/%s not accepting requests since Jan 01 00:00 -\n"
+"\t%s\n"
+msgstr ""
+"%s/%s akzeptiert keine Anfragen seit Jan 01 00:00 -\n"
+"\t%s\n"
+
+#, c-format
+msgid "lpstat: get-classes failed: %s\n"
+msgstr "lpstat: get-classes fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "members of class %s:\n"
+msgstr "Mitglieder der Klasse %s:\n"
+
+#, c-format
+msgid "system default destination: %s/%s\n"
+msgstr "System Standardziel: %s/%s\n"
+
+#, c-format
+msgid "system default destination: %s\n"
+msgstr "System Standardziel: %s\n"
+
+#, c-format
+msgid ""
+"lpstat: error - %s environment variable names non-existent destination \"%s"
+"\"!\n"
+msgstr ""
+"lpstat: Fehler - Umgebungsvariable %s enthält das nicht vorhandene Ziel \"%s"
+"\"!\n"
+
+msgid "no system default destination\n"
+msgstr "Kein systemweites Standardziel\n"
+
+#, c-format
+msgid "Output for printer %s is sent to remote printer %s on %s\n"
+msgstr ""
+"Ausgabe für Drucker %s wurde gesendet an entfernten Drucker %s auf %s\n"
+
+#, c-format
+msgid "Output for printer %s is sent to %s\n"
+msgstr "Ausgabe für Drucker %s wurde gesendet an %s\n"
+
+#, c-format
+msgid "Output for printer %s/%s is sent to remote printer %s on %s\n"
+msgstr ""
+"Ausgabe für Drucker %s/%s wurde gesendet an entfernten Drucker %s auf %s\n"
+
+#, c-format
+msgid "Output for printer %s/%s is sent to %s\n"
+msgstr "Ausgabe für Drucker %s/%s wurde gesendet an %s\n"
+
+#, c-format
+msgid "device for %s: %s\n"
+msgstr "Gerät für %s: %s\n"
+
+#, c-format
+msgid "device for %s/%s: %s\n"
+msgstr "Gerät für %s/%s: %s\n"
+
+#, c-format
+msgid "lpstat: get-jobs failed: %s\n"
+msgstr "lpstat: get-jobs fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "\tqueued for %s\n"
+msgstr "\teingereiht für %s\n"
+
+#, c-format
+msgid "printer %s is idle. enabled since %s\n"
+msgstr "Drucker %s ist frei. freigegeben seit %s\n"
+
+#, c-format
+msgid "printer %s now printing %s-%d. enabled since %s\n"
+msgstr "Drucker %s druckt gerade %s-%d. freigegeben seit %s\n"
+
+#, c-format
+msgid "printer %s disabled since %s -\n"
+msgstr "Drucker %s ist gesperrt seit %s -\n"
+
+msgid "\treason unknown\n"
+msgstr "\tGrund unbekannt\n"
+
+msgid ""
+"\tForm mounted:\n"
+"\tContent types: any\n"
+"\tPrinter types: unknown\n"
+msgstr ""
+"\tEingebundenes Formular:\n"
+"\tInhaltstypen: keine\n"
+"\tDruckertypen: unbekannt\n"
+
+#, c-format
+msgid "\tDescription: %s\n"
+msgstr "\tBeschreibung: %s\n"
+
+msgid "\tAlerts:"
+msgstr "\tAlarme:"
+
+#, c-format
+msgid "\tLocation: %s\n"
+msgstr "\tOrt: %s\n"
+
+msgid "\tConnection: remote\n"
+msgstr "\tVerbindung: entfernt\n"
+
+#, c-format
+msgid "\tInterface: %s.ppd\n"
+msgstr "\tInterface: %s.ppd\n"
+
+msgid "\tConnection: direct\n"
+msgstr "\tVerbindung: direkt\n"
+
+#, c-format
+msgid "\tInterface: %s/interfaces/%s\n"
+msgstr "\tInterface: %s/interfaces/%s\n"
+
+#, c-format
+msgid "\tInterface: %s/ppd/%s.ppd\n"
+msgstr "\tInterface: %s/ppd/%s.ppd\n"
+
+msgid "\tOn fault: no alert\n"
+msgstr "\tBei Fehlerfall: kein Alarm\n"
+
+msgid "\tAfter fault: continue\n"
+msgstr "\tNach Fehlerfall: fortsetzen\n"
+
+msgid "\tUsers allowed:\n"
+msgstr "\tErlaubte Benutzer:\n"
+
+msgid "\tUsers denied:\n"
+msgstr "\tNicht erlaubte Benutzer:\n"
+
+msgid "\t\t(all)\n"
+msgstr "\t\t(alle)\n"
+
+msgid "\tForms allowed:\n"
+msgstr "\tErlaubte Formulare:\n"
+
+msgid "\t\t(none)\n"
+msgstr "\t\t(keine)\n"
+
+msgid "\tBanner required\n"
+msgstr "\tBanner benötigt\n"
+
+msgid "\tCharset sets:\n"
+msgstr "\tZeichensatzeinstellungen:\n"
+
+msgid "\tDefault pitch:\n"
+msgstr "\tStandard Zeichenabstand:\n"
+
+msgid "\tDefault page size:\n"
+msgstr "\tStandard Seitengröße:\n"
+
+msgid "\tDefault port settings:\n"
+msgstr "\tStandard Porteinstellungen:\n"
+
+#, c-format
+msgid "printer %s/%s is idle. enabled since %s\n"
+msgstr "Drucker %s/%s ist frei. freigegeben seit %s\n"
+
+#, c-format
+msgid "printer %s/%s now printing %s-%d. enabled since %s\n"
+msgstr "Drucker %s/%s druckt gerade %s-%d. freigegeben seit %s\n"
+
+#, c-format
+msgid "printer %s/%s disabled since %s -\n"
+msgstr "Drucker %s/%s gesperrt seit %s -\n"
+
+msgid "scheduler is running\n"
+msgstr "Scheduler läuft\n"
+
+msgid "scheduler is not running\n"
+msgstr "Scheduler läuft nicht\n"
+
+#, c-format
+msgid "lpadmin: Unable to connect to server: %s\n"
+msgstr "lpadmin: Kann Server nicht erreichen: %s\n"
+
+msgid ""
+"lpadmin: Unable to add a printer to the class:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Kann Drucker nicht zur Klasse hinzufügen:\n"
+" Sie müssen zuerst einen Druckernamen angeben!\n"
+
+msgid "lpadmin: Expected class name after '-c' option!\n"
+msgstr "lpadmin: Klassenname wird hinter dem Parameter '-c' erwartet!\n"
+
+msgid "lpadmin: Class name can only contain printable characters!\n"
+msgstr "lpadmin: Klassenname kann nur druckbare Zeichen enthalten!\n"
+
+msgid "lpadmin: Expected printer name after '-d' option!\n"
+msgstr "lpadmin: Druckername wird hinter dem Parameter '-d' erwartet!\n"
+
+msgid "lpadmin: Printer name can only contain printable characters!\n"
+msgstr "lpadmin: Druckername kann nur druckbare Zeichen enthalten!\n"
+
+msgid "lpadmin: Expected hostname after '-h' option!\n"
+msgstr "lpadmin: Hostname wird hinter dem Parameter '-h' erwartet!\n"
+
+msgid ""
+"lpadmin: Unable to set the interface script:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Kann Interface Skript nicht festlegen:\n"
+" Sie müssen zuerst einen Druckernamen angeben!\n"
+
+msgid "lpadmin: Expected interface after '-i' option!\n"
+msgstr "lpadmin: Interface wird hinter dem Parameter '-i' erwartet!\n"
+
+msgid ""
+"lpadmin: Unable to set the interface script or PPD file:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Kann weder Interface Skript noch PPD Datei setzen:\n"
+" Sie müssen zuerst einen Druckernamen angeben!\n"
+
+msgid "lpadmin: Expected model after '-m' option!\n"
+msgstr "lpadmin: Modell wird hinter dem Parameter '-m' erwartet!\n"
+
+msgid "lpadmin: Expected name=value after '-o' option!\n"
+msgstr "lpadmin: Name=Wert wird hinter dem Parameter '-o' erwartet!\n"
+
+msgid "lpadmin: Expected printer after '-p' option!\n"
+msgstr "lpadmin: Drucker wird hinter dem Parameter '-p' erwartet!\n"
+
+msgid ""
+"lpadmin: Unable to remove a printer from the class:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Kann Drucker nicht aus Klasse entfernen:\n"
+" Sie müssen zuerst einen Druckernamen angeben!\n"
+
+msgid "lpadmin: Expected class after '-r' option!\n"
+msgstr "lpadmin: Klasse wird hinter dem Parameter '-r' erwartet!\n"
+
+msgid "lpadmin: Expected allow/deny:userlist after '-u' option!\n"
+msgstr ""
+"lpadmin: Benutzerliste für Erlaubt/Verweigert wird nach dem Parameter '-u' "
+"erwartet!\n"
+
+#, c-format
+msgid "lpadmin: Unknown allow/deny option \"%s\"!\n"
+msgstr "lpadmin: Unbekannter Erlaubt/Verweigert Parameter \"%s\"!\n"
+
+msgid ""
+"lpadmin: Unable to set the device URI:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Kann Geräte URI nicht setzen:\n"
+" Sie müssen zuerst einen Druckernamen angeben!\n"
+
+msgid "lpadmin: Expected device URI after '-v' option!\n"
+msgstr "lpadmin: Erwarte Geräte URI hinter dem Parameter '-v'!\n"
+
+msgid "lpadmin: Expected printer or class after '-x' option!\n"
+msgstr ""
+"lpadmin: Drucker oder Klasse wird hinter dem Parameter '-x' erwartet!\n"
+
+msgid ""
+"lpadmin: Unable to set the printer description:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Kann Druckerbeschreibung nicht setzen:\n"
+" Sie müssen zuerst einen Druckernamen angeben!\n"
+
+msgid "lpadmin: Expected description after '-D' option!\n"
+msgstr "lpadmin: Beschreibung wird hinter dem Parameter '-D' erwartet!\n"
+
+msgid "lpadmin: Expected file type(s) after '-I' option!\n"
+msgstr ""
+"lpadmin: Dateityp(en) wird bzw. werden hinter dem Parameter '-I' erwartet!\n"
+
+msgid "lpadmin: Warning - content type list ignored!\n"
+msgstr "lpadmin: Warnung - Datentypliste ignoriert!\n"
+
+msgid ""
+"lpadmin: Unable to set the printer location:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Kann Druckeraufstellort nicht setzen:\n"
+" Sie müssen zuerst einen Druckernamen angeben!\n"
+
+msgid "lpadmin: Expected location after '-L' option!\n"
+msgstr "lpadmin: Ortsangabe wird hinter dem Parameter '-L' erwartet!\n"
+
+msgid ""
+"lpadmin: Unable to set the PPD file:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Kann PPD Datei nicht setzen:\n"
+" Sie müssen zuerst einen Druckernamen angeben!\n"
+
+msgid "lpadmin: Expected PPD after '-P' option!\n"
+msgstr "lpadmin: PPD wird hinter dem Parameter '-P' erwartet!\n"
+
+#, c-format
+msgid "lpadmin: Unknown option '%c'!\n"
+msgstr "lpadmin: Unbekannter Parameter '%c'!\n"
+
+#, c-format
+msgid "lpadmin: Unknown argument '%s'!\n"
+msgstr "lpadmin: Unbekanntes Argument '%s'!\n"
+
+msgid ""
+"lpadmin: Unable to set the printer options:\n"
+" You must specify a printer name first!\n"
+msgstr ""
+"lpadmin: Kann Druckereinstellungen nicht setzen:\n"
+" Sie müssen zuerst einen Druckernamen angeben!\n"
+
+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 ""
+"Benutzung:\n"
+"\n"
+" lpadmin [-h Server] -d Ziel\n"
+" lpadmin [-h Server] -x Ziel\n"
+" lpadmin [-h Server] -p Drucker [-c hinzuzufügende-Klasse] [-i Interface] "
+"[-m Modell]\n"
+" [-r zu-löschende-Klasse] [-v Gerät] [-D "
+"Beschreibung]\n"
+" [-P PPD-Datei] [-o Name=Wert]\n"
+" [-u allow:Benutzer,Benutzer] [-u deny:Benutzer,"
+"Benutzer]\n"
+"\n"
+
+#, c-format
+msgid "lpadmin: Unable to create temporary file: %s\n"
+msgstr "lpadmin: Kann temporäre Datei nicht erstellen: %s\n"
+
+#, c-format
+msgid "lpadmin: Unable to open file \"%s\": %s\n"
+msgstr "lpadmin: Kann temporäre Datei \"%s\" nicht öffnen: %s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set model) failed: %s\n"
+msgstr "lpadmin: add-printer (Setzen des Modells) fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set description) failed: %s\n"
+msgstr ""
+"lpadmin: Drucker hinzufügen (Setzen der Beschreibung) fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "lpadmin: add-printer (set location) failed: %s\n"
+msgstr "lpadmin: Drucker hinzufügen (Setzen des Ortes) fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "lpadmin: Unable to create temporary file - %s\n"
+msgstr "lpadmin: Kann temporäre Datei nicht erstellen - %s\n"
+
+#, c-format
+msgid "lpadmin: Unable to open PPD file \"%s\" - %s\n"
+msgstr "lpadmin: Kann PPD Datei \"%s\" nicht öffnen - %s\n"
+
+#, c-format
+msgid "lpadmin: %s failed: %s\n"
+msgstr "lpadmin: %s fehlgeschlagen: %s\n"
+
+msgid "lp: Expected destination after -d option!\n"
+msgstr "lp: Ziel wird hinter dem Parameter -d erwartet!\n"
+
+msgid "lp: Expected form after -f option!\n"
+msgstr "lp: Formular wird hinter dem Parameter -f erwartet!\n"
+
+msgid "lp: Expected hostname after -h option!\n"
+msgstr "lp: Hostname wird hinter dem Parameter -h erwartet!\n"
+
+msgid "lp: Expected job ID after -i option!\n"
+msgstr "lp: Auftrags ID wird hinter dem Parameter -i erwartet!\n"
+
+msgid "lp: Error - cannot print files and alter jobs simultaneously!\n"
+msgstr ""
+"lp: Fehler - Kann nicht gleichzeitig Dateien drucken und Aufträge abändern!\n"
+
+msgid "lp: Error - bad job ID!\n"
+msgstr "lp: Fehler - Falsche Auftrags ID!\n"
+
+msgid "lp: Expected copies after -n option!\n"
+msgstr "lp: Kopienanzahl wird hinter dem Parameter -n erwartet!\n"
+
+msgid "lp: Expected option string after -o option!\n"
+msgstr "lp: Parameterzeichenkette wird hinter dem Parameter -o erwartet!\n"
+
+#, c-format
+msgid "lp: Expected priority after -%c option!\n"
+msgstr "lp: Priorität wird hinter dem Parameter -%c erwartet!\n"
+
+msgid "lp: Priority must be between 1 and 100.\n"
+msgstr "lp: Priorität muss zwischen 1 und 100 sein.\n"
+
+msgid "lp: Expected title after -t option!\n"
+msgstr "lp: Titel wird hinter dem Parameter -t erwartet!\n"
+
+msgid "lp: Expected mode list after -y option!\n"
+msgstr "lp: Modusliste hinter dem Parameter -y erwartet!\n"
+
+msgid "lp: Warning - mode option ignored!\n"
+msgstr "lp: Warnung - Parameter für Modus ignoriert!\n"
+
+msgid "lp: Expected hold name after -H option!\n"
+msgstr "lp: Haltebezeichner wird hinter dem Parameter -H erwartet!\n"
+
+msgid "lp: Need job ID (-i) before \"-H restart\"!\n"
+msgstr "lp: Brauche Auftrags ID (-i) vor \"-H restart\"!\n"
+
+msgid "lp: Expected page list after -P option!\n"
+msgstr "lp: Seitenliste wird hinter dem Parameter -P erwartet!\n"
+
+msgid "lp: Expected character set after -S option!\n"
+msgstr "lp: Zeichensatz wird hinter dem Parameter -S erwartet!\n"
+
+msgid "lp: Warning - character set option ignored!\n"
+msgstr "lp: Warnung - Parameter für Zeichnsatz wird ignoriert!\n"
+
+msgid "lp: Expected content type after -T option!\n"
+msgstr "lp: Inhaltstyp hinter dem Parameter -T erwartet!\n"
+
+msgid "lp: Warning - content type option ignored!\n"
+msgstr "lp: Warnung - Parameter für Inhaltstyp ignoriert!\n"
+
+#, c-format
+msgid "lp: Unknown option '%c'!\n"
+msgstr "lp: Unbekannter Parameter '%c'!\n"
+
+msgid ""
+"lp: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"lp: Fehler - Kann nicht von stdin drucken wenn Dateien oder eine Auftrags ID "
+"übergeben wurde!\n"
+
+#, c-format
+msgid "lp: Unable to access \"%s\" - %s\n"
+msgstr "lp: Zugriff auf \"%s\" nicht möglich - %s\n"
+
+#, c-format
+msgid "lp: Too many files - \"%s\"\n"
+msgstr "lp: Zu viele Dateien - \"%s\"\n"
+
+msgid "lp: error - no default destination available.\n"
+msgstr "lp: Fehler - Kein Standardziel vorhanden.\n"
+
+msgid "lp: error - scheduler not responding!\n"
+msgstr "lp: Fehler - Scheduler antwortet nicht!\n"
+
+#, c-format
+msgid "lp: unable to create temporary file \"%s\" - %s\n"
+msgstr "lp: Kann temporäre Datei \"%s\" nicht erstellen - %s\n"
+
+#, c-format
+msgid "lp: error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "lp: Fehler - Kann nicht in temporäre Datei \"%s\" schreiben - %s\n"
+
+msgid "lp: stdin is empty, so no job has been sent.\n"
+msgstr "lp: stdin ist leer, somit wurde kein Auftrag gesendet.\n"
+
+#, c-format
+msgid "lp: unable to print file: %s\n"
+msgstr "lp: Kann Datei nicht drucken: %s\n"
+
+#, c-format
+msgid "request id is %s-%d (%d file(s))\n"
+msgstr "Auftrags ID ist %s-%d (%d Datei(en))\n"
+
+#, c-format
+msgid "lp: restart-job failed: %s\n"
+msgstr "lp: restart-job fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "lp: set-job-attributes failed: %s\n"
+msgstr "lp: set-job-attributes fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "lpinfo: Unable to connect to server: %s\n"
+msgstr "lpinfo: Kann Server nicht erreichen: %s\n"
+
+#, c-format
+msgid "lpinfo: Unknown option '%c'!\n"
+msgstr "lpinfo: Unbekannter Parameter '%c'!\n"
+
+#, c-format
+msgid "lpinfo: Unknown argument '%s'!\n"
+msgstr "lpinfo: Unbekanntes Argument '%s'!\n"
+
+#, c-format
+msgid "lpinfo: cups-get-devices failed: %s\n"
+msgstr "lpinfo: cups-get-devices fehlgeschlagen: %s\n"
+
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+" class = %s\n"
+" info = %s\n"
+" make-and-model = %s\n"
+msgstr ""
+"Gerät: uri = %s\n"
+" class = %s\n"
+" info = %s\n"
+" make-and-model = %s\n"
+
+#, c-format
+msgid "lpinfo: cups-get-ppds failed: %s\n"
+msgstr "lpinfo: cups-get-ppds fehlgeschlagen: %s\n"
+
+#, c-format
+msgid ""
+"Model: name = %s\n"
+" natural_language = %s\n"
+" make-and-model = %s\n"
+msgstr ""
+"Modell: name = %s\n"
+" natural_language = %s\n"
+" make-and-model = %s\n"
+
+#, c-format
+msgid "lpmove: Unknown option '%c'!\n"
+msgstr "lpmove: Unbekannter Parameter '%c'!\n"
+
+#, c-format
+msgid "lpmove: Unknown argument '%s'!\n"
+msgstr "lpmove: Unbekanntes Argument '%s'!\n"
+
+msgid "Usage: lpmove job dest\n"
+msgstr "Benutzung: lpmove Auftrag Ziel\n"
+
+#, c-format
+msgid "lpmove: Unable to connect to server: %s\n"
+msgstr "lpmove: Kann Server nicht erreichen: %s\n"
+
+#, c-format
+msgid "lpmove: move-job failed: %s\n"
+msgstr "lpmove: move-job fehlgeschlagen: %s\n"
+
+msgid "lpoptions: Unknown printer or class!\n"
+msgstr "lpoptions: Unbekannter Drucker oder Klasse!\n"
+
+msgid "lpoptions: No printers!?!\n"
+msgstr "lpoptions: Keine Drucker!?!\n"
+
+#, c-format
+msgid "lpoptions: Unable to add printer or instance: %s\n"
+msgstr "lpoptions: Kann Drucker oder Instanz nicht hinzufügen: %s\n"
+
+#, c-format
+msgid "lpoptions: Destination %s has no PPD file!\n"
+msgstr "lpoptions: Ziel %s hat keine PPD Datei!\n"
+
+#, c-format
+msgid "lpoptions: Unable to open PPD file for %s!\n"
+msgstr "lpoptions: Kann PPD für %s nicht öffnen!\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 ""
+"Benutzung: lpoptions [-h Server] [-E] -d Drucker\n"
+" lpoptions [-h Server] [-E] [-p Drucker] -l\n"
+" lpoptions [-h Server] [-E] -p Drucker -o Parameter[=Wert] ...\n"
+" lpoptions [-h Server] [-E] -x Drucker\n"
+
+msgid "lppasswd: Only root can add or delete passwords!\n"
+msgstr "lppasswd: Nur root kann Passwörter hinzufügen oder löschen!\n"
+
+msgid "Enter old password:"
+msgstr "Altes Passwort eingeben:"
+
+#, c-format
+msgid "lppasswd: Unable to copy password string: %s\n"
+msgstr "lppasswd: Kann Passwort nicht kopieren: %s\n"
+
+msgid "Enter password:"
+msgstr "Passwort eingeben:"
+
+msgid "Enter password again:"
+msgstr "Passwort nochmal eingeben:"
+
+msgid "lppasswd: Sorry, passwords don't match!\n"
+msgstr "lppasswd: Bedaure, Passwörter stimmen nicht überein!\n"
+
+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: Bedaure, Passwort zurückgewiesen.\n"
+"Ihr Passwort muss zumindest 6 Zeichen lang sein, darf nicht den "
+"Benutzernamen\n"
+"enthalten, und muss mindestens einen Buchstaben und eine Zahl enthalten.\n"
+
+msgid "lppasswd: Password file busy!\n"
+msgstr "lppasswd: Passwortdatei in Verwendung!\n"
+
+#, c-format
+msgid "lppasswd: Unable to open password file: %s\n"
+msgstr "lppasswd: Kann Passwortdatei nicht öffnen: %s\n"
+
+#, c-format
+msgid "lppasswd: Unable to write to password file: %s\n"
+msgstr "lppasswd: Kann nicht in die Passwortdatei schreiben: %s\n"
+
+#, c-format
+msgid "lppasswd: user \"%s\" and group \"%s\" do not exist.\n"
+msgstr "lppasswd: Benutzer \"%s\" und Gruppe \"%s\" existieren nicht.\n"
+
+msgid "lppasswd: Sorry, password doesn't match!\n"
+msgstr "lppasswd: Bedaure, Passwort stimmt nicht überein!\n"
+
+msgid "lppasswd: Password file not updated!\n"
+msgstr "lppasswd: Passwortdatei wurde nicht aktualisiert!\n"
+
+#, c-format
+msgid "lppasswd: failed to backup old password file: %s\n"
+msgstr "lppasswd: Konnte alte Passwortdatei nicht sichern: %s\n"
+
+#, c-format
+msgid "lppasswd: failed to rename password file: %s\n"
+msgstr "lppasswd: Konnte Passwortdatei nicht umbenennen: %s\n"
+
+msgid "Usage: lppasswd [-g groupname]\n"
+msgstr "Benutzung: lppasswd [-g Gruppenname]\n"
+
+msgid ""
+"Usage: lppasswd [-g groupname] [username]\n"
+" lppasswd [-g groupname] -a [username]\n"
+" lppasswd [-g groupname] -x [username]\n"
+msgstr ""
+"Benutzung: lppasswd [-g Gruppenname] [Benutzername]\n"
+" lppasswd [-g Gruppenname] -a [Benutzername]\n"
+" lppasswd [-g Gruppenname] -x [Benutzername]\n"
+
+msgid "Start Printer"
+msgstr "Starte Drucker"
+
+msgid "Stop Printer"
+msgstr "Stoppe Drucker"
+
+msgid "Start Class"
+msgstr "Starte Klasse"
+
+msgid "Stop Class"
+msgstr "Stoppe Klasse"
+
+msgid "Accept Jobs"
+msgstr "Akzeptiere Aufträge"
+
+msgid "Reject Jobs"
+msgstr "Aufträge ablehnen"
+
+msgid "Purge Jobs"
+msgstr "Eliminiere Aufträge"
+
+msgid "Set As Default"
+msgstr "Setze als Standard"
+
+msgid "Administration"
+msgstr "Verwaltung"
+
+msgid "Modify Class"
+msgstr "Klasse ändern"
+
+msgid "Add Class"
+msgstr "Klasse hinzufügen"
+
+msgid ""
+"The class name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Der Klassenname darf nur bis zu 127 druckbare Zeichen und keine Leerzeichen, "
+"Slashes (/), oder das Rautezeichen (#) enthalten."
+
+msgid "Unable to modify class:"
+msgstr "Kann Klasse nicht ändern:"
+
+msgid "Unable to add class:"
+msgstr "Kann Klasse nicht hinzufügen:"
+
+msgid "Modify Printer"
+msgstr "Drucker ändern"
+
+msgid "Add Printer"
+msgstr "Drucker hinzufügen"
+
+msgid ""
+"The printer name may only contain up to 127 printable characters and may not "
+"contain spaces, slashes (/), or the pound sign (#)."
+msgstr ""
+"Der Druckername darf nur bis zu 127 druckbare Zeichen und keine Leerzeichen, "
+"Slashes (/), oder das Rautezeichen (#) enthalten."
+
+msgid "Unable to get list of printer drivers:"
+msgstr "Holen der Druckertreiberliste nicht möglich:"
+
+msgid "Unable to modify printer:"
+msgstr "Kann Drucker nicht ändern:"
+
+msgid "Unable to add printer:"
+msgstr "Kann Drucker nicht hinzufügen:"
+
+msgid "Set Printer Options"
+msgstr "Druckereinstellungen setzen"
+
+msgid "Missing form variable!"
+msgstr "Vermisse Formularvariable!"
+
+msgid "Unable to get PPD file!"
+msgstr "Kann PPD Datei nicht holen!"
+
+msgid "Unable to open PPD file:"
+msgstr "Kann PPD Datei nicht öffnen:"
+
+msgid "Banners"
+msgstr "Banner"
+
+msgid "Starting Banner"
+msgstr "Startbanner"
+
+msgid "Ending Banner"
+msgstr "Endbanner"
+
+msgid "Policies"
+msgstr "Richtlinien"
+
+msgid "Error Policy"
+msgstr "Fehlerrichtlinie"
+
+msgid "Operation Policy"
+msgstr "Betriebsrichtlinie"
+
+msgid "PS Binary Protocol"
+msgstr "PS Binärprotokoll"
+
+msgid "None"
+msgstr "Kein(e)"
+
+msgid "Unable to set options:"
+msgstr "Kann Parameter nicht setzen:"
+
+msgid "Change Settings"
+msgstr "Konfiguration ändern"
+
+msgid "Unable to change server settings:"
+msgstr "Kann Servereinstellungen nicht ändern:"
+
+msgid "Unable to upload cupsd.conf file:"
+msgstr "Kann die Datei cupsd.conf nicht hochladen:"
+
+msgid "Edit Configuration File"
+msgstr "Bearbeite Konfigurationsdatei"
+
+msgid "Unable to create temporary file:"
+msgstr "Kann temporäre Datei nicht erstellen:"
+
+msgid "Unable to access cupsd.conf file:"
+msgstr "Kann auf die Datei cupsd.conf nicht zugreifen:"
+
+msgid "Unable to edit cupsd.conf files larger than 1MB!"
+msgstr "Kann cupsd.conf Dateien größer als 1MB nicht bearbeiten!"
+
+msgid "Delete Class"
+msgstr "Lösche Klasse"
+
+msgid "Unable to delete class:"
+msgstr "Kann Klasse nicht löschen:"
+
+msgid "Delete Printer"
+msgstr "Lösche Drucker"
+
+msgid "Unable to delete printer:"
+msgstr "Kann Drucker nicht löschen:"
+
+msgid "Export Printers to Samba"
+msgstr "Drucker für Samba bereitstellen"
+
+msgid "Unable to fork process!"
+msgstr "Kann Prozess nicht forken!"
+
+msgid "Unable to connect to server!"
+msgstr "Kann Server nicht erreichen!"
+
+msgid "Unable to get printer attributes!"
+msgstr "Kann Druckereigenschaften nicht holen!"
+
+msgid "Unable to convert PPD file!"
+msgstr "Kann PPD Datei nicht konvertieren!"
+
+msgid "Unable to copy Windows 2000 printer driver files!"
+msgstr "Kann Windows 2000 Druckertreiberdateien nicht kopieren!"
+
+msgid "Unable to install Windows 2000 printer driver files!"
+msgstr "Kann Windows 2000 Druckertreiberdateien nicht installieren!"
+
+msgid "Unable to copy Windows 9x printer driver files!"
+msgstr "Kann Windows 9x Druckertreiberdateien nicht kopieren!"
+
+msgid "Unable to install Windows 9x printer driver files!"
+msgstr "Kann Windows 9x Druckertreiberdateien nicht installieren!"
+
+msgid "Unable to set Windows printer driver!"
+msgstr "Kann Windows Druckertreiber nicht festlegen!"
+
+msgid "No printer drivers found!"
+msgstr "Keine Druckertreiber gefunden!"
+
+msgid "Unable to execute cupsaddsmb command!"
+msgstr "Kann Befehl cupsaddsmb nicht ausführen!"
+
+#, c-format
+msgid "cupsaddsmb failed with status %d"
+msgstr "cupsaddsmb fehlgeschlagen mit Status %d"
+
+#, c-format
+msgid "cupsaddsmb crashed on signal %d"
+msgstr "cupsaddsmb abgestürzt mit Signal %d"
+
+msgid "A Samba username is required to export printer drivers!"
+msgstr ""
+"Ein Samba Benutzername wird benötigt um Drucker für Samba bereitzustellen!"
+
+msgid "A Samba password is required to export printer drivers!"
+msgstr "Ein Samba Passwort wird benötigt um Druckertreiber bereitzustellen!"
+
+msgid "Unable to open cupsd.conf file:"
+msgstr "Kann die Datei cupsd.conf nicht öffnen:"
+
+msgid "Unable to change printer:"
+msgstr "Kann Drucker nicht ändern:"
+
+msgid "Set Allowed Users"
+msgstr "Erlaubte Benutzer festlegen:"
+
+msgid "Unable to get printer attributes:"
+msgstr "Kann Druckereigenschaften nicht holen:"
+
+msgid "Set Publishing"
+msgstr "Veröffentlichung setzen"
+
+msgid "Unable to change printer-is-shared attribute:"
+msgstr "Kann die Eigenschaft printer-is-shared nicht ändern:"
+
+msgid "Classes"
+msgstr "Klassen"
+
+msgid "Unable to get class list:"
+msgstr "Kann Klassenliste nicht holen:"
+
+msgid "Unable to get class status:"
+msgstr "Kann Klassenstatus nicht holen:"
+
+msgid "Move Job"
+msgstr "Verschiebe Auftrag"
+
+msgid "Unable to find destination for job!"
+msgstr "Kann das Ziel für den Auftrag nicht ermitteln!"
+
+msgid "Move All Jobs"
+msgstr "Verschiebe alle Aufträge"
+
+msgid "Unable to move job"
+msgstr "Kann Auftrag nicht verschieben"
+
+msgid "Unable to move jobs"
+msgstr "Kann Aufträge nicht verschieben"
+
+msgid "Print Test Page"
+msgstr "Drucke Testseite"
+
+msgid "Unable to print test page:"
+msgstr "Kann Testseite nicht drucken:"
+
+msgid "Jobs"
+msgstr "Aufträge"
+
+msgid "Job operation failed:"
+msgstr "Auftragsdurchführung fehlgeschlagen:"
+
+msgid "Printers"
+msgstr "Drucker"
+
+msgid "Unable to get printer list:"
+msgstr "Kann Druckerliste nicht holen:"
+
+msgid "Unable to get printer status:"
+msgstr "Kann Druckerstatus nicht holen:"
+
+msgid "OK"
+msgstr "OK"
+
+msgid "Unable to open PPD file"
+msgstr "Kann PPD Datei nicht öffnen"
+
+msgid "NULL PPD file pointer"
+msgstr "Zeiger für PPD Datei ist NULL"
+
+msgid "Memory allocation error"
+msgstr "Speicherreservierungsfehler"
+
+msgid "Missing PPD-Adobe-4.x header"
+msgstr "Vermisse PPD-Adobe-4.x header"
+
+msgid "Missing value string"
+msgstr "Vermisse Zeichenkette für Wert"
+
+msgid "Internal error"
+msgstr "Interner Fehler"
+
+msgid "Bad OpenGroup"
+msgstr "Falsche OpenGroup-Angabe"
+
+msgid "OpenGroup without a CloseGroup first"
+msgstr "OpenGroup ohne vorheriges CloseGroup"
+
+msgid "Bad OpenUI/JCLOpenUI"
+msgstr "Falsche OpenUI/JCLOpenUI-Angabe"
+
+msgid "OpenUI/JCLOpenUI without a CloseUI/JCLCloseUI first"
+msgstr "OpenUI/JCLOpenUI ohne vorheriges CloseUI/JCLCloseUI"
+
+msgid "Bad OrderDependency"
+msgstr "Falsche OrderDependency-Angabe"
+
+msgid "Bad UIConstraints"
+msgstr "Falsche UIConstraints-Angabe"
+
+msgid "Missing asterisk in column 1"
+msgstr "Vermisse Stern in Zeile 1"
+
+msgid "Line longer than the maximum allowed (255 characters)"
+msgstr "Zeile ist länger als maximal erlaubt (255 Zeichen)"
+
+msgid "Illegal control character"
+msgstr "Ungültiges Steuerzeichen"
+
+msgid "Illegal main keyword string"
+msgstr "Ungültige Zeichenkette für Hauptschlüsselwort"
+
+msgid "Illegal option keyword string"
+msgstr "Ungültige Zeichenkette für Eigenschafts-Schlüsselwort"
+
+msgid "Illegal translation string"
+msgstr "Ungültige Übersetzungszeichenkette"
+
+# Whitespace. Tab, Space, CR...
+msgid "Illegal whitespace character"
+msgstr "Ungültiges Whitespace-Zeichen"
+
+msgid "Bad custom parameter"
+msgstr "Falscher benutzerspezifischer Parameter"
+
+msgid "Unknown"
+msgstr "Unbekannt"
+
+msgid "Custom"
+msgstr "Benutzerspezifisch"
+
+msgid "JCL"
+msgstr "JCL"
+
+msgid "No authentication information provided!"
+msgstr "Keine Authentifizierungsinformationen übergeben!"
+
+#, c-format
+msgid "Password for %s required to access %s via SAMBA: "
+msgstr "Passwort für %s benötigt um auf %s via SAMBA zugreifen zu können."
+
+#, c-format
+msgid "Running command: %s %s -N -U '%s%%%s' -c '%s'\n"
+msgstr "Befehl wird ausgeführt: %s %s -N -U '%s%%%s' -c '%s'\n"
+
+#, c-format
+msgid "cupsaddsmb: Unable to run \"%s\": %s\n"
+msgstr "cupsaddsmb: Kann \"%s\" nicht ausführen: %s\n"
+
+msgid "cupsaddsmb: No Windows printer drivers are installed!\n"
+msgstr "cupsaddsmb: Keine Windows Druckertreiber installiert!\n"
+
+msgid "cupsaddsmb: Warning, no Windows 2000 printer drivers are installed!\n"
+msgstr "cupsaddsmb: Warnung, keine Windows 2000 Druckertreiber installiert!\n"
+
+#, c-format
+msgid "lpadmin: Printer %s is already a member of class %s.\n"
+msgstr "lpadmin: Drucker %s ist bereits Mitglied der Klasse %s.\n"
+
+msgid "lpadmin: No member names were seen!\n"
+msgstr "lpadmin: Keine Mitgliedernamen gesehen!\n"
+
+#, c-format
+msgid "lpadmin: Printer %s is not a member of class %s.\n"
+msgstr "lpadmin: Drucker %s ist kein Mitglied der Klasse %s.\n"
+
+#, c-format
+msgid ""
+"Device: uri = %s\n"
+" class = %s\n"
+" info = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+msgstr ""
+"Gerät: uri = %s\n"
+" class = %s\n"
+" info = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+
+#, c-format
+msgid ""
+"Model: name = %s\n"
+" natural_language = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+msgstr ""
+"Modell: Name = %s\n"
+" natural_language = %s\n"
+" make-and-model = %s\n"
+" device-id = %s\n"
+
+msgid "Usage: lpmove job/src dest\n"
+msgstr "Benutzung: lpmove Auftrag/Quelle Ziel\n"
+
+msgid "lpstat: Need \"completed\", \"not-completed\", or \"all\" after -W!\n"
+msgstr ""
+"lpstat: Brauche \"completed\", \"not-completed\", oder \"all\" hinter dem "
+"Parameter -W!\n"
+
+#, c-format
+msgid "%s accepting requests since %s\n"
+msgstr "%s akzeptiert Anfragen seit %s\n"
+
+#, c-format
+msgid ""
+"%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s akzeptiert keine Anfragen seit %s -\n"
+"\t%s\n"
+
+#, c-format
+msgid "%s/%s accepting requests since %s\n"
+msgstr "%s/%s akzeptiert Anfragen seit %s\n"
+
+#, c-format
+msgid ""
+"%s/%s not accepting requests since %s -\n"
+"\t%s\n"
+msgstr ""
+"%s/%s akzeptiert keine Anfragen seit %s -\n"
+"\t%s\n"
+
+msgid "lpc> "
+msgstr "lpc> "
+
+#, c-format
+msgid "%s: Unable to contact server!\n"
+msgstr "%s: Kann Server nicht erreichen!\n"
+
+#, c-format
+msgid "%s: Error - expected username after '-U' option!\n"
+msgstr "%s: Fehler - Benutzername wird hinter dem Parameter '-U' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - unknown destination \"%s/%s\"!\n"
+msgstr "%s: Fehler - Unbekanntes Ziel \"%s/%s\"!\n"
+
+#, c-format
+msgid "%s: Unknown destination \"%s\"!\n"
+msgstr "%s: Unbekanntes Ziel \"%s\"!\n"
+
+#, c-format
+msgid "%s: Error - expected hostname after '-h' option!\n"
+msgstr "%s: Fehler - Hostname wird hinter dem Parameter '-h' erwartet!\n"
+
+#, c-format
+msgid ""
+"%s: error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"%s: Fehler - Die Umgebungsvariable %s enthält das nicht existierende Ziel \"%"
+"s\"!\n"
+
+#, c-format
+msgid "%s: error - no default destination available.\n"
+msgstr "%s: Fehler - Kein Standardziel verfügbar.\n"
+
+msgid ""
+"Usage: lpq [-P dest] [-U username] [-h hostname[:port]] [-l] [+interval]\n"
+msgstr ""
+"Benutzung: lpq [-P Ziel] [-U Benutzername] [-h Hostname[:Port]] [-l] "
+"[+Intervall]\n"
+
+#, c-format
+msgid "%s: Error - expected hostname after '-H' option!\n"
+msgstr "%s: Fehler - Hostname wird hinter dem Parameter '-H' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - expected value after '-%c' option!\n"
+msgstr "%s: Fehler - Wert wird hinter dem Paramter '-%c' erwartet!\n"
+
+#, c-format
+msgid ""
+"%s: Warning - '%c' format modifier not supported - output may not be "
+"correct!\n"
+msgstr ""
+"%s: Warnung - Formatangabe '%c' nicht unterstützt - Ausgabe ist "
+"möglicherweise falsch!\n"
+
+#, c-format
+msgid "%s: error - expected option=value after '-o' option!\n"
+msgstr "%s: Fehler - Parameter=Wert wird hinter dem Parameter '-o' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - expected destination after '-P' option!\n"
+msgstr "%s: Fehler - Ziel wird hinter dem Parameter '-P' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - expected copy count after '-#' option!\n"
+msgstr "%s: Fehler - Kopienanzahl wird hinter dem Parameter '-#' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - expected name after '-%c' option!\n"
+msgstr "%s: Fehler - Name wird hinter dem Paramter '-%c' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - unknown option '%c'!\n"
+msgstr "%s: Fehler - Unbekannter Parameter '%c'!\n"
+
+#, c-format
+msgid "%s: Error - unable to access \"%s\" - %s\n"
+msgstr "%s: Fehler - Kann auf \"%s\" nicht zugreifen - %s\n"
+
+#, c-format
+msgid "%s: Error - too many files - \"%s\"\n"
+msgstr "%s: Fehler - Zu viele Dateien - \"%s\"\n"
+
+#, c-format
+msgid ""
+"%s: Error - %s environment variable names non-existent destination \"%s\"!\n"
+msgstr ""
+"%s: Fehler - Die Umgebungsvariable %s enthält das nicht existierende Ziel \"%"
+"s\"!\n"
+
+#, c-format
+msgid "%s: Error - no default destination available.\n"
+msgstr "%s: Fehler - Kein Standardziel verfügbar.\n"
+
+#, c-format
+msgid "%s: Error - scheduler not responding!\n"
+msgstr "%s: Fehler - Scheduler antwortet nicht!\n"
+
+#, c-format
+msgid "%s: Error - unable to create temporary file \"%s\" - %s\n"
+msgstr "%s: Fehler - Kann die temporäre Datei \"%s\" nicht erzeugen - %s\n"
+
+#, c-format
+msgid "%s: Error - unable to write to temporary file \"%s\" - %s\n"
+msgstr "%s: Fehler - Kann nicht in die temporäre Datei \"%s\" schreiben - %s\n"
+
+#, c-format
+msgid "%s: Error - stdin is empty, so no job has been sent.\n"
+msgstr "%s: Fehler - stdin ist leer, somit wurde kein Auftrag gesendet.\n"
+
+#, c-format
+msgid "%s: Error - unknown destination \"%s\"!\n"
+msgstr "%s: Fehler - unbekanntes Ziel \"%s\"!\n"
+
+#, c-format
+msgid "%s: Error - expected reason text after '-r' option!\n"
+msgstr ""
+"%s: Fehler - Begründungstext wird hinter dem Parameter '-r' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - expected username after '-u' option!\n"
+msgstr "%s: Fehler - Benutzernamen wird hinter dem Parameter '-u' erwartet!\n"
+
+#, c-format
+msgid "%s: %s failed: %s\n"
+msgstr "%s: %s fehlgeschlagen: %s\n"
+
+#, c-format
+msgid "%s: Error - expected destination after '-d' option!\n"
+msgstr "%s: Fehler - Ziel wird hinter dem Parameter '-d' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - expected form after '-f' option!\n"
+msgstr "%s: Fehler - Formular wird hinter dem Parameter '-f' erwartet!\n"
+
+#, c-format
+msgid "%s: Warning - form option ignored!\n"
+msgstr "%s: Warnung - Parameter für Formular ignoriert!\n"
+
+#, c-format
+msgid "%s: Expected job ID after '-i' option!\n"
+msgstr "%s: Auftrags ID wird hinter dem Parameter '-i' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - cannot print files and alter jobs simultaneously!\n"
+msgstr ""
+"%s: Fehler - Kann nicht gleichzeitig Dateien drucken und Aufträge abändern!\n"
+
+#, c-format
+msgid "%s: Error - bad job ID!\n"
+msgstr "%s: Fehler - Falsche Auftrags ID!\n"
+
+#, c-format
+msgid "%s: Error - expected copies after '-n' option!\n"
+msgstr "%s: Fehler - Kopienanzahl wird hinter dem Parameter '-n' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - expected option string after '-o' option!\n"
+msgstr ""
+"%s: Fehler - Zeichenkette mit Parametern wird hinter dem Parameter '-o' "
+"erwartet!\n"
+
+#, c-format
+msgid "%s: Error - expected priority after '-%c' option!\n"
+msgstr "%s: Fehler - Priorität wird hinter dem Parameter '-%c' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - priority must be between 1 and 100.\n"
+msgstr "%s: Fehler - Priorität muss zwischen 1 und 100 sein.\n"
+
+#, c-format
+msgid "%s: Error - expected title after '-t' option!\n"
+msgstr "%s: Fehler - Titel wird hinter dem Parameter '-t' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - expected mode list after '-y' option!\n"
+msgstr "%s: Fehler - Modusliste wird hinter dem Parameter '-y' erwartet!\n"
+
+#, c-format
+msgid "%s: Warning - mode option ignored!\n"
+msgstr "%s: Warnung - Modusangabe ignoriert!\n"
+
+#, c-format
+msgid "%s: Error - expected hold name after '-H' option!\n"
+msgstr ""
+"%s: Fehler - Haltebezeichnung wird hinter dem Parameter '-H' erwartet!\n"
+
+#, c-format
+msgid "%s: Need job ID ('-i jobid') before '-H restart'!\n"
+msgstr "%s: Brauche Auftrags ID ('-i jobid') vor '-H restart'!\n"
+
+#, c-format
+msgid "%s: Error - expected page list after '-P' option!\n"
+msgstr "%s: Fehler - Seitenliste wird hinter dem Paramter '-P' erwartet!\n"
+
+#, c-format
+msgid "%s: Error - expected character set after '-S' option!\n"
+msgstr "%s: Fehler - Zeichensatz wird hinter dem Paramter '-S' erwartet!\n"
+
+#, c-format
+msgid "%s: Warning - character set option ignored!\n"
+msgstr "%s: Warnung - Zeichensatzangabe ignoriert!\n"
+
+#, c-format
+msgid "%s: Error - expected content type after '-T' option!\n"
+msgstr "%s: Fehler - Inhaltstyp hinter dem Parameter '-T' erwartet!\n"
+
+#, c-format
+msgid "%s: Warning - content type option ignored!\n"
+msgstr "%s: Warnung - Parameter für Inhaltstyp ignoriert!\n"
+
+#, c-format
+msgid ""
+"%s: Error - cannot print from stdin if files or a job ID are provided!\n"
+msgstr ""
+"%s: Fehler - Kann nicht von stdin drucken wenn Dateien oder eine Autrags ID "
+"übergeben wurde!\n"
+
+#, c-format
+msgid ""
+"%s: Error - need \"completed\", \"not-completed\", or \"all\" after '-W' "
+"option!\n"
+msgstr ""
+"%s: Fehler - Brauche \"completed\", \"not-completed\", oder \"all\" hinter "
+"dem Parameter '-W'!\n"
+
+#, c-format
+msgid "%s: Error - expected destination after '-b' option!\n"
+msgstr "%s: Fehler - Ziel wird hinter dem Parameter '-b' erwartet!\n"
+
+#, c-format
+msgid "%s: Invalid destination name in list \"%s\"!\n"
+msgstr "%s: Ungültiger Zielname in der Liste \"%s\"!\n"
+
+#, c-format
+msgid "%s: Unable to connect to server\n"
+msgstr "%s: Kann Server nicht erreichen\n"
+
+msgid "Print Job:"
+msgstr "Druckauftrag:"
+
+msgid "pending"
+msgstr "schwebend"
+
+msgid "held"
+msgstr "gehalten"
+
+msgid "processing"
+msgstr "verarbeite"
+
+msgid "stopped"
+msgstr "gestoppt"
+
+msgid "canceled"
+msgstr "abgebrochen"
+
+msgid "aborted"
+msgstr "abgebrochen"
+
+msgid "completed"
+msgstr "beendet"
+
+msgid "unknown"
+msgstr "unbekannt"
+
+msgid "untitled"
+msgstr "unbenannt"
+
+msgid "Printer:"
+msgstr "Drucker:"
+
+msgid "idle"
+msgstr "frei"
+
+msgid "Missing notify-subscription-ids attribute!"
+msgstr "Vermisse Eigenschaft notify-subscription-ids!"
+
+msgid "Job subscriptions cannot be renewed!"
+msgstr "Auftragssubkription kann nicht erneuert werden!"
+
+msgid "cupsd: Expected config filename after \"-c\" option!\n"
+msgstr ""
+"cupsd: Konfigurationsdateiname wird hinter dem Paramter \"-c\" erwartet!\n"
+
+msgid "cupsd: launchd(8) support not compiled in, running in normal mode.\n"
+msgstr ""
+"cupsd: launchd(8)-unterstützung wurde nicht kompiliert, laufe im normalen "
+"Modus.\n"
+
+#, c-format
+msgid "cupsd: Unknown option \"%c\" - aborting!\n"
+msgstr "cupsd: Unbekannter Paramter \"%c\" - Abbruch!\n"
+
+#, c-format
+msgid "cupsd: Unknown argument \"%s\" - aborting!\n"
+msgstr "cupsd: Unbekanntes Argument \"%s\" - Abbruch!\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 ""
+"Benutzung: cupsd [-c Konfigurationsdatei] [-f] [-F] [-h] [-l]\n"
+"\n"
+"-c Konfig. Datei Lade alternative Konfigurationsdatei\n"
+"-f Laufe im Vordergrund\n"
+"-F Laufe abgetrennt im Vordergrund\n"
+"-h Zeige diese Gebrauchsanweisung\n"
+"-l cupsd über launchd(8) laufen lassen\n"
+
+#, c-format
+msgid " WARN Line %d only contains whitespace!\n"
+msgstr " WARNUNG Zeile %d enthält nur Whitespace!\n"
+
+msgid ""
+" WARN File contains a mix of CR, LF, and CR LF line endings!\n"
+msgstr ""
+" WARNUNG Datei enthält gemischt CR, LF und CR LF als Zeilenende!\n"
+
+msgid ""
+" WARN Non-Windows PPD files should use lines ending with only LF, "
+"not CR LF!\n"
+msgstr ""
+" WARNUNG Nicht-Windows PPD Dateien sollten nur das Zeilenende LF "
+"benutzen, nicht CR LF!\n"
+
+msgid "Printer Maintenance"
+msgstr "Druckerwartung"
+
+msgid "Unable to send maintenance job:"
+msgstr "Kann Wartungsauftrag nicht senden:"
+
+#, c-format
+msgid "cupsaddsmb: No PPD file for printer \"%s\" - %s\n"
+msgstr "cupsaddsmb: Keine PPD Datei für Drucker \"%s\" vorhanden - %s\n"
+
+#, c-format
+msgid " **FAIL** %s %s does not exist!\n"
+msgstr " **FEHLGESCHLAGEN** %s %s existiert nicht!\n"
+
+#, c-format
+msgid " **FAIL** Bad language \"%s\"!\n"
+msgstr " **FEHLGESCHLAGEN** Falsche Sprache \"%s\"!\n"
+
+#, c-format
+msgid " **FAIL** Missing \"%s\" translation string for option %s!\n"
+msgstr ""
+" **FEHLGESCHLAGEN** Vermisse \"%s\" Übersetzung für Parameter %s!\n"
+
+#, c-format
+msgid ""
+" **FAIL** Default translation string for option %s contains 8-bit "
+"characters!\n"
+msgstr ""
+" **FEHLGESCHLAGEN** Standardübersetzung für Parameter %s enthält 8-bit "
+"Zeichen!\n"
+
+#, c-format
+msgid ""
+" **FAIL** Missing \"%s\" translation string for option %s, choice %s!\n"
+msgstr ""
+" **FEHLGESCHLAGEN** Vermisse \"%s\" Übersetzung für Parameter %s, "
+"Auswahl %s!\n"
+
+#, c-format
+msgid ""
+" **FAIL** Default translation string for option %s choice %s contains "
+"8-bit characters!\n"
+msgstr ""
+" **FEHLGESCHLAGEN** Standardübersetzung für Parameter %s Auswahl %s "
+"enthält 8-bit Zeichen!\n"
+
+#, c-format
+msgid " **FAIL** Bad cupsFilter value \"%s\"!\n"
+msgstr " **FEHLGESCHLAGEN** Falscher cupsFilter Wert \"%s\"!\n"
+
+msgid "Help"
+msgstr "Hilfe"
+
+#, c-format
+msgid "Missing value on line %d!\n"
+msgstr "Vermisse Wert in Zeile %d!\n"
+
+#, c-format
+msgid "Missing double quote on line %d!\n"
+msgstr "Vermisse doppelte Anführungszeichen in Zeile %d!\n"
+
+#, c-format
+msgid "Bad option + choice on line %d!\n"
+msgstr "Falscher Parameter + Auswahl in Zeile %d!\n"
+
+#, c-format
+msgid "Unable to copy Windows 2000 printer driver files (%d)!\n"
+msgstr "Kann Windows 2000 Druckertreiberdateien nicht kopieren (%d)!\n"
+
+#, c-format
+msgid "Unable to copy CUPS printer driver files (%d)!\n"
+msgstr "Kann CUPS Druckertreiberdateien nicht kopieren (%d)!\n"
+
+#, c-format
+msgid "Unable to install Windows 2000 printer driver files (%d)!\n"
+msgstr "Kann Windows 2000 Druckertreiberdateien nicht installieren (%d)!\n"
+
+#, c-format
+msgid "Unable to copy Windows 9x printer driver files (%d)!\n"
+msgstr "Kann Windows 9x Druckertreiberdateien nicht kopieren (%d)!\n"
+
+#, c-format
+msgid "Unable to install Windows 9x printer driver files (%d)!\n"
+msgstr "Kann Windows 9x Druckertreiberdateien nicht installieren (%d)!\n"
+
+msgid "No Windows printer drivers are installed!\n"
+msgstr "Keine Windows Druckertreiber installiert!\n"
+
+msgid "Warning, no Windows 2000 printer drivers are installed!\n"
+msgstr "Warnung, keine Windows 2000 Druckertreiber installiert!\n"
+
+#, c-format
+msgid "Unable to set Windows printer driver (%d)!\n"
+msgstr "Kann Windows Druckertreiber nicht setzen (%d)!\n"
+
+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 ""
+"Benutzung: cupsaddsmb [Parameter] Drucker1 ... DruckerN\n"
+" cupsaddsmb [Parameter] -a\n"
+"\n"
+"Options:\n"
+" -E Verbindung zum Server verschlüsseln\n"
+" -H Samba-Server Benutze den angegebenen Samba Server\n"
+" -U Samba-Benutzer Authentifiziere mit dem angegebenen Samba Benutzer\n"
+" -a Alle Drucker bereitstellen\n"
+" -h CUPS-Server Benutze den angegebenen CUPS Server\n"
+" -v zusätzliche Ausgaben einschalten (zeige Befehle)\n"
+
+#, c-format
+msgid "Unable to copy Windows 2000 printer driver files (%d)!"
+msgstr "Kann Windows 2000 Druckertreiberdateien nicht kopieren (%d)!"
+
+#, c-format
+msgid "Unable to copy CUPS printer driver files (%d)!"
+msgstr "Kann CUPS Druckertreiberdateien nicht kopieren (%d)!"
+
+#, c-format
+msgid "Unable to install Windows 2000 printer driver files (%d)!"
+msgstr "Kann Windows 2000 Druckertreiberdateien nicht installieren (%d)!"
+
+#, c-format
+msgid "Unable to copy Windows 9x printer driver files (%d)!"
+msgstr "Kann Windows 9x Druckertreiberdateien nicht kopieren (%d)!"
+
+#, c-format
+msgid "Unable to install Windows 9x printer driver files (%d)!"
+msgstr "Kann Windows 9x Druckertreiberdateien nicht installieren (%d)!"
+
+msgid "No Windows printer drivers are installed!"
+msgstr "Keine Windows Druckertreiber installiert!"
+
+msgid "Warning, no Windows 2000 printer drivers are installed!"
+msgstr "Warnung, keine Windows 2000 Druckertreiber installiert!"
+
+#, c-format
+msgid "open of %s failed: %s"
+msgstr "öffnen von %s fehlgeschlagen: %s"
+
+#, c-format
+msgid "Running command: %s %s -N -A %s -c '%s'\n"
+msgstr "Befehl wird ausgeführt: %s %s -N -A %s -c '%s'\n"
+
+#, c-format
+msgid "stat of %s failed: %s"
+msgstr "Prüfung von %s fehlgeschlagen: %s"
+
+#, c-format
+msgid "Job #%d is already cancelled - can't cancel."
+msgstr "Auftrag #%d wurde bereits abgebrochen - abbrechen nicht möglich."
+
+#, c-format
+msgid "Job #%d is already aborted - can't cancel."
+msgstr "Auftrag #%d wurde bereits abgebrochen - abbrechen nicht möglich."
+
+#, c-format
+msgid "Job #%d is already completed - can't cancel."
+msgstr "Auftrag #%d wurde bereits beendet - abbrechen nicht möglich."
+
+#, c-format
+msgid ""
+"You must access this page using the URL <A HREF=\"https://%s:%d%s\">https://%"
+"s:%d%s</A>."
+msgstr ""
+"Um auf diese Seite zuzugreifen müssen Sie die URL <A HREF=\"https://%s:%d%s"
+"\">https://%s:%d%s</A> verwenden."
+
+#, c-format
+msgid "Unsupported format '%s'!"
+msgstr "Nicht unterstütztes Format '%s'!"
+
+msgid "FAIL\n"
+msgstr "FEHLGESCHLAGEN\n"
+
+#, c-format
+msgid ""
+" Line %d is longer than 255 characters (%d)!\n"
+" REF: Page 25, Line Length\n"
+msgstr ""
+" Zeile %d ist länger als 255 Zeichen (%d)!\n"
+" REF: Seite 25, Zeilenlänge\n"
+
+msgid ""
+" Missing %!PS-Adobe-3.0 on first line!\n"
+" REF: Page 17, 3.1 Conforming Documents\n"
+msgstr ""
+" Vermisse %!PS-Adobe-3.0 in der ersten Zeile!\n"
+" REF: Seite 17, 3.1 Den Konventionen entsprechende Dokumente\n"
+
+#, c-format
+msgid ""
+" Bad %%%%Pages: on line %d!\n"
+" REF: Page 43, %%%%Pages:\n"
+msgstr ""
+" Falsche %%%%Pages: in Zeile %d!\n"
+" REF: Seite 43, %%%%Pages:\n"
+
+#, c-format
+msgid ""
+" Bad %%%%BoundingBox: on line %d!\n"
+" REF: Page 39, %%%%BoundingBox:\n"
+msgstr ""
+" Falsche %%%%BoundingBox: in Zeile %d!\n"
+" REF: Seite 39, %%%%BoundingBox:\n"
+
+#, c-format
+msgid ""
+" Bad %%%%Page: on line %d!\n"
+" REF: Page 53, %%%%Page:\n"
+msgstr ""
+" Falsche %%%%Page: in Zeile %d!\n"
+" REF: Seite 53, %%%%Page:\n"
+
+#, c-format
+msgid ""
+" Missing or bad %%BoundingBox: comment!\n"
+" REF: Page 39, %%BoundingBox:\n"
+msgstr ""
+" Vermisster oder falscher %%BoundingBox: Kommentar!\n"
+" REF: Seite 39, %%BoundingBox:\n"
+
+#, c-format
+msgid ""
+" Missing or bad %%Pages: comment!\n"
+" REF: Page 43, %%Pages:\n"
+msgstr ""
+" Vermisster oder Falscher %%Pages: Kommentar!\n"
+" REF: Seite 43, %%Pages:\n"
+
+#, c-format
+msgid ""
+" Missing %%EndComments comment!\n"
+" REF: Page 41, %%EndComments\n"
+msgstr ""
+" Vermisster %%EndComments Kommentar!\n"
+" REF: Seite 41, %%EndComments\n"
+
+#, c-format
+msgid ""
+" Missing or bad %%Page: comments!\n"
+" REF: Page 53, %%Page:\n"
+msgstr ""
+" Vermisste oder falsche %%Page: Kommentare!\n"
+" REF: Seite 53, %%Page:\n"
+
+#, c-format
+msgid " Too many %%EndDocument comments!\n"
+msgstr " Zu viele %%EndDocument Kommentare!\n"
+
+#, c-format
+msgid " Too many %%BeginDocument comments!\n"
+msgstr " Zu viele %%BeginDocument Kommentare!\n"
+
+#, c-format
+msgid " Saw %d lines that exceeded 255 characters!\n"
+msgstr " Sah %d Zeilen welche 255 Zeichen überschreiten!\n"
+
+msgid "PASS\n"
+msgstr "PASS\n"
+
+msgid " Warning: file contains binary data!\n"
+msgstr " Warnung: Datei enthält binäre Daten!\n"
+
+#, c-format
+msgid " Warning: obsolete DSC version %.1f in file!\n"
+msgstr " Warnung: obsolete DSC Version %.1f in Datei!\n"
+
+#, c-format
+msgid " Warning: no %%EndComments comment in file!\n"
+msgstr " Warnung: keine %%EndComments Kommentare in Datei!\n"
+
+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 ""
+"Benutzung: cupstestdsc [Parameter] Dateiname.ps [... Dateiname.ps]\n"
+" cupstestdsc [Parameter] -\n"
+"\n"
+"Parameter:\n"
+"\n"
+" -h Zeige Gebrauchsanleitung\n"
+"\n"
+" Notiz: Dieses Programm validiert nur die DSC Kommentare, nicht das "
+"PostScript selbst.\n"
+
+#, c-format
+msgid "Password for %s on %s? "
+msgstr "Passwort für %s auf %s? "
+
+msgid ""
+" **FAIL** 1284DeviceId must be 1284DeviceID!\n"
+" REF: Page 72, section 5.5\n"
+msgstr ""
+" **FEHLGESCHLAGEN** 1284DeviceId muss 1284DeviceID sein!\n"
+" REF: Seite 72, Kapitel 5.5\n"
+
+#, fuzzy, c-format
+msgid "Missing value on line %d!"
+msgstr "Vermisse Wert in Zeile %d!\n"
+
+#, fuzzy, c-format
+msgid "Missing double quote on line %d!"
+msgstr "Vermisse doppelte Anführungszeichen in Zeile %d!\n"
+
+#, fuzzy, c-format
+msgid "Bad option + choice on line %d!"
+msgstr "Falscher Parameter + Auswahl in Zeile %d!\n"
+
+#, fuzzy
+msgid "Empty PPD file!"
+msgstr "Kann PPD Datei nicht kopieren!"
+
+#, fuzzy, c-format
+msgid "Unable to set Windows printer driver (%d)!"
+msgstr "Kann Windows Druckertreiber nicht setzen (%d)!\n"
+
+#, fuzzy, c-format
+msgid "Unable to run \"%s\": %s\n"
+msgstr "cupsaddsmb: Kann \"%s\" nicht ausführen: %s\n"
+
+#, fuzzy, c-format
+msgid "Job #%d is already canceled - can't cancel."
+msgstr "Auftrag #%d wurde bereits abgebrochen - abbrechen nicht möglich."
+
+#, c-format
+msgid "Bad notify-recipient URI \"%s\"!"
+msgstr ""
+
+#, c-format
+msgid "notify-recipient URI \"%s\" uses unknown scheme!"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Bad notify-pull-method \"%s\"!"
+msgstr "Falscher port-monitor \"%s\"!"
+
+#, fuzzy, c-format
+msgid ""
+" **FAIL** %s must be 1284DeviceID!\n"
+" REF: Page 72, section 5.5\n"
+msgstr ""
+" **FEHLGESCHLAGEN** 1284DeviceId muss 1284DeviceID sein!\n"
+" REF: Seite 72, Kapitel 5.5\n"
+
+#, fuzzy, c-format
+msgid "lpoptions: Unable to get PPD file for %s: %s\n"
+msgstr "lpoptions: Kann PPD für %s nicht öffnen!\n"
diff --git a/test-plans/dotemacs.initsplit b/test-plans/dotemacs.initsplit
new file mode 100644
index 0000000..b0e3543
--- /dev/null
+++ b/test-plans/dotemacs.initsplit
@@ -0,0 +1,8 @@
+(defconst toc:emacs-config-dir "~/" "")
+(defun toc:load-config-file (filelist)
+ (dolist (file filelist)
+ (load (expand-file-name
+ (concat toc:emacs-config-dir file)))
+ (message "Loaded config file:%s" file)
+ ))
+(toc:load-config-file '("test"))
diff --git a/test-plans/emacs.deck b/test-plans/emacs.deck
new file mode 100644
index 0000000..a985688
--- /dev/null
+++ b/test-plans/emacs.deck
@@ -0,0 +1,9 @@
+;;; This file is a flashcard.el deck file, and is not meant to be
+;;; edited by hand. Please open it in Emacs, and do M-x flashcard-mode
+;;; to use it.
+
+[*flashcard-deck* ([*flashcard-card* "Best editor in the world?" "Emacs" nil] [*flashcard-card* "Worst editor in the world?""Vi" nil] [*flashcard-card* "Best distribution in the world?" "Gentoo" nil] [*flashcard-card* "Gentoo team that is worthing spending money on?" "Emacs" nil]) nil]
+
+;;; Local Variables: ***
+;;; coding: emacs-mule ***
+;;; End: ***
diff --git a/test-plans/example.org b/test-plans/example.org
new file mode 100644
index 0000000..c389902
--- /dev/null
+++ b/test-plans/example.org
@@ -0,0 +1,24 @@
+* Top level headline
+** Movies
+*** Lord of the Rings
+ My favorite scenes are (in this order)
+ 1. The attack of the Rohirrim
+ 2. Eowyns fight with the witch king
+ + this was already my favorite scene in the book
+ + I really like Miranda Otto.
+ 3. Peter Jackson being shot by Legolas
+ - on DVD only
+ He makes a really funny face when it happens.
+ But in the end, not individual scenes matter but the film as a whole.
+
+* Example table
+
+| | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
+|---+----+-----+-----+-----+---------+------------|
+| / | <> | < | | > | < | > |
+| # | 1 | 1 | 1 | 1 | 1 | 1 |
+| # | 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
+| # | 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
+| # | 10 | | | | | |
+|---+----+-----+-----+-----+---------+------------|
+#+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2))
diff --git a/test-plans/example.pl b/test-plans/example.pl
new file mode 100644
index 0000000..bbd5832
--- /dev/null
+++ b/test-plans/example.pl
@@ -0,0 +1,34 @@
+#!/usr/bin/perl
+
+eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
+ if 0; # not running under some shell
+
+# Computes and prints to stdout the CRC-32 values of the given files
+
+use strict;
+use lib qw( blib/lib lib );
+use Archive::Zip;
+use FileHandle;
+
+my $totalFiles = scalar(@ARGV);
+foreach my $file (@ARGV) {
+ if ( -d $file ) {
+ warn "$0: ${file}: Is a directory\n";
+ next;
+ }
+ my $fh = FileHandle->new();
+ if ( !$fh->open( $file, 'r' ) ) {
+ warn "$0: $!\n";
+ next;
+ }
+ binmode($fh);
+ my $buffer;
+ my $bytesRead;
+ my $crc = 0;
+ while ( $bytesRead = $fh->read( $buffer, 32768 ) ) {
+ $crc = Archive::Zip::computeCRC32( $buffer, $crc );
+ }
+ printf( "%08x", $crc );
+ print("\t$file") if ( $totalFiles > 1 );
+ print("\n");
+}
diff --git a/test-plans/example.rst b/test-plans/example.rst
new file mode 100644
index 0000000..7d2cc6b
--- /dev/null
+++ b/test-plans/example.rst
@@ -0,0 +1,8 @@
+An example::
+
+ Whitespace, newlines, blank lines, and all kinds of markup
+ (like *this* or \this) is preserved by literal blocks.
+ Lookie here, I've dropped an indentation level
+ (but not far enough)
+
+no more example \ No newline at end of file
diff --git a/test-plans/example.teco b/test-plans/example.teco
new file mode 100644
index 0000000..9f5180c
--- /dev/null
+++ b/test-plans/example.teco
@@ -0,0 +1,26 @@
+@t/
+
+ U1
+ Q1"E @~no more~ | Q1:= '
+ @~ bottle~
+ (Q1-1)"E | @~s~ '
+/
+
+99%b<
+ QbMt
+ @/ of beer on the wall, /
+ QbMt
+ @/ of beer.
+/
+ @/Take one down and pass it around, /
+ -1%bMt
+ @/ of beer on the wall.
+
+/
+>
+
+@/No more bottles of beer on the wall, no more bottles of beer.
+Go to the store and buy some more, 99 bottles of beer on the wall.
+/
+
+
diff --git a/test-plans/example.vhdl b/test-plans/example.vhdl
new file mode 100644
index 0000000..bc83485
--- /dev/null
+++ b/test-plans/example.vhdl
@@ -0,0 +1,40 @@
+-- The following example is an up-counter with asynchronous reset,
+-- parallel load and configurable width. It demonstrates the use
+-- of the 'unsigned' type, type conversions between 'unsigned' and
+-- 'std_logic_vector' and VHDL generics. The generics are very
+-- close to arguments or templates in other traditional programming
+-- languages like C++.
+
+library IEEE;
+use IEEE.std_logic_1164.all;
+use IEEE.numeric_std.all; -- for the unsigned type
+
+entity COUNTER is
+ generic (
+ WIDTH : in natural := 32);
+ port (
+ RST : in std_logic;
+ CLK : in std_logic;
+ LOAD : in std_logic;
+ DATA : in std_logic_vector(WIDTH-1 downto 0);
+ Q : out std_logic_vector(WIDTH-1 downto 0));
+end entity COUNTER;
+
+architecture RTL of COUNTER is
+ signal CNT : unsigned(WIDTH-1 downto 0);
+begin
+ process(RST, CLK) is
+ begin
+ if RST = '1' then
+ CNT <= (others => '0');
+ elsif rising_edge(CLK) then
+ if LOAD = '1' then
+ CNT <= unsigned(DATA); -- type is converted to unsigned
+ else
+ CNT <= CNT + 1;
+ end if;
+ end if;
+ end process;
+
+ Q <= std_logic_vector(CNT); -- type is converted back to std_logic_vector
+end architecture RTL;
diff --git a/test-plans/hello.c b/test-plans/hello.c
new file mode 100644
index 0000000..8f1edd6
--- /dev/null
+++ b/test-plans/hello.c
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+int main(void)
+{
+ printf("Hello World!\n");
+ return 0;
+}
diff --git a/test-plans/hello.j b/test-plans/hello.j
new file mode 100644
index 0000000..6ef8834
--- /dev/null
+++ b/test-plans/hello.j
@@ -0,0 +1,17 @@
+.class public HelloWorld.j
+.super java/lang/Object
+
+.method public <init>()V
+ aload_0
+ invokenonvirtual java/lang/Object/<init>()V
+ return
+.end method
+
+.method public static main([Ljava/lang/String;)V
+ .limit stack 2
+ .limit locals 2
+ getstatic java/lang/System/out Ljava/io/PrintStream;
+ ldc "Hello World."
+ invokevirtual java/io/PrintStream/println(Ljava/lang/String;)V
+ return
+.end method
diff --git a/test-plans/helloworld.dot b/test-plans/helloworld.dot
new file mode 100644
index 0000000..347755d
--- /dev/null
+++ b/test-plans/helloworld.dot
@@ -0,0 +1,7 @@
+digraph G {
+ node [label="\N"];
+ graph [bb="0,0,70,108"];
+ Hello [pos="35,90", width="0.86", height="0.50"];
+ World [pos="35,18", width="0.97", height="0.50"];
+ Hello -> World [pos="e,35,36 35,72 35,64 35,55 35,46"];
+}
diff --git a/test-plans/lcm.js b/test-plans/lcm.js
new file mode 100644
index 0000000..4117b33
--- /dev/null
+++ b/test-plans/lcm.js
@@ -0,0 +1,77 @@
+/* Finds the lowest common multiple (LCM) of two numbers */
+function LCMCalculator(x, y) { // constructor function
+ var checkInt = function (x) { // inner function
+ if (x % 1 !== 0) {
+ // throw an exception
+ throw new TypeError(x + " is not an integer");
+ }
+ return x;
+ };
+ this.a = checkInt(x)
+ // ^ semicolons are optional
+ this.b = checkInt(y);
+}
+// The prototype of object instances created by a constructor is
+// that constructor's "prototype" property.
+LCMCalculator.prototype = { // object literal
+ // when reassigning a prototype, set the constructor property appropriately
+ constructor: LCMCalculator,
+ gcd: function () { // method that calculates the greatest common divisor
+ // Euclidean algorithm:
+ var a = Math.abs(this.a), b = Math.abs(this.b), t;
+ if (a < b) {
+ // swap variables
+ t = b;
+ b = a;
+ a = t;
+ }
+ while (b !== 0) {
+ t = b;
+ b = a % b;
+ a = t;
+ }
+ // Only need to calculate GCD once, so "redefine" this method.
+ // (Actually not redefinition—it's defined on the instance itself,
+ // so that this.gcd refers to this "redefinition" instead of
+ // LCMCalculator.prototype.gcd.)
+ // Also, 'gcd' === "gcd", this['gcd'] === this.gcd
+ this['gcd'] = function () {
+ return a;
+ };
+ return a;
+ },
+ // Object property names can be specified by strings delimited by
+ // double (") or single (') quotes.
+ "lcm" : function () {
+ // Variable names don't collide with object properties,
+ // e.g. |lcm| is not |this.lcm|.
+ // not using |this.a * this.b| to avoid FP precision issues
+ var lcm = this.a / this.gcd() * this.b;
+ // Only need to calculate lcm once, so "redefine" this method.
+ this.lcm = function () {
+ return lcm;
+ };
+ return lcm;
+ },
+ toString: function () {
+ return "LCMCalculator: a = " + this.a + ", b = " + this.b;
+ }
+};
+
+// Define generic output function; this implementation only works for
+// web browsers
+function output(x) {
+ document.body.appendChild(document.createTextNode(x));
+ document.body.appendChild(document.createElement('br'));
+}
+
+// Note: Array's map() and forEach() are defined in JavaScript 1.6.
+// They are used here to demonstrate JavaScript's inherent functional nature.
+// array literal + mapping function
+[[25, 55], [21, 56], [22, 58], [28, 56]].map(function (pair) {
+ return new LCMCalculator(pair[0], pair[1]);
+}).sort(function (a, b) { // sort with this comparative function
+ return a.lcm() - b.lcm();
+}).forEach(function (obj) {
+ output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());
+});
diff --git a/test-plans/mmm-example.sh b/test-plans/mmm-example.sh
new file mode 100644
index 0000000..838f04b
--- /dev/null
+++ b/test-plans/mmm-example.sh
@@ -0,0 +1,42 @@
+#! /bin/sh
+# One of the long-time standard syntaxes for outputting large amounts
+#of code (or text, or HTML, or whatever) from a script (notably shell
+#scripts and Perl scripts) is the here-document syntax:
+
+cat <<END_HTML;
+<html>
+ <head>
+ <title>Test Page</title>
+ </head>
+ <body>
+ A test.
+ </body>
+</html>
+END_HTML
+
+# The 'here-doc' submode class recognizes this syntax, and can even
+#guess the correct submode to use in many cases. For instance, it would
+#put the above example in `html-mode', noticing the string `HTML' in the
+#name of the here-document. If you use less than evocative
+#here-document names, or if the submode is recognized incorrectly for
+#any other reason, you can tell it explicitly what submode to use.
+
+cat <<END_LISP
+;; String to integer conversion for arbitrary base.
+(defun string-to-base-int (s base)
+ "Convert S to an integer by parsing it as base BASE number."
+ (let ((n 0))
+ (while (not (string-equal s ""))
+ (let ((c (downcase (aref s 0))))
+ (setq n (+ (* n base)
+ (cond ((and (>= c ?0) (<= c ?9))
+ (- c ?0))
+ ((and (>= c ?a) (<= c ?z))
+ (- c (- ?a 10)))))))
+ (setq s (substring s 1)))
+ n))
+END_LISP
+
+# Local Variables:
+# eval: (mmm-ify-by-class 'here-doc)
+# End:
diff --git a/test-plans/p1025rdb.dtsi b/test-plans/p1025rdb.dtsi
new file mode 100644
index 0000000..f502564
--- /dev/null
+++ b/test-plans/p1025rdb.dtsi
@@ -0,0 +1,326 @@
+/*
+ * P1025 RDB Device Tree Source stub (no addresses or top-level ranges)
+ *
+ * Copyright 2011 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Freescale Semiconductor nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+&lbc {
+ nor@0,0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "cfi-flash";
+ reg = <0x0 0x0 0x1000000>;
+ bank-width = <2>;
+ device-width = <1>;
+
+ partition@0 {
+ /* This location must not be altered */
+ /* 256KB for Vitesse 7385 Switch firmware */
+ reg = <0x0 0x00040000>;
+ label = "NOR Vitesse-7385 Firmware";
+ read-only;
+ };
+
+ partition@40000 {
+ /* 256KB for DTB Image */
+ reg = <0x00040000 0x00040000>;
+ label = "NOR DTB Image";
+ };
+
+ partition@80000 {
+ /* 3.5 MB for Linux Kernel Image */
+ reg = <0x00080000 0x00380000>;
+ label = "NOR Linux Kernel Image";
+ };
+
+ partition@400000 {
+ /* 11MB for JFFS2 based Root file System */
+ reg = <0x00400000 0x00b00000>;
+ label = "NOR JFFS2 Root File System";
+ };
+
+ partition@f00000 {
+ /* This location must not be altered */
+ /* 512KB for u-boot Bootloader Image */
+ /* 512KB for u-boot Environment Variables */
+ reg = <0x00f00000 0x00100000>;
+ label = "NOR U-Boot Image";
+ read-only;
+ };
+ };
+
+ nand@1,0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fsl,p1025-fcm-nand",
+ "fsl,elbc-fcm-nand";
+ reg = <0x1 0x0 0x40000>;
+
+ partition@0 {
+ /* This location must not be altered */
+ /* 1MB for u-boot Bootloader Image */
+ reg = <0x0 0x00100000>;
+ label = "NAND U-Boot Image";
+ read-only;
+ };
+
+ partition@100000 {
+ /* 1MB for DTB Image */
+ reg = <0x00100000 0x00100000>;
+ label = "NAND DTB Image";
+ };
+
+ partition@200000 {
+ /* 4MB for Linux Kernel Image */
+ reg = <0x00200000 0x00400000>;
+ label = "NAND Linux Kernel Image";
+ };
+
+ partition@600000 {
+ /* 4MB for Compressed Root file System Image */
+ reg = <0x00600000 0x00400000>;
+ label = "NAND Compressed RFS Image";
+ };
+
+ partition@a00000 {
+ /* 7MB for JFFS2 based Root file System */
+ reg = <0x00a00000 0x00700000>;
+ label = "NAND JFFS2 Root File System";
+ };
+
+ partition@1100000 {
+ /* 15MB for JFFS2 based Root file System */
+ reg = <0x01100000 0x00f00000>;
+ label = "NAND Writable User area";
+ };
+ };
+
+};
+
+&soc {
+ i2c@3000 {
+ rtc@68 {
+ compatible = "dallas,ds1339";
+ reg = <0x68>;
+ };
+ };
+
+ spi@7000 {
+ flash@0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "spansion,s25sl12801";
+ reg = <0>;
+ spi-max-frequency = <40000000>; /* input clock */
+
+ partition@u-boot {
+ /* 512KB for u-boot Bootloader Image */
+ reg = <0x0 0x00080000>;
+ label = "u-boot";
+ read-only;
+ };
+
+ partition@dtb {
+ /* 512KB for DTB Image */
+ reg = <0x00080000 0x00080000>;
+ label = "dtb";
+ };
+
+ partition@kernel {
+ /* 4MB for Linux Kernel Image */
+ reg = <0x00100000 0x00400000>;
+ label = "kernel";
+ };
+
+ partition@fs {
+ /* 4MB for Compressed RFS Image */
+ reg = <0x00500000 0x00400000>;
+ label = "file system";
+ };
+
+ partition@jffs-fs {
+ /* 7MB for JFFS2 based RFS */
+ reg = <0x00900000 0x00700000>;
+ label = "file system jffs2";
+ };
+ };
+ };
+
+ usb@22000 {
+ phy_type = "ulpi";
+ };
+
+ /* USB2 is shared with localbus, so it must be disabled
+ by default. We can't put 'status = "disabled";' here
+ since U-Boot doesn't clear the status property when
+ it enables USB2. OTOH, U-Boot does create a new node
+ when there isn't any. So, just comment it out.
+ usb@23000 {
+ phy_type = "ulpi";
+ };
+ */
+
+ mdio@24000 {
+ phy0: ethernet-phy@0 {
+ interrupt-parent = <&mpic>;
+ interrupts = <3 1>;
+ reg = <0x0>;
+ };
+
+ phy1: ethernet-phy@1 {
+ interrupt-parent = <&mpic>;
+ interrupts = <2 1>;
+ reg = <0x1>;
+ };
+
+ tbi0: tbi-phy@11 {
+ reg = <0x11>;
+ device_type = "tbi-phy";
+ };
+ };
+
+ mdio@25000 {
+ tbi1: tbi-phy@11 {
+ reg = <0x11>;
+ device_type = "tbi-phy";
+ };
+ };
+
+ mdio@26000 {
+ tbi2: tbi-phy@11 {
+ reg = <0x11>;
+ device_type = "tbi-phy";
+ };
+ };
+
+ enet0: ethernet@b0000 {
+ fixed-link = <1 1 1000 0 0>;
+ phy-connection-type = "rgmii-id";
+
+ };
+
+ enet1: ethernet@b1000 {
+ phy-handle = <&phy0>;
+ tbi-handle = <&tbi1>;
+ phy-connection-type = "sgmii";
+ };
+
+ enet2: ethernet@b2000 {
+ phy-handle = <&phy1>;
+ phy-connection-type = "rgmii-id";
+ };
+
+ par_io@e0100 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ reg = <0xe0100 0x60>;
+ ranges = <0x0 0xe0100 0x60>;
+ device_type = "par_io";
+ num-ports = <3>;
+ pio1: ucc_pin@01 {
+ pio-map = <
+ /* port pin dir open_drain assignment has_irq */
+ 0x1 0x13 0x1 0x0 0x1 0x0 /* QE_MUX_MDC */
+ 0x1 0x14 0x3 0x0 0x1 0x0 /* QE_MUX_MDIO */
+ 0x0 0x17 0x2 0x0 0x2 0x0 /* CLK12 */
+ 0x0 0x18 0x2 0x0 0x1 0x0 /* CLK9 */
+ 0x0 0x7 0x1 0x0 0x2 0x0 /* ENET1_TXD0_SER1_TXD0 */
+ 0x0 0x9 0x1 0x0 0x2 0x0 /* ENET1_TXD1_SER1_TXD1 */
+ 0x0 0xb 0x1 0x0 0x2 0x0 /* ENET1_TXD2_SER1_TXD2 */
+ 0x0 0xc 0x1 0x0 0x2 0x0 /* ENET1_TXD3_SER1_TXD3 */
+ 0x0 0x6 0x2 0x0 0x2 0x0 /* ENET1_RXD0_SER1_RXD0 */
+ 0x0 0xa 0x2 0x0 0x2 0x0 /* ENET1_RXD1_SER1_RXD1 */
+ 0x0 0xe 0x2 0x0 0x2 0x0 /* ENET1_RXD2_SER1_RXD2 */
+ 0x0 0xf 0x2 0x0 0x2 0x0 /* ENET1_RXD3_SER1_RXD3 */
+ 0x0 0x5 0x1 0x0 0x2 0x0 /* ENET1_TX_EN_SER1_RTS_B */
+ 0x0 0xd 0x1 0x0 0x2 0x0 /* ENET1_TX_ER */
+ 0x0 0x4 0x2 0x0 0x2 0x0 /* ENET1_RX_DV_SER1_CTS_B */
+ 0x0 0x8 0x2 0x0 0x2 0x0 /* ENET1_RX_ER_SER1_CD_B */
+ 0x0 0x11 0x2 0x0 0x2 0x0 /* ENET1_CRS */
+ 0x0 0x10 0x2 0x0 0x2 0x0>; /* ENET1_COL */
+ };
+
+ pio2: ucc_pin@02 {
+ pio-map = <
+ /* port pin dir open_drain assignment has_irq */
+ 0x1 0x13 0x1 0x0 0x1 0x0 /* QE_MUX_MDC */
+ 0x1 0x14 0x3 0x0 0x1 0x0 /* QE_MUX_MDIO */
+ 0x1 0xb 0x2 0x0 0x1 0x0 /* CLK13 */
+ 0x1 0x7 0x1 0x0 0x2 0x0 /* ENET5_TXD0_SER5_TXD0 */
+ 0x1 0xa 0x1 0x0 0x2 0x0 /* ENET5_TXD1_SER5_TXD1 */
+ 0x1 0x6 0x2 0x0 0x2 0x0 /* ENET5_RXD0_SER5_RXD0 */
+ 0x1 0x9 0x2 0x0 0x2 0x0 /* ENET5_RXD1_SER5_RXD1 */
+ 0x1 0x5 0x1 0x0 0x2 0x0 /* ENET5_TX_EN_SER5_RTS_B */
+ 0x1 0x4 0x2 0x0 0x2 0x0 /* ENET5_RX_DV_SER5_CTS_B */
+ 0x1 0x8 0x2 0x0 0x2 0x0>; /* ENET5_RX_ER_SER5_CD_B */
+ };
+
+ pio3: ucc_pin@03 {
+ pio-map = <
+ /* port pin dir open_drain assignment has_irq */
+ 0x0 0x16 0x2 0x0 0x2 0x0 /* SER7_CD_B*/
+ 0x0 0x12 0x2 0x0 0x2 0x0 /* SER7_CTS_B*/
+ 0x0 0x13 0x1 0x0 0x2 0x0 /* SER7_RTS_B*/
+ 0x0 0x14 0x2 0x0 0x2 0x0 /* SER7_RXD0*/
+ 0x0 0x15 0x1 0x0 0x2 0x0>; /* SER7_TXD0*/
+ };
+
+ pio4: ucc_pin@04 {
+ pio-map = <
+ /* port pin dir open_drain assignment has_irq */
+ 0x1 0x0 0x2 0x0 0x2 0x0 /* SER3_CD_B*/
+ 0x0 0x1c 0x2 0x0 0x2 0x0 /* SER3_CTS_B*/
+ 0x0 0x1d 0x1 0x0 0x2 0x0 /* SER3_RTS_B*/
+ 0x0 0x1e 0x2 0x0 0x2 0x0 /* SER3_RXD0*/
+ 0x0 0x1f 0x1 0x0 0x2 0x0>; /* SER3_TXD0*/
+ };
+ };
+};
+
+&qe {
+ serial2: ucc@2600 {
+ device_type = "serial";
+ compatible = "ucc_uart";
+ port-number = <0>;
+ rx-clock-name = "brg6";
+ tx-clock-name = "brg6";
+ pio-handle = <&pio3>;
+ };
+
+ serial3: ucc@2200 {
+ device_type = "serial";
+ compatible = "ucc_uart";
+ port-number = <1>;
+ rx-clock-name = "brg2";
+ tx-clock-name = "brg2";
+ pio-handle = <&pio4>;
+ };
+};
diff --git a/test-plans/p1025rdb_32b.dts b/test-plans/p1025rdb_32b.dts
new file mode 100644
index 0000000..a2ed628
--- /dev/null
+++ b/test-plans/p1025rdb_32b.dts
@@ -0,0 +1,133 @@
+/*
+ * P1025 RDB Device Tree Source (32-bit address map)
+ *
+ * Copyright 2011 Freescale Semiconductor Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Freescale Semiconductor nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ *
+ * ALTERNATIVELY, this software may be distributed under the terms of the
+ * GNU General Public License ("GPL") as published by the Free Software
+ * Foundation, either version 2 of that License or (at your option) any
+ * later version.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/include/ "fsl/p1021si-pre.dtsi"
+/ {
+ model = "fsl,P1025RDB";
+ compatible = "fsl,P1025RDB";
+
+ memory {
+ device_type = "memory";
+ };
+
+ lbc: localbus@ffe05000 {
+ reg = <0 0xffe05000 0 0x1000>;
+
+ /* NOR, NAND Flashes */
+ ranges = <0x0 0x0 0x0 0xef000000 0x01000000
+ 0x1 0x0 0x0 0xff800000 0x00040000>;
+ };
+
+ soc: soc@ffe00000 {
+ ranges = <0x0 0x0 0xffe00000 0x100000>;
+ };
+
+ pci0: pcie@ffe09000 {
+ ranges = <0x2000000 0x0 0xe0000000 0 0xe0000000 0x0 0x20000000
+ 0x1000000 0x0 0x00000000 0 0xffc10000 0x0 0x10000>;
+ reg = <0 0xffe09000 0 0x1000>;
+ pcie@0 {
+ ranges = <0x2000000 0x0 0xe0000000
+ 0x2000000 0x0 0xe0000000
+ 0x0 0x20000000
+
+ 0x1000000 0x0 0x0
+ 0x1000000 0x0 0x0
+ 0x0 0x100000>;
+ };
+ };
+
+ pci1: pcie@ffe0a000 {
+ reg = <0 0xffe0a000 0 0x1000>;
+ ranges = <0x2000000 0x0 0xe0000000 0 0xe0000000 0x0 0x20000000
+ 0x1000000 0x0 0x00000000 0 0xffc00000 0x0 0x10000>;
+ pcie@0 {
+ ranges = <0x2000000 0x0 0xe0000000
+ 0x2000000 0x0 0xe0000000
+ 0x0 0x20000000
+
+ 0x1000000 0x0 0x0
+ 0x1000000 0x0 0x0
+ 0x0 0x100000>;
+ };
+ };
+
+ qe: qe@ffe80000 {
+ ranges = <0x0 0x0 0xffe80000 0x40000>;
+ reg = <0 0xffe80000 0 0x480>;
+ brg-frequency = <0>;
+ bus-frequency = <0>;
+ status = "disabled"; /* no firmware loaded */
+
+ enet3: ucc@2000 {
+ device_type = "network";
+ compatible = "ucc_geth";
+ rx-clock-name = "clk12";
+ tx-clock-name = "clk9";
+ pio-handle = <&pio1>;
+ phy-handle = <&qe_phy0>;
+ phy-connection-type = "mii";
+ };
+
+ mdio@2120 {
+ qe_phy0: ethernet-phy@0 {
+ interrupt-parent = <&mpic>;
+ interrupts = <4 1 0 0>;
+ reg = <0x6>;
+ };
+ qe_phy1: ethernet-phy@03 {
+ interrupt-parent = <&mpic>;
+ interrupts = <5 1 0 0>;
+ reg = <0x3>;
+ };
+ tbi-phy@11 {
+ reg = <0x11>;
+ device_type = "tbi-phy";
+ };
+ };
+
+ enet4: ucc@2400 {
+ device_type = "network";
+ compatible = "ucc_geth";
+ rx-clock-name = "none";
+ tx-clock-name = "clk13";
+ pio-handle = <&pio2>;
+ phy-handle = <&qe_phy1>;
+ phy-connection-type = "rmii";
+ };
+ };
+};
+
+/include/ "p1025rdb.dtsi"
+/include/ "fsl/p1021si-post.dtsi"
diff --git a/test-plans/strawberry.jam b/test-plans/strawberry.jam
new file mode 100644
index 0000000..8d9001a
--- /dev/null
+++ b/test-plans/strawberry.jam
@@ -0,0 +1,19 @@
+X = Bob Sue Pat ;
+Y = "" "" ;
+Echo Hello $(X)$(Y) ;
+Y Z = test ;
+Y = ;
+Z = $(X)$(Y) ;
+
+rule MyRule
+{
+ Echo First arg is $(1) ;
+ Echo Second arg is $(2) ;
+ Echo Third arg is $(3) ;
+}
+
+actions MyAction
+{
+ ytouch $(1)
+cat $(2) >> $(1)
+}
diff --git a/test-plans/test.cs b/test-plans/test.cs
new file mode 100644
index 0000000..641c79c
--- /dev/null
+++ b/test-plans/test.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+namespace ConsoleApplication1
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ Console.WriteLine("Gentoo is cool!");
+ Console.ReadLine();
+ }
+ }
+}
diff --git a/test-plans/test.csv b/test-plans/test.csv
new file mode 100644
index 0000000..975519c
--- /dev/null
+++ b/test-plans/test.csv
@@ -0,0 +1,4 @@
+Stunde;Montag;Dienstag;Mittwoch;Donnerstag;Freitag
+1;Mathe;Deutsch;Englisch;Mathe;Kunst
+2;Sport;Französisch;Geschichte;Sport;Geschichte
+3;Sport;"Religion ev;kath";Kunst;Deutsch;Kunst
diff --git a/test-plans/test.invalid.xml b/test-plans/test.invalid.xml
new file mode 100644
index 0000000..bdf6a2c
--- /dev/null
+++ b/test-plans/test.invalid.xml
@@ -0,0 +1,8 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>An invalid document</title>
+ </head>
+ <body>
+ <p>This XHTML document is <span class="#foo">invalid</span>.</p>
+ </body>
+</html>
diff --git a/test-plans/test.m b/test-plans/test.m
new file mode 100644
index 0000000..d0cc40e
--- /dev/null
+++ b/test-plans/test.m
@@ -0,0 +1,4 @@
+function a = double(a)
+ for i = 1:length(a), a(i) = a(i) + a(i); end
+
+clear b; tic; for i = 1:10^5, b(i) = a(i) + a(i); end, toc \ No newline at end of file
diff --git a/test-plans/test.muse b/test-plans/test.muse
new file mode 100644
index 0000000..cf03fad
--- /dev/null
+++ b/test-plans/test.muse
@@ -0,0 +1,82 @@
+Separate paragraphs in Muse must be separate by a blank line.
+
+For example, the input text used for this section is:
+
+* First level
+
+** Second level
+
+*** Third level
+
+ -- -
+
+*emphasis*
+**strong emphasis**
+***very strong emphasis***
+_underlined_
+=verbatim and monospace=
+
+Footnote test [1]
+
+> A line of Emacs verse;
+> forgive its being so terse.
+
+<verse>
+A line of Emacs verse;
+ forgive its being so terse.
+</verse>
+
+You are reading the
+<literal style="html">HTML</literal>
+<literal style="pdf">PDF</literal>
+<literal style="info">Info</literal>
+version of this document.
+
+ - bullet item one
+ - bullet item two
+
+ 1. Enumerated item one
+ 2. Enumerated item two
+
+Term1 :: A definition one
+
+Term2 :: A definition two
+
+ - Level 1, bullet item one
+ 1. Level 2, enum item one
+ 2. Level 2, enum item two
+ - Level 1, bullet item two
+
+Double bars || Separate header fields
+
+ Single bars | Separate body fields
+ Here are more | body fields
+
+ Triple bars ||| Separate footer fields
+
+| Single bars | Separate body fields |
+| Here are more | body fields |
+
+Made with [[/usr/share/pixmaps/emacs.png]] GNU Emacs on Gentoo Linux.
+
+Muse can be downloaded [[http://download.gna.org/muse-el/][here]], or at
+[[http://download.gna.org/muse-el/]].
+
+<src lang="c">
+#include <stdlib.h>
+
+char *unused;
+
+int main (int argc, char *argv[])
+{
+ puts("Hello, world!\n");
+}
+</src>
+
+<lisp markup="example">
+(concat "Insert" " me")
+</lisp>
+
+Footnotes:
+[1] Test
+
diff --git a/test-plans/test.sml b/test-plans/test.sml
new file mode 100644
index 0000000..3ffa4ad
--- /dev/null
+++ b/test-plans/test.sml
@@ -0,0 +1,2 @@
+- if true then 0 else 1;
+val it = 0 : int
diff --git a/test-plans/test.sql b/test-plans/test.sql
new file mode 100644
index 0000000..7cc7552
--- /dev/null
+++ b/test-plans/test.sql
@@ -0,0 +1,6 @@
+SELECT [DISTINCT] ''Auswahlliste''
+FROM ''Quelle''
+WHERE ''Where-Klausel''
+[GROUP BY (''Group-by-Attribut'')+
+[HAVING ''Having-Klausel'']]
+[ORDER BY (''Sortierungsattribut'' [ASC|DESC])+];
diff --git a/test-plans/test.valid.xml b/test-plans/test.valid.xml
new file mode 100644
index 0000000..56a1280
--- /dev/null
+++ b/test-plans/test.valid.xml
@@ -0,0 +1,8 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>A valid document</title>
+ </head>
+ <body>
+ <p>This is a valid, albeit boring, XHTML document.</p>
+ </body>
+</html>
diff --git a/test-plans/test.xsl b/test-plans/test.xsl
new file mode 100644
index 0000000..c45c367
--- /dev/null
+++ b/test-plans/test.xsl
@@ -0,0 +1,24 @@
+<?xml-version="1.0"?>
+
+<?xml-stylesheet type="text/xsl" href="Autoren.xsl"?>
+
+ <Personen>
+
+ <Autor ID="1"> <!-- Hier steht ein Kommentar. -->
+
+ <Vorname>Frank</Vorname>
+
+ <Nachname>Mueller</Nachname>
+
+ </Autor>
+
+ <Autor ID="2">
+
+ <Vorname>Stefan</Vorname>
+
+ <Nachname>Maier</Nachname>
+
+ </Autor>
+
+</Personen>
+
diff --git a/test-plans/test_suite.cfg b/test-plans/test_suite.cfg
new file mode 100644
index 0000000..adbf551
--- /dev/null
+++ b/test-plans/test_suite.cfg
@@ -0,0 +1,228 @@
+#
+# nagios-mode test suite.
+#
+# Copyright Michael Orlitzky
+#
+# http://michael.orlitzky.com/
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# http://www.fsf.org/licensing/licenses/gpl.html
+#
+
+Test 1: Comments should be colored correctly.
+# First comment form.
+; Second comment form.
+ ; A comment not starting at the beginning of a line.
+ # And the second form of the above.
+How about # a comment that starts after some non-comment text?
+
+
+Test 2: Directives, specials, macros, definitions, and strings
+ within comments should appear as part of the comment.
+# contacts is a directive.
+# use, name, and register are specials.
+# $USER1$ is an example of a macro.
+# and define host is one of the possible definitions.
+# Heck, let's try "strings" while we're at it.
+
+
+Test 3: The standard "define host" below should be function-name-faced.
+define host {
+}
+
+
+Test 4: The "define host" should be colored, but the braces *should not* be.
+define host{
+}
+
+
+Test 5: Multiple spaces before the brace.
+define host {
+}
+
+
+Test 6: Closing brace on the same line.
+define host {}
+
+
+Test 7: Directive coloring should work at the beginning of a line.
+contacts
+
+
+Test 8: Directive coloring should work after any number of spaces.
+ contacts
+
+
+Test 9: Directive coloring should work after a tab.
+ contacts
+
+
+Test 10: Directives should not be colored in the middle of sentences.
+Such as contacts in the middle of a sentence.
+
+
+Test 11: Directives should not be colored at the end of a line.
+For example, contacts
+
+
+Test 12: Directives should only be colored when they are stand-alone
+ words. Therefore, the following should *not* be colored.
+example-contacts
+example_contacts
+contacts-test
+contacts_test
+test-contacts-example
+test_contacts_example
+
+
+Test 13: Definitions must be stand-alone as well. The following
+ should *not* be colored.
+undefine host
+undefine host{ }
+define-host
+define_host
+-define host-
+_undefine_host_
+
+
+Test 14: Text inside of a open/close brace pair should be indented
+ by default.
+{
+ This should be indented.
+}
+
+define host {
+ As should this.
+}
+
+
+Test 15: Braces within comments should appear as part of the comment.
+# For { example }.
+; { Ditto }
+
+
+Test 16: Comments (and closing braces) that come after an curly
+ brace should all be comment-colored.
+define host { # Everything hereafter is a { comment }.
+} ; As well as here {}.
+
+
+Test 17: Macros should be constant-faced under normal circumstances.
+$USER1$
+$USER1$ $USER2$
+$ADMINEMAIL$ $ADMINPAGER$
+
+
+Test 18: Macros should appear constant-faced even when they don't
+ occur along a word boundary.
+$USER1$=something
+$ADMINPAGER$="string"
+$USER1$=$USER2$
+
+
+Test 19: Macros within strings appear as part of the string
+"I'm unsure if string $USER1$ interpolation is possible."
+
+
+Test 20: Macros can occur within a directive/special value.
+define host {
+ name $USER1$
+ contacts $ADMINPAGER$
+ friday I'm $USER1$ love.
+}
+
+
+Test 21: Directives that occur as a special value should
+ be neither special- nor directive-faced.
+define host {
+ name contacts
+ use monday
+}
+
+
+Test 22: Directives that occur as directive values should
+ not be directive-faced.
+define host {
+ monday tuesday wednesday thursday friday
+}
+
+
+Test 23: Specials that occur as special values should
+ not be special-faced.
+define host {
+ use register name
+}
+
+
+Test 24: Specials that occur as a directive value should
+ be neither special- nor directive-faced.
+define host {
+ contacts name
+ monday use
+}
+
+
+Test 25: Definitions should work when not at the beginning
+ of a line.
+ define service {}
+
+
+Test 26: Definitions that,
+
+ a) End with a curly brace followed by a newline
+ b) Have a special as the first entry
+
+ should be colored properly.
+
+define service{
+ use whatever
+}
+
+
+Test 27: Comment characters within strings should be ignored,
+ that is, treated like strings.
+"Here comes a #comment"
+"And the ;second form"
+
+
+Test 28: Strings within comments should be ignored as well.
+# The "string" should be comment-faced.
+
+
+Test 29: Text between two strings should not be string-faced.
+"String1" between "String2"
+
+Test 30: The ARG0 and USER0 macros don't exist.
+$ARG0$
+$USER0$
+
+Test 31: Commented opening braces should not cause indentation.
+# {
+This line should not be indented.
+;{
+Neither should this line.
+
+Test 32: Commented closing braces should not close a block.
+define host {
+ This is indented.
+ # This is just a comment }
+ So this should be indented too.
+}
+But not this.
+
+Test 33: Double opening/closing braces shouldn't cause things
+ to go haywire.
+define host {# {
+ #{}}}}}{}{{}}}{{;{}{}{}
+ Still normal indentation.
+}#{}}}}}}}{{{{{{{{{{{{{{{
+Here too.
diff --git a/test-plans/text.ml b/test-plans/text.ml
new file mode 100644
index 0000000..0001ae7
--- /dev/null
+++ b/test-plans/text.ml
@@ -0,0 +1,55 @@
+(***********************************************************************)
+(* *)
+(* MLTk, Tcl/Tk interface of Objective Caml *)
+(* *)
+(* Francois Rouaix, Francois Pessaux, Jun Furuse and Pierre Weis *)
+(* projet Cristal, INRIA Rocquencourt *)
+(* Jacques Garrigue, Kyoto University RIMS *)
+(* *)
+(* Copyright 2002 Institut National de Recherche en Informatique et *)
+(* en Automatique and Kyoto University. All rights reserved. *)
+(* This file is distributed under the terms of the GNU Library *)
+(* General Public License, with the special exception on linking *)
+(* described in file LICENSE found in the Objective Caml source tree. *)
+(* *)
+(***********************************************************************)
+open Tk
+
+let top = opentk ()
+
+let scroll_link sb tx =
+ Text.configure tx [YScrollCommand (Scrollbar.set sb)];
+ Scrollbar.configure sb [ScrollCommand (Text.yview tx)]
+
+let f = Frame.create top []
+let text = Text.create f []
+let scrollbar = Scrollbar.create f []
+
+let buffer = ref ""
+
+let kill () =
+ buffer :=
+ Text.get text (TextIndex (Insert, []))
+ (TextIndex (Insert, [LineEnd]));
+ Text.delete text (TextIndex (Insert, []))
+ (TextIndex (Insert, [LineEnd]))
+;;
+
+let yank () =
+ Text.insert text (TextIndex (Insert, [])) !buffer []
+
+let _ = bind text [[Control], KeyPressDetail "y"] (BindSet ([], fun _ ->
+ yank () ))
+;;
+let _ = bind text [[Control], KeyPressDetail "k"] (BindSet ([], fun _ ->
+ kill () ))
+;;
+
+let _ =
+ scroll_link scrollbar text;
+
+ pack [text;f][];
+ pack [f][];
+ mainLoop ()
+;;
+
diff --git a/test-plans/use_flag.h b/test-plans/use_flag.h
new file mode 100644
index 0000000..4b496b3
--- /dev/null
+++ b/test-plans/use_flag.h
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2006 Matthias Langer <mlangc@gmx.at>
+ *
+ * This file is part of Gatt - a Gentoo tool for arch testers.
+ *
+ * Gatt is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef H_GATT_USE_FLAG
+#define H_GATT_USE_FLAG
+#include "src/package.h"
+#include <boost/logic/tribool.hpp>
+namespace Gatt {
+
+/** This class represents an USE flag.
+ * @note
+ * This class should only be used when it makes sense to activate/deactivate the flag, or
+ * more detailed information about the USE flag is needed. Otherwise, a plain std::string
+ * may be better suited.*/
+class UseFlag : boost::equality_comparable<UseFlag>
+{
+ public:
+ /** Constructs a new UseFlag.
+ * @param[in] name
+ * the name of the USE flag.
+ * @param[in] active
+ * wether the flag should be activated or deactivated.
+ * @throw Gatt::InvalidUseFlag
+ * if the USE flag does not exist.*/
+ UseFlag(const std::string& name, bool active);
+
+ /** Constructs a UseFlag from a string like "-gtk".
+ * @throw Gatt::InvalidUseFlag
+ * if the USE flag doesn't exist.*/
+ explicit UseFlag(const std::string& str);
+
+ /** Returns the name of the USE flag like "gtk".*/
+ const std::string& getName() const { return _name; }
+
+ /** Converts the object to a string, like "-gtk".*/
+ const std::string toString() const
+ { return _active ? _name : ("-" + _name); }
+
+ /** Activates/deactivates the USE flag.*/
+ void activate(bool setting) { _active = setting; }
+
+ /** Returns true if an only if the USE flag is active.*/
+ bool isActive() const { return _active; }
+
+ /** Returns true for global USE flags, false otherwise.*/
+ bool isGlobal() const { return _global; }
+
+ /** Returns true if and only if this USE flag is masked.
+ * @attention
+ * USE flags may be masked on a per package basis. When in doubt, use
+ * UseFlag::isMaskedFor(const Package&) const.*/
+ bool isMasked() const
+ { return parseUseMaskForce(_useMaskList); }
+
+ /** Returns true if and only of this USE flag is masked for a given package.*/
+ bool isMaskedFor(const Package& package) const
+ { return parseUseMaskForce(_useMaskList, package); }
+
+ /** Returns true if this USE flag is forces.
+ * @attention
+ * USE flags may be forced on a per package basis. When in doubt, use
+ * UseFlag::isForcedFor(const Package&) const.*/
+ bool isForced() const
+ {
+ if(isMasked())
+ return false;
+ return parseUseMaskForce(_useForceList);
+ }
+
+ /** Returns true if and only if this USE flag is forced for a given package.*/
+ bool isForcedFor(const Package& package) const
+ {
+ if(isMaskedFor(package))
+ return false;
+ return parseUseMaskForce(_useForceList, package);
+ }
+
+ /** Returns a description for the USE flag.*/
+ const std::string& getDescription() const { return _desc; }
+
+ /** Returns true if and only if this flag is in IUSE for the given package.*/
+ bool isValidFor(const Package& package) const;
+
+ /** Returns true if and only if this flag is a USE_EXPAND type USE flag.
+ * @see http://devmanual.gentoo.org/general-concepts/use-flags/index.html#local-and-global-use-flags*/
+ bool isFromUseExpand() const { return _useExpand; }
+
+ /** Returns true if and only if this and other refer to the same flag.
+ * @attention
+ * This method behaves differently from operator==(const UseFlag&) as
+ * it does only compares the names of the flags, but not their state.*/
+ bool sameFlag(const UseFlag& other) const
+ { return _name == other._name; }
+
+ /** Compares to UseFlag objects for equality.*/
+ bool operator==(const UseFlag& other) const
+ {
+ return
+ (_name == other._name) &&
+ (_active == other._active);
+ }
+
+ private:
+ struct UseMaskForce
+ {
+ UseMaskForce() : plain(boost::logic::indeterminate) {}
+
+ //represents the relevant information from use.(mask|force).
+ boost::logic::tribool plain;
+
+ //represents the relevant information from package.use.(mask|force)
+ // dep atom state
+ // | |
+ std::list<std::pair<std::string, bool> > perPackage;
+
+ bool relevant() const
+ { return (!boost::logic::indeterminate(plain)) || (!perPackage.empty()); }
+ };
+
+
+ static bool hasExpectedFormat(const std::string& name);
+ static std::string grabUseDescGlobal(const std::string& name);
+ static std::string grabUseDescLocal(const std::string& name);
+ static bool grabUseDescFromFile(const std::string& name, const std::string& filename, std::string& desc);
+
+ /*!@attention
+ * This method throws if no description can be found and useExpand should be upper case.*/
+ static std::string grabUseDescForUseExpand(const std::string& useExpand, const std::string& name);
+
+ void initFromName();
+ void initUseLists();
+
+ //it is perfectly ok to pass a filename for a file that does not exist; in this case the
+ //method will return boost::logic::indeterminate
+ boost::logic::tribool stateFromUseMaskOrForceFile(const std::string& filename) const;
+
+ //it is ok to pass a filename that doesn't reference an exsiting file
+ void relevantLinesFromPackageUseMaskOrForceFile(
+ const std::string& filename,
+ std::list<std::pair<std::string, bool> >& perPackage) const;
+
+ static std::string fullFlagName(const std::string& useExpandVar, const std::string& name);
+ static std::string extractUseExpandFromFlagName(const std::string& flagName);
+
+ static bool parseUseMaskForce(const std::list<UseMaskForce>& useMaskForceList);
+ static bool parseUseMaskForce(const std::list<UseMaskForce>& useMaskForceList, const Package& package);
+
+ std::string _name;
+ bool _active;
+ std::string _desc;
+ bool _global;
+ bool _useExpand;
+
+ std::list<UseMaskForce> _useMaskList;
+ std::list<UseMaskForce> _useForceList;
+};
+}//namespace
+#endif