author | yz157939@agc105 |
Fri, 25 Apr 2008 17:02:23 +0800 | |
changeset 147 | 8c4ef02c14b8 |
permissions | -rw-r--r-- |
147
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
1 |
/* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
2 |
* CDDL HEADER START |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
3 |
* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
4 |
* The contents of this file are subject to the terms of the |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
5 |
* Common Development and Distribution License (the "License"). |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
6 |
* You may not use this file except in compliance with the License. |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
7 |
* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
8 |
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
9 |
* or http://www.opensolaris.org/os/licensing. |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
10 |
* See the License for the specific language governing permissions |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
11 |
* and limitations under the License. |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
12 |
* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
13 |
* When distributing Covered Code, include this CDDL HEADER in each |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
14 |
* file and include the License file at usr/src/OPENSOLARIS.LICENSE. |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
15 |
* If applicable, add the following below this CDDL HEADER, with the |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
16 |
* fields enclosed by brackets "[]" replaced with your own identifying |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
17 |
* information: Portions Copyright [yyyy] [name of copyright owner] |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
18 |
* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
19 |
* CDDL HEADER END |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
20 |
*/ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
21 |
|
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
22 |
/* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
23 |
* Copyright 2008 Sun Microsystems, Inc. All rights reserved. |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
24 |
* Use is subject to license terms. |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
25 |
*/ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
26 |
|
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
27 |
|
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
28 |
#ifndef _FSEXAM_ERROR_H |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
29 |
#define _FSEXAM_ERROR_H |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
30 |
|
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
31 |
/* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
32 |
* If change any ERR_*, exec 'make clean' before 'make' |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
33 |
*/ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
34 |
typedef enum { |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
35 |
/* INFO */ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
36 |
ERR_OK = 0, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
37 |
ERR_NAME_UTF8_ALREADY, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
38 |
ERR_CONTENT_UTF8_ALREADY, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
39 |
ERR_NAME_SAME, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
40 |
/* ERROR */ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
41 |
ERR_ERROR, /* 1 */ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
42 |
ERR_FILE_NONEXIST, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
43 |
ERR_NO_MEMORY, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
44 |
ERR_ENCODING_INDEX_INVALID, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
45 |
ERR_CANNOT_OPEN, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
46 |
ERR_CANNOT_RENAME, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
47 |
ERR_CANNOT_WRITE, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
48 |
ERR_NO_PROPER_ENCODING, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
49 |
ERR_NOT_REG_FILE, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
50 |
ERR_SYMLINK_TARGET_NOEXIST, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
51 |
ERR_CANNOT_CONVERT, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
52 |
ERR_CANNOT_READ, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
53 |
ERR_NO_RIGHTS, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
54 |
ERR_CANNOT_RM_SYMLINK, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
55 |
ERR_LOST_SYMLINK_FILE, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
56 |
ERR_DRYRUN_FILE_INVALID, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
57 |
ERR_GET_CWD, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
58 |
ERR_CHDIR, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
59 |
/* WARNING */ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
60 |
ERR_WARNING, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
61 |
ERR_HIST_NO_ITEM, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
62 |
ERR_TREE_IS_EMPTY, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
63 |
ERR_NAME_EXIST, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
64 |
ERR_IGNORE_HIDDEN_FILE, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
65 |
ERR_IGNORE_REMOTE_FILE, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
66 |
ERR_EMPTY_FILE, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
67 |
ERR_NO_PARAMS, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
68 |
ERR_FILTER, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
69 |
ERR_FILE_TYPE_NOT_SUPPORT, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
70 |
ERR_BUFFER_OVERFLOW, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
71 |
ERR_CANCEL_CONVERSION, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
72 |
/* Won't write log */ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
73 |
ERR_WONNOT_LOG, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
74 |
ERR_CANNOT_WRITE_DRYRUN, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
75 |
ERR_CANNOT_OPEN_DRYRUN, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
76 |
ERR_CANNOT_CONVERT_TO_URI, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
77 |
/* Misc error */ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
78 |
ERR_MISC, |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
79 |
} ERROR_NO; |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
80 |
|
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
81 |
extern ERROR_NO fsexam_errno; |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
82 |
|
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
83 |
const char *fsexam_error_get_msg (void); |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
84 |
|
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
85 |
void _fsexam_perror (char *errnofile, int line, char *filename); |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
86 |
|
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
87 |
#define fsexam_perror(filename) \ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
88 |
do { \ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
89 |
_fsexam_perror (__FILE__, __LINE__, filename); \ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
90 |
}while (0) |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
91 |
|
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
92 |
/* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
93 |
* How to make one elegant error handling machanism? |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
94 |
* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
95 |
* - system error: errno need remember |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
96 |
* - custermized error: fsexam_errno |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
97 |
* - error context: such as |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
98 |
* - filename, may be more than one file |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
99 |
* - Sometime there is error occured, but we still have |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
100 |
* get some result, such as get_abs_path, we have get |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
101 |
* the abs path, but can't rechange to old_cwd |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
102 |
* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
103 |
* - buffer overflow: do we need check and report? |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
104 |
* - strlcpy, strlcat |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
105 |
* - fgets |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
106 |
* |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
107 |
* - Who need to check the input is NULL or not? |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
108 |
* - caller? |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
109 |
* - callee? |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
110 |
*/ |
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
111 |
|
8c4ef02c14b8
replace new version of fsexam, old version 0.3.1 is not used any more
yz157939@agc105
parents:
diff
changeset
|
112 |
#endif //_FSEXAM_ERROR_H |