aboutsummaryrefslogtreecommitdiff
path: root/coreutils/ln.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-11-28 15:18:53 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2009-11-28 15:18:53 +0100
commite992bae6f9adf3718c6263a36c004ead1c7272a8 (patch)
treef0bc9e4fa145f58ab3f9838902e09f9cfba29648 /coreutils/ln.c
parent86cfb70ca5f2bde11f2d071bc59db75291d8552f (diff)
downloadbusybox-w32-e992bae6f9adf3718c6263a36c004ead1c7272a8.tar.gz
busybox-w32-e992bae6f9adf3718c6263a36c004ead1c7272a8.tar.bz2
busybox-w32-e992bae6f9adf3718c6263a36c004ead1c7272a8.zip
*: remove a few more cases of argc usage. -89 bytes.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'coreutils/ln.c')
-rw-r--r--coreutils/ln.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/coreutils/ln.c b/coreutils/ln.c
index eb7171959..f977aa177 100644
--- a/coreutils/ln.c
+++ b/coreutils/ln.c
@@ -26,7 +26,7 @@ int ln_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
26int ln_main(int argc, char **argv) 26int ln_main(int argc, char **argv)
27{ 27{
28 int status = EXIT_SUCCESS; 28 int status = EXIT_SUCCESS;
29 int flag; 29 int opts;
30 char *last; 30 char *last;
31 char *src_name; 31 char *src_name;
32 char *src; 32 char *src;
@@ -34,11 +34,8 @@ int ln_main(int argc, char **argv)
34 struct stat statbuf; 34 struct stat statbuf;
35 int (*link_func)(const char *, const char *); 35 int (*link_func)(const char *, const char *);
36 36
37 flag = getopt32(argv, "sfnbS:", &suffix); 37 opt_complementary = "-1"; /* min one arg */
38 38 opts = getopt32(argv, "sfnbS:", &suffix);
39 if (argc == optind) {
40 bb_show_usage();
41 }
42 39
43 last = argv[argc - 1]; 40 last = argv[argc - 1];
44 argv += optind; 41 argv += optind;
@@ -53,7 +50,7 @@ int ln_main(int argc, char **argv)
53 src = last; 50 src = last;
54 51
55 if (is_directory(src, 52 if (is_directory(src,
56 (flag & LN_NODEREFERENCE) ^ LN_NODEREFERENCE, 53 (opts & LN_NODEREFERENCE) ^ LN_NODEREFERENCE,
57 NULL) 54 NULL)
58 ) { 55 ) {
59 src_name = xstrdup(*argv); 56 src_name = xstrdup(*argv);
@@ -61,7 +58,7 @@ int ln_main(int argc, char **argv)
61 free(src_name); 58 free(src_name);
62 src_name = src; 59 src_name = src;
63 } 60 }
64 if (!(flag & LN_SYMLINK) && stat(*argv, &statbuf)) { 61 if (!(opts & LN_SYMLINK) && stat(*argv, &statbuf)) {
65 // coreutils: "ln dangling_symlink new_hardlink" works 62 // coreutils: "ln dangling_symlink new_hardlink" works
66 if (lstat(*argv, &statbuf) || !S_ISLNK(statbuf.st_mode)) { 63 if (lstat(*argv, &statbuf) || !S_ISLNK(statbuf.st_mode)) {
67 bb_simple_perror_msg(*argv); 64 bb_simple_perror_msg(*argv);
@@ -71,7 +68,7 @@ int ln_main(int argc, char **argv)
71 } 68 }
72 } 69 }
73 70
74 if (flag & LN_BACKUP) { 71 if (opts & LN_BACKUP) {
75 char *backup; 72 char *backup;
76 backup = xasprintf("%s%s", src, suffix); 73 backup = xasprintf("%s%s", src, suffix);
77 if (rename(src, backup) < 0 && errno != ENOENT) { 74 if (rename(src, backup) < 0 && errno != ENOENT) {
@@ -87,12 +84,12 @@ int ln_main(int argc, char **argv)
87 * Therefore, always unlink(). 84 * Therefore, always unlink().
88 */ 85 */
89 unlink(src); 86 unlink(src);
90 } else if (flag & LN_FORCE) { 87 } else if (opts & LN_FORCE) {
91 unlink(src); 88 unlink(src);
92 } 89 }
93 90
94 link_func = link; 91 link_func = link;
95 if (flag & LN_SYMLINK) { 92 if (opts & LN_SYMLINK) {
96 link_func = symlink; 93 link_func = symlink;
97 } 94 }
98 95