Minix1.5/amoeba/examples/server1.c

Compare this file to the similar file:
Show the results in this format:

#include <amoeba.h>
#include "header.h"

char buffer[BUF_SIZE];

main(argc, argv)
int argc;
char *argv[];
{
  unshort getreq(), putrep();

  header hdr;
  int cnt, i, iterations = 0;

  if (argc != 2) {
	printf("Usage: server1 portname\n");
	exit(1);
  }

  strncpy( (char *) &hdr.h_port, argv[1], PORTSIZE);  /* init port */

  while (1) {

	/* Wait for a request to arrive. */
	if ((cnt = (short) getreq(&hdr, buffer, BUF_SIZE)) < 0) {
	    printf("Server's getreq failed. Error = %d.   ", cnt);
	    printf("Hit F1 to see if AMTASK running.\n");
	    exit(1);
	}
	
	/* Opcode QUIT indicates that we are done. */
	if (hdr.h_command == QUIT) {
		putrep(&hdr, buffer, 0);
		exit(0);
	}

	/* We have a request. Increment each byte. */
	for (i = 0; i < cnt; i++) buffer[i]++;

	/* Send back reply. */
	hdr.h_status = 0;
	putrep(&hdr, buffer, cnt);
  }
}