windows-nt/Source/XPSP1/NT/ds/netapi/netlib/strtail.c
2020-09-26 16:20:57 +08:00

117 lines
1.6 KiB
C

/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
strtail.c
Abstract:
Contains:
strtail
ReverseString
Author:
Richard L. Firth (rfirth) 04-Apr-1991
Revision History:
--*/
#include "nticanon.h"
//
// prototypes
//
LPTSTR
ReverseString(
IN OUT LPTSTR String
);
//
// routines
//
LPTSTR
strtail(
IN LPTSTR str1,
IN LPTSTR str2
)
/*++
Routine Description:
strtail returns a pointer to the longest trailing substring within str1
consisting of characters contained in the set pointed at by str2
Arguments:
str1 pointer to string in which to find longest trailing substring
str2 pointer to string of characters commprising substring
Return Value:
pointer to longest trailing substring or end of string
--*/
{
int index;
//
// reverse subject string
// get index of first non-matching character in target string
// re-reverse subject string
//
ReverseString(str1);
index = STRSPN(str1, str2);
ReverseString(str1);
return str1+STRLEN(str1)-index;
}
LPTSTR
ReverseString(
IN OUT LPTSTR String
)
/*++
Routine Description:
Reverses a UNICODE string (LPWSTR)
Arguments:
String - to be reversed. Reverses string in place
Return Value:
pointer to String
--*/
{
DWORD len = STRLEN(String);
DWORD i = 0;
DWORD j = len - 1;
TCHAR tmp;
len /= 2;
while (len) {
tmp = String[i];
String[i] = String[j];
String[j] = tmp;
++i;
--j;
--len;
}
return String;
}