Initial import
[py-rsbac] / rsbac / errors.py
1 # -*- coding:utf-8 -*-
2
3 # py-rsbac - RSBAC Python bindings
4 # Copyright (C) 2006  Frederic Jolliton <pyrsbac@tuxee.net>
5
6 # This program is free software; you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation; either version 2 of the License, or
9 # (at your option) any later version.
10
11 # This program 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
14 # GNU General Public License for more details.
15
16 # You should have received a copy of the GNU General Public License
17 # along with this program; if not, write to the Free Software
18 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
20 __all__ = [ 'Error' , 'raiseError' , 'raiseLastError' , 'raiseIfError' ]
21
22 import os
23
24 from rsbac.platform import getErrno
25
26 class Error( RuntimeError ) : pass
27
28 # FIXME: Build this list using get_error_name?
29 g_errors = {
30       1001 : 'RSBAC_EPERM'
31     , 1002 : 'RSBAC_EACCESS'
32     , 1003 : 'RSBAC_EREADFAILED'
33     , 1004 : 'RSBAC_EWRITEFAILED'
34     , 1005 : 'RSBAC_EINVALIDPOINTER'
35     , 1006 : 'RSBAC_ENOROOTDIR'
36     , 1007 : 'RSBAC_EPATHTOOLONG'
37     , 1008 : 'RSBAC_ENOROOTDEV'
38     , 1009 : 'RSBAC_ENOTFOUND'
39     , 1010 : 'RSBAC_ENOTINITIALIZED'
40     , 1011 : 'RSBAC_EREINIT'
41     , 1012 : 'RSBAC_ECOULDNOTADDDEVICE'
42     , 1013 : 'RSBAC_ECOULDNOTADDITEM'
43     , 1014 : 'RSBAC_ECOULDNOTCREATEPATH'
44     , 1015 : 'RSBAC_EINVALIDATTR'
45     , 1016 : 'RSBAC_EINVALIDDEV'
46     , 1017 : 'RSBAC_EINVALIDTARGET'
47     , 1018 : 'RSBAC_EINVALIDVALUE'
48     , 1019 : 'RSBAC_EEXISTS'
49     , 1020 : 'RSBAC_EINTERNONLY'
50     , 1021 : 'RSBAC_EINVALIDREQUEST'
51     , 1022 : 'RSBAC_ENOTWRITABLE'
52     , 1023 : 'RSBAC_EMALWAREDETECTED'
53     , 1024 : 'RSBAC_ENOMEM'
54     , 1025 : 'RSBAC_EDECISIONMISMATCH'
55     , 1026 : 'RSBAC_EINVALIDVERSION'
56     , 1027 : 'RSBAC_EINVALIDMODULE'
57     , 1028 : 'RSBAC_EEXPIRED'
58     , 1029 : 'RSBAC_EMUSTCHANGE'
59     , 1030 : 'RSBAC_EBUSY'
60     , 1031 : 'RSBAC_EINVALIDTRANSACTION'
61     , 1032 : 'RSBAC_EWEAKPASSWORD'
62 }
63
64 def raiseError( n ) :
65     msg = g_errors.get( n )
66     if msg is None :
67         msg = os.strerror( n )
68     raise Error( n , msg )
69
70 def raiseLastError( error = -1 ) :
71     if error == -1 :
72         error = getErrno()
73     else :
74         error = -error
75     raiseError( error )
76
77 def raiseIfError( n ) :
78     if n < 0 :
79         raiseLastError( n )
80     return n
81
82 # Local Variables:
83 # indent-tabs-mode: nil
84 # python-indent: 4
85 # End: