/smb

Primary LanguageC

smb is a chatroom for multi user systems

boards are spawned with ./smb -C [board_name]
or just ./smb [board_name]

when smb is provided with only board_name as argument, it checks for the existence of board_name
      if board_name does not exist, it creates it and joins it immediately
      if board_name does exist, it joins it

boards can contain arbitrarily many rooms

a user can only create CRE_PER_MIN rooms per minute, this is 20 at the moment


unless the -pwd flag or a complete file path is provided, 
board creation of [board_name] will create a .smbr file in /var/tmp/board_name.smbr

the smb client will first search the current directory before checking
/var/tmp for a matching board file

the host does not store messages and does nothing more than reroute messages
beteen clients

usage:
      ./smb {-[a]ny} {-[p]wd} {-[d]ur [hours]} {-C} [board_name] - creates or joins a board with name [board_name]

-C indicates create only mode
if board does not exist, even if -C is not passed, it is created

if the -pwd flag is set, the scope of smb's board creation
and searching is limited to the current working directory

if the -any flag is set, the first board that is found will be joined

if the -dur flag is used to set a board time limit, the board will be
removed after [hours] hours - otherwise, board will last for 5 days


client commands:

      [message]:
            sends message to current room

      /[h]elp:
            prints this information

      /[t]ime
            prints the number of minutes until deletion of board

      /[j]oin  [room_name]:
      /[r]room [room_name]:
            join room with room_name

      /[g]oto [ref_no]:
            join room with reference number ref_no

      /[n]ext:
            switch to next room with same first char as current

      /[c]reate [room_name]:
            creates a room with name room_name

      /[l]ist:
            lists all rooms, current room will be blue

      /[w]hich:
            prints current room name and reference number
      
      /[u]ser:
      /[#]:
            prints number of users in current board

      /[d]elete:
            sends a deletion request for current board
            this request will be fulfilled IFF you are
            board's creator

      /[e]xit:
      /e[x]it:
            exits current room

[ROOM_CREATE]   indicates that a new room has been created
[*ROOM_CREATE*] upon joining a board, this alert indicates
                that a room that predates your joining exists

                there is no difference between these two types of rooms other than what is printed