summaryrefslogtreecommitdiffstats
path: root/man2/readlink.2
diff options
context:
space:
mode:
Diffstat (limited to 'man2/readlink.2')
-rw-r--r--man2/readlink.226
1 files changed, 13 insertions, 13 deletions
diff --git a/man2/readlink.2 b/man2/readlink.2
index c911c4a7b..e0d191884 100644
--- a/man2/readlink.2
+++ b/man2/readlink.2
@@ -261,61 +261,61 @@ reports a size of zero.
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
-
+\&
int
main(int argc, char *argv[])
{
char *buf;
ssize_t nbytes, bufsiz;
struct stat sb;
-
+\&
if (argc != 2) {
fprintf(stderr, "Usage: %s <pathname>\en", argv[0]);
exit(EXIT_FAILURE);
}
-
+\&
if (lstat(argv[1], &sb) == \-1) {
perror("lstat");
exit(EXIT_FAILURE);
}
-
+\&
/* Add one to the link size, so that we can determine whether
the buffer returned by readlink() was truncated. */
-
+\&
bufsiz = sb.st_size + 1;
-
+\&
/* Some magic symlinks under (for example) /proc and /sys
report \[aq]st_size\[aq] as zero. In that case, take PATH_MAX as
a "good enough" estimate. */
-
+\&
if (sb.st_size == 0)
bufsiz = PATH_MAX;
-
+\&
buf = malloc(bufsiz);
if (buf == NULL) {
perror("malloc");
exit(EXIT_FAILURE);
}
-
+\&
nbytes = readlink(argv[1], buf, bufsiz);
if (nbytes == \-1) {
perror("readlink");
exit(EXIT_FAILURE);
}
-
+\&
/* Print only \[aq]nbytes\[aq] of \[aq]buf\[aq], as it doesn't contain a terminating
null byte (\[aq]\e0\[aq]). */
printf("\[aq]%s\[aq] points to \[aq]%.*s\[aq]\en", argv[1], (int) nbytes, buf);
-
+\&
/* If the return value was equal to the buffer size, then the
the link target was larger than expected (perhaps because the
target was changed between the call to lstat() and the call to
readlink()). Warn the user that the returned target may have
been truncated. */
-
+\&
if (nbytes == bufsiz)
printf("(Returned buffer may have been truncated)\en");
-
+\&
free(buf);
exit(EXIT_SUCCESS);
}