X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gdb%2Fui-file.h;h=50c1333458eadc2127fdab7fcc131cc041cd6b25;hb=48e6666a0d550f290ea174682c78b0d62a027076;hp=01cee1f1b85710ad886683e1d9bb17317d906dab;hpb=581e13c1888512fde1bd3ff9e46f1a3ec4c337d7;p=platform%2Fupstream%2Fbinutils.git diff --git a/gdb/ui-file.h b/gdb/ui-file.h index 01cee1f..50c1333 100644 --- a/gdb/ui-file.h +++ b/gdb/ui-file.h @@ -1,6 +1,5 @@ /* UI_FILE - a generic STDIO like output stream. - Copyright (C) 1999, 2000, 2007, 2008, 2009, 2010, 2011 - Free Software Foundation, Inc. + Copyright (C) 1999-2014 Free Software Foundation, Inc. This file is part of GDB. @@ -45,6 +44,17 @@ typedef void (ui_file_fputs_ftype) (const char *, struct ui_file *stream); extern void set_ui_file_fputs (struct ui_file *stream, ui_file_fputs_ftype *fputs); +/* This version of "write" is safe for use in signal handlers. + It's not guaranteed that all existing output will have been + flushed first. + Implementations are also free to ignore some or all of the request. + fputs_async is not provided as the async versions are rarely used, + no point in having both for a rarely used interface. */ +typedef void (ui_file_write_async_safe_ftype) + (struct ui_file *stream, const char *buf, long length_buf); +extern void set_ui_file_write_async_safe + (struct ui_file *stream, ui_file_write_async_safe_ftype *write_async_safe); + typedef long (ui_file_read_ftype) (struct ui_file *stream, char *buf, long length_buf); extern void set_ui_file_read (struct ui_file *stream, @@ -69,6 +79,11 @@ typedef void (ui_file_delete_ftype) (struct ui_file * stream); 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); @@ -83,6 +98,9 @@ extern int ui_file_isatty (struct ui_file *); extern void ui_file_write (struct ui_file *file, const char *buf, long length_buf); +extern void ui_file_write_async_safe (struct ui_file *file, const char *buf, + long length_buf); + /* NOTE: copies left to right. */ extern void ui_file_put (struct ui_file *src, ui_file_put_method_ftype *write, void *dest); @@ -100,23 +118,29 @@ extern char *ui_file_obsavestring (struct ui_file *file, 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); -/* Open/create a an STDIO based UI_FILE using the already open FILE. */ +/* Open/create a STDIO based UI_FILE using the already open FILE. */ extern struct ui_file *stdio_fileopen (FILE *file); +/* Create a ui_file from stderr. */ +extern struct ui_file *stderr_fileopen (void); + + /* Open NAME returning an STDIO based UI_FILE. */ -extern struct ui_file *gdb_fopen (char *name, char *mode); +extern struct ui_file *gdb_fopen (const char *name, const char *mode); /* Create a file which writes to both ONE and TWO. CLOSE_ONE and CLOSE_TWO indicate whether the original files should be closed when the new file is closed. */ -struct ui_file *tee_file_new (struct ui_file *one, - int close_one, - struct ui_file *two, - int close_two); +extern struct ui_file *tee_file_new (struct ui_file *one, + int close_one, + struct ui_file *two, + int close_two); #endif