diff options
author | Mark Whitley | 2001-04-30 18:17:00 +0000 |
---|---|---|
committer | Mark Whitley | 2001-04-30 18:17:00 +0000 |
commit | 8a633268ef478a31bd649d582ce07e9c26a4a03a (patch) | |
tree | a90a2bc3c3815f7f0e70f009b9b175736902a848 /libbb/copy_file.c | |
parent | 6f343944548c2e41fde4a376e805bf322a8e01c9 (diff) | |
download | busybox-8a633268ef478a31bd649d582ce07e9c26a4a03a.zip busybox-8a633268ef478a31bd649d582ce07e9c26a4a03a.tar.gz |
Made new xreadlink function for libbb and changed applets to use it instead of
readlink(2).
Diffstat (limited to 'libbb/copy_file.c')
-rw-r--r-- | libbb/copy_file.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/libbb/copy_file.c b/libbb/copy_file.c index 2d18b60..22684be 100644 --- a/libbb/copy_file.c +++ b/libbb/copy_file.c @@ -196,19 +196,12 @@ int copy_file(const char *source, const char *dest, int flags) return -1; } } else if (S_ISLNK(source_stat.st_mode)) { - int size; - char buf[BUFSIZ + 1]; - - if ((size = readlink(source, buf, BUFSIZ)) < 0) { - perror_msg("cannot read `%s'", source); - return -1; - } - buf[size] = '\0'; - - if (symlink(buf, dest) < 0) { + char *lpath = xreadlink(source); + if (symlink(lpath, dest) < 0) { perror_msg("cannot create symlink `%s'", dest); return -1; } + free(lpath); #if (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1) if (flags & FILEUTILS_PRESERVE_STATUS) |