Fwd: CPAN Upload: JPRIT/Event-0.77.tar.gz

[email protected] (Joshua N Pritikin)
Newsgroups perl.loop
Message-ID <[email protected]>
----- Forwarded message from [email protected] -----

Date: Fri, 12 May 2000 15:02:55 +0200
Subject: CPAN Upload: JPRIT/Event-0.77.tar.gz
From: [email protected]
To: [email protected],
    [email protected]

The uploaded file

    Event-0.77.tar.gz

has entered CPAN as

  file: $CPAN/authors/id/JPRIT/Event-0.77.tar.gz
  size: 148538 bytes
   md5: fbcc4a392dcd6e9ea0a9ed923b24bac3

No action is required on your part
Request entered by: JPRIT (Joshua N. Pritikin)
Request entered on: Fri, 12 May 2000 13:02:11 GMT
Request completed:  Fri, 12 May 2000 13:02:55 GMT

	Virtually Yours,
	Id: paused,v 1.68 1999/10/22 14:39:12 k Exp k 


----- End forwarded message -----

# This is a patch for Event-0.76 to update it to Event-0.77
# 
# To apply this patch:
# STEP 1: Chdir to the source directory.
# STEP 2: Run the 'applypatch' program with this patch file as input.
#
# If you do not have 'applypatch', it is part of the 'makepatch' package
# that you can fetch from the Comprehensive Perl Archive Network:
# http://www.perl.com/CPAN/authors/Johan_Vromans/makepatch-x.y.tar.gz
# In the above URL, 'x' should be 2 or higher.
#
# To apply this patch without the use of 'applypatch':
# STEP 1: Chdir to the source directory.
# STEP 2: Run the 'patch' program with this file as input.
#
#### End of Preamble ####

#### Patch data follows ####
gdiff -up '/usr/tmp/mp5615.d/old/Event-0.76/ChangeLog' '/usr/tmp/mp5615.d/new/Event-0.77/ChangeLog'
Index: ./ChangeLog
--- ./ChangeLog	Wed Apr 26 13:13:37 2000
+++ ./ChangeLog	Fri May 12 08:18:06 2000
@@ -1,3 +1,13 @@
+2000-05-12  Joshua Pritikin  <[email protected]>
+
+	* Release 0.77.
+
+2000-05-10  Joshua Pritikin  <[email protected]>
+
+	* Fixed an obscure SEGV discovered by [email protected].
+
+	* EventAPI += NVtime.
+
 2000-04-26  Joshua Pritikin  <[email protected]>
 
 	* Release 0.76.
