Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Gpdb
提交
8411931a
G
Gpdb
项目概览
Greenplum
/
Gpdb
通知
7
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
Gpdb
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8411931a
编写于
3月 19, 1997
作者:
M
Marc G. Fournier
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fixing a screw up
上级
678cd5c6
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
0 addition
and
144 deletion
+0
-144
src/backend/port/inet_aton.c
src/backend/port/inet_aton.c
+0
-142
src/backend/port/inet_aton.h
src/backend/port/inet_aton.h
+0
-2
未找到文件。
src/backend/port/inet_aton.c
已删除
100644 → 0
浏览文件 @
678cd5c6
/*
*
* This inet_aton() function was taken from the GNU C library and
* incorporated into Postgres for those systems which do not have this
* routine in their standard C libraries.
*
* The function was been extracted whole from the file inet_aton.c in
* Release 5.3.12 of the Linux C library, which is derived from the
* GNU C library, by Bryan Henderson in October 1996. The copyright
* notice from that file is below.
*/
/*
* Copyright (c) 1983, 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. */
#include <sys/types.h>
#include <netinet/in.h>
#include <ctype.h>
#include "inet_aton.h"
/*
* Check whether "cp" is a valid ascii representation
* of an Internet address and convert to a binary address.
* Returns 1 if the address is valid, 0 if not.
* This replaces inet_addr, the return value from which
* cannot distinguish between failure and a local broadcast address.
*/
int
inet_aton
(
const
char
*
cp
,
struct
in_addr
*
addr
)
{
register
u_long
val
;
register
int
base
,
n
;
register
char
c
;
u_int
parts
[
4
];
register
u_int
*
pp
=
parts
;
for
(;;)
{
/*
* Collect number up to ``.''.
* Values are specified as for C:
* 0x=hex, 0=octal, other=decimal.
*/
val
=
0
;
base
=
10
;
if
(
*
cp
==
'0'
)
{
if
(
*++
cp
==
'x'
||
*
cp
==
'X'
)
base
=
16
,
cp
++
;
else
base
=
8
;
}
while
((
c
=
*
cp
)
!=
'\0'
)
{
if
(
isascii
(
c
)
&&
isdigit
(
c
))
{
val
=
(
val
*
base
)
+
(
c
-
'0'
);
cp
++
;
continue
;
}
if
(
base
==
16
&&
isascii
(
c
)
&&
isxdigit
(
c
))
{
val
=
(
val
<<
4
)
+
(
c
+
10
-
(
islower
(
c
)
?
'a'
:
'A'
));
cp
++
;
continue
;
}
break
;
}
if
(
*
cp
==
'.'
)
{
/*
* Internet format:
* a.b.c.d
* a.b.c (with c treated as 16-bits)
* a.b (with b treated as 24 bits)
*/
if
(
pp
>=
parts
+
3
||
val
>
0xff
)
return
(
0
);
*
pp
++
=
val
,
cp
++
;
}
else
break
;
}
/*
* Check for trailing characters.
*/
if
(
*
cp
&&
(
!
isascii
(
*
cp
)
||
!
isspace
(
*
cp
)))
return
(
0
);
/*
* Concoct the address according to
* the number of parts specified.
*/
n
=
pp
-
parts
+
1
;
switch
(
n
)
{
case
1
:
/* a -- 32 bits */
break
;
case
2
:
/* a.b -- 8.24 bits */
if
(
val
>
0xffffff
)
return
(
0
);
val
|=
parts
[
0
]
<<
24
;
break
;
case
3
:
/* a.b.c -- 8.8.16 bits */
if
(
val
>
0xffff
)
return
(
0
);
val
|=
(
parts
[
0
]
<<
24
)
|
(
parts
[
1
]
<<
16
);
break
;
case
4
:
/* a.b.c.d -- 8.8.8.8 bits */
if
(
val
>
0xff
)
return
(
0
);
val
|=
(
parts
[
0
]
<<
24
)
|
(
parts
[
1
]
<<
16
)
|
(
parts
[
2
]
<<
8
);
break
;
}
if
(
addr
)
addr
->
s_addr
=
htonl
(
val
);
return
(
1
);
}
src/backend/port/inet_aton.h
已删除
100644 → 0
浏览文件 @
678cd5c6
int
inet_aton
(
const
char
*
cp
,
struct
in_addr
*
addr
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录