Merge pull request #9721 from MSOpenTech/wp8-fix

WP8 and Windows 8.1 Universal App fixes
This commit is contained in:
minggo 2014-12-31 09:47:58 +08:00
commit 5d109d0415
8 changed files with 329 additions and 2 deletions

View File

@ -70,11 +70,13 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBundle3D.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBundle3D.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBundle3DData.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBundle3DData.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBundleReader.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBundleReader.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCFrustum.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMesh.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMesh.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMeshSkin.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMeshSkin.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMeshVertexIndexData.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMeshVertexIndexData.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCOBB.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCOBB.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCObjLoader.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCObjLoader.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCPlane.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCRay.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCRay.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCSkeleton3D.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCSkeleton3D.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCSprite3D.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCSprite3D.h" />
@ -312,6 +314,7 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\CCStdC.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\CCStdC.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\CCWinRTUtils.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\CCWinRTUtils.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_ntop_winrt.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_ntop_winrt.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_pton_winrt.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEvent.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEvent.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEventTypes.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEventTypes.h" />
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\Keyboard-winrt.h" /> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\Keyboard-winrt.h" />
@ -489,11 +492,13 @@
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBillBoard.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBillBoard.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBundle3D.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBundle3D.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBundleReader.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCBundleReader.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCFrustum.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMesh.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMesh.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMeshSkin.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMeshSkin.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMeshVertexIndexData.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCMeshVertexIndexData.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCOBB.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCOBB.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCObjLoader.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCObjLoader.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCPlane.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCRay.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCRay.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCSkeleton3D.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCSkeleton3D.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCSprite3D.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCSprite3D.cpp" />
@ -702,6 +707,7 @@
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\CCStdC.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\CCStdC.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\CCWinRTUtils.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\CCWinRTUtils.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_ntop_winrt.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_ntop_winrt.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_pton_winrt.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEvent.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\InputEvent.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\Keyboard-winrt.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\Keyboard-winrt.cpp" />
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\pch.cpp"> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\pch.cpp">
@ -834,6 +840,7 @@
<ProjectCapability Include="SourceItemsFromImports" /> <ProjectCapability Include="SourceItemsFromImports" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCAnimationCurve.inl" />
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\math\Mat4.inl" /> <None Include="$(MSBuildThisFileDirectory)..\..\..\..\math\Mat4.inl" />
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\math\MathUtil.inl" /> <None Include="$(MSBuildThisFileDirectory)..\..\..\..\math\MathUtil.inl" />
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\math\MathUtilNeon.inl" /> <None Include="$(MSBuildThisFileDirectory)..\..\..\..\math\MathUtilNeon.inl" />

View File

