diff options
Diffstat (limited to 'debian/patches/startup0005-startup-write-all-messages-to-stderr.patch')
-rw-r--r-- | debian/patches/startup0005-startup-write-all-messages-to-stderr.patch | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/debian/patches/startup0005-startup-write-all-messages-to-stderr.patch b/debian/patches/startup0005-startup-write-all-messages-to-stderr.patch new file mode 100644 index 00000000..ee6244c3 --- /dev/null +++ b/debian/patches/startup0005-startup-write-all-messages-to-stderr.patch @@ -0,0 +1,182 @@ +From b04364bcdcd1a209cb3e2762e09a42247bcde5f0 Mon Sep 17 00:00:00 2001 +From: Justus Winter <justus@gnupg.org> +Date: Thu, 28 Apr 2016 18:57:54 +0200 +Subject: [PATCH hurd 5/5] startup: write all messages to stderr + +This avoids the need to flush the buffer and works around a weird +problem with 'puts' not printing a newline. + +* startup/startup.c: Write all messages to stderr. +--- + startup/startup.c | 61 +++++++++++++++++++++++++------------------------------ + 1 file changed, 28 insertions(+), 33 deletions(-) + +diff --git a/startup/startup.c b/startup/startup.c +index 66f960c..f90b524 100644 +--- a/startup/startup.c ++++ b/startup/startup.c +@@ -173,17 +173,15 @@ reboot_mach (int flags) + { + if (fakeboot) + { +- printf ("%s: Would %s Mach with flags %#x\n", +- program_invocation_short_name, BOOT (flags), flags); +- fflush (stdout); ++ fprintf (stderr, "%s: Would %s Mach with flags %#x\n", ++ program_invocation_short_name, BOOT (flags), flags); + exit (1); + } + else + { + error_t err; +- printf ("%s: %sing Mach (flags %#x)...\n", +- program_invocation_short_name, BOOT (flags), flags); +- fflush (stdout); ++ fprintf (stderr, "%s: %sing Mach (flags %#x)...\n", ++ program_invocation_short_name, BOOT (flags), flags); + sleep (5); + while ((err = host_reboot (host_priv, flags))) + error (0, err, "reboot"); +@@ -207,17 +205,16 @@ notify_shutdown (const char *msg) + for (n = ntfy_tasks; n != NULL; n = n->next) + { + error_t err; +- printf ("%s: notifying %s of %s...", +- program_invocation_short_name, n->name, msg); +- fflush (stdout); ++ fprintf (stderr, "%s: notifying %s of %s...", ++ program_invocation_short_name, n->name, msg); ++ + err = startup_dosync (n->notify_port, 60000); /* 1 minute to reply */ + if (err == MACH_SEND_INVALID_DEST) +- puts ("(no longer present)"); ++ fprintf (stderr, "(no longer present)\n"); + else if (err) +- puts (strerror (err)); ++ fprintf (stderr, "%s\n", strerror (err)); + else +- puts ("done"); +- fflush (stdout); ++ fprintf (stderr, "done\n"); + } + } + +@@ -276,20 +273,18 @@ reboot_system (int flags) + } + if (!(pi->state & PI_NOPARENT)) + { +- printf ("%s: Killing pid %d\n", +- program_invocation_short_name, pp[ind]); +- fflush (stdout); ++ fprintf (stderr, "%s: Killing pid %d\n", ++ program_invocation_short_name, pp[ind]); + task_terminate (task); + } + if (noise_len > 0) + munmap (noise, noise_len); + } + } +- printf ("%s: Killing proc server\n", program_invocation_short_name); +- fflush (stdout); ++ fprintf (stderr, "%s: Killing proc server\n", ++ program_invocation_short_name); + task_terminate (proctask); +- printf ("%s: Exiting", program_invocation_short_name); +- fflush (stdout); ++ fprintf (stderr, "%s: Exiting", program_invocation_short_name); + } + reboot_mach (flags); + } +@@ -359,7 +354,7 @@ run (const char *server, mach_port_t *ports, task_t *task) + + if (bootstrap_args & RB_INITNAME) + { +- printf ("Server file name (default %s): ", server); ++ fprintf (stderr, "Server file name (default %s): ", server); + if (getstring (buf, sizeof (buf))) + prog = buf; + } +@@ -381,7 +376,7 @@ run (const char *server, mach_port_t *ports, task_t *task) + 0, task); + if (bootstrap_args & RB_KDB) + { +- printf ("Pausing for %s\n", prog); ++ fprintf (stderr, "Pausing for %s\n", prog); + getchar (); + } + err = file_exec (file, *task, 0, +@@ -397,7 +392,8 @@ run (const char *server, mach_port_t *ports, task_t *task) + error (0, err, "%s", prog); + } + +- printf ("File name for server %s (or nothing to reboot): ", server); ++ fprintf (stderr, "File name for server %s (or nothing to reboot): ", ++ server); + if (getstring (buf, sizeof (buf))) + prog = buf; + else +@@ -405,7 +401,7 @@ run (const char *server, mach_port_t *ports, task_t *task) + } + + if (verbose) +- fprintf (stderr, "started %s\n", prog); ++ fprintf (stderr, stderr, "started %s\n", prog); + + /* Dead-name notification on the task port will tell us when it dies, + so we can crash if we don't make it to a fully bootstrapped Hurd. */ +@@ -431,7 +427,7 @@ run_for_real (char *filename, char *args, int arglen, mach_port_t ctty, + char buf[512]; + do + { +- printf ("File name [%s]: ", filename); ++ fprintf (stderr, "File name [%s]: ", filename); + if (getstring (buf, sizeof (buf)) && *buf) + filename = buf; + file = file_name_lookup (filename, O_EXEC, 0); +@@ -467,7 +463,7 @@ run_for_real (char *filename, char *args, int arglen, mach_port_t ctty, + } + if (bootstrap_args & RB_KDB) + { +- printf ("Pausing for %s\n", filename); ++ fprintf (stderr, "Pausing for %s\n", filename); + getchar (); + } + progname = strrchr (filename, '/'); +@@ -690,11 +686,11 @@ main (int argc, char **argv, char **envp) + + default_ports[INIT_PORT_BOOTSTRAP] = startup; + run ("/hurd/proc", default_ports, &proctask); +- printf (" proc"); +- fflush (stdout); ++ if (! verbose) ++ fprintf (stderr, " proc"); + run ("/hurd/auth", default_ports, &authtask); +- printf (" auth"); +- fflush (stdout); ++ if (! verbose) ++ fprintf (stderr, " auth"); + default_ports[INIT_PORT_BOOTSTRAP] = MACH_PORT_NULL; + + /* Wait for messages. When both auth and proc have started, we +@@ -805,8 +801,7 @@ launch_core_servers (void) + err = proc_mark_exec (fsproc); + assert_perror (err); + +- printf (".\n"); +- fflush (stdout); ++ fprintf (stderr, ".\n"); + + /* Tell the proc server our msgport. Be sure to do this after we are all + done making requests of proc. Once we have done this RPC, proc +@@ -1141,7 +1136,7 @@ start_child (const char *prog, char **progargs) + + if (bootstrap_args & RB_KDB) + { +- printf ("Pausing for %s\n", args); ++ fprintf (stderr, "Pausing for %s\n", args); + getchar (); + } + +-- +2.1.4 + |