diff options
Diffstat (limited to 'miscutils')
| -rw-r--r-- | miscutils/readlink.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/miscutils/readlink.c b/miscutils/readlink.c index 74196e11d..226649544 100644 --- a/miscutils/readlink.c +++ b/miscutils/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 | } |