@ -1273,6 +1273,15 @@
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\editor-support\cocostudio\ActionTimeline\CCActionTimelineNode.h"> <ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\editor-support\cocostudio\ActionTimeline\CCActionTimelineNode.h">
<Filter>cocostudio\TimelineAction</Filter> <Filter>cocostudio\TimelineAction</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCFrustum.h">
<Filter>3d</Filter>
</ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCPlane.h">
<Filter>3d</Filter>
</ClInclude>
<ClInclude Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_pton_winrt.h">
<Filter>platform\winrt</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\cocos2d.cpp" /> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\cocos2d.cpp" />
@ -2357,6 +2366,15 @@
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\editor-support\cocostudio\ActionTimeline\CCActionTimelineNode.cpp"> <ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\editor-support\cocostudio\ActionTimeline\CCActionTimelineNode.cpp">
<Filter>cocostudio\TimelineAction</Filter> <Filter>cocostudio\TimelineAction</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCFrustum.cpp">
<Filter>3d</Filter>
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCPlane.cpp">
<Filter>3d</Filter>
</ClCompile>
<ClCompile Include="$(MSBuildThisFileDirectory)..\..\..\..\platform\winrt\inet_pton_winrt.cpp">
<Filter>platform\winrt</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Filter Include="2d"> <Filter Include="2d">
@ -2707,5 +2725,8 @@
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\shaders\ccShader_grayscale.frag"> <None Include="$(MSBuildThisFileDirectory)..\..\..\..\ui\shaders\ccShader_grayscale.frag">
<Filter>ui\shaders</Filter> <Filter>ui\shaders</Filter>
</None> </None>
<None Include="$(MSBuildThisFileDirectory)..\..\..\..\3d\CCAnimationCurve.inl">
<Filter>3d</Filter>
</None>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -224,15 +224,18 @@
<ClInclude Include="..\3d\CCBundle3D.h" /> <ClInclude Include="..\3d\CCBundle3D.h" />
<ClInclude Include="..\3d\CCBundle3DData.h" /> <ClInclude Include="..\3d\CCBundle3DData.h" />
<ClInclude Include="..\3d\CCBundleReader.h" /> <ClInclude Include="..\3d\CCBundleReader.h" />
<ClInclude Include="..\3d\CCFrustum.h" />
<ClInclude Include="..\3d\CCMesh.h" /> <ClInclude Include="..\3d\CCMesh.h" />
<ClInclude Include="..\3d\CCMeshSkin.h" /> <ClInclude Include="..\3d\CCMeshSkin.h" />
<ClInclude Include="..\3d\CCMeshVertexIndexData.h" /> <ClInclude Include="..\3d\CCMeshVertexIndexData.h" />
<ClInclude Include="..\3d\CCOBB.h" /> <ClInclude Include="..\3d\CCOBB.h" />
<ClInclude Include="..\3d\CCObjLoader.h" /> <ClInclude Include="..\3d\CCObjLoader.h" />
<ClInclude Include="..\3d\CCPlane.h" />
<ClInclude Include="..\3d\CCRay.h" /> <ClInclude Include="..\3d\CCRay.h" />
<ClInclude Include="..\3d\CCSkeleton3D.h" /> <ClInclude Include="..\3d\CCSkeleton3D.h" />
<ClInclude Include="..\3d\CCSprite3D.h" /> <ClInclude Include="..\3d\CCSprite3D.h" />
<ClInclude Include="..\3d\CCSprite3DMaterial.h" /> <ClInclude Include="..\3d\CCSprite3DMaterial.h" />
<ClInclude Include="..\3d\cocos3d.h" />
<ClInclude Include="..\audio\include\Export.h" /> <ClInclude Include="..\audio\include\Export.h" />
<ClInclude Include="..\audio\include\SimpleAudioEngine.h" /> <ClInclude Include="..\audio\include\SimpleAudioEngine.h" />
<ClInclude Include="..\audio\wp8\Audio.h" /> <ClInclude Include="..\audio\wp8\Audio.h" />
@ -458,6 +461,7 @@
<ClInclude Include="..\platform\winrt\CCWinRTUtils.h" /> <ClInclude Include="..\platform\winrt\CCWinRTUtils.h" />
<ClInclude Include="..\platform\winrt\DirectXHelper.h" /> <ClInclude Include="..\platform\winrt\DirectXHelper.h" />
<ClInclude Include="..\platform\winrt\inet_ntop_winrt.h" /> <ClInclude Include="..\platform\winrt\inet_ntop_winrt.h" />
<ClInclude Include="..\platform\winrt\inet_pton_winrt.h" />
<ClInclude Include="..\platform\winrt\InputEvent.h" /> <ClInclude Include="..\platform\winrt\InputEvent.h" />
<ClInclude Include="..\platform\winrt\InputEventTypes.h" /> <ClInclude Include="..\platform\winrt\InputEventTypes.h" />
<ClInclude Include="..\platform\winrt\pch.h" /> <ClInclude Include="..\platform\winrt\pch.h" />
@ -664,11 +668,13 @@
<ClCompile Include="..\3d\CCBillBoard.cpp" /> <ClCompile Include="..\3d\CCBillBoard.cpp" />
<ClCompile Include="..\3d\CCBundle3D.cpp" /> <ClCompile Include="..\3d\CCBundle3D.cpp" />
<ClCompile Include="..\3d\CCBundleReader.cpp" /> <ClCompile Include="..\3d\CCBundleReader.cpp" />
<ClCompile Include="..\3d\CCFrustum.cpp" />
<ClCompile Include="..\3d\CCMesh.cpp" /> <ClCompile Include="..\3d\CCMesh.cpp" />
<ClCompile Include="..\3d\CCMeshSkin.cpp" /> <ClCompile Include="..\3d\CCMeshSkin.cpp" />
<ClCompile Include="..\3d\CCMeshVertexIndexData.cpp" /> <ClCompile Include="..\3d\CCMeshVertexIndexData.cpp" />
<ClCompile Include="..\3d\CCOBB.cpp" /> <ClCompile Include="..\3d\CCOBB.cpp" />
<ClCompile Include="..\3d\CCObjLoader.cpp" /> <ClCompile Include="..\3d\CCObjLoader.cpp" />
<ClCompile Include="..\3d\CCPlane.cpp" />
<ClCompile Include="..\3d\CCRay.cpp" /> <ClCompile Include="..\3d\CCRay.cpp" />
<ClCompile Include="..\3d\CCSkeleton3D.cpp" /> <ClCompile Include="..\3d\CCSkeleton3D.cpp" />
<ClCompile Include="..\3d\CCSprite3D.cpp" /> <ClCompile Include="..\3d\CCSprite3D.cpp" />
@ -920,6 +926,7 @@
<ClCompile Include="..\platform\winrt\CCStdC.cpp" /> <ClCompile Include="..\platform\winrt\CCStdC.cpp" />
<ClCompile Include="..\platform\winrt\CCWinRTUtils.cpp" /> <ClCompile Include="..\platform\winrt\CCWinRTUtils.cpp" />
<ClCompile Include="..\platform\winrt\inet_ntop_winrt.cpp" /> <ClCompile Include="..\platform\winrt\inet_ntop_winrt.cpp" />
<ClCompile Include="..\platform\winrt\inet_pton_winrt.cpp" />
<ClCompile Include="..\platform\winrt\InputEvent.cpp" /> <ClCompile Include="..\platform\winrt\InputEvent.cpp" />
<ClCompile Include="..\platform\winrt\pch.cpp"> <ClCompile Include="..\platform\winrt\pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
@ -1061,6 +1068,7 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\3d\CCAnimationCurve.inl" />
<None Include="..\math\Mat4.inl" /> <None Include="..\math\Mat4.inl" />
<None Include="..\math\MathUtil.inl" /> <None Include="..\math\MathUtil.inl" />
<None Include="..\math\MathUtilNeon.inl" /> <None Include="..\math\MathUtilNeon.inl" />

