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); }
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); }
// 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); } }