[前][次][番号順一覧][スレッド一覧]

ruby-changes:11040

From: akr <ko1@a...>
Date: Wed, 25 Feb 2009 23:24:44 +0900 (JST)
Subject: [ruby-changes:11040] Ruby:r22632 (trunk): * ext/socket/ancdata.c (ancillary_unix_rights): raise

akr	2009-02-25 23:24:10 +0900 (Wed, 25 Feb 2009)

  New Revision: 22632

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22632

  Log:
    * ext/socket/ancdata.c (ancillary_unix_rights): raise
      NotImplementedError if no fd passing feature.
      (ancillary_timestamp): raise NotImplementedError if no timestamp
      feature.

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/ancdata.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 22631)
+++ ChangeLog	(revision 22632)
@@ -1,3 +1,10 @@
+Wed Feb 25 23:23:03 2009  Tanaka Akira  <akr@f...>
+
+	* ext/socket/ancdata.c (ancillary_unix_rights): raise
+	  NotImplementedError if no fd passing feature.
+	  (ancillary_timestamp): raise NotImplementedError if no timestamp
+	  feature.
+	  
 Wed Feb 25 23:18:53 2009  Tanaka Akira  <akr@f...>
 
 	* ext/socket/ancdata.c (ancillary_s_unix_rights): new method.
Index: ext/socket/ancdata.c
===================================================================
--- ext/socket/ancdata.c	(revision 22631)
+++ ext/socket/ancdata.c	(revision 22632)
@@ -241,8 +241,12 @@
 static VALUE
 ancillary_unix_rights(VALUE self)
 {
+#ifdef SCM_RIGHTS
     VALUE v = rb_attr_get(self, rb_intern("unix_rights"));
     return v;
+#else
+    rb_notimplement();
+#endif
 }
 
 /*
@@ -276,6 +280,7 @@
 static VALUE
 ancillary_timestamp(VALUE self)
 {
+#if defined(SCM_TIMESTAMP) || defined(SCM_TIMESTAMPNS) || defined(SCM_BINTIME)
     int level, type;
     VALUE data;
     VALUE result = Qnil;
@@ -284,25 +289,25 @@
     type = ancillary_type(self);
     data = ancillary_data(self);
 
-#ifdef SCM_TIMESTAMP
+# ifdef SCM_TIMESTAMP
     if (level == SOL_SOCKET && type == SCM_TIMESTAMP &&
         RSTRING_LEN(data) == sizeof(struct timeval)) {
         struct timeval tv;
         memcpy((char*)&tv, RSTRING_PTR(data), sizeof(tv));
         result = rb_time_new(tv.tv_sec, tv.tv_usec);
     }
-#endif
+# endif
 
-#ifdef SCM_TIMESTAMPNS
+# ifdef SCM_TIMESTAMPNS
     if (level == SOL_SOCKET && type == SCM_TIMESTAMPNS &&
         RSTRING_LEN(data) == sizeof(struct timespec)) {
         struct timespec ts;
         memcpy((char*)&ts, RSTRING_PTR(data), sizeof(ts));
         result = rb_time_nano_new(ts.tv_sec, ts.tv_nsec);
     }
-#endif
+# endif
 
-#ifdef SCM_BINTIME
+# ifdef SCM_BINTIME
     if (level == SOL_SOCKET && type == SCM_BINTIME &&
         RSTRING_LEN(data) == sizeof(struct bintime)) {
         struct bintime bt;
@@ -311,12 +316,15 @@
         bintime2timespec(&bt, &ts);
         result = rb_time_nano_new(ts.tv_sec, ts.tv_nsec);
     }
-#endif
+# endif
 
     if (result == Qnil)
         rb_raise(rb_eTypeError, "timestamp ancillary data expected");
 
     return result;
+#else
+    rb_notimplement();
+#endif
 }
 
 /*
@@ -1716,16 +1724,16 @@
     rb_define_method(rb_cAncillaryData, "type", ancillary_type_m, 0);
     rb_define_method(rb_cAncillaryData, "data", ancillary_data, 0);
 
+    rb_define_method(rb_cAncillaryData, "cmsg_is?", ancillary_cmsg_is_p, 2);
+
+    rb_define_singleton_method(rb_cAncillaryData, "int", ancillary_s_int, 4);
+    rb_define_method(rb_cAncillaryData, "int", ancillary_int, 0);
+
     rb_define_singleton_method(rb_cAncillaryData, "unix_rights", ancillary_s_unix_rights, -1);
     rb_define_method(rb_cAncillaryData, "unix_rights", ancillary_unix_rights, 0);
 
     rb_define_method(rb_cAncillaryData, "timestamp", ancillary_timestamp, 0);
 
-    rb_define_method(rb_cAncillaryData, "cmsg_is?", ancillary_cmsg_is_p, 2);
-
-    rb_define_singleton_method(rb_cAncillaryData, "int", ancillary_s_int, 4);
-    rb_define_method(rb_cAncillaryData, "int", ancillary_int, 0);
-
     rb_define_singleton_method(rb_cAncillaryData, "ip_pktinfo", ancillary_s_ip_pktinfo, -1);
     rb_define_method(rb_cAncillaryData, "ip_pktinfo", ancillary_ip_pktinfo, 0);
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]