View File

@ -1326,6 +1326,15 @@
<ClCompile Include="..\editor-support\cocostudio\ActionTimeline\CCActionTimelineNode.cpp"> <ClCompile Include="..\editor-support\cocostudio\ActionTimeline\CCActionTimelineNode.cpp">
<Filter>cocostudio\TimelineAction</Filter> <Filter>cocostudio\TimelineAction</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="..\3d\CCFrustum.cpp">
<Filter>3d</Filter>
</ClCompile>
<ClCompile Include="..\3d\CCPlane.cpp">
<Filter>3d</Filter>
</ClCompile>
<ClCompile Include="..\platform\winrt\inet_pton_winrt.cpp">
<Filter>platform\winrt</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="CCAction.h"> <ClInclude Include="CCAction.h">
@ -2571,6 +2580,18 @@
<ClInclude Include="..\editor-support\cocostudio\ActionTimeline\CCActionTimelineNode.h"> <ClInclude Include="..\editor-support\cocostudio\ActionTimeline\CCActionTimelineNode.h">
<Filter>cocostudio\TimelineAction</Filter> <Filter>cocostudio\TimelineAction</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="..\3d\CCFrustum.h">
<Filter>3d</Filter>
</ClInclude>
<ClInclude Include="..\3d\CCPlane.h">
<Filter>3d</Filter>
</ClInclude>
<ClInclude Include="..\3d\cocos3d.h">
<Filter>3d</Filter>
</ClInclude>
<ClInclude Include="..\platform\winrt\inet_pton_winrt.h">
<Filter>platform\winrt</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\math\Mat4.inl"> <None Include="..\math\Mat4.inl">
@ -2663,5 +2684,8 @@
<None Include="..\ui\shaders\ccShader_grayscale.frag"> <None Include="..\ui\shaders\ccShader_grayscale.frag">
<Filter>ui\shaders</Filter> <Filter>ui\shaders</Filter>
</None> </None>
<None Include="..\3d\CCAnimationCurve.inl">
<Filter>3d</Filter>
</None>
</ItemGroup> </ItemGroup>
</Project> </Project>

