Rizin
unix-like reverse engineering framework and cli tools
tuklib_exit.c
Go to the documentation of this file.
1
//
5
//
6
// Author: Lasse Collin
7
//
8
// This file has been put into the public domain.
9
// You can do whatever you want with this file.
10
//
12
13
#include "
tuklib_common.h
"
14
15
#include <stdlib.h>
16
#include <stdio.h>
17
#include <string.h>
18
19
#include "
tuklib_gettext.h
"
20
#include "
tuklib_progname.h
"
21
#include "
tuklib_exit.h
"
22
23
24
extern
void
25
tuklib_exit
(
int
status
,
int
err_status,
int
show_error)
26
{
27
if
(
status
!= err_status) {
28
// Close stdout. If something goes wrong,
29
// print an error message to stderr.
30
const
int
ferror_err = ferror(stdout);
31
const
int
fclose_err = fclose(stdout);
32
if
(ferror_err || fclose_err) {
33
status
= err_status;
34
35
// If it was fclose() that failed, we have the reason
36
// in errno. If only ferror() indicated an error,
37
// we have no idea what the reason was.
38
if
(show_error)
39
fprintf(stderr,
"%s: %s: %s\n"
,
progname
,
40
_
(
"Writing to standard "
41
"output failed"
),
42
fclose_err ? strerror(errno)
43
:
_
(
"Unknown error"
));
44
}
45
}
46
47
if
(
status
!= err_status) {
48
// Close stderr. If something goes wrong, there's
49
// nothing where we could print an error message.
50
// Just set the exit status.
51
const
int
ferror_err = ferror(stderr);
52
const
int
fclose_err = fclose(stderr);
53
if
(fclose_err || ferror_err)
54
status
= err_status;
55
}
56
57
exit
(
status
);
58
}
status
static const char struct stat static buf struct stat static buf static vhangup int status
Definition:
sflib.h:145
test-lz4-list.exit
exit
Definition:
test-lz4-list.py:281
_
#define _(String)
Definition:
opintl.h:53
tuklib_common.h
Common definitions for tuklib modules.
tuklib_exit
void tuklib_exit(int status, int err_status, int show_error)
Definition:
tuklib_exit.c:25
tuklib_exit.h
Close stdout and stderr, and exit.
tuklib_gettext.h
Wrapper for gettext and friends.
tuklib_progname.h
Program name to be displayed in messages.
progname
#define progname
Definition:
tuklib_progname.h:24
subprojects
xz-5.2.5
src
common
tuklib_exit.c
Generated by
1.9.1