summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntti-Juhani Kaijanaho <ajk@debian.org>2006-01-28 21:48:13 +0100
committerAntti-Juhani Kaijanaho <ajk@debian.org>2006-01-28 21:48:13 +0100
commit16747fcf09555f47c9d6d49e3379f1bdc2e85e7c (patch)
treef84621f79e982219ba91f26da2ae7790a912cc37
parent51f1cad5c1604a78d74a5da904329d1919997027 (diff)
downloaddctrl-tools-16747fcf09555f47c9d6d49e3379f1bdc2e85e7c.tar.gz
Import 2.1.5
-rw-r--r--Makefile2
-rw-r--r--debian/changelog20
-rw-r--r--getaline.c2
-rw-r--r--grep-dctrl.c303
-rw-r--r--langs.mk2
-rw-r--r--msg.c9
-rw-r--r--msg.h39
-rw-r--r--po/ca.po109
-rw-r--r--po/de.po108
-rw-r--r--po/fi.po102
-rw-r--r--po/fr.po307
11 files changed, 773 insertions, 230 deletions
diff --git a/Makefile b/Makefile
index 36549b5..6d75869 100644
--- a/Makefile
+++ b/Makefile
@@ -4,7 +4,7 @@ localedir = /usr/share/locale
CC = gcc -std=gnu99
CFLAGS = -O2 -g -Wall -DENABLE_L_DEBUG -D_GNU_SOURCE -DSYSCONF=\"$(sysconfdir)\" \
- -DHAVE_GETTEXT -DPACKAGE=\"grep-dctrl\" -DLOCALEDIR=\"$(localedir)\"
+ -DHAVE_GETTEXT -DPACKAGE=\"grep-dctrl\" -DLOCALEDIR=\"$(localedir)\"
CFLAGS += -DVERSION=\"$(shell dpkg-parsechangelog | grep '^Version' | cut -b10-)\"
CFLAGS += -DMAINTAINER='"$(shell grep ^Maintainer: debian/control | cut -b13-)"'
diff --git a/debian/changelog b/debian/changelog
index d11d786..a448205 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,23 @@
+grep-dctrl (2.1.5) unstable; urgency=low
+
+ * msg.[ch]: Rearranging.
+ * msg.h (msg_get_progname): New function.
+ * grep-dctrl.c: Rewrite the parser so that argp only
+ produces a list of tokens for a new recursive-descent
+ predicate parser.
+ Closes: #227543 (Predicate parser is fragile) [Reported by AJK]
+ * French translation by Nicolas Bertolissio, proofread by
+ Michel Grentzinger, Claude Thomassin and Denis Barbier
+ * po/fi.po: Updated.
+ * getaline.c (getaline): Ensure that there is a null terminator in an
+ empty return value.
+ * grep-dctrl.c (main): Warn about the use of standard input when the
+ command name was not found.
+ Closes: #236196 (please tell the user when falling back to reading stdin)
+ [Reported by Danilo Piazzalunga]
+
+ -- Antti-Juhani Kaijanaho <ajk@debian.org> Sun, 4 Jul 2004 15:12:04 +0300
+
grep-dctrl (2.1.4) unstable; urgency=low
* predicate.c (verify_atom): Check that the stack contains exactly
diff --git a/getaline.c b/getaline.c
index 4d75087..8b6ce24 100644
--- a/getaline.c
+++ b/getaline.c
@@ -66,6 +66,8 @@ char * getaline (FILE * f)
buf = malloc (size);
if (buf == NULL) return NULL;
+ buf[0] = '\0';
+
while (fgets (buf + len, size - len, f) != NULL) {
len += strlen(buf + len);
if (len > 0 && buf[len - 1] == '\n')
diff --git a/grep-dctrl.c b/grep-dctrl.c
index b833f97..c324cc1 100644
--- a/grep-dctrl.c
+++ b/grep-dctrl.c
@@ -145,16 +145,22 @@ static struct argp_option options[] = {
};
-enum state { STATE_ATOM, STATE_NEG, STATE_CONJ, STATE_DISJ,
- STATE_PAREN, STATE_START, STATE_FINISHED };
+// Tokens
+#define TOK_EOD 0
+#define TOK_NOT 1
+#define TOK_AND 2
+#define TOK_OR 3
+#define TOK_LP 4 /* left paren */
+#define TOK_RP 5 /* right paren */
+#define TOK_ATOM_BASE 6 /* All tokens >= TOK_ATOM_BASE are atoms; the
+ difference is the atom index. */
#define MAX_FNAMES 4096
+#define MAX_TOKS 16384
static int debug_optparse = 0;
struct arguments {
- /* Parser state, used when parsing the predicate. */
- enum state state;
/* Parser state flag: last token seen was ')' */
bool just_seen_cparen;
/* Top of the parser stack. */
@@ -181,15 +187,23 @@ struct arguments {
bool count;
/* Invert match? */
bool invert_match;
- /* Parser stack. */
- struct stack_elem {
- enum state state;
- /* A linked list of instructions. */
- struct insn_node {
- int insn;
- struct insn_node * next;
- } * insns_first, * insns_last;
- } stack[MAX_OPS];
+ /* Token stream for the predicate parser. */
+ int toks[MAX_TOKS];
+ /* First unused position in toks. */
+ size_t toks_np;
+ /* Token read position. */
+ size_t toks_pos;
+ /* Finished with the predicate scanning? */
+ bool finished;
+ /* Are we inside an atom? */
+ bool in_atom;
+ /* Pattern error? */
+ bool pattern_error;
+ /* For each atom, give code with which it can be accessed. */
+ struct atom_code {
+ size_t n;
+ int * routine;
+ } atom_code[MAX_ATOMS];
/* File names seen on the command line. */
char const * fname[MAX_FNAMES];
/**/
@@ -207,8 +221,9 @@ struct atom * clone_atom(struct arguments * args)
message(L_FATAL, _("predicate is too complex"), 0);
fail();
}
+ int oa = args->p.num_atoms-1;
struct atom * atom = get_current_atom(&args->p);
- int push_insn = I_PUSH(args->p.num_atoms);
+ int na = args->p.num_atoms;
struct atom * rv = &args->p.atoms[args->p.num_atoms++];
rv->field_name = atom->field_name;
rv->field_inx = atom->field_inx;
@@ -216,28 +231,29 @@ struct atom * clone_atom(struct arguments * args)
rv->ignore_case = atom->ignore_case;
rv->pat = atom->pat;
rv->patlen = atom->patlen;
- assert(args->top > 0);
- struct stack_elem * selem = &args->stack[args->top-1];
- assert(selem->insns_first != 0);
- assert(selem->insns_last != 0);
- struct insn_node * node1 = malloc(sizeof *node1);
- struct insn_node * node2 = malloc(sizeof *node2);
- if (node1 == 0 || node2 == 0) fatal_enomem(0);
- node1->insn = push_insn;
- node2->insn = I_OR;
- node1->next = node2;
- node2->next = 0;
- selem->insns_last->next = node1;
- selem->insns_last = node2;
+ struct atom_code * oac = &args->atom_code[oa];
+ struct atom_code * nac = &args->atom_code[na];
+ assert(nac->n == 0);
+ assert(oac->n > 0);
+ nac->n = oac->n+2;
+ nac->routine = malloc(nac->n);
+ if (nac->routine == 0) fatal_enomem(0);
+ for (size_t i = 0; i < oac->n; i++) {
+ nac->routine[i] = oac->routine[i];
+ }
+ nac->routine[oac->n+0] = I_PUSH(na);
+ nac->routine[oac->n+1] = I_OR;
return rv;
}
static void finish_atom(struct arguments * args)
{
+ assert(args->in_atom);
+ args->in_atom = false;
struct atom * atom = get_current_atom(&args->p);
if (atom->pat == 0) {
- message(L_FATAL, _("A pattern is mandatory"), 0);
- fail();
+ args->pattern_error = true;
+ return;
}
for (size_t i = 0; i < args->num_search_fields; i++) {
if (i > 0) atom = clone_atom(args);
@@ -250,6 +266,7 @@ static void finish_atom(struct arguments * args)
args->num_search_fields = 0;
}
+#if 0
/* Pop off one stack state, inserting the associated instructions to
* the predicate program. If paren is true, current state must be
* STATE_PAREN, and if paren is false, it must not be STATE_PAREN. */
@@ -271,41 +288,21 @@ static void leave(struct arguments * args, int paren)
args->stack[args->top].insns_last = 0;
args->state = args->stack[args->top].state;
}
+#endif
-#define ENTER(state,insn) do { enter(args, (state), (insn)); } while (0)
+#define APPTOK(tok) do { apptok(args, (tok)); } while (0)
-static void prim_enter(struct arguments * args, const enum state state, const int insn)
+static void apptok(struct arguments * args, const int tok)
{
- if (args->top >= MAX_OPS) {
- message(L_FATAL, _("predicate is too complex"), 0);
- fail();
+ debug_message("apptok", 0);
+ if (args->in_atom && tok < TOK_ATOM_BASE) {
+ finish_atom(args);
}
-// args->stack[args->top].insn = insn;
- struct insn_node * node = malloc(sizeof *node);
- if (node == 0) fatal_enomem(0);
- node->insn = insn;
- node->next = 0;
- args->stack[args->top].insns_first = node;
- args->stack[args->top].insns_last = node;
- args->stack[args->top].state = args->state;
- ++args->top;
- args->state = state;
-}
-
-/* Push current state along with the given instruction to stack and
- * enter the given state.
- */
-static void enter(struct arguments * args, const enum state state, const int insn)
-{
- if (args->state == STATE_FINISHED) {
- message(L_FATAL, _("syntax error in command line"), 0);
+ if (args->toks_np >= MAX_TOKS) {
+ message(L_FATAL, _("predicate is too long"), 0);
fail();
}
- while (args->state < state || (state != STATE_NEG && args->state == state)) {
- leave(args, 0);
- }
- prim_enter(args, state, insn);
- debug_message("entering...", 0);
+ args->toks[args->toks_np++] = tok;
}
#define FINISH do { finish(args); } while (0)
@@ -313,40 +310,39 @@ static void enter(struct arguments * args, const enum state state, const int ins
/* Flush the state stack. */
static void finish(struct arguments * args)
{
- while (args->top > 0) {
- if (args->state == STATE_PAREN) {
- message(L_FATAL, _("missing ')' in command line"), 0);
- fail();
- }
- leave(args, 0);
- }
- assert(args->state == STATE_START);
- args->state = STATE_FINISHED;
+ assert(!args->finished);
+ if (args->in_atom) finish_atom(args);
+ args->finished = true;
}
-#define ENTER_ATOM (enter_atom((args),(just_seen_cparen)))
+#define ENTER_ATOM (enter_atom((args)))
-/* If necessary, enter STATE_ATOM and allocate a new atom, pushing
+/* FIXME: UPDATE COMMENT
+If necessary, enter STATE_ATOM and allocate a new atom, pushing
* along with the old state a PUSH instruction for the new atom to the
* parser stack. If we are already in STATE_ATOM, reuse the current
* atom. */
-static struct atom * enter_atom(struct arguments * args, bool just_seen_cparen)
+static struct atom * enter_atom(struct arguments * args)
{
- if (just_seen_cparen) {
- message(L_FATAL, _("Unexpected atom in command line. "
- "Did you forget to use a connective?"), 0);
- fail();
- }
struct atom * rv;
- if (args->state == STATE_ATOM || args->state == STATE_FINISHED) {
+ if (args->in_atom) {
assert(args->p.num_atoms > 0);
return &args->p.atoms[args->p.num_atoms-1];
}
+ args->in_atom = true;
if (args->p.num_atoms >= MAX_ATOMS) {
message(L_FATAL, _("predicate is too complex"), 0);
fail();
}
- ENTER(STATE_ATOM, I_PUSH(args->p.num_atoms));
+ APPTOK(args->p.num_atoms + TOK_ATOM_BASE);
+ assert(args->atom_code[args->p.num_atoms].n == 0);
+ args->atom_code[args->p.num_atoms].n = 1;
+ args->atom_code[args->p.num_atoms].routine = malloc(1);
+ if (args->atom_code[args->p.num_atoms].routine == 0) {
+ fatal_enomem(0);
+ }
+ args->atom_code[args->p.num_atoms].routine[0]
+ = I_PUSH(args->p.num_atoms);
rv = &args->p.atoms[args->p.num_atoms++];
rv->field_name = 0;
rv->field_inx = -1;
@@ -364,6 +360,13 @@ static error_t parse_opt (int key, char * arg, struct argp_state * state)
args->just_seen_cparen = false;
struct atom * atom;
debug_message("parse_opt", 0);
+#ifdef INCLUDE_DEBUG_MSGS
+ if (do_msg(L_DEBUG)) {
+ fprintf(stderr, "%s: in_atom = %s\n",
+ msg_get_progname(),
+ args->in_atom ? "true" : "false");
+ }
+#endif
switch (key) {
case 'C':
if (!to_stdout (COPYING)) fail();
@@ -419,21 +422,22 @@ static error_t parse_opt (int key, char * arg, struct argp_state * state)
break;
case '!':
debug_message("parse_opt: !", 0);
- ENTER(STATE_NEG, I_NEG);
+ APPTOK(TOK_NOT);
break;
case 'a':
debug_message("parse_opt: a", 0);
- ENTER(STATE_CONJ, I_AND);
+ APPTOK(TOK_AND);
break;
case 'o':
debug_message("parse_opt: o", 0);
- ENTER(STATE_DISJ, I_OR);
+ APPTOK(I_OR);
break;
case 'P':
debug_message("parse_opt: P", 0);
arg = "Package";
/* pass through */
case 'F': {
+ debug_message("parse_opt: Fv", 0);
atom = ENTER_ATOM;
char * carg = strdup(arg);
if (carg == 0) fatal_enomem(0);
@@ -487,28 +491,21 @@ static error_t parse_opt (int key, char * arg, struct argp_state * state)
debug_message("!!!", 0);
if (strcmp(arg, "!") == 0) {
debug_message("parse_opt: !", 0);
- ENTER(STATE_NEG, I_NEG);
+ APPTOK(TOK_NOT);
break;
}
if (strcmp(arg, "(") == 0) {
debug_message("parse_opt: (", 0);
- prim_enter(args, STATE_PAREN, I_NOP);
+ APPTOK(TOK_LP);
break;
}
if (strcmp(arg, ")") == 0) {
debug_message("parse_opt: )", 0);
- while (args->state != STATE_PAREN) {
- if (args->top == 0) {
- message(L_FATAL, _("unexpected ')' in command line"), 0);
- fail();
- }
- leave(args, 0);
- }
- leave(args, 1);
args->just_seen_cparen = true;
+ APPTOK(TOK_RP);
break;
}
- if (args->state == STATE_FINISHED) {
+ if (args->finished) {
char const * s;
if (args->num_fnames >= MAX_FNAMES) {
message(L_FATAL, _("too many file names"), 0);
@@ -519,7 +516,8 @@ static error_t parse_opt (int key, char * arg, struct argp_state * state)
args->fname[args->num_fnames++] = s;
break;
}
- if (just_seen_cparen || strcmp(arg, "--") == 0) { FINISH; break; }
+ if (just_seen_cparen) { FINISH; goto redo; }
+ if (strcmp(arg, "--") == 0) { FINISH; break; }
atom = ENTER_ATOM;
if (atom->pat != 0) { FINISH; goto redo; }
atom->patlen = strlen(arg);
@@ -529,7 +527,7 @@ static error_t parse_opt (int key, char * arg, struct argp_state * state)
break;
case ARGP_KEY_END:
debug_message("parse_opt: end", 0);
- if (args->state != STATE_FINISHED) FINISH;
+ if (!args->finished) FINISH;
break;
case ARGP_KEY_ARGS: case ARGP_KEY_INIT: case ARGP_KEY_SUCCESS:
case ARGP_KEY_ERROR: case ARGP_KEY_FINI: case ARGP_KEY_NO_ARGS:
@@ -548,7 +546,7 @@ static error_t parse_opt (int key, char * arg, struct argp_state * state)
static void dump_args(struct arguments * args)
{
size_t i;
- assert(args->state == STATE_FINISHED);
+ assert(args->finished);
assert(args->top == 0);
printf("num_atoms = %zi\n", args->p.num_atoms);
for (i = 0; i < args->p.num_atoms; i++) {
@@ -576,6 +574,109 @@ static void dump_args(struct arguments * args)
}
}
+static
+int peek_token(struct arguments const * args)
+{
+ assert(args->toks_pos <= args->toks_np);
+ if (args->toks_pos == args->toks_np) return TOK_EOD;
+ return args->toks[args->toks_pos];
+}
+
+static
+int get_token(struct arguments * args)
+{
+ assert(args->toks_pos <= args->toks_np);
+ if (args->toks_pos == args->toks_np) return TOK_EOD;
+ return args->toks[args->toks_pos++];
+}
+
+static void unexpected(int tok)
+{
+ switch (tok) {
+ case TOK_EOD:
+ message(L_FATAL, _("unexpected end of predicate"), 0);
+ fail();
+ case TOK_NOT:
+ message(L_FATAL, _("unexpected '!' in command line"), 0);
+ fail();
+ case TOK_AND:
+ message(L_FATAL, _("unexpected '-a' in command line"), 0);
+ fail();
+ case TOK_OR :
+ message(L_FATAL, _("unexpected '-o' in command line"), 0);
+ fail();
+ case TOK_LP :
+ message(L_FATAL, _("unexpected '(' in command line"), 0);
+ fail();
+ case TOK_RP :
+ message(L_FATAL, _("unexpected ')' in command line"), 0);
+ fail();
+ default:
+ assert(tok >=TOK_ATOM_BASE);
+ message(L_FATAL, _("unexpected atom in command line"), 0);
+ fail();
+ }
+}
+
+static void parse_conj(struct arguments * args);
+
+static void parse_prim(struct arguments * args)
+{
+ if (peek_token(args) == TOK_LP) {
+ get_token(args);
+ parse_conj(args);
+ if (get_token(args) != TOK_RP) {
+ message(L_FATAL, _("missing ')' in command line"), 0);
+ fail();
+ }
+ return;
+ }
+ if (peek_token(args) < TOK_ATOM_BASE) unexpected(peek_token(args));
+ int atom = get_token(args) - TOK_ATOM_BASE;
+ assert(atom >= 0);
+ assert(atom < MAX_ATOMS);
+ addinsn(&args->p, I_PUSH(atom));
+}
+
+static void parse_neg(struct arguments * args)
+{
+ bool neg = false;
+ if (peek_token(args) == TOK_NOT) {
+ neg = true;
+ get_token(args);
+ }
+ parse_prim(args);
+ if (neg) addinsn(&args->p, I_NEG);
+}
+
+static void parse_disj(struct arguments * args)
+{
+ parse_neg(args);
+ while (peek_token(args) == TOK_OR) {
+ get_token(args);
+ parse_neg(args);
+ addinsn(&args->p, I_OR);
+ }
+}
+
+static void parse_conj(struct arguments * args)
+{
+ parse_disj(args);
+ while (peek_token(args) == TOK_AND) {
+ get_token(args);
+ parse_disj(args);
+ addinsn(&args->p, I_AND);
+ }
+}
+
+static void parse_predicate(struct arguments * args)
+{
+ args->toks_pos = 0;
+ parse_conj(args);
+ int tok = peek_token(args);
+ if (tok != TOK_EOD) unexpected(tok);
+}
+
static struct argp argp = { options, parse_opt, 0, progdoc };
int main (int argc, char * argv[])
@@ -586,7 +687,6 @@ int main (int argc, char * argv[])
static struct arguments args;
- args.state = STATE_START;
args.show_field_name = true;
msg_set_progname(argv[0]);
init_predicate(&args.p);
@@ -595,6 +695,11 @@ int main (int argc, char * argv[])
#ifdef BANNER
banner(true);
#endif
+ parse_predicate(&args);
+ if (args.pattern_error) {
+ message(L_FATAL, _("A pattern is mandatory"), 0);
+ fail();
+ }
if (debug_optparse) { dump_args(&args); return 0; }
@@ -641,7 +746,13 @@ int main (int argc, char * argv[])
fname = "-";
} else {
fname = find_ifile_by_exename(argv0, args.rcname);
- if (fname == 0) fname = "-";
+ if (fname == 0) {
+ message(L_IMPORTANT,
+ _("warning: this command name "
+ "is not configured; using "
+ "standard input"), 0);
+ fname = "-";
+ }
}
} else {
fname = args.fname[i];
diff --git a/langs.mk b/langs.mk
index 27d01b0..3461877 100644
--- a/langs.mk
+++ b/langs.mk
@@ -1 +1 @@
-langs = ca fi de
+langs = ca fi fr de
diff --git a/msg.c b/msg.c
index 42d47e8..7303e4d 100644
--- a/msg.c
+++ b/msg.c
@@ -34,12 +34,17 @@
#include <stdbool.h>
-bool errors = false;
-
#include <assert.h>
#include <string.h>
#include "msg.h"
+#define PROGNAME_MAXLEN 64
+
+bool errors = false;
+
+int loglevel = L_IMPORTANT;
+char progname [PROGNAME_MAXLEN];
+
struct str2int_avec_t {
const char * str;
int integer;
diff --git a/msg.h b/msg.h
index c33d5d6..1fe7b77 100644
--- a/msg.h
+++ b/msg.h
@@ -35,23 +35,29 @@ void fail(void) { exit(2); }
#define L_INFORMATIONAL 1
#define L_DEBUG 0
-#define PROGNAME_MAXLEN 64
-
#if !defined(NDEBUG) && !defined(TEST_NODEBUG) && defined(ENABLE_L_DEBUG)
# define INCLUDE_DEBUG_MSGS
#endif
-#ifdef MSG_C__
-int loglevel = L_IMPORTANT;
-char progname [PROGNAME_MAXLEN];
-#endif
+/* Get program name. */
+static inline
+char const * msg_get_progname (void)
+{
+ extern const char progname[];
+ return progname;
+}
+
+static inline
+void record_error(void)
+{
+ extern bool errors;
+ errors = 1;
+}
inline static int
do_msg(int severity)
{
-#ifndef MSG_C__
extern int loglevel;
-#endif
#if defined(TEST_NODEBUG)
if (severity == L_DEBUG) {
@@ -66,10 +72,7 @@ do_msg(int severity)
inline static void
line_message (int severity, const char * s, const char * fname, int line)
{
-#ifndef MSG_C__
- extern const char progname [PROGNAME_MAXLEN];
- extern bool errors;
-#endif
+ char const * progname = msg_get_progname();
if (do_msg(severity)) {
if (fname == 0) {
@@ -81,7 +84,7 @@ line_message (int severity, const char * s, const char * fname, int line)
fprintf (stderr, "%s: %s: %s.\n", progname, fname, s);
}
}
- if (severity >= L_IMPORTANT) errors = true;
+ if (severity >= L_IMPORTANT) record_error();
}
}
@@ -144,20 +147,10 @@ msg_set_progname (const char * pn);
static inline
bool errors_reported(void)
{
-#ifndef MSG_C__
extern bool errors;
-#endif
return errors;
}
-static inline
-void record_error(void)
-{
-#ifndef MSG_C__
- extern bool errors;
-#endif
- errors = 1;
-}
#endif /* MSG_H__ */
diff --git a/po/ca.po b/po/ca.po
index 0994c52..f4f5188 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dctrl-tools\n"
"Report-Msgid-Bugs-To: ajk@debian.org\n"
-"POT-Creation-Date: 2004-03-03 21:11+0200\n"
+"POT-Creation-Date: 2004-07-04 15:07+0300\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"
@@ -116,87 +116,116 @@ msgstr "Depura l'anàlisi d'opcions."
msgid "Do no output to stdout."
msgstr "No mostra res a l'eixida estàndard."
-#: grep-dctrl.c:207 grep-dctrl.c:280 grep-dctrl.c:346 predicate.c:39
+#: grep-dctrl.c:221 grep-dctrl.c:334 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ó"
-
-#: grep-dctrl.c:301
-msgid "syntax error in command line"
-msgstr "hi ha un error de sintaxi a la línia d'ordres"
-
-#: grep-dctrl.c:318
-msgid "missing ')' in command line"
-msgstr "manca un «)» en la línia d'ordres"
-
-#: grep-dctrl.c:336
-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?"
+#: grep-dctrl.c:302
+#, fuzzy
+msgid "predicate is too long"
+msgstr "el predicat és massa complex"
-#: grep-dctrl.c:413
+#: grep-dctrl.c:416
msgid "no such log level"
msgstr "aquest nivell de registre no existeix"
-#: grep-dctrl.c:452 grep-dctrl.c:461
+#: grep-dctrl.c:456 grep-dctrl.c:465
msgid "inconsistent atom modifiers"
msgstr "els modificadors d'àtom no són consistents"
-#: grep-dctrl.c:502
+#: grep-dctrl.c:511
+msgid "too many file names"
+msgstr "hi ha massa noms de fitxers"
+
+#: grep-dctrl.c:597
+#, fuzzy
+msgid "unexpected end of predicate"
+msgstr "s'ha trobat un final de fitxer inesperat"
+
+#: grep-dctrl.c:600
+#, fuzzy
+msgid "unexpected '!' in command line"
+msgstr "s'ha trobat un «)» inesperat a la línia d'ordres"
+
+#: grep-dctrl.c:603
+#, fuzzy
+msgid "unexpected '-a' in command line"
+msgstr "s'ha trobat un «)» inesperat a la línia d'ordres"
+
+#: grep-dctrl.c:606
+#, fuzzy
+msgid "unexpected '-o' in command line"
+msgstr "s'ha trobat un «)» inesperat a la línia d'ordres"
+
+#: grep-dctrl.c:609
+#, fuzzy
+msgid "unexpected '(' in command line"
+msgstr "s'ha trobat un «)» inesperat a la línia d'ordres"
+
+#: grep-dctrl.c:612
msgid "unexpected ')' in command line"
msgstr "s'ha trobat un «)» inesperat a la línia d'ordres"
-#: grep-dctrl.c:514
-msgid "too many file names"
-msgstr "hi ha massa noms de fitxers"
+#: grep-dctrl.c:616
+#, fuzzy
+msgid "unexpected atom in command line"
+msgstr "s'ha trobat un «)» inesperat a la línia d'ordres"
-#: grep-dctrl.c:602
+#: grep-dctrl.c:629
+msgid "missing ')' in command line"
+msgstr "manca un «)» en la línia d'ordres"
+
+#: grep-dctrl.c:700
+msgid "A pattern is mandatory"
+msgstr "Es necessita un patró"
+
+#: grep-dctrl.c:707
msgid "a predicate is required"
msgstr "es requereix un predicat"
-#: grep-dctrl.c:607
+#: grep-dctrl.c:712
msgid "malformed predicate"
msgstr "el predicat és malformat"
-#: grep-dctrl.c:613
+#: grep-dctrl.c:718
msgid "too many output fields"
msgstr "hi ha massa camps d'eixida"
-#: grep-dctrl.c:617
+#: grep-dctrl.c:722
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:626
+#: grep-dctrl.c:731
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:667
+#: grep-dctrl.c:751
+msgid "warning: this command name is not configured; using standard input"
+msgstr ""
+
+#: grep-dctrl.c:778
#, c-format
msgid "%s: %s: cannot stat: %s\n"
msgstr "%s: %s: no es pot fer stat(): %s\n"
-#: grep-dctrl.c:676
+#: grep-dctrl.c:787
msgid "is a directory, skipping"
msgstr "és un directori, s'està ometent"
-#: grep-dctrl.c:677
+#: grep-dctrl.c:788
msgid "is a block device, skipping"
msgstr "és un dispositiu de bloc, s'està ometent"
-#: grep-dctrl.c:678
+#: grep-dctrl.c:789
msgid "internal error"
msgstr "s'ha produït un error intern"
-#: grep-dctrl.c:679
+#: grep-dctrl.c:790
msgid "is a socket, skipping"
msgstr "és un sòcol, s'està ometent"
-#: grep-dctrl.c:680
+#: grep-dctrl.c:791
msgid "unknown file type, skipping"
msgstr "el tipus de fitxer és desconegut, s'està ometent"
@@ -236,6 +265,14 @@ msgstr "sí, s'utilitzarà el nom d'executable"
msgid "default input file"
msgstr "fitxer d'entrada per defecte"
+#~ msgid "syntax error in command line"
+#~ msgstr "hi ha un error de sintaxi a la línia d'ordres"
+
+#~ 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?"
+
#~ msgid "Test for numerical equality."
#~ msgstr "Comprova l'igualtat numèrica."
diff --git a/po/de.po b/po/de.po
index a996212..04922a9 100644
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dctrl-tools\n"
"Report-Msgid-Bugs-To: ajk@debian.org\n"
-"POT-Creation-Date: 2004-03-03 21:11+0200\n"
+"POT-Creation-Date: 2004-07-04 15:07+0300\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"
@@ -114,86 +114,116 @@ msgstr "Optionenverarbeitung debuggen."
msgid "Do no output to stdout."
msgstr "Keine Ausgabe auf die Standardausgabe."
-#: grep-dctrl.c:207 grep-dctrl.c:280 grep-dctrl.c:346 predicate.c:39
+#: grep-dctrl.c:221 grep-dctrl.c:334 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:301
-msgid "syntax error in command line"
-msgstr "Syntax-Fehler in der Befehlszeile"
-
-#: grep-dctrl.c:318
-msgid "missing ')' in command line"
-msgstr "Fehlende »)« in der Befehlszeile"
-
-#: grep-dctrl.c:336
-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:302
+#, fuzzy
+msgid "predicate is too long"
+msgstr "Eigenschaft ist zu komplex"
-#: grep-dctrl.c:413
+#: grep-dctrl.c:416
msgid "no such log level"
msgstr "Keine solche Log-Ebene"
-#: grep-dctrl.c:452 grep-dctrl.c:461
+#: grep-dctrl.c:456 grep-dctrl.c:465
msgid "inconsistent atom modifiers"
msgstr "Inkonsistener Atom-Modifikator"
-#: grep-dctrl.c:502
+#: grep-dctrl.c:511
+msgid "too many file names"
+msgstr "Zu viele Dateinamen"
+
+#: grep-dctrl.c:597
+#, fuzzy
+msgid "unexpected end of predicate"
+msgstr "unerwartetes Dateiende"
+
+#: grep-dctrl.c:600
+#, fuzzy
+msgid "unexpected '!' in command line"
+msgstr "Unerwartete »)« in der Befehlszeile"
+
+#: grep-dctrl.c:603
+#, fuzzy
+msgid "unexpected '-a' in command line"
+msgstr "Unerwartete »)« in der Befehlszeile"
+
+#: grep-dctrl.c:606
+#, fuzzy
+msgid "unexpected '-o' in command line"
+msgstr "Unerwartete »)« in der Befehlszeile"
+
+#: grep-dctrl.c:609
+#, fuzzy
+msgid "unexpected '(' in command line"
+msgstr "Unerwartete »)« in der Befehlszeile"
+
+#: grep-dctrl.c:612
msgid "unexpected ')' in command line"
msgstr "Unerwartete »)« in der Befehlszeile"
-#: grep-dctrl.c:514
-msgid "too many file names"
-msgstr "Zu viele Dateinamen"
+#: grep-dctrl.c:616
+#, fuzzy
+msgid "unexpected atom in command line"
+msgstr "Unerwartete »)« in der Befehlszeile"
-#: grep-dctrl.c:602
+#: grep-dctrl.c:629
+msgid "missing ')' in command line"
+msgstr "Fehlende »)« in der Befehlszeile"
+
+#: grep-dctrl.c:700
+msgid "A pattern is mandatory"
+msgstr "Ein Muster wird benötigt"
+
+#: grep-dctrl.c:707
msgid "a predicate is required"
msgstr "Eine Eigenschaft wird benötigt"
-#: grep-dctrl.c:607
+#: grep-dctrl.c:712
msgid "malformed predicate"
msgstr "Missgebildete Eigenschaft"
-#: grep-dctrl.c:613
+#: grep-dctrl.c:718
msgid "too many output fields"
msgstr "Zu viele Ausgabefelder"
-#: grep-dctrl.c:617
+#: grep-dctrl.c:722
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:626
+#: grep-dctrl.c:731
msgid "cannot suppress field names when showing whole paragraphs"
msgstr ""
"Kann keine Feldnamen unterdrücken, wenn komplette Abschnitte angezeigt werden"
-#: grep-dctrl.c:667
+#: grep-dctrl.c:751
+msgid "warning: this command name is not configured; using standard input"
+msgstr ""
+
+#: grep-dctrl.c:778
#, c-format
msgid "%s: %s: cannot stat: %s\n"
msgstr "%s: %s: stat kann nicht durchgeführt werden: %s\n"
-#: grep-dctrl.c:676
+#: grep-dctrl.c:787
msgid "is a directory, skipping"
msgstr "ist ein Verzeichnis, wird übersprungen"
-#: grep-dctrl.c:677
+#: grep-dctrl.c:788
msgid "is a block device, skipping"
msgstr "ist ein Block-Gerät, wird übersprungen"
-#: grep-dctrl.c:678
+#: grep-dctrl.c:789
msgid "internal error"
msgstr "interner Fehler"
-#: grep-dctrl.c:679
+#: grep-dctrl.c:790
msgid "is a socket, skipping"
msgstr "ist ein Socket, wird übersprungen"
-#: grep-dctrl.c:680
+#: grep-dctrl.c:791
msgid "unknown file type, skipping"
msgstr "unbekannter Dateityp, wird übersprungen"
@@ -233,6 +263,14 @@ msgstr "Ja, Programmname wird verwendet"
msgid "default input file"
msgstr "Default-Eingabedatei"
+#~ msgid "syntax error in command line"
+#~ msgstr "Syntax-Fehler in der Befehlszeile"
+
+#~ msgid "Unexpected atom in command line. Did you forget to use a connective?"
+#~ msgstr ""
+#~ "Unerwartetes Atom in der Befehlszeile. Haben Sie einen Verbinder "
+#~ "vergessen?"
+
#~ msgid "Test for numerical equality."
#~ msgstr "Test auf numerische Ãœbereinstimmung."
diff --git a/po/fi.po b/po/fi.po
index a233a3b..c92ca31 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: dctrl-tools\n"
"Report-Msgid-Bugs-To: ajk@debian.org\n"
-"POT-Creation-Date: 2004-03-03 21:11+0200\n"
-"PO-Revision-Date: 2004-02-11 17:40+0200\n"
+"POT-Creation-Date: 2004-07-04 15:07+0300\n"
+"PO-Revision-Date: 2004-07-04 15:06+0300\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"
@@ -114,85 +114,109 @@ msgstr "Testaa valitsimien jäsennyst�."
msgid "Do no output to stdout."
msgstr "Älä tulosta mitään vakiotulostevirtaan."
-#: grep-dctrl.c:207 grep-dctrl.c:280 grep-dctrl.c:346 predicate.c:39
+#: grep-dctrl.c:221 grep-dctrl.c:334 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"
-
-#: grep-dctrl.c:301
-msgid "syntax error in command line"
-msgstr "komentorivillä on syntaksivirhe"
-
-#: grep-dctrl.c:318
-msgid "missing ')' in command line"
-msgstr "komentoriviltä puuttuu ')'"
-
-#: grep-dctrl.c:336
-msgid "Unexpected atom in command line. Did you forget to use a connective?"
-msgstr "Odottamaton atomi komentorivillä. Unohditko konnektiivin jostain?"
+#: grep-dctrl.c:302
+msgid "predicate is too long"
+msgstr "predikaatti on liian pitkä"
-#: grep-dctrl.c:413
+#: grep-dctrl.c:416
msgid "no such log level"
msgstr "ei sellaista seurantatasoa ole"
-#: grep-dctrl.c:452 grep-dctrl.c:461
+#: grep-dctrl.c:456 grep-dctrl.c:465
msgid "inconsistent atom modifiers"
msgstr "ristitiitaiset atomin määritteet"
-#: grep-dctrl.c:502
-msgid "unexpected ')' in command line"
-msgstr "odottamaton ')' komentorivill�"
-
-#: grep-dctrl.c:514
+#: grep-dctrl.c:511
msgid "too many file names"
msgstr "liikaa tiedostonimiä"
-#: grep-dctrl.c:602
+#: grep-dctrl.c:597
+msgid "unexpected end of predicate"
+msgstr "odottamaton predikaatin loppu"
+
+#: grep-dctrl.c:600
+msgid "unexpected '!' in command line"
+msgstr "odottamaton '!' komentorivillä"
+
+#: grep-dctrl.c:603
+msgid "unexpected '-a' in command line"
+msgstr "odottamaton '-a' komentorivillä"
+
+#: grep-dctrl.c:606
+msgid "unexpected '-o' in command line"
+msgstr "odottamaton '-o' komentorivillä"
+
+#: grep-dctrl.c:609
+msgid "unexpected '(' in command line"
+msgstr "odottamaton '(' komentorivillä"
+
+#: grep-dctrl.c:612
+msgid "unexpected ')' in command line"
+msgstr "odottamaton ')' komentorivillä"
+
+#: grep-dctrl.c:616
+msgid "unexpected atom in command line"
+msgstr "odottamaton atomi komentorivillä"
+
+#: grep-dctrl.c:629
+msgid "missing ')' in command line"
+msgstr "komentoriviltä puuttuu ')'"
+
+#: grep-dctrl.c:700
+msgid "A pattern is mandatory"
+msgstr "Hakuehto on välttämätön"
+
+#: grep-dctrl.c:707
msgid "a predicate is required"
msgstr "predikaatti on välttämätön"
-#: grep-dctrl.c:607
+#: grep-dctrl.c:712
msgid "malformed predicate"
msgstr "rikkinäinen predikaatti"
-#: grep-dctrl.c:613
+#: grep-dctrl.c:718
msgid "too many output fields"
msgstr "liikaa tulostettavia kenttiä"
-#: grep-dctrl.c:617
+#: grep-dctrl.c:722
msgid "Adding \"Description\" to selected output fields because of -d"
msgstr "Merkitsen \"Description\"-kentän tulostettavaksi -d-valitsimen takia"
-#: grep-dctrl.c:626
+#: grep-dctrl.c:731
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:667
+#: grep-dctrl.c:751
+msgid "warning: this command name is not configured; using standard input"
+msgstr ""
+
+#: grep-dctrl.c:778
#, c-format
msgid "%s: %s: cannot stat: %s\n"
msgstr "%s: %s: stat-kutsu epäonnistui: %s\n"
-#: grep-dctrl.c:676
+#: grep-dctrl.c:787
msgid "is a directory, skipping"
msgstr "on hakemisto, jätän huomiotta"
-#: grep-dctrl.c:677
+#: grep-dctrl.c:788
msgid "is a block device, skipping"
msgstr "on lohkolaite, jätän huomiotta"
-#: grep-dctrl.c:678
+#: grep-dctrl.c:789
msgid "internal error"
msgstr "ohjelman oma virhe"
-#: grep-dctrl.c:679
+#: grep-dctrl.c:790
msgid "is a socket, skipping"
msgstr "on pistoke, jätän huomiotta"
-#: grep-dctrl.c:680
+#: grep-dctrl.c:791
msgid "unknown file type, skipping"
msgstr "tuntematon tiedostotyyppi, jätän huomiotta"
@@ -231,3 +255,9 @@ msgstr "kyllä, käytän ohjelmannimeä"
#: rc.c:134
msgid "default input file"
msgstr "oletussyötetiedosto"
+
+#~ msgid "syntax error in command line"
+#~ msgstr "komentorivillä on syntaksivirhe"
+
+#~ msgid "Unexpected atom in command line. Did you forget to use a connective?"
+#~ msgstr "Odottamaton atomi komentorivillä. Unohditko konnektiivin jostain?"
diff --git a/po/fr.po b/po/fr.po
new file mode 100644
index 0000000..68c29c5
--- /dev/null
+++ b/po/fr.po
@@ -0,0 +1,307 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR Antti-Juhani Kaijanaho
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: dctrl-tools 2.0\n"
+"Report-Msgid-Bugs-To: ajk@debian.org\n"
+"POT-Creation-Date: 2004-07-04 15:07+0300\n"
+"PO-Revision-Date: 2004-07-04 10:41+0200\n"
+"Last-Translator: Nicolas Bertolissio <nico.bertol@free.fr>\n"
+"Language-Team: French <debian-l10n-french@lists.debian.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-15\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: grep-dctrl.c:43
+msgid "grep-dctrl -- grep Debian control files"
+msgstr "grep-dctrl -- sélection dans des fichiers de contrôle Debian"
+
+#: grep-dctrl.c:122
+msgid "Show the testing banner."
+msgstr "Afficher la bannière de test"
+
+#: grep-dctrl.c:124
+msgid "LEVEL"
+msgstr "NIVEAU"
+
+#: grep-dctrl.c:124
+msgid "Set debugging level to LEVEL."
+msgstr "Sélectionner le niveau de débogage NIVEAU"
+
+#: grep-dctrl.c:125 grep-dctrl.c:127
+msgid "FIELD,FIELD,..."
+msgstr "CHAMP,CHAMP,..."
+
+#: grep-dctrl.c:125
+msgid "Restrict pattern matching to the FIELDs given."
+msgstr "Restreindre le motif de correspondance aux CHAMPS fournis"
+
+#: grep-dctrl.c:126
+msgid "This is a shorthand for -FPackage."
+msgstr "Il s'agit d'un raccourci pour -FPackage."
+
+#: grep-dctrl.c:127
+msgid "Show only the body of these fields from the matching paragraphs."
+msgstr "N'afficher que le corps des champs des paragraphes qui correspondent"
+
+#: grep-dctrl.c:128
+msgid ""
+"Show only the first line of the \"Description\" field from the matching "
+"paragraphs."
+msgstr ""
+"N'afficher que la première ligne du champ « Description » des paragraphes "
+"qui correspondent"
+
+#: grep-dctrl.c:129
+msgid "Suppress field names when showing specified fields."
+msgstr "Supprimer les noms de champs lors de l'affichage des champs spécifiés"
+
+#: grep-dctrl.c:130
+msgid "Regard the pattern as an extended POSIX regular expression."
+msgstr "Considérer le motif comme une expression rationnelle POSIX étendue"
+
+#: grep-dctrl.c:131
+msgid "The pattern is a standard POSIX regular expression."
+msgstr "Le motif est une expression rationnelle POSIX standard."
+
+#: grep-dctrl.c:132
+msgid "Ignore case when looking for a match."
+msgstr "Ignorer la casse lors de la recherche d'un motif"
+
+#: grep-dctrl.c:133
+msgid "Show only paragraphs that do not match."
+msgstr "N'afficher que les paragraphes qui ne correspondent pas"
+
+#: grep-dctrl.c:134
+msgid "Show only the count of matching paragraphs."
+msgstr "N'afficher que le nombre de paragraphes qui correspondent"
+
+#: grep-dctrl.c:135
+msgid "FNAME"
+msgstr "FICHIER"
+
+#: grep-dctrl.c:135
+msgid "Use FNAME as the config file."
+msgstr "Utiliser FICHIER comme fichier de configuration"
+
+#: grep-dctrl.c:136
+msgid "Do an exact match."
+msgstr "Rechercher une correspondance exacte"
+
+#: grep-dctrl.c:137
+msgid "Print out the copyright license."
+msgstr "Afficher la licence"
+
+#: grep-dctrl.c:138
+msgid "Conjunct predicates."
+msgstr "Associer les prédicats"
+
+#: grep-dctrl.c:139
+msgid "Disjunct predicates."
+msgstr "Dissocier les prédicats"
+
+#: grep-dctrl.c:140
+msgid "Negate the following predicate."
+msgstr "Inverser le prédicat suivant"
+
+#: grep-dctrl.c:141
+msgid "Debug option parsing."
+msgstr "Déboguer l'analyse des options"
+
+#: grep-dctrl.c:142 grep-dctrl.c:143
+msgid "Do no output to stdout."
+msgstr "Pas de sortie sur la sortie standard."
+
+#: grep-dctrl.c:221 grep-dctrl.c:334 predicate.c:39
+msgid "predicate is too complex"
+msgstr "le prédicat est trop complexe"
+
+#: grep-dctrl.c:302
+msgid "predicate is too long"
+msgstr "le prédicat est trop long"
+
+#: grep-dctrl.c:416
+msgid "no such log level"
+msgstr "niveau de journalisation inexistant"
+
+#: grep-dctrl.c:456 grep-dctrl.c:465
+msgid "inconsistent atom modifiers"
+msgstr "modificateurs d'atome incohérents"
+
+#: grep-dctrl.c:511
+msgid "too many file names"
+msgstr "trop de noms de fichiers"
+
+#: grep-dctrl.c:597
+msgid "unexpected end of predicate"
+msgstr "fin de prédicat inattendue"
+
+#: grep-dctrl.c:600
+msgid "unexpected '!' in command line"
+msgstr "« ! » inattendu sur la ligne de commande"
+
+#: grep-dctrl.c:603
+msgid "unexpected '-a' in command line"
+msgstr "« -a » inattendu sur la ligne de commande"
+
+#: grep-dctrl.c:606
+msgid "unexpected '-o' in command line"
+msgstr "« -o » inattendu sur la ligne de commande"
+
+#: grep-dctrl.c:609
+msgid "unexpected '(' in command line"
+msgstr "« ( » inattendue sur la ligne de commande"
+
+#: grep-dctrl.c:612
+msgid "unexpected ')' in command line"
+msgstr "« ) » inattendue sur la ligne de commande"
+
+#: grep-dctrl.c:616
+msgid "unexpected atom in command line"
+msgstr "atome inattendu sur la ligne de commande"
+
+#: grep-dctrl.c:629
+msgid "missing ')' in command line"
+msgstr "« ) » manquante sur la ligne de commande"
+
+#: grep-dctrl.c:700
+msgid "A pattern is mandatory"
+msgstr "Un motif est nécessaire"
+
+#: grep-dctrl.c:707
+msgid "a predicate is required"
+msgstr "un prédicat est nécessaire"
+
+#: grep-dctrl.c:712
+msgid "malformed predicate"
+msgstr "prédicat mal formé"
+
+#: grep-dctrl.c:718
+msgid "too many output fields"
+msgstr "trop de champs de sortie"
+
+#: grep-dctrl.c:722
+msgid "Adding \"Description\" to selected output fields because of -d"
+msgstr ""
+"Ajout de « Description » aux champs de sortie sélectionnés à cause de -d"
+
+#: grep-dctrl.c:731
+msgid "cannot suppress field names when showing whole paragraphs"
+msgstr ""
+"impossible de supprimer les noms de champs lors de l'affichage des "
+"paragraphes complets"
+
+#: grep-dctrl.c:751
+msgid "warning: this command name is not configured; using standard input"
+msgstr ""
+
+#: grep-dctrl.c:778
+#, c-format
+msgid "%s: %s: cannot stat: %s\n"
+msgstr "%s : impossible d'analyser « %s » : %s\n"
+
+#: grep-dctrl.c:787
+msgid "is a directory, skipping"
+msgstr "est un répertoire, ignoré"
+
+#: grep-dctrl.c:788
+msgid "is a block device, skipping"
+msgstr "est un périphérique bloc, ignoré"
+
+#: grep-dctrl.c:789
+msgid "internal error"
+msgstr "erreur interne"
+
+#: grep-dctrl.c:790
+msgid "is a socket, skipping"
+msgstr "est une socket, ignorée"
+
+#: grep-dctrl.c:791
+msgid "unknown file type, skipping"
+msgstr "type de fichier inconnu, ignoré"
+
+#: paragraph.c:73 paragraph.c:98
+msgid "unexpected end of file"
+msgstr "fin de fichier inattendue"
+
+#: paragraph.c:91
+msgid "unexpected end of line"
+msgstr "fin de ligne inattendue"
+
+#: rc.c:75
+msgid "reading config file"
+msgstr "lecture du fichier de configuration"
+
+#: rc.c:96
+msgid "read failure or out of memory"
+msgstr "erreur de lecture ou manque de mémoire"
+
+#: rc.c:117
+msgid "syntax error: need a executable name"
+msgstr "erreur de syntaxe : nécessite un nom d'exécutable"
+
+#: rc.c:125
+msgid "syntax error: need an input file name"
+msgstr "erreur de syntaxe : nécessite un nom de fichier d'entrée"
+
+#: rc.c:130
+msgid "considering executable name"
+msgstr "étude de l'exécutable nommé"
+
+#: rc.c:132
+msgid "yes, will use executable name"
+msgstr "utilise l'exécutable nommé"
+
+#: rc.c:134
+msgid "default input file"
+msgstr "fichier d'entrée par défaut"
+
+#~ msgid "Test for numerical equality."
+#~ msgstr "Test d'égalité numérique"
+
+#~ msgid "Numerical test: <."
+#~ msgstr "Test numérique : <"
+
+#~ msgid "Numerical test: <=."
+#~ msgstr "Test numérique : <="
+
+#~ msgid "Numerical test: >."
+#~ msgstr "Test numérique : >"
+
+#~ msgid "Numerical test: >=."
+#~ msgstr "Test numérique : >="
+
+#~ msgid "syntax error in command line"
+#~ msgstr "erreur de syntaxe sur la ligne de commande"
+
+#~ msgid "Unexpected atom in command line. Did you forget to use a connective?"
+#~ msgstr ""
+#~ "Atome inattendu sur la ligne de commande. Auriez-vous oublié d'utiliser "
+#~ "un connecteur ?"
+
+#~ msgid "%s: command (%s) failed (exit status %d)\n"
+#~ msgstr "%s : la commande (%s) a échoué (état de sortie %d)\n"
+
+#~ msgid "%s: command (%s) was killed by signal %d\n"
+#~ msgstr "%s : la commande (%s) a été tuée par le signal %d\n"
+
+#~ msgid "%s (child): failed to exec /bin/sh: %s\n"
+#~ msgstr "%s (enfant) : échec d'exécution de /bin/sh : %s\n"
+
+#~ msgid "invalid numeric pattern"
+#~ msgstr "motif numérique invalide"
+
+#~ msgid "parse of a numeric field failed"
+#~ msgstr "l'analyse d'un champ numérique a échoué"
+
+#~ msgid "Malformed default input file name"
+#~ msgstr "nom de fichier d'entrée par défaut mal formé"
+
+#~ msgid "not owned by you or root, ignoring"
+#~ msgstr "détenu ni par vous ni par le super-utilisateur, ignoré"
+
+#~ msgid "write permissions for group or others, ignoring"
+#~ msgstr "droits d'écriture pour le groupe ou le reste du monde, ignoré"