OSDN Git Service

#37287 (2.2.0.40) cmd1.c内のC4457警告に対応。 / Deal C4457 warning in cmd1.c.
[hengband/hengband.git] / src / inet.c
index 6963e67..1bcec65 100644 (file)
@@ -1,4 +1,4 @@
-/* File: inet.c */
+/* File: inet.c */
 
 #include "angband.h"
 
@@ -26,7 +26,7 @@
 
 #include <stdlib.h>
 
-static char    *errstr;
+static cptr errstr;
 static char    *proxy;
 static int     proxy_port;
 
@@ -35,7 +35,7 @@ static InetSvcRef inet_services = nil;
 static EndpointRef ep          = kOTInvalidEndpointRef;
 #endif
 
-#if 0 /* ¤È¤ê¤¢¤¨¤º¸½ºß¤Ï»È¤ï¤Ê¤¤¡£by Habu*/
+#if 0 /* とりあえず現在は使わない。by Habu*/
 static char    *homeurl;
 
 void
@@ -99,8 +99,8 @@ int soc_read(int sd, char *buf, size_t sz)
 
 #endif /* if 0 */
 
-/* ¥×¥í¥­¥·¥µ¡¼¥Ð¤Î¥¢¥É¥ì¥¹¤ò¤ò¥Õ¥¡¥¤¥ë¤«¤éÆɤó¤ÇÀßÄꤹ¤ë */
-static void set_proxy()
+/* プロキシサーバのアドレスををファイルから読んで設定する */
+void set_proxy(char *default_url, int default_port)
 {
        char buf[1024];
        size_t len;
@@ -112,30 +112,30 @@ static void set_proxy()
        char tmp[8];
 #endif
 
-       path_build(buf, 1024, ANGBAND_DIR_PREF, "proxy.prf");
+       path_build(buf, sizeof(buf), ANGBAND_DIR_PREF, "proxy.prf");
 
-       /* ¥Õ¥¡¥¤¥ë¤«¤éÀßÄê¤òÆɤࡣ*/
+       /* ファイルから設定を読む。 */
        fp = my_fopen(buf, "r");
 
        if (!fp)
        {
-               /* ¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¤Ïdefine.hÆâ¤Î¥Ç¥Õ¥©¥ë¥È¤òÀßÄê */
-               proxy = HTTP_PROXY;
-               proxy_port = HTTP_PROXY_PORT;
+               /* ファイルが存在しない場合はデフォルトを設定 */
+               proxy = default_url;
+               proxy_port = default_port;
                return;
        }
 
-       while (my_fgets(fp, buf, 1024)==0)
+       while (my_fgets(fp, buf, sizeof(buf))==0)
        {
                if (buf[0] != '#' && buf[0] != '\0') break;
        }
 
        my_fclose(fp);
 
-       /* ¥Ý¥¤¥ó¥¿¤òÍÑ°Õ¡£*/
+       /* ポインタを用意。 */
        s = buf;
 
-       /* "http://" ¤«¤é»Ï¤Þ¤Ã¤Æ¤¤¤ë¾ì¹ç¤Ï¤½¤ÎÉôʬ¤ò¥«¥Ã¥È¤¹¤ë¡£*/
+       /* "http://" から始まっている場合はその部分をカットする。 */
 #if defined(WINDOWS)
        if (!strnicmp(s, "http://", 7))
        {
@@ -159,13 +159,13 @@ static void set_proxy()
        }
 #endif
 
-       /* Ê¸»úÎó¤ÎŤµ¤òÄ´¤Ù¡¢É¬Íפʥá¥â¥ê¤ò³ÎÊÝ */
+       /* 文字列の長さを調べ、必要なメモリを確保 */
        len = strlen(s);
        proxy = malloc(len + 1);
 
-       /* ¥Ý¡¼¥ÈÈֹ椬¤¢¤ë¤«¤É¤¦¤«¤òÄ´¤Ù¡¢¤¢¤ì¤Ðproxy_port¤ËÀßÄê¡£*/
+       /* ポート番号があるかどうかを調べ、あればproxy_portに設定。 */
        --len;
-       while (len > 0 && isdigit(s[len]))
+       while (len > 0 && isdigit((unsigned char)s[len]))
                --len;
        if (len > 0 && s[len] == ':' && s[len + 1] != '\0')
        {
@@ -176,25 +176,22 @@ static void set_proxy()
        else
        {
                strcpy(proxy, s);
-               proxy_port = HTTP_PROXY_PORT;
+               proxy_port = default_port;
        }
 
-       /* ¥×¥í¥­¥·¤Î¥¢¥É¥ì¥¹¤òproxy¤Ë¥³¥Ô¡¼ */
+       /* ã\83\97ã\83­ã\82­ã\82·ã\81®ã\82¢ã\83\89ã\83¬ã\82¹ã\82\92proxyã\81«ã\82³ã\83\94ã\83¼ */
        strcpy(proxy, s);
 
        if (proxy_port == 0)
                proxy_port = 80;
 }
 
-/* ¥½¥±¥Ã¥È¤Ë¥Ð¥Ã¥Õ¥¡¤ÎÆâÍƤò½ñ¤­¹þ¤à */
+/* ソケットにバッファの内容を書き込む */
 int soc_write(int sd, char *buf, size_t sz)
 {
 #ifndef MACINTOSH
-#ifndef WINDOWS
-       write(sd, buf, sz);
-#else
        int nleft, nwritten;
-       
+
        nleft = sz;
 
        while (nleft > 0) {
@@ -204,7 +201,6 @@ int soc_write(int sd, char *buf, size_t sz)
                nleft -= nwritten;
                buf += nwritten;
        }
-#endif
 #else /* !MACINTOSH */
 
        OTResult bytesSent;
@@ -215,7 +211,7 @@ int soc_write(int sd, char *buf, size_t sz)
        return sz;
 }
 
-#if 0 /* ¤ª¤½¤é¤¯»È¤ï¤Ê¤¤ */
+#if 0 /* おそらく使わない */
 int soc_write_str(int sd, char *buf)
 {
        return soc_write(sd, buf, strlen(buf));
@@ -223,23 +219,23 @@ int soc_write_str(int sd, char *buf)
 #endif
 
 #if !defined(WINDOWS) && !defined(MACINTOSH)
-static jmp_buf env;
+static sigjmp_buf      env;
 static void (*sig_int_saved)(int);
 static void (*sig_alm_saved)(int);
 #endif
 
-static void restore_signal()
+static void restore_signal(void)
 {
 #if !defined(WINDOWS) && !defined(MACINTOSH)
        struct itimerval        val0;
 
-       /* itimer¥ê¥»¥Ã¥ÈÍÑ */
+       /* itimerリセット用 */
        val0.it_interval.tv_sec = 0;
        val0.it_interval.tv_usec = 0;
        val0.it_value.tv_sec = 0;
        val0.it_value.tv_usec = 0;
 
-       /* ¥¢¥é¡¼¥à²ò½ü */
+       /* アラーム解除 */
        setitimer(ITIMER_REAL, &val0, NULL);
        signal(SIGALRM, sig_alm_saved);
        signal(SIGINT, sig_int_saved);
@@ -256,9 +252,9 @@ static void interrupt_report(int sig)
 #endif
 
 
+/* サーバにコネクトする関数。 */
+int connect_server(int timeout, const char *host, int port)
 #ifndef MACINTOSH
-/* ¥µ¡¼¥Ð¤Ë¥³¥Í¥¯¥È¤¹¤ë´Ø¿ô¡£ Win, unix */
-static int connect_server(int timeout, const char *host, int port)
 {
        int                     sd;
        struct sockaddr_in      to;
@@ -268,20 +264,20 @@ static int connect_server(int timeout, const char *host, int port)
        struct itimerval        val;
        int                     ret;
 
-       /* itimerÀßÄêÍÑ */
+       /* itimer設定用 */
        val.it_interval.tv_sec = 0;
        val.it_interval.tv_usec = 0;
        val.it_value.tv_sec = timeout;
        val.it_value.tv_usec = 0;
 
-       /* ¥¿¥¤¥à¥¢¥¦¥È¡¢¤â¤·¤¯¤ÏÃæÃǤ·¤¿»þ¤Î½èÍý¡£*/
+       /* タイムアウト、もしくは中断した時の処理。 */
        if ((ret = sigsetjmp(env,1)) != 0)
        {
 #ifdef JP
                if (ret == SIGALRM)
-                       errstr = "¥¨¥é¡¼: ¥¿¥¤¥à¥¢¥¦¥È";
+                       errstr = "エラー: タイムアウト";
                else
-                       errstr = "¥¨¥é¡¼: ¥¤¥ó¥¿¥é¥×¥È";
+                       errstr = "エラー: インタラプト";
 #else
                if (ret == SIGALRM)
                        errstr = "Error : time out";
@@ -292,18 +288,21 @@ static int connect_server(int timeout, const char *host, int port)
        }
        sig_int_saved = signal(SIGINT, interrupt_report);
        sig_alm_saved = signal(SIGALRM, interrupt_report);
-    
-       /* ¥¿¥¤¥à¥¢¥¦¥È¤Î»þ´Ö¤òÀßÄê */
+
+       /* タイムアウトの時間を設定 */
        setitimer(ITIMER_REAL, &val, NULL);
+#else
+       /* Unused in Windows */
+       (void)timeout;
 #endif
 
-       /* ¥×¥í¥­¥·¤¬ÀßÄꤵ¤ì¤Æ¤¤¤ì¤Ð¥×¥í¥­¥·¤Ë·Ò¤° */
+       /* プロキシが設定されていればプロキシに繋ぐ */
        if (proxy && proxy[0])
        {
                if ((hp = gethostbyname(proxy)) == NULL)
                {
 #ifdef JP
-                       errstr = "¥¨¥é¡¼: ¥×¥í¥­¥·¤Î¥¢¥É¥ì¥¹¤¬ÉÔÀµ¤Ç¤¹";
+                       errstr = "エラー: プロキシのアドレスが不正です";
 #else
                        errstr = "Error : wrong proxy addres";
 #endif
@@ -316,7 +315,7 @@ static int connect_server(int timeout, const char *host, int port)
        else if ((hp = gethostbyname(host)) == NULL)
        {
 #ifdef JP
-               errstr = "¥¨¥é¡¼: ¥µ¡¼¥Ð¤Î¥¢¥É¥ì¥¹¤¬ÉÔÀµ¤Ç¤¹";
+               errstr = "エラー: サーバのアドレスが不正です";
 #else
                errstr = "Error : wrong server adress";
 #endif
@@ -332,38 +331,29 @@ static int connect_server(int timeout, const char *host, int port)
        to.sin_family = AF_INET;
 
        if(proxy && proxy[0] && proxy_port)
-               to.sin_port = htons(proxy_port);
+               to.sin_port = htons((unsigned short int)proxy_port);
        else
-               to.sin_port = htons(port);
+               to.sin_port = htons((unsigned short int)port);
 
 #ifndef WINDOWS
        if ((sd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
-       {
-#ifdef JP
-               errstr = "¥¨¥é¡¼: ¥½¥±¥Ã¥È¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó";
-#else
-               errstr = "Error : cannot create socket.";
-#endif
-               restore_signal();
-               return -1;
-       }
 #else
        if  ((sd = socket(PF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
+#endif
        {
 #ifdef JP
-               errstr = "¥¨¥é¡¼: ¥½¥±¥Ã¥È¤òÀ¸À®¤Ç¤­¤Þ¤»¤ó";
+               errstr = "エラー: ソケットを生成できません";
 #else
                errstr = "Error : cannot create socket.";
 #endif
                restore_signal();
                return -1;
        }
-#endif
 
        if (connect(sd, (struct sockaddr *)&to, sizeof(to)) < 0)
        {
 #ifdef JP
-               errstr = "¥¨¥é¡¼: ¥µ¡¼¥Ð¤ËÀܳ¤Ç¤­¤Þ¤»¤ó";
+               errstr = "エラー: サーバに接続できません";
 #else
                errstr = "Error : failed to connect server";
 #endif
@@ -383,8 +373,7 @@ static int connect_server(int timeout, const char *host, int port)
 
 #else /* !MACINTOSH */
 
-/* ¥µ¡¼¥Ð¤Ë¥³¥Í¥¯¥È¤¹¤ë´Ø¿ô¡£ Mac */
-static int connect_server(int timeout, const char *host, int port)
+        /* サーバにコネクトする関数。 Mac */
 {
        OSStatus err;
        InetHostInfo    response;
@@ -481,13 +470,6 @@ static int connect_server(int timeout, const char *host, int port)
 }
 #endif
 
-int connect_scoreserver(void)
-{
-       /* ¥×¥í¥­¥·¤òÀßÄꤹ¤ë */
-       set_proxy();
-
-       return connect_server(HTTP_TIMEOUT, SCORE_SERVER, SCORE_PORT);
-}
 
 int disconnect_server(int sd)
 {
@@ -508,8 +490,7 @@ int disconnect_server(int sd)
 #endif
 }
 
-char *
-soc_err()
+cptr soc_err()
 {
        return errstr;
 }