Skip to content
Snippets Groups Projects
kiraserver.cc 27.1 KiB
Newer Older
	struct sockaddr_in from;
	FILE *inf, *outf;
	char req[1280];
	
	unsigned int fromlen = sizeof(from);
	int s = accept(lsock, (struct sockaddr *)&from, &fromlen);
	if(s < 0) {
	    if(errno == EINTR)
		continue;
	    perror("accept");
	    return;
	}
	inf = fdopen(s, "r");
	if(fgets(req, sizeof(req), inf) == NULL) {
	    perror("fgets");
	} else {
	    outf = fdopen(s, "w");
	    serveonce( req, outf );
	    fclose(outf);
	}
	fclose(inf);
	close(s);
    }
}


main(int argc, char *argv[])
{
    static struct stuff tst;
    curstate.st = &tst;
    int c;
    char opt[8];

    progname = argv[0];

    curstate.colorscale = 100.0;
    curstate.has_T0 = 0;
    curstate.port = 3400;

    while((c = getopt(argc, argv, "T:r:t:y:g:m:c:p:")) != EOF) {
	opt[0] = c;
	opt[1] = '\0';
	if(c == 'y') strcpy(opt, "type");
	scanopt( opt, optarg );
    }
    if(optind != argc-1) {
	fprintf(stderr, "Usage: %s [options] file.kira\n\
Options:\n\
   -t time\n\
   -r <axis><degreespertime>[@time0]  Timed rotation about axis 'x'/'y'/'z'\n\
   -T 16-numbers   outcoords = kira * rotation(time) * tfm\n\
   -y sdbtype\n\
   -g group\n\
   -m mag0         sdb mag = mag0 - log(lum)/(log(100)/5)\n\
   -c colorscale   sdb color = log10(T)*colorscale\n\
   -p portno	   listen for HTTP connections on that TCP port\n\
", progname);
	exit(1);
    }
    msg("Listening on port %d", curstate.port);
    int lsock = serverlisten( curstate.port );
    if(lsock < 0)
	exit(1);

    msg("Reading %s", argv[optind]);
    kira_open( &curstate.st->dyn, curstate.st, argv[optind], 0 );

    msg("Ready.");
    serverloop( lsock );

}