linux/tools/perf/util/usage.c
<<
>>
Prefs
   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
  12static 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
  19static NORETURN void usage_builtin(const char *err)
  20{
  21        fprintf(stderr, "\n Usage: %s\n", err);
  22        exit(129);
  23}
  24
  25static NORETURN void die_builtin(const char *err, va_list params)
  26{
  27        report(" Fatal: ", err, params);
  28        exit(128);
  29}
  30
  31static void error_builtin(const char *err, va_list params)
  32{
  33        report(" Error: ", err, params);
  34}
  35
  36static 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. */
  43static void (*usage_routine)(const char *err) NORETURN = usage_builtin;
  44static void (*error_routine)(const char *err, va_list params) = error_builtin;
  45static void (*warn_routine)(const char *err, va_list params) = warn_builtin;
  46
  47void set_warning_routine(void (*routine)(const char *err, va_list params))
  48{
  49        warn_routine = routine;
  50}
  51
  52void usage(const char *err)
  53{
  54        usage_routine(err);
  55}
  56
  57void die(const char *err, ...)
  58{
  59        va_list params;
  60
  61        va_start(params, err);
  62        die_builtin(err, params);
  63        va_end(params);
  64}
  65
  66int error(const char *err, ...)
  67{
  68        va_list params;
  69
  70        va_start(params, err);
  71        error_routine(err, params);
  72        va_end(params);
  73        return -1;
  74}
  75
  76void warning(const char *warn, ...)
  77{
  78        va_list params;
  79
  80        va_start(params, warn);
  81        warn_routine(warn, params);
  82        va_end(params);
  83}
  84