|
reSIProcate/rutil
9694
|
00001 00002 #include <windows.h> 00003 #include "WceCompat.hxx" 00004 00005 extern "C" int errno=0; 00006 00007 static char* messages[] = { 00008 /*0 */ "No error", 00009 /*EPERM */ "Operation not permitted", 00010 /*ENOENT */ "No such file or directory", 00011 /*ESRCH */ "No such process", 00012 /*EINTR */ "Interrupted system call", 00013 /*EIO */ "I/O error", 00014 /*ENXIO */ "No such device or address", 00015 /*E2BIG */ "Arg list too long", 00016 /*ENOEXEC */ "Exec format error", 00017 /*EBADF */ "Bad file descriptor", 00018 /*ECHILD */ "No child processes", 00019 /*EAGAIN */ "Resource temporarily unavailable", 00020 /*ENOMEM */ "Not enough memory", 00021 /*EACCES */ "Permission denied", 00022 /*EFAULT */ "Bad address", 00023 /*15 */ "Unknown error", // ENOTBLK "Block device required" 00024 /*EBUSY */ "Device or resource busy", 00025 /*EEXIST */ "File exists", 00026 /*EXDEV */ "Improper link", // "Cross-device link" 00027 /*ENODEV */ "No such device", 00028 /*ENOTDIR */ "Not a directory", 00029 /*EISDIR */ "Is a directory", 00030 /*EINVAL */ "Invalid argument", 00031 /*ENFILE */ "Too many open files in system", 00032 /*EMFILE */ "Too many open files", 00033 /*ENOTTY */ "Inappropriate I/O control operation", // "Not a character device" 00034 /*26 */ "Unknown error", // ETXTBSY "Text file busy" 00035 /*EFBIG */ "File too large", 00036 /*ENOSPC */ "No space left on device", 00037 /*ESPIPE */ "Invalid seek", // "Illegal seek" 00038 /*EROFS */ "Read-only file system", 00039 /*EMLINK */ "Too many links", 00040 /*EPIPE */ "Broken pipe", 00041 /*EDOM */ "Domain error", // "Math arg out of domain of func" 00042 /*ERANGE */ "Result too large", // "Math result out of range" 00043 /*35 */ "Unknown error", // ENOMSG "No message of desired type" 00044 /*EDEADLK */ "Resource deadlock avoided", // EIDRM "Identifier removed" 00045 /*37 */ "Unknown error", // ECHRNG "Channel number out of range" 00046 /*ENAMETOOLONG*/ "Filename too long", 00047 /*ENOLCK */ "No locks available", 00048 /*ENOSYS */ "Function not implemented", 00049 /*ENOTEMPTY */ "Directory not empty", 00050 /*EILSEQ */ "Illegal byte sequence" 00051 }; 00052 static const int NUM_MESSAGES = sizeof(messages)/sizeof(messages[0]); 00053 00054 extern "C" char* __cdecl strerror(int errnum) 00055 { 00056 if (errnum < NUM_MESSAGES) 00057 return messages[errnum]; 00058 return "Unknown error"; 00059 } 00060 00061 //.dcm. wincece lacks this function(actually no time.h)--could port from BSD 00062 // size_t __cdecl strftime ( 00063 // char *string, 00064 // size_t maxsize, 00065 // const char *format, 00066 // const struct tm *timeptr 00067 // ) 00068 // { 00069 // return (_Strftime(string, maxsize, format, timeptr, 0)); 00070 // } 00071 00072 namespace resip 00073 { 00074 // ******************************************************************************* 00075 00076 wchar_t* ToWString(const char *str) 00077 { 00078 if (!str) return 0; 00079 00080 int dCharacters = MultiByteToWideChar( CP_UTF8, 0, str,strlen(str)+1, 0,0); 00081 wchar_t *wszStr = new wchar_t[dCharacters+1]; 00082 MultiByteToWideChar( CP_UTF8, 0, str,-1, wszStr,dCharacters); 00083 return wszStr; 00084 }; 00085 00086 char* FromWString(const wchar_t *wstr) 00087 { 00088 if (!wstr) return 0; 00089 00090 int dCharacters = WideCharToMultiByte( CP_UTF8, 0, wstr,lstrlen(wstr)+1, 0,0,0,0 ); 00091 char *str = new char[dCharacters +1]; 00092 WideCharToMultiByte( CP_UTF8, 0, wstr,-1, str,dCharacters ,0,0 ); 00093 return str; 00094 }; 00095 00096 void FreeWString(wchar_t* wstr) 00097 { 00098 if (wstr) 00099 delete wstr; 00100 } 00101 00102 void FreeString(char* str) 00103 { 00104 if (str) 00105 delete str; 00106 } 00107 00108 }
1.7.5.1