|
Revision 419, 1.1 kB
(checked in by nicholas, 10 months ago)
|
Jgraph: Debian changes by pzn@debian.org
|
| Line | |
|---|
| 1 |
/* |
|---|
| 2 |
**++ |
|---|
| 3 |
** FUNCTIONAL DESCRIPTION: |
|---|
| 4 |
** |
|---|
| 5 |
** Exit is a VMS replacement for the standard Unix exit function |
|---|
| 6 |
** |
|---|
| 7 |
** FORMAL PARAMETERS: |
|---|
| 8 |
** |
|---|
| 9 |
** error_code integer passed by value (optional) |
|---|
| 10 |
** |
|---|
| 11 |
** SIDE EFFECTS: |
|---|
| 12 |
** |
|---|
| 13 |
** Exit will never return to calling program |
|---|
| 14 |
** VMS exit status ($STATUS) will be set |
|---|
| 15 |
**-- |
|---|
| 16 |
**/ |
|---|
| 17 |
#include <stdarg.h> |
|---|
| 18 |
|
|---|
| 19 |
exit(va_alist) |
|---|
| 20 |
va_dcl |
|---|
| 21 |
{ |
|---|
| 22 |
int nargs; |
|---|
| 23 |
va_list va; |
|---|
| 24 |
int exit_code = 0; |
|---|
| 25 |
/* |
|---|
| 26 |
* Pick up the argument, if present |
|---|
| 27 |
*/ |
|---|
| 28 |
va_count(nargs); |
|---|
| 29 |
va_start(va); |
|---|
| 30 |
if (nargs > 0) exit_code = va_arg(va,int); |
|---|
| 31 |
/* |
|---|
| 32 |
* Set the VMS $STATUS to the appropriate value: |
|---|
| 33 |
* if exit_code == 0 then $STATUS := success |
|---|
| 34 |
* if exit_code > 0 then $STATUS := error |
|---|
| 35 |
* if exit_code < 0 then $STATUS := severe_error |
|---|
| 36 |
* and perform exit. |
|---|
| 37 |
* |
|---|
| 38 |
* Note: |
|---|
| 39 |
* the %X10000000 added to the actual success/error indicator |
|---|
| 40 |
* will prevent DCL from printing a message. |
|---|
| 41 |
* A 'on error' will be obeyed however. |
|---|
| 42 |
*/ |
|---|
| 43 |
if (exit_code == 0) /* success */ |
|---|
| 44 |
sys$exit(0x10000001); |
|---|
| 45 |
else if (exit_code > 0) /* error */ |
|---|
| 46 |
sys$exit(0x10000002); |
|---|
| 47 |
else /* severe error */ |
|---|
| 48 |
sys$exit(0x10000004); |
|---|
| 49 |
} |
|---|