gdiff -up '/usr/tmp/mp5615.d/old/Event-0.76/Event.xs' '/usr/tmp/mp5615.d/new/Event-0.77/Event.xs'
Index: ./Event.xs
--- ./Event.xs	Wed Apr 26 16:08:04 2000
+++ ./Event.xs	Wed May 10 17:22:09 2000
@@ -40,6 +40,31 @@ static void Event_warn(const char* pat, 
 #  define warn Event_warn
 #endif
 
+/* this is not well tested but could be very useful for debugging */
+#if 0
+#ifdef warn
+#  undef warn
+#endif
+#define warn Event_warn
+
+static void Event_warn(const char* pat, ...) {
+    STRLEN n_a;
+    dSP;
+    SV *msg;
+    va_list args;
+    /* perl_require_pv("Carp.pm");     Couldn't possibly be unloaded.*/
+    va_start(args, pat);
+    msg = sv_newmortal();
+    sv_vsetpvfn(msg, pat, strlen(pat), &args, Null(SV**), 0, 0);
+    va_end(args);
+    SvREADONLY_on(msg);
+    PUSHMARK(SP);
+    XPUSHs(msg);
+    PUTBACK;
+    perl_call_pv("Carp::carp", G_DISCARD);
+}
+#endif
+
 #ifdef croak
 #  undef croak
 #endif
@@ -131,8 +156,8 @@ static pe_event_stats_vtbl Estat;
 static double IntervalEpsilon = 0.0002;
 static int TimeoutTooEarly=0;
 
-static double (*myNVtime)();
-#define NVtime() (*myNVtime)()
+static struct EventAPI api;
+#define NVtime() (*api.NVtime)()
 
 static int pe_sys_fileno(SV *sv, char *context);
 
@@ -279,36 +304,34 @@ BOOT:
   boot_group();
   boot_queue();
   {
-      struct EventAPI *api;
       SV *apisv;
-      New(PE_NEWID, api, 1, struct EventAPI);
-      api->Ver = EventAPI_VERSION;
-      api->start = pe_watcher_start;
-      api->queue = queueEvent;
-      api->now = pe_watcher_now;
-      api->suspend = pe_watcher_suspend;
-      api->resume = pe_watcher_resume;
-      api->stop = pe_watcher_stop;
-      api->cancel = pe_watcher_cancel;
-      api->tstart = pe_timeable_start;
-      api->tstop  = pe_timeable_stop;
-      api->new_idle =   (pe_idle*  (*)(HV*,SV*))    pe_idle_allocate;
-      api->new_timer =  (pe_timer* (*)(HV*,SV*))    pe_timer_allocate;
-      api->new_io =     (pe_io*    (*)(HV*,SV*))    pe_io_allocate;
-      api->new_var =    (pe_var*   (*)(HV*,SV*))    pe_var_allocate;
-      api->new_signal = (pe_signal*(*)(HV*,SV*))    pe_signal_allocate;
-      api->add_hook = capi_add_hook;
-      api->cancel_hook = pe_cancel_hook;
-      api->install_stats = pe_install_stats;
-      api->collect_stats = pe_collect_stats;
-      api->AllWatchers = &AllWatchers;
-      api->watcher_2sv = watcher_2sv;
-      api->sv_2watcher = sv_2watcher;
-      api->event_2sv = event_2sv;
-      api->sv_2event = sv_2event;
-      api->unloop = pe_unloop;
+      api.Ver = EventAPI_VERSION;
+      api.start = pe_watcher_start;
+      api.queue = queueEvent;
+      api.now = pe_watcher_now;
+      api.suspend = pe_watcher_suspend;
+      api.resume = pe_watcher_resume;
+      api.stop = pe_watcher_stop;
+      api.cancel = pe_watcher_cancel;
+      api.tstart = pe_timeable_start;
+      api.tstop  = pe_timeable_stop;
+      api.new_idle =   (pe_idle*  (*)(HV*,SV*))    pe_idle_allocate;
+      api.new_timer =  (pe_timer* (*)(HV*,SV*))    pe_timer_allocate;
+      api.new_io =     (pe_io*    (*)(HV*,SV*))    pe_io_allocate;
+      api.new_var =    (pe_var*   (*)(HV*,SV*))    pe_var_allocate;
+      api.new_signal = (pe_signal*(*)(HV*,SV*))    pe_signal_allocate;
+      api.add_hook = capi_add_hook;
+      api.cancel_hook = pe_cancel_hook;
+      api.install_stats = pe_install_stats;
+      api.collect_stats = pe_collect_stats;
+      api.AllWatchers = &AllWatchers;
+      api.watcher_2sv = watcher_2sv;
+      api.sv_2watcher = sv_2watcher;
+      api.event_2sv = event_2sv;
+      api.sv_2event = sv_2event;
+      api.unloop = pe_unloop;
       apisv = perl_get_sv("Event::API", 1);
-      sv_setiv(apisv, (IV)api);
+      sv_setiv(apisv, (IV)&api);
       SvREADONLY_on(apisv);
   }
 
@@ -370,7 +393,7 @@ cache_time_api()
 	SV **svp = hv_fetch(PL_modglobal, "Time::NVtime", 12, 0);
 	if (!svp || !*svp || !SvIOK(*svp))
 	    XSRETURN_NO;
-	myNVtime = (double(*)()) SvIV(*svp);
+	api.NVtime = (double(*)()) SvIV(*svp);
 	XSRETURN_YES;
 
 void
gdiff -up '/usr/tmp/mp5615.d/old/Event-0.76/TODO' '/usr/tmp/mp5615.d/new/Event-0.77/TODO'
Index: ./TODO
--- ./TODO	Mon Apr 24 09:42:25 2000
+++ ./TODO	Mon May  8 11:15:09 2000
@@ -1,5 +1,3 @@
-integrate with IPC::Open2/3
-
 finish up lexical warnings
 
 omitting parked=>1 should be a warning, not an error?
gdiff -up '/usr/tmp/mp5615.d/old/Event-0.76/c/watcher.c' '/usr/tmp/mp5615.d/new/Event-0.77/c/watcher.c'
Index: ./c/watcher.c
--- ./c/watcher.c	Mon Apr 24 09:37:24 2000
+++ ./c/watcher.c	Wed May 10 17:05:48 2000
@@ -116,6 +116,11 @@ WKEYMETH(_watcher_callback) {
 		if (gv && isGV(gv))
 		    ok=1;
 	    }
+	    else {
+		warn("Event: package '%s' doesn't exist (creating)",
+		     SvPV(pkgsv, n_a));
+		pkg = gv_stashsv(pkgsv, 1);
+	    }
 	    if (!ok) {
 		warn("Event: callback method %s->%s doesn't exist",
 		     HvNAME(pkg), name);
gdiff -up '/usr/tmp/mp5615.d/old/Event-0.76/lib/Event.pm' '/usr/tmp/mp5615.d/new/Event-0.77/lib/Event.pm'
Index: ./lib/Event.pm
--- ./lib/Event.pm	Wed Apr 26 13:13:50 2000
+++ ./lib/Event.pm	Fri May 12 08:17:03 2000
@@ -13,7 +13,7 @@ use Carp;
 eval { require Carp::Heavy; };  # work around perl_call_pv bug XXX
 use vars qw($VERSION @EXPORT_OK
 	    $API $DebugLevel $Eval $DIED $Now);
-$VERSION = '0.76';
+$VERSION = '0.77';
 
 # If we inherit DynaLoader then we inherit AutoLoader; Bletch!
 require DynaLoader;
gdiff -up '/usr/tmp/mp5615.d/old/Event-0.76/lib/Event.pod' '/usr/tmp/mp5615.d/new/Event-0.77/lib/Event.pod'
Index: ./lib/Event.pod
--- ./lib/Event.pod	Mon Apr 24 09:26:26 2000
+++ ./lib/Event.pod	Mon May  8 11:16:20 2000
@@ -681,6 +681,8 @@ There seems to be some sort of bug in th
 
 =head2 WHY MICROSOFT WINDOWS MIGHT BE FASTER THAN UNIX
 
+This section is concerned with advanced kernel architecture.
+
 B<A scalable and explicit event delivery mechanism for UNIX>
 
 I<Abstract:> UNIX applications not wishing to block when doing I/O often
gdiff -up '/usr/tmp/mp5615.d/old/Event-0.76/lib/Event/EventAPI.h' '/usr/tmp/mp5615.d/new/Event-0.77/lib/Event/EventAPI.h'
Index: ./lib/Event/EventAPI.h
--- ./lib/Event/EventAPI.h	Tue Apr 25 13:37:56 2000
+++ ./lib/Event/EventAPI.h	Wed May 10 10:41:16 2000
@@ -211,6 +211,7 @@ struct EventAPI {
 
     /* EVERYTHING ELSE */
     void (*unloop)(SV *);
+    double (*NVtime)();
 };
 
 static struct EventAPI *GEventAPI=0;
#### End of Patch data ####

#### ApplyPatch data follows ####
# Data version        : 1.0
# Date generated      : Fri May 12 09:01:18 2000
# Generated by        : makepatch 2.00 (2.0BETA)
# Recurse directories : Yes
# p 'ChangeLog' 25474 958133886 0100444
# p 'Event.xs' 18615 957993729 0100444
# p 'TODO' 1775 957798909 0100444
# p 'c/watcher.c' 9400 957992748 0100444
# p 'lib/Event.pm' 4074 958133823 0100444
# p 'lib/Event.pod' 24978 957798980 0100444
# p 'lib/Event/EventAPI.h' 5624 957969676 0100444
#### End of ApplyPatch data ####

#### End of Patch kit [created: Fri May 12 09:01:18 2000] ####
#### Checksum: 236 8131 25869 ####
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.