// Various parameters passed between main() and other functions.
static mparm_T params;
+#ifdef _IOLBF
+static void *s_vbuf = NULL; // buffer for setvbuf()
+#endif
+
#ifndef NO_VIM_MAIN // skip this for unittests
static char_u *start_dir = NULL; // current working dir on startup
check_tty(¶ms);
#ifdef _IOLBF
- // Ensure output works usefully without a tty: buffer lines instead of
- // fully buffered.
if (silent_mode)
- setvbuf(stdout, NULL, _IOLBF, 0);
+ {
+ // Ensure output works usefully without a tty: buffer lines instead of
+ // fully buffered.
+ s_vbuf = malloc(BUFSIZ);
+ if (s_vbuf != NULL)
+ setvbuf(stdout, s_vbuf, _IOLBF, BUFSIZ);
+ }
#endif
// This message comes before term inits, but after setting "silent_mode"
;
}
+#if defined(EXITFREE) || defined(PROTO)
+ void
+free_vbuf(void)
+{
+# ifdef _IOLBF
+ if (s_vbuf != NULL)
+ {
+ setvbuf(stdout, NULL, _IONBF, 0);
+ free(s_vbuf);
+ s_vbuf = NULL;
+ }
+# endif
+}
+#endif
+
#if defined(FEAT_GUI) || defined(PROTO)
/*
* If a --gui-dialog-file argument was given return the file name.
void common_init(mparm_T *paramp);
int is_not_a_term(void);
int is_not_a_term_or_gui(void);
+void free_vbuf(void);
char_u *get_gui_dialog_file(void);
int op_pending(void);
void may_trigger_safestate(int safe);