View File

@ -42,6 +42,7 @@
#define bzero(a, b) memset(a, 0, b); #define bzero(a, b) memset(a, 0, b);
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
#include "inet_ntop_winrt.h" #include "inet_ntop_winrt.h"
#include "inet_pton_winrt.h"
#include "CCWinRTUtils.h" #include "CCWinRTUtils.h"
#endif #endif
#else #else

View File

@ -1,5 +1,5 @@
#ifndef HEADER_CURL_INET_NTOP_H #ifndef HEADER_CURL_INET_NTOP_WINRT_H
#define HEADER_CURL_INET_NTOP_H #define HEADER_CURL_INET_NTOP_WINRT_H
/*************************************************************************** /***************************************************************************
* _ _ ____ _ * _ _ ____ _
* Project ___| | | | _ \| | * Project ___| | | | _ \| |

View File

@ -0,0 +1,234 @@
/* This is from the BIND 4.9.4 release, modified to compile by itself */
/* Copyright (c) 1996 by Internet Software Consortium.
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
* ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
* CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
* ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
* SOFTWARE.
*/
/* Portions Copyright (c) Microsoft Open Technologies, Inc. */
/*modifications by Microsoft Open Technologies, Inc. to implement missing inet_pton() from Windows 8 SDK */
#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
#include <errno.h>
#include <assert.h>
#define ERRNO ((int)GetLastError())
#define SET_ERRNO(x) (SetLastError((DWORD)(x)))
#include "inet_pton_winrt.h"
#define ENABLE_IPV6
#define IN6ADDRSZ 16
#define INADDRSZ 4
#define INT16SZ 2
/*
* WARNING: Don't even consider trying to compile this on a system where
* sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX.
*/
static int inet_pton4(const char *src, unsigned char *dst);
#ifdef ENABLE_IPV6
static int inet_pton6(const char *src, unsigned char *dst);
#endif
/* int
* inet_pton(af, src, dst)
* convert from presentation format (which usually means ASCII printable)
* to network format (which is usually some kind of binary format).
* return:
* 1 if the address was valid for the specified address family
* 0 if the address wasn't valid (`dst' is untouched in this case)
* -1 if some other error occurred (`dst' is untouched in this case, too)
* notice:
* On Windows we store the error in the thread errno, not
* in the winsock error code. This is to avoid losing the
* actual last winsock error. So use macro ERRNO to fetch the
* errno this function sets when returning (-1), not SOCKERRNO.
* author:
* Paul Vixie, 1996.
*/
int inet_pton(int af, const char *src, void *dst)
{
switch (af) {
case AF_INET:
return (inet_pton4(src, (unsigned char *)dst));
#ifdef ENABLE_IPV6
case AF_INET6:
return (inet_pton6(src, (unsigned char *)dst));
#endif
default:
SET_ERRNO(EAFNOSUPPORT);
return (-1);
}
/* NOTREACHED */
}
/* int
* inet_pton4(src, dst)
* like inet_aton() but without all the hexadecimal and shorthand.
* return:
* 1 if `src' is a valid dotted quad, else 0.
* notice:
* does not touch `dst' unless it's returning 1.
* author:
* Paul Vixie, 1996.
*/
static int
inet_pton4(const char *src, unsigned char *dst)
{
static const char digits[] = "0123456789";
int saw_digit, octets, ch;
unsigned char tmp[INADDRSZ], *tp;
saw_digit = 0;
octets = 0;
tp = tmp;
*tp = 0;
while((ch = *src++) != '\0') {
const char *pch;
if((pch = strchr(digits, ch)) != NULL) {
unsigned int val = *tp * 10 + (unsigned int)(pch - digits);
if(saw_digit && *tp == 0)
return (0);
if(val > 255)
return (0);
*tp = (unsigned char)val;
if(! saw_digit) {
if(++octets > 4)
return (0);
saw_digit = 1;
}
}
else if(ch == '.' && saw_digit) {
if(octets == 4)
return (0);
*++tp = 0;
saw_digit = 0;
}
else
return (0);
}
if(octets < 4)
return (0);
memcpy(dst, tmp, INADDRSZ);
return (1);
}
#ifdef ENABLE_IPV6
/* int
* inet_pton6(src, dst)
* convert presentation level address to network order binary form.
* return:
* 1 if `src' is a valid [RFC1884 2.2] address, else 0.
* notice:
* (1) does not touch `dst' unless it's returning 1.
* (2) :: in a full address is silently ignored.
* credit:
* inspired by Mark Andrews.
* author:
* Paul Vixie, 1996.
*/
static int
inet_pton6(const char *src, unsigned char *dst)
{
static const char xdigits_l[] = "0123456789abcdef",
xdigits_u[] = "0123456789ABCDEF";
unsigned char tmp[IN6ADDRSZ], *tp, *endp, *colonp;
const char *xdigits, *curtok;
int ch, saw_xdigit;
size_t val;
memset((tp = tmp), 0, IN6ADDRSZ);
endp = tp + IN6ADDRSZ;
colonp = NULL;
/* Leading :: requires some special handling. */
if(*src == ':')
if(*++src != ':')
return (0);
curtok = src;
saw_xdigit = 0;
val = 0;
while((ch = *src++) != '\0') {
const char *pch;
if((pch = strchr((xdigits = xdigits_l), ch)) == NULL)
pch = strchr((xdigits = xdigits_u), ch);
if(pch != NULL) {
val <<= 4;
val |= (pch - xdigits);
if(++saw_xdigit > 4)
return (0);
continue;
}
if(ch == ':') {
curtok = src;
if(!saw_xdigit) {
if(colonp)
return (0);
colonp = tp;
continue;
}
if(tp + INT16SZ > endp)
return (0);
*tp++ = (unsigned char) (val >> 8) & 0xff;
*tp++ = (unsigned char) val & 0xff;
saw_xdigit = 0;
val = 0;
continue;
}
if(ch == '.' && ((tp + INADDRSZ) <= endp) &&
inet_pton4(curtok, tp) > 0) {
tp += INADDRSZ;
saw_xdigit = 0;
break; /* '\0' was seen by inet_pton4(). */
}
return (0);
}
if(saw_xdigit) {
if(tp + INT16SZ > endp)
return (0);
*tp++ = (unsigned char) (val >> 8) & 0xff;
*tp++ = (unsigned char) val & 0xff;
}
if(colonp != NULL) {
/*
* Since some memmove()'s erroneously fail to handle
* overlapping regions, we'll do the shift by hand.
*/
const ssize_t n = tp - colonp;
ssize_t i;
if(tp == endp)
return (0);
for(i = 1; i <= n; i++) {
*(endp - i) = *(colonp + n - i);
*(colonp + n - i) = 0;
}
tp = endp;
}
if(tp != endp)
return (0);
memcpy(dst, tmp, IN6ADDRSZ);
return (1);
}
#endif /* ENABLE_IPV6 */
#endif /* HAVE_INET_PTON */

View File

@ -0,0 +1,32 @@
#ifndef HEADER_CURL_INET_PTON_WINIRT_H
#define HEADER_CURL_INET_PTON_WINIRT_H
/***************************************************************************
* _ _ ____ _
* Project ___| | | | _ \| |
* / __| | | | |_) | |
* | (__| |_| | _ <| |___
* \___|\___/|_| \_\_____|
*
* Copyright (C) 1998 - 2005, Daniel Stenberg, <daniel@haxx.se>, et al.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://curl.haxx.se/docs/copyright.html.
*
* You may opt to use, copy, modify, merge, publish, distribute and/or sell
* copies of the Software, and permit persons to whom the Software is
* furnished to do so, under the terms of the COPYING file.
*
* This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
* KIND, either express or implied.
*
* Portions Copyright (c) Microsoft Open Technologies, Inc.
*
***************************************************************************/
#if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
int inet_pton(int af, const char *src, void *dst);
#endif
#endif /* HEADER_CURL_INET_PTON_WINIRT_H */