//+----------------------------------------------------------------------------
//
//  Copyright (C) 1992, Microsoft Corporation.
//
//  File:   DfsRtl.c
//
//  Contents:
//
//  Functions:  DfsRtlDeleteFile - Deletes a file given its name.
//              DfsRtlPrefixPath - Is one path a prefix of another?
//
//  History:     27 May 1992 PeterCo Created.
//
//-----------------------------------------------------------------------------

#ifdef KERNEL_MODE

#include "dfsprocs.h"
#include "dfsrtl.h"

#define Dbg              (DEBUG_TRACE_RTL)

#endif

#ifdef ALLOC_PRAGMA

#pragma alloc_text( PAGE, DfsRtlPrefixPath )

#endif // ALLOC_PRAGMA


//+-------------------------------------------------------------------
//
//  Function:   DfsRtlPrefixPath, local
//
//  Synopsis:   This routine will return TRUE if the first string argument
//              is a path name prefix of the second string argument.
//
//  Arguments:  [Prefix] -- Pointer to target device object for
//                      the request.
//              [Test] -- Pointer to I/O request packet
//              [IgnoreCase] -- TRUE if the comparison should be done
//                      case-insignificant.
//
//  Returns:    BOOLEAN - TRUE if Prefix is a prefix of Test and the
//                      comparison ends at a path separator character.
//
//--------------------------------------------------------------------


BOOLEAN
DfsRtlPrefixPath (
    IN PUNICODE_STRING Prefix,
    IN PUNICODE_STRING Test,
    IN BOOLEAN IgnoreCase
) {
    int cchPrefix;

    if (Prefix->Length > Test->Length) {

        return FALSE;

    }

    cchPrefix = Prefix->Length / sizeof (WCHAR);

    if (Prefix->Length < Test->Length &&
            Test->Buffer[cchPrefix] != L'\\') {

        return FALSE;

    }

    return( RtlPrefixUnicodeString( Prefix, Test, IgnoreCase ) );

}


