Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
2907af4
)
Save first filename and linenum in case exit_cleanup() recurses.
author
Wayne Davison
<wayned@samba.org>
Sun, 8 Nov 2009 08:12:33 +0000
(
00:12
-0800)
committer
Wayne Davison
<wayned@samba.org>
Sun, 8 Nov 2009 08:12:33 +0000
(
00:12
-0800)
cleanup.c
patch
|
blob
|
blame
|
history
diff --git
a/cleanup.c
b/cleanup.c
index
4ff5b9c
..
2b1d697
100644
(file)
--- a/
cleanup.c
+++ b/
cleanup.c
@@
-98,14
+98,18
@@
pid_t cleanup_child_pid = -1;
NORETURN void _exit_cleanup(int code, const char *file, int line)
{
static int cleanup_step = 0;
NORETURN void _exit_cleanup(int code, const char *file, int line)
{
static int cleanup_step = 0;
- static int exit_code = 0;
+ static int exit_code = 0, exit_line = 0;
+ static const char *exit_file = NULL;
static int unmodified_code = 0;
SIGACTION(SIGUSR1, SIG_IGN);
SIGACTION(SIGUSR2, SIG_IGN);
static int unmodified_code = 0;
SIGACTION(SIGUSR1, SIG_IGN);
SIGACTION(SIGUSR2, SIG_IGN);
- if (exit_code)
/* Preserve first error code
when recursing. */
+ if (exit_code)
{ /* Preserve first exit info
when recursing. */
code = exit_code;
code = exit_code;
+ file = exit_file;
+ line = exit_line;
+ }
/* If this is the exit at the end of the run, the server side
* should not attempt to output a message (see log_exit()). */
/* If this is the exit at the end of the run, the server side
* should not attempt to output a message (see log_exit()). */
@@
-118,6
+122,8
@@
NORETURN void _exit_cleanup(int code, const char *file, int line)
#include "case_N.h" /* case 0: cleanup_step++; */
exit_code = unmodified_code = code;
#include "case_N.h" /* case 0: cleanup_step++; */
exit_code = unmodified_code = code;
+ exit_file = file;
+ exit_line = line;
if (output_needs_newline) {
fputc('\n', stdout);
if (output_needs_newline) {
fputc('\n', stdout);