/***************************************************************************
*                                                                          *
* Chat_main.m                                                              *
* Copyright 1992 by Nik A Gervae                                           *
*                                                                          *
* Part of an example using the Objective-C classes (SktSocketManager,      *
* SktSocket, and SktSocketUser) which implement a convenient interface to  *
* Berkeley stream sockets under NeXTSTEP(r).  See the accompanying class   *
* specifications (files with a .rtf or .spec suffix) and the sources for   *
* further information.                                                     *
*                                                                          *
* NeXTSTEP is a registered trademark of NeXT Computer, Inc.                *
*                                                                          *
****************************************************************************
*                                                                          *
* LICENSE                                                                  *
*                                                                          *
* This program is free software; you can redistribute it and/or modify     *
* it under the terms of the GNU General Public License as published by     *
* the Free Software Foundation.                                            *
*                                                                          *
* The program and this makefile are distributed in the hope that it will   *
* be useful, but are provided "AS IS" AND WITHOUT ANY WARRANTY; without    *
* any express or implied warranty of MERCHANTABILITY or FITNESS FOR A      *
* PARTICULAR PURPOSE. See the GNU General Public License for more details. *
* Any use or distribution of the program and documentation must include    *
* appropriate copyrights to acknowledge Nik A. Gervae and the Free         *
* Software Foundation, Inc.                                                *
*                                                                          *
* You should have received a copy of the GNU General Public License        *
* along with this program; if not, write to the Free Software              *
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                *
*                                                                          *
****************************************************************************
*                                                                          *
* VERSION HISTORY                                                          *
*                                                                          *
* Version numbers are simply dates in the form YYYYMMDD.  These represent  *
* the date that version was finished.  Only significantly changed versions *
* are reported here, or those versions requiring explanation of changes.   *
* There may be many interim stages between dated versions.                 *
*                                                                          *
* DateVersion Primary Author  Notes                                        *
* ----------- --------------- -------------------------------------------- *
* 19920327    Nik A Gervae    First released version                       *
*                                                                          *
***************************************************************************/

#import <stdlib.h>
#import <stdio.h>
#import <ctype.h>

#import <sys/types.h>
#import <netinet/in.h>

#import <objc/Object.h>

#import "Chatserver.h"
#import "chat_main.h"

id Global_Chatserver;  // the controller for program

/***************************************************************************
*                                                                          *
* These are the constant strings used.  Feel free to translate them into   *
* your favorite language.  Do be sure to keep all the % directives in      *
* place, or change the code that accesses these strings.                   *
*                                                                          *
***************************************************************************/
#define STR_ReservedPort       "Attempt to use a reserved port (%d).\n"
#define STR_DefaultPortInstead "Trying default Internet port instead (%d).\n"
#define STR_TryingDefaultPort  "Trying default Internet port (%d).\n"



/***************************************************************************
*                                                                          *
* main()                                                                   *
*                                                                          *
* Check the args, make a server, and go!                                   *
*                                                                          *
***************************************************************************/
int main(int argc, char *argv[]) 
{
  int      inetPort;

 /*
  * Check cmd line args.
  */
  if (1 < argc) {

    if ((inetPort = atoi(argv[1])) < IPPORT_RESERVED) {
      fprintf(stderr, STR_ReservedPort, inetPort);
      fprintf(stderr, STR_DefaultPortInstead, DFLT_INETPORT);
      inetPort = DFLT_INETPORT;
    }

  }
  else {
    inetPort = DFLT_INETPORT;
    fprintf(stderr, STR_TryingDefaultPort, DFLT_INETPORT);
  }

 /*
  * Make a new controller/server.
  */
  Global_Chatserver = [[Chatserver alloc] initWithInetPort:inetPort];

  if (!Global_Chatserver) exit(1);

 /*
  * Run forever. Ctrl-C is a handy way to bomb out of the server.
  */
  [Global_Chatserver run];
  [Global_Chatserver shutdown];

  exit(0);

} /*main*/