bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: VMS progname and exit handling - Take 4


From: John E. Malmberg
Subject: Re: VMS progname and exit handling - Take 4
Date: Mon, 31 Mar 2014 23:41:23 -0500
User-agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:17.0) Gecko/20130215 Thunderbird/17.0.3

On 3/31/2014 12:48 PM, h.becker wrote:
On 03/31/2014 06:46 AM, John E. Malmberg wrote:
This has the makefile changes needed to build from master and on VAX/VMS.

In addition, vms_progname.c that is compatible as a VMS specific
replacement for the progname.c that is used for several GNU projects.

This variant of vms_progname.c has an additional feature that it
temporarily creates a foreign command that make uses for a macro to
represent the command that invoked make.  This foreign command has no
embedded spaces or dollar sign characters which could cause unexpected
results if further string processing is done.

The vms_exit() is similar to the /DEFINE=_POSIX_EXIT, except that it
allows pass-through of VMS exit statuses of 8 or higher, and allows
setting the SEVERITY and message inhibit settings for the encoded Posix
status.  The message inhibit bits prevents the DCL shell from
re-displaying status messages that have already been displayed.

Additional work needs to be done to convert POSIX encoded child exit
statuses back to the original Unix status internally.  This is usually
handled by the /DEFINE=_POSIX_EXIT.

We are not simply using the /DEFINE=_POSIX_EXIT as it does not support
mixing the VMS exit codes and Unix exit codes, along with setting
special VMS status bits.

It seems I need more than this patch to compile a test version. It seems
this needs to be applied on top of a previous patch, or?

I was missing the changed main.c and makeint.h.  New patch includes them.

This patch was based on a branch made directly from master.

Again, this looks like a lot of code to set the program name and to
handle the exit code. And I'm still not convinced that defining a DCL
symbol and deleting it at image exit is the right thing to do. As far as
I can see, it can be simpler than that.

If you have the make variable be a MCR command, it has a space which can have side effects when if the resulting string is processed by other strings or macros.

With ODS-5 format filenames, the sys$filescan system service is the most reliable way detect and parse a VMS filename. This adds to the complexity. The other complexity is working around some bugs in how the C pre-main function renders the Unix format filenames.

Regards,
-John

Attachment: 0001-VMS-progname-and-exit-handling-take-5.patch.gz
Description: application/gzip


reply via email to

[Prev in Thread] Current Thread [Next in Thread]