Back to index

glibc  2.9
link.c File Reference
#include <errno.h>
#include <stddef.h>
#include <unistd.h>
#include <hurd.h>

Go to the source code of this file.


int __link (char *from, const char *to) const

Function Documentation

int __link ( char *  from,
const char *  to 
) const

Definition at line 26 of file link.c.

  error_t err;
  file_t oldfile, linknode, todir;
  char *toname;

  oldfile = __file_name_lookup (from, 0, 0);
  if (oldfile == MACH_PORT_NULL)
    return -1;

  /* The file_getlinknode RPC returns the port that should be passed to
     the receiving filesystem (the one containing TODIR) in dir_link.  */

  err = __file_getlinknode (oldfile, &linknode);
  __mach_port_deallocate (__mach_task_self (), oldfile);
  if (err)
    return __hurd_fail (err);

  todir = __file_name_split (to, &toname);
  if (todir != MACH_PORT_NULL)
      err = __dir_link (todir, linknode, toname, 1);
      __mach_port_deallocate (__mach_task_self (), todir);
  __mach_port_deallocate (__mach_task_self (), linknode);
  if (todir == MACH_PORT_NULL)
    return -1;

  if (err)
    return __hurd_fail (err);
  return 0;

Here is the call graph for this function: