Changeset 2725 in MondoRescue for branches/2.2.9/mindi-busybox/coreutils/ln.c
- Timestamp:
- Feb 25, 2011, 9:26:54 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2.2.9/mindi-busybox/coreutils/ln.c
r1765 r2725 5 5 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org> 6 6 * 7 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.7 * Licensed under GPLv2 or later, see file LICENSE in this source tree. 8 8 */ 9 9 … … 23 23 #define LN_SUFFIX 16 24 24 25 int ln_main(int argc, char **argv) ;25 int ln_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; 26 26 int ln_main(int argc, char **argv) 27 27 { 28 28 int status = EXIT_SUCCESS; 29 int flag;29 int opts; 30 30 char *last; 31 31 char *src_name; … … 35 35 int (*link_func)(const char *, const char *); 36 36 37 flag = getopt32(argv, "sfnbS:", &suffix); 38 39 if (argc == optind) { 40 bb_show_usage(); 41 } 37 opt_complementary = "-1"; /* min one arg */ 38 opts = getopt32(argv, "sfnbS:", &suffix); 42 39 43 40 last = argv[argc - 1]; … … 46 43 if (argc == optind + 1) { 47 44 *--argv = last; 48 last = bb_get_last_path_component (xstrdup(last));45 last = bb_get_last_path_component_strip(xstrdup(last)); 49 46 } 50 47 … … 54 51 55 52 if (is_directory(src, 56 ( flag& LN_NODEREFERENCE) ^ LN_NODEREFERENCE,53 (opts & LN_NODEREFERENCE) ^ LN_NODEREFERENCE, 57 54 NULL) 58 55 ) { 59 56 src_name = xstrdup(*argv); 60 src = concat_path_file(src, bb_get_last_path_component (src_name));57 src = concat_path_file(src, bb_get_last_path_component_strip(src_name)); 61 58 free(src_name); 62 59 src_name = src; 63 60 } 64 if (!( flag& LN_SYMLINK) && stat(*argv, &statbuf)) {61 if (!(opts & LN_SYMLINK) && stat(*argv, &statbuf)) { 65 62 // coreutils: "ln dangling_symlink new_hardlink" works 66 63 if (lstat(*argv, &statbuf) || !S_ISLNK(statbuf.st_mode)) { 67 bb_ perror_msg("%s",*argv);64 bb_simple_perror_msg(*argv); 68 65 status = EXIT_FAILURE; 69 66 free(src_name); … … 72 69 } 73 70 74 if ( flag& LN_BACKUP) {71 if (opts & LN_BACKUP) { 75 72 char *backup; 76 73 backup = xasprintf("%s%s", src, suffix); 77 74 if (rename(src, backup) < 0 && errno != ENOENT) { 78 bb_ perror_msg("%s",src);75 bb_simple_perror_msg(src); 79 76 status = EXIT_FAILURE; 80 77 free(backup); … … 88 85 */ 89 86 unlink(src); 90 } else if ( flag& LN_FORCE) {87 } else if (opts & LN_FORCE) { 91 88 unlink(src); 92 89 } 93 90 94 91 link_func = link; 95 if ( flag& LN_SYMLINK) {92 if (opts & LN_SYMLINK) { 96 93 link_func = symlink; 97 94 } 98 95 99 96 if (link_func(*argv, src) != 0) { 100 bb_ perror_msg("%s",src);97 bb_simple_perror_msg(src); 101 98 status = EXIT_FAILURE; 102 99 }
Note:
See TracChangeset
for help on using the changeset viewer.