diff --git a/include/winprocs.h b/include/winprocs.h index f68952765..55b2b0611 100644 --- a/include/winprocs.h +++ b/include/winprocs.h @@ -451,6 +451,7 @@ extern void FDECL(safe_status_enablefield, extern void FDECL(safe_status_update, (int, genericptr_t, int, int, int, unsigned long *)); extern boolean NDECL(safe_can_suspend); extern void FDECL(stdio_raw_print, (const char *)); +extern void FDECL(stdio_nonl_raw_print, (const char *)); extern void FDECL(stdio_raw_print_bold, (const char *)); extern void NDECL(stdio_wait_synch); extern int NDECL(stdio_nhgetch); diff --git a/sys/winnt/windmain.c b/sys/winnt/windmain.c index 332d363dd..317d4657e 100644 --- a/sys/winnt/windmain.c +++ b/sys/winnt/windmain.c @@ -1199,7 +1199,9 @@ tty_self_recover_prompt() c = 'n'; ct = 0; saved_procs = windowprocs; - safe_routines(); + if (!WINDOWPORT("safe-startup")) + windowprocs = *get_safe_procs(2); /* arg 2 uses no-newline variant */ + windowprocs.win_nhgetch = windows_console_custom_nhgetch; raw_print("\n"); raw_print("\n"); raw_print("\n"); diff --git a/win/share/safeproc.c b/win/share/safeproc.c index 28896c9c2..927744c4e 100644 --- a/win/share/safeproc.c +++ b/win/share/safeproc.c @@ -114,6 +114,8 @@ int optn; safe_procs.win_raw_print_bold = stdio_raw_print_bold; safe_procs.win_nhgetch = stdio_nhgetch; safe_procs.win_wait_synch = stdio_wait_synch; + if (optn == 2) + safe_procs.win_raw_print = stdio_nonl_raw_print; } return &safe_procs; } @@ -536,6 +538,17 @@ stdio_wait_synch() void stdio_raw_print(str) const char *str; +{ + if (str) + fprintf(stdout, "%s\n", str); + return; +} + +/* no newline variation, add to your code: + windowprocs.win_raw_print = stdio_nonl_raw_print; */ +void +stdio_nonl_raw_print(str) +const char *str; { if (str) fprintf(stdout, "%s", str);