Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

141 lines
2.8 KiB

  1. /*++
  2. Copyright (c) 1992-1997 Microsoft Corporation
  3. Module Name:
  4. string.c
  5. Abstract:
  6. Contains string conversion routines.
  7. SnmpUtilIdsToA
  8. SnmpUtilOidToA
  9. Environment:
  10. User Mode - Win32
  11. Revision History:
  12. --*/
  13. ///////////////////////////////////////////////////////////////////////////////
  14. // //
  15. // Include files //
  16. // //
  17. ///////////////////////////////////////////////////////////////////////////////
  18. #include <snmp.h>
  19. #include <snmputil.h>
  20. #include <stdio.h>
  21. ///////////////////////////////////////////////////////////////////////////////
  22. // //
  23. // Private Definitions //
  24. // //
  25. ///////////////////////////////////////////////////////////////////////////////
  26. #define MAX_STRING_LEN 512
  27. #define MAX_SUBIDS_LEN 16
  28. ///////////////////////////////////////////////////////////////////////////////
  29. // //
  30. // Public Procedures //
  31. // //
  32. ///////////////////////////////////////////////////////////////////////////////
  33. LPSTR
  34. SNMP_FUNC_TYPE
  35. SnmpUtilIdsToA(
  36. UINT * pIds,
  37. UINT nIds
  38. )
  39. /*++
  40. Routine Description:
  41. Converts OID subidentifiers into string.
  42. Arguments:
  43. pIds - pointer to subidentifiers.
  44. nIds - number of subidentifiers.
  45. Return Values:
  46. Returns pointer to string representation.
  47. --*/
  48. {
  49. UINT i;
  50. UINT j;
  51. static char szBuf[MAX_STRING_LEN+MAX_SUBIDS_LEN];
  52. static char szId[MAX_SUBIDS_LEN];
  53. if ((pIds != NULL) && (nIds != 0)) {
  54. j = sprintf(szBuf, "%d", pIds[0]);
  55. for (i = 1; (i < nIds) && (j < MAX_STRING_LEN); i++) {
  56. j += sprintf(szId, ".%d", pIds[i]);
  57. if (j >= (MAX_STRING_LEN + MAX_SUBIDS_LEN)-3)
  58. {
  59. strcat(szBuf, "...");
  60. break;
  61. }
  62. else
  63. strcat(szBuf, szId);
  64. }
  65. } else {
  66. sprintf(szBuf, "<null oid>");
  67. }
  68. return szBuf;
  69. }
  70. LPSTR
  71. SNMP_FUNC_TYPE
  72. SnmpUtilOidToA(
  73. AsnObjectIdentifier * pOid
  74. )
  75. /*++
  76. Routine Description:
  77. Converts OID into string.
  78. Arguments:
  79. pOid - pointer to object identifier.
  80. Return Values:
  81. Returns pointer to string representation.
  82. --*/
  83. {
  84. UINT * pIds = NULL;
  85. UINT nIds = 0;
  86. if (pOid != NULL) {
  87. pIds = pOid->ids;
  88. nIds = pOid->idLength;
  89. }
  90. return SnmpUtilIdsToA(pIds, nIds);
  91. }