X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fchuukei.c;h=840e0383b7bd4870aa123d642f11bd7c02e5c93b;hb=refs%2Fheads%2Fmaster;hp=e5b5e67ccaaf0aa1991d9ff1483311f2bc84680d;hpb=732b4d08c407ba107071a24f6231c005aa37c64b;p=hengband%2Fhengband.git diff --git a/src/chuukei.c b/src/chuukei.c deleted file mode 100644 index e5b5e67cc..000000000 --- a/src/chuukei.c +++ /dev/null @@ -1,909 +0,0 @@ -/* chuukei.c */ - -#include "angband.h" - -#ifdef CHUUKEI - -#include -#include -#include - -#if defined(WINDOWS) -#include -#elif defined(MACINTOSH) -#include -#include -#else -#include -#include -#include -#include -#include -#include - -#include -#include -#endif - -#define MAX_HOSTNAME 256 -#define RINGBUF_SIZE 65536*8 -#define FRESH_QUEUE_SIZE 1024 -#define WAIT 100*1000 /* ¥Ö¥é¥¦¥ºÂ¦¤Î¥¦¥¨¥¤¥È(usñ°Ì) */ -#define DEFAULT_DELAY 50 - -static int sd; /* ¥½¥±¥Ã¥È¤Î¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿ */ -static long epoch_time; /* ³«»Ï»þ¹ï */ -static long time_diff; /* ¥×¥ì¥¤Â¦¤È¤Î»þ´Ö¤Î¤º¤ì(¤³¤ì¤ò¸«¤Ê¤¬¤é¥Ç¥£¥ì¥¤¤òÄ´À°¤·¤Æ¤¤¤¯) */ -static int browse_delay; /* ɽ¼¨¤¹¤ë¤Þ¤Ç¤Î»þ´Ö(100msñ°Ì)(¤³¤Î´Ö¤Ë¥é¥°¤òµÛ¼ý¤¹¤ë) */ -static int server_port; -static char server_name[MAX_HOSTNAME]; - - -#ifdef WINDOWS -#define close closesocket -#endif - -#ifdef MACINTOSH -static InetSvcRef inet_services = nil; -static EndpointRef ep = kOTInvalidEndpointRef; -#endif - -/* ÉÁ²è¤¹¤ë»þ¹ï¤ò³Ð¤¨¤Æ¤ª¤¯¥­¥å¡¼¹½Â¤ÂÎ */ -static struct -{ - int time[FRESH_QUEUE_SIZE]; - int next; - int tail; -}fresh_queue; - - -/* ¥ê¥ó¥°¥Ð¥Ã¥Õ¥¡¹½Â¤ÂÎ */ -static struct -{ - char *buf; - int wptr; - int rptr; - int inlen; -}ring; - -#ifdef MACINTOSH -int recv(int s, char *buffer, size_t buflen, int flags) -{ - OTFlags junkFlags; - int n = OTRcv(ep, (void *) buffer, buflen, &junkFlags); - if( n <= 0 ) - return n; - return n; -} -#endif - -/* ANSI C¤Ë¤è¤ì¤ÐstaticÊÑ¿ô¤Ï0¤Ç½é´ü²½¤µ¤ì¤ë¤¬°ì±þ½é´ü²½¤¹¤ë */ -static errr init_chuukei() -{ - fresh_queue.next = fresh_queue.tail = 0; - ring.wptr = ring.rptr = ring.inlen = 0; - fresh_queue.time[0] = 0; - ring.buf = malloc(RINGBUF_SIZE); - if (ring.buf == NULL) return (-1); - - return (0); -} - -/* ¸½ºß¤Î»þ´Ö¤ò100msñ°Ì¤Ç¼èÆÀ¤¹¤ë */ -static long get_current_time(void) -{ -#ifdef WINDOWS - return GetTickCount() / 100; -#elif defined(MACINTOSH) - return TickCount(); -#else - struct timeval tv; - gettimeofday(&tv, NULL); - - return (tv.tv_sec * 10 + tv.tv_usec / 100000); -#endif -} - - -/* ¥ê¥ó¥°¥Ð¥Ã¥Õ¥¡¹½Â¤ÂÎ¤Ë buf ¤ÎÆâÍƤò²Ã¤¨¤ë */ -static errr insert_ringbuf(char *buf) -{ - int len; - len = strlen(buf) + 1; /* +1¤Ï½ªÃ¼Ê¸»úʬ */ - - /* ¥Ð¥Ã¥Õ¥¡¤ò¥ª¡¼¥Ð¡¼ */ - if (ring.inlen + len >= RINGBUF_SIZE) - { - chuukei_server = FALSE; - chuukei_client = FALSE; - - prt("¥Ð¥Ã¥Õ¥¡¤¬°î¤ì¤Þ¤·¤¿¡£¥µ¡¼¥Ð¤È¤ÎÀܳ¤òÀÚÃǤ·¤Þ¤¹¡£", 0, 0); - inkey(); - - close(sd); - - return (-1); - } - - /* ¥Ð¥Ã¥Õ¥¡¤Î½ªÃ¼¤Þ¤Ç¤Ë¼ý¤Þ¤ë */ - if (ring.wptr + len < RINGBUF_SIZE) - { - memcpy(ring.buf + ring.wptr, buf, len); - ring.wptr += len; - } - /* ¥Ð¥Ã¥Õ¥¡¤Î½ªÃ¼¤Þ¤Ç¤Ë¼ý¤Þ¤é¤Ê¤¤(¥Ô¥Ã¥¿¥ê¼ý¤Þ¤ë¾ì¹ç¤â´Þ¤à) */ - else - { - int head = RINGBUF_SIZE - ring.wptr; /* Á°È¾ */ - int tail = len - head; /* ¸åȾ */ - - memcpy(ring.buf + ring.wptr, buf, head); - memcpy(ring.buf, buf + head, tail); - ring.wptr = tail; - } - - ring.inlen += len; - - /* Success */ - return (0); -} - -void flush_ringbuf(void) -{ -#ifndef MACINTOSH - fd_set fdset; - struct timeval tv; - int writen = 0; - - if (!chuukei_server) return; - - if (ring.inlen == 0) return; - - tv.tv_sec = 0; - tv.tv_usec = 0; - - FD_ZERO(&fdset); - FD_SET(sd, &fdset); - - while (1) - { - fd_set tmp_fdset; - struct timeval tmp_tv; - int result; - - tmp_fdset = fdset; - tmp_tv = tv; - - /* ¥½¥±¥Ã¥È¤Ë¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤á¤ë¤«¤É¤¦¤«Ä´¤Ù¤ë */ - select(sd+1, (fd_set *)NULL, &tmp_fdset, (fd_set *)NULL, &tv); - - /* ½ñ¤­¹þ¤á¤Ê¤±¤ì¤ÐÌá¤ë */ - if (FD_ISSET(sd, &tmp_fdset) == 0) break; - - result = send(sd, ring.buf + ring.rptr, ((ring.wptr > ring.rptr ) ? ring.wptr : RINGBUF_SIZE) - ring.rptr, 0); - - if (result <= 0) - { - /* ¥µ¡¼¥Ð¤È¤ÎÀܳÃÇ¡© */ - chuukei_server = FALSE; - - prt("¥µ¡¼¥Ð¤È¤ÎÀܳ¤¬ÀÚÃǤµ¤ì¤Þ¤·¤¿¡£", 0, 0); - inkey(); - close(sd); - - return; - } - - ring.rptr += result; - ring.inlen -= result; - writen += result; - - if (ring.rptr == RINGBUF_SIZE) ring.rptr = 0; - if (ring.inlen == 0) break; - } -#else - struct timeval tv; - int writen = 0; - - if (!chuukei_server) return; - - if (ring.inlen == 0) return; - - tv.tv_sec = 0; - tv.tv_usec = 0; - - while (1) - { - struct timeval tmp_tv; - int result; - - tmp_tv = tv; - - /* ¥½¥±¥Ã¥È¤Ë¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤á¤ë¤«¤É¤¦¤«Ä´¤Ù¤ë */ - result = OTSnd(ep, ring.buf + ring.rptr, ((ring.wptr > ring.rptr ) ? ring.wptr : RINGBUF_SIZE) - ring.rptr, 0); - - if (result <= 0) - { - /* ¥µ¡¼¥Ð¤È¤ÎÀܳÃÇ¡© */ - chuukei_server = FALSE; - - prt("¥µ¡¼¥Ð¤È¤ÎÀܳ¤¬ÀÚÃǤµ¤ì¤Þ¤·¤¿¡£", 0, 0); - inkey(); - close(sd); - - return; - } - - ring.rptr += result; - ring.inlen -= result; - writen += result; - - if (ring.rptr == RINGBUF_SIZE) ring.rptr = 0; - if (ring.inlen == 0) break; - } -#endif -} - -static int read_chuukei_prf(cptr prf_name) -{ - char buf[1024]; - FILE *fp; - - path_build(buf, 1024, ANGBAND_DIR_XTRA, prf_name); - fp = my_fopen(buf, "r"); - - if (!fp) return (-1); - - /* ½é´ü²½ */ - server_port = -1; - server_name[0] = 0; - browse_delay = DEFAULT_DELAY; - - while (0 == my_fgets(fp, buf, 1024)) - { - /* ¥µ¡¼¥Ð̾ */ - if (!strncmp(buf, "server:", 7)) - { - strncpy(server_name, buf + 7, MAX_HOSTNAME); - } - - /* ¥Ý¡¼¥ÈÈÖ¹æ */ - if (!strncmp(buf, "port:", 5)) - { - server_port = atoi(buf + 5); - } - - /* ¥Ç¥£¥ì¥¤ */ - if (!strncmp(buf, "delay:", 6)) - { - browse_delay = atoi(buf + 6); - } - } - - my_fclose(fp); - - /* prf¥Õ¥¡¥¤¥ë¤¬´°Á´¤Ç¤Ê¤¤ */ - if (server_port == -1 || server_name[0] == 0) return (-1); - - return (0); -} - -int connect_chuukei_server(char *prf_name) -{ -#ifndef MACINTOSH - -#ifdef WINDOWS - WSADATA wsaData; - WORD wVersionRequested = (WORD) (( 1) | ( 1 << 8)); -#endif - - struct sockaddr_in ask; - struct hostent *hp; - - if (read_chuukei_prf(prf_name) < 0) - { - printf("Wrong prf file\n"); - return (-1); - } - - if (init_chuukei() < 0) - { - printf("Malloc error\n"); - return (-1); - } - -#ifdef WINDOWS - if (WSAStartup(wVersionRequested, &wsaData)) - { - msg_print("Report: WSAStartup failed."); - return (-1); - } -#endif - - printf("server = %s\nport = %d\n", server_name, server_port); - - if ((hp = gethostbyname(server_name)) != NULL) - { - memset(&ask, 0, sizeof(ask)); - memcpy(&ask.sin_addr, hp->h_addr_list[0], hp->h_length); - } - else - { - if ((ask.sin_addr.s_addr=inet_addr(server_name)) == 0) - { - printf("Bad hostname\n"); - return (-1); - } - } - - ask.sin_family = AF_INET; - ask.sin_port = htons(server_port); - -#ifndef WINDOWS - if ((sd=socket(PF_INET,SOCK_STREAM, 0)) < 0) -#else - if ((sd=socket(PF_INET,SOCK_STREAM, 0)) == INVALID_SOCKET) -#endif - { - printf("Can't create socket\n"); - return (-1); - } - - if (connect(sd, (struct sockaddr *)&ask, sizeof(ask)) < 0) - { - close(sd); - printf("Can't connect %s port %d\n", server_name, server_port); - return (-1); - } - - epoch_time = get_current_time(); - - return (0); -#else /* MACINTOSH */ - OSStatus err; - InetHostInfo response; - InetHost host_addr; - InetAddress inAddr; - TCall sndCall; - Boolean bind = false; - OSStatus junk; - - if (read_chuukei_prf(prf_name) < 0){ - printf("Wrong prf file\n"); - return (-1); - } - - init_chuukei(); - - printf("server = %s\nport = %d\n", server_name, server_port); - - -#if TARGET_API_MAC_CARBON - err = InitOpenTransportInContext(kInitOTForApplicationMask, NULL); -#else - err = InitOpenTransport(); -#endif - - memset(&response, 0, sizeof(response)); - - -#if TARGET_API_MAC_CARBON - inet_services = OTOpenInternetServicesInContext(kDefaultInternetServicesPath, 0, &err, NULL); -#else - inet_services = OTOpenInternetServices(kDefaultInternetServicesPath, 0, &err); -#endif - - if (err == noErr) { - err = OTInetStringToAddress(inet_services, (char *)server_name, &response); - - if (err == noErr) { - host_addr = response.addrs[0]; - } else { - printf("Bad hostname\n"); - } - -#if TARGET_API_MAC_CARBON - ep = (void *)OTOpenEndpointInContext(OTCreateConfiguration(kTCPName), 0, nil, &err, NULL); -#else - ep = (void *)OTOpenEndpoint(OTCreateConfiguration(kTCPName), 0, nil, &err); -#endif - - if (err == noErr) { - err = OTBind(ep, nil, nil); - bind = (err == noErr); - } - if (err == noErr){ - OTInitInetAddress(&inAddr, server_port, host_addr); - - sndCall.addr.len = sizeof(InetAddress); - sndCall.addr.buf = (unsigned char*) &inAddr; - sndCall.opt.buf = nil; /* no connection options */ - sndCall.opt.len = 0; - sndCall.udata.buf = nil; /* no connection data */ - sndCall.udata.len = 0; - sndCall.sequence = 0; /* ignored by OTConnect */ - - err = OTConnect(ep, &sndCall, NULL); - - if( err != noErr ){ - printf("Can't connect %s port %d\n", server_name, server_port); - } - } - - err = OTSetSynchronous(ep); - if (err == noErr) - err = OTSetBlocking(ep); - - } - - if( err != noErr ){ - if( bind ){ - OTUnbind(ep); - } - /* Clean up. */ - if (ep != kOTInvalidEndpointRef) { - OTCloseProvider(ep); - ep = nil; - } - if (inet_services != nil) { - OTCloseProvider(inet_services); - inet_services = nil; - } - - return -1; - } - - return 0; - -#endif -} - -#ifdef SJIS -static void sjis2euc(char *str) -{ - int i, l; - unsigned char c1, c2; - int kanji = 0; - int iseuc = 1; - l = strlen(str); - - for (i = 0; i < l; i++) - { - c1 = str[i]; - if (c1 & 0x80) kanji = 1; - if (c1>=0x80 && (c1 < 0xa1 || c1 > 0xfe)) iseuc = 0; - } - - if (kanji && !iseuc) - { - unsigned char tmp[256]; - - for (i = 0; i < l; i++) - { - c1 = str[i]; - if (c1 & 0x80) - { - i++; - c2 = str[i]; - if (c2 >= 0x9f) - { - c1 = c1 * 2 - (c1 >= 0xe0 ? 0xe0 : 0x60); - c2 += 2; - } - else - { - c1 = c1 * 2 - (c1 >= 0xe0 ? 0xe1 : 0x61); - c2 += 0x60 + (c2 < 0x7f); - } - tmp[i - 1] = c1; - tmp[i] = c2; - } - else - tmp[i] = c1; - } - tmp[l] = 0; - strcpy(str, tmp); - } -} - -static void euc2sjis(char *str) -{ - int i, l; - unsigned char c1, c2; - int kanji = 0; - int iseuc = 1; - l = strlen(str); - - for (i = 0; i < l; i++) - { - c1 = str[i]; - if (c1 & 0x80) kanji = 1; - if (c1>=0x80 && (c1 < 0xa1 || c1 > 0xfe)) iseuc = 0; - } - if (kanji && iseuc) - { - unsigned char tmp[256]; - - for (i = 0; i < l; i++) - { - c1 = str[i]; - if (c1 & 0x80) - { - i++; - c2 = str[i]; - if (c1 % 2) - { - c1 = (c1 >> 1) + (c1 < 0xdf ? 0x31 : 0x71); - c2 -= 0x60 + (c2 < 0xe0); - } - else - { - c1 = (c1 >> 1) + (c1 < 0xdf ? 0x30 : 0x70); - c2 -= 2; - } - - tmp[i - 1] = c1; - tmp[i] = c2; - } - else - tmp[i] = c1; - } - tmp[l] = 0; - strcpy(str, tmp); - } -} -#endif - -/* str¤¬Æ±¤¸Ê¸»ú¤Î·«¤êÊÖ¤·¤«¤É¤¦¤«Ä´¤Ù¤ë */ -static bool string_is_repeat(char *str, int len) -{ - char c = str[0]; - int i; - - if (len < 2) return (FALSE); -#ifdef JP - if (iskanji(c)) return (FALSE); -#endif - - for (i = 1; i < len; i++) - { -#ifdef JP - if(c != str[i] || iskanji(str[i])) return (FALSE); -#else - if(c != str[i]) return (FALSE); -#endif - } - - return (TRUE); -} - -void send_text_to_chuukei_server(int x, int y, int len, int col, char *str) -{ - char buf[1024]; - char buf2[1024]; - - if (!chuukei_server || Term != angband_term[0]) return; - - strncpy(buf2, str, len); - buf2[len] = '\0'; - - if (len == 1) - { - sprintf(buf, "s%c%c%c%c", x+1, y+1, col, buf2[0]); - } - else if(string_is_repeat(buf2, len)) - { - sprintf(buf, "n%c%c%c%c%c", x+1, y+1, len, col, buf2[0]); - } - else - { -#ifdef SJIS - sjis2euc(buf2); -#endif - sprintf(buf, "t%c%c%c%c%s", x+1, y+1, len, col, buf2); - } - - insert_ringbuf(buf); -} - -void send_wipe_to_chuukei_server(int x, int y, int len) -{ - char buf[1024]; - - if (!chuukei_server || Term != angband_term[0]) return; - - sprintf(buf, "w%c%c%c", x+1, y+1, len); - - insert_ringbuf(buf); -} - -void send_xtra_to_chuukei_server(int n) -{ - char buf[1024]; - - if (!chuukei_server || Term != angband_term[0]) return; - sprintf(buf, "x%c", n+1); - - insert_ringbuf(buf); - - if (n == TERM_XTRA_FRESH) - { - sprintf(buf, "d%ld", get_current_time() - epoch_time); - insert_ringbuf(buf); - } -} - -void send_curs_to_chuukei_server(int x, int y) -{ - char buf[1024]; - - if (!chuukei_server || Term != angband_term[0]) return; - sprintf(buf, "c%c%c", x+1, y+1); - - insert_ringbuf(buf); -} - -static int read_sock(void) -{ - char buf[1024]; - int i; - - for (i = 0;; i++) - { - if (recv(sd, buf+i, 1, 0) <= 0) - return -1; - - if (buf[i] == '\0') - { - if (buf[0] == 'd') - { - int timestamp = atoi(buf + 1); - long current_time = get_current_time(); - - /* ºÇ½é¤Î»þ´Ö¤òÊݸ¤·¤Æ¤ª¤¯ */ - if (!fresh_queue.time[0]) - { - epoch_time = current_time; - epoch_time += browse_delay; - epoch_time -= timestamp; - time_diff = current_time - timestamp; - } - - fresh_queue.time[fresh_queue.tail] = timestamp; - fresh_queue.tail ++; - - if (fresh_queue.tail == FRESH_QUEUE_SIZE) - fresh_queue.tail = 0; - - /* ¥×¥ì¥¤Â¦¤È¤Î¥Ç¥£¥ì¥¤¤òÄ´À° */ - if (time_diff > current_time - timestamp) - { - long old_time_diff = time_diff; - time_diff = current_time - timestamp; - epoch_time -= (old_time_diff - time_diff); - } - - if (fresh_queue.tail == fresh_queue.next) - { - /* queue°î¤ì */ - close(sd); - exit(1); - } - - } - - if (insert_ringbuf(buf) < 0) - return -1; - return (i); - } - } -} - - -#ifndef WINDOWS -/* WinÈǤÎÃæÅÀ¤ÈÊɤÎƦÉå¤ò¥Ô¥ê¥ª¥É¤È¥·¥ã¡¼¥×¤Ë¤¹¤ë¡£*/ -void win2unix(int col, char *buf) -{ - char kabe; - if ( col == 9 ) kabe = '%'; - else kabe = '#'; - - while (*buf) - { -#ifdef JP - if (iskanji(*buf)) - { - buf += 2; - continue; - } -#endif - if (*buf == 127) *buf = kabe; - else if(*buf == 31) *buf = '.'; - buf++; - } -} -#endif - -static bool get_nextbuf(char *buf) -{ - char *ptr = buf; - - while (1) - { - *ptr = ring.buf[ring.rptr ++]; - ring.inlen --; - if (ring.rptr == RINGBUF_SIZE) ring.rptr = 0; - if (*ptr++ == '\0') break; - } - - if (buf[0] == 'd') return (FALSE); - - return (TRUE); -} - -static bool flush_ringbuf_client(void) -{ - char buf[1024]; - - /* ½ñ¤¯¥Ç¡¼¥¿¤Ê¤· */ - if (fresh_queue.next == fresh_queue.tail) return (FALSE); - - /* ¤Þ¤À½ñ¤¯¤Ù¤­»þ¤Ç¤Ê¤¤ */ - if (fresh_queue.time[fresh_queue.next] > get_current_time() - epoch_time) return (FALSE); - - /* »þ´Ö¾ðÊó(¶èÀÚ¤ê)¤¬ÆÀ¤é¤ì¤ë¤Þ¤Ç½ñ¤¯ */ - while (get_nextbuf(buf)) - { - char id; - int x, y, len, col; - int i; - char tmp1, tmp2, tmp3, tmp4; - char *mesg; - - sscanf(buf, "%c%c%c%c%c", &id, &tmp1, &tmp2, &tmp3, &tmp4); - x = tmp1-1; y = tmp2-1; len = tmp3; col = tmp4; - if (id == 's') - { - col = tmp3; - mesg = &buf[4]; - } - else mesg = &buf[5]; -#ifndef WINDOWS - win2unix(col, mesg); -#endif - - switch (id) - { - case 't': /* Ä̾ï */ -#ifdef SJIS - euc2sjis(mesg); -#endif - (void)((*angband_term[0]->text_hook)(x, y, len, col, mesg)); - strncpy(&Term->scr->c[y][x], mesg, len); - for (i = x; i < x+len; i++) - { - Term->scr->a[y][i] = col; - } - break; - - case 'n': /* ·«¤êÊÖ¤· */ - for (i = 1; i < len; i++) - { - mesg[i] = mesg[0]; - } - mesg[i] = '\0'; - (void)((*angband_term[0]->text_hook)(x, y, len, col, mesg)); - strncpy(&Term->scr->c[y][x], mesg, len); - for (i = x; i < x+len; i++) - { - Term->scr->a[y][i] = col; - } - break; - - case 's': /* °ìʸ»ú */ - (void)((*angband_term[0]->text_hook)(x, y, 1, col, mesg)); - strncpy(&Term->scr->c[y][x], mesg, 1); - Term->scr->a[y][x] = col; - break; - - case 'w': - (void)((*angband_term[0]->wipe_hook)(x, y, len)); - break; - - case 'x': - if (x == TERM_XTRA_CLEAR) Term_clear(); - (void)((*angband_term[0]->xtra_hook)(x, 0)); - break; - - case 'c': - (void)((*angband_term[0]->curs_hook)(x, y)); - break; - } - } - - fresh_queue.next++; - if (fresh_queue.next == FRESH_QUEUE_SIZE) fresh_queue.next = 0; - return (TRUE); -} - -void browse_chuukei() -{ -#ifndef MACINTOSH - fd_set fdset; - struct timeval tv; - - tv.tv_sec = 0; - tv.tv_usec = WAIT; - - FD_ZERO(&fdset); - FD_SET(sd, &fdset); - - Term_clear(); - Term_fresh(); - Term_xtra(TERM_XTRA_REACT, 0); - - while (1) - { - fd_set tmp_fdset; - struct timeval tmp_tv; - - if (flush_ringbuf_client()) continue; - - tmp_fdset = fdset; - tmp_tv = tv; - - /* ¥½¥±¥Ã¥È¤Ë¥Ç¡¼¥¿¤¬Íè¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤ë */ - select(sd+1, &tmp_fdset, (fd_set *)NULL, (fd_set *)NULL, &tmp_tv); - if (FD_ISSET(sd, &tmp_fdset) == 0) - { - Term_xtra(TERM_XTRA_FLUSH, 0); - continue; - } - - if (read_sock() < 0) - { - chuukei_client = FALSE; - } - - /* Àܳ¤¬Àڤ줿¾õÂ֤ǽñ¤¯¤Ù¤­¥Ç¡¼¥¿¤¬¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿¤é½ªÎ» */ - if (!chuukei_client && fresh_queue.next == fresh_queue.tail ) break; - } -#else - struct timeval tv; - - tv.tv_sec = 0; - tv.tv_usec = WAIT; - - Term_clear(); - Term_fresh(); - Term_xtra(TERM_XTRA_REACT, 0); - - while (1) - { - struct timeval tmp_tv; - UInt32 unreadData = 0; - int n; - - if (flush_ringbuf_client()) continue; - - tmp_tv = tv; - - /* ¥½¥±¥Ã¥È¤Ë¥Ç¡¼¥¿¤¬Íè¤Æ¤¤¤ë¤«¤É¤¦¤«Ä´¤Ù¤ë */ - - OTCountDataBytes(ep, &unreadData); - if(unreadData <= 0 ){ - Term_xtra(TERM_XTRA_FLUSH, 0); - continue; - } - if (read_sock() < 0) - { - chuukei_client = FALSE; - } - - /* Àܳ¤¬Àڤ줿¾õÂ֤ǽñ¤¯¤Ù¤­¥Ç¡¼¥¿¤¬¤Ê¤¯¤Ê¤Ã¤Æ¤¤¤¿¤é½ªÎ» */ - if (!chuukei_client && fresh_queue.next == fresh_queue.tail ) break; - } -#endif /*MACINTOSH*/ -} - -#endif /* CHUUKEI */