summaryrefslogtreecommitdiff
path: root/portable/src/pLastError.c
diff options
context:
space:
mode:
Diffstat (limited to 'portable/src/pLastError.c')
-rw-r--r--portable/src/pLastError.c65
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
+}