⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netinfo.c

📁 Dos6.0
💻 C
📖 第 1 页 / 共 5 页
字号:
**********************************************************************/

VOID GetLM_VersionInfo (NETWORK_STRUCT * pNetInfo)
{
  unsigned short int err, len;
  char buf[BUFSIZ], *pbegin;
  int i;

  err = NetConfigGet ("VERSION", "LAN_MANAGER", buf, BUFSIZ, &len);

  /* buf = x.x.x [major].[minor].[patch] */
  if (err == 0)
    {
      /* skip to minor version */
      if (pbegin = strstr (buf, "."))
        {
          ++pbegin;

          /* skip to patch number */
          if (pbegin = strstr (pbegin, "."))
            {

              for (i = 0, ++pbegin; i < 7 && *pbegin != NULL; ++i, ++pbegin)
                pNetInfo->szLanManager_CSD[i] = *pbegin;

              pNetInfo->szLanManager_CSD[i] = '\0';
            }
        }
    }
}


/*********************************************************************
 * SprintNetworkInfo - Put Network information into a set of strings
 *                     to be printed or displayed.
 *
 * pNetInfo     - Network information structure.
 * szSumStrings - Summary strings for summary information.
 *
 * Returns:  NULL if an error occured.
 *********************************************************************/

QSZ * SprintNetworkInfo (NETWORK_STRUCT *pNetInfo,
                         CHAR szSumStrings[][MAX_SUMM_INFO + 5])
{
  WORD wNmbrStrings;        /* Number of strings                     */
  WORD wNmbrChars;          /* Number of characters in the strings   */
  WORD i;                   /* Index variable                        */
  CHAR chBuffer[80];        /* Local string                          */
  QSZ  *pqszStrings;        /* Location for storing string pointers  */
  WORD wAlignColumn;        /* Column to align titles                */


  /* Summary Strings */
  if (szSumStrings != NULL)
    {
      szSumStrings[0][0] ='\0';
      szSumStrings[1][0] ='\0';

      if (pNetInfo->fNetworkActive == FALSE              &&
          pNetInfo->wNetworkType != NET_LANMAN           &&
          pNetInfo->wNetworkType != NET_LANMAN_BASIC     &&
          pNetInfo->wNetworkType != NET_LANMAN_ENHANCED)
        strncpy (szSumStrings[0], paszNetworkTypes[NET_NO_NETWORK],
                 MAX_SUMM_INFO);
      else
        {
          /* Network name */
          /* fixed bug 2414: network was getting reported as "MS Workgroup
             Clien" because only MAX_SUMM_INFO (18) chars were getting copied
             by strnspy.  Can't increase MAX_SUMM_INFO because that will
             break other things.  Added XTRA_LEN_HACK to copy 1 more character...
             wanted to make it longer to avoid this problem with future network
             strings, but receiving buffer is only 23 bytes.  -jeremys */

#define XTRA_LEN_HACK 1

          strncpy (szSumStrings[0], pNetInfo->szNetworkType, MAX_SUMM_INFO
                +XTRA_LEN_HACK);
          strncat (szSumStrings[0], " ",
                   MAX_SUMM_INFO + XTRA_LEN_HACK - strlen (szSumStrings[0]));

          /* Network version */
          if (pNetInfo->wNetworkType == NET_NOVELL)
            {
              sprintf (szSumStrings[1], "Shell %d.%02d.%02d",
                       pNetInfo->wShellMajor,
                       pNetInfo->wShellMinor,
                       pNetInfo->wShellRevision);
            }
          else if (pNetInfo->wNetworkMajor > 0)
            {
              sprintf (chBuffer, "%d.%02d", pNetInfo->wNetworkMajor,
                       pNetInfo->wNetworkMinor);
              if (strlen (chBuffer) + strlen (szSumStrings[0]) > MAX_SUMM_INFO)
                {
                  i = 1;
                  szSumStrings[i][0] = '\0';
                }
              else
                i = 0;

              strncat (szSumStrings[i], chBuffer,
                       MAX_SUMM_INFO - strlen (szSumStrings[i]));
            }
        }

      /* Remove trailing spaces from the first line */
      i = strlen (szSumStrings[0]) - 1;
      while (i >= 1 && szSumStrings[0][i] == ' ')
        szSumStrings[0][i--] = '\0';


      return (NULL);
    }



  /* Overestimate the amount of space required for the strings */

  if (pNetInfo->fNetworkActive == FALSE                    &&
      pNetInfo->wNetworkType != NET_LANMAN                 &&
      pNetInfo->wNetworkType != NET_LANMAN_BASIC           &&
      pNetInfo->wNetworkType != NET_LANMAN_ENHANCED        &&
      pNetInfo->wNetworkType != NET_WORKGROUP_CLIENT)
    {
      wAlignColumn = 18;
      wNmbrStrings = 2;
      wNmbrChars   = wAlignColumn + strlen (pszNo) + 1;
    }
  else
    {
      wAlignColumn = 26;
      wNmbrStrings = 90;
      wNmbrChars   = 3000;
    }


  /* Allocate space for the pointer area and string area */
  pqszStrings = AllocStringSpace (wNmbrStrings, wNmbrChars);
  if (pqszStrings == NULL)
    return (NULL);


  /* Put the information in place */

  i = 0;

  {
    /* Network Detected */

    QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_NETWORK_DETECTED],
                 wAlignColumn);

    if (pNetInfo->fNetworkActive == TRUE               ||
        pNetInfo->wNetworkType == NET_LANMAN           ||
        pNetInfo->wNetworkType == NET_LANMAN_BASIC     ||
        pNetInfo->wNetworkType == NET_LANMAN_ENHANCED)
      Qstrcat (pqszStrings[i], pszYes);
    else
      Qstrcat (pqszStrings[i], pszNo);

    /* Set the next pointer */
    PrepNextString (pqszStrings, i++);

    /* We're done here if there was no network */
    if (pNetInfo->fNetworkActive == FALSE              &&
        pNetInfo->wNetworkType != NET_LANMAN           &&
        pNetInfo->wNetworkType != NET_LANMAN_BASIC     &&
        pNetInfo->wNetworkType != NET_LANMAN_ENHANCED)
      {
        pqszStrings[i] = NULL;
        return (pqszStrings);
      }
  }

  {
    /* Network Name */

    QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_NETWORK_NAME],
                 wAlignColumn);
    Qstrcat (pqszStrings[i], pNetInfo->szNetworkType);

    /* Set the next pointer */
    PrepNextString (pqszStrings, i++);
  }

  {
    /* Network Version */
    if ((pNetInfo->wNetworkType  == NET_NOVELL  &&
         pNetInfo->szNovellNetwareVersion[0] != '\0')  ||
        (pNetInfo->wNetworkMajor != 0  ||
         pNetInfo->wNetworkMinor != 0))
      {
        QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_VERSION],
                     wAlignColumn);

        if (pNetInfo->wNetworkType == NET_NOVELL)
          {
            Qstrcat (pqszStrings[i], pNetInfo->szNovellNetwareVersion);
          }
        else
          {
            sprintf (chBuffer, "%d.%02d", pNetInfo->wNetworkMajor,
                     pNetInfo->wNetworkMinor);
            Qstrcat (pqszStrings[i], chBuffer);
          }

        /* Set the next pointer */
        PrepNextString (pqszStrings, i++);
      }
  }

  {
    /* MS-DOS Network Functions: [Not] Supported */

    QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_MSNET],
                 wAlignColumn);

    if (pNetInfo->fMsnetCompatible)
      Qstrcat (pqszStrings[i], pszSupported);
    else
      Qstrcat (pqszStrings[i], pszNotSupported);

    /* Set the next pointer */
    PrepNextString (pqszStrings, i++);
  }

  {
    /* MSNET Machine Name */

    if (pNetInfo->fMsnetCompatible)
      {
        QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_COMPUTER_NAME],
                     wAlignColumn);

        Qstrcat (pqszStrings[i], pNetInfo->szMsnetMachineName);

        /* Set the next pointer */
        PrepNextString (pqszStrings, i++);
      }
  }

  {
    /* NetBIOS Installed */

    QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_NETBIOS],
                 wAlignColumn);

    if (pNetInfo->fNetBiosCompatible)
      Qstrcat (pqszStrings[i], pszYes);
    else
      Qstrcat (pqszStrings[i], pszNo);

    /* Set the next pointer */
    PrepNextString (pqszStrings, i++);
  }

  {
    /* NetBIOS Address */

    if (pNetInfo->fNetBiosCompatible)
      {
        QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_NETBIOS_ADDRESS],
                     wAlignColumn);

        sprintf (chBuffer, "%04X:%04X", pNetInfo->wNetBIOSSegment,
                 pNetInfo->wNetBIOSOffset);

        Qstrcat (pqszStrings[i], chBuffer);

        /* Set the next pointer */
        PrepNextString (pqszStrings, i++);
      }
  }

  /* LANMAN Information */

  {
    if (pNetInfo->wNetworkType == NET_LANMAN                 ||
        pNetInfo->wNetworkType == NET_LANMAN_BASIC           ||
        pNetInfo->wNetworkType == NET_LANMAN_ENHANCED        ||
        pNetInfo->wNetworkType == NET_WORKGROUP_CLIENT)
      {
        /* LAN Manager Root */
        QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_LANMAN_ROOT],
                     wAlignColumn);

        Qstrcat (pqszStrings[i], pNetInfo->szLanRoot);

        /* Set the next pointer */
        PrepNextString (pqszStrings, i++);


        /* User Name */
        QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_LANMAN_USER_NAME],
                     wAlignColumn);

        Qstrcat (pqszStrings[i], pNetInfo->szUserName);

        /* Set the next pointer */
        PrepNextString (pqszStrings, i++);


        /* Primary Domain */
        QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_LANMAN_DOMAIN],
                     wAlignColumn);

        Qstrcat (pqszStrings[i], pNetInfo->szPrimaryDomain);

        /* Set the next pointer */
        PrepNextString (pqszStrings, i++);


        /* Server Connection */
        QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_LANMAN_SERVER],
                     wAlignColumn);

        if (pNetInfo->fServerConnection == TRUE)
          Qstrcat (pqszStrings[i], "Established");
        else
          Qstrcat (pqszStrings[i], "Not Established");

        /* Set the next pointer */
        PrepNextString (pqszStrings, i++);


        /* Mailslot Support */
        QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_LANMAN_MAILSLOT],
                     wAlignColumn);

        if (pNetInfo->fMailslot_Support == TRUE)
          Qstrcat (pqszStrings[i], pszYes);
        else
          Qstrcat (pqszStrings[i], pszNo);

        /* Set the next pointer */
        PrepNextString (pqszStrings, i++);


        /* API Support */
        QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_LANMAN_API],
                     wAlignColumn);

        if (pNetInfo->fAPI_Support == TRUE)
          Qstrcat (pqszStrings[i], pszYes);
        else
          Qstrcat (pqszStrings[i], pszNo);

        /* Set the next pointer */
        PrepNextString (pqszStrings, i++);


        /* LAN Manager Date */
        if (pNetInfo->szLanManager_Date[0] != '\0')
          {
            QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_LANMAN_DATE],
                         wAlignColumn);

            if (strlen(pNetInfo->szLanManager_Date) == 5)
                sprintf (chBuffer, "0%c/%c%c/%c%c",
                         pNetInfo->szLanManager_Date[0],
                         pNetInfo->szLanManager_Date[1],
                         pNetInfo->szLanManager_Date[2],
                         pNetInfo->szLanManager_Date[3],
                         pNetInfo->szLanManager_Date[4]);
            else
                sprintf (chBuffer, "%c%c/%c%c/%c%c",
                         pNetInfo->szLanManager_Date[0],
                         pNetInfo->szLanManager_Date[1],
                         pNetInfo->szLanManager_Date[2],
                         pNetInfo->szLanManager_Date[3],
                         pNetInfo->szLanManager_Date[4],
                         pNetInfo->szLanManager_Date[5]);

            Qstrcat (pqszStrings[i], chBuffer);

            /* Set the next pointer */
            PrepNextString (pqszStrings, i++);
          }


        /* LAN Manager Date */
        if (pNetInfo->szLanManager_CSD[0] != '\0')
          {
            QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_LANMAN_PATCH_LEVEL],
                         wAlignColumn);

            Qstrcat (pqszStrings[i], pNetInfo->szLanManager_CSD);

            /* Set the next pointer */
            PrepNextString (pqszStrings, i++);
          }
      }
  }

  /* Novell Information */

  {
    if (pNetInfo->wNetworkType == NET_NOVELL)
      {
        /* Shell version */
        QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_NOVELL_SHELL_VER],
                     wAlignColumn);

        sprintf (chBuffer, "%d.%02d.%02d", pNetInfo->wShellMajor,
                 pNetInfo->wShellMinor, pNetInfo->wShellRevision);

        Qstrcat (pqszStrings[i], chBuffer);

        /* Set the next pointer */
        PrepNextString (pqszStrings, i++);


        /* Shell Type */
        if (pNetInfo->wShellMajor * 100 + pNetInfo->wShellMinor >= 301 &&
            pNetInfo->wShellType <= 2)
          {
            QstrcpyAlign (pqszStrings[i], paszNetworkTitles[NET_NOVELL_SHELL_TYPE],
                         wAlignColumn);

            switch (pNetInfo->wShellType)
              {
                case 0:
                  Qstrcat (pqszStrings[i], pszConventional);
                  break;

                case 1:
                  Qstrcat (pqszStrings[i], "Expanded Memory (EMS)");
                  break;

                case 2:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -