18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * usage.c
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Various reporting routines.
68c2ecf20Sopenharmony_ci * Originally copied from GIT source.
78c2ecf20Sopenharmony_ci *
88c2ecf20Sopenharmony_ci * Copyright (C) Linus Torvalds, 2005
98c2ecf20Sopenharmony_ci */
108c2ecf20Sopenharmony_ci#include "util.h"
118c2ecf20Sopenharmony_ci#include <stdio.h>
128c2ecf20Sopenharmony_ci#include <stdlib.h>
138c2ecf20Sopenharmony_ci#include <linux/compiler.h>
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_cistatic __noreturn void usage_builtin(const char *err)
168c2ecf20Sopenharmony_ci{
178c2ecf20Sopenharmony_ci	fprintf(stderr, "\n Usage: %s\n", err);
188c2ecf20Sopenharmony_ci	exit(129);
198c2ecf20Sopenharmony_ci}
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ci/* If we are in a dlopen()ed .so write to a global variable would segfault
228c2ecf20Sopenharmony_ci * (ugh), so keep things static. */
238c2ecf20Sopenharmony_cistatic void (*usage_routine)(const char *err) __noreturn = usage_builtin;
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_civoid usage(const char *err)
268c2ecf20Sopenharmony_ci{
278c2ecf20Sopenharmony_ci	usage_routine(err);
288c2ecf20Sopenharmony_ci}
29