39 lines
654 B
C
39 lines
654 B
C
/* link.c
|
|
Link two files. */
|
|
|
|
#include "uucp.h"
|
|
|
|
#include "uudefs.h"
|
|
#include "sysdep.h"
|
|
#include "system.h"
|
|
|
|
#include <errno.h>
|
|
|
|
boolean
|
|
fsysdep_link (zfrom, zto, pfworked)
|
|
const char *zfrom;
|
|
const char *zto;
|
|
boolean *pfworked;
|
|
{
|
|
*pfworked = FALSE;
|
|
if (link (zfrom, zto) == 0)
|
|
{
|
|
*pfworked = TRUE;
|
|
return TRUE;
|
|
}
|
|
if (errno == ENOENT)
|
|
{
|
|
if (! fsysdep_make_dirs (zto, TRUE))
|
|
return FALSE;
|
|
if (link (zfrom, zto) == 0)
|
|
{
|
|
*pfworked = TRUE;
|
|
return TRUE;
|
|
}
|
|
}
|
|
if (errno == EXDEV)
|
|
return TRUE;
|
|
ulog (LOG_ERROR, "link (%s, %s): %s", zfrom, zto, strerror (errno));
|
|
return FALSE;
|
|
}
|