diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-06-12 08:12:33 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-06-12 08:12:33 +0000 |
commit | cc5e090f12fb4e3834fb1a55bc91d7618af8ce78 (patch) | |
tree | 34813e8836287c21cb893ab7d3aee666db415d62 /coreutils/readlink.c | |
parent | aa198dd39cad6cb41fbf6c8b64301b581a9ba206 (diff) | |
download | busybox-w32-cc5e090f12fb4e3834fb1a55bc91d7618af8ce78.tar.gz busybox-w32-cc5e090f12fb4e3834fb1a55bc91d7618af8ce78.tar.bz2 busybox-w32-cc5e090f12fb4e3834fb1a55bc91d7618af8ce78.zip |
move several applets to more correct ex-project. No code changes.
Diffstat (limited to 'coreutils/readlink.c')
-rw-r--r-- | coreutils/readlink.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/coreutils/readlink.c b/coreutils/readlink.c new file mode 100644 index 000000000..d454cbf19 --- /dev/null +++ b/coreutils/readlink.c | |||
@@ -0,0 +1,50 @@ | |||
1 | /* vi: set sw=4 ts=4: */ | ||
2 | /* | ||
3 | * Mini readlink implementation for busybox | ||
4 | * | ||
5 | * Copyright (C) 2000,2001 Matt Kraai <kraai@alumni.carnegiemellon.edu> | ||
6 | * | ||
7 | * Licensed under GPL v2 or later, see file LICENSE in this tarball for details. | ||
8 | */ | ||
9 | |||
10 | #include <getopt.h> | ||
11 | |||
12 | #include "libbb.h" | ||
13 | |||
14 | int readlink_main(int argc, char **argv); | ||
15 | int readlink_main(int argc, char **argv) | ||
16 | { | ||
17 | char *buf; | ||
18 | char *fname; | ||
19 | |||
20 | USE_FEATURE_READLINK_FOLLOW( | ||
21 | unsigned opt; | ||
22 | /* We need exactly one non-option argument. */ | ||
23 | opt_complementary = "=1"; | ||
24 | opt = getopt32(argc, argv, "f"); | ||
25 | fname = argv[optind]; | ||
26 | ) | ||
27 | SKIP_FEATURE_READLINK_FOLLOW( | ||
28 | const unsigned opt = 0; | ||
29 | if (argc != 2) bb_show_usage(); | ||
30 | fname = argv[1]; | ||
31 | ) | ||
32 | |||
33 | /* compat: coreutils readlink reports errors silently via exit code */ | ||
34 | logmode = LOGMODE_NONE; | ||
35 | |||
36 | if (opt) { | ||
37 | buf = realpath(fname, bb_common_bufsiz1); | ||
38 | } else { | ||
39 | buf = xmalloc_readlink_or_warn(fname); | ||
40 | } | ||
41 | |||
42 | if (!buf) | ||
43 | return EXIT_FAILURE; | ||
44 | puts(buf); | ||
45 | |||
46 | if (ENABLE_FEATURE_CLEAN_UP && !opt) | ||
47 | free(buf); | ||
48 | |||
49 | fflush_stdout_and_exit(EXIT_SUCCESS); | ||
50 | } | ||