| /*---------------------------------------------------------------------------* |
| * 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 |
| } |