Date: Wed, 31 Jul 2002 04:00:13 +0200 (CEST) From: Cyrille Lefevre <cyrille.lefevre@laposte.net> To: FreeBSD-gnats-submit@FreeBSD.org Cc: "Tim J. Robbins" <tjr@FreeBSD.org> Subject: bin/41190: in sed, report the { linenum instead of EOF linenum on pending } Message-ID: <200207310200.g6V20Dbb004787@gits.gits.dyndns.org>
next in thread | raw e-mail | index | archive | help
>Number: 41190 >Category: bin >Synopsis: in sed, report the { linenum instead of EOF linenum on pending } >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Jul 30 19:10:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Cyrille Lefevre >Release: FreeBSD 4.6-STABLE i386 >Organization: ACME >Environment: System: FreeBSD gits 4.6-STABLE FreeBSD 4.6-STABLE #21: Sun Jul 28 09:42:24 CEST 2002 root@gits:/disk2/freebsd/stable/src/sys/compile/CUSTOM i386 >Description: actually, sed reports the EOF linenum on pending }. this patch makes sed to report the { linenum instead. >How-To-Repeat: fetch http://queen.rett.polimi.it/~paolob/seders/scripts/sokoban.sed sed -f sokoban.sed sed: 2266: /root/sokoban.sed: unexpected EOF (pending }'s) patched version says : sed: 2063: /root/sokoban.sed: unexpected EOF (pending }'s) which is more accurate, IMHO. >Fix: Index: compile.c =================================================================== RCS file: /home/ncvs/src/usr.bin/sed/compile.c,v retrieving revision 1.21 diff -u -r1.21 compile.c --- compile.c 1 Jun 2002 13:25:47 -0000 1.21 +++ compile.c 31 Jul 2002 01:53:02 -0000 @@ -165,9 +165,12 @@ stack = 0; for (;;) { if ((p = cu_fgets(lbuf, sizeof(lbuf), NULL)) == NULL) { - if (stack != 0) + if (stack != 0) { + for (cmd = stack; cmd->next; cmd = cmd->next) + /* nothing */ ; errx(1, "%lu: %s: unexpected EOF (pending }'s)", - linenum, fname); + cmd->linenum, fname); + } return (link); } @@ -226,6 +229,7 @@ p++; EATSPACE(); cmd->next = stack; + cmd->linenum = linenum; stack = cmd; link = &cmd->u.c; if (*p) Index: defs.h =================================================================== RCS file: /home/ncvs/src/usr.bin/sed/defs.h,v retrieving revision 1.3 diff -u -r1.3 defs.h --- defs.h 11 Aug 1997 07:21:00 -0000 1.3 +++ defs.h 31 Jul 2002 01:51:04 -0000 @@ -88,6 +88,7 @@ int fd; /* File descriptor for w */ } u; char code; /* Command code */ + u_long linenum; /* Line number. */ u_int nonsel:1; /* True if ! */ u_int inrange:1; /* True if in range */ }; >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200207310200.g6V20Dbb004787>