Nek5000
SEM for Incompressible NS
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
fail.c
Go to the documentation of this file.
1 #include <stdio.h> /* sprintf, vfprintf, stdout */
2 #include <stdarg.h> /* va_list, va_start, ... */
3 #include <stdlib.h> /* exit */
4 #include <string.h> /* memcpy, and str* functions in comm_fail */
5 #include "name.h"
6 #include "fail.h"
7 #include "types.h"
8 #include "comm.h"
9 
10 #define nek_exitt FORTRAN_UNPREFIXED(exitt,EXITT)
11 void die(int status)
12 {
13 #ifdef NO_NEK_EXITT
14  if(comm_gbl_id==0) exit(status); else for(;;) ;
15 #else
16  nek_exitt();
17 #endif
18 }
19 
20 void vdiagnostic(const char *prefix, const char *file, unsigned line,
21  const char *fmt, va_list ap)
22 {
23  static char buf[2048]; int n,na,i=0;
24  sprintf(buf,"%s(proc %04d, %s:%d): ",prefix,(int)comm_gbl_id,file,line);
25  vsprintf(buf+strlen(buf),fmt,ap);
26  strcat(buf,"\n");
27  n=strlen(buf);
28  while(n && (na=fwrite(buf+i,1,n,stdout))) n-=na, i+=na;
29  fflush(stdout);
30 }
31 
32 void diagnostic(const char *prefix, const char *file, unsigned line,
33  const char *fmt, ...)
34 {
35  va_list ap; va_start(ap,fmt);
36  vdiagnostic(prefix,file,line,fmt,ap);
37  va_end(ap);
38 }
39 
40 void vfail(int status, const char *file, unsigned line,
41  const char *fmt, va_list ap)
42 {
43  vdiagnostic("ERROR ",file,line,fmt,ap);
44  die(status);
45 }
46 
47 void fail(int status, const char *file, unsigned line,
48  const char *fmt, ...)
49 {
50  va_list ap; va_start(ap,fmt);
51  vfail(status,file,line,fmt,ap);
52  va_end(ap);
53 }
#define nek_exitt
Definition: fail.c:10
#define comm_gbl_id
Definition: comm.h:80
n
Definition: xxt_test.m:73
void die(int status)
Definition: fail.c:11
void vfail(int status, const char *file, unsigned line, const char *fmt, va_list ap)
Definition: fail.c:40
void vdiagnostic(const char *prefix, const char *file, unsigned line, const char *fmt, va_list ap)
Definition: fail.c:20
for i
Definition: xxt_test.m:74
establishes some macros to establish naming conventions
void diagnostic(const char *prefix, const char *file, unsigned line, const char *fmt,...)
Definition: fail.c:32
void fail(int status, const char *file, unsigned line, const char *fmt,...)
Definition: fail.c:47