patacongo commented on a change in pull request #524: inetaddr() more compliant
with standards (especially error handling).
URL: https://github.com/apache/incubator-nuttx/pull/524#discussion_r390317817
##########
File path: libs/libc/net/lib_inetaddr.c
##########
@@ -56,19 +56,65 @@
* standard IPv4 dotted decimal notation, to an integer value suitable for
* use as an Internet address.
*
+ * inet_aton() returns nonzero if the address is valid, zero if not.
+ * The address supplied in cp can have one of the following forms:
+ *
+ * a.b.c.d Each of the four numeric parts specifies a byte of the address;
+ * the bytes are assigned in left-to-right order to produce the
binary address.
+ *
+ * a.b.c Parts a and b specify the first two bytes of the binary address.
+ * Part c is interpreted as a 16-bit value that defines the rightmost
+ * two bytes of the binary address. This notation is suitable for
specifying
+ * (outmoded) Class B network addresses.
+ *
+ * a.b Part a specifies the first byte of the binary address. Part b is
+ * interpreted as a 24-bit value that defines the rightmost three
bytes
+ * of the binary address. This notation is suitable for specifying
+ * (outmoded) Class A network addresses.
+ *
+ * a The value a is interpreted as a 32-bit value that is stored
directly
+ * into the binary address without any byte rearrangement.
+ *
+ * Returned Value:
+ * If input string cannot be recognized as a valid IPv4 number, function
+ * returns zero.
+ *
****************************************************************************/
in_addr_t inet_addr(FAR const char *cp)
{
unsigned int a, b, c, d;
- uint32_t result;
+ uint32_t result = 0;
+
+ switch (sscanf(cp, "%u.%u.%u.%u", &a, &b, &c, &d))
+ {
+ case 1:
+ {
+ result = a;
+ break;
+ }
+
+ case 2:
+ {
+ if (a < 0x100 && b < 0x1000000)
+ result = (a << 24) | b;
Review comment:
Let me be more clear. You do not have to add any parentheses. That was all
fine. You need braces. This should be like:
if (a < 0x100 && b < 0x1000000)
{
result = (a << 24) | b;
}
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services