readlinkat.c raw

   1  #include <unistd.h>
   2  #include "syscall.h"
   3  
   4  ssize_t readlinkat(int fd, const char *restrict path, char *restrict buf, size_t bufsize)
   5  {
   6  	char dummy[1];
   7  	if (!bufsize) {
   8  		buf = dummy;
   9  		bufsize = 1;
  10  	}
  11  	int r = __syscall(SYS_readlinkat, fd, path, buf, bufsize);
  12  	if (buf == dummy && r > 0) r = 0;
  13  	return __syscall_ret(r);
  14  }
  15