home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: InfoMgt / InfoMgt.zip / MAILMIND.ZOO / NETDELUS.C < prev    next >
Text File  |  1992-03-11  |  2KB  |  92 lines

  1. /* netdelus.c - delete %username% & %home_server% as NETBIOS names
  2.  * Thomas A. Marciniak, M.D. = ytm@nihccpc1.bitnet
  3.  * Division of Cancer Prevention & Control, NCI
  4.  */
  5.  
  6. /* Revision history:
  7.  * 1.02  ytm  02/01/91  add both user & server
  8.  * 1.01  ytm  01/31/91  eliminate post routine
  9.  * 1.00  ytm  01/31/91  first release
  10.  */
  11.  
  12. /* Program notes:
  13.  * Current versions are specific for TurboC.
  14.  */
  15.  
  16. #include <local.h>                      /* standard definitions */
  17. #include "netbios.h"
  18.  
  19. /* status structure */
  20. #define STATUS_NOUSER   100
  21. #define STATUS_NOSERVER 101
  22. #define STATUS_UNKNOWN  0xff
  23. #define STATUS_STRUCT struct status
  24. typedef STATUS_STRUCT
  25.   {
  26.   word   wCode;
  27.   string sText;
  28.   };
  29. STATUS_STRUCT aStatus[] =
  30.   {
  31.   {0,  "OK"},
  32.   {21, "not found"},
  33.   {STATUS_NOUSER, "NO username!"},
  34.   {STATUS_NOSERVER, "NO home_server!"},
  35.   {STATUS_UNKNOWN, "?"}
  36.   };
  37.  
  38. /* globals */
  39. NCB     Ncb;
  40.  
  41. /* function prototypes */
  42. short main(void);
  43. word NetDelName(string sName);
  44.  
  45. /* add a name to the network */
  46. word NetDelName(string sName)
  47. {
  48. string s, t;
  49. printf("Deleting %s:  ", sName);
  50. memset(&Ncb, 0, sizeof(NCB));
  51. Ncb.NCB_COMMAND = DELETE_NAME_WAIT;
  52. strncpy(Ncb.NCB_NAME, sName, NETBIOS_NAME_LEN);
  53. for (s = Ncb.NCB_NAME, t = s + NETBIOS_NAME_LEN - 1; s < t; s++)
  54.   *s = ((*s) ? toupper(*s) : ' ');
  55. Ncb.NCB_CMD_CPLT = STATUS_UNKNOWN;
  56. _ES = FP_SEG(&Ncb);
  57. _BX = FP_OFF(&Ncb);
  58. _AX = 0x0100;
  59. geninterrupt(0x5c);
  60. if (Ncb.NCB_CMD_CPLT) printf("FAILED\n");
  61. else printf("deleted\n");
  62. return(Ncb.NCB_CMD_CPLT);
  63. } /* NetDelName */ 
  64.  
  65. /* main */
  66. short main(void)
  67. {
  68. char   caServGroup[NETBIOS_NAME_LEN];
  69. short  i;
  70. string s;
  71. word   wStatus;
  72. printf("Netdelus v1.01\n");
  73. if (getenv("USERNAME") == NULL) wStatus = STATUS_NOUSER;
  74. else if (strlen(getenv("HOME_SERVER")) < 5) wStatus = STATUS_NOSERVER;
  75. else if ((wStatus = NetDelName(getenv("USERNAME"))) == 0)
  76.   {
  77.   strcpy(caServGroup, getenv("HOME_SERVER"));
  78.   s = caServGroup;
  79.   *s++ = 'U';
  80.   *s++ = 'S';
  81.   *s++ = 'E';
  82.   *s = 'R';
  83.   wStatus = NetDelName(caServGroup);
  84.   }
  85. for (i = 0; *(aStatus[i].sText) != '?'; i++)
  86.   if (aStatus[i].wCode == wStatus) break;
  87. printf("Netdelus status: %s (%d)\n", aStatus[i].sText, Ncb.NCB_CMD_CPLT);
  88. return(i);
  89. } /* main */
  90.  
  91.  
  92.