| Summary: | Cannot specify files beginning with + on ee command line. | ||||||
|---|---|---|---|---|---|---|---|
| Product: | Base System | Reporter: | Mike Edenfield <kutulu> | ||||
| Component: | bin | Assignee: | Maxim Konovalov <maxim> | ||||
| Status: | Closed FIXED | ||||||
| Severity: | Affects Only Me | ||||||
| Priority: | Normal | ||||||
| Version: | 4.4-STABLE | ||||||
| Hardware: | Any | ||||||
| OS: | Any | ||||||
| Attachments: |
|
||||||
|
Description
Mike Edenfield
2001-12-02 02:10:01 UTC
And of course, I completely screwed up the patch. This is why I should
leave this stuff up to the professionals. This one works, but it looks
ugly, so I'm sure there's a better way:
--- ee.c.old Sat Dec 1 20:40:09 2001
+++ ee.c Sat Dec 1 22:07:13 2001
@@ -2091,7 +2091,7 @@
fprintf(stderr, usage4);
exit(1);
}
- else if (*buff == '+')
+ else if ((*buff == '+') && (isdigit(*(buff + 1))))
{
buff++;
start_at_line = buff;
--K
On Sat, Dec 01, 2001 at 07:10:01PM -0800, Kutulu wrote: > The following reply was made to PR bin/32433; it has been noted by GNATS. > > From: "Kutulu" <kutulu@kutulu.org> > To: <freebsd-gnats-submit@FreeBSD.org>, "Kutulu" <kutulu@kutulu.org> > Cc: > Subject: Re: bin/32433: Cannot specify files beginning with + on ee command line. > Date: Sat, 1 Dec 2001 22:02:43 -0500 > > And of course, I completely screwed up the patch. This is why I should > leave this stuff up to the professionals. This one works, but it looks > ugly, so I'm sure there's a better way: > > --- ee.c.old Sat Dec 1 20:40:09 2001 > +++ ee.c Sat Dec 1 22:07:13 2001 > @@ -2091,7 +2091,7 @@ > fprintf(stderr, usage4); > exit(1); > } > - else if (*buff == '+') > + else if ((*buff == '+') && (isdigit(*(buff + 1)))) > { > buff++; > start_at_line = buff; > Err, this patch is not quite correct either, as it won't allow to open files with a digit after a plus sign. The correct thing to here would be to check that there's still argument pending on a command line, as "+offset" doesn't make any sense if specified as a last argument. ee(1) is the contributed software, and hence doesn't use an unportable getopt(3) interface. I'd also suggest that the author introduce the support for "--" (cancel options list processing), then the problem could be easily avoided (the Unix way) like this: "ee ... +10 -- <any_name>". Currently, opening a file with the name of "-[ieh?]" doesn't work as well. I've Cc:ed the author of this program. Cheers, -- Ruslan Ermilov Oracle Developer/DBA, ru@sunbay.com Sunbay Software AG, ru@FreeBSD.org FreeBSD committer, +380.652.512.251 Simferopol, Ukraine http://www.FreeBSD.org The Power To Serve http://www.oracle.com Enabling The Information Age State Changed From-To: open->closed Use 'ee -- +CONTENTS'. This is standard behaviour for most Unix programs. State Changed From-To: closed->open Closed by mistake, I misunderstood the issue. Support for '--' to cancel options list processing has been added to ee as of (at least) the current version, which is available at http://mahon.cwx.net/sources/ee-1.4.5a.src.tgz . Alternately, this patch should do the trick. -Zak --- ee.c.orig Sun Jun 16 00:49:28 2002 +++ ee.c Wed Jun 19 19:00:43 2002 @@ -2051,6 +2051,7 @@ struct files *temp_names = NULL; char *name; char *ptr; + int no_more_opts = FALSE; /* | see if editor was invoked as 'ree' (restricted mode) @@ -2067,7 +2068,7 @@ input_file = FALSE; recv_file = FALSE; count = 1; - while (count < numargs) + while ((count < numargs) && (!no_more_opts)) { buff = arguments[count]; if (!strcmp("-i", buff)) @@ -2096,7 +2097,8 @@ buff++; start_at_line = buff; } + else if (!(strcmp("--", buff))) + no_more_opts = TRUE; else { if (top_of_stack == NULL) State Changed From-To: open->patched Added a support for '--' to cancel options list processing in -CURRENT. Responsible Changed From-To: freebsd-bugs->maxim MFC reminder. State Changed From-To: patched->closed Fixed in -STABLE as well. |