diff options
Diffstat (limited to 'portable/src/pLastError.c')
-rw-r--r-- | portable/src/pLastError.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/portable/src/pLastError.c b/portable/src/pLastError.c new file mode 100644 index 0000000..446be08 --- /dev/null +++ b/portable/src/pLastError.c @@ -0,0 +1,65 @@ +/*---------------------------------------------------------------------------* + * pLastError.c * + * * + * Copyright 2007, 2008 Nuance Communciations, Inc. * + * * + * Licensed under the Apache License, Version 2.0 (the 'License'); * + * you may not use this file except in compliance with the License. * + * * + * You may obtain a copy of the License at * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an 'AS IS' BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + * * + *---------------------------------------------------------------------------*/ + +#include "pLastError.h" +#include "plog.h" + +void printGetLastErrorInternal(const LCHAR* text, char* file, int line) +{ +#ifdef _WIN32 + LCHAR* msg; + + if (FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + GetLastError(), + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */ + (LPTSTR) &msg, + 0, + NULL)) + { + ESR_BOOL isInit; + ESR_ReturnCode rc; + msg[LSTRLEN(msg)-2] = L('\0'); /* cut off newline character */ + + rc = PLogIsInitialized(&isInit); + if (rc != ESR_SUCCESS) + isInit = FALSE; + if (isInit) + PLogError(L("%s: %s"), text, msg); + else + pfprintf(PSTDERR, L("[%s:%d] %s: %s\n"), file, line, text, msg); + LocalFree(msg); + } +#elif defined(__vxworks) + int err; + + err = errnoGet(); /* get the error status value of the calling task */ +#ifndef NDEBUG + /* printErrno(err); */ /* need special flag to build Simulator */ +#endif + pfprintf(PSTDERR, "[%s:%d] %s, errno = %x\n", file, line, text, err); + +#elif (OS == OS_UNIX) + +#else +#error("Have not implemented yet!!!") +#endif +} |