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