diff options
author | markw <markw@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-04-30 18:17:00 +0000 |
---|---|---|
committer | markw <markw@69ca8d6d-28ef-0310-b511-8ec308f3f277> | 2001-04-30 18:17:00 +0000 |
commit | db1ea6ee76a5106c45398bdc17c2db04da99ecf7 (patch) | |
tree | a90a2bc3c3815f7f0e70f009b9b175736902a848 /readlink.c | |
parent | c9a51e8d05d64580a0f9ccce5b77c5b4ad990541 (diff) | |
download | busybox-w32-db1ea6ee76a5106c45398bdc17c2db04da99ecf7.tar.gz busybox-w32-db1ea6ee76a5106c45398bdc17c2db04da99ecf7.tar.bz2 busybox-w32-db1ea6ee76a5106c45398bdc17c2db04da99ecf7.zip |
Made new xreadlink function for libbb and changed applets to use it instead of
readlink(2).
git-svn-id: svn://busybox.net/trunk/busybox@2495 69ca8d6d-28ef-0310-b511-8ec308f3f277
Diffstat (limited to 'readlink.c')
-rw-r--r-- | readlink.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/readlink.c b/readlink.c index 74196e11d..226649544 100644 --- a/readlink.c +++ b/readlink.c | |||
@@ -30,21 +30,17 @@ | |||
30 | int readlink_main(int argc, char **argv) | 30 | int readlink_main(int argc, char **argv) |
31 | { | 31 | { |
32 | char *buf = NULL; | 32 | char *buf = NULL; |
33 | int bufsize = 128, size = 128; | 33 | |
34 | /* no options, no getopt */ | ||
34 | 35 | ||
35 | if (argc != 2) | 36 | if (argc != 2) |
36 | show_usage(); | 37 | show_usage(); |
37 | 38 | ||
38 | while (bufsize < size + 1) { | 39 | buf = xreadlink(argv[1]); |
39 | bufsize *= 2; | ||
40 | buf = xrealloc(buf, bufsize); | ||
41 | size = readlink(argv[1], buf, bufsize); | ||
42 | if (size == -1) | ||
43 | perror_msg_and_die("%s", argv[1]); | ||
44 | } | ||
45 | |||
46 | buf[size] = '\0'; | ||
47 | puts(buf); | 40 | puts(buf); |
41 | #ifdef BB_FEATURE_CLEAN_UP | ||
42 | free(buf); | ||
43 | #endif | ||
48 | 44 | ||
49 | return EXIT_SUCCESS; | 45 | return EXIT_SUCCESS; |
50 | } | 46 | } |