home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Peter Lewis / Talk 1.0.6 / TalkdTypes.p < prev   
Encoding:
Text File  |  1992-04-20  |  2.2 KB  |  102 lines  |  [TEXT/PJMM]

  1. unit TalkdTypes;
  2.  
  3. { This program was written by Peter N Lewis, Mar 1992 in THINK Pascal 4.0.1 }
  4.  
  5. interface
  6.  
  7.     const
  8.         talk_version = 1;
  9.         max_life = 60;
  10.         ring_wait = 30;
  11.         name_size = 12;
  12.         oname_size = 9;
  13.         tty_size = 16;
  14.         otalkd_port = 517;
  15.         talkd_port = 518;
  16.         AF_INET = 2;
  17.  
  18.     type
  19.         osockaddr = record
  20.                 family: integer;  { Always AF_INET }
  21.                 port: integer;
  22.                 ip: longInt;
  23.                 junk1, junk2: longInt;
  24.             end;
  25.         ctlTypes = (CT_leave_invite, CT_lookup, CT_delete, CT_announce,{}
  26.             CT_dummy1, CT_dummy2, CT_dummy3, CT_dummy4,{}
  27.             CT_scan, CT_VerifyAnnounce, CT_quit);
  28.         userStr = packed array[1..name_size] of char;
  29.         ouserStr = packed array[1..oname_size] of char;
  30.         ttyStr = packed array[1..tty_size] of char;
  31.         answers = (A_success, A_not_here, A_failed, A_machine_unknown, A_permission_denied, {}
  32.             A_unknown_request, A_badversion, A_badaddr, A_badctladdr);
  33.         ctlResponse = record
  34.                 vers: signedByte;
  35.                 typ: ctlTypes;
  36.                 answer: answers;
  37.                 pad: signedByte;
  38.                 id_num: longInt;
  39.                 addr: osockaddr;
  40.             end;
  41.         ctlResponsePtr = ^ctlResponse;
  42.         ctlMsg = record  { an extension of ctlResponse }
  43.                 vers: signedByte;
  44.                 typ: ctlTypes;
  45.                 answer: answers;
  46.                 pad: signedByte;
  47.                 id_num: longInt;
  48.                 addr: osockaddr;
  49.                 ctl_addr: osockaddr;
  50.                 pid: longInt;
  51.                 l_name: userStr;
  52.                 r_name: userStr;
  53.                 r_tty: ttyStr;
  54.             end;
  55.         ctlMsgPtr = ^ctlMsg;
  56.         octlResponse = record
  57.                 typ: ctlTypes;
  58.                 answer: answers;
  59.                 pad: integer;
  60.                 id_num: longInt;
  61.                 addr: osockaddr;
  62.             end;
  63.         octlResponseSmall = record
  64.                 typ: ctlTypes;
  65.                 answer: answers;
  66.                 id_num: longInt;
  67.                 addr: osockaddr;
  68.             end;
  69.         octlMsg = record
  70.                 data: packed array[1..20] of char;
  71. { typ = ctlTypes(ord(data[1]) }
  72. { l_name=ouserStr(data[2..10]) }
  73. { r_name=ouserStr(data[11..19]) }
  74. { pad=data[20] }
  75.                 id_num: longInt;
  76.                 pid: longInt;
  77.                 r_tty: ttyStr;
  78.                 addr: osockaddr;
  79.                 ctl_addr: osockaddr;
  80.             end;
  81.  
  82.     function UserToPStr (cs: userStr): str31;
  83.  
  84. implementation
  85.  
  86.     function UserToPStr (cs: userStr): str31;
  87.         var
  88.             i: integer;
  89.             s: str31;
  90.     begin
  91.         i := 1;
  92.         while (i <= name_size) & (cs[i] <> chr(0)) do
  93.             i := i + 1;
  94. {$PUSH}
  95. {$R-}
  96.         BlockMove(@cs, @s[1], name_size);
  97.         s[0] := chr(i - 1);
  98. {$POP}
  99.         UserToPStr := s;
  100.     end;
  101.  
  102. end.