ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/libstatgrab/error.c
Revision: 1.7
Committed: Wed Apr 7 21:08:40 2004 UTC (20 years, 1 month ago) by tdb
Content type: text/plain
Branch: MAIN
Changes since 1.6: +51 -17 lines
Log Message:
The rest of the error handling stuff (except the vector code).

I've been extremely unimaginative with the string names in error.c, but
they're all in one place so much easier to tidy up. I'm also beginning to
wonder if we actually needed an SG_ERROR_SYSTEM_CALL to indicate some call
into the system failed - because the majority of our errors are those :-)

Still to do, then:
 - vector code
 - better string names in error.c
 - deal with arg string in some way
 - make use of the error status in statgrab/saidar/examples

File Contents

# User Rev Content
1 tdb 1.1 /*
2     * i-scream libstatgrab
3     * http://www.i-scream.org
4     * Copyright (C) 2000-2004 i-scream
5     *
6     * This library is free software; you can redistribute it and/or
7     * modify it under the terms of the GNU Lesser General Public
8     * License as published by the Free Software Foundation; either
9     * version 2.1 of the License, or (at your option) any later version.
10     *
11     * This library is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14     * Lesser General Public License for more details.
15     *
16     * You should have received a copy of the GNU Lesser General Public
17     * License along with this library; if not, write to the Free Software
18     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
19     * 02111-1307 USA
20     *
21 tdb 1.7 * $Id: error.c,v 1.6 2004/04/07 19:26:16 tdb Exp $
22 tdb 1.1 */
23    
24     #ifdef HAVE_CONFIG_H
25     #include "config.h"
26     #endif
27    
28     #include <stdlib.h>
29    
30     #include "statgrab.h"
31    
32 ats 1.2 static sg_error error = SG_ERROR_NONE;
33 tdb 1.1
34     void sg_set_error(sg_error code, const char *arg) {
35     error = code;
36 ats 1.2 /* FIXME do something with arg */
37 tdb 1.1 }
38    
39     sg_error sg_get_error() {
40     return error;
41     }
42    
43 ats 1.2 const char *sg_str_error(sg_error code) {
44     switch (code) {
45     case SG_ERROR_NONE:
46     return "no error";
47 tdb 1.7 case SG_ERROR_ASPRINTF:
48     return "asprintf failed";
49     case SG_ERROR_DEVSTAT_GETDEVS:
50     return "devstat_getdevs failed";
51     case SG_ERROR_DEVSTAT_SELECTDEVS:
52     return "devstat_selectdevs failed";
53     case SG_ERROR_ENOENT:
54     return "system call received ENOENT";
55     case SG_ERROR_GETIFADDRS:
56     return "getifaddress failed";
57     case SG_ERROR_GETMNTINFO:
58     return "getmntinfo failed";
59     case SG_ERROR_GETPAGESIZE:
60     return "getpagesize failed";
61     case SG_ERROR_KSTAT_DATA_LOOKUP:
62     return "kstat_data_lookup failed";
63     case SG_ERROR_KSTAT_LOOKUP:
64     return "kstat_lookup failed";
65     case SG_ERROR_KSTAT_OPEN:
66     return "kstat_open failed";
67     case SG_ERROR_KSTAT_READ:
68     return "kstat_read failed";
69     case SG_ERROR_KVM_GETSWAPINFO:
70     return "kvm_getswapinfo failed";
71     case SG_ERROR_KVM_OPENFILES:
72     return "kvm_openfiles failed";
73 tdb 1.4 case SG_ERROR_MALLOC:
74     return "malloc failed";
75     case SG_ERROR_OPEN:
76     return "failed to open file";
77 tdb 1.7 case SG_ERROR_OPENDIR:
78     return "failed to open directory";
79 tdb 1.4 case SG_ERROR_PARSE:
80     return "failed to parse input";
81 tdb 1.7 case SG_ERROR_SETEGID:
82     return "setegid failed";
83     case SG_ERROR_SETEUID:
84     return "seteuid failed";
85 tdb 1.6 case SG_ERROR_SETMNTENT:
86     return "setmntent failed";
87 tdb 1.7 case SG_ERROR_SOCKET:
88     return "socket failed";
89     case SG_ERROR_SWAPCTL:
90     return "swapctl failed";
91     case SG_ERROR_SYSCONF:
92     return "sysconf failed";
93     case SG_ERROR_SYSCTL:
94     return "sysctl failed";
95     case SG_ERROR_SYSCTLBYNAME:
96     return "sysctlbyname failed";
97     case SG_ERROR_SYSCTLNAMETOMIB:
98     return "sysctlnametomib failed";
99     case SG_ERROR_UNAME:
100     return "uname failed";
101     case SG_ERROR_UNSUPPORTED:
102     return "unsupported function";
103     case SG_ERROR_XSW_VER_MISMATCH:
104     return "XSW version mismatch";
105 tdb 1.4 default:
106     return "unknown error";
107 ats 1.2 }
108 tdb 1.1 }
109