QBBSd() { int udp_sock, tcp_sock; fd_set fdmask; if((udp_sock = udp_open(1)) < 0) logsyserr("<getconnect> could not get UDP socket"); if((tcp_sock = tcp_open(1)) < 0) logsyserr("<getconnect> could not get TCP socket"); loginfo("<quakebbs> QuakeBBS v%s Now Running!", QBBS_VERSION); for(;;) { loginfo("<quakebbs> Waiting for TCP connect on %d or UDP connect on %d", config.serv[0].port[0], config.serv[0].port[1]); FD_ZERO(&fdmask); FD_SET(udp_sock, &fdmask); FD_SET(tcp_sock, &fdmask); if(select(1+((tcp_sock > udp_sock) ? tcp_sock : udp_sock), &fdmask, (fd_set *)0, (fd_set *)0, (struct timeval *)0) < 0) logerr("<getconnect> select failed"); if(FD_ISSET(udp_sock, &fdmask)) udpconnect(udp_sock); if(FD_ISSET(tcp_sock, &fdmask)) tcpconnect(tcp_sock); } }
int main(int argc, char **argv){ /*check the augment */ if(argc < 3){ fprintf(stderr, "usage : ./a.out <hostname> <port>\n"); exit(1); } int ch; while((ch = getopt(argc, argv, "dn:")) != EOF) { switch(ch){ case 'n': break; case 'd': options |= DEBUG_MODE; //printf("option = %02x\n",options); default : break; } } /* open network socket */ int port = atoi(argv[2]); int s; s = udpconnect(argv[1],port); /* FrameBuffer */ int fd, screensize; fd = open(DEVICE_NAME, O_RDWR); if(!fd){ fprintf(stderr, "cannot open the FrameBuffer '/dev/fb0' \n"); exit(1); } struct fb_var_screeninfo vinfo; struct fb_fix_screeninfo finfo; if(ioctl(fd,FBIOGET_FSCREENINFO, &finfo)){ fprintf(stderr, "cannot fix info\n"); exit(1); } if(ioctl(fd,FBIOGET_VSCREENINFO, &vinfo)){ fprintf(stderr, "cannot variable info\n"); exit(1); } int xres,yres,bpp,line_len; xres = vinfo.xres; yres = vinfo.yres; bpp = vinfo.bits_per_pixel; line_len = finfo.line_length; /* Check your machine's resolusion and pixel line length(bytes) */ printf("%d(pixel)x%d(line), %d(bit per pixel), %d(line length)\n",xres,yres,bpp,line_len); screensize = xres * yres * bpp/BIT; /*memory I/O */ char *fbptr; fbptr = (char *)mmap(0,screensize,PROT_READ | PROT_WRITE, MAP_SHARED,fd,0); if((int)fbptr == -1){ fprintf(stderr,"cannot get framebuffer\n"); exit(1); } printf("the frame buffer device was mapped\n"); #ifdef DEBUG_RED_DISP unsigned int *num; num = (unsigned int *)malloc(sizeof(unsigned int *)); *num = RED_DEC; #endif SendPacket(fd,s,bpp,line_len, vinfo,finfo,fbptr); munmap(fbptr,screensize); /* close the filediscriptor of socket */ close(s); close(fd); return 0; }