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 (329 bytes)" 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