bug fix
[satlib.git] / zchaff64 / zchaff_utils.cpp
1 // *********************************************************************
2 // Copyright 2000-2004, Princeton University.  All rights reserved.
3 // By using this software the USER indicates that he or she has read,
4 // understood and will comply with the following:
5 //
6 // --- Princeton University hereby grants USER nonexclusive permission
7 // to use, copy and/or modify this software for internal, noncommercial,
8 // research purposes only. Any distribution, including commercial sale
9 // or license, of this software, copies of the software, its associated
10 // documentation and/or modifications of either is strictly prohibited
11 // without the prior consent of Princeton University.  Title to copyright
12 // to this software and its associated documentation shall at all times
13 // remain with Princeton University.  Appropriate copyright notice shall
14 // be placed on all software copies, and a complete copy of this notice
15 // shall be included in all copies of the associated documentation.
16 // No right is  granted to use in advertising, publicity or otherwise
17 // any trademark,  service mark, or the name of Princeton University.
18 //
19 //
20 // --- This software and any associated documentation is provided "as is"
21 //
22 // PRINCETON UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS
23 // OR IMPLIED, INCLUDING THOSE OF MERCHANTABILITY OR FITNESS FOR A
24 // PARTICULAR PURPOSE, OR THAT  USE OF THE SOFTWARE, MODIFICATIONS, OR
25 // ASSOCIATED DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS,
26 // TRADEMARKS OR OTHER INTELLECTUAL PROPERTY RIGHTS OF A THIRD PARTY.
27 //
28 // Princeton University shall not be liable under any circumstances for
29 // any direct, indirect, special, incidental, or consequential damages
30 // with respect to any claim by USER or any third party on account of
31 // or arising from the use, or inability to use, this software or its
32 // associated documentation, even if Princeton University has been advised
33 // of the possibility of those damages.
34 // *********************************************************************
35
36 #include <stdio.h>
37 #include <stdarg.h>
38 #include <stdlib.h>
39 #include <unistd.h>
40 #include <sys/time.h>
41 #include <sys/resource.h>
42
43 int _global_debug_leveli = 0;
44
45 int _global_check_level = 0;
46
47 void fatal(char * fun, char * file, int lineno, char * fmt, ...) {
48   va_list ap;
49   fprintf(stderr, "***");
50   if (fun)
51     fprintf(stderr, " in %s", fun);
52   if (file)
53     fprintf(stderr, " at %s", file);
54   if (lineno)
55     fprintf(stderr, ":%d", lineno);
56   fprintf(stderr, " ");
57   va_start(ap, fmt);
58   vfprintf(stderr, fmt, ap);
59   va_end(ap);
60   fflush(stderr);
61   exit(1);
62 }
63
64 void warning(char * fun, char * file, int lineno, char * fmt, ...) {
65   va_list ap;
66   fprintf(stderr, "***");
67   if (fun)
68     fprintf(stderr, " in %s", fun);
69   if (file)
70     fprintf(stderr, " at %s", file);
71   if (lineno)
72     fprintf(stderr, ":%d", lineno);
73   fprintf(stderr, " ");
74
75   va_start(ap, fmt);
76   vfprintf(stderr, fmt, ap);
77   va_end(ap);
78   fflush(stderr);
79 }
80
81 double get_cpu_time(void) {
82   double res;
83   struct rusage usage;
84   getrusage(RUSAGE_SELF, &usage);
85   res = usage.ru_utime.tv_usec + usage.ru_stime.tv_usec;
86   res *= 1e-6;
87   res += usage.ru_utime.tv_sec + usage.ru_stime.tv_sec;
88   return res;
89 }