I've checked in the hunk that is a bug fix for do_tovmsspec() as #25759. Thanks.
The exit handling parts of the patch seem like mostly the right thing to do and should be applicable with a bit of clean-up and minor changes. I've tested it under Mac OS X and it introduces no test failures so we're good from that standpoint. A few remarks on the patch and related matters in no particular order. At a minimum, the documentation of C<$?> and C<$^E> in perlvms.pod and the C<exit> entry in perlport.pod will need updating. I won't be checking in code that is commented out. If it's not ready for prime time then we shouldn't clutter up the sources with it, and if we need to get back to an older version later, that's why we've got version control. I'm not sure perl.h is a good place for a longish discussion of VMS condition codes. In fact I'm rather sure it's not. This should probably be in perlvms.pod or perlport.pod and the comments in the code should just point to that. At 1:49 AM -0400 10/14/05, John E. Malmberg wrote: >+ * vaxc$errno is only suppose to be valid if errno == EVMSERR, otherwise >+ * it's contents can not be trusted. That's what the CRTL does, not what Perl does. There are many, many cases where we set vaxc$errno even when errno is not EVMSERR. The documented behavior of $^E depends on that. Obviously there is no guarantee vaxc$errno will always have something interesting in it, but as far as I know it's always either set appropriately or cleared (by both the CRTL and by Perl) so there is no danger of getting a stale, unrelated value. I think we should be careful that calls to unix_status_to_vms() do not wipe out potentially more precise values that may already be in vaxc$errno. >+ >+ /* Fixme: Per official UNIX specification: If pid = 0, or negative then >+ * signals are to be sent to multiple processes. >+ * pid = 0 - all processes in group except ones that the system exempts >+ * pid = -1 - all processes except ones that the system exempts >+ * pid = -n - all processes in group (abs(n)) except ... >+ * For now, just lie and say the user has no privileges. >+ */ >+ >+ if (pid <= 0) { >+ errno = EPERM; >+ vaxc$errno = SS$_NOPRIV; IMO this should be SETERRNO(ENOTSUP, SS$_UNSUPPORTED); > return -1; > } > -- ________________________________________ Craig A. Berry mailto:[EMAIL PROTECTED] "... getting out of a sonnet is much more difficult than getting in." Brad Leithauser