----- 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 ####