if ((len = __readlink ("/proc/self/exe", linkval, sizeof (linkval))) > 0 && linkval[0] != '[')
len = INTERNAL_SYSCALL (readlink, err, 3, "/proc/self/exe", linkval, sizeof (linkval)); if (! INTERNAL_SYSCALL_ERROR_P (len, err) && len > 0 && linkval[0] != '[')
_dl_get_origin (void){  char linkval[PATH_MAX];  char *result;  int len;  if ((len = __readlink ("/proc/self/exe", linkval, sizeof (linkval))) > 0      && linkval[0] != '[')    {      /* We can use this value.  */      assert (linkval[0] == '/');      while (len > 1 && linkval[len - 1] != '/')	--len;      result = (char *) malloc (len + 1);      if (result == NULL)	result = (char *) -1;      else if (len == 1)	memcpy (result, "/", 2);      else	*((char *) __mempcpy (result, linkval, len - 1)) = '\0';    }  else    {      result = (char *) -1;      /* We use the environment variable LD_ORIGIN_PATH.  If it is set make	 a copy and strip out trailing slashes.  */      if (GLRO(dl_origin_path) != NULL)	{	  size_t len = strlen (GLRO(dl_origin_path));	  result = (char *) malloc (len + 1);	  if (result == NULL)	    result = (char *) -1;	  else	    {	      char *cp = __mempcpy (result, GLRO(dl_origin_path), len);	      while (cp > result + 1 && cp[-1] == '/')		--cp;	      *cp = '\0';	    }	}    }  return result;}