- object. */
-
-typedef void (ui_file_flush_ftype) (struct ui_file * stream);
-extern void set_ui_file_flush (struct ui_file *stream, ui_file_flush_ftype * flush);
-
-/* NOTE: Both fputs and write methods are available. Default
- implementations that mapping one onto the other are included. */
-typedef void (ui_file_write_ftype) (struct ui_file * stream, const char *buf, long length_buf);
-extern void set_ui_file_write (struct ui_file *stream, ui_file_write_ftype *fputs);
-
-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);
-
-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, ui_file_read_ftype *fread);
-
-typedef int (ui_file_isatty_ftype) (struct ui_file * stream);
-extern void set_ui_file_isatty (struct ui_file *stream, ui_file_isatty_ftype * isatty);
-
-typedef void (ui_file_rewind_ftype) (struct ui_file * stream);
-extern void set_ui_file_rewind (struct ui_file *stream, ui_file_rewind_ftype * rewind);
-
-typedef void (ui_file_put_method_ftype) (void *object, const char *buffer, long length_buffer);
-typedef void (ui_file_put_ftype) (struct ui_file *stream, ui_file_put_method_ftype * method, void *context);
-extern void set_ui_file_put (struct ui_file *stream, ui_file_put_ftype * put);
+ object. */
+
+typedef void (ui_file_flush_ftype) (struct ui_file *stream);
+extern void set_ui_file_flush (struct ui_file *stream,
+ ui_file_flush_ftype *flush);
+
+/* NOTE: Both fputs and write methods are available. Default
+ implementations that mapping one onto the other are included. */
+typedef void (ui_file_write_ftype) (struct ui_file *stream,
+ const char *buf, long length_buf);
+extern void set_ui_file_write (struct ui_file *stream,
+ ui_file_write_ftype *fputs);
+
+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,
+ ui_file_read_ftype *fread);
+
+typedef int (ui_file_isatty_ftype) (struct ui_file *stream);
+extern void set_ui_file_isatty (struct ui_file *stream,
+ ui_file_isatty_ftype *isatty);
+
+typedef void (ui_file_rewind_ftype) (struct ui_file *stream);
+extern void set_ui_file_rewind (struct ui_file *stream,
+ ui_file_rewind_ftype *rewind);
+
+typedef void (ui_file_put_method_ftype) (void *object, const char *buffer,
+ long length_buffer);
+typedef void (ui_file_put_ftype) (struct ui_file *stream,
+ ui_file_put_method_ftype *method,
+ void *context);
+extern void set_ui_file_put (struct ui_file *stream, ui_file_put_ftype *put);