home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / LMUTIL.ZIP / WKSTA.C < prev    next >
C/C++ Source or Header  |  1991-03-17  |  4KB  |  158 lines

  1. /*
  2. ** Program: WKSTA
  3. **
  4. ** Author:  Roger L Soles
  5. **
  6. ** Description:
  7. **
  8. ** This example C program uses the NetWkstaGetInfo call to obtain
  9. ** information about the local work station.
  10. **
  11. ** Instructions:
  12. **
  13. ** WKSTA -[?{0,1,10}]
  14. **
  15. */
  16.  
  17. #define LINT_ARGS
  18. #include <stdio.h>
  19. #include <stdlib.h>
  20. #define INCL_NETWKSTA
  21. #define INCL_NETERRORS
  22. #include <lan.h>
  23.  
  24. void main (int argc, char * argv[])
  25. {
  26.  
  27.    /*
  28.    ** Information structures
  29.    */
  30.    struct wksta_info_0 far * WkstaInfo0;
  31.    struct wksta_info_1 far * WkstaInfo1;
  32.    struct wksta_info_10 far * WkstaInfo10;
  33.  
  34.    char far * cptr;
  35.  
  36.    API_RET_TYPE uRetCode = 0;
  37.  
  38.    char far * pszServer = "";
  39.    short sLevel = 10;
  40.    char far * pbBuffer;
  41.    unsigned short cbBuflen = 0;
  42.    unsigned short cbTotalAvail = 0;
  43.  
  44.    /*
  45.    ** Process Command Line Options
  46.    */
  47.    argc--; argv++;
  48.  
  49.    cptr = argv[0];
  50.    if ( *cptr++ == '-' )
  51.    {
  52.       switch (*cptr)
  53.       {
  54.       case '0':
  55.       case '1':
  56.          sLevel = atoi (cptr);  
  57.          switch (sLevel)
  58.          {
  59.          case 0:
  60.          case 1:
  61.          case 10:
  62.             break;
  63.          default:
  64.             printf ("Invalid Level: Select 0, 1, 10\n");
  65.             exit (1);
  66.          }
  67.          break;
  68.    
  69.       case '?':
  70.       default:
  71.          printf ("\nUSAGE:  WKSTA [-?{0,1,10}]\n");
  72.          exit (1);
  73.       }
  74.  
  75.    }
  76.  
  77.    /*
  78.    ** Determine how large buffer needs to be
  79.    */
  80.    uRetCode = NetWkstaGetInfo ( pszServer,
  81.                                 sLevel,
  82.                                 NULL,
  83.                                 0,
  84.                                 &cbTotalAvail);
  85.  
  86.    if (uRetCode == NERR_BufTooSmall)
  87.    {
  88.       cbBuflen = cbTotalAvail;
  89.       pbBuffer = (char *) malloc (cbBuflen);
  90.    }
  91.    else
  92.    {
  93.       printf ("Error %04x\n", uRetCode);
  94.       exit(1);
  95.    }
  96.  
  97.    /*
  98.    ** Allocate storage
  99.    */
  100.    uRetCode = NetWkstaGetInfo ( pszServer,
  101.                                 sLevel,
  102.                                 pbBuffer,
  103.                                 cbBuflen,
  104.                                 &cbTotalAvail);
  105.  
  106.  
  107.  
  108.    if (uRetCode != NERR_Success)
  109.    {
  110.       printf ("Error %04x\n", uRetCode);
  111.       exit(1);
  112.    }
  113.  
  114.  
  115.    /*
  116.    ** Print Out Level 0 information
  117.    */
  118.    if (sLevel == 0)
  119.    {
  120.      WkstaInfo0 = (struct wksta_info_0 *) pbBuffer;
  121.  
  122.      printf ("Computer Name:     %Fs\n", WkstaInfo0->wki0_computername);
  123.      printf ("User Name:         %Fs\n", WkstaInfo0->wki0_username);
  124.      printf ("Lan Group:         %Fs\n", WkstaInfo0->wki0_langroup);
  125.      printf ("Logon Server:      %Fs\n", WkstaInfo0->wki0_logon_server);
  126.      printf ("Char Time:         %lu\n", WkstaInfo0->wki0_chartime);
  127.      printf ("Char Count:        %hu\n", WkstaInfo0->wki0_charcount);
  128.    }
  129.  
  130.    /*
  131.    ** Print Out Level 1 information
  132.    */
  133.    if (sLevel == 1)
  134.    {
  135.      WkstaInfo1 = (struct wksta_info_1 *) pbBuffer;
  136.  
  137.      printf ("Logon Domain:      %Fs\n", WkstaInfo1->wki1_logon_domain);
  138.      printf ("Other Domain:      %Fs\n", WkstaInfo1->wki1_oth_domains);
  139.      printf ("Datagram Buffers:  %hu\n", WkstaInfo1->wki1_numdgrambuf);
  140.    }
  141.  
  142.    /*
  143.    ** Print Out Level 10 information
  144.    */
  145.    if (sLevel == 10)
  146.    {
  147.      WkstaInfo10 = (struct wksta_info_10 *) pbBuffer;
  148.  
  149.      printf ("Computer Name:     %Fs\n", WkstaInfo10->wki10_computername);
  150.      printf ("User Name:         %Fs\n", WkstaInfo10->wki10_username);
  151.      printf ("Logon Domain:      %Fs\n", WkstaInfo10->wki10_logon_domain);
  152.      printf ("Other Domain:      %Fs\n", WkstaInfo10->wki10_oth_domains);
  153.    }
  154.  
  155.    exit (0);
  156. }
  157.  
  158.