Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
tools
perf
util
usage.c
Go to the documentation of this file.
1
/*
2
* usage.c
3
*
4
* Various reporting routines.
5
* Originally copied from GIT source.
6
*
7
* Copyright (C) Linus Torvalds, 2005
8
*/
9
#include "
util.h
"
10
#include "
debug.h
"
11
12
static
void
report
(
const
char
*
prefix
,
const
char
*
err
,
va_list
params
)
13
{
14
char
msg
[1024];
15
vsnprintf
(msg,
sizeof
(msg), err, params);
16
fprintf
(stderr,
" %s%s\n"
, prefix, msg);
17
}
18
19
static
NORETURN
void
usage_builtin(
const
char
*err)
20
{
21
fprintf
(stderr,
"\n Usage: %s\n"
, err);
22
exit
(129);
23
}
24
25
static
NORETURN
void
die_builtin(
const
char
*err,
va_list
params)
26
{
27
report
(
" Fatal: "
, err, params);
28
exit
(128);
29
}
30
31
static
void
error_builtin(
const
char
*err,
va_list
params)
32
{
33
report
(
" Error: "
, err, params);
34
}
35
36
static
void
warn_builtin(
const
char
*
warn
,
va_list
params)
37
{
38
report
(
" Warning: "
, warn, params);
39
}
40
41
/* If we are in a dlopen()ed .so write to a global variable would segfault
42
* (ugh), so keep things static. */
43
static
void
(*usage_routine)(
const
char
*
err
)
NORETURN
= usage_builtin;
44
static
void
(*die_routine)(
const
char
*
err
,
va_list
params
)
NORETURN
= die_builtin;
45
static
void
(*error_routine)(
const
char
*
err
,
va_list
params
) = error_builtin;
46
static
void
(*warn_routine)(
const
char
*
err
,
va_list
params
) = warn_builtin;
47
48
void
set_die_routine
(
void
(*
routine
)(
const
char
*err,
va_list
params)
NORETURN
)
49
{
50
die_routine =
routine
;
51
}
52
53
void
usage
(
const
char
*err)
54
{
55
usage_routine(err);
56
}
57
58
void
die
(
const
char
*err, ...)
59
{
60
va_list
params
;
61
62
va_start
(params, err);
63
die_routine(err, params);
64
va_end
(params);
65
}
66
67
int
error
(
const
char
*err, ...)
68
{
69
va_list
params
;
70
71
va_start
(params, err);
72
error_routine(err, params);
73
va_end
(params);
74
return
-1;
75
}
76
77
void
warning
(
const
char
*
warn
, ...)
78
{
79
va_list
params
;
80
81
va_start
(params, warn);
82
warn_routine(warn, params);
83
va_end
(params);
84
}
Generated on Thu Jan 10 2013 15:09:27 for Linux Kernel by
1.8.2