mirror of
https://bitbucket.org/cosmicvoids/vide_public.git
synced 2025-07-04 23:31:12 +00:00
Added missing libsw library
This commit is contained in:
parent
dd5e51c09c
commit
9dff8cfb5a
57 changed files with 13454 additions and 0 deletions
201
external/libsdf/libsw/error.c
vendored
Normal file
201
external/libsdf/libsw/error.c
vendored
Normal file
|
@ -0,0 +1,201 @@
|
|||
/*
|
||||
* Copyright 1991 Michael S. Warren and John K. Salmon. All Rights Reserved.
|
||||
*/
|
||||
#ifdef __SRV__
|
||||
# error This file should not use SRV
|
||||
#endif
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
#include "error.h"
|
||||
#include "Msgs.h"
|
||||
#include "mpmy.h"
|
||||
#include "mpmy_abnormal.h"
|
||||
#include "gccextensions.h"
|
||||
#include "protos.h"
|
||||
#include "memfile.h"
|
||||
|
||||
#undef Error
|
||||
#undef SinglError
|
||||
#undef Warning
|
||||
#undef SinglWarning
|
||||
#undef SeriousWarning
|
||||
#undef Shout
|
||||
#undef SinglShout
|
||||
|
||||
static int recursion;
|
||||
|
||||
/* We call this SWError because of a namespace conflict when linking SDF
|
||||
into perl5. error.h should do the switcheroo automatically... */
|
||||
void SWError(const char * mesg, ...)
|
||||
{
|
||||
va_list alist;
|
||||
|
||||
if( recursion++ )
|
||||
MPMY_SystemAbort(); /* errors within errors. A very bad sign */
|
||||
|
||||
va_start(alist, mesg);
|
||||
fprintf(stderr, "ERROR: Node %d (%s) ", MPMY_Procnum(), MPMY_Physnode());
|
||||
vfprintf(stderr, mesg, alist);
|
||||
fflush(stderr);
|
||||
va_end(alist);
|
||||
Msg_do("ERROR: ");
|
||||
va_start(alist, mesg);
|
||||
Msg_doalist(mesg, alist);
|
||||
va_end(alist);
|
||||
Msg_flush();
|
||||
MPMY_Abort();
|
||||
}
|
||||
|
||||
/* Is this right? Is it even possible? Can I pass the same va_list
|
||||
to two different subroutines? I can't use va_start and va_end because
|
||||
this isn't a varargs function! It works in Msgs, so it ought to work
|
||||
here too.*/
|
||||
void vError(const char * mesg, va_list alist)
|
||||
{
|
||||
if( recursion++ )
|
||||
MPMY_SystemAbort(); /* errors within errors. A very bad sign */
|
||||
|
||||
fprintf(stderr, "ERROR: Node %d (%s) ", MPMY_Procnum(), MPMY_Physnode());
|
||||
vfprintf(stderr, mesg, alist);
|
||||
fflush(stderr);
|
||||
|
||||
Msg_do("ERROR: ");
|
||||
Msg_doalist(mesg, alist);
|
||||
Msg_flush();
|
||||
PrintMemfile();
|
||||
MPMY_Abort();
|
||||
}
|
||||
|
||||
void SinglError(const char * mesg, ...)
|
||||
{
|
||||
va_list alist;
|
||||
|
||||
if( recursion++ )
|
||||
MPMY_SystemAbort();
|
||||
if( MPMY_Procnum() == 0 ){
|
||||
va_start(alist, mesg);
|
||||
fprintf(stderr, "Single ERROR: ");
|
||||
vfprintf(stderr, mesg, alist);
|
||||
fflush(stderr);
|
||||
va_end(alist);
|
||||
Msg_do("Single ERROR: ");
|
||||
va_start(alist, mesg);
|
||||
Msg_doalist(mesg, alist);
|
||||
va_end(alist);
|
||||
PrintMemfile();
|
||||
Msg_flush();
|
||||
}
|
||||
MPMY_Abort();
|
||||
}
|
||||
|
||||
void
|
||||
Warning(const char *mesg, ...)
|
||||
{
|
||||
va_list alist;
|
||||
|
||||
if( recursion++ ){
|
||||
--recursion;
|
||||
return;
|
||||
}
|
||||
Msg_do("WARNING: ");
|
||||
va_start(alist, mesg);
|
||||
Msg_doalist(mesg, alist);
|
||||
va_end(alist);
|
||||
Msg_flush();
|
||||
--recursion;
|
||||
}
|
||||
|
||||
void
|
||||
SinglWarning(const char *mesg, ...)
|
||||
{
|
||||
va_list alist;
|
||||
|
||||
if( recursion++ ){
|
||||
--recursion;
|
||||
return;
|
||||
}
|
||||
if( MPMY_Procnum() == 0 ){
|
||||
/* Since there's only one, it's safe to send it to stderr too... */
|
||||
va_start(alist, mesg);
|
||||
fprintf(stderr, "WARNING: (single): ");
|
||||
vfprintf(stderr, mesg, alist);
|
||||
fflush(stderr);
|
||||
va_end(alist);
|
||||
Msg_do("WARNING (Single mode): ");
|
||||
va_start(alist, mesg);
|
||||
Msg_doalist(mesg, alist);
|
||||
va_end(alist);
|
||||
Msg_flush();
|
||||
}
|
||||
--recursion;
|
||||
}
|
||||
|
||||
/* This one goes to stderr, for all to see immediately */
|
||||
void
|
||||
SeriousWarning(const char *mesg, ...)
|
||||
{
|
||||
va_list alist;
|
||||
|
||||
if( recursion++ ){
|
||||
--recursion;
|
||||
return;
|
||||
}
|
||||
va_start(alist, mesg);
|
||||
fprintf(stderr, "WARNING: Node %d ", MPMY_Procnum());
|
||||
vfprintf(stderr, mesg, alist);
|
||||
fflush(stderr);
|
||||
va_end(alist);
|
||||
Msg_do("WARNING: ");
|
||||
va_start(alist, mesg);
|
||||
Msg_doalist(mesg, alist);
|
||||
va_end(alist);
|
||||
Msg_flush();
|
||||
--recursion;
|
||||
}
|
||||
|
||||
/* No "WARNING", no line numbers, etc... Just the arguments */
|
||||
void
|
||||
Shout(const char *mesg, ...)
|
||||
{
|
||||
va_list alist;
|
||||
|
||||
if( recursion++ ){
|
||||
--recursion;
|
||||
return;
|
||||
}
|
||||
va_start(alist, mesg);
|
||||
vfprintf(stderr, mesg, alist);
|
||||
fflush(stderr);
|
||||
va_end(alist);
|
||||
va_start(alist, mesg);
|
||||
Msg_doalist(mesg, alist);
|
||||
va_end(alist);
|
||||
Msg_flush();
|
||||
--recursion;
|
||||
}
|
||||
|
||||
void
|
||||
SinglShout(const char *mesg, ...)
|
||||
{
|
||||
va_list alist;
|
||||
|
||||
if( recursion++ ){
|
||||
--recursion;
|
||||
return;
|
||||
}
|
||||
if( MPMY_Procnum() == 0 ){
|
||||
va_start(alist, mesg);
|
||||
vfprintf(stderr, mesg, alist);
|
||||
fflush(stderr);
|
||||
va_end(alist);
|
||||
va_start(alist, mesg);
|
||||
Msg_doalist(mesg, alist);
|
||||
va_end(alist);
|
||||
Msg_flush();
|
||||
}
|
||||
--recursion;
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue