diff options
author | Antti-Juhani Kaijanaho <ajk@debian.org> | 2006-01-28 21:39:32 +0100 |
---|---|---|
committer | Antti-Juhani Kaijanaho <ajk@debian.org> | 2006-01-28 21:39:32 +0100 |
commit | d76fd6cc7053df6d3727b813c4f16db34b79616c (patch) | |
tree | 9ee652551942d92a1965ef76c832eefbb5e74ad1 | |
parent | 5e27f2bf391714de0cb0b3a629ef72ee6fbc90cf (diff) | |
download | dctrl-tools-d76fd6cc7053df6d3727b813c4f16db34b79616c.tar.gz |
Import 2.1.1
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | debian/changelog | 13 | ||||
-rw-r--r-- | grep-dctrl.c | 15 | ||||
-rw-r--r-- | langs.mk | 2 | ||||
-rw-r--r-- | po/README.Translators | 2 | ||||
-rw-r--r-- | po/ca.po | 83 | ||||
-rw-r--r-- | po/de.po | 264 | ||||
-rw-r--r-- | po/fi.po | 40 | ||||
-rw-r--r-- | predicate.c | 21 | ||||
-rw-r--r-- | predicate.h | 2 |
10 files changed, 399 insertions, 45 deletions
@@ -55,7 +55,7 @@ po/grep-dctrl.pot : $(src) fsaf.test : fsaf.test.o msg.o clean : - $(RM) core grep-dctrl grep-dctrl.1 *.o po/*.mo TAGS + $(RM) core grep-dctrl grep-dctrl.1 *.o po/*.mo po/*.pot TAGS tags : etags *.[hc] diff --git a/debian/changelog b/debian/changelog index 9d5ca6d..5ab69e7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +grep-dctrl (2.1.1) unstable; urgency=low + + * New German translation by Gerfried Fuchs. + * grep-dctrl.c: Fix help message inconsistent punctuation and other + minor message errors + Closes: #229821 (some minor nitpicks with the po files) + * Makefile (clean): Remove also *.pot + * predicate.[ch], grep-dctrl.c: Check for malformed predicates. + This is a kluge, but gets rid of certain assertion failures. + * Update Catalan translation by Jordi Mallach. + + -- Antti-Juhani Kaijanaho <ajk@debian.org> Sat, 7 Feb 2004 10:29:44 +0200 + grep-dctrl (2.1.0) unstable; urgency=low * Creating a 2.1 maintenance branch - patchlevel added to version number. diff --git a/grep-dctrl.c b/grep-dctrl.c index 3fbeffe..1048d89 100644 --- a/grep-dctrl.c +++ b/grep-dctrl.c @@ -122,8 +122,8 @@ static struct argp_option options[] = { { "banner", 'B', 0, 0, N_("Show the testing banner.") }, #endif { "errorlevel", 'l', N_("LEVEL"), 0, N_("Set debugging level to LEVEL.") }, - { "field", 'F', N_("FIELD,FIELD,..."), 0, N_("Restrict pattern matching to the FIELDs given.") }, - { 0, 'P', 0, 0, N_("Shorthand for -FPackage") }, + { "field", 'F', N_("FIELD,FIELD,..."), 0, N_("Restrict pattern matching to the FIELDs given.") }, + { 0, 'P', 0, 0, N_("This is a shorthand for -FPackage.") }, { "show-field", 's', N_("FIELD,FIELD,..."), 0, N_("Show only the body of these fields from the matching paragraphs.") }, { 0, 'd', 0, 0, N_("Show only the first line of the \"Description\" field from the matching paragraphs.") }, { "no-field-names", 'n', 0, 0, N_("Suppress field names when showing specified fields.") }, @@ -139,8 +139,8 @@ static struct argp_option options[] = { { "or", 'o', 0, 0, N_("Disjunct predicates.") }, { "not", '!', 0, 0, N_("Negate the following predicate.") }, { "debug-optparse", OPT_OPTPARSE, 0, 0, N_("Debug option parsing.") }, - { "quiet", 'q', 0, 0, N_("No output to stdout") }, - { "silent", OPT_SILENT, 0, 0, N_("No output to stdout") }, + { "quiet", 'q', 0, 0, N_("Do no output to stdout.") }, + { "silent", OPT_SILENT, 0, 0, N_("Do no output to stdout.") }, { 0 } }; @@ -236,7 +236,7 @@ static void finish_atom(struct arguments * args) { struct atom * atom = get_current_atom(&args->p); if (atom->pat == 0) { - message(L_FATAL, _("A pattern is mandatory."), 0); + message(L_FATAL, _("A pattern is mandatory"), 0); fail(); } for (size_t i = 0; i < args->num_search_fields; i++) { @@ -600,6 +600,11 @@ int main (int argc, char * argv[]) fail(); } + if (!check_predicate(&args.p)) { + message(L_FATAL, _("malformed predicate"), 0); + fail(); + } + if (args.short_descr && !args.description_selected) { if (args.num_show_fields >= MAX_FIELDS) { message(L_FATAL, _("too many output fields"), 0); @@ -1 +1 @@ -langs = ca fi +langs = ca fi de diff --git a/po/README.Translators b/po/README.Translators index 1fea312..9bb1ea7 100644 --- a/po/README.Translators +++ b/po/README.Translators @@ -36,6 +36,6 @@ generated file and thus does not belong under version control). You need to add your language to ../langs.mk for the makefile magic to work. -Do not touch the C sources without consulting AJK first. +Please, do not touch the C sources without consulting AJK first. @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: dctrl-tools\n" "Report-Msgid-Bugs-To: ajk@debian.org\n" -"POT-Creation-Date: 2004-01-13 00:47+0200\n" -"PO-Revision-Date: 2004-01-13 13:31+0100\n" +"POT-Creation-Date: 2004-02-09 10:18+0100\n" +"PO-Revision-Date: 2004-02-09 10:20+0100\n" "Last-Translator: Jordi Mallach <jordi@debian.org>\n" "Language-Team: Catalan <debian-l10n-catalan@lists.debian.org>\n" "MIME-Version: 1.0\n" @@ -36,12 +36,12 @@ msgid "FIELD,FIELD,..." msgstr "CAMP,CAMP,..." #: grep-dctrl.c:125 -msgid "Restrict pattern matching to the FIELDs given." +msgid "Restrict pattern matching to the FIELDs given." msgstr "Restringeix la coincidència de patrons als CAMPs donats." #: grep-dctrl.c:126 -msgid "Shorthand for -FPackage" -msgstr "Forma curta per a -FPackage" +msgid "This is a shorthand for -FPackage." +msgstr "Forma curta per a -FPackage." #: grep-dctrl.c:127 msgid "Show only the body of these fields from the matching paragraphs." @@ -113,16 +113,16 @@ msgid "Debug option parsing." msgstr "Depura l'anàlisi d'opcions." #: grep-dctrl.c:142 grep-dctrl.c:143 -msgid "No output to stdout" -msgstr "No mostra res a l'eixida estàndard" +msgid "Do no output to stdout." +msgstr "No mostra res a l'eixida estàndard." #: grep-dctrl.c:207 grep-dctrl.c:277 grep-dctrl.c:343 predicate.c:39 msgid "predicate is too complex" msgstr "el predicat és massa complex" #: grep-dctrl.c:239 -msgid "A pattern is mandatory." -msgstr "Es necessita un patró." +msgid "A pattern is mandatory" +msgstr "Es necessita un patró" #: grep-dctrl.c:298 msgid "syntax error in command line" @@ -134,7 +134,9 @@ msgstr "manca un «)» en la línia d'ordres" #: grep-dctrl.c:333 msgid "Unexpected atom in command line. Did you forget to use a connective?" -msgstr "S'ha trobat un àtom inesperat en la línia d'ordres. Heu oblidat utilitzar un connector?" +msgstr "" +"S'ha trobat un àtom inesperat en la línia d'ordres. Heu oblidat utilitzar un " +"connector?" #: grep-dctrl.c:410 msgid "no such log level" @@ -156,41 +158,45 @@ msgstr "hi ha massa noms de fitxers" msgid "a predicate is required" msgstr "es requereix un predicat" -#: grep-dctrl.c:605 +#: grep-dctrl.c:604 +msgid "malformed predicate" +msgstr "el predicat és malformat" + +#: grep-dctrl.c:610 msgid "too many output fields" msgstr "hi ha massa camps d'eixida" -#: grep-dctrl.c:609 +#: grep-dctrl.c:614 msgid "Adding \"Description\" to selected output fields because of -d" msgstr "" "S'està afegint «Description» als camps d'eixida seleccionats a causa de -d" -#: grep-dctrl.c:618 +#: grep-dctrl.c:623 msgid "cannot suppress field names when showing whole paragraphs" msgstr "no es pot suprimir els noms de camp quan es mostren paràgrafs sencers" -#: grep-dctrl.c:658 +#: grep-dctrl.c:663 #, c-format msgid "%s: %s: cannot stat: %s\n" msgstr "%s: %s: no es pot fer stat(): %s\n" -#: grep-dctrl.c:667 +#: grep-dctrl.c:672 msgid "is a directory, skipping" msgstr "és un directori, s'està ometent" -#: grep-dctrl.c:668 +#: grep-dctrl.c:673 msgid "is a block device, skipping" msgstr "és un dispositiu de bloc, s'està ometent" -#: grep-dctrl.c:669 +#: grep-dctrl.c:674 msgid "internal error" msgstr "s'ha produït un error intern" -#: grep-dctrl.c:670 +#: grep-dctrl.c:675 msgid "is a socket, skipping" msgstr "és un sòcol, s'està ometent" -#: grep-dctrl.c:671 +#: grep-dctrl.c:676 msgid "unknown file type, skipping" msgstr "el tipus de fitxer és desconegut, s'està ometent" @@ -230,5 +236,44 @@ msgstr "sí, s'utilitzarà el nom d'executable" msgid "default input file" msgstr "fitxer d'entrada per defecte" +#~ msgid "Test for numerical equality." +#~ msgstr "Comprova l'igualtat numèrica." + +#~ msgid "Numerical test: <." +#~ msgstr "Comprovació numèrica: <." + +#~ msgid "Numerical test: <=." +#~ msgstr "Comprovació numèrica: <=." + +#~ msgid "Numerical test: >." +#~ msgstr "Comprovació numèrica: >." + +#~ msgid "Numerical test: >=." +#~ msgstr "Comprovació numèrica: >=." + +#~ msgid "%s: command (%s) failed (exit status %d)\n" +#~ msgstr "%s: l'ordre (%s) ha fallat (estat d'eixida %d)\n" + +#~ msgid "%s: command (%s) was killed by signal %d\n" +#~ msgstr "%s: l'ordre (%s) ha estat terminada pel senyal %d\n" + +#~ msgid "%s (child): failed to exec /bin/sh: %s\n" +#~ msgstr "%s (fill): no s'ha pogut executar /bin/sh: %s\n" + +#~ msgid "invalid numeric pattern" +#~ msgstr "el patró numèric és invàlid" + +#~ msgid "parse of a numeric field failed" +#~ msgstr "no s'ha pogut analitzar el camp numèric" + +#~ msgid "Malformed default input file name" +#~ msgstr "El fitxer d'entrada per defecte és malformat" + +#~ msgid "not owned by you or root, ignoring" +#~ msgstr "el proprietari no sou vosaltres o el superusuari, s'omet" + +#~ msgid "write permissions for group or others, ignoring" +#~ msgstr "té permisos d'escriptura per al grup o altres, s'omet" + #~ msgid "%s: %s: %s\n" #~ msgstr "%s: %s: %s\n" diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..ee3a6eb --- /dev/null +++ b/po/de.po @@ -0,0 +1,264 @@ +# German translation of dctrl-tools +# Copyright © 2004 Gerfried Fuchs +# This file is distributed under the same license as the dctrl-tools package. +# Gerfried Fuchs <alfie@debian.org>, 2004. +# +msgid "" +msgstr "" +"Project-Id-Version: dctrl-tools\n" +"Report-Msgid-Bugs-To: ajk@debian.org\n" +"POT-Creation-Date: 2004-02-07 10:32+0200\n" +"PO-Revision-Date: 2004-02-09 09:58+0100\n" +"Last-Translator: Gerfried Fuchs <alfie@debian.org>\n" +"Language-Team: German <debian-l10n-german@lists.debian.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: grep-dctrl.c:43 +msgid "grep-dctrl -- grep Debian control files" +msgstr "grep-dctrl -- grep Debian-Control-Dateien" + +#: grep-dctrl.c:122 +msgid "Show the testing banner." +msgstr "Zeigt den Testing-Banner." + +#: grep-dctrl.c:124 +msgid "LEVEL" +msgstr "EBENE" + +#: grep-dctrl.c:124 +msgid "Set debugging level to LEVEL." +msgstr "Setzt Debugging-Ebene auf EBENE." + +#: grep-dctrl.c:125 grep-dctrl.c:127 +msgid "FIELD,FIELD,..." +msgstr "FELD,FELD,..." + +#: grep-dctrl.c:125 +msgid "Restrict pattern matching to the FIELDs given." +msgstr "Beschränkt die Musterprüfung auf die angegebenen FELDer." + +#: grep-dctrl.c:126 +msgid "This is a shorthand for -FPackage." +msgstr "Dies ist eine Kurzform für -FPackage." + +#: grep-dctrl.c:127 +msgid "Show only the body of these fields from the matching paragraphs." +msgstr "Zeigt nur den Inhalt dieser Felder aus dem passenden Abschnitt." + +#: grep-dctrl.c:128 +msgid "" +"Show only the first line of the \"Description\" field from the matching " +"paragraphs." +msgstr "" +"Zeigt nur die erste Zeile des »Description«-Feldes des passenden Abschnitts." + +#: grep-dctrl.c:129 +msgid "Suppress field names when showing specified fields." +msgstr "Unterdrückt die Feldnamen beim Anzeigen der angegebenen Felder." + +#: grep-dctrl.c:130 +msgid "Regard the pattern as an extended POSIX regular expression." +msgstr "Behandelt das Muster als erweiterten POSIX-regulären Ausdruck." + +#: grep-dctrl.c:131 +msgid "The pattern is a standard POSIX regular expression." +msgstr "Das Muster ist ein Standard-POSIX regulärer Ausdruck." + +#: grep-dctrl.c:132 +msgid "Ignore case when looking for a match." +msgstr "Ignoriert die Groß-/Kleinschreibung beim Suchen eines Treffers." + +#: grep-dctrl.c:133 +msgid "Show only paragraphs that do not match." +msgstr "Zeigt nur die Abschnitte, die nicht passen." + +#: grep-dctrl.c:134 +msgid "Show only the count of matching paragraphs." +msgstr "Zeigt nur die Anzahl der passenden Abschnitte." + +#: grep-dctrl.c:135 +msgid "FNAME" +msgstr "FNAME" + +#: grep-dctrl.c:135 +msgid "Use FNAME as the config file." +msgstr "Verwendet FNAME als Konfigurationsdatei." + +#: grep-dctrl.c:136 +msgid "Do an exact match." +msgstr "Führt eine exakte Übereinstimmung durch." + +#: grep-dctrl.c:137 +msgid "Print out the copyright license." +msgstr "Gibt die Copyright-Lizenz aus." + +#: grep-dctrl.c:138 +msgid "Conjunct predicates." +msgstr "UND-verknüpfte Eigenschaften." + +#: grep-dctrl.c:139 +msgid "Disjunct predicates." +msgstr "ODER-verknüpfte Eigenschaften." + +#: grep-dctrl.c:140 +msgid "Negate the following predicate." +msgstr "Negiert die folgende Eigenschaft." + +#: grep-dctrl.c:141 +msgid "Debug option parsing." +msgstr "Optionenverarbeitung debuggen." + +#: grep-dctrl.c:142 grep-dctrl.c:143 +msgid "Do no output to stdout." +msgstr "Keine Ausgabe auf die Standardausgabe." + +#: grep-dctrl.c:207 grep-dctrl.c:277 grep-dctrl.c:343 predicate.c:39 +msgid "predicate is too complex" +msgstr "Eigenschaft ist zu komplex" + +#: grep-dctrl.c:239 +msgid "A pattern is mandatory" +msgstr "Ein Muster wird benötigt" + +#: grep-dctrl.c:298 +msgid "syntax error in command line" +msgstr "Syntax-Fehler in der Befehlszeile" + +#: grep-dctrl.c:315 +msgid "missing ')' in command line" +msgstr "Fehlende »)« in der Befehlszeile" + +#: grep-dctrl.c:333 +msgid "Unexpected atom in command line. Did you forget to use a connective?" +msgstr "" +"Unerwartetes Atom in der Befehlszeile. Haben Sie einen Verbinder vergessen?" + +#: grep-dctrl.c:410 +msgid "no such log level" +msgstr "Keine solche Log-Ebene" + +#: grep-dctrl.c:449 grep-dctrl.c:458 +msgid "inconsistent atom modifiers" +msgstr "Inkonsistener Atom-Modifikator" + +#: grep-dctrl.c:499 +msgid "unexpected ')' in command line" +msgstr "Unerwartete »)« in der Befehlszeile" + +#: grep-dctrl.c:511 +msgid "too many file names" +msgstr "Zu viele Dateinamen" + +#: grep-dctrl.c:599 +msgid "a predicate is required" +msgstr "Eine Eigenschaft wird benötigt" + +#: grep-dctrl.c:604 +msgid "malformed predicate" +msgstr "Missgebildete Eigenschaft" + +#: grep-dctrl.c:610 +msgid "too many output fields" +msgstr "Zu viele Ausgabefelder" + +#: grep-dctrl.c:614 +msgid "Adding \"Description\" to selected output fields because of -d" +msgstr "Füge »Description« wegen -d zu den gewählten Ausgabefeldern hinzu" + +#: grep-dctrl.c:623 +msgid "cannot suppress field names when showing whole paragraphs" +msgstr "" +"Kann keine Feldnamen unterdrücken, wenn komplette Abschnitte angezeigt werden" + +#: grep-dctrl.c:663 +#, c-format +msgid "%s: %s: cannot stat: %s\n" +msgstr "%s: %s: stat kann nicht durchgeführt werden: %s\n" + +#: grep-dctrl.c:672 +msgid "is a directory, skipping" +msgstr "ist ein Verzeichnis, wird übersprungen" + +#: grep-dctrl.c:673 +msgid "is a block device, skipping" +msgstr "ist ein Block-Gerät, wird übersprungen" + +#: grep-dctrl.c:674 +msgid "internal error" +msgstr "interner Fehler" + +#: grep-dctrl.c:675 +msgid "is a socket, skipping" +msgstr "ist ein Socket, wird übersprungen" + +#: grep-dctrl.c:676 +msgid "unknown file type, skipping" +msgstr "unbekannter Dateityp, wird übersprungen" + +#: paragraph.c:73 paragraph.c:98 +msgid "unexpected end of file" +msgstr "unerwartetes Dateiende" + +#: paragraph.c:91 +msgid "unexpected end of line" +msgstr "unerwartetes Zeilenende" + +#: rc.c:75 +msgid "reading config file" +msgstr "lese Konfigurationsdatei" + +#: rc.c:96 +msgid "read failure or out of memory" +msgstr "Lesefehler oder zuwenig Speicher verfügbar" + +#: rc.c:116 +msgid "syntax error: need a executable name" +msgstr "Syntax-Fehler: Benötige einen Programmnamen" + +#: rc.c:124 +msgid "syntax error: need an input file name" +msgstr "Syntax-Fehler: Benötige einen Eingabe-Dateinamen" + +#: rc.c:129 +msgid "considering executable name" +msgstr "Programmname wird in Betracht gezogen" + +#: rc.c:131 +msgid "yes, will use executable name" +msgstr "Ja, Programmname wird verwendet" + +#: rc.c:133 +msgid "default input file" +msgstr "Default-Eingabedatei" + +#~ msgid "Test for numerical equality." +#~ msgstr "Test auf numerische Übereinstimmung." + +#~ msgid "Numerical test: <." +#~ msgstr "Numerischer Test: <." + +#~ msgid "Numerical test: <=." +#~ msgstr "Numerischer Test: <=." + +#~ msgid "Numerical test: >." +#~ msgstr "Numerischer Test: >." + +#~ msgid "Numerical test: >=." +#~ msgstr "Numerischer Test: >=." + +#~ msgid "%s: command (%s) failed (exit status %d)\n" +#~ msgstr "%s: Befehl (%s) fehlgeschlagen (Rückgabewert %d)\n" + +#~ msgid "%s: command (%s) was killed by signal %d\n" +#~ msgstr "%s: Befehl (%s) wurde von Signal %d abgebrochen\n" + +#~ msgid "%s (child): failed to exec /bin/sh: %s\n" +#~ msgstr "%s (Kindprozess): Konnte /bin/sh nicht ausführen: %s\n" + +#~ msgid "not owned by you or root, ignoring" +#~ msgstr "gehört nicht Ihnen oder root, wird ignoriert" + +#~ msgid "write permissions for group or others, ignoring" +#~ msgstr "Schreibberechtigungen für die Gruppe oder andere, wird ignoriert" @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: dctrl-tools\n" "Report-Msgid-Bugs-To: ajk@debian.org\n" -"POT-Creation-Date: 2004-01-13 00:47+0200\n" -"PO-Revision-Date: 2004-01-13 00:50+0200\n" +"POT-Creation-Date: 2004-02-07 10:27+0200\n" +"PO-Revision-Date: 2004-02-07 10:13+0200\n" "Last-Translator: Antti-Juhani Kaijanaho <ajk@debian.org>\n" "Language-Team: Finnish <debian-l10n-finnish@lists.debian.org>\n" "MIME-Version: 1.0\n" @@ -36,12 +36,12 @@ msgid "FIELD,FIELD,..." msgstr "KENTTÄ,KENTT�,..." #: grep-dctrl.c:125 -msgid "Restrict pattern matching to the FIELDs given." +msgid "Restrict pattern matching to the FIELDs given." msgstr "Rajoita haku annettuihin KENTTIIN." #: grep-dctrl.c:126 -msgid "Shorthand for -FPackage" -msgstr "Lyhyt muoto vivulle -FPackage" +msgid "This is a shorthand for -FPackage." +msgstr "Lyhyt muoto vivulle -FPackage." #: grep-dctrl.c:127 msgid "Show only the body of these fields from the matching paragraphs." @@ -111,16 +111,16 @@ msgid "Debug option parsing." msgstr "Testaa valitsimien jäsennyst�." #: grep-dctrl.c:142 grep-dctrl.c:143 -msgid "No output to stdout" -msgstr "Älä tulosta mitään vakiotulostevirtaan" +msgid "Do no output to stdout." +msgstr "Älä tulosta mitään vakiotulostevirtaan." #: grep-dctrl.c:207 grep-dctrl.c:277 grep-dctrl.c:343 predicate.c:39 msgid "predicate is too complex" msgstr "predikaatti on liian monimutkainen" #: grep-dctrl.c:239 -msgid "A pattern is mandatory." -msgstr "Hakuehto on välttämätön." +msgid "A pattern is mandatory" +msgstr "Hakuehto on välttämätön" #: grep-dctrl.c:298 msgid "syntax error in command line" @@ -154,41 +154,45 @@ msgstr "liikaa tiedostonimiä" msgid "a predicate is required" msgstr "predikaatti on välttämätön" -#: grep-dctrl.c:605 +#: grep-dctrl.c:604 +msgid "malformed predicate" +msgstr "" + +#: grep-dctrl.c:610 msgid "too many output fields" msgstr "liikaa tulostettavia kenttiä" -#: grep-dctrl.c:609 +#: grep-dctrl.c:614 msgid "Adding \"Description\" to selected output fields because of -d" msgstr "Merkitsen \"Description\"-kentän tulostettavaksi -d-valitsimen takia" -#: grep-dctrl.c:618 +#: grep-dctrl.c:623 msgid "cannot suppress field names when showing whole paragraphs" msgstr "" "en voi jättää näyttämättä kenttien nimiä, kun näytän kokonaisia tietueita" -#: grep-dctrl.c:658 +#: grep-dctrl.c:663 #, c-format msgid "%s: %s: cannot stat: %s\n" msgstr "%s: %s: stat-kutsu epäonnistui: %s\n" -#: grep-dctrl.c:667 +#: grep-dctrl.c:672 msgid "is a directory, skipping" msgstr "on hakemisto, jätän huomiotta" -#: grep-dctrl.c:668 +#: grep-dctrl.c:673 msgid "is a block device, skipping" msgstr "on lohkolaite, jätän huomiotta" -#: grep-dctrl.c:669 +#: grep-dctrl.c:674 msgid "internal error" msgstr "ohjelman oma virhe" -#: grep-dctrl.c:670 +#: grep-dctrl.c:675 msgid "is a socket, skipping" msgstr "on pistoke, jätän huomiotta" -#: grep-dctrl.c:671 +#: grep-dctrl.c:676 msgid "unknown file type, skipping" msgstr "tuntematon tiedostotyyppi, jätän huomiotta" diff --git a/predicate.c b/predicate.c index 006ac42..6ac2d10 100644 --- a/predicate.c +++ b/predicate.c @@ -129,6 +129,27 @@ static bool verify_atom(struct atom * atom, para_t * para) assert(0); } +bool check_predicate(struct predicate * p) +{ + size_t sp = 0; + /* Run the program. */ + for (size_t i = 0; i < p->proglen; i++) { + switch (p->program[i]) { + case I_NOP: break; + case I_NEG: + if (sp == 0) return false; + break; + case I_AND: case I_OR: + if (sp < 2) return false; + --sp; + break; + default: + ++sp; + } + } + return true; +} + bool does_para_satisfy(struct predicate * p, para_t * para) { assert(para->trie == & p->trie); diff --git a/predicate.h b/predicate.h index 24f154a..79dd447 100644 --- a/predicate.h +++ b/predicate.h @@ -85,4 +85,6 @@ void addinsn(struct predicate * p, int insn); bool does_para_satisfy(struct predicate * p, para_t *); +bool check_predicate(struct predicate * p); + #endif /* PREDICATE_H */ |