Re: problems with Comm.c

From: Christina Orr (torr@mail.tqci.net)
Date: 12/10/98


The error occurs everywhere in comm.c where  'ssize_t' is followed by
'perform_socket_read' (missing ','?) is found.  The exact lines and some
code around them are as follows.

/* functions in this file */
RETSIGTYPE reread_wizlists(int sig);
RETSIGTYPE unrestrict_game(int sig);
RETSIGTYPE reap(int sig);
RETSIGTYPE checkpointing(int sig);
RETSIGTYPE hupsig(int sig);
---->(121)  ssize_t perform_socket_read(socket_t desc, char
*read_point,size_t space_left);
---->(122)  ssize_t perform_socket_write(socket_t desc, const char
*txt,size_t length);
void echo_off(struct descriptor_data *d);
void echo_on(struct descriptor_data *d);


And then again here:

---->(1405)    ssize_t perform_socket_write(socket_t desc, const char *txt,
size_t length)
{
  ssize_t result;

  result = send(desc, txt, length, 0);

  if (result > 0) {
    /* Write was sucessful */
    return result;
  }

  if (result == 0) {
    /* This should never happen! */
    log("SYSERR: Huh??  write() returned 0???  Please report this!");
    return -1;
  }

  /* result < 0: An error was encountered. */

  /* Transient error? */
  if (WSAGetLastError() == WSAEWOULDBLOCK)
    return 0;

  /* Must be a fatal error. */
  return -1;
---->(1430)  }


And here:

/*
 * Same information about perform_socket_write applies here. I like
 * standards, there are so many of them. -gg 6/30/98
 */
---->(1529)    ssize_t perform_socket_read(socket_t desc, char *read_point,
size_t space_left)
{
  ssize_t ret;

#if defined(CIRCLE_ACORN)
  ret = recv(desc, read_point, space_left, MSG_DONTWAIT);
#elif defined(CIRCLE_WINDOWS)
  ret = recv(desc, read_point, space_left, 0);
#else
  ret = read(desc, read_point, space_left);
#endif

  /* Read was successful. */
  if (ret > 0)
    return ret;

  /* read() returned 0, meaning we got an EOF. */
  if (ret == 0) {
    log("EOF on socket read (connection broken by peer)");
    return -1;
  }

  /*
   * read returned a value < 0: there was an error
   */

#if defined(CIRCLE_WINDOWS) /* Windows */
  if (WSAGetLastError() == WSAEWOULDBLOCK)
    return 0;
#else

#ifdef EINTR  /* Interrupted system call - various platforms */
  if (errno == EINTR)
    return 0;
#endif

#ifdef EAGAIN  /* POSIX */
  if (errno == EAGAIN)
    return 0;
#endif

#ifdef EWOULDBLOCK /* BSD */
  if (errno == EWOULDBLOCK)
    return 0;
#endif /* EWOULDBLOCK */

#ifdef EDEADLK  /* Macintosh */
  if (errno == EDEADLK)
    return 0;
#endif

#endif /* CIRCLE_WINDOWS */

  /* We don't know what happened, cut them off. */
  perror("process_input: about to lose connection");
---->(1585)   return -1;
}

The 4 lines that contain ssize_t perform_socket_read(socket_t desc, char
*read_point,size_t space_left); and ssize_t perform_socket_write(socket_t
desc, const char *txt,size_t length); have the same error.  The other 2
lines, 1430 and 1585 are syntax error : '}'.

Sorry for not giving the code before.

Tina


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html  |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 12/15/00 PST