25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.
 
 
 
 

105 satır
2.7 KiB

  1. /*******************************************************************************
  2. WINC3400 Wireless Driver
  3. File Name:
  4. inet_ntop.c
  5. Summary:
  6. Implementation of standard inet_ntop function.
  7. Description:
  8. Implementation of standard inet_ntop function.
  9. *******************************************************************************/
  10. //DOM-IGNORE-BEGIN
  11. /*******************************************************************************
  12. * Copyright (C) 2021 Microchip Technology Inc. and its subsidiaries.
  13. *
  14. * Subject to your compliance with these terms, you may use Microchip software
  15. * and any derivatives exclusively with Microchip products. It is your
  16. * responsibility to comply with third party license terms applicable to your
  17. * use of third party software (including open source software) that may
  18. * accompany Microchip software.
  19. *
  20. * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
  21. * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
  22. * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
  23. * PARTICULAR PURPOSE.
  24. *
  25. * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
  26. * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
  27. * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
  28. * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
  29. * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN
  30. * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
  31. * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
  32. *******************************************************************************/
  33. #include <stdint.h>
  34. #include <stddef.h>
  35. #include <sys/types.h>
  36. #include "socket.h"
  37. const char *inet_ntop(int af, const void *src, char *dst, size_t size)
  38. {
  39. uint8_t i, v, t, c, n;
  40. char *rp = dst;
  41. uint32_t ip = ((struct in_addr*)src)->s_addr;
  42. if ((NULL == src) || (NULL == dst) || (size < 16))
  43. {
  44. return NULL;
  45. }
  46. for (i=0; i<4; i++)
  47. {
  48. t = ip;
  49. v = 100;
  50. // Check for zero
  51. if (t > 0)
  52. {
  53. n = 0;
  54. do
  55. {
  56. c = '0';
  57. while (t >= v)
  58. {
  59. c++;
  60. t -= v;
  61. }
  62. v /= 10;
  63. if (('0' != c) || (n > 0))
  64. {
  65. *dst++ = c;
  66. n++;
  67. }
  68. }
  69. while (v > 0);
  70. }
  71. else
  72. {
  73. *dst++ = '0';
  74. }
  75. if (3 == i)
  76. {
  77. *dst++ = '\0';
  78. }
  79. else
  80. {
  81. *dst++ = '.';
  82. }
  83. ip >>= 8;
  84. }
  85. return rp;
  86. }
  87. //DOM-IGNORE-END