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(const char * fun, const char * file, int lineno, const 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(const char * fun, const char * file, int lineno, const 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 | } |
---|