aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog23
-rw-r--r--TODO2
-rw-r--r--awk.h9
-rw-r--r--eval.c4
-rw-r--r--io.c2
-rw-r--r--main.c163
-rw-r--r--po/ChangeLog4
-rw-r--r--po/LINGUAS20
-rw-r--r--po/it.po25
-rw-r--r--version.c2
-rw-r--r--version.in2
11 files changed, 133 insertions, 123 deletions
diff --git a/ChangeLog b/ChangeLog
index 5d9d9c2e..75010a7b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,20 @@
+Fri Mar 25 13:15:36 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * awk.h: Move libsigsegv portability checks to here from main.c.
+ * eval.c (fcall_list, fcall_count): Move definitions to here
+ from main.c.
+ * io.c (do_find_source): Check against NULL in for loop.
+ * main.c: Lots of cleanup. Move some things out to other files,
+ add comments to some variable definitions.
+ (enum asgntype): To assign_type
+ (main): Remove decls of getopt variables, clean up comments.
+ Use emalloc and efree for libsigsegv stack. Remove check for SCCS
+ leading magic characters.
+ (add_preassign): Change allocassigns to alloc_assigns.
+ (init_locale): Change strdup calls to estrdup.
+ (save_argv): Make the routine static.
+ * version.in (version_string): Remove leading 4 SCCS magic characters.
+
Wed Mar 2 08:15:02 2011 John Haque <j.eh@mchsi.com>
* array.c (asort_actual): Handle the case when the same array
@@ -12,15 +29,15 @@ Sun Feb 27 08:01:04 2011 Arnold D. Robbins <arnold@skeeve.com>
Sat Feb 26 21:54:07 2011 Arnold D. Robbins <arnold@skeeve.com>
- * eval (sorted_in): Revise text of lint warning.
+ * eval.c (sorted_in): Revise text of lint warning.
Fri Feb 25 17:34:14 2011 Pat Rankin <rankin@patechdata.com>
- * eval (sorted_in): Remove incorrect unref() call.
+ * eval.c (sorted_in): Remove incorrect unref() call.
Wed Feb 23 21:48:20 2011 Arnold D. Robbins <arnold@skeeve.com>
- * main (main): Free extra_stack, to make valgrind happier.
+ * main.c (main): Free extra_stack, to make valgrind happier.
Tue Feb 22 12:04:09 2011 Arnold D. Robbins <arnold@skeeve.com>
diff --git a/TODO b/TODO
index d40a50be..ebf79125 100644
--- a/TODO
+++ b/TODO
@@ -24,7 +24,6 @@ floatcomp.c
floatmagic.h
gawkmisc.c
io.c
-main.c
profile.c
protos.h
@@ -40,6 +39,7 @@ replace.c
msg.c
hard-locale.h
custom.h
+main.c
------
diff --git a/awk.h b/awk.h
index 18e348c9..a56b2b29 100644
--- a/awk.h
+++ b/awk.h
@@ -185,6 +185,15 @@ extern void *memset_ulong(void *dest, int val, unsigned long l);
#define memset memset_ulong
#endif
+#ifdef HAVE_LIBSIGSEGV
+#include <sigsegv.h>
+#else
+typedef void *stackoverflow_context_t;
+#define sigsegv_install_handler(catchsegv) signal(SIGSEGV, catchsig)
+/* define as 0 rather than empty so that (void) cast on it works */
+#define stackoverflow_install_handler(catchstackoverflow, extra_stack, STACK_SIZE) 0
+#endif
+
/* use this as lintwarn("...")
this is a hack but it gives us the right semantics */
#define lintwarn (*(set_loc(__FILE__, __LINE__),lintfunc))
diff --git a/eval.c b/eval.c
index 1eb6d0bf..5b3b2f45 100644
--- a/eval.c
+++ b/eval.c
@@ -29,8 +29,8 @@ extern void after_beginfile(IOBUF **curfile);
extern double pow(double x, double y);
extern double modf(double x, double *yp);
extern double fmod(double x, double y);
-extern NODE **fcall_list;
-extern long fcall_count;
+NODE **fcall_list;
+long fcall_count;
IOBUF *curfile = NULL; /* current data file */
int exiting = FALSE;
diff --git a/io.c b/io.c
index fc02beff..c9d421bd 100644
--- a/io.c
+++ b/io.c
@@ -2421,7 +2421,7 @@ do_find_source(const char *src, struct stat *stb, int *errcode)
init_awkpath(getenv("AWKPATH"));
emalloc(path, char *, max_pathlen + strlen(src) + 1, "do_find_source");
- for (i = 0; awkpath[i]; i++) {
+ for (i = 0; awkpath[i] != NULL; i++) {
if (STREQ(awkpath[i], "./") || STREQ(awkpath[i], ".")) {
*path = '\0';
} else
diff --git a/main.c b/main.c
index 64d97251..b1773d25 100644
--- a/main.c
+++ b/main.c
@@ -1,5 +1,5 @@
/*
- * main.c -- Expression tree constructors and main program for gawk.
+ * main.c -- Code generator and main program for gawk.
*/
/*
@@ -32,14 +32,6 @@
#ifdef HAVE_MCHECK_H
#include <mcheck.h>
#endif
-#ifdef HAVE_LIBSIGSEGV
-#include <sigsegv.h>
-#else
-typedef void *stackoverflow_context_t;
-#define sigsegv_install_handler(catchsegv) signal(SIGSEGV, catchsig)
-/* define as 0 rather than empty so that (void) cast on it works */
-#define stackoverflow_install_handler(catchstackoverflow, extra_stack, STACK_SIZE) 0
-#endif
#define DEFAULT_PROFILE "awkprof.out" /* where to put profile */
#define DEFAULT_VARFILE "awkvars.out" /* where to put vars */
@@ -68,10 +60,11 @@ static void save_argv(int, char **);
/* These nodes store all the special variables AWK uses */
NODE *ARGC_node, *ARGIND_node, *ARGV_node, *BINMODE_node, *CONVFMT_node;
-NODE *ENVIRON_node, *ERRNO_node, *FIELDWIDTHS_node, *FILENAME_node, *FNR_node;
-NODE *FS_node, *IGNORECASE_node, *NF_node, *NR_node, *OFMT_node, *OFS_node;
-NODE *ORS_node, *PROCINFO_node, *RLENGTH_node, *RSTART_node, *RS_node;
-NODE *RT_node, *SUBSEP_node, *LINT_node, *TEXTDOMAIN_node, *FPAT_node;
+NODE *ENVIRON_node, *ERRNO_node, *FIELDWIDTHS_node, *FILENAME_node;
+NODE *FNR_node, *FPAT_node, *FS_node, *IGNORECASE_node, *LINT_node;
+NODE *NF_node, *NR_node, *OFMT_node, *OFS_node, *ORS_node, *PROCINFO_node;
+NODE *RLENGTH_node, *RSTART_node, *RS_node, *RT_node, *SUBSEP_node;
+NODE *TEXTDOMAIN_node;
NODE *_r; /* used as temporary in stack macros */
@@ -106,15 +99,12 @@ const char *myname;
/* A block of AWK code to be run */
INSTRUCTION *code_block = NULL;
-char **d_argv;
-extern NODE **args_array;
-INSTRUCTION *rule_list; /* list of rules and functions with first
- * and last instruction (source_line) information;
- * used for profiling and debugging.
- */
-
-NODE **fcall_list = NULL;
-long fcall_count = 0;
+char **d_argv; /* saved argv for debugger restarting */
+/*
+ * List of rules and functions with first and last instruction (source_line)
+ * information; used for profiling and debugging.
+ */
+INSTRUCTION *rule_list;
int exit_val = EXIT_SUCCESS; /* exit value */
@@ -128,16 +118,16 @@ SRCFILE *srcfiles; /* source files */
* structure to remember variable pre-assignments
*/
struct pre_assign {
- enum asgntype { PRE_ASSIGN = 1, PRE_ASSIGN_FS } type;
+ enum assign_type { PRE_ASSIGN = 1, PRE_ASSIGN_FS } type;
char *val;
};
static struct pre_assign *preassigns = NULL; /* requested via -v or -F */
-static long numassigns = -1; /* how many of them */
+static long numassigns = -1; /* how many of them */
static int disallow_var_assigns = FALSE; /* true for --exec */
-static void add_preassign(enum asgntype type, char *val);
+static void add_preassign(enum assign_type type, char *val);
#undef do_lint
#undef do_lint_old
@@ -156,17 +146,18 @@ int do_tidy_mem = FALSE; /* release vars when done */
int do_optimize = TRUE; /* apply default optimizations */
int do_binary = FALSE; /* hands off my data! */
int do_sandbox = FALSE; /* sandbox mode - disable 'system' function & redirections */
-
int use_lc_numeric = FALSE; /* obey locale for decimal point */
+
#ifdef MBS_SUPPORT
int gawk_mb_cur_max; /* MB_CUR_MAX value, see comment in main() */
#else
const int gawk_mb_cur_max = 1;
#endif
-FILE *output_fp;
+FILE *output_fp; /* default output for debugger */
int output_is_tty = FALSE; /* control flushing of output */
+/* default format for strftime(), available via PROCINFO */
const char def_strftime_format[] = "%a %b %e %H:%M:%S %Z %Y";
extern const char *version_string;
@@ -180,6 +171,7 @@ void (*lintfunc)(const char *mesg, ...) = warning;
/*
* Note: reserve -D for future use, to merge dgawk into gawk.
+ * Note: reserve -l for future use, for xgawk's -l option.
*/
static const struct option optab[] = {
{ "traditional", no_argument, & do_traditional, 1 },
@@ -221,8 +213,6 @@ static const struct option optab[] = {
int
main(int argc, char **argv)
{
- int c;
- char *scan, *src;
/*
* The + on the front tells GNU getopt not to rearrange argv.
* Note: reserve -D for future use, to merge dgawk into gawk.
@@ -231,15 +221,13 @@ main(int argc, char **argv)
const char *optlist = "+F:f:v:W;m:bcCd::e:E:gh:L:nNOp::PrR:StVY";
int stopped_early = FALSE;
int old_optind;
- extern int optind;
- extern int opterr;
- extern char *optarg;
int i;
+ int c;
+ char *scan, *src;
char *extra_stack;
/* do these checks early */
- if (getenv("TIDYMEM") != NULL)
- do_tidy_mem = TRUE;
+ do_tidy_mem = (getenv("TIDYMEM") != NULL);
#ifdef HAVE_MCHECK_H
#ifdef HAVE_MTRACE
@@ -302,19 +290,13 @@ main(int argc, char **argv)
(void) sigsegv_install_handler(catchsegv);
#define STACK_SIZE (16*1024)
- extra_stack = malloc(STACK_SIZE);
- if (extra_stack == NULL)
- fatal(_("out of memory"));
+ emalloc(extra_stack, char *, STACK_SIZE, "main");
(void) stackoverflow_install_handler(catchstackoverflow, extra_stack, STACK_SIZE);
#undef STACK_SIZE
myname = gawk_name(argv[0]);
os_arg_fixup(&argc, &argv); /* emulate redirection, expand wildcards */
- /* remove sccs gunk */
- if (strncmp(version_string, "@(#)", 4) == 0)
- version_string += 4;
-
if (argc < 2)
usage(EXIT_FAILURE, stderr);
@@ -327,7 +309,7 @@ main(int argc, char **argv)
/* we do error messages ourselves on invalid options */
opterr = FALSE;
- /* copy argv before getopt gets to it; used to restart debugger */
+ /* copy argv before getopt gets to it; used to restart the debugger */
save_argv(argc, argv);
/* initialize global (main) execution context */
@@ -350,9 +332,9 @@ main(int argc, char **argv)
/* fall through */
case 'f':
/*
- * a la MKS awk, allow multiple -f options.
- * this makes function libraries real easy.
- * most of the magic is in the scanner.
+ * Allow multiple -f options.
+ * This makes function libraries real easy.
+ * Most of the magic is in the scanner.
*
* The following is to allow for whitespace at the end
* of a #! /bin/gawk line in an executable file
@@ -374,11 +356,11 @@ main(int argc, char **argv)
case 'm':
/*
- * Research awk extension.
+ * BWK awk extension.
* -mf nnn set # fields, gawk ignores
* -mr nnn set record length, ditto
*
- * As of at least 10/2007, Research awk also ignores it.
+ * As of at least 10/2007, BWK awk also ignores it.
*/
if (do_lint)
lintwarn(_("`-m[fr]' option irrelevant in gawk"));
@@ -416,11 +398,12 @@ main(int argc, char **argv)
break;
case 'h':
- usage(EXIT_SUCCESS, stdout); /* per coding stds */
+ /* write usage to stdout, per GNU coding stds */
+ usage(EXIT_SUCCESS, stdout);
break;
- case 'L':
#ifndef NO_LINT
+ case 'L':
do_lint = LINT_ALL;
if (optarg != NULL) {
if (strcmp(optarg, "fatal") == 0)
@@ -428,12 +411,16 @@ main(int argc, char **argv)
else if (strcmp(optarg, "invalid") == 0)
do_lint = LINT_INVALID;
}
-#endif
break;
case 't':
do_lint_old = TRUE;
break;
+#else
+ case 'L':
+ case 't':
+ break;
+#endif
case 'n':
do_non_decimal_data = TRUE;
@@ -502,10 +489,10 @@ main(int argc, char **argv)
case '?':
default:
/*
- * New behavior. If not posix, an unrecognized
- * option stops argument processing so that it can
- * go into ARGV for the awk program to see. This
- * makes use of ``#! /bin/gawk -f'' easier.
+ * If not posix, an unrecognized option stops argument
+ * processing so that it can go into ARGV for the awk
+ * program to see. This makes use of ``#! /bin/gawk -f''
+ * easier.
*
* However, it's never simple. If optopt is set,
* an option that requires an argument didn't get the
@@ -523,7 +510,7 @@ main(int argc, char **argv)
stopped_early = TRUE;
goto out;
} else if (optopt != '\0') {
- /* Use 1003.2 required message format */
+ /* Use POSIX required message format */
fprintf(stderr,
_("%s: option requires an argument -- %c\n"),
myname, optopt);
@@ -707,7 +694,7 @@ out:
/* keep valgrind happier */
if (extra_stack)
- free(extra_stack);
+ efree(extra_stack);
exit(exit_val); /* more portable */
return exit_val; /* to suppress warnings */
@@ -716,9 +703,9 @@ out:
/* add_preassign --- add one element to preassigns */
static void
-add_preassign(enum asgntype type, char *val)
+add_preassign(enum assign_type type, char *val)
{
- static long allocassigns; /* for how many is allocated */
+ static long alloc_assigns; /* for how many are allocated */
#define INIT_SRC 4
@@ -727,11 +714,11 @@ add_preassign(enum asgntype type, char *val)
if (preassigns == NULL) {
emalloc(preassigns, struct pre_assign *,
INIT_SRC * sizeof(struct pre_assign), "add_preassign");
- allocassigns = INIT_SRC;
- } else if (numassigns >= allocassigns) {
- allocassigns *= 2;
+ alloc_assigns = INIT_SRC;
+ } else if (numassigns >= alloc_assigns) {
+ alloc_assigns *= 2;
erealloc(preassigns, struct pre_assign *,
- allocassigns * sizeof(struct pre_assign), "add_preassigns");
+ alloc_assigns * sizeof(struct pre_assign), "add_preassigns");
}
preassigns[numassigns].type = type;
preassigns[numassigns].val = estrdup(val, strlen(val));
@@ -744,7 +731,6 @@ add_preassign(enum asgntype type, char *val)
static void
usage(int exitval, FILE *fp)
{
-
/* Not factoring out common stuff makes it easier to translate. */
fprintf(fp, _("Usage: %s [POSIX or GNU style options] -f progfile [--] file ...\n"),
myname);
@@ -833,11 +819,6 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\
GNU General Public License for more details.\n\
\n");
static const char blurb_part3[] =
-/*
- N_("You should have received a copy of the GNU General Public License\n\
-along with this program; if not, write to the Free Software\n\
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n");
-*/
N_("You should have received a copy of the GNU General Public License\n\
along with this program. If not, see http://www.gnu.org/licenses/.\n");
@@ -897,14 +878,13 @@ init_args(int argc0, int argc, const char *argv0, char **argv)
unref(*aptr);
*aptr = make_string(argv0, strlen(argv0));
(*aptr)->flags |= MAYBE_NUM;
- for (i = argc0, j = 1; i < argc; i++) {
+ for (i = argc0, j = 1; i < argc; i++, j++) {
tmp = make_number((AWKNUM) j);
aptr = assoc_lookup(ARGV_node, tmp, FALSE);
unref(tmp);
unref(*aptr);
*aptr = make_string(argv[i], strlen(argv[i]));
(*aptr)->flags |= MAYBE_NUM;
- j++;
}
ARGC_node = install_symbol(estrdup("ARGC", 4),
@@ -970,11 +950,12 @@ init_vars()
const struct varinit *vp;
NODE *n;
- for (vp = varinit; vp->name; vp++) {
+ for (vp = varinit; vp->name != NULL; vp++) {
if ((vp->flags & NO_INSTALL) != 0)
continue;
- n = mk_symbol(Node_var, vp->strval == NULL ? make_number(vp->numval)
- : make_string(vp->strval, strlen(vp->strval)));
+ n = mk_symbol(Node_var, vp->strval == NULL
+ ? make_number(vp->numval)
+ : make_string(vp->strval, strlen(vp->strval)));
n->var_assign = (Func_ptr) vp->assign;
n->var_update = (Func_ptr) vp->update;
@@ -1003,7 +984,7 @@ load_environ()
NODE *tmp;
ENVIRON_node = install_symbol(estrdup("ENVIRON", 7),
- mk_symbol(Node_var_array, (NODE *) NULL));
+ mk_symbol(Node_var_array, (NODE *) NULL));
for (i = 0; environ[i] != NULL; i++) {
static char nullstr[] = "";
@@ -1058,7 +1039,7 @@ load_procinfo()
AWKNUM value;
PROCINFO_node = install_symbol(estrdup("PROCINFO", 8),
- mk_symbol(Node_var_array, (NODE *) NULL));
+ mk_symbol(Node_var_array, (NODE *) NULL));
update_PROCINFO_str("version", VERSION);
update_PROCINFO_str("strftime", def_strftime_format);
@@ -1134,7 +1115,7 @@ is_std_var(const char *var)
{
const struct varinit *vp;
- for (vp = varinit; vp->name; vp++) {
+ for (vp = varinit; vp->name != NULL; vp++) {
if (strcmp(vp->name, var) == 0) {
if ((do_traditional || do_posix) && (vp->flags & NON_STANDARD) != 0)
return FALSE;
@@ -1194,7 +1175,7 @@ arg_assign(char *arg, int initing)
arg, arg, cp);
} else {
/*
- * Recent versions of nawk expand escapes inside assignments.
+ * BWK awk expands escapes inside assignments.
* This makes sense, so we do it too.
*/
it = make_str_node(cp, strlen(cp), SCAN);
@@ -1401,32 +1382,36 @@ init_locale(struct lconv *l)
t = localeconv();
*l = *t;
- l->thousands_sep = strdup(t->thousands_sep);
- l->decimal_point = strdup(t->decimal_point);
- l->grouping = strdup(t->grouping);
- l->int_curr_symbol = strdup(t->int_curr_symbol);
- l->currency_symbol = strdup(t->currency_symbol);
- l->mon_decimal_point = strdup(t->mon_decimal_point);
- l->mon_thousands_sep = strdup(t->mon_thousands_sep);
- l->mon_grouping = strdup(t->mon_grouping);
- l->positive_sign = strdup(t->positive_sign);
- l->negative_sign = strdup(t->negative_sign);
+ l->thousands_sep = estrdup(t->thousands_sep, strlen(t->thousands_sep));
+ l->decimal_point = estrdup(t->decimal_point, strlen(t->decimal_point));
+ l->grouping = estrdup(t->grouping, strlen(t->grouping));
+ l->int_curr_symbol = estrdup(t->int_curr_symbol, strlen(t->int_curr_symbol));
+ l->currency_symbol = estrdup(t->currency_symbol, strlen(t->currency_symbol));
+ l->mon_decimal_point = estrdup(t->mon_decimal_point, strlen(t->mon_decimal_point));
+ l->mon_thousands_sep = estrdup(t->mon_thousands_sep, strlen(t->mon_thousands_sep));
+ l->mon_grouping = estrdup(t->mon_grouping, strlen(t->mon_grouping));
+ l->positive_sign = estrdup(t->positive_sign, strlen(t->positive_sign));
+ l->negative_sign = estrdup(t->negative_sign, strlen(t->negative_sign));
}
#endif /* LOCALE_H */
/* save_argv --- save argv array */
-void
+static void
save_argv(int argc, char **argv)
{
int i;
+
emalloc(d_argv, char **, (argc + 1) * sizeof(char *), "save_argv");
for (i = 0; i < argc; i++)
d_argv[i] = estrdup(argv[i], strlen(argv[i]));
d_argv[argc] = NULL;
}
-/* update_global_values --- make sure the symbol table has correct values */
+/*
+ * update_global_values --- make sure the symbol table has correct values.
+ * Called from the grammar before dumping values.
+ */
void
update_global_values()
diff --git a/po/ChangeLog b/po/ChangeLog
index 7335180e..c8020b71 100644
--- a/po/ChangeLog
+++ b/po/ChangeLog
@@ -1,3 +1,7 @@
+Mon Mar 21 20:40:28 2011 Arnold D. Robbins <arnold@skeeve.com>
+
+ * LINGUAS: Sorted.
+
Fri Mar 18 12:01:21 2011 Arnold D. Robbins <arnold@skeeve.com>
* fi.po, fi.gmo: New files.
diff --git a/po/LINGUAS b/po/LINGUAS
index f0115e1a..f275198e 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,21 +1,21 @@
+ast
+ca
+da
+de
es
fi
fr
+ga
he
id
it
-sv
-tr
-de
-da
-pt_BR
-ca
-pl
ja
-ro
nl
+pl
+pt_BR
+ro
rw
-ga
+sv
+tr
vi
zh_CN
-ast
diff --git a/po/it.po b/po/it.po
index 89980171..84ef41d7 100644
--- a/po/it.po
+++ b/po/it.po
@@ -4,10 +4,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: gawk 3.1.80\n"
+"Project-Id-Version: gawk 3.1.81\n"
"Report-Msgid-Bugs-To: arnold@skeeve.com\n"
"POT-Creation-Date: 2011-03-18 12:00+0200\n"
-"PO-Revision-Date: 2011-02-11 14:52+0100\n"
+"PO-Revision-Date: 2011-03-19 16:52+0100\n"
"Last-Translator: Antonio Colombo <azc100@gmail.com>\n"
"Language-Team: Italian <it@li.org>\n"
"Language: it\n"
@@ -479,9 +479,8 @@ msgid "function `%s' called but never defined"
msgstr "funzione `%s' chiamata ma mai definita"
#: awkgram.y:4373
-#, fuzzy, c-format
msgid "function `%s' defined but never called directly"
-msgstr "funzione `%s' definita ma mai chiamata"
+msgstr "funzione `%s' definita ma mai chiamata direttamente"
#: awkgram.y:4405
#, c-format
@@ -887,13 +886,12 @@ msgid "turning off `--lint' due to assignment to `LINT'"
msgstr "disabilito `--lint' a causa di assegnamento a `LINT'"
#: eval.c:1247
-#, fuzzy
msgid "sorted array traversal is a gawk extension"
-msgstr "`delete array' č un'estensione gawk"
+msgstr "`sorted array traversal' č un'estensione gawk"
#: eval.c:1291
msgid "`PROCINFO[\"sorted_in\"]' value is not recognized"
-msgstr ""
+msgstr "`PROCINFO[\"sorted_in\"]' valore non riconosciuto"
#: eval.c:1373 eval.c:1923
#, c-format
@@ -1096,7 +1094,7 @@ msgstr "split: il secondo argomento non č un vettore"
#: field.c:962
msgid "split: can not use the same array for second and fourth args"
-msgstr ""
+msgstr "split: non si puņ usare lo stesso vettore come secondo e quarto argomento"
#: field.c:990
msgid "split: null string for third arg is a gawk extension"
@@ -1116,7 +1114,7 @@ msgstr "patsplit: il terzo argomento non puņ essere nullo"
#: field.c:1059
msgid "patsplit: can not use the same array for second and fourth args"
-msgstr ""
+msgstr "patsplit: non si puņ usare lo stesso vettore come secondo e quarto argomento"
#: field.c:1089
msgid "`FIELDWIDTHS' is a gawk extension"
@@ -1944,11 +1942,11 @@ msgstr "Riferimento indietro non valido"
#: regcomp.c:153
msgid "Unmatched [ or [^"
-msgstr "[ or [^ non chiusa"
+msgstr "[ o [^ non chiusa"
#: regcomp.c:156
msgid "Unmatched ( or \\("
-msgstr "( or \\( non chiusa"
+msgstr "( o \\( non chiusa"
#: regcomp.c:159
msgid "Unmatched \\{"
@@ -1980,11 +1978,8 @@ msgstr "Espressione regolare troppo complessa"
#: regcomp.c:180
msgid "Unmatched ) or \\)"
-msgstr ") or \\) non aperta"
+msgstr ") o \\) non aperta"
#: regcomp.c:701
msgid "No previous regular expression"
msgstr "Nessuna espressione regolare precedente"
-
-#~ msgid "statement may have no effect"
-#~ msgstr "istruzione che puņ non aver alcun effetto"
diff --git a/version.c b/version.c
index 65a8d2f3..914445a0 100644
--- a/version.c
+++ b/version.c
@@ -1,3 +1,3 @@
#include "config.h"
-const char *version_string = "@(#)GNU Awk 3.1.81";
+const char *version_string = "GNU Awk 3.1.81";
diff --git a/version.in b/version.in
index e7a054d2..a489761a 100644
--- a/version.in
+++ b/version.in
@@ -1,3 +1,3 @@
#include "config.h"
-const char *version_string = "@(#)@PACKAGE_STRING@";
+const char *version_string = "@PACKAGE_STRING@";