diff --git a/devel/angleproject/gendef-32/libEGL.def b/devel/angleproject/gendef-32/libEGL.def new file mode 100644 index 00000000..013b0921 --- /dev/null +++ b/devel/angleproject/gendef-32/libEGL.def @@ -0,0 +1,61 @@ +; +; Definition file of libEGL.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libEGL.dll" +EXPORTS +eglGetError ; Check!!! forwards to _ZN3egl8GetErrorEv@0 in libGLESv2.dll (ordinal 357) +eglGetDisplay ; Check!!! forwards to _ZN3egl10GetDisplayEP5HDC__@4 in libGLESv2.dll (ordinal 309) +eglInitialize ; Check!!! forwards to _ZN3egl10InitializeEPvPiS1_@12 in libGLESv2.dll (ordinal 310) +eglTerminate ; Check!!! forwards to _ZN3egl9TerminateEPv@4 in libGLESv2.dll (ordinal 360) +eglQueryString ; Check!!! forwards to _ZN3egl11QueryStringEPvi@8 in libGLESv2.dll (ordinal 317) +eglGetConfigs ; Check!!! forwards to _ZN3egl10GetConfigsEPvPS0_iPi@16 in libGLESv2.dll (ordinal 308) +eglChooseConfig ; Check!!! forwards to _ZN3egl12ChooseConfigEPvPKiPS0_iPi@20 in libGLESv2.dll (ordinal 320) +eglGetConfigAttrib ; Check!!! forwards to _ZN3egl15GetConfigAttribEPvS0_iPi@16 in libGLESv2.dll (ordinal 335) +eglCreateWindowSurface ; Check!!! forwards to _ZN3egl19CreateWindowSurfaceEPvS0_P6HWND__PKi@16 in libGLESv2.dll (ordinal 345) +eglCreatePbufferSurface ; Check!!! forwards to _ZN3egl20CreatePbufferSurfaceEPvS0_PKi@12 in libGLESv2.dll (ordinal 346) +eglCreatePixmapSurface ; Check!!! forwards to _ZN3egl19CreatePixmapSurfaceEPvS0_P9HBITMAP__PKi@16 in libGLESv2.dll (ordinal 344) +eglDestroySurface ; Check!!! forwards to _ZN3egl14DestroySurfaceEPvS0_@8 in libGLESv2.dll (ordinal 332) +eglQuerySurface ; Check!!! forwards to _ZN3egl12QuerySurfaceEPvS0_iPi@16 in libGLESv2.dll (ordinal 323) +eglBindAPI ; Check!!! forwards to _ZN3egl7BindAPIEj@4 in libGLESv2.dll (ordinal 356) +eglQueryAPI ; Check!!! forwards to _ZN3egl8QueryAPIEv@0 in libGLESv2.dll (ordinal 358) +eglWaitClient ; Check!!! forwards to _ZN3egl10WaitClientEv@0 in libGLESv2.dll (ordinal 311) +eglReleaseThread ; Check!!! forwards to _ZN3egl13ReleaseThreadEv@0 in libGLESv2.dll (ordinal 327) +eglCreatePbufferFromClientBuffer ; Check!!! forwards to _ZN3egl29CreatePbufferFromClientBufferEPvjS0_S0_PKi@20 in libGLESv2.dll (ordinal 354) +eglSurfaceAttrib ; Check!!! forwards to _ZN3egl13SurfaceAttribEPvS0_ii@16 in libGLESv2.dll (ordinal 328) +eglBindTexImage ; Check!!! forwards to _ZN3egl12BindTexImageEPvS0_i@12 in libGLESv2.dll (ordinal 319) +eglReleaseTexImage ; Check!!! forwards to _ZN3egl15ReleaseTexImageEPvS0_i@12 in libGLESv2.dll (ordinal 337) +eglSwapInterval ; Check!!! forwards to _ZN3egl12SwapIntervalEPvi@8 in libGLESv2.dll (ordinal 324) +eglCreateContext ; Check!!! forwards to _ZN3egl13CreateContextEPvS0_S0_PKi@16 in libGLESv2.dll (ordinal 325) +eglDestroyContext ; Check!!! forwards to _ZN3egl14DestroyContextEPvS0_@8 in libGLESv2.dll (ordinal 331) +eglMakeCurrent ; Check!!! forwards to _ZN3egl11MakeCurrentEPvS0_S0_S0_@16 in libGLESv2.dll (ordinal 316) +eglGetCurrentContext ; Check!!! forwards to _ZN3egl17GetCurrentContextEv@0 in libGLESv2.dll (ordinal 339) +eglGetCurrentSurface ; Check!!! forwards to _ZN3egl17GetCurrentSurfaceEi@4 in libGLESv2.dll (ordinal 341) +eglGetCurrentDisplay ; Check!!! forwards to _ZN3egl17GetCurrentDisplayEv@0 in libGLESv2.dll (ordinal 340) +eglQueryContext ; Check!!! forwards to _ZN3egl12QueryContextEPvS0_iPi@16 in libGLESv2.dll (ordinal 322) +eglWaitGL ; Check!!! forwards to _ZN3egl6WaitGLEv@0 in libGLESv2.dll (ordinal 355) +eglWaitNative ; Check!!! forwards to _ZN3egl10WaitNativeEi@4 in libGLESv2.dll (ordinal 312) +eglSwapBuffers ; Check!!! forwards to _ZN3egl11SwapBuffersEPvS0_@8 in libGLESv2.dll (ordinal 318) +eglCopyBuffers ; Check!!! forwards to _ZN3egl11CopyBuffersEPvS0_P9HBITMAP__@12 in libGLESv2.dll (ordinal 313) +eglGetProcAddress ; Check!!! forwards to _ZN3egl14GetProcAddressEPKc@4 in libGLESv2.dll (ordinal 333) +eglGetPlatformDisplayEXT ; Check!!! forwards to _ZN3egl21GetPlatformDisplayEXTEjPvPKi@12 in libGLESv2.dll (ordinal 349) +eglQuerySurfacePointerANGLE ; Check!!! forwards to _ZN3egl24QuerySurfacePointerANGLEEPvS0_iPS0_@16 in libGLESv2.dll (ordinal 351) +eglPostSubBufferNV ; Check!!! forwards to _ZN3egl15PostSubBufferNVEPvS0_iiii@24 in libGLESv2.dll (ordinal 336) +eglCreateSync ; Check!!! forwards to _ZN3egl10CreateSyncEPvjPKi@12 in libGLESv2.dll (ordinal 307) +eglDestroySync ; Check!!! forwards to _ZN3egl11DestroySyncEPvS0_@8 in libGLESv2.dll (ordinal 315) +eglClientWaitSync ; Check!!! forwards to _ZN3egl14ClientWaitSyncEPvS0_iy@20 in libGLESv2.dll (ordinal 329) +eglGetSyncAttrib ; Check!!! forwards to _ZN3egl13GetSyncAttribEPvS0_iPi@16 in libGLESv2.dll (ordinal 326) +eglCreateImage ; Check!!! forwards to _ZN3egl11CreateImageEPvS0_jS0_PKi@20 in libGLESv2.dll (ordinal 314) +eglDestroyImage ; Check!!! forwards to _ZN3egl12DestroyImageEPvS0_@8 in libGLESv2.dll (ordinal 321) +eglGetPlatformDisplay ; Check!!! forwards to _ZN3egl18GetPlatformDisplayEjPvPKi@12 in libGLESv2.dll (ordinal 342) +eglCreatePlatformWindowSurface ; Check!!! forwards to _ZN3egl27CreatePlatformWindowSurfaceEPvS0_S0_PKi@16 in libGLESv2.dll (ordinal 353) +eglCreatePlatformPixmapSurface ; Check!!! forwards to _ZN3egl27CreatePlatformPixmapSurfaceEPvS0_S0_PKi@16 in libGLESv2.dll (ordinal 352) +eglWaitSync ; Check!!! forwards to _ZN3egl8WaitSyncEPvS0_i@12 in libGLESv2.dll (ordinal 359) +eglQueryDisplayAttribEXT ; Check!!! forwards to _ZN3egl21QueryDisplayAttribEXTEPviPi@12 in libGLESv2.dll (ordinal 350) +eglQueryDeviceAttribEXT ; Check!!! forwards to _ZN3egl20QueryDeviceAttribEXTEPviPi@12 in libGLESv2.dll (ordinal 347) +eglQueryDeviceStringEXT ; Check!!! forwards to _ZN3egl20QueryDeviceStringEXTEPvi@8 in libGLESv2.dll (ordinal 348) +eglCreateImageKHR ; Check!!! forwards to _ZN3egl14CreateImageKHREPvS0_jS0_PKi@20 in libGLESv2.dll (ordinal 330) +eglDestroyImageKHR ; Check!!! forwards to _ZN3egl15DestroyImageKHREPvS0_@8 in libGLESv2.dll (ordinal 334) +eglCreateDeviceANGLE ; Check!!! forwards to _ZN3egl17CreateDeviceANGLEEiPvPKi@12 in libGLESv2.dll (ordinal 338) +eglReleaseDeviceANGLE ; Check!!! forwards to _ZN3egl18ReleaseDeviceANGLEEPv@4 in libGLESv2.dll (ordinal 343) diff --git a/devel/angleproject/gendef-32/libGLESv2.def b/devel/angleproject/gendef-32/libGLESv2.def new file mode 100644 index 00000000..ab69933c --- /dev/null +++ b/devel/angleproject/gendef-32/libGLESv2.def @@ -0,0 +1,672 @@ +; +; Definition file of libGLESv2.dll +; Automatic generated by gendef +; written by Kai Tietz 2008 +; +LIBRARY "libGLESv2.dll" +EXPORTS +glActiveTexture@4 +glAttachShader@8 +glBindAttribLocation@12 +glBindBuffer@8 +glBindFramebuffer@8 +glBindRenderbuffer@8 +glBindTexture@8 +glBlendColor@16 +glBlendEquation@4 +glBlendEquationSeparate@8 +glBlendFunc@8 +glBlendFuncSeparate@16 +glBufferData@16 +glBufferSubData@16 +glCheckFramebufferStatus@4 +glClear@4 +glClearColor@16 +glClearDepthf@4 +glClearStencil@4 +glColorMask@16 +glCompileShader@4 +glCompressedTexImage2D@32 +glCompressedTexSubImage2D@36 +glCopyTexImage2D@32 +glCopyTexSubImage2D@32 +glCreateProgram +glCreateShader@4 +glCullFace@4 +glDeleteBuffers@8 +glDeleteFramebuffers@8 +glDeleteTextures@8 +glDeleteProgram@4 +glDeleteRenderbuffers@8 +glDeleteShader@4 +glDetachShader@8 +glDepthFunc@4 +glDepthMask@4 +glDepthRangef@8 +glDisable@4 +glDisableVertexAttribArray@4 +glDrawArrays@12 +glDrawElements@16 +glEnable@4 +glEnableVertexAttribArray@4 +glFinish +glFlush +glFramebufferRenderbuffer@16 +glFramebufferTexture2D@20 +glFrontFace@4 +glGenBuffers@8 +glGenerateMipmap@4 +glGenFramebuffers@8 +glGenRenderbuffers@8 +glGenTextures@8 +glGetActiveAttrib@28 +glGetActiveUniform@28 +glGetAttachedShaders@16 +glGetAttribLocation@8 +glGetBooleanv@8 +glGetBufferParameteriv@12 +glGetError +glGetFloatv@8 +glGetFramebufferAttachmentParameteriv@16 +glGetIntegerv@8 +glGetProgramiv@12 +glGetProgramInfoLog@16 +glGetRenderbufferParameteriv@12 +glGetShaderiv@12 +glGetShaderInfoLog@16 +glGetShaderPrecisionFormat@16 +glGetShaderSource@16 +glGetString@4 +glGetTexParameterfv@12 +glGetTexParameteriv@12 +glGetUniformfv@12 +glGetUniformiv@12 +glGetUniformLocation@8 +glGetVertexAttribfv@12 +glGetVertexAttribiv@12 +glGetVertexAttribPointerv@12 +glHint@8 +glIsBuffer@4 +glIsEnabled@4 +glIsFramebuffer@4 +glIsProgram@4 +glIsRenderbuffer@4 +glIsShader@4 +glIsTexture@4 +glLineWidth@4 +glLinkProgram@4 +glPixelStorei@8 +glPolygonOffset@8 +glReadPixels@28 +glReleaseShaderCompiler +glRenderbufferStorage@16 +glSampleCoverage@8 +glScissor@16 +glShaderBinary@20 +glShaderSource@16 +glStencilFunc@12 +glStencilFuncSeparate@16 +glStencilMask@4 +glStencilMaskSeparate@8 +glStencilOp@12 +glStencilOpSeparate@16 +glTexImage2D@36 +glTexParameterf@12 +glTexParameterfv@12 +glTexParameteri@12 +glTexParameteriv@12 +glTexSubImage2D@36 +glUniform1f@8 +glUniform1fv@12 +glUniform1i@8 +glUniform1iv@12 +glUniform2f@12 +glUniform2fv@12 +glUniform2i@12 +glUniform2iv@12 +glUniform3f@16 +glUniform3fv@12 +glUniform3i@16 +glUniform3iv@12 +glUniform4f@20 +glUniform4fv@12 +glUniform4i@20 +glUniform4iv@12 +glUniformMatrix2fv@16 +glUniformMatrix3fv@16 +glUniformMatrix4fv@16 +glUseProgram@4 +glValidateProgram@4 +glVertexAttrib1f@8 +glVertexAttrib1fv@8 +glVertexAttrib2f@12 +glVertexAttrib2fv@8 +glVertexAttrib3f@16 +glVertexAttrib3fv@8 +glVertexAttrib4f@20 +glVertexAttrib4fv@8 +glVertexAttribPointer@24 +glViewport@16 +_ZN2gl10BeginQueryEjj@8@8 +_ZN2gl10BindBufferEjj@8@8 +_ZN2gl10BlendColorEffff@16@16 +_ZN2gl10BufferDataEjlPKvj@16@16 +_ZN2gl10ClearColorEffff@16@16 +_ZN2gl10DeleteSyncEP8__GLsync@4@4 +glBlitFramebufferANGLE@40 +glRenderbufferStorageMultisampleANGLE@20 +glDeleteFencesNV@8 +glFinishFenceNV@4 +glGenFencesNV@8 +glGetFenceivNV@12 +glIsFenceNV@4 +glSetFenceNV@8 +glTestFenceNV@4 +_ZN2gl10DrawArraysEjii@12@12 +glGetTranslatedShaderSourceANGLE@16 +glTexStorage2DEXT@20 +glGetGraphicsResetStatusEXT +glReadnPixelsEXT@32 +glGetnUniformfvEXT@16 +glGetnUniformivEXT@16 +glGenQueriesEXT@8 +glDeleteQueriesEXT@8 +glIsQueryEXT@4 +glBeginQueryEXT@8 +glEndQueryEXT@4 +glGetQueryivEXT@12 +glGetQueryObjectuivEXT@12 +glVertexAttribDivisorANGLE@8 +glDrawArraysInstancedANGLE@16 +glDrawElementsInstancedANGLE@20 +glProgramBinaryOES@16 +glGetProgramBinaryOES@20 +_ZN2gl10FenceSync_Ejj@8@8 +_ZN2gl10GenBuffersEiPj@8@8 +glDrawBuffersEXT@8 +glReadBuffer@4 +glDrawRangeElements@24 +glTexImage3D@40 +glTexSubImage3D@44 +glCopyTexSubImage3D@36 +glCompressedTexImage3D@36 +glCompressedTexSubImage3D@44 +glGenQueries@8 +glDeleteQueries@8 +glIsQuery@4 +glBeginQuery@8 +glEndQuery@4 +glGetQueryiv@12 +glGetQueryObjectuiv@12 +glUnmapBuffer@4 +glGetBufferPointerv@12 +glDrawBuffers@8 +glUniformMatrix2x3fv@16 +glUniformMatrix3x2fv@16 +glUniformMatrix2x4fv@16 +glUniformMatrix4x2fv@16 +glUniformMatrix3x4fv@16 +glUniformMatrix4x3fv@16 +glBlitFramebuffer@40 +glRenderbufferStorageMultisample@20 +glFramebufferTextureLayer@20 +glMapBufferRange@16 +glFlushMappedBufferRange@12 +glBindVertexArray@4 +glDeleteVertexArrays@8 +glGenVertexArrays@8 +glIsVertexArray@4 +glGetIntegeri_v@12 +glBeginTransformFeedback@4 +glEndTransformFeedback +glBindBufferRange@20 +glBindBufferBase@12 +glTransformFeedbackVaryings@16 +glGetTransformFeedbackVarying@28 +glVertexAttribIPointer@20 +glGetVertexAttribIiv@12 +glGetVertexAttribIuiv@12 +glVertexAttribI4i@20 +glVertexAttribI4ui@20 +glVertexAttribI4iv@8 +glVertexAttribI4uiv@8 +glGetUniformuiv@12 +glGetFragDataLocation@8 +glUniform1ui@8 +glUniform2ui@12 +glUniform3ui@16 +glUniform4ui@20 +glUniform1uiv@12 +glUniform2uiv@12 +glUniform3uiv@12 +glUniform4uiv@12 +glClearBufferiv@12 +glClearBufferuiv@12 +glClearBufferfv@12 +glClearBufferfi@16 +glGetStringi@8 +glCopyBufferSubData@20 +glGetUniformIndices@16 +glGetActiveUniformsiv@20 +glGetUniformBlockIndex@8 +glGetActiveUniformBlockiv@16 +glGetActiveUniformBlockName@20 +glUniformBlockBinding@12 +glDrawArraysInstanced@16 +glDrawElementsInstanced@20 +glFenceSync@8 +glIsSync@4 +glDeleteSync@4 +glClientWaitSync@16 +glWaitSync@16 +glGetInteger64v@8 +glGetSynciv@20 +glGetInteger64i_v@12 +glGetBufferParameteri64v@12 +glGenSamplers@8 +glDeleteSamplers@8 +glIsSampler@4 +glBindSampler@8 +glSamplerParameteri@12 +glSamplerParameteriv@12 +glSamplerParameterf@12 +glSamplerParameterfv@12 +glGetSamplerParameteriv@12 +glGetSamplerParameterfv@12 +glVertexAttribDivisor@8 +glBindTransformFeedback@8 +glDeleteTransformFeedbacks@8 +glGenTransformFeedbacks@8 +glIsTransformFeedback@4 +glPauseTransformFeedback +glResumeTransformFeedback +glGetProgramBinary@20 +glProgramBinary@16 +glProgramParameteri@12 +glInvalidateFramebuffer@12 +glInvalidateSubFramebuffer@28 +glTexStorage2D@20 +glTexStorage3D@24 +glGetInternalformativ@20 +_ZN2gl10GenQueriesEiPj@8@8 +glMapBufferOES@8 +glUnmapBufferOES@4 +glGetBufferPointervOES@12 +glMapBufferRangeEXT@16 +glFlushMappedBufferRangeEXT@12 +ANGLEPlatformCurrent +ANGLEPlatformInitialize@4 +ANGLEPlatformShutdown +glDiscardFramebufferEXT@12 +glInsertEventMarkerEXT@8 +glPushGroupMarkerEXT@8 +glPopGroupMarkerEXT +glEGLImageTargetTexture2DOES@8 +glEGLImageTargetRenderbufferStorageOES@8 +glBindVertexArrayOES@4 +glDeleteVertexArraysOES@8 +glGenVertexArraysOES@8 +glIsVertexArrayOES@4 +glDebugMessageControlKHR@24 +glDebugMessageInsertKHR@24 +glDebugMessageCallbackKHR@8 +glGetDebugMessageLogKHR@32 +glPushDebugGroupKHR@16 +glPopDebugGroupKHR +glObjectLabelKHR@16 +glGetObjectLabelKHR@20 +glObjectPtrLabelKHR@12 +glGetObjectPtrLabelKHR@16 +glGetPointervKHR@8 +glQueryCounterEXT@8 +glGetQueryObjectivEXT@12 +glGetQueryObjecti64vEXT@12 +glGetQueryObjectui64vEXT@12 +_ZN2gl10GetQueryivEjjPi@12@12 +_ZN2gl10GetStringiEjj@8@8 +_ZN2gl10IsQueryEXTEj@4@4 +_ZN2gl10ReadBufferEj@4@4 +_ZN2gl10ReadPixelsEiiiijjPv@28@28 +_ZN2gl10SetFenceNVEjj@8@8 +_ZN2gl10TexImage2DEjiiiiijjPKv@36@36 +_ZN2gl10TexImage3DEjiiiiiijjPKv@40@40 +_ZN2gl10Uniform1fvEiiPKf@12@12 +_ZN2gl10Uniform1ivEiiPKi@12@12 +_ZN2gl10Uniform1uiEij@8@8 +_ZN2gl10Uniform2fvEiiPKf@12@12 +_ZN2gl10Uniform2ivEiiPKi@12@12 +_ZN2gl10Uniform2uiEijj@12@12 +_ZN2gl10Uniform3fvEiiPKf@12@12 +_ZN2gl10Uniform3ivEiiPKi@12@12 +_ZN2gl10Uniform3uiEijjj@16@16 +_ZN2gl10Uniform4fvEiiPKf@12@12 +_ZN2gl10Uniform4ivEiiPKi@12@12 +_ZN2gl10Uniform4uiEijjjj@20@20 +_ZN2gl10UseProgramEj@4@4 +_ZN2gl11BindSamplerEjj@8@8 +_ZN2gl11BindTextureEjj@8@8 +_ZN2gl11ClearDepthfEf@4@4 +_ZN2gl11DepthRangefEff@8@8 +_ZN2gl11DrawBuffersEiPKj@8@8 +_ZN2gl11EndQueryEXTEj@4@4 +_ZN2gl11GenFencesNVEiPj@8@8 +_ZN2gl11GenSamplersEiPj@8@8 +_ZN2gl11GenTexturesEiPj@8@8 +_ZN2gl11GetBooleanvEjPh@8@8 +_ZN2gl11GetIntegervEjPi@8@8 +_ZN2gl11GetShaderivEjjPi@12@12 +_ZN2gl11LinkProgramEj@4@4 +_ZN2gl11PixelStoreiEji@8@8 +_ZN2gl11StencilFuncEjij@12@12 +_ZN2gl11StencilMaskEj@4@4 +_ZN2gl11TestFenceNVEj@4@4 +_ZN2gl11Uniform1uivEiiPKj@12@12 +_ZN2gl11Uniform2uivEiiPKj@12@12 +_ZN2gl11Uniform3uivEiiPKj@12@12 +_ZN2gl11Uniform4uivEiiPKj@12@12 +_ZN2gl11UnmapBufferEj@4@4 +_ZN2gl12AttachShaderEjj@8@8 +_ZN2gl12ClearStencilEi@4@4 +_ZN2gl12CreateShaderEj@4@4 +_ZN2gl12DeleteShaderEj@4@4 +_ZN2gl12DetachShaderEjj@8@8 +_ZN2gl12DrawElementsEjijPKv@16@16 +_ZN2gl12GetFenceivNVEjjPi@12@12 +_ZN2gl12GetProgramivEjjPi@12@12 +_ZN2gl12GetUniformfvEjiPf@12@12 +_ZN2gl12GetUniformivEjiPi@12@12 +_ZN2gl12MapBufferOESEjj@8@8 +_ZN2gl12ShaderBinaryEiPKjjPKvi@20@20 +_ZN2gl12ShaderSourceEjiPKPKcPKi@16@16 +_ZN2gl12TexStorage2DEjijii@20@20 +_ZN2gl12TexStorage3DEjijiii@24@24 +_ZN2gl13ActiveTextureEj@4@4 +_ZN2gl13BeginQueryEXTEjj@8@8 +_ZN2gl13BlendEquationEj@4@4 +_ZN2gl13BufferSubDataEjllPKv@16@16 +_ZN2gl13ClearBufferfiEjifi@16@16 +_ZN2gl13ClearBufferfvEjiPKf@12@12 +_ZN2gl13ClearBufferivEjiPKi@12@12 +_ZN2gl13CompileShaderEj@4@4 +_ZN2gl13CreateProgramEv@0 +_ZN2gl13DeleteBuffersEiPKj@8@8 +_ZN2gl13DeleteProgramEj@4@4 +_ZN2gl13DeleteQueriesEiPKj@8@8 +_ZN2gl13FinishFenceNVEj@4@4 +_ZN2gl13GenQueriesEXTEiPj@8@8 +_ZN2gl13GetInteger64vEjPx@8@8 +_ZN2gl13GetIntegeri_vEjjPi@12@12 +_ZN2gl13GetQueryivEXTEjjPi@12@12 +_ZN2gl13GetUniformuivEjiPj@12@12 +_ZN2gl13IsFramebufferEj@4@4 +_ZN2gl13IsVertexArrayEj@4@4 +_ZN2gl13PolygonOffsetEff@8@8 +_ZN2gl13ProgramBinaryEjjPKvi@16@16 +_ZN2gl13TexParameterfEjjf@12@12 +_ZN2gl13TexParameteriEjji@12@12 +_ZN2gl13TexSubImage2DEjiiiiijjPKv@36@36 +_ZN2gl13TexSubImage3DEjiiiiiiijjPKv@44@44 +_ZN2gl14BindBufferBaseEjjj@12@12 +_ZN2gl14ClearBufferuivEjiPKj@12@12 +_ZN2gl14ClientWaitSyncEP8__GLsyncjy@16@16 +_ZN2gl14CopyTexImage2DEjijiiiii@32@32 +_ZN2gl14DeleteFencesNVEiPKj@8@8 +_ZN2gl14DeleteSamplersEiPKj@8@8 +_ZN2gl14DeleteTexturesEiPKj@8@8 +_ZN2gl14DrawBuffersEXTEiPKj@8@8 +_ZN2gl14GenerateMipmapEj@4@4 +_ZN2gl14GetPointervKHREjPPv@8@8 +_ZN2gl14IsRenderbufferEj@4@4 +_ZN2gl14MapBufferRangeEjllj@16@16 +_ZN2gl14ObjectLabelKHREjjiPKc@16@16 +_ZN2gl14ReadnPixelsEXTEiiiijjiPv@32@32 +_ZN2gl14SampleCoverageEfh@8@8 +_ZN2gl14TexParameterfvEjjPKf@12@12 +_ZN2gl14TexParameterivEjjPKi@12@12 +_ZN2gl14UnmapBufferOESEj@4@4 +_ZN2gl14VertexAttrib1fEjf@8@8 +_ZN2gl14VertexAttrib2fEjff@12@12 +_ZN2gl14VertexAttrib3fEjfff@16@16 +_ZN2gl14VertexAttrib4fEjffff@20@20 +_ZN2gl15BindBufferRangeEjjjll@20@20 +_ZN2gl15BindFramebufferEjj@8@8 +_ZN2gl15BindVertexArrayEj@4@4 +_ZN2gl15BlitFramebufferEiiiiiiiijj@40@40 +_ZN2gl15GenFramebuffersEiPj@8@8 +_ZN2gl15GenVertexArraysEiPj@8@8 +_ZN2gl15GetActiveAttribEjjiPiS0_PjPc@28@28 +_ZN2gl15GetInteger64i_vEjjPx@12@12 +_ZN2gl15GetShaderSourceEjiPiPc@16@16 +_ZN2gl15QueryCounterEXTEjj@8@8 +_ZN2gl15TexStorage2DEXTEjijii@20@20 +_ZN2gl15ValidateProgramEj@4@4 +_ZN2gl15VertexAttrib1fvEjPKf@8@8 +_ZN2gl15VertexAttrib2fvEjPKf@8@8 +_ZN2gl15VertexAttrib3fvEjPKf@8@8 +_ZN2gl15VertexAttrib4fvEjPKf@8@8 +_ZN2gl15VertexAttribI4iEjiiii@20@20 +_ZN2gl16BindRenderbufferEjj@8@8 +_ZN2gl16DeleteQueriesEXTEiPKj@8@8 +_ZN2gl16GenRenderbuffersEiPj@8@8 +_ZN2gl16GetActiveUniformEjjiPiS0_PjPc@28@28 +_ZN2gl16GetProgramBinaryEjiPiPjPv@20@20 +_ZN2gl16GetShaderInfoLogEjiPiPc@16@16 +_ZN2gl16GetnUniformfvEXTEjiiPf@16@16 +_ZN2gl16GetnUniformivEXTEjiiPi@16@16 +_ZN2gl16IsVertexArrayOESEj@4@4 +_ZN2gl16PopDebugGroupKHREv@0 +_ZN2gl16ProgramBinaryOESEjjPKvi@16@16 +_ZN2gl16UniformMatrix2fvEiihPKf@16@16 +_ZN2gl16UniformMatrix3fvEiihPKf@16@16 +_ZN2gl16UniformMatrix4fvEiihPKf@16@16 +_ZN2gl16VertexAttribI4ivEjPKi@8@8 +_ZN2gl16VertexAttribI4uiEjjjjj@20@20 +_ZN2gl17BlendFuncSeparateEjjjj@16@16 +_ZN2gl17CopyBufferSubDataEjjlll@20@20 +_ZN2gl17CopyTexSubImage2DEjiiiiiii@32@32 +_ZN2gl17CopyTexSubImage3DEjiiiiiiii@36@36 +_ZN2gl17DrawRangeElementsEjjjijPKv@24@24 +_ZN2gl17GetAttribLocationEjPKc@8@8 +_ZN2gl17GetBufferPointervEjjPPv@12@12 +_ZN2gl17GetObjectLabelKHREjjiPiPc@20@20 +_ZN2gl17GetProgramInfoLogEjiPiPc@16@16 +_ZN2gl17GetQueryObjectuivEjjPj@12@12 +_ZN2gl17GetTexParameterfvEjjPf@12@12 +_ZN2gl17GetTexParameterivEjjPi@12@12 +_ZN2gl17GetUniformIndicesEjiPKPKcPj@16@16 +_ZN2gl17GetVertexAttribfvEjjPf@12@12 +_ZN2gl17GetVertexAttribivEjjPi@12@12 +_ZN2gl17MapBufferRangeEXTEjllj@16@16 +_ZN2gl17ObjectPtrLabelKHREPKviPKc@12@12 +_ZN2gl17PopGroupMarkerEXTEv@0 +_ZN2gl17ProgramParameteriEjji@12@12 +_ZN2gl17PushDebugGroupKHREjjiPKc@16@16 +_ZN2gl17SamplerParameterfEjjf@12@12 +_ZN2gl17SamplerParameteriEjji@12@12 +_ZN2gl17StencilOpSeparateEjjjj@16@16 +_ZN2gl17VertexAttribI4uivEjPKj@8@8 +_ZN2gl18BindAttribLocationEjjPKc@12@12 +_ZN2gl18BindVertexArrayOESEj@4@4 +_ZN2gl18DeleteFramebuffersEiPKj@8@8 +_ZN2gl18DeleteVertexArraysEiPKj@8@8 +_ZN2gl18GenVertexArraysOESEiPj@8@8 +_ZN2gl18GetAttachedShadersEjiPiPj@16@16 +_ZN2gl18GetUniformLocationEjPKc@8@8 +_ZN2gl18GetVertexAttribIivEjjPi@12@12 +_ZN2gl18PushGroupMarkerEXTEiPKc@8@8 +_ZN2gl18SamplerParameterfvEjjPKf@12@12 +_ZN2gl18SamplerParameterivEjjPKi@12@12 +_ZN2gl18UniformMatrix2x3fvEiihPKf@16@16 +_ZN2gl18UniformMatrix2x4fvEiihPKf@16@16 +_ZN2gl18UniformMatrix3x2fvEiihPKf@16@16 +_ZN2gl18UniformMatrix3x4fvEiihPKf@16@16 +_ZN2gl18UniformMatrix4x2fvEiihPKf@16@16 +_ZN2gl18UniformMatrix4x3fvEiihPKf@16@16 +_ZN2gl19DeleteRenderbuffersEiPKj@8@8 +_ZN2gl19DrawArraysInstancedEjiii@16@16 +_ZN2gl19GetActiveUniformsivEjiPKjjPi@20@20 +_ZN2gl19GetFragDataLocationEjPKc@8@8 +_ZN2gl19GetInternalformativEjjjiPi@20@20 +_ZN2gl19GetProgramBinaryOESEjiPiPjPv@20@20 +_ZN2gl19GetQueryObjectivEXTEjjPi@12@12 +_ZN2gl19GetVertexAttribIuivEjjPj@12@12 +_ZN2gl19IsTransformFeedbackEj@4@4 +_ZN2gl19RenderbufferStorageEjjii@16@16 +_ZN2gl19StencilFuncSeparateEjjij@16@16 +_ZN2gl19StencilMaskSeparateEjj@8@8 +_ZN2gl19UniformBlockBindingEjjj@12@12 +_ZN2gl19VertexAttribDivisorEjj@8@8 +_ZN2gl19VertexAttribPointerEjijhiPKv@24@24 +_ZN2gl20BlitFramebufferANGLEEiiiiiiiijj@40@40 +_ZN2gl20CompressedTexImage2DEjijiiiiPKv@32@32 +_ZN2gl20CompressedTexImage3DEjijiiiiiPKv@36@36 +_ZN2gl20EndTransformFeedbackEv@0 +_ZN2gl20FramebufferTexture2DEjjjji@20@20 +_ZN2gl20GetBufferParameterivEjjPi@12@12 +_ZN2gl20GetBufferPointervOESEjjPPv@12@12 +_ZN2gl20GetObjectPtrLabelKHREPKviPiPc@16@16 +_ZN2gl20GetQueryObjectuivEXTEjjPj@12@12 +_ZN2gl20GetUniformBlockIndexEjPKc@8@8 +_ZN2gl20InsertEventMarkerEXTEiPKc@8@8 +_ZN2gl20VertexAttribIPointerEjijiPKv@20@20 +_ZN2gl21BindTransformFeedbackEjj@8@8 +_ZN2gl21BlendEquationSeparateEjj@8@8 +_ZN2gl21DebugMessageInsertKHREjjjjiPKc@24@24 +_ZN2gl21DeleteVertexArraysOESEiPKj@8@8 +_ZN2gl21DiscardFramebufferEXTEjiPKj@12@12 +_ZN2gl21DrawElementsInstancedEjijPKvi@20@20 +_ZN2gl21GenTransformFeedbacksEiPj@8@8 +_ZN2gl21GetDebugMessageLogKHREjiPjS0_S0_S0_PiPc@32@32 +_ZN2gl21GetQueryObjecti64vEXTEjjPx@12@12 +_ZN2gl21GetSamplerParameterfvEjjPf@12@12 +_ZN2gl21GetSamplerParameterivEjjPi@12@12 +_ZN2gl21InvalidateFramebufferEjiPKj@12@12 +_ZN2gl21ReleaseShaderCompilerEv@0 +_ZN2gl22BeginTransformFeedbackEj@4@4 +_ZN2gl22CheckFramebufferStatusEj@4@4 +_ZN2gl22DebugMessageControlKHREjjjiPKjh@24@24 +_ZN2gl22FlushMappedBufferRangeEjll@12@12 +_ZN2gl22GetBufferParameteri64vEjjPx@12@12 +_ZN2gl22GetQueryObjectui64vEXTEjjPy@12@12 +_ZN2gl22PauseTransformFeedbackEv@0 +_ZN2gl23CompressedTexSubImage2DEjiiiiijiPKv@36@36 +_ZN2gl23CompressedTexSubImage3DEjiiiiiiijiPKv@44@44 +_ZN2gl23DebugMessageCallbackKHREPFvjjjjiPKcPKvES3_@8@8 +_ZN2gl23EnableVertexAttribArrayEj@4@4 +_ZN2gl23FramebufferRenderbufferEjjjj@16@16 +_ZN2gl23FramebufferTextureLayerEjjjii@20@20 +_ZN2gl23GetActiveUniformBlockivEjjjPi@16@16 +_ZN2gl23GetVertexAttribPointervEjjPPv@12@12 +_ZN2gl23ResumeTransformFeedbackEv@0 +_ZN2gl24DeleteTransformFeedbacksEiPKj@8@8 +_ZN2gl24DisableVertexAttribArrayEj@4@4 +_ZN2gl24DrawArraysInstancedANGLEEjiii@16@16 +_ZN2gl24GetShaderPrecisionFormatEjjPiS0_@16@16 +_ZN2gl24InvalidateSubFramebufferEjiPKjiiii@28@28 +_ZN2gl24VertexAttribDivisorANGLEEjj@8@8 +_ZN2gl25FlushMappedBufferRangeEXTEjll@12@12 +_ZN2gl25GetActiveUniformBlockNameEjjiPiPc@20@20 +_ZN2gl25GetGraphicsResetStatusEXTEv@0 +_ZN2gl25TransformFeedbackVaryingsEjiPKPKcj@16@16 +_ZN2gl26DrawElementsInstancedANGLEEjijPKvi@20@20 +_ZN2gl26EGLImageTargetTexture2DOESEjPv@8@8 +_ZN2gl26GetRenderbufferParameterivEjjPi@12@12 +_ZN2gl27GetTransformFeedbackVaryingEjjiPiS0_PjPc@28@28 +_ZN2gl30GetTranslatedShaderSourceANGLEEjiPiPc@16@16 +_ZN2gl30RenderbufferStorageMultisampleEjijii@20@20 +_ZN2gl35GetFramebufferAttachmentParameterivEjjjPi@16@16 +_ZN2gl35RenderbufferStorageMultisampleANGLEEjijii@20@20 +_ZN2gl36EGLImageTargetRenderbufferStorageOESEjPv@8@8 +_ZN2gl4HintEjj@8@8 +_ZN2gl5ClearEj@4@4 +_ZN2gl5FlushEv@0 +_ZN2gl6EnableEj@4@4 +_ZN2gl6FinishEv@0 +_ZN2gl6IsSyncEP8__GLsync@4@4 +_ZN2gl7DisableEj@4@4 +_ZN2gl7IsQueryEj@4@4 +_ZN2gl7ScissorEiiii@16@16 +_ZN2gl8CullFaceEj@4@4 +_ZN2gl8EndQueryEj@4@4 +_ZN2gl8GetErrorEv@0 +_ZN2gl8IsBufferEj@4@4 +_ZN2gl8IsShaderEj@4@4 +_ZN2gl8ViewportEiiii@16@16 +_ZN2gl8WaitSyncEP8__GLsyncjy@16@16 +_ZN2gl9BlendFuncEjj@8@8 +_ZN2gl9ColorMaskEhhhh@16@16 +_ZN2gl9DepthFuncEj@4@4 +_ZN2gl9DepthMaskEh@4@4 +_ZN2gl9FrontFaceEj@4@4 +_ZN2gl9GetFloatvEjPf@8@8 +_ZN2gl9GetStringEj@4@4 +_ZN2gl9GetSyncivEP8__GLsyncjiPiS2_@20@20 +_ZN2gl9IsEnabledEj@4@4 +_ZN2gl9IsFenceNVEj@4@4 +_ZN2gl9IsProgramEj@4@4 +_ZN2gl9IsSamplerEj@4@4 +_ZN2gl9IsTextureEj@4@4 +_ZN2gl9LineWidthEf@4@4 +_ZN2gl9StencilOpEjjj@12@12 +_ZN2gl9Uniform1fEif@8@8 +_ZN2gl9Uniform1iEii@8@8 +_ZN2gl9Uniform2fEiff@12@12 +_ZN2gl9Uniform2iEiii@12@12 +_ZN2gl9Uniform3fEifff@16@16 +_ZN2gl9Uniform3iEiiii@16@16 +_ZN2gl9Uniform4fEiffff@20@20 +_ZN2gl9Uniform4iEiiiii@20@20 +_ZN3egl10CreateSyncEPvjPKi@12@12 +_ZN3egl10GetConfigsEPvPS0_iPi@16@16 +_ZN3egl10GetDisplayEP5HDC__@4@4 +_ZN3egl10InitializeEPvPiS1_@12@12 +_ZN3egl10WaitClientEv@0 +_ZN3egl10WaitNativeEi@4@4 +_ZN3egl11CopyBuffersEPvS0_P9HBITMAP__@12@12 +_ZN3egl11CreateImageEPvS0_jS0_PKi@20@20 +_ZN3egl11DestroySyncEPvS0_@8@8 +_ZN3egl11MakeCurrentEPvS0_S0_S0_@16@16 +_ZN3egl11QueryStringEPvi@8@8 +_ZN3egl11SwapBuffersEPvS0_@8@8 +_ZN3egl12BindTexImageEPvS0_i@12@12 +_ZN3egl12ChooseConfigEPvPKiPS0_iPi@20@20 +_ZN3egl12DestroyImageEPvS0_@8@8 +_ZN3egl12QueryContextEPvS0_iPi@16@16 +_ZN3egl12QuerySurfaceEPvS0_iPi@16@16 +_ZN3egl12SwapIntervalEPvi@8@8 +_ZN3egl13CreateContextEPvS0_S0_PKi@16@16 +_ZN3egl13GetSyncAttribEPvS0_iPi@16@16 +_ZN3egl13ReleaseThreadEv@0 +_ZN3egl13SurfaceAttribEPvS0_ii@16@16 +_ZN3egl14ClientWaitSyncEPvS0_iy@20@20 +_ZN3egl14CreateImageKHREPvS0_jS0_PKi@20@20 +_ZN3egl14DestroyContextEPvS0_@8@8 +_ZN3egl14DestroySurfaceEPvS0_@8@8 +_ZN3egl14GetProcAddressEPKc@4@4 +_ZN3egl15DestroyImageKHREPvS0_@8@8 +_ZN3egl15GetConfigAttribEPvS0_iPi@16@16 +_ZN3egl15PostSubBufferNVEPvS0_iiii@24@24 +_ZN3egl15ReleaseTexImageEPvS0_i@12@12 +_ZN3egl17CreateDeviceANGLEEiPvPKi@12@12 +_ZN3egl17GetCurrentContextEv@0 +_ZN3egl17GetCurrentDisplayEv@0 +_ZN3egl17GetCurrentSurfaceEi@4@4 +_ZN3egl18GetPlatformDisplayEjPvPKi@12@12 +_ZN3egl18ReleaseDeviceANGLEEPv@4@4 +_ZN3egl19CreatePixmapSurfaceEPvS0_P9HBITMAP__PKi@16@16 +_ZN3egl19CreateWindowSurfaceEPvS0_P6HWND__PKi@16@16 +_ZN3egl20CreatePbufferSurfaceEPvS0_PKi@12@12 +_ZN3egl20QueryDeviceAttribEXTEPviPi@12@12 +_ZN3egl20QueryDeviceStringEXTEPvi@8@8 +_ZN3egl21GetPlatformDisplayEXTEjPvPKi@12@12 +_ZN3egl21QueryDisplayAttribEXTEPviPi@12@12 +_ZN3egl24QuerySurfacePointerANGLEEPvS0_iPS0_@16@16 +_ZN3egl27CreatePlatformPixmapSurfaceEPvS0_S0_PKi@16@16 +_ZN3egl27CreatePlatformWindowSurfaceEPvS0_S0_PKi@16@16 +_ZN3egl29CreatePbufferFromClientBufferEPvjS0_S0_PKi@20@20 +_ZN3egl6WaitGLEv@0 +_ZN3egl7BindAPIEj@4@4 +_ZN3egl8GetErrorEv@0 +_ZN3egl8QueryAPIEv@0 +_ZN3egl8WaitSyncEPvS0_i@12@12 +_ZN3egl9TerminateEPv@4@4 diff --git a/devel/angleproject/misc/dlls_msvcrt_mbcs.c b/devel/angleproject/misc/dlls_msvcrt_mbcs.c new file mode 100644 index 00000000..837ac026 --- /dev/null +++ b/devel/angleproject/misc/dlls_msvcrt_mbcs.c @@ -0,0 +1,1809 @@ +/* + * msvcrt.dll mbcs functions + * + * Copyright 1999 Alexandre Julliard + * Copyright 2000 Jon Griffths + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + * FIXME + * Not currently binary compatible with win32. MSVCRT_mbctype must be + * populated correctly and the ismb* functions should reference it. + */ + +#include "msvcrt.h" +#include "wine/unicode.h" +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); + +unsigned char MSVCRT_mbctype[257] = { 0 }; +static int g_mbcp_is_multibyte = 0; + +int MSVCRT___mb_cur_max = 1; + +/* It seems that the data about valid trail bytes is not available from kernel32 + * so we have to store is here. The format is the same as for lead bytes in CPINFO */ +struct cp_extra_info_t +{ + int cp; + BYTE TrailBytes[MAX_LEADBYTES]; +}; + +static struct cp_extra_info_t g_cpextrainfo[] = +{ + {932, {0x40, 0x7e, 0x80, 0xfc, 0, 0}}, + {936, {0x40, 0xfe, 0, 0}}, + {949, {0x41, 0xfe, 0, 0}}, + {950, {0x40, 0x7e, 0xa1, 0xfe, 0, 0}}, + {1361, {0x31, 0x7e, 0x81, 0xfe, 0, 0}}, + {20932, {1, 255, 0, 0}}, /* seems to give different results on different systems */ + {0, {1, 255, 0, 0}} /* match all with FIXME */ +}; + +/* Maps multibyte cp932 punctuation marks to single byte equivalents */ +static const unsigned char mbctombb_932_punct[] = { + 0x20,0xa4,0xa1,0x2c,0x2e,0xa5,0x3a,0x3b,0x3f,0x21,0xde,0xdf,0x00,0x00,0x00,0x5e, + 0x7e,0x5f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xb0,0x00,0x00,0x2f,0x00, + 0x00,0x00,0x7c,0x00,0x00,0x60,0x27,0x00,0x22,0x28,0x29,0x00,0x00,0x5b,0x5d,0x7b, + 0x7d,0x00,0x00,0x00,0x00,0xa2,0xa3,0x00,0x00,0x00,0x00,0x2b,0x2d,0x00,0x00,0x00, + 0x00,0x3d,0x00,0x3c,0x3e,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5c, + 0x24,0x00,0x00,0x25,0x23,0x26,0x2a,0x40}; + +/* Maps multibyte cp932 hiragana/katakana to single-byte equivalents */ +static const unsigned char mbctombb_932_kana[] = { + 0xa7,0xb1,0xa8,0xb2,0xa9,0xb3,0xaa,0xb4,0xab,0xb5,0xb6,0xb6,0xb7,0xb7,0xb8,0xb8, + 0xb9,0xb9,0xba,0xba,0xbb,0xbb,0xbc,0xbc,0xbd,0xbd,0xbe,0xbe,0xbf,0xbf,0xc0,0xc0, + 0xc1,0xc1,0xaf,0xc2,0xc2,0xc3,0xc3,0xc4,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xca, + 0xca,0xcb,0xcb,0xcb,0xcc,0xcc,0xcc,0xcd,0xcd,0xcd,0xce,0xce,0xce,0xcf,0xd0,0xd1, + 0xd2,0xd3,0xac,0xd4,0xad,0xd5,0xae,0xd6,0xd7,0xd8,0xd9,0xda,0xdb,0xdc,0xdc,0xb2, + 0xb4,0xa6,0xdd,0xb3,0xb6,0xb9}; + +static MSVCRT_wchar_t msvcrt_mbc_to_wc(unsigned int ch) +{ + MSVCRT_wchar_t chW; + char mbch[2]; + int n_chars; + + if (ch <= 0xff) { + mbch[0] = ch; + n_chars = 1; + } else { + mbch[0] = (ch >> 8) & 0xff; + mbch[1] = ch & 0xff; + n_chars = 2; + } + if (!MultiByteToWideChar(get_locale()->locinfo->lc_codepage, 0, mbch, n_chars, &chW, 1)) + { + WARN("MultiByteToWideChar failed on %x\n", ch); + return 0; + } + return chW; +} + +static inline MSVCRT_size_t u_strlen( const unsigned char *str ) +{ + return strlen( (const char*) str ); +} + +static inline unsigned char* u_strncat( unsigned char* dst, const unsigned char* src, MSVCRT_size_t len ) +{ + return (unsigned char*)strncat( (char*)dst, (const char*)src, len); +} + +static inline int u_strcmp( const unsigned char *s1, const unsigned char *s2 ) +{ + return strcmp( (const char*)s1, (const char*)s2 ); +} + +static inline int u_strcasecmp( const unsigned char *s1, const unsigned char *s2 ) +{ + return strcasecmp( (const char*)s1, (const char*)s2 ); +} + +static inline int u_strncmp( const unsigned char *s1, const unsigned char *s2, MSVCRT_size_t len ) +{ + return strncmp( (const char*)s1, (const char*)s2, len ); +} + +static inline int u_strncasecmp( const unsigned char *s1, const unsigned char *s2, MSVCRT_size_t len ) +{ + return strncasecmp( (const char*)s1, (const char*)s2, len ); +} + +static inline unsigned char *u_strchr( const unsigned char *s, unsigned char x ) +{ + return (unsigned char*) strchr( (const char*)s, x ); +} + +static inline unsigned char *u_strrchr( const unsigned char *s, unsigned char x ) +{ + return (unsigned char*) strrchr( (const char*)s, x ); +} + +static inline unsigned char *u_strtok( unsigned char *s, const unsigned char *delim ) +{ + return (unsigned char*) strtok( (char*)s, (const char*)delim ); +} + +static inline unsigned char *u__strset( unsigned char *s, unsigned char c ) +{ + return (unsigned char*) _strset( (char*)s, c); +} + +static inline unsigned char *u__strnset( unsigned char *s, unsigned char c, MSVCRT_size_t len ) +{ + return (unsigned char*) MSVCRT__strnset( (char*)s, c, len ); +} + +static inline MSVCRT_size_t u_strcspn( const unsigned char *s, const unsigned char *rej ) +{ + return strcspn( (const char *)s, (const char*)rej ); +} + +/********************************************************************* + * __p__mbctype (MSVCRT.@) + */ +unsigned char* CDECL __p__mbctype(void) +{ + return MSVCRT_mbctype; +} + +/********************************************************************* + * ___mb_cur_max_func(MSVCRT.@) + */ +int* CDECL MSVCRT____mb_cur_max_func(void) +{ + return &get_locale()->locinfo->mb_cur_max; +} + +/* ___mb_cur_max_l_func - not exported in native msvcrt */ +int* CDECL ___mb_cur_max_l_func(MSVCRT__locale_t locale) +{ + if(!locale) + locale = get_locale(); + + return &locale->locinfo->mb_cur_max; +} + +/********************************************************************* + * _setmbcp (MSVCRT.@) + */ +int CDECL _setmbcp(int cp) +{ + MSVCRT__locale_t locale = get_locale(); + int newcp; + CPINFO cpi; + BYTE *bytes; + WORD chartypes[256]; + WORD *curr_type; + char bufA[256]; + WCHAR bufW[256]; + int charcount; + int ret; + int i; + + switch (cp) + { + case _MB_CP_ANSI: + newcp = GetACP(); + break; + case _MB_CP_OEM: + newcp = GetOEMCP(); + break; + case _MB_CP_LOCALE: + newcp = locale->locinfo->lc_codepage; + break; + case _MB_CP_SBCS: + newcp = 20127; /* ASCII */ + break; + default: + newcp = cp; + break; + } + + if (!GetCPInfo(newcp, &cpi)) + { + WARN("Codepage %d not found\n", newcp); + *MSVCRT__errno() = MSVCRT_EINVAL; + return -1; + } + + /* setup the _mbctype */ + memset(MSVCRT_mbctype, 0, sizeof(MSVCRT_mbctype)); + + bytes = cpi.LeadByte; + while (bytes[0] || bytes[1]) + { + for (i = bytes[0]; i <= bytes[1]; i++) + MSVCRT_mbctype[i + 1] |= _M1; + bytes += 2; + } + + if (cpi.MaxCharSize > 1) + { + /* trail bytes not available through kernel32 but stored in a structure in msvcrt */ + struct cp_extra_info_t *cpextra = g_cpextrainfo; + + g_mbcp_is_multibyte = 1; + while (TRUE) + { + if (cpextra->cp == 0 || cpextra->cp == newcp) + { + if (cpextra->cp == 0) + FIXME("trail bytes data not available for DBCS codepage %d - assuming all bytes\n", newcp); + + bytes = cpextra->TrailBytes; + while (bytes[0] || bytes[1]) + { + for (i = bytes[0]; i <= bytes[1]; i++) + MSVCRT_mbctype[i + 1] |= _M2; + bytes += 2; + } + break; + } + cpextra++; + } + } + else + g_mbcp_is_multibyte = 0; + + /* we can't use GetStringTypeA directly because we don't have a locale - only a code page + */ + charcount = 0; + for (i = 0; i < 256; i++) + if (!(MSVCRT_mbctype[i + 1] & _M1)) + bufA[charcount++] = i; + + ret = MultiByteToWideChar(newcp, 0, bufA, charcount, bufW, charcount); + if (ret != charcount) + ERR("MultiByteToWideChar of chars failed for cp %d, ret=%d (exp %d), error=%d\n", newcp, ret, charcount, GetLastError()); + + GetStringTypeW(CT_CTYPE1, bufW, charcount, chartypes); + + curr_type = chartypes; + for (i = 0; i < 256; i++) + if (!(MSVCRT_mbctype[i + 1] & _M1)) + { + if ((*curr_type) & C1_UPPER) + MSVCRT_mbctype[i + 1] |= _SBUP; + if ((*curr_type) & C1_LOWER) + MSVCRT_mbctype[i + 1] |= _SBLOW; + curr_type++; + } + + if (newcp == 932) /* CP932 only - set _MP and _MS */ + { + /* On Windows it's possible to calculate the _MP and _MS from CT_CTYPE1 + * and CT_CTYPE3. But as of Wine 0.9.43 we return wrong values what makes + * it hard. As this is set only for codepage 932 we hardcode it what gives + * also faster execution. + */ + for (i = 161; i <= 165; i++) + MSVCRT_mbctype[i + 1] |= _MP; + for (i = 166; i <= 223; i++) + MSVCRT_mbctype[i + 1] |= _MS; + } + + locale->locinfo->lc_collate_cp = newcp; + locale->locinfo->lc_codepage = newcp; + TRACE("(%d) -> %d\n", cp, locale->locinfo->lc_codepage); + return 0; +} + +/********************************************************************* + * _getmbcp (MSVCRT.@) + */ +int CDECL _getmbcp(void) +{ + /* FIXME: get_locale()->mbcinfo->mbcodepage should be used here */ + return get_locale()->locinfo->lc_codepage; +} + +/********************************************************************* + * _mbsnextc(MSVCRT.@) + */ +unsigned int CDECL _mbsnextc(const unsigned char* str) +{ + if(_ismbblead(*str)) + return *str << 8 | str[1]; + return *str; +} + +/********************************************************************* + * _mbctolower(MSVCRT.@) + */ +unsigned int CDECL _mbctolower(unsigned int c) +{ + if (MSVCRT_isleadbyte(c)) + { + FIXME("Handle MBC chars\n"); + return c; + } + return tolower(c); /* ASCII CP or SB char */ +} + +/********************************************************************* + * _mbctoupper(MSVCRT.@) + */ +unsigned int CDECL _mbctoupper(unsigned int c) +{ + if (MSVCRT_isleadbyte(c)) + { + FIXME("Handle MBC chars\n"); + return c; + } + return toupper(c); /* ASCII CP or SB char */ +} + +/********************************************************************* + * _mbctombb (MSVCRT.@) + */ +unsigned int CDECL _mbctombb(unsigned int c) +{ + unsigned int value; + + if(get_locale()->locinfo->lc_codepage == 932) + { + if(c >= 0x829f && c <= 0x82f1) /* Hiragana */ + return mbctombb_932_kana[c - 0x829f]; + if(c >= 0x8340 && c <= 0x8396 && c != 0x837f) /* Katakana */ + return mbctombb_932_kana[c - 0x8340 - (c >= 0x837f ? 1 : 0)]; + if(c >= 0x8140 && c <= 0x8197) /* Punctuation */ + { + value = mbctombb_932_punct[c - 0x8140]; + return value ? value : c; + } + if((c >= 0x824f && c <= 0x8258) || /* Fullwidth digits */ + (c >= 0x8260 && c <= 0x8279)) /* Fullwidth capitals letters */ + return c - 0x821f; + if(c >= 0x8281 && c <= 0x829a) /* Fullwidth small letters */ + return c - 0x8220; + /* all other cases return c */ + } + return c; +} + +/********************************************************************* + * _mbcjistojms(MSVCRT.@) + * + * Converts a jis character to sjis. + * Based on description from + * http://www.slayers.ne.jp/~oouchi/code/jistosjis.html + */ +unsigned int CDECL _mbcjistojms(unsigned int c) +{ + /* Conversion takes place only when codepage is 932. + In all other cases, c is returned unchanged */ + if(get_locale()->locinfo->lc_codepage == 932) + { + if(HIBYTE(c) >= 0x21 && HIBYTE(c) <= 0x7e && + LOBYTE(c) >= 0x21 && LOBYTE(c) <= 0x7e) + { + if(HIBYTE(c) % 2) + c += 0x1f; + else + c += 0x7d; + + if(LOBYTE(c) > 0x7F) + c += 0x1; + + c = (((HIBYTE(c) - 0x21)/2 + 0x81) << 8) | LOBYTE(c); + + if(HIBYTE(c) > 0x9f) + c += 0x4000; + } + else + return 0; /* Codepage is 932, but c can't be converted */ + } + + return c; +} + +/********************************************************************* + * _mbsdec(MSVCRT.@) + */ +unsigned char* CDECL _mbsdec(const unsigned char* start, const unsigned char* cur) +{ + if(get_locale()->locinfo->mb_cur_max > 1) + return (unsigned char *)(_ismbstrail(start,cur-1) ? cur - 2 : cur -1); + + return (unsigned char *)cur - 1; /* ASCII CP or SB char */ +} + +/********************************************************************* + * _mbclen(MSVCRT.@) + */ +unsigned int CDECL _mbclen(const unsigned char* str) +{ + return _ismbblead(*str) ? 2 : 1; +} + +/********************************************************************* + * _mbsinc(MSVCRT.@) + */ +unsigned char* CDECL _mbsinc(const unsigned char* str) +{ + return (unsigned char *)(str + _mbclen(str)); +} + +/********************************************************************* + * _mbsninc(MSVCRT.@) + */ +unsigned char* CDECL _mbsninc(const unsigned char* str, MSVCRT_size_t num) +{ + if(!str) + return NULL; + + while (num > 0 && *str) + { + if (_ismbblead(*str)) + { + if (!*(str+1)) + break; + str++; + } + str++; + num--; + } + + return (unsigned char*)str; +} + +/********************************************************************* + * _mbslen(MSVCRT.@) + */ +MSVCRT_size_t CDECL _mbslen(const unsigned char* str) +{ + MSVCRT_size_t len = 0; + while(*str) + { + if (_ismbblead(*str)) + { + str++; + if (!*str) /* count only full chars */ + break; + } + str++; + len++; + } + return len; +} + +/********************************************************************* + * _mbccpy(MSVCRT.@) + */ +void CDECL _mbccpy(unsigned char* dest, const unsigned char* src) +{ + *dest = *src; + if(_ismbblead(*src)) + *++dest = *++src; /* MB char */ +} + +/********************************************************************* + * _mbsncpy(MSVCRT.@) + * REMARKS + * The parameter n is the number or characters to copy, not the size of + * the buffer. Use _mbsnbcpy for a function analogical to strncpy + */ +unsigned char* CDECL _mbsncpy(unsigned char* dst, const unsigned char* src, MSVCRT_size_t n) +{ + unsigned char* ret = dst; + if(!n) + return dst; + if (g_mbcp_is_multibyte) + { + while (*src && n) + { + n--; + if (_ismbblead(*src)) + { + if (!*(src+1)) + { + *dst++ = 0; + *dst++ = 0; + break; + } + + *dst++ = *src++; + } + + *dst++ = *src++; + } + } + else + { + while (n) + { + n--; + if (!(*dst++ = *src++)) break; + } + } + while (n--) *dst++ = 0; + return ret; +} + +/********************************************************************* + * _mbsnbcpy_s(MSVCRT.@) + * REMARKS + * Unlike _mbsnbcpy this function does not pad the rest of the dest + * string with 0 + */ +int CDECL _mbsnbcpy_s(unsigned char* dst, MSVCRT_size_t size, const unsigned char* src, MSVCRT_size_t n) +{ + MSVCRT_size_t pos = 0; + + if(!dst || size == 0) + return MSVCRT_EINVAL; + if(!src) + { + dst[0] = '\0'; + return MSVCRT_EINVAL; + } + if(!n) + return 0; + + if(g_mbcp_is_multibyte) + { + int is_lead = 0; + while (*src && n) + { + if(pos == size) + { + dst[0] = '\0'; + return MSVCRT_ERANGE; + } + is_lead = (!is_lead && _ismbblead(*src)); + n--; + dst[pos++] = *src++; + } + + if (is_lead) /* if string ends with a lead, remove it */ + dst[pos - 1] = 0; + } + else + { + while (n) + { + n--; + if(pos == size) + { + dst[0] = '\0'; + return MSVCRT_ERANGE; + } + + if(!(*src)) break; + dst[pos++] = *src++; + } + } + + if(pos < size) + dst[pos] = '\0'; + else + { + dst[0] = '\0'; + return MSVCRT_ERANGE; + } + + return 0; +} + +/********************************************************************* + * _mbsnbcpy(MSVCRT.@) + * REMARKS + * Like strncpy this function doesn't enforce the string to be + * NUL-terminated + */ +unsigned char* CDECL _mbsnbcpy(unsigned char* dst, const unsigned char* src, MSVCRT_size_t n) +{ + unsigned char* ret = dst; + if(!n) + return dst; + if(g_mbcp_is_multibyte) + { + int is_lead = 0; + while (*src && n) + { + is_lead = (!is_lead && _ismbblead(*src)); + n--; + *dst++ = *src++; + } + + if (is_lead) /* if string ends with a lead, remove it */ + *(dst - 1) = 0; + } + else + { + while (n) + { + n--; + if (!(*dst++ = *src++)) break; + } + } + while (n--) *dst++ = 0; + return ret; +} + +/********************************************************************* + * _mbscmp(MSVCRT.@) + */ +int CDECL _mbscmp(const unsigned char* str, const unsigned char* cmp) +{ + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int strc, cmpc; + do { + if(!*str) + return *cmp ? -1 : 0; + if(!*cmp) + return 1; + strc = _mbsnextc(str); + cmpc = _mbsnextc(cmp); + if(strc != cmpc) + return strc < cmpc ? -1 : 1; + str +=(strc > 255) ? 2 : 1; + cmp +=(strc > 255) ? 2 : 1; /* equal, use same increment */ + } while(1); + } + return u_strcmp(str, cmp); /* ASCII CP */ +} + +/********************************************************************* + * _mbsicoll(MSVCRT.@) + * FIXME: handle locales. + */ +int CDECL _mbsicoll(const unsigned char* str, const unsigned char* cmp) +{ + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int strc, cmpc; + do { + if(!*str) + return *cmp ? -1 : 0; + if(!*cmp) + return 1; + strc = _mbctolower(_mbsnextc(str)); + cmpc = _mbctolower(_mbsnextc(cmp)); + if(strc != cmpc) + return strc < cmpc ? -1 : 1; + str +=(strc > 255) ? 2 : 1; + cmp +=(strc > 255) ? 2 : 1; /* equal, use same increment */ + } while(1); + } + return u_strcasecmp(str, cmp); /* ASCII CP */ +} + +/********************************************************************* + * _mbscoll(MSVCRT.@) + * Performs a case-sensitive comparison according to the current code page + * RETURN + * _NLSCMPERROR if error + * FIXME: handle locales. + */ +int CDECL _mbscoll(const unsigned char* str, const unsigned char* cmp) +{ + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int strc, cmpc; + do { + if(!*str) + return *cmp ? -1 : 0; + if(!*cmp) + return 1; + strc = _mbsnextc(str); + cmpc = _mbsnextc(cmp); + if(strc != cmpc) + return strc < cmpc ? -1 : 1; + str +=(strc > 255) ? 2 : 1; + cmp +=(strc > 255) ? 2 : 1; /* equal, use same increment */ + } while(1); + } + return u_strcmp(str, cmp); /* ASCII CP */ +} + + +/********************************************************************* + * _mbsicmp(MSVCRT.@) + */ +int CDECL _mbsicmp(const unsigned char* str, const unsigned char* cmp) +{ + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int strc, cmpc; + do { + if(!*str) + return *cmp ? -1 : 0; + if(!*cmp) + return 1; + strc = _mbctolower(_mbsnextc(str)); + cmpc = _mbctolower(_mbsnextc(cmp)); + if(strc != cmpc) + return strc < cmpc ? -1 : 1; + str +=(strc > 255) ? 2 : 1; + cmp +=(strc > 255) ? 2 : 1; /* equal, use same increment */ + } while(1); + } + return u_strcasecmp(str, cmp); /* ASCII CP */ +} + +/********************************************************************* + * _mbsncmp(MSVCRT.@) + */ +int CDECL _mbsncmp(const unsigned char* str, const unsigned char* cmp, MSVCRT_size_t len) +{ + if(!len) + return 0; + + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int strc, cmpc; + while(len--) + { + int inc; + if(!*str) + return *cmp ? -1 : 0; + if(!*cmp) + return 1; + strc = _mbsnextc(str); + cmpc = _mbsnextc(cmp); + if(strc != cmpc) + return strc < cmpc ? -1 : 1; + inc=(strc > 255) ? 2 : 1; /* Equal, use same increment */ + str += inc; + cmp += inc; + } + return 0; /* Matched len chars */ + } + return u_strncmp(str, cmp, len); /* ASCII CP */ +} + +/********************************************************************* + * _mbsnbcmp(MSVCRT.@) + */ +int CDECL _mbsnbcmp(const unsigned char* str, const unsigned char* cmp, MSVCRT_size_t len) +{ + if (!len) + return 0; + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int strc, cmpc; + while (len) + { + int clen; + if(!*str) + return *cmp ? -1 : 0; + if(!*cmp) + return 1; + if (MSVCRT_isleadbyte(*str)) + { + strc=(len>=2)?_mbsnextc(str):0; + clen=2; + } + else + { + strc=*str; + clen=1; + } + if (MSVCRT_isleadbyte(*cmp)) + cmpc=(len>=2)?_mbsnextc(cmp):0; + else + cmpc=*str; + if(strc != cmpc) + return strc < cmpc ? -1 : 1; + len -= clen; + str += clen; + cmp += clen; + } + return 0; /* Matched len chars */ + } + return u_strncmp(str,cmp,len); +} + +/********************************************************************* + * _mbsnicmp(MSVCRT.@) + * + * Compare two multibyte strings case insensitively to 'len' characters. + */ +int CDECL _mbsnicmp(const unsigned char* str, const unsigned char* cmp, MSVCRT_size_t len) +{ + /* FIXME: No tolower() for mb strings yet */ + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int strc, cmpc; + while(len--) + { + if(!*str) + return *cmp ? -1 : 0; + if(!*cmp) + return 1; + strc = _mbctolower(_mbsnextc(str)); + cmpc = _mbctolower(_mbsnextc(cmp)); + if(strc != cmpc) + return strc < cmpc ? -1 : 1; + str +=(strc > 255) ? 2 : 1; + cmp +=(strc > 255) ? 2 : 1; /* Equal, use same increment */ + } + return 0; /* Matched len chars */ + } + return u_strncasecmp(str, cmp, len); /* ASCII CP */ +} + +/********************************************************************* + * _mbsnbicmp(MSVCRT.@) + */ +int CDECL _mbsnbicmp(const unsigned char* str, const unsigned char* cmp, MSVCRT_size_t len) +{ + if (!len) + return 0; + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int strc, cmpc; + while (len) + { + int clen; + if(!*str) + return *cmp ? -1 : 0; + if(!*cmp) + return 1; + if (MSVCRT_isleadbyte(*str)) + { + strc=(len>=2)?_mbsnextc(str):0; + clen=2; + } + else + { + strc=*str; + clen=1; + } + if (MSVCRT_isleadbyte(*cmp)) + cmpc=(len>=2)?_mbsnextc(cmp):0; + else + cmpc=*str; + strc = _mbctolower(strc); + cmpc = _mbctolower(cmpc); + if(strc != cmpc) + return strc < cmpc ? -1 : 1; + len -= clen; + str += clen; + cmp += clen; + } + return 0; /* Matched len bytes */ + } + return u_strncasecmp(str,cmp,len); +} + +/********************************************************************* + * _mbscat (MSVCRT.@) + */ +unsigned char * CDECL _mbscat( unsigned char *dst, const unsigned char *src ) +{ + strcat( (char *)dst, (const char *)src ); + return dst; +} + +/********************************************************************* + * _mbscpy (MSVCRT.@) + */ +unsigned char* CDECL _mbscpy( unsigned char *dst, const unsigned char *src ) +{ + strcpy( (char *)dst, (const char *)src ); + return dst; +} + +/********************************************************************* + * _mbsstr (MSVCRT.@) + */ +unsigned char * CDECL _mbsstr(const unsigned char *haystack, const unsigned char *needle) +{ + return (unsigned char *)strstr( (const char *)haystack, (const char *)needle ); +} + +/********************************************************************* + * _mbschr(MSVCRT.@) + * + * Find a multibyte character in a multibyte string. + */ +unsigned char* CDECL _mbschr(const unsigned char* s, unsigned int x) +{ + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int c; + while (1) + { + c = _mbsnextc(s); + if (c == x) + return (unsigned char*)s; + if (!c) + return NULL; + s += c > 255 ? 2 : 1; + } + } + return u_strchr(s, x); /* ASCII CP */ +} + +/********************************************************************* + * _mbsrchr(MSVCRT.@) + */ +unsigned char* CDECL _mbsrchr(const unsigned char* s, unsigned int x) +{ + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int c; + unsigned char* match=NULL; + if(!s) + return NULL; + while (1) { + c = _mbsnextc(s); + if (c == x) + match=(unsigned char*)s; + if (!c) + return match; + s +=(c > 255) ? 2 : 1; + } + } + return u_strrchr(s, x); +} + +/********************************************************************* + * _mbstok(MSVCRT.@) + * + * Find and extract tokens from strings + */ +unsigned char* CDECL _mbstok(unsigned char *str, const unsigned char *delim) +{ + thread_data_t *data = msvcrt_get_thread_data(); + unsigned char *ret; + + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int c; + + if (!str) + if (!(str = data->mbstok_next)) return NULL; + + while ((c = _mbsnextc(str)) && _mbschr(delim, c)) { + str += c > 255 ? 2 : 1; + } + if (!*str) return NULL; + ret = str++; + while ((c = _mbsnextc(str)) && !_mbschr(delim, c)) { + str += c > 255 ? 2 : 1; + } + if (*str) { + *str++ = 0; + if (c > 255) *str++ = 0; + } + data->mbstok_next = str; + return ret; + } + return u_strtok(str, delim); /* ASCII CP */ +} + +/********************************************************************* + * mbtowc(MSVCRT.@) + */ +int CDECL MSVCRT_mbtowc(MSVCRT_wchar_t *dst, const char* str, MSVCRT_size_t n) +{ + /* temp var needed because MultiByteToWideChar wants non NULL destination */ + MSVCRT_wchar_t tmpdst = '\0'; + + if(n <= 0 || !str) + return 0; + if(!MultiByteToWideChar(CP_ACP, 0, str, n, &tmpdst, 1)) + return -1; + if(dst) + *dst = tmpdst; + /* return the number of bytes from src that have been used */ + if(!*str) + return 0; + if(n >= 2 && MSVCRT_isleadbyte(*str) && str[1]) + return 2; + return 1; +} + +/********************************************************************* + * _mbbtombc(MSVCRT.@) + */ +unsigned int CDECL _mbbtombc(unsigned int c) +{ + if(get_locale()->locinfo->mb_cur_max > 1 && + ((c >= 0x20 && c <=0x7e) ||(c >= 0xa1 && c <= 0xdf))) + { + /* FIXME: I can't get this function to return anything + * different from what I pass it... + */ + } + return c; /* ASCII CP or no MB char */ +} + +/********************************************************************* + * _mbbtype(MSVCRT.@) + */ +int CDECL _mbbtype(unsigned char c, int type) +{ + if (type == 1) + { + if ((c >= 0x20 && c <= 0x7e) || (c >= 0xa1 && c <= 0xdf)) + return _MBC_SINGLE; + else if ((c >= 0x40 && c <= 0x7e) || (c >= 0x80 && c <= 0xfc)) + return _MBC_TRAIL; + else + return _MBC_ILLEGAL; + } + else + { + if ((c >= 0x20 && c <= 0x7e) || (c >= 0xa1 && c <= 0xdf)) + return _MBC_SINGLE; + else if ((c >= 0x81 && c <= 0x9f) || (c >= 0xe0 && c <= 0xfc)) + return _MBC_LEAD; + else + return _MBC_ILLEGAL; + } +} + +/********************************************************************* + * _ismbbkana(MSVCRT.@) + */ +int CDECL _ismbbkana(unsigned int c) +{ + /* FIXME: use lc_ctype when supported, not lc_all */ + if(get_locale()->locinfo->lc_codepage == 932) + { + /* Japanese/Katakana, CP 932 */ + return (c >= 0xa1 && c <= 0xdf); + } + return 0; +} + +/********************************************************************* + * _ismbcdigit(MSVCRT.@) + */ +int CDECL _ismbcdigit(unsigned int ch) +{ + MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); + return (get_char_typeW( wch ) & C1_DIGIT); +} + +/********************************************************************* + * _ismbcgraph(MSVCRT.@) + */ +int CDECL _ismbcgraph(unsigned int ch) +{ + MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); + return (get_char_typeW( wch ) & (C1_UPPER | C1_LOWER | C1_DIGIT | C1_PUNCT | C1_ALPHA)); +} + +/********************************************************************* + * _ismbcalpha (MSVCRT.@) + */ +int CDECL _ismbcalpha(unsigned int ch) +{ + MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); + return (get_char_typeW( wch ) & C1_ALPHA); +} + +/********************************************************************* + * _ismbclower (MSVCRT.@) + */ +int CDECL _ismbclower(unsigned int ch) +{ + MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); + return (get_char_typeW( wch ) & C1_UPPER); +} + +/********************************************************************* + * _ismbcupper (MSVCRT.@) + */ +int CDECL _ismbcupper(unsigned int ch) +{ + MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); + return (get_char_typeW( wch ) & C1_LOWER); +} + +/********************************************************************* + * _ismbcsymbol(MSVCRT.@) + */ +int CDECL _ismbcsymbol(unsigned int ch) +{ + MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); + WORD ctype; + if (!GetStringTypeW(CT_CTYPE3, &wch, 1, &ctype)) + { + WARN("GetStringTypeW failed on %x\n", ch); + return 0; + } + return ((ctype & C3_SYMBOL) != 0); +} + +/********************************************************************* + * _ismbcalnum (MSVCRT.@) + */ +int CDECL _ismbcalnum(unsigned int ch) +{ + MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); + return (get_char_typeW( wch ) & (C1_ALPHA | C1_DIGIT)); +} + +/********************************************************************* + * _ismbcspace (MSVCRT.@) + */ +int CDECL _ismbcspace(unsigned int ch) +{ + MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); + return (get_char_typeW( wch ) & C1_SPACE); +} + +/********************************************************************* + * _ismbcprint (MSVCRT.@) + */ +int CDECL _ismbcprint(unsigned int ch) +{ + MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); + return (get_char_typeW( wch ) & (C1_UPPER | C1_LOWER | C1_DIGIT | C1_PUNCT | C1_ALPHA | C1_SPACE)); +} + +/********************************************************************* + * _ismbcpunct(MSVCRT.@) + */ +int CDECL _ismbcpunct(unsigned int ch) +{ + MSVCRT_wchar_t wch = msvcrt_mbc_to_wc( ch ); + return (get_char_typeW( wch ) & C1_PUNCT); +} + +/********************************************************************* + * _ismbchira(MSVCRT.@) + */ +int CDECL _ismbchira(unsigned int c) +{ + /* FIXME: use lc_ctype when supported, not lc_all */ + if(get_locale()->locinfo->lc_codepage == 932) + { + /* Japanese/Hiragana, CP 932 */ + return (c >= 0x829f && c <= 0x82f1); + } + return 0; +} + +/********************************************************************* + * _ismbckata(MSVCRT.@) + */ +int CDECL _ismbckata(unsigned int c) +{ + /* FIXME: use lc_ctype when supported, not lc_all */ + if(get_locale()->locinfo->lc_codepage == 932) + { + if(c < 256) + return _ismbbkana(c); + /* Japanese/Katakana, CP 932 */ + return (c >= 0x8340 && c <= 0x8396 && c != 0x837f); + } + return 0; +} + +/********************************************************************* + * _ismbblead(MSVCRT.@) + */ +int CDECL _ismbblead(unsigned int c) +{ + return (MSVCRT_mbctype[(c&0xff) + 1] & _M1) != 0; +} + + +/********************************************************************* + * _ismbbtrail(MSVCRT.@) + */ +int CDECL _ismbbtrail(unsigned int c) +{ + return (MSVCRT_mbctype[(c&0xff) + 1] & _M2) != 0; +} + +/********************************************************************* + * _ismbclegal(MSVCRT.@) + */ +int CDECL _ismbclegal(unsigned int c) +{ + return _ismbblead(HIBYTE(c)) && _ismbbtrail(LOBYTE(c)); +} + +/********************************************************************* + * _ismbslead(MSVCRT.@) + */ +int CDECL _ismbslead(const unsigned char* start, const unsigned char* str) +{ + int lead = 0; + + if(!g_mbcp_is_multibyte) + return 0; + + /* Lead bytes can also be trail bytes so we need to analyse the string + */ + while (start <= str) + { + if (!*start) + return 0; + lead = !lead && _ismbblead(*start); + start++; + } + + return lead ? -1 : 0; +} + +/********************************************************************* + * _ismbstrail(MSVCRT.@) + */ +int CDECL _ismbstrail(const unsigned char* start, const unsigned char* str) +{ + /* Note: this function doesn't check _ismbbtrail */ + if ((str > start) && _ismbslead(start, str-1)) + return -1; + else + return 0; +} + +/********************************************************************* + * _mbsbtype (MSVCRT.@) + */ +int CDECL _mbsbtype(const unsigned char *str, MSVCRT_size_t count) +{ + int lead = 0; + const unsigned char *end = str + count; + int mbcp = g_mbcp_is_multibyte; + + /* Lead bytes can also be trail bytes so we need to analyse the string. + * Also we must return _MBC_ILLEGAL for chars past the end of the string + */ + while (str < end) /* Note: we skip the last byte - will check after the loop */ + { + if (!*str) + return _MBC_ILLEGAL; + lead = mbcp && !lead && _ismbblead(*str); + str++; + } + + if (lead) + if (_ismbbtrail(*str)) + return _MBC_TRAIL; + else + return _MBC_ILLEGAL; + else + if (_ismbblead(*str)) + return _MBC_LEAD; + else + return _MBC_SINGLE; +} + +/********************************************************************* + * _mbsset(MSVCRT.@) + */ +unsigned char* CDECL _mbsset(unsigned char* str, unsigned int c) +{ + unsigned char* ret = str; + + if(get_locale()->locinfo->mb_cur_max == 1 || c < 256) + return u__strset(str, c); /* ASCII CP or SB char */ + + c &= 0xffff; /* Strip high bits */ + + while(str[0] && str[1]) + { + *str++ = c >> 8; + *str++ = c & 0xff; + } + if(str[0]) + str[0] = '\0'; /* FIXME: OK to shorten? */ + + return ret; +} + +/********************************************************************* + * _mbsnbset(MSVCRT.@) + */ +unsigned char* CDECL _mbsnbset(unsigned char *str, unsigned int c, MSVCRT_size_t len) +{ + unsigned char *ret = str; + + if(!len) + return ret; + + if(get_locale()->locinfo->mb_cur_max == 1 || c < 256) + return u__strnset(str, c, len); /* ASCII CP or SB char */ + + c &= 0xffff; /* Strip high bits */ + + while(str[0] && str[1] && (len > 1)) + { + *str++ = c >> 8; + len--; + *str++ = c & 0xff; + len--; + } + if(len && str[0]) { + /* as per msdn pad with a blank character */ + str[0] = ' '; + } + + return ret; +} + +/********************************************************************* + * _mbsnset(MSVCRT.@) + */ +unsigned char* CDECL _mbsnset(unsigned char* str, unsigned int c, MSVCRT_size_t len) +{ + unsigned char *ret = str; + + if(!len) + return ret; + + if(get_locale()->locinfo->mb_cur_max == 1 || c < 256) + return u__strnset(str, c, len); /* ASCII CP or SB char */ + + c &= 0xffff; /* Strip high bits */ + + while(str[0] && str[1] && len--) + { + *str++ = c >> 8; + *str++ = c & 0xff; + } + if(len && str[0]) + str[0] = '\0'; /* FIXME: OK to shorten? */ + + return ret; +} + +/********************************************************************* + * _mbsnccnt(MSVCRT.@) + * 'c' is for 'character'. + */ +MSVCRT_size_t CDECL _mbsnccnt(const unsigned char* str, MSVCRT_size_t len) +{ + MSVCRT_size_t ret; + if(get_locale()->locinfo->mb_cur_max > 1) + { + ret=0; + while(*str && len-- > 0) + { + if(MSVCRT_isleadbyte(*str)) + { + if (!len) + break; + len--; + str++; + } + str++; + ret++; + } + return ret; + } + ret=u_strlen(str); + return min(ret, len); /* ASCII CP */ +} + +/********************************************************************* + * _mbsnbcnt(MSVCRT.@) + * 'b' is for byte count. + */ +MSVCRT_size_t CDECL _mbsnbcnt(const unsigned char* str, MSVCRT_size_t len) +{ + MSVCRT_size_t ret; + if(get_locale()->locinfo->mb_cur_max > 1) + { + const unsigned char* xstr = str; + while(*xstr && len-- > 0) + { + if (MSVCRT_isleadbyte(*xstr++)) + xstr++; + } + return xstr-str; + } + ret=u_strlen(str); + return min(ret, len); /* ASCII CP */ +} + +/********************************************************************* + * _mbsnbcat(MSVCRT.@) + */ +unsigned char* CDECL _mbsnbcat(unsigned char* dst, const unsigned char* src, MSVCRT_size_t len) +{ + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned char *res = dst; + while (*dst) { + if (MSVCRT_isleadbyte(*dst++)) { + if (*dst) { + dst++; + } else { + /* as per msdn overwrite the lead byte in front of '\0' */ + dst--; + break; + } + } + } + while (*src && len--) *dst++ = *src++; + *dst = '\0'; + return res; + } + return u_strncat(dst, src, len); /* ASCII CP */ +} + + +/********************************************************************* + * _mbsncat(MSVCRT.@) + */ +unsigned char* CDECL _mbsncat(unsigned char* dst, const unsigned char* src, MSVCRT_size_t len) +{ + if(get_locale()->locinfo->mb_cur_max > 1) + { + unsigned char *res = dst; + while (*dst) + { + if (MSVCRT_isleadbyte(*dst++)) + dst++; + } + while (*src && len--) + { + *dst++ = *src; + if(MSVCRT_isleadbyte(*src++)) + *dst++ = *src++; + } + *dst = '\0'; + return res; + } + return u_strncat(dst, src, len); /* ASCII CP */ +} + + +/********************************************************************* + * _mbslwr(MSVCRT.@) + */ +unsigned char* CDECL _mbslwr(unsigned char* s) +{ + unsigned char *ret = s; + if (!s) + return NULL; + if (get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int c; + while (*s) + { + c = _mbctolower(_mbsnextc(s)); + /* Note that I assume that the size of the character is unchanged */ + if (c > 255) + { + *s++=(c>>8); + c=c & 0xff; + } + *s++=c; + } + } + else for ( ; *s; s++) *s = tolower(*s); + return ret; +} + + +/********************************************************************* + * _mbsupr(MSVCRT.@) + */ +unsigned char* CDECL _mbsupr(unsigned char* s) +{ + unsigned char *ret = s; + if (!s) + return NULL; + if (get_locale()->locinfo->mb_cur_max > 1) + { + unsigned int c; + while (*s) + { + c = _mbctoupper(_mbsnextc(s)); + /* Note that I assume that the size of the character is unchanged */ + if (c > 255) + { + *s++=(c>>8); + c=c & 0xff; + } + *s++=c; + } + } + else for ( ; *s; s++) *s = toupper(*s); + return ret; +} + + +/********************************************************************* + * _mbsspn (MSVCRT.@) + */ +MSVCRT_size_t CDECL _mbsspn(const unsigned char* string, const unsigned char* set) +{ + const unsigned char *p, *q; + + for (p = string; *p; p++) + { + if (MSVCRT_isleadbyte(*p)) + { + for (q = set; *q; q++) + { + if (!q[1]) + break; + if ((*p == *q) && (p[1] == q[1])) + break; + q++; + } + if (!q[0] || !q[1]) break; + } + else + { + for (q = set; *q; q++) + if (*p == *q) + break; + if (!*q) break; + } + } + return p - string; +} + +/********************************************************************* + * _mbsspnp (MSVCRT.@) + */ +unsigned char* CDECL _mbsspnp(const unsigned char* string, const unsigned char* set) +{ + const unsigned char *p, *q; + + for (p = string; *p; p++) + { + if (MSVCRT_isleadbyte(*p)) + { + for (q = set; *q; q++) + { + if (!q[1]) + break; + if ((*p == *q) && (p[1] == q[1])) + break; + q++; + } + if (!q[0] || !q[1]) break; + } + else + { + for (q = set; *q; q++) + if (*p == *q) + break; + if (!*q) break; + } + } + if (*p == '\0') + return NULL; + return (unsigned char *)p; +} + +/********************************************************************* + * _mbscspn(MSVCRT.@) + */ +MSVCRT_size_t CDECL _mbscspn(const unsigned char* str, const unsigned char* cmp) +{ + if (get_locale()->locinfo->mb_cur_max > 1) + FIXME("don't handle double character case\n"); + return u_strcspn(str, cmp); +} + +/********************************************************************* + * _mbsrev (MSVCRT.@) + */ +unsigned char* CDECL _mbsrev(unsigned char* str) +{ + int i, len = _mbslen(str); + unsigned char *p, *temp=MSVCRT_malloc(len*2); + + if(!temp) + return str; + + /* unpack multibyte string to temp buffer */ + p=str; + for(i=0; i=0; i--) + { + if(MSVCRT_isleadbyte(temp[i*2])) + { + *p++=temp[i*2]; + *p++=temp[i*2+1]; + } + else + { + *p++=temp[i*2]; + } + } + + MSVCRT_free(temp); + + return str; +} + +/********************************************************************* + * _mbspbrk (MSVCRT.@) + */ +unsigned char* CDECL _mbspbrk(const unsigned char* str, const unsigned char* accept) +{ + const unsigned char* p; + + while(*str) + { + for(p = accept; *p; p += (MSVCRT_isleadbyte(*p)?2:1) ) + { + if (*p == *str) + if( !MSVCRT_isleadbyte(*p) || ( *(p+1) == *(str+1) ) ) + return (unsigned char*)str; + } + str += (MSVCRT_isleadbyte(*str)?2:1); + } + return NULL; +} + + +/* + * Functions depending on locale codepage + */ + +/********************************************************************* + * mblen(MSVCRT.@) + * REMARKS + * Unlike most of the multibyte string functions this function uses + * the locale codepage, not the codepage set by _setmbcp + */ +int CDECL MSVCRT_mblen(const char* str, MSVCRT_size_t size) +{ + if (str && *str && size) + { + if(get_locale()->locinfo->mb_cur_max == 1) + return 1; /* ASCII CP */ + + return !MSVCRT_isleadbyte(*str) ? 1 : (size>1 ? 2 : -1); + } + return 0; +} + +/********************************************************************* + * _mbstrlen_l(MSVCRT.@) + */ +MSVCRT_size_t CDECL _mbstrlen_l(const char* str, MSVCRT__locale_t locale) +{ + if(!locale) + locale = get_locale(); + + if(locale->locinfo->mb_cur_max > 1) { + MSVCRT_size_t len = 0; + while(*str) { + /* FIXME: According to the documentation we are supposed to test for + * multi-byte character validity. Whatever that means + */ + str += MSVCRT_isleadbyte(*str) ? 2 : 1; + len++; + } + return len; + } + + return strlen(str); +} + +/********************************************************************* + * _mbstrlen(MSVCRT.@) + */ +MSVCRT_size_t CDECL _mbstrlen(const char* str) +{ + return _mbstrlen_l(str, NULL); +} + +/********************************************************************* + * _mbstowcs_l(MSVCRT.@) + */ +MSVCRT_size_t CDECL MSVCRT__mbstowcs_l(MSVCRT_wchar_t *wcstr, const char *mbstr, + MSVCRT_size_t count, MSVCRT__locale_t locale) +{ + MSVCRT_size_t tmp; + + if(!locale) + locale = get_locale(); + + tmp = _mbstrlen_l(mbstr, locale); + if(tmp>count && wcstr) + tmp = count; + + tmp = MultiByteToWideChar(locale->locinfo->lc_codepage, 0, + mbstr, tmp, wcstr, count); + + if(tmp + +#include "windef.h" +#include "winbase.h" + +#define MSVCRT_LONG_MAX 0x7fffffffL +#define MSVCRT_ULONG_MAX 0xffffffffUL +#define MSVCRT_I64_MAX (((__int64)0x7fffffff << 32) | 0xffffffff) +#define MSVCRT_I64_MIN (-MSVCRT_I64_MAX-1) +#define MSVCRT_UI64_MAX (((unsigned __int64)0xffffffff << 32) | 0xffffffff) + +typedef unsigned short MSVCRT_wchar_t; +typedef unsigned short MSVCRT_wint_t; +typedef unsigned short MSVCRT_wctype_t; +typedef unsigned short MSVCRT__ino_t; +typedef unsigned int MSVCRT__fsize_t; +typedef int MSVCRT_long; +typedef unsigned int MSVCRT_ulong; +#ifdef _WIN64 +typedef unsigned __int64 MSVCRT_size_t; +typedef __int64 MSVCRT_intptr_t; +typedef unsigned __int64 MSVCRT_uintptr_t; +#else +typedef unsigned long MSVCRT_size_t; +typedef long MSVCRT_intptr_t; +typedef unsigned long MSVCRT_uintptr_t; +#endif +typedef unsigned int MSVCRT__dev_t; +typedef int MSVCRT__off_t; +typedef int MSVCRT_clock_t; +typedef int MSVCRT___time32_t; +typedef __int64 DECLSPEC_ALIGN(8) MSVCRT___time64_t; +typedef __int64 DECLSPEC_ALIGN(8) MSVCRT_fpos_t; + +typedef void (*__cdecl MSVCRT_terminate_handler)(void); +typedef void (*__cdecl MSVCRT_terminate_function)(void); +typedef void (*__cdecl MSVCRT_unexpected_handler)(void); +typedef void (*__cdecl MSVCRT_unexpected_function)(void); +typedef void (*__cdecl MSVCRT__se_translator_function)(unsigned int code, struct _EXCEPTION_POINTERS *info); +typedef void (*__cdecl MSVCRT__beginthread_start_routine_t)(void *); +typedef unsigned int (__stdcall *MSVCRT__beginthreadex_start_routine_t)(void *); +typedef int (*__cdecl MSVCRT__onexit_t)(void); +typedef void (__cdecl *MSVCRT_invalid_parameter_handler)(const MSVCRT_wchar_t*, const MSVCRT_wchar_t*, const MSVCRT_wchar_t*, unsigned, MSVCRT_uintptr_t); + +typedef struct {long double x;} MSVCRT__LDOUBLE; + +struct MSVCRT_tm { + int tm_sec; + int tm_min; + int tm_hour; + int tm_mday; + int tm_mon; + int tm_year; + int tm_wday; + int tm_yday; + int tm_isdst; +}; + + +/* TLS data */ +extern DWORD msvcrt_tls_index; + +struct __thread_data { + int thread_errno; + MSVCRT_ulong thread_doserrno; + unsigned int random_seed; /* seed for rand() */ + char *strtok_next; /* next ptr for strtok() */ + unsigned char *mbstok_next; /* next ptr for mbstok() */ + MSVCRT_wchar_t *wcstok_next; /* next ptr for wcstok() */ + char *efcvt_buffer; /* buffer for ecvt/fcvt */ + char *asctime_buffer; /* buffer for asctime */ + MSVCRT_wchar_t *wasctime_buffer; /* buffer for wasctime */ + struct MSVCRT_tm time_buffer; /* buffer for localtime/gmtime */ + char *strerror_buffer; /* buffer for strerror */ + int fpecode; + MSVCRT_terminate_function terminate_handler; + MSVCRT_unexpected_function unexpected_handler; + MSVCRT__se_translator_function se_translator; + EXCEPTION_RECORD *exc_record; + struct MSVCRT_localeinfo_struct *locale; +}; + +typedef struct __thread_data thread_data_t; + +extern thread_data_t *msvcrt_get_thread_data(void); + +extern int MSVCRT___lc_codepage; +extern int MSVCRT___lc_collate_cp; +extern int MSVCRT___mb_cur_max; +extern WORD MSVCRT__ctype [257]; +extern WORD* MSVCRT__pctype; + +void msvcrt_set_errno(int); + +void __cdecl _purecall(void); +void __cdecl _amsg_exit(int errnum); + +extern char **MSVCRT__environ; +extern MSVCRT_wchar_t **MSVCRT__wenviron; + +extern char ** msvcrt_SnapshotOfEnvironmentA(char **); +extern MSVCRT_wchar_t ** msvcrt_SnapshotOfEnvironmentW(MSVCRT_wchar_t **); + +MSVCRT_wchar_t *msvcrt_wstrdupa(const char *); + +/* FIXME: This should be declared in new.h but it's not an extern "C" so + * it would not be much use anyway. Even for Winelib applications. + */ +int __cdecl MSVCRT__set_new_mode(int mode); + +void* __cdecl MSVCRT_operator_new(MSVCRT_size_t); +void __cdecl MSVCRT_operator_delete(void*); + +typedef void* (*__cdecl malloc_func_t)(MSVCRT_size_t); +typedef void (*__cdecl free_func_t)(void*); + +extern char* __cdecl __unDName(char *,const char*,int,malloc_func_t,free_func_t,unsigned short int); +extern char* __cdecl __unDNameEx(char *,const char*,int,malloc_func_t,free_func_t,void *,unsigned short int); + +/* Setup and teardown multi threaded locks */ +extern void msvcrt_init_mt_locks(void); +extern void msvcrt_free_mt_locks(void); + +extern void msvcrt_init_io(void); +extern void msvcrt_free_io(void); +extern void msvcrt_init_console(void); +extern void msvcrt_free_console(void); +extern void msvcrt_init_args(void); +extern void msvcrt_free_args(void); +extern void msvcrt_init_signals(void); +extern void msvcrt_free_signals(void); + +extern unsigned msvcrt_create_io_inherit_block(WORD*, BYTE**); + +/* run-time error codes */ +#define _RT_STACK 0 +#define _RT_NULLPTR 1 +#define _RT_FLOAT 2 +#define _RT_INTDIV 3 +#define _RT_EXECMEM 5 +#define _RT_EXECFORM 6 +#define _RT_EXECENV 7 +#define _RT_SPACEARG 8 +#define _RT_SPACEENV 9 +#define _RT_ABORT 10 +#define _RT_NPTR 12 +#define _RT_FPTR 13 +#define _RT_BREAK 14 +#define _RT_INT 15 +#define _RT_THREAD 16 +#define _RT_LOCK 17 +#define _RT_HEAP 18 +#define _RT_OPENCON 19 +#define _RT_QWIN 20 +#define _RT_NOMAIN 21 +#define _RT_NONCONT 22 +#define _RT_INVALDISP 23 +#define _RT_ONEXIT 24 +#define _RT_PUREVIRT 25 +#define _RT_STDIOINIT 26 +#define _RT_LOWIOINIT 27 +#define _RT_HEAPINIT 28 +#define _RT_DOMAIN 120 +#define _RT_SING 121 +#define _RT_TLOSS 122 +#define _RT_CRNL 252 +#define _RT_BANNER 255 + +struct MSVCRT___timeb32 { + MSVCRT___time32_t time; + unsigned short millitm; + short timezone; + short dstflag; +}; + +struct MSVCRT___timeb64 { + MSVCRT___time64_t time; + unsigned short millitm; + short timezone; + short dstflag; +}; + +struct MSVCRT__iobuf { + char* _ptr; + int _cnt; + char* _base; + int _flag; + int _file; + int _charbuf; + int _bufsiz; + char* _tmpfname; +}; + +typedef struct MSVCRT__iobuf MSVCRT_FILE; + +struct MSVCRT_lconv { + char* decimal_point; + char* thousands_sep; + char* grouping; + char* int_curr_symbol; + char* currency_symbol; + char* mon_decimal_point; + char* mon_thousands_sep; + char* mon_grouping; + char* positive_sign; + char* negative_sign; + char int_frac_digits; + char frac_digits; + char p_cs_precedes; + char p_sep_by_space; + char n_cs_precedes; + char n_sep_by_space; + char p_sign_posn; + char n_sign_posn; +}; + +struct MSVCRT__exception { + int type; + char* name; + double arg1; + double arg2; + double retval; +}; + +struct MSVCRT__complex { + double x; /* Real part */ + double y; /* Imaginary part */ +}; + +typedef struct MSVCRT__div_t { + int quot; /* quotient */ + int rem; /* remainder */ +} MSVCRT_div_t; + +typedef struct MSVCRT__ldiv_t { + MSVCRT_long quot; /* quotient */ + MSVCRT_long rem; /* remainder */ +} MSVCRT_ldiv_t; + +struct MSVCRT__heapinfo { + int* _pentry; + MSVCRT_size_t _size; + int _useflag; +}; + +#ifdef __i386__ +struct MSVCRT___JUMP_BUFFER { + unsigned long Ebp; + unsigned long Ebx; + unsigned long Edi; + unsigned long Esi; + unsigned long Esp; + unsigned long Eip; + unsigned long Registration; + unsigned long TryLevel; + /* Start of new struct members */ + unsigned long Cookie; + unsigned long UnwindFunc; + unsigned long UnwindData[6]; +}; +#endif /* __i386__ */ + +struct MSVCRT__diskfree_t { + unsigned int total_clusters; + unsigned int avail_clusters; + unsigned int sectors_per_cluster; + unsigned int bytes_per_sector; +}; + +struct MSVCRT__finddata32_t { + unsigned int attrib; + MSVCRT___time32_t time_create; + MSVCRT___time32_t time_access; + MSVCRT___time32_t time_write; + MSVCRT__fsize_t size; + char name[260]; +}; + +struct MSVCRT__finddata32i64_t { + unsigned int attrib; + MSVCRT___time32_t time_create; + MSVCRT___time32_t time_access; + MSVCRT___time32_t time_write; + __int64 DECLSPEC_ALIGN(8) size; + char name[260]; +}; + +struct MSVCRT__finddata64i32_t { + unsigned int attrib; + MSVCRT___time64_t time_create; + MSVCRT___time64_t time_access; + MSVCRT___time64_t time_write; + MSVCRT__fsize_t size; + char name[260]; +}; + +struct MSVCRT__finddata64_t { + unsigned int attrib; + MSVCRT___time64_t time_create; + MSVCRT___time64_t time_access; + MSVCRT___time64_t time_write; + __int64 DECLSPEC_ALIGN(8) size; + char name[260]; +}; + +struct MSVCRT__wfinddata32_t { + unsigned int attrib; + MSVCRT___time32_t time_create; + MSVCRT___time32_t time_access; + MSVCRT___time32_t time_write; + MSVCRT__fsize_t size; + MSVCRT_wchar_t name[260]; +}; + +struct MSVCRT__wfinddata32i64_t { + unsigned int attrib; + MSVCRT___time32_t time_create; + MSVCRT___time32_t time_access; + MSVCRT___time32_t time_write; + __int64 DECLSPEC_ALIGN(8) size; + MSVCRT_wchar_t name[260]; +}; + +struct MSVCRT__wfinddata64i32_t { + unsigned int attrib; + MSVCRT___time64_t time_create; + MSVCRT___time64_t time_access; + MSVCRT___time64_t time_write; + MSVCRT__fsize_t size; + MSVCRT_wchar_t name[260]; +}; + +struct MSVCRT__wfinddata64_t { + unsigned int attrib; + MSVCRT___time64_t time_create; + MSVCRT___time64_t time_access; + MSVCRT___time64_t time_write; + __int64 DECLSPEC_ALIGN(8) size; + MSVCRT_wchar_t name[260]; +}; + +struct MSVCRT___utimbuf32 +{ + MSVCRT___time32_t actime; + MSVCRT___time32_t modtime; +}; + +struct MSVCRT___utimbuf64 +{ + MSVCRT___time64_t actime; + MSVCRT___time64_t modtime; +}; + +/* for FreeBSD */ +#undef st_atime +#undef st_ctime +#undef st_mtime + +struct MSVCRT__stat32 { + MSVCRT__dev_t st_dev; + MSVCRT__ino_t st_ino; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + MSVCRT__dev_t st_rdev; + MSVCRT__off_t st_size; + MSVCRT___time32_t st_atime; + MSVCRT___time32_t st_mtime; + MSVCRT___time32_t st_ctime; +}; + +struct MSVCRT__stat32i64 { + MSVCRT__dev_t st_dev; + MSVCRT__ino_t st_ino; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + MSVCRT__dev_t st_rdev; + __int64 DECLSPEC_ALIGN(8) st_size; + MSVCRT___time32_t st_atime; + MSVCRT___time32_t st_mtime; + MSVCRT___time32_t st_ctime; +}; + +struct MSVCRT__stat64i32 { + MSVCRT__dev_t st_dev; + MSVCRT__ino_t st_ino; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + MSVCRT__dev_t st_rdev; + MSVCRT__off_t st_size; + MSVCRT___time64_t st_atime; + MSVCRT___time64_t st_mtime; + MSVCRT___time64_t st_ctime; +}; + +struct MSVCRT__stat64 { + MSVCRT__dev_t st_dev; + MSVCRT__ino_t st_ino; + unsigned short st_mode; + short st_nlink; + short st_uid; + short st_gid; + MSVCRT__dev_t st_rdev; + __int64 DECLSPEC_ALIGN(8) st_size; + MSVCRT___time64_t st_atime; + MSVCRT___time64_t st_mtime; + MSVCRT___time64_t st_ctime; +}; + +#ifdef _WIN64 +#define MSVCRT__finddata_t MSVCRT__finddata64i32_t +#define MSVCRT__finddatai64_t MSVCRT__finddata64_t +#define MSVCRT__wfinddata_t MSVCRT__wfinddata64i32_t +#define MSVCRT__wfinddatai64_t MSVCRT__wfinddata64_t +#define MSVCRT__stat MSVCRT__stat64i32 +#define MSVCRT__stati64 MSVCRT__stat64 +#else +#define MSVCRT__finddata_t MSVCRT__finddata32_t +#define MSVCRT__finddatai64_t MSVCRT__finddata32i64_t +#define MSVCRT__wfinddata_t MSVCRT__wfinddata32_t +#define MSVCRT__wfinddatai64_t MSVCRT__wfinddata32i64_t +#define MSVCRT__stat MSVCRT__stat32 +#define MSVCRT__stati64 MSVCRT__stat32i64 +#endif + +#define MSVCRT_WEOF (MSVCRT_wint_t)(0xFFFF) +#define MSVCRT_EOF (-1) +#define MSVCRT_TMP_MAX 0x7fff +#define MSVCRT_RAND_MAX 0x7fff +#define MSVCRT_BUFSIZ 512 + +#define MSVCRT_STDIN_FILENO 0 +#define MSVCRT_STDOUT_FILENO 1 +#define MSVCRT_STDERR_FILENO 2 + +/* more file._flag flags, but these conflict with Unix */ +#define MSVCRT__IOFBF 0x0000 +#define MSVCRT__IONBF 0x0004 +#define MSVCRT__IOLBF 0x0040 + +#define MSVCRT_FILENAME_MAX 260 +#define MSVCRT_DRIVE_MAX 3 +#define MSVCRT_FNAME_MAX 256 +#define MSVCRT_DIR_MAX 256 +#define MSVCRT_EXT_MAX 256 +#define MSVCRT_PATH_MAX 260 +#define MSVCRT_stdin (MSVCRT__iob+MSVCRT_STDIN_FILENO) +#define MSVCRT_stdout (MSVCRT__iob+MSVCRT_STDOUT_FILENO) +#define MSVCRT_stderr (MSVCRT__iob+MSVCRT_STDERR_FILENO) + +#define MSVCRT__P_WAIT 0 +#define MSVCRT__P_NOWAIT 1 +#define MSVCRT__P_OVERLAY 2 +#define MSVCRT__P_NOWAITO 3 +#define MSVCRT__P_DETACH 4 + +#define MSVCRT_EPERM 1 +#define MSVCRT_ENOENT 2 +#define MSVCRT_ESRCH 3 +#define MSVCRT_EINTR 4 +#define MSVCRT_EIO 5 +#define MSVCRT_ENXIO 6 +#define MSVCRT_E2BIG 7 +#define MSVCRT_ENOEXEC 8 +#define MSVCRT_EBADF 9 +#define MSVCRT_ECHILD 10 +#define MSVCRT_EAGAIN 11 +#define MSVCRT_ENOMEM 12 +#define MSVCRT_EACCES 13 +#define MSVCRT_EFAULT 14 +#define MSVCRT_EBUSY 16 +#define MSVCRT_EEXIST 17 +#define MSVCRT_EXDEV 18 +#define MSVCRT_ENODEV 19 +#define MSVCRT_ENOTDIR 20 +#define MSVCRT_EISDIR 21 +#define MSVCRT_EINVAL 22 +#define MSVCRT_ENFILE 23 +#define MSVCRT_EMFILE 24 +#define MSVCRT_ENOTTY 25 +#define MSVCRT_EFBIG 27 +#define MSVCRT_ENOSPC 28 +#define MSVCRT_ESPIPE 29 +#define MSVCRT_EROFS 30 +#define MSVCRT_EMLINK 31 +#define MSVCRT_EPIPE 32 +#define MSVCRT_EDOM 33 +#define MSVCRT_ERANGE 34 +#define MSVCRT_EDEADLK 36 +#define MSVCRT_EDEADLOCK MSVCRT_EDEADLK +#define MSVCRT_ENAMETOOLONG 38 +#define MSVCRT_ENOLCK 39 +#define MSVCRT_ENOSYS 40 +#define MSVCRT_ENOTEMPTY 41 +#define MSVCRT_EILSEQ 42 + +#define MSVCRT_LC_ALL 0 +#define MSVCRT_LC_COLLATE 1 +#define MSVCRT_LC_CTYPE 2 +#define MSVCRT_LC_MONETARY 3 +#define MSVCRT_LC_NUMERIC 4 +#define MSVCRT_LC_TIME 5 +#define MSVCRT_LC_MIN MSVCRT_LC_ALL +#define MSVCRT_LC_MAX MSVCRT_LC_TIME + +#define MSVCRT__HEAPEMPTY -1 +#define MSVCRT__HEAPOK -2 +#define MSVCRT__HEAPBADBEGIN -3 +#define MSVCRT__HEAPBADNODE -4 +#define MSVCRT__HEAPEND -5 +#define MSVCRT__HEAPBADPTR -6 + +#define MSVCRT__FREEENTRY 0 +#define MSVCRT__USEDENTRY 1 + +#define MSVCRT__OUT_TO_DEFAULT 0 +#define MSVCRT__REPORT_ERRMODE 3 + +/* ASCII char classification table - binary compatible */ +#define MSVCRT__UPPER 0x0001 /* C1_UPPER */ +#define MSVCRT__LOWER 0x0002 /* C1_LOWER */ +#define MSVCRT__DIGIT 0x0004 /* C1_DIGIT */ +#define MSVCRT__SPACE 0x0008 /* C1_SPACE */ +#define MSVCRT__PUNCT 0x0010 /* C1_PUNCT */ +#define MSVCRT__CONTROL 0x0020 /* C1_CNTRL */ +#define MSVCRT__BLANK 0x0040 /* C1_BLANK */ +#define MSVCRT__HEX 0x0080 /* C1_XDIGIT */ +#define MSVCRT__LEADBYTE 0x8000 +#define MSVCRT__ALPHA (0x0100|MSVCRT__UPPER|MSVCRT__LOWER) /* (C1_ALPHA|_UPPER|_LOWER) */ + +#define MSVCRT__IOREAD 0x0001 +#define MSVCRT__IOWRT 0x0002 +#define MSVCRT__IOMYBUF 0x0008 +#define MSVCRT__IOEOF 0x0010 +#define MSVCRT__IOERR 0x0020 +#define MSVCRT__IOSTRG 0x0040 +#define MSVCRT__IORW 0x0080 + +#define MSVCRT__S_IEXEC 0x0040 +#define MSVCRT__S_IWRITE 0x0080 +#define MSVCRT__S_IREAD 0x0100 +#define MSVCRT__S_IFIFO 0x1000 +#define MSVCRT__S_IFCHR 0x2000 +#define MSVCRT__S_IFDIR 0x4000 +#define MSVCRT__S_IFREG 0x8000 +#define MSVCRT__S_IFMT 0xF000 + +#define MSVCRT__LK_UNLCK 0 +#define MSVCRT__LK_LOCK 1 +#define MSVCRT__LK_NBLCK 2 +#define MSVCRT__LK_RLCK 3 +#define MSVCRT__LK_NBRLCK 4 + +#define MSVCRT__SH_COMPAT 0x00 /* Compatibility */ +#define MSVCRT__SH_DENYRW 0x10 /* Deny read/write */ +#define MSVCRT__SH_DENYWR 0x20 /* Deny write */ +#define MSVCRT__SH_DENYRD 0x30 /* Deny read */ +#define MSVCRT__SH_DENYNO 0x40 /* Deny nothing */ + +#define MSVCRT__O_RDONLY 0 +#define MSVCRT__O_WRONLY 1 +#define MSVCRT__O_RDWR 2 +#define MSVCRT__O_ACCMODE (MSVCRT__O_RDONLY|MSVCRT__O_WRONLY|MSVCRT__O_RDWR) +#define MSVCRT__O_APPEND 0x0008 +#define MSVCRT__O_RANDOM 0x0010 +#define MSVCRT__O_SEQUENTIAL 0x0020 +#define MSVCRT__O_TEMPORARY 0x0040 +#define MSVCRT__O_NOINHERIT 0x0080 +#define MSVCRT__O_CREAT 0x0100 +#define MSVCRT__O_TRUNC 0x0200 +#define MSVCRT__O_EXCL 0x0400 +#define MSVCRT__O_SHORT_LIVED 0x1000 +#define MSVCRT__O_TEXT 0x4000 +#define MSVCRT__O_BINARY 0x8000 +#define MSVCRT__O_RAW MSVCRT__O_BINARY + +/* _statusfp bit flags */ +#define MSVCRT__SW_INEXACT 0x00000001 /* inexact (precision) */ +#define MSVCRT__SW_UNDERFLOW 0x00000002 /* underflow */ +#define MSVCRT__SW_OVERFLOW 0x00000004 /* overflow */ +#define MSVCRT__SW_ZERODIVIDE 0x00000008 /* zero divide */ +#define MSVCRT__SW_INVALID 0x00000010 /* invalid */ + +#define MSVCRT__SW_UNEMULATED 0x00000040 /* unemulated instruction */ +#define MSVCRT__SW_SQRTNEG 0x00000080 /* square root of a neg number */ +#define MSVCRT__SW_STACKOVERFLOW 0x00000200 /* FP stack overflow */ +#define MSVCRT__SW_STACKUNDERFLOW 0x00000400 /* FP stack underflow */ + +#define MSVCRT__SW_DENORMAL 0x00080000 /* denormal status bit */ + +/* fpclass constants */ +#define MSVCRT__FPCLASS_SNAN 0x0001 /* Signaling "Not a Number" */ +#define MSVCRT__FPCLASS_QNAN 0x0002 /* Quiet "Not a Number" */ +#define MSVCRT__FPCLASS_NINF 0x0004 /* Negative Infinity */ +#define MSVCRT__FPCLASS_NN 0x0008 /* Negative Normal */ +#define MSVCRT__FPCLASS_ND 0x0010 /* Negative Denormal */ +#define MSVCRT__FPCLASS_NZ 0x0020 /* Negative Zero */ +#define MSVCRT__FPCLASS_PZ 0x0040 /* Positive Zero */ +#define MSVCRT__FPCLASS_PD 0x0080 /* Positive Denormal */ +#define MSVCRT__FPCLASS_PN 0x0100 /* Positive Normal */ +#define MSVCRT__FPCLASS_PINF 0x0200 /* Positive Infinity */ + +#define MSVCRT__EM_INVALID 0x00000010 +#define MSVCRT__EM_DENORMAL 0x00080000 +#define MSVCRT__EM_ZERODIVIDE 0x00000008 +#define MSVCRT__EM_OVERFLOW 0x00000004 +#define MSVCRT__EM_UNDERFLOW 0x00000002 +#define MSVCRT__EM_INEXACT 0x00000001 +#define MSVCRT__IC_AFFINE 0x00040000 +#define MSVCRT__IC_PROJECTIVE 0x00000000 +#define MSVCRT__RC_CHOP 0x00000300 +#define MSVCRT__RC_UP 0x00000200 +#define MSVCRT__RC_DOWN 0x00000100 +#define MSVCRT__RC_NEAR 0x00000000 +#define MSVCRT__PC_24 0x00020000 +#define MSVCRT__PC_53 0x00010000 +#define MSVCRT__PC_64 0x00000000 + +#define MSVCRT_CLOCKS_PER_SEC 1000 + +/* signals */ +#define MSVCRT_SIGINT 2 +#define MSVCRT_SIGILL 4 +#define MSVCRT_SIGFPE 8 +#define MSVCRT_SIGSEGV 11 +#define MSVCRT_SIGTERM 15 +#define MSVCRT_SIGBREAK 21 +#define MSVCRT_SIGABRT 22 +#define MSVCRT_NSIG (MSVCRT_SIGABRT + 1) + +typedef void (__cdecl *MSVCRT___sighandler_t)(int); + +#define MSVCRT_SIG_DFL ((MSVCRT___sighandler_t)0) +#define MSVCRT_SIG_IGN ((MSVCRT___sighandler_t)1) +#define MSVCRT_SIG_ERR ((MSVCRT___sighandler_t)-1) + +#define MSVCRT__FPE_INVALID 0x81 +#define MSVCRT__FPE_DENORMAL 0x82 +#define MSVCRT__FPE_ZERODIVIDE 0x83 +#define MSVCRT__FPE_OVERFLOW 0x84 +#define MSVCRT__FPE_UNDERFLOW 0x85 +#define MSVCRT__FPE_INEXACT 0x86 +#define MSVCRT__FPE_UNEMULATED 0x87 +#define MSVCRT__FPE_SQRTNEG 0x88 +#define MSVCRT__FPE_STACKOVERFLOW 0x8a +#define MSVCRT__FPE_STACKUNDERFLOW 0x8b +#define MSVCRT__FPE_EXPLICITGEN 0x8c + +#define _MS 0x01 +#define _MP 0x02 +#define _M1 0x04 +#define _M2 0x08 + +#define _SBUP 0x10 +#define _SBLOW 0x20 + +#define _MBC_SINGLE 0 +#define _MBC_LEAD 1 +#define _MBC_TRAIL 2 +#define _MBC_ILLEGAL -1 + +#define _MB_CP_SBCS 0 +#define _MB_CP_OEM -2 +#define _MB_CP_ANSI -3 +#define _MB_CP_LOCALE -4 + +#define _TRUNCATE ((MSVCRT_size_t)-1) + +void __cdecl MSVCRT_free(void*); +void* __cdecl MSVCRT_malloc(MSVCRT_size_t); +void* __cdecl MSVCRT_calloc(MSVCRT_size_t,MSVCRT_size_t); +void* __cdecl MSVCRT_realloc(void*,MSVCRT_size_t); + +int __cdecl MSVCRT_iswalpha(MSVCRT_wint_t); +int __cdecl MSVCRT_iswspace(MSVCRT_wint_t); +int __cdecl MSVCRT_iswdigit(MSVCRT_wint_t); +int __cdecl MSVCRT_isleadbyte(int); + +int __cdecl MSVCRT_fgetc(MSVCRT_FILE*); +int __cdecl MSVCRT_ungetc(int,MSVCRT_FILE*); +MSVCRT_wint_t __cdecl MSVCRT_fgetwc(MSVCRT_FILE*); +MSVCRT_wint_t __cdecl MSVCRT_ungetwc(MSVCRT_wint_t,MSVCRT_FILE*); +void __cdecl MSVCRT__exit(int); +void __cdecl MSVCRT_abort(void); +MSVCRT_ulong* __cdecl MSVCRT___doserrno(void); +int* __cdecl MSVCRT__errno(void); +char* __cdecl MSVCRT_getenv(const char*); +char* __cdecl MSVCRT_setlocale(int,const char*); +int __cdecl MSVCRT_fclose(MSVCRT_FILE*); +void __cdecl MSVCRT_terminate(void); +MSVCRT_FILE* __cdecl MSVCRT__iob_func(void); +MSVCRT_clock_t __cdecl MSVCRT_clock(void); +MSVCRT___time32_t __cdecl MSVCRT__time32(MSVCRT___time32_t*); +MSVCRT___time64_t __cdecl MSVCRT__time64(MSVCRT___time64_t*); +MSVCRT_FILE* __cdecl MSVCRT__fdopen(int, const char *); +MSVCRT_FILE* __cdecl MSVCRT__wfdopen(int, const MSVCRT_wchar_t *); +int __cdecl MSVCRT_vsnprintf(char *str, MSVCRT_size_t len, const char *format, __ms_va_list valist); +int __cdecl MSVCRT_vsnwprintf(MSVCRT_wchar_t *str, MSVCRT_size_t len, + const MSVCRT_wchar_t *format, __ms_va_list valist ); +int __cdecl MSVCRT_raise(int sig); + +typedef struct MSVCRT_tagLC_ID { + unsigned short wLanguage; + unsigned short wCountry; + unsigned short wCodePage; +} MSVCRT_LC_ID, *MSVCRT_LPLC_ID; + +typedef struct MSVCRT_threadlocaleinfostruct { + int refcount; + unsigned int lc_codepage; + unsigned int lc_collate_cp; + unsigned long lc_handle[6]; + MSVCRT_LC_ID lc_id[6]; + struct { + char *locale; + wchar_t *wlocale; + int *refcount; + int *wrefcount; + } lc_category[6]; + int lc_clike; + int mb_cur_max; + int *lconv_intl_refcount; + int *lconv_num_refcount; + int *lconv_mon_refcount; + struct MSVCRT_lconv *lconv; + int *ctype1_refcount; + unsigned short *ctype1; + unsigned short *pctype; + unsigned char *pclmap; + unsigned char *pcumap; + struct MSVCRT___lc_time_data *lc_time_curr; +} MSVCRT_threadlocinfo; + +typedef struct MSVCRT_threadmbcinfostruct { + int refcount; + int mbcodepage; + int ismbcodepage; + int mblcid; + unsigned short mbulinfo[6]; + char mbctype[257]; + char mbcasemap[256]; +} MSVCRT_threadmbcinfo; + +typedef struct MSVCRT_threadlocaleinfostruct *MSVCRT_pthreadlocinfo; +typedef struct MSVCRT_threadmbcinfostruct *MSVCRT_pthreadmbcinfo; + +typedef struct MSVCRT_localeinfo_struct +{ + MSVCRT_pthreadlocinfo locinfo; + MSVCRT_pthreadmbcinfo mbcinfo; +} MSVCRT__locale_tstruct, *MSVCRT__locale_t; + +#define MSVCRT__ENABLE_PER_THREAD_LOCALE 1 +#define MSVCRT__DISABLE_PER_THREAD_LOCALE 2 + +extern MSVCRT__locale_t MSVCRT_locale; +MSVCRT__locale_t get_locale(void); +void __cdecl _free_locale(MSVCRT__locale_t); + +#ifndef __WINE_MSVCRT_TEST +int __cdecl MSVCRT__write(int,const void*,unsigned int); +int __cdecl _getch(void); +int __cdecl _ismbblead(unsigned int); +int __cdecl _ismbstrail(const unsigned char* start, const unsigned char* str); +MSVCRT_intptr_t __cdecl MSVCRT__spawnve(int,const char*,const char* const *,const char* const *); +MSVCRT_intptr_t __cdecl MSVRT__spawnvpe(int,const char*,const char* const *,const char* const *); +MSVCRT_intptr_t __cdecl _wspawnve(int,const MSVCRT_wchar_t*,const MSVCRT_wchar_t* const *,const MSVCRT_wchar_t* const *); +MSVCRT_intptr_t __cdecl _wspawnvpe(int,const MSVCRT_wchar_t*,const MSVCRT_wchar_t* const *,const MSVCRT_wchar_t* const *); +void __cdecl _searchenv(const char*,const char*,char*); +int __cdecl _getdrive(void); +char* __cdecl _strdup(const char*); +char* __cdecl MSVCRT__strnset(char*,int,MSVCRT_size_t); +char* __cdecl _strset(char*,int); +int __cdecl _ungetch(int); +int __cdecl _cputs(const char*); +int __cdecl _cprintf(const char*,...); +char*** __cdecl __p__environ(void); +int* __cdecl __p___mb_cur_max(void); +unsigned int* __cdecl __p__fmode(void); +MSVCRT_wchar_t* __cdecl _wcsdup(const MSVCRT_wchar_t*); +MSVCRT_wchar_t*** __cdecl __p__wenviron(void); +char* __cdecl _strdate(char* date); +char* __cdecl _strtime(char* date); +int __cdecl _setmbcp(int); +int __cdecl MSVCRT__close(int); +int __cdecl MSVCRT__dup(int); +int __cdecl MSVCRT__dup2(int, int); +int __cdecl MSVCRT__pipe(int *, unsigned int, int); +MSVCRT_wchar_t* __cdecl _wgetenv(const MSVCRT_wchar_t*); +void __cdecl _wsearchenv(const MSVCRT_wchar_t*, const MSVCRT_wchar_t*, MSVCRT_wchar_t*); +MSVCRT_intptr_t __cdecl MSVCRT__spawnvpe(int, const char*, const char* const*, const char* const*); +void __cdecl MSVCRT__invalid_parameter(const MSVCRT_wchar_t *expr, const MSVCRT_wchar_t *func, + const MSVCRT_wchar_t *file, unsigned int line, MSVCRT_uintptr_t arg); +#endif + +#endif /* __WINE_MSVCRT_H */ diff --git a/devel/qt5/md5sums.txt b/devel/qt5/md5sums.txt new file mode 100644 index 00000000..d1f2be6a --- /dev/null +++ b/devel/qt5/md5sums.txt @@ -0,0 +1,124 @@ +3dcff150b6c18b80d3d516e0c7b969c5 qt3d-opensource-src-5.6.0.7z +301d5a63d8ea6a34028c68457d2e7154 qt3d-opensource-src-5.6.0.tar.gz +fba04c921d53fc3ec6794e2a2a75ca60 qt3d-opensource-src-5.6.0.tar.xz +8b6126f6a1601d1863bb328979f9dfda qt3d-opensource-src-5.6.0.zip +744dbaa25c00697f21cbe88ffaff0376 qtactiveqt-opensource-src-5.6.0.7z +0dda2244fb608fc4fc8fa5106ab4b433 qtactiveqt-opensource-src-5.6.0.tar.gz +791e40d20fed235b42029aa54d6f0634 qtactiveqt-opensource-src-5.6.0.tar.xz +1fabf16504b70c872fbeb17d6abcde0a qtactiveqt-opensource-src-5.6.0.zip +97faeb1b03b2f5edaa2f2356ce1b9ec1 qtandroidextras-opensource-src-5.6.0.7z +665b82943a59ce317de57fc7eec0e9b7 qtandroidextras-opensource-src-5.6.0.tar.gz +8ae7cbf56eb7812ca5c1f6ae6addcead qtandroidextras-opensource-src-5.6.0.tar.xz +91b0c3716837b2668f6cbf76f2e4a8cb qtandroidextras-opensource-src-5.6.0.zip +6e92a4caabb8f1fb3d5c51e7aaa6b591 qtbase-opensource-src-5.6.0.7z +5c3cf6bad33db0bc39db4f465867725c qtbase-opensource-src-5.6.0.tar.gz +d6b6cfd333c22829c6c85fc52ceed019 qtbase-opensource-src-5.6.0.tar.xz +4f9b912b72c29177685bdb547f17dc8f qtbase-opensource-src-5.6.0.zip +aaf4bdccbc25d1c833162b49a841be9b qtcanvas3d-opensource-src-5.6.0.7z +447ec949dacb222ba8185eaf63257f9d qtcanvas3d-opensource-src-5.6.0.tar.gz +73ca1057b64bc99299d2e55c1a35f469 qtcanvas3d-opensource-src-5.6.0.tar.xz +14ecc8a9109862242bbaf28b68df2a93 qtcanvas3d-opensource-src-5.6.0.zip +53e3e73bba59521d57123c1b8a71413a qtconnectivity-opensource-src-5.6.0.7z +a3a2a72fce0e01431b3e7051dde99dc1 qtconnectivity-opensource-src-5.6.0.tar.gz +38589e8f50dbf835db4fdb5da32a7114 qtconnectivity-opensource-src-5.6.0.tar.xz +797df91f30a0f190d2bb11c09990d388 qtconnectivity-opensource-src-5.6.0.zip +cbfdeaaf0e6fe79c0fba2530165f5de2 qtdeclarative-opensource-src-5.6.0.7z +bcf835113719f65942a929b273d696fa qtdeclarative-opensource-src-5.6.0.tar.gz +5eb41d468d88a70574ddc5237b68f7e8 qtdeclarative-opensource-src-5.6.0.tar.xz +7c251fce78f3da35e6dc18193ced5d84 qtdeclarative-opensource-src-5.6.0.zip +4723d8d4285ce2f8a599623caff7e596 qtdoc-opensource-src-5.6.0.7z +6c8a96b689ec6cba792ad296d4153efe qtdoc-opensource-src-5.6.0.tar.gz +b93328b53f9a09eb1d5285e327225cf2 qtdoc-opensource-src-5.6.0.tar.xz +8fcf8763b907e30e634729fcfe017749 qtdoc-opensource-src-5.6.0.zip +a4655a4b1e6938184f330c670d9517db qtenginio-opensource-src-1.6.0.7z +9bff3f954d1494c619ab3289bc5fd2e8 qtenginio-opensource-src-1.6.0.tar.gz +67362f39eca4316905f86cbba653309b qtenginio-opensource-src-1.6.0.tar.xz +213b0c8708dd8d9a5ddcc244f8581f8c qtenginio-opensource-src-1.6.0.zip +7d62d12f5473d62bc8bbc2d9c53cf6eb qtgraphicaleffects-opensource-src-5.6.0.7z +230e98a828fe45bbb09f2e4e3809ab10 qtgraphicaleffects-opensource-src-5.6.0.tar.gz +6132524e7dbceb3ea634200d4d7cf235 qtgraphicaleffects-opensource-src-5.6.0.tar.xz +0f9b2d2d8bed5c43cbd9623aba16a5e9 qtgraphicaleffects-opensource-src-5.6.0.zip +3c465e39b42e5ffde46c057f268dbec5 qtimageformats-opensource-src-5.6.0.7z +c7f07ce30f510655633f4912db142ec7 qtimageformats-opensource-src-5.6.0.tar.gz +bb57c1db37e89a47f3513859ef04ae97 qtimageformats-opensource-src-5.6.0.tar.xz +bd78ccb9c01cce15ff1d0178222d1a55 qtimageformats-opensource-src-5.6.0.zip +a9f8255d38e3d36ad4d9e7b69e8a8484 qtlocation-opensource-src-5.6.0.7z +33f52551912d7bf9e18e2641b205024a qtlocation-opensource-src-5.6.0.tar.gz +eee764d337854424a30f0356ba04ae6b qtlocation-opensource-src-5.6.0.tar.xz +9569432266da50c01447f3fd2fe08a03 qtlocation-opensource-src-5.6.0.zip +e4af35f7a734a92f28bb9b9a4ef133f0 qtmacextras-opensource-src-5.6.0.7z +74f7f59706649c05290a13a4489298c0 qtmacextras-opensource-src-5.6.0.tar.gz +8e730aa50307bc85d2890b4f369a0f31 qtmacextras-opensource-src-5.6.0.tar.xz +8317f9954dd6006329669c0765b08d9e qtmacextras-opensource-src-5.6.0.zip +98fc772e44e80e50d1b3eab1b067c825 qtmultimedia-opensource-src-5.6.0.7z +612aa894f9abc571c42990f23989eab7 qtmultimedia-opensource-src-5.6.0.tar.gz +c66e500f6d5be693231718cccf997c30 qtmultimedia-opensource-src-5.6.0.tar.xz +afca41c5450380b2025b4deca0984784 qtmultimedia-opensource-src-5.6.0.zip +583d7a3e60424589366ae5e5e20b4799 qtquickcontrols2-opensource-src-5.6.0.7z +cc49f31948f8cd526dc1faeef4374521 qtquickcontrols2-opensource-src-5.6.0.tar.gz +122dd81824cecaa7e327c003469d0df8 qtquickcontrols2-opensource-src-5.6.0.tar.xz +9d3db4d897c2914b1f0a8389d744189b qtquickcontrols2-opensource-src-5.6.0.zip +c92d523469e3df077cf340c80ea600a4 qtquickcontrols-opensource-src-5.6.0.7z +852c459b5d18fa3223d83daadb934a7a qtquickcontrols-opensource-src-5.6.0.tar.gz +f1af1f72ee2860c683a05558d261eece qtquickcontrols-opensource-src-5.6.0.tar.xz +01b047478f4e8c1f2ea01718d02358b2 qtquickcontrols-opensource-src-5.6.0.zip +fd183badb622651caf626d3fe24802cc qtscript-opensource-src-5.6.0.7z +fcb2a75b728bfd4e7340cd67e7343c63 qtscript-opensource-src-5.6.0.tar.gz +779e6083f0adc075b132c2706241e491 qtscript-opensource-src-5.6.0.tar.xz +7578334b713227b7552676ce36eea6ad qtscript-opensource-src-5.6.0.zip +4f6a6f6e9e37448047a1838ab1b5e0ba qtsensors-opensource-src-5.6.0.7z +5a91dc9844e93b61944c198bfa8c323b qtsensors-opensource-src-5.6.0.tar.gz +1c9a2958e108e8393dbb4427831df647 qtsensors-opensource-src-5.6.0.tar.xz +33a37d3fd26f8f6cd426607dcaa38f8a qtsensors-opensource-src-5.6.0.zip +f7e4105c9370798a9b7ab4b09e75b77f qtserialbus-opensource-src-5.6.0.7z +4e50bfd288bac62a2b6a63d7292e6c21 qtserialbus-opensource-src-5.6.0.tar.gz +a9dfcfbf88034ada5b75f0be59030a37 qtserialbus-opensource-src-5.6.0.tar.xz +43c480498fe596900bce34093e9b049a qtserialbus-opensource-src-5.6.0.zip +0193dc99f01b04b32ce4548190f91634 qtserialport-opensource-src-5.6.0.7z +7cb1f95074e2ab386bb8ea40255b2032 qtserialport-opensource-src-5.6.0.tar.gz +11b4bfd0ba6ec7bce686984c54d05340 qtserialport-opensource-src-5.6.0.tar.xz +c8fc4d168a7d6b6ea2ecd739bd9ab35b qtserialport-opensource-src-5.6.0.zip +1ce2c5d8c7c43a6f68ab1a2f50bf998c qtsvg-opensource-src-5.6.0.7z +2c0cd0f413e7e07bd63593c2a8eb2136 qtsvg-opensource-src-5.6.0.tar.gz +ab86dafed92185a2f98190fc37afceab qtsvg-opensource-src-5.6.0.tar.xz +ad111443e9bae75f871ee761e34b827f qtsvg-opensource-src-5.6.0.zip +c87693c8e75ef790f1cfd1d7314d44be qttools-opensource-src-5.6.0.7z +f7e376678e3ec47d7380b8838c5ee8c1 qttools-opensource-src-5.6.0.tar.gz +5dd6204df7c81c684607f2fc8a5d351a qttools-opensource-src-5.6.0.tar.xz +7286268f4e478e7291f05d683cca4400 qttools-opensource-src-5.6.0.zip +0b683bc375b2e30ab3b6b70a496a8c69 qttranslations-opensource-src-5.6.0.7z +ef02635c71cfb5482de04c7298cfe5f5 qttranslations-opensource-src-5.6.0.tar.gz +62b3b6191f902466d97e09df48c27534 qttranslations-opensource-src-5.6.0.tar.xz +b806062fbfe6f5134404d0459fea7dae qttranslations-opensource-src-5.6.0.zip +02bddd020ae05387c1da0b9a210740c2 qtwayland-opensource-src-5.6.0.7z +6fdc7b3b4f3b2070503cefe5146ef778 qtwayland-opensource-src-5.6.0.tar.gz +9dbfb0278eb0891e50b136d8b6eaa62b qtwayland-opensource-src-5.6.0.tar.xz +6e96616a53097b13cce3739bea9169d9 qtwayland-opensource-src-5.6.0.zip +eaa3769bae1147a46f00ef11f86528fb qtwebchannel-opensource-src-5.6.0.7z +905593db63fa60d895e068f248c21535 qtwebchannel-opensource-src-5.6.0.tar.gz +1ba293366dcf67f8b8181be2682ee81a qtwebchannel-opensource-src-5.6.0.tar.xz +916f28fb93ab678e03921f4928cac531 qtwebchannel-opensource-src-5.6.0.zip +a5869b7f2e649cd7ae4f0e235fff19f1 qtwebengine-opensource-src-5.6.0.7z +de4511ad50b36554b5143695d52b6e86 qtwebengine-opensource-src-5.6.0.tar.gz +a8be84d642a78724d84b27c20adee14c qtwebengine-opensource-src-5.6.0.tar.xz +150d1ea27c4fd43a0734575925acc0d9 qtwebengine-opensource-src-5.6.0.zip +753db6e7165ba5772a16791b134cf8d9 qtwebsockets-opensource-src-5.6.0.7z +f0a7b40a8e0023ada240985f0362aaf8 qtwebsockets-opensource-src-5.6.0.tar.gz +266d9b8b0fca6839a57ed2b17f4a8984 qtwebsockets-opensource-src-5.6.0.tar.xz +c2e41ec687b5bfc9037e55cd4f74d935 qtwebsockets-opensource-src-5.6.0.zip +77c870ca4f1850845e69920e33274012 qtwebview-opensource-src-5.6.0.7z +25d74302891650be01397f6e14020c9e qtwebview-opensource-src-5.6.0.tar.gz +c324d2acd991b1e958e58ca6d92a686c qtwebview-opensource-src-5.6.0.tar.xz +fb3802571bcc62c65e166f2e88b04ded qtwebview-opensource-src-5.6.0.zip +1cafb232fac83bf4cae4d8bb94289a6b qtwinextras-opensource-src-5.6.0.7z +0a26fc6d3b6a01ac6a1864add06e4213 qtwinextras-opensource-src-5.6.0.tar.gz +4e40054a0ec59061d0da2fbc23fc69f1 qtwinextras-opensource-src-5.6.0.tar.xz +97da0119f747c1daa7c0c31c25ddb4bd qtwinextras-opensource-src-5.6.0.zip +dc616e282563af2965f5346230da7081 qtx11extras-opensource-src-5.6.0.7z +dd8c0935260ba9b2493e5664d4e796c7 qtx11extras-opensource-src-5.6.0.tar.gz +01bd249fdcf41c6edc30f4a85d4aed94 qtx11extras-opensource-src-5.6.0.tar.xz +0e1a0226a5c097b1d707c2a6e1b19357 qtx11extras-opensource-src-5.6.0.zip +296e25da0cb660e56e3a1f0aa5901a9a qtxmlpatterns-opensource-src-5.6.0.7z +ebeed536134398916b7be9bd31928f6b qtxmlpatterns-opensource-src-5.6.0.tar.gz +b511b49ab76a1da11b25802861d5688c qtxmlpatterns-opensource-src-5.6.0.tar.xz +b8e756cb7b8f34e0a77cbbb4ba636855 qtxmlpatterns-opensource-src-5.6.0.zip diff --git a/devel/qt5/md5sums_community.txt b/devel/qt5/md5sums_community.txt new file mode 100644 index 00000000..5cc5c382 --- /dev/null +++ b/devel/qt5/md5sums_community.txt @@ -0,0 +1,4 @@ +550eed457a44f46985ca4fee6492eb4b qtwebkit-opensource-src-5.6.0.7z +a59346e1faf63b8d26bffc73aafb5ccb qtwebkit-opensource-src-5.6.0.tar.gz +eba1382587add1c9b1293a532e7dd161 qtwebkit-opensource-src-5.6.0.tar.xz +2f9b0645461774024b391d722a2b516c qtwebkit-opensource-src-5.6.0.zip