77 lines
2.2 KiB
C
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);
|
|
}
|