トップ «前の日記(2008-11-12) 最新 次の日記(2008-11-14)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2008-11-13

_

どんどん増える、まるで医療費のようだというトートロジー。

_ 一番影響を受けた言葉

なにかというと、「AとBなら自由を選ぶ」と口をついて出ている自分に気づく。まさにGPL汚染(いや、GPL感染か)。

_ Ruby-1.8.7の非互換

Ruby-1.5でOK、1.6でOK、1.7でだめぽ(1.9.1も)のパターンを見つけたのだが、ちょっと追っかけたところ、なかなかおもしろいので後でじっくり見ようかなとか。

win32固有の話で、たぶん、Winsock2がからんでいるのだと思う。

というか(後で見ようと思いながらデバッガを起動していたり)、WSAEnumProtocolだな。

->WSAENOBUFF

やり直し

protocols_available -> 8
 (af = 2 AF_INET, protocol = 1 (ICMP) type = 3 (SOCK_RAW)
2-6(tcp)-1
2-17(udp)-2
23-6-1
23-17-2
23-6-1
2-6-1
23-17-2
2-17-2

……確かに無い(というか、取りなおすと値が変わるような)。

というか、これはおかしいなぁ。MSDN読むと

If the lpProtocolInfo is not NULL, the socket will be bound to the provider associated with the indicated WSAPROTOCOL_INFO structure.

NULLを許容している(つまり列挙できないものがある前提)。

*** win32.c~	Fri Jun 06 19:39:57 2008
--- win32.c	Thu Nov 13 20:55:47 2008
*************** open_ifs_socket(int af, int type, int pr
*** 2633,2638 ****
--- 2633,2639 ----
  		WSAEnumProtocols(NULL, proto_buffers, &proto_buffers_len);
  	    if (protocols_available != SOCKET_ERROR) {
  		int i;
+                 WSAPROTOCOL_INFO *pinfo = NULL;
  		for (i = 0; i < protocols_available; i++) {
  		    if ((af != AF_UNSPEC && af != proto_buffers[i].iAddressFamily) ||
  			(type != proto_buffers[i].iSocketType) ||
*************** open_ifs_socket(int af, int type, int pr
*** 2642,2650 ****
  		    if ((proto_buffers[i].dwServiceFlags1 & XP1_IFS_HANDLES) == 0)
  			continue;
  
! 		    out = WSASocket(af, type, protocol, &(proto_buffers[i]), 0, 0);
  		    break;
  		}
  	    }
  
  	    free(proto_buffers);
--- 2643,2652 ----
  		    if ((proto_buffers[i].dwServiceFlags1 & XP1_IFS_HANDLES) == 0)
  			continue;
  
!                     pinfo = &(proto_buffers[i]);
  		    break;
  		}
+                 out = WSASocket(af, type, protocol, pinfo, 0, 0);
  	    }
  
  	    free(proto_buffers);

で、うまく動いた(icmpping.rbの話)。

さて


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|

ジェズイットを見習え