I prefer, if ((d->has_prompt = process_output(d)) < 0) close_socket(d); > int process_output(struct descriptor_data *t) > { > char i[MAX_SOCK_BUF]; > int written, offset; int result; . . . > if (t->has_prompt) /* && !t->connected) */ > offset = 0; else offset = 2; result = write_to_descriptor(t->descriptor, i + offset, &written); if (result == 0) write_to_output(i + written + offset, t); return (result); . . . * 1 All is well and good. * 0 The socket write would block, written is modified with the * number of bytes written previously. * -1 An error was encountered, disconnect the socket. */ int write_to_descriptor(socket_t desc, const char *txt, int * written) { size_t total; ssize_t bytes_written; total = strlen(txt); . . . > } else if (bytes_written == 0) { > log("WARNING: write_to_descriptor: socket write would block."); return (0); > } else { > txt += bytes_written; > total -= bytes_written; > *written += bytes_written; > } > } return (1); > Thoughts? And yours? -dak +------------------------------------------------------------+ | 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