From: Hui Zhu <teawater@gmail.com>
To: Tom Tromey <tromey@redhat.com>
Cc: gdb-patches ml <gdb-patches@sourceware.org>,
Hui Zhu <hui_zhu@mentor.com>
Subject: Re: [PATCH] Add fseek to ui-file
Date: Thu, 13 Dec 2012 01:45:00 -0000 [thread overview]
Message-ID: <CANFwon3L8Frp64+Yg+4TOODCxiMN2wRz9U94uVWVzKrtPChHCg@mail.gmail.com> (raw)
In-Reply-To: <878v939t6z.fsf@fleche.redhat.com>
[-- Attachment #1: Type: text/plain, Size: 1061 bytes --]
On Wed, Dec 12, 2012 at 11:38 PM, Tom Tromey <tromey@redhat.com> wrote:
>>>>>> "Hui" == Hui Zhu <teawater@gmail.com> writes:
>
> Hui> +static int
> Hui> +null_file_fseek (struct ui_file *stream, long offset, int whence)
> Hui> +{
> Hui> + return 0;
> Hui> +}
>
> Why does this return success rather than error?
> It seems strange to report success when nothing actually happens.
>
> Hui> +typedef int (ui_file_fseek_ftype) (struct ui_file * stream, long offset,
> Hui> + int whence);
>
> Extra space after "*".
>
> Hui> +extern int ui_file_fseek (struct ui_file * file, long offset, int whence);
>
> Here too.
>
> Tom
Post a new version according to your comments.
Thanks,
Hui
2012-12-13 Hui Zhu <hui_zhu@mentor.com>
* ui-file.c (ui_file): Add to_fseek.
(ui_file_new): Call set_ui_file_fseek.
(null_file_fseek, ui_file_fseek, set_ui_file_fseek,
stdio_file_fseek): New functions.
(stdio_file_new): Call set_ui_file_fseek.
* ui-file.h (ui_file_fseek_ftype): New typedef.
(set_ui_file_fseek, ui_file_fseek): New externs.
[-- Attachment #2: ui-file-fseek.txt --]
[-- Type: text/plain, Size: 3497 bytes --]
--- a/ui-file.c
+++ b/ui-file.c
@@ -36,6 +36,7 @@ static ui_file_flush_ftype null_file_flu
static ui_file_delete_ftype null_file_delete;
static ui_file_rewind_ftype null_file_rewind;
static ui_file_put_ftype null_file_put;
+static ui_file_fseek_ftype null_file_fseek;
struct ui_file
{
@@ -49,6 +50,7 @@ struct ui_file
ui_file_isatty_ftype *to_isatty;
ui_file_rewind_ftype *to_rewind;
ui_file_put_ftype *to_put;
+ ui_file_fseek_ftype *to_fseek;
void *to_data;
};
int ui_file_magic;
@@ -68,6 +70,7 @@ ui_file_new (void)
set_ui_file_isatty (file, null_file_isatty);
set_ui_file_rewind (file, null_file_rewind);
set_ui_file_put (file, null_file_put);
+ set_ui_file_fseek (file, null_file_fseek);
return file;
}
@@ -170,6 +173,12 @@ null_file_delete (struct ui_file *file)
return;
}
+static int
+null_file_fseek (struct ui_file *stream, long offset, int whence)
+{
+ return -1;
+}
+
void *
ui_file_data (struct ui_file *file)
{
@@ -227,6 +236,12 @@ ui_file_read (struct ui_file *file, char
return file->to_read (file, buf, length_buf);
}
+int
+ui_file_fseek (struct ui_file *file, long offset, int whence)
+{
+ return file->to_fseek (file, offset, whence);
+}
+
void
fputs_unfiltered (const char *buf, struct ui_file *file)
{
@@ -284,6 +299,12 @@ set_ui_file_fputs (struct ui_file *file,
}
void
+set_ui_file_fseek (struct ui_file *file, ui_file_fseek_ftype *fseek_ptr)
+{
+ file->to_fseek = fseek_ptr;
+}
+
+void
set_ui_file_data (struct ui_file *file, void *data,
ui_file_delete_ftype *delete_ptr)
{
@@ -469,6 +490,7 @@ static ui_file_isatty_ftype stdio_file_i
static ui_file_delete_ftype stdio_file_delete;
static struct ui_file *stdio_file_new (FILE *file, int close_p);
static ui_file_flush_ftype stdio_file_flush;
+static ui_file_fseek_ftype stdio_file_fseek;
static int stdio_file_magic;
@@ -499,6 +521,7 @@ stdio_file_new (FILE *file, int close_p)
set_ui_file_fputs (ui_file, stdio_file_fputs);
set_ui_file_read (ui_file, stdio_file_read);
set_ui_file_isatty (ui_file, stdio_file_isatty);
+ set_ui_file_fseek (ui_file, stdio_file_fseek);
return ui_file;
}
@@ -616,6 +639,18 @@ stdio_file_isatty (struct ui_file *file)
return (isatty (stdio->fd));
}
+static int
+stdio_file_fseek (struct ui_file *file, long offset, int whence)
+{
+ struct stdio_file *stdio = ui_file_data (file);
+
+ if (stdio->magic != &stdio_file_magic)
+ internal_error (__FILE__, __LINE__,
+ _("stdio_file_fseek: bad magic number"));
+
+ return fseek (stdio->file, offset, whence);
+}
+
/* Like fdopen(). Create a ui_file from a previously opened FILE. */
struct ui_file *
--- a/ui-file.h
+++ b/ui-file.h
@@ -79,6 +79,11 @@ typedef void (ui_file_delete_ftype) (str
extern void set_ui_file_data (struct ui_file *stream, void *data,
ui_file_delete_ftype *delete);
+typedef int (ui_file_fseek_ftype) (struct ui_file *stream, long offset,
+ int whence);
+extern void set_ui_file_fseek (struct ui_file *stream,
+ ui_file_fseek_ftype *fseek_ptr);
+
extern void *ui_file_data (struct ui_file *file);
@@ -113,6 +118,8 @@ extern char *ui_file_obsavestring (struc
extern long ui_file_read (struct ui_file *file, char *buf, long length_buf);
+extern int ui_file_fseek (struct ui_file *file, long offset, int whence);
+
/* Create/open a memory based file. Can be used as a scratch buffer
for collecting output. */
extern struct ui_file *mem_fileopen (void);
next prev parent reply other threads:[~2012-12-13 1:45 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-06 9:46 Hui Zhu
2012-12-06 21:48 ` Tom Tromey
2012-12-07 8:02 ` Hui Zhu
2012-12-07 9:56 ` Pedro Alves
2012-12-10 10:48 ` Hui Zhu
2012-12-10 19:54 ` Tom Tromey
2012-12-11 10:35 ` Pedro Alves
2012-12-11 14:35 ` Hui Zhu
2012-12-11 14:39 ` Pedro Alves
2012-12-11 14:58 ` Hui Zhu
2012-12-07 14:49 ` Tom Tromey
2012-12-10 10:57 ` Hui Zhu
2012-12-10 19:55 ` Tom Tromey
2012-12-11 7:22 ` Hui Zhu
2012-12-12 11:01 ` Hui Zhu
2012-12-12 15:38 ` Tom Tromey
2012-12-13 1:45 ` Hui Zhu [this message]
2012-12-14 19:18 ` Tom Tromey
2012-12-17 3:00 ` Hui Zhu
2012-12-17 20:04 ` Tom Tromey
2012-12-18 7:03 ` Hui Zhu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CANFwon3L8Frp64+Yg+4TOODCxiMN2wRz9U94uVWVzKrtPChHCg@mail.gmail.com \
--to=teawater@gmail.com \
--cc=gdb-patches@sourceware.org \
--cc=hui_zhu@mentor.com \
--cc=tromey@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox