readlink(p1)
public
Returns the name of the file referenced by the given link. Not available on all platforms.
File.symlink("testfile", "link2test")
File.readlink("link2test")
Show source
/*
* call-seq:
* File.readlink(link_name) -> file_name
*
* Returns the name of the file referenced by the given link.
* Not available on all platforms.
*
* File.symlink("testfile", "link2test") #=> 0
* File.readlink("link2test") #=> "testfile"
*/
static VALUE
rb_file_s_readlink(klass, path)
VALUE klass, path;
{
char *buf;
int size = 100;
int rv;
VALUE v;
SafeStringValue(path);
buf = xmalloc(size);
while ((rv = readlink(RSTRING(path)->ptr, buf, size)) == size
|| (rv < 0 && errno == ERANGE) /* quirky behavior of GPFS */
#endif
) {
size *= 2;
buf = xrealloc(buf, size);
}
if (rv < 0) {
free(buf);
rb_sys_fail(RSTRING(path)->ptr);
}
v = rb_tainted_str_new(buf, rv);
free(buf);
return v;
#else
rb_notimplement();
return Qnil; /* not reached */
#endif
}