windows-nt/Source/XPSP1/NT/base/fs/ntfs/fu/hardlink.c
2020-09-26 16:20:57 +08:00

90 lines
1.7 KiB
C

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
hardlink.c
Abstract:
This file contains code for commands that affect hardlinks.
Author:
Wesley Witt [wesw] 1-March-2000
Revision History:
--*/
#include <precomp.h>
INT
HardLinkHelp(
IN INT argc,
IN PWSTR argv[]
)
{
DisplayMsg( MSG_USAGE_HARDLINK );
return EXIT_CODE_SUCCESS;
}
INT
CreateHardLinkFile(
IN INT argc,
IN PWSTR argv[]
)
{
PWSTR Filename1 = NULL;
PWSTR Filename2 = NULL;
INT ExitCode = EXIT_CODE_SUCCESS;
do {
if (argc != 2) {
DisplayMsg( MSG_USAGE_HARDLINK_CREATE );
if (argc != 0) {
ExitCode = EXIT_CODE_FAILURE;
}
break;
}
Filename1 = GetFullPath( argv[0] );
if (!Filename1) {
DisplayError();
ExitCode = EXIT_CODE_FAILURE;
break;
}
Filename2 = GetFullPath( argv[1] );
if (!Filename2) {
DisplayError();
ExitCode = EXIT_CODE_FAILURE;
break;
}
if ((!IsVolumeLocalNTFS( Filename1[0] )) || (!IsVolumeLocalNTFS( Filename2[0] ))) {
DisplayMsg( MSG_NTFS_REQUIRED );
ExitCode = EXIT_CODE_FAILURE;
break;
}
if (CreateHardLink( Filename1, Filename2, NULL )) {
DisplayMsg( MSG_HARDLINK_CREATED, Filename1, Filename2 );
} else {
if (GetLastError( ) == ERROR_NOT_SAME_DEVICE) {
DisplayMsg( MSG_NOT_SAME_DEVICE );
} else {
DisplayError();
}
ExitCode = EXIT_CODE_FAILURE;
}
} while ( FALSE );
free( Filename1 );
free( Filename2 );
return ExitCode;
}