/*
 * Copyright 1988, 1989, 1990, 1991 Massachusetts Institute of Technology
 */
#include <stdio.h>
#include <signal.h>
#include "../../Glib/Glib.h"
#include "../../server/tunables.h"

main(argc,argv)
     int argc;
     char **argv;
{
  int i, success = 0, ret;
  Server *serv;
  FILE *fp, *fopen();

  fp = fopen(PID_FILE,"r");

  if (fp == NULL) {
    printf("Sorry, no pid file.  Trying Protocol style reset.\n");
  }
  else {
    if (fscanf(fp, "%d", &i) != 1) {
      printf("Bad read from pid file.  Trying Protocol style reset.\n");
    }
    else {
      if (kill(i, SIGHUP))
	printf("kill(%d,SIGHUP) failed.  Trying Protocol style reset.\n",i);
      else success = 1;
    }
  }
  
  if (fp != NULL)
    fclose(fp);

  if (success == 0) {
    serv = GNewOpenServer(NULL);
    if (serv != (Server *)NULL) {
      ret = GRebuild(serv);
      if (ret > LOWEST_ERROR)
	printf("greset: GRebuild(serv) got an error return of %d\n", ret);
      else printf("greset: Protocol style reset succeeded.\n");
      GCloseServer(serv);
    }
    else {
	printf("greset: unable to open server on %s\n", GOpenedHost());
    }
  }
  exit(0);
}
