Changeset 2725 in MondoRescue for branches/2.2.9/mindi-busybox/coreutils/ln.c


Ignore:
Timestamp:
Feb 25, 2011, 9:26:54 PM (13 years ago)
Author:
Bruno Cornec
Message:
  • Update mindi-busybox to 1.18.3 to avoid problems with the tar command which is now failing on recent versions with busybox 1.7.3
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2.2.9/mindi-busybox/coreutils/ln.c

    r1765 r2725  
    55 * Copyright (C) 1999-2004 by Erik Andersen <andersen@codepoet.org>
    66 *
    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.
    88 */
    99
     
    2323#define LN_SUFFIX           16
    2424
    25 int ln_main(int argc, char **argv);
     25int ln_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
    2626int ln_main(int argc, char **argv)
    2727{
    2828    int status = EXIT_SUCCESS;
    29     int flag;
     29    int opts;
    3030    char *last;
    3131    char *src_name;
     
    3535    int (*link_func)(const char *, const char *);
    3636
    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);
    4239
    4340    last = argv[argc - 1];
     
    4643    if (argc == optind + 1) {
    4744        *--argv = last;
    48         last = bb_get_last_path_component(xstrdup(last));
     45        last = bb_get_last_path_component_strip(xstrdup(last));
    4946    }
    5047
     
    5451
    5552        if (is_directory(src,
    56                         (flag & LN_NODEREFERENCE) ^ LN_NODEREFERENCE,
     53                        (opts & LN_NODEREFERENCE) ^ LN_NODEREFERENCE,
    5754                        NULL)
    5855        ) {
    5956            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));
    6158            free(src_name);
    6259            src_name = src;
    6360        }
    64         if (!(flag & LN_SYMLINK) && stat(*argv, &statbuf)) {
     61        if (!(opts & LN_SYMLINK) && stat(*argv, &statbuf)) {
    6562            // coreutils: "ln dangling_symlink new_hardlink" works
    6663            if (lstat(*argv, &statbuf) || !S_ISLNK(statbuf.st_mode)) {
    67                 bb_perror_msg("%s", *argv);
     64                bb_simple_perror_msg(*argv);
    6865                status = EXIT_FAILURE;
    6966                free(src_name);
     
    7269        }
    7370
    74         if (flag & LN_BACKUP) {
     71        if (opts & LN_BACKUP) {
    7572            char *backup;
    7673            backup = xasprintf("%s%s", src, suffix);
    7774            if (rename(src, backup) < 0 && errno != ENOENT) {
    78                 bb_perror_msg("%s", src);
     75                bb_simple_perror_msg(src);
    7976                status = EXIT_FAILURE;
    8077                free(backup);
     
    8885             */
    8986            unlink(src);
    90         } else if (flag & LN_FORCE) {
     87        } else if (opts & LN_FORCE) {
    9188            unlink(src);
    9289        }
    9390
    9491        link_func = link;
    95         if (flag & LN_SYMLINK) {
     92        if (opts & LN_SYMLINK) {
    9693            link_func = symlink;
    9794        }
    9895
    9996        if (link_func(*argv, src) != 0) {
    100             bb_perror_msg("%s", src);
     97            bb_simple_perror_msg(src);
    10198            status = EXIT_FAILURE;
    10299        }
Note: See TracChangeset for help on using the changeset viewer.