[git commit master 1/1] ln: explain why we use xstrdup

Denys Vlasenko vda.linux at googlemail.com
Mon Mar 21 11:36:35 UTC 2011


commit: http://git.busybox.net/busybox/commit/?id=b0e8ced3589c601ad5c15e74d6f82b1928e1eb8f
branch: http://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 coreutils/ln.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/coreutils/ln.c b/coreutils/ln.c
index ddad120..6da290c 100644
--- a/coreutils/ln.c
+++ b/coreutils/ln.c
@@ -40,8 +40,12 @@ int ln_main(int argc, char **argv)
 	last = argv[argc - 1];
 	argv += optind;
 
-	if (argc == optind + 1) {
+	if (!argv[1]) {
+		/* "ln PATH/TO/FILE" -> "ln PATH/TO/FILE FILE" */
 		*--argv = last;
+		/* xstrdup is needed: "ln -s PATH/TO/FILE/" is equivalent to
+		 * "ln -s PATH/TO/FILE/ FILE", not "ln -s PATH/TO/FILE FILE"
+		 */
 		last = bb_get_last_path_component_strip(xstrdup(last));
 	}
 
-- 
1.7.3.4



More information about the busybox-cvs mailing list