windows-nt/Source/XPSP1/NT/sdktools/rcdll/rcpputil.c
2020-09-26 16:20:57 +08:00

77 lines
2.2 KiB
C

/************************************************************************/
/* */
/* RCPP - Resource Compiler Pre-Processor for NT system */
/* */
/* RCPPTIL.C - Utility routines for RCPP */
/* */
/* 27-Nov-90 w-BrianM Update for NT from PM SDK RCPP */
/* */
/************************************************************************/
#include "rc.h"
extern void error(int);
extern CHAR Msg_Text[];
extern PCHAR Msg_Temp;
/************************************************************************
* PSTRDUP - Create a duplicate of string s and return a pointer to it.
************************************************************************/
WCHAR *
pstrdup(
WCHAR *s
)
{
return(wcscpy((WCHAR *)MyAlloc((wcslen(s) + 1) * sizeof(WCHAR)), s));
}
/************************************************************************
** pstrndup : copies n bytes from the string to a newly allocated
** near memory location.
************************************************************************/
WCHAR *
pstrndup(
WCHAR *s,
int n
)
{
WCHAR *r;
WCHAR *res;
r = res = (WCHAR *) MyAlloc((n+1) * sizeof(WCHAR));
if (res == NULL) {
strcpy (Msg_Text, GET_MSG (1002));
error(1002);
return NULL;
}
__try {
for (; n--; r++, s++) {
*r = *s;
}
} __except(EXCEPTION_EXECUTE_HANDLER) {
n++;
while (n--) {
*r++ = L'\0';
}
}
*r = L'\0';
return(res);
}
/************************************************************************
** strappend : appends src to the dst,
** returns a ptr in dst to the null terminator.
************************************************************************/
WCHAR *
strappend(
register WCHAR *dst,
register WCHAR *src
)
{
while ((*dst++ = *src++) != 0);
return(--dst);
}