Here's an implementation of the "unlink" command. Adds 252 bytes when enabled; a fair part is the error messages and text. If you would rather shrink those, I don't object.
I wrote this because (a) it's POSIX and (b) I occasionally use unlink, and I saw a patch in the alpine aports tree converting unlink to rm. HTH, Isaac Dunham
>From 135628b220c32741dc86ccef8f0dfb13eaaee206 Mon Sep 17 00:00:00 2001 From: Isaac Dunham <[email protected]> Date: Sat, 21 Jun 2014 20:47:05 +0000 Subject: [PATCH] Add POSIX unlink command. Change in size when enabled: function old new delta unlink_main - 118 +118 .rodata 135671 135760 +89 packed_usage 29477 29509 +32 applet_names 2436 2443 +7 applet_main 1420 1424 +4 applet_nameofs 710 712 +2 ------------------------------------------------------------------------------ (add/remove: 2/0 grow/shrink: 5/0 up/down: 252/0) Total: 252 bytes Not important but nice. --- coreutils/unlink.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 coreutils/unlink.c diff --git a/coreutils/unlink.c b/coreutils/unlink.c new file mode 100644 index 0000000..5a76ba9 --- /dev/null +++ b/coreutils/unlink.c @@ -0,0 +1,36 @@ +/* vi: set sw=4 ts=4: */ +/* unlink for busybox + * + * Copyright (C) 2014 Isaac Dunham <[email protected]> + * + * Licensed under GPLv2, see LICENSE in this source tree + */ + +//kbuild:lib-$(CONFIG_UNLINK) += unlink.o + +//config:config UNLINK +//config: bool "unlink" +//config: default n +//config: help +//config: unlink deletes a file by calling unlink() + +//applet:IF_UNLINK( APPLET( unlink, BB_DIR_USR_BIN, BB_SUID_DROP)) + +//usage:#define unlink_trivial_usage +//usage: "FILE" +//usage:#define unlink_full_usage "\n\n" +//usage: "delete FILE by calling unlink()" + +#include "libbb.h" + +int unlink_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; +int unlink_main(int argc, char **argv) +{ + if (argc < 2) + bb_perror_msg_and_die("no file specified"); + if (argc > 2) + bb_perror_msg_and_die("extra files"); + if (unlink(argv[1])) + bb_perror_msg_and_die("can't delete '%s'", argv[0]); + else return 0; +} -- 2.0.0
_______________________________________________ busybox mailing list [email protected] http://lists.busybox.net/mailman/listinfo/busybox
