Esempio n. 1
0
void
start_insertsort(void)
{
	int n;
	fputs("INSERT SORT ALGORITHM \n",stdout);
	fputs("ENTER A LENGTH OF THE ARRAY = ",stdout);
	scanf("%d",&n);
	int data[n];

	read_data(data,n);
	insertsort(data,n, swap);
	echo_data(data,n);
}
Esempio n. 2
0
void
start_mergesort(void)
{
	int n;
	fputs("MERGE SORT ALGORITHM \n",stdout);
	fputs("ENTER A LENGTH OF THE ARRAY = ",stdout);
	scanf("%d",&n);
	int data[n];

	read_data(data,n);
//	mergesort(data,merge);
	echo_data(data,n);  
} 
Esempio n. 3
0
// data is available on the connection
void connection_read_proc(io_poller *poller, io_atom *ioa)
{
	connection *conn = io_resolve_parent(ioa, connection, io);
	char readbuf[1024];
	int err;
    size_t rlen, wlen;
        
	do {
		err = io_read(poller, ioa, readbuf, sizeof(readbuf), &rlen);
		assert(err ? !rlen : 1);
		assert(rlen ? !err : 1);
		if(!err) {
			printf("Received %d bytes on %d, echoing <<<%.*s>>>\n",
					(int)rlen, ioa->fd, (int)rlen, readbuf);
			err = echo_data(poller, conn, readbuf, rlen, &wlen);
			if(err) break;
		}
	} while(rlen);
	
	// read and write errors both end up here.  EAGAIN and EWOULDBLOCK
	// are not errors -- they're a normal part of non-blocking I/O.
	if(err && err != EAGAIN && err != EWOULDBLOCK) {
		if(err == EPIPE || err == ECONNRESET) {
			printf("connection closed by remote on fd %d\n",
				conn->io.fd);
		} else {
			printf("error %s on fd %d, closing!\n", strerror(err),
				conn->io.fd);
		}

		// close the connection, free its memory
		err = io_close(poller, &conn->io);
		if(err) {
			fprintf(stderr, "Error closing fd %d: %s\n",
					conn->io.fd, strerror(err));
		}
		free(conn);
	}
}