From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 41460 invoked by alias); 30 Jul 2017 18:59:38 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 41439 invoked by uid 89); 30 Jul 2017 18:59:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: smtp.polymtl.ca Received: from smtp.polymtl.ca (HELO smtp.polymtl.ca) (132.207.4.11) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 30 Jul 2017 18:59:34 +0000 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id v6UIxS96028568 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Sun, 30 Jul 2017 14:59:32 -0400 Received: by simark.ca (Postfix, from userid 112) id 293F61EA05; Sun, 30 Jul 2017 14:59:28 -0400 (EDT) Received: from simark.ca (localhost [127.0.0.1]) by simark.ca (Postfix) with ESMTP id C05B51E043; Sun, 30 Jul 2017 14:59:16 -0400 (EDT) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Date: Sun, 30 Jul 2017 18:59:00 -0000 From: Simon Marchi To: Tom Tromey Cc: gdb-patches@sourceware.org Subject: Re: [RFA v2 05/24] Use gdb_file_up in source.c In-Reply-To: <20170725172107.9799-6-tom@tromey.com> References: <20170725172107.9799-1-tom@tromey.com> <20170725172107.9799-6-tom@tromey.com> Message-ID: <524eef6a9f646c9800b8b1a23dc12aca@polymtl.ca> X-Sender: simon.marchi@polymtl.ca User-Agent: Roundcube Webmail/1.3.0 X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Sun, 30 Jul 2017 18:59:28 +0000 X-IsSubscribed: yes X-SW-Source: 2017-07/txt/msg00444.txt.bz2 On 2017-07-25 19:20, Tom Tromey wrote: > This changes some functions in source.c to use gdb_file_up. > > ChangeLog > 2017-07-25 Tom Tromey > > * source.c (print_source_lines_base, forward_search_command) > (reverse_search_command): Use gdb_file_up. > --- > gdb/ChangeLog | 5 +++++ > gdb/source.c | 45 ++++++++++++++++----------------------------- > 2 files changed, 21 insertions(+), 29 deletions(-) > > diff --git a/gdb/ChangeLog b/gdb/ChangeLog > index ab0a51f..4c23f79 100644 > --- a/gdb/ChangeLog > +++ b/gdb/ChangeLog > @@ -1,5 +1,10 @@ > 2017-07-25 Tom Tromey > > + * source.c (print_source_lines_base, forward_search_command) > + (reverse_search_command): Use gdb_file_up. > + > +2017-07-25 Tom Tromey > + > * fbsd-nat.c (fbsd_find_memory_regions): Update. > > 2017-07-25 Tom Tromey > diff --git a/gdb/source.c b/gdb/source.c > index 8926e54..4cc862c 100644 > --- a/gdb/source.c > +++ b/gdb/source.c > @@ -1353,9 +1353,7 @@ print_source_lines_base (struct symtab *s, int > line, int stopline, > int c; > int desc; > int noprint = 0; > - FILE *stream; > int nlines = stopline - line; > - struct cleanup *cleanup; > struct ui_out *uiout = current_uiout; > > /* Regardless of whether we can open the file, set > current_source_symtab. */ > @@ -1448,15 +1446,14 @@ print_source_lines_base (struct symtab *s, int > line, int stopline, > perror_with_name (symtab_to_filename_for_display (s)); > } > > - stream = fdopen (desc, FDOPEN_MODE); > - clearerr (stream); > - cleanup = make_cleanup_fclose (stream); > + gdb_file_up stream (fdopen (desc, FDOPEN_MODE)); > + clearerr (stream.get ()); > > while (nlines-- > 0) > { > char buf[20]; > > - c = fgetc (stream); > + c = fgetc (stream.get ()); > if (c == EOF) > break; > last_line_listed = current_source_line; > @@ -1479,12 +1476,12 @@ print_source_lines_base (struct symtab *s, int > line, int stopline, > else if (c == '\r') > { > /* Skip a \r character, but only before a \n. */ > - int c1 = fgetc (stream); > + int c1 = fgetc (stream.get ()); > > if (c1 != '\n') > printf_filtered ("^%c", c + 0100); > if (c1 != EOF) > - ungetc (c1, stream); > + ungetc (c1, stream.get ()); > } > else > { > @@ -1492,10 +1489,8 @@ print_source_lines_base (struct symtab *s, int > line, int stopline, > uiout->text (buf); > } > } > - while (c != '\n' && (c = fgetc (stream)) >= 0); > + while (c != '\n' && (c = fgetc (stream.get ())) >= 0); > } > - > - do_cleanups (cleanup); > } > > /* Show source lines from the file of symtab S, starting with line > @@ -1630,7 +1625,6 @@ forward_search_command (char *regex, int > from_tty) > { > int c; > int desc; > - FILE *stream; > int line; > char *msg; > struct cleanup *cleanups; > @@ -1659,9 +1653,8 @@ forward_search_command (char *regex, int > from_tty) > perror_with_name (symtab_to_filename_for_display > (current_source_symtab)); > > discard_cleanups (cleanups); > - stream = fdopen (desc, FDOPEN_MODE); > - clearerr (stream); > - cleanups = make_cleanup_fclose (stream); > + gdb_file_up stream (fdopen (desc, FDOPEN_MODE)); > + clearerr (stream.get ()); > while (1) > { > static char *buf = NULL; > @@ -1672,7 +1665,7 @@ forward_search_command (char *regex, int > from_tty) > buf = (char *) xmalloc (cursize); > p = buf; > > - c = fgetc (stream); > + c = fgetc (stream.get ()); > if (c == EOF) > break; > do > @@ -1686,7 +1679,7 @@ forward_search_command (char *regex, int > from_tty) > cursize = newsize; > } > } > - while (c != '\n' && (c = fgetc (stream)) >= 0); > + while (c != '\n' && (c = fgetc (stream.get ())) >= 0); > > /* Remove the \r, if any, at the end of the line, otherwise > regular expressions that end with $ or \n won't work. */ > @@ -1701,7 +1694,6 @@ forward_search_command (char *regex, int > from_tty) > if (re_exec (buf) > 0) > { > /* Match! */ > - do_cleanups (cleanups); > print_source_lines (current_source_symtab, line, line + 1, 0); > set_internalvar_integer (lookup_internalvar ("_"), line); > current_source_line = std::max (line - lines_to_list / 2, 1); > @@ -1711,7 +1703,6 @@ forward_search_command (char *regex, int > from_tty) > } > > printf_filtered (_("Expression not found\n")); > - do_cleanups (cleanups); > } > > static void > @@ -1719,7 +1710,6 @@ reverse_search_command (char *regex, int > from_tty) > { > int c; > int desc; > - FILE *stream; > int line; > char *msg; > struct cleanup *cleanups; > @@ -1748,23 +1738,22 @@ reverse_search_command (char *regex, int > from_tty) > perror_with_name (symtab_to_filename_for_display > (current_source_symtab)); > > discard_cleanups (cleanups); > - stream = fdopen (desc, FDOPEN_MODE); > - clearerr (stream); > - cleanups = make_cleanup_fclose (stream); > + gdb_file_up stream (fdopen (desc, FDOPEN_MODE)); > + clearerr (stream.get ()); > while (line > 1) > { > /* FIXME!!! We walk right off the end of buf if we get a long line!!! > */ > char buf[4096]; /* Should be reasonable??? */ > char *p = buf; > > - c = fgetc (stream); > + c = fgetc (stream.get ()); > if (c == EOF) > break; > do > { > *p++ = c; > } > - while (c != '\n' && (c = fgetc (stream)) >= 0); > + while (c != '\n' && (c = fgetc (stream.get ())) >= 0); > > /* Remove the \r, if any, at the end of the line, otherwise > regular expressions that end with $ or \n won't work. */ > @@ -1779,25 +1768,23 @@ reverse_search_command (char *regex, int > from_tty) > if (re_exec (buf) > 0) > { > /* Match! */ > - do_cleanups (cleanups); > print_source_lines (current_source_symtab, line, line + 1, 0); > set_internalvar_integer (lookup_internalvar ("_"), line); > current_source_line = std::max (line - lines_to_list / 2, 1); > return; > } > line--; > - if (fseek (stream, current_source_symtab->line_charpos[line - > 1], 0) < 0) > + if (fseek (stream.get (), > + current_source_symtab->line_charpos[line - 1], 0) < 0) > { > const char *filename; > > - do_cleanups (cleanups); > filename = symtab_to_filename_for_display (current_source_symtab); > perror_with_name (filename); > } > } > > printf_filtered (_("Expression not found\n")); > - do_cleanups (cleanups); > return; > } LGTM.