summaryrefslogtreecommitdiff
path: root/coreutils/dirname.c (plain)
blob: 6593818868e89e862cea0f83217687c34597556f
1/* vi: set sw=4 ts=4: */
2/*
3 * Mini dirname implementation for busybox
4 *
5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
6 *
7 * Licensed under GPLv2 or later, see file LICENSE in this source tree.
8 */
9//config:config DIRNAME
10//config: bool "dirname"
11//config: default y
12//config: help
13//config: dirname is used to strip a non-directory suffix from
14//config: a file name.
15
16//applet:IF_DIRNAME(APPLET_NOFORK(dirname, dirname, BB_DIR_USR_BIN, BB_SUID_DROP, dirname))
17
18//kbuild:lib-$(CONFIG_DIRNAME) += dirname.o
19
20/* BB_AUDIT SUSv3 compliant */
21/* http://www.opengroup.org/onlinepubs/007904975/utilities/dirname.html */
22
23//usage:#define dirname_trivial_usage
24//usage: "FILENAME"
25//usage:#define dirname_full_usage "\n\n"
26//usage: "Strip non-directory suffix from FILENAME"
27//usage:
28//usage:#define dirname_example_usage
29//usage: "$ dirname /tmp/foo\n"
30//usage: "/tmp\n"
31//usage: "$ dirname /tmp/foo/\n"
32//usage: "/tmp\n"
33
34#include "libbb.h"
35
36/* This is a NOFORK applet. Be very careful! */
37
38int dirname_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
39int dirname_main(int argc UNUSED_PARAM, char **argv)
40{
41 puts(dirname(single_argv(argv)));
42 return fflush_all();
43}
44