From 0ebbfee56ed822b95d6fb0b5a5ab7361de4f5f1a Mon Sep 17 00:00:00 2001 From: Elliot Nunn Date: Wed, 19 Sep 2018 23:54:50 +0800 Subject: [PATCH] error checking --- main.c | 316 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 213 insertions(+), 103 deletions(-) diff --git a/main.c b/main.c index 2716277..88acd5f 100644 --- a/main.c +++ b/main.c @@ -15,24 +15,31 @@ #define PY_SSIZE_T_CLEAN 1 #include -static const char NAME_HFSVOL[] = "hfsvol"; -static const char NAME_HFSDIR[] = "hfsdir"; -static const char NAME_HFSFILE[] = "hfsfile"; +#define NAME_HFSVOL "hfsvol" +#define NAME_HFSDIR "hfsdir" +#define NAME_HFSFILE "hfsfile" static PyObject *wrap_mount(PyObject *self, PyObject *args) { char *arg_path; int arg_pnum; int arg_flags; - if(!PyArg_ParseTuple(args, "sii", &arg_path, &arg_pnum, &arg_flags)) return NULL; - return PyCapsule_New((void *)hfs_mount(arg_path, arg_pnum, arg_flags), NAME_HFSVOL, NULL); + if(!PyArg_ParseTuple(args, "sii", &arg_path, &arg_pnum, &arg_flags)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} + hfsvol *ret = hfs_mount(arg_path, arg_pnum, arg_flags); + if(!ret) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} + return PyCapsule_New((void *)ret, NAME_HFSVOL, NULL); } static PyObject *wrap_flush(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; - if(!PyArg_ParseTuple(args, "O", &arg_vol_c)) return NULL; + if(!PyArg_ParseTuple(args, "O", &arg_vol_c)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_flush(arg_vol)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_flush(arg_vol)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } @@ -45,10 +52,13 @@ static PyObject *wrap_flushall(PyObject *self, PyObject *args) static PyObject *wrap_umount(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; - if(!PyArg_ParseTuple(args, "O", &arg_vol_c)) return NULL; + if(!PyArg_ParseTuple(args, "O", &arg_vol_c)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_umount(arg_vol)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_umount(arg_vol)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } @@ -61,16 +71,22 @@ static PyObject *wrap_umountall(PyObject *self, PyObject *args) static PyObject *wrap_getvol(PyObject *self, PyObject *args) { char *arg_vol; - if(!PyArg_ParseTuple(args, "y", &arg_vol)) return NULL; - return PyCapsule_New((void *)hfs_getvol(arg_vol), NAME_HFSVOL, NULL); + if(!PyArg_ParseTuple(args, "y", &arg_vol)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} + hfsvol *ret = hfs_getvol(arg_vol); + if(!ret) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} + return PyCapsule_New((void *)ret, NAME_HFSVOL, NULL); } static PyObject *wrap_setvol(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; - if(!PyArg_ParseTuple(args, "O", &arg_vol_c)) return NULL; + if(!PyArg_ParseTuple(args, "O", &arg_vol_c)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} hfs_setvol(arg_vol); return Py_None; } @@ -79,50 +95,65 @@ static PyObject *wrap_vstat(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; hfsvolent ret_volent; - if(!PyArg_ParseTuple(args, "O", &arg_vol_c)) return NULL; + if(!PyArg_ParseTuple(args, "O", &arg_vol_c)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_vstat(arg_vol, &ret_volent)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_vstat(arg_vol, &ret_volent)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_BuildValue("y#", (char *)(&ret_volent), sizeof(ret_volent)); } static PyObject *wrap_vsetattr(PyObject *self, PyObject *args) // problems { hfsvol *arg_vol; PyObject *arg_vol_c; hfsvolent *arg_ent; Py_ssize_t arg_ent_len; - if(!PyArg_ParseTuple(args, "Oy#", &arg_vol_c, &arg_ent, &arg_ent_len)) return NULL; - if(arg_ent_len != sizeof(*arg_ent)) return NULL; + if(!PyArg_ParseTuple(args, "Oy#", &arg_vol_c, &arg_ent, &arg_ent_len)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} + if(arg_ent_len != sizeof(*arg_ent)) + {PyErr_SetString(PyExc_ValueError, "struct wrong len"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_vsetattr(arg_vol, arg_ent)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_vsetattr(arg_vol, arg_ent)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } static PyObject *wrap_chdir(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; char *arg_path; - if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) return NULL; + if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_chdir(arg_vol, arg_path)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_chdir(arg_vol, arg_path)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } static PyObject *wrap_getcwd(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; - if(!PyArg_ParseTuple(args, "O", &arg_vol_c)) return NULL; + if(!PyArg_ParseTuple(args, "O", &arg_vol_c)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} return Py_BuildValue("l", hfs_getcwd(arg_vol)); } static PyObject *wrap_setcwd(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; long arg_id; - if(!PyArg_ParseTuple(args, "Ol", &arg_vol_c, &arg_id)) return NULL; + if(!PyArg_ParseTuple(args, "Ol", &arg_vol_c, &arg_id)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_setcwd(arg_vol, arg_id)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_setcwd(arg_vol, arg_id)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } @@ -130,40 +161,54 @@ static PyObject *wrap_dirinfo(PyObject *self, PyObject *args) // returns name in { hfsvol *arg_vol; PyObject *arg_vol_c; unsigned long argret_id; char ret_name[32]; - if(!PyArg_ParseTuple(args, "Ok", &arg_vol_c, &argret_id)) return NULL; + if(!PyArg_ParseTuple(args, "Ok", &arg_vol_c, &argret_id)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_dirinfo(arg_vol, &argret_id, ret_name)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_dirinfo(arg_vol, &argret_id, ret_name)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_BuildValue("ly", argret_id, ret_name); } static PyObject *wrap_opendir(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; char *arg_path; - if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) return NULL; + if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - return PyCapsule_New((void *)hfs_opendir(arg_vol, arg_path), NAME_HFSDIR, NULL); + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + hfsdir *ret = hfs_opendir(arg_vol, arg_path); + if(!ret) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} + return PyCapsule_New((void *)ret, NAME_HFSDIR, NULL); } static PyObject *wrap_readdir(PyObject *self, PyObject *args) { hfsdir *arg_dir; PyObject *arg_dir_c; hfsdirent ret_ent; - if(!PyArg_ParseTuple(args, "O", &arg_dir_c)) return NULL; + if(!PyArg_ParseTuple(args, "O", &arg_dir_c)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_dir_c == Py_None) arg_dir = NULL; - else if(!(arg_dir = PyCapsule_GetPointer(arg_dir_c, NAME_HFSDIR))) return NULL; - if(hfs_readdir(arg_dir, &ret_ent)) return NULL; + else if(!(arg_dir = PyCapsule_GetPointer(arg_dir_c, NAME_HFSDIR))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSDIR); return NULL;} + if(hfs_readdir(arg_dir, &ret_ent)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_BuildValue("y#", (char *)(&ret_ent), sizeof(ret_ent)); } static PyObject *wrap_closedir(PyObject *self, PyObject *args) { hfsdir *arg_dir; PyObject *arg_dir_c; - if(!PyArg_ParseTuple(args, "O", &arg_dir_c)) return NULL; + if(!PyArg_ParseTuple(args, "O", &arg_dir_c)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_dir_c == Py_None) arg_dir = NULL; - else if(!(arg_dir = PyCapsule_GetPointer(arg_dir_c, NAME_HFSDIR))) return NULL; - if(hfs_closedir(arg_dir)) return NULL; + else if(!(arg_dir = PyCapsule_GetPointer(arg_dir_c, NAME_HFSDIR))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSDIR); return NULL;} + if(hfs_closedir(arg_dir)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } @@ -172,49 +217,68 @@ static PyObject *wrap_create(PyObject *self, PyObject *args) hfsvol *arg_vol; PyObject *arg_vol_c; char *arg_path; char *arg_type; Py_ssize_t arg_type_len; char *arg_creator; Py_ssize_t arg_creator_len; - if(!PyArg_ParseTuple(args, "Oyy#y#", &arg_vol_c, &arg_path, &arg_type, &arg_type_len, &arg_creator, &arg_creator_len)) return NULL; - if(arg_type_len != 4 || arg_creator_len != 4) return NULL; + if(!PyArg_ParseTuple(args, "Oyy#y#", &arg_vol_c, &arg_path, &arg_type, &arg_type_len, &arg_creator, &arg_creator_len)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} + if(arg_type_len != 4 || arg_creator_len != 4) + {PyErr_SetString(PyExc_ValueError, "code wrong len"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - return PyCapsule_New((void *)hfs_create(arg_vol, arg_path, arg_type, arg_creator), NAME_HFSFILE, NULL); + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + hfsfile *ret = hfs_create(arg_vol, arg_path, arg_type, arg_creator); + if(!ret) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} + return PyCapsule_New((void *)ret, NAME_HFSFILE, NULL); } static PyObject *wrap_open(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; char *arg_path; - if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) return NULL; + if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - return PyCapsule_New((void *)hfs_open(arg_vol, arg_path), NAME_HFSFILE, NULL); + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + hfsfile *ret = hfs_open(arg_vol, arg_path); + if(!ret) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} + return PyCapsule_New((void *)ret, NAME_HFSFILE, NULL); } static PyObject *wrap_setfork(PyObject *self, PyObject *args) { hfsfile *arg_file; PyObject *arg_file_c; int arg_fork; - if(!PyArg_ParseTuple(args, "Oi", &arg_file_c, &arg_fork)) return NULL; + if(!PyArg_ParseTuple(args, "Oi", &arg_file_c, &arg_fork)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_file_c == Py_None) arg_file = NULL; - else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) return NULL; - if(hfs_setfork(arg_file, arg_fork)) return NULL; + else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSFILE); return NULL;} + if(hfs_setfork(arg_file, arg_fork)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } static PyObject *wrap_getfork(PyObject *self, PyObject *args) { hfsfile *arg_file; PyObject *arg_file_c; - if(!PyArg_ParseTuple(args, "O", &arg_file_c)) return NULL; + if(!PyArg_ParseTuple(args, "O", &arg_file_c)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_file_c == Py_None) arg_file = NULL; - else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) return NULL; + else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSFILE); return NULL;} return Py_BuildValue("i", hfs_getfork(arg_file)); } static PyObject *wrap_read(PyObject *self, PyObject *args) // pass in a bytearray and get it shrunk! { hfsfile *arg_file; PyObject *arg_file_c; PyObject *arg_bytearray; - if(!PyArg_ParseTuple(args, "OY", &arg_file_c, &arg_bytearray)) return NULL; + if(!PyArg_ParseTuple(args, "OY", &arg_file_c, &arg_bytearray)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_file_c == Py_None) arg_file = NULL; - else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) return NULL; + else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSFILE); return NULL;} long bytesread = hfs_read(arg_file, PyByteArray_AsString(arg_bytearray), PyByteArray_Size(arg_bytearray)); - if(bytesread == -1) return NULL; + if(bytesread == -1) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} PyByteArray_Resize(arg_bytearray, bytesread); return Py_None; } @@ -222,42 +286,54 @@ static PyObject *wrap_read(PyObject *self, PyObject *args) // pass in a bytearra static PyObject *wrap_write(PyObject *self, PyObject *args) // pass in a bytearray and get it shrunk! { hfsfile *arg_file; PyObject *arg_file_c; PyObject *arg_bytes; Py_ssize_t arg_bytes_len; - if(!PyArg_ParseTuple(args, "Oy#", &arg_file_c, &arg_bytes, &arg_bytes_len)) return NULL; + if(!PyArg_ParseTuple(args, "Oy#", &arg_file_c, &arg_bytes, &arg_bytes_len)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_file_c == Py_None) arg_file = NULL; - else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) return NULL; + else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSFILE); return NULL;} long byteswritten = hfs_write(arg_file, arg_bytes, arg_bytes_len); - if(byteswritten == -1) return NULL; + if(byteswritten == -1) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_BuildValue("l", byteswritten); } static PyObject *wrap_truncate(PyObject *self, PyObject *args) // pass in a bytearray and get it shrunk! { hfsfile *arg_file; PyObject *arg_file_c; unsigned long arg_len; - if(!PyArg_ParseTuple(args, "Ok", &arg_file_c, &arg_len)) return NULL; + if(!PyArg_ParseTuple(args, "Ok", &arg_file_c, &arg_len)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_file_c == Py_None) arg_file = NULL; - else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) return NULL; - if(hfs_truncate(arg_file, arg_len)) return NULL; + else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSFILE); return NULL;} + if(hfs_truncate(arg_file, arg_len)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } static PyObject *wrap_seek(PyObject *self, PyObject *args) // pass in a bytearray and get it shrunk! { hfsfile *arg_file; PyObject *arg_file_c; long arg_offset; int arg_from; - if(!PyArg_ParseTuple(args, "Oli", &arg_file_c, &arg_offset, &arg_from)) return NULL; + if(!PyArg_ParseTuple(args, "Oli", &arg_file_c, &arg_offset, &arg_from)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_file_c == Py_None) arg_file = NULL; - else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) return NULL; + else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSFILE); return NULL;} long absloc = hfs_seek(arg_file, arg_offset, arg_from); - if(absloc == -1) return NULL; + if(absloc == -1) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_BuildValue("l", absloc); } static PyObject *wrap_close(PyObject *self, PyObject *args) // pass in a bytearray and get it shrunk! { hfsfile *arg_file; PyObject *arg_file_c; - if(!PyArg_ParseTuple(args, "O", &arg_file_c)) return NULL; + if(!PyArg_ParseTuple(args, "O", &arg_file_c)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_file_c == Py_None) arg_file = NULL; - else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) return NULL; - if(hfs_close(arg_file)) return NULL; + else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSFILE); return NULL;} + if(hfs_close(arg_file)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } @@ -265,10 +341,13 @@ static PyObject *wrap_stat(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; char *arg_path; hfsdirent ret_ent; - if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) return NULL; + if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_stat(arg_vol, arg_path, &ret_ent)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_stat(arg_vol, arg_path, &ret_ent)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_BuildValue("y#", (char *)(&ret_ent), sizeof(ret_ent)); } @@ -276,72 +355,95 @@ static PyObject *wrap_fstat(PyObject *self, PyObject *args) { hfsfile *arg_file; PyObject *arg_file_c; hfsdirent ret_ent; - if(!PyArg_ParseTuple(args, "O", &arg_file_c)) return NULL; + if(!PyArg_ParseTuple(args, "O", &arg_file_c)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_file_c == Py_None) arg_file = NULL; - else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) return NULL; - if(hfs_fstat(arg_file, &ret_ent)) return NULL; + else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSFILE); return NULL;} + if(hfs_fstat(arg_file, &ret_ent)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_BuildValue("y#", (char *)(&ret_ent), sizeof(ret_ent)); } static PyObject *wrap_setattr(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; char *arg_path; hfsdirent *arg_ent; Py_ssize_t arg_ent_len; - if(!PyArg_ParseTuple(args, "Oyy#", &arg_vol_c, &arg_path, &arg_ent, &arg_ent_len)) return NULL; - if(arg_ent_len != sizeof(*arg_ent)) return NULL; + if(!PyArg_ParseTuple(args, "Oyy#", &arg_vol_c, &arg_path, &arg_ent, &arg_ent_len)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} + if(arg_ent_len != sizeof(*arg_ent)) + {PyErr_SetString(PyExc_ValueError, "struct wrong len"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_setattr(arg_vol, arg_path, arg_ent)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_setattr(arg_vol, arg_path, arg_ent)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } static PyObject *wrap_fsetattr(PyObject *self, PyObject *args) { hfsfile *arg_file; PyObject *arg_file_c; hfsdirent *arg_ent; Py_ssize_t arg_ent_len; - if(!PyArg_ParseTuple(args, "Oy#", &arg_file_c, &arg_ent, &arg_ent_len)) return NULL; - if(arg_ent_len != sizeof(*arg_ent)) return NULL; + if(!PyArg_ParseTuple(args, "Oy#", &arg_file_c, &arg_ent, &arg_ent_len)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} + if(arg_ent_len != sizeof(*arg_ent)) + {PyErr_SetString(PyExc_ValueError, "struct wrong len"); return NULL;} if(arg_file_c == Py_None) arg_file = NULL; - else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) return NULL; - if(hfs_fsetattr(arg_file, arg_ent)) return NULL; + else if(!(arg_file = PyCapsule_GetPointer(arg_file_c, NAME_HFSFILE))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSFILE); return NULL;} + if(hfs_fsetattr(arg_file, arg_ent)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } static PyObject *wrap_mkdir(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; char *arg_path; - if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) return NULL; + if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_mkdir(arg_vol, arg_path)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_mkdir(arg_vol, arg_path)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } static PyObject *wrap_rmdir(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; char *arg_path; - if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) return NULL; + if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_rmdir(arg_vol, arg_path)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_rmdir(arg_vol, arg_path)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } static PyObject *wrap_delete(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; char *arg_path; - if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) return NULL; + if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_path)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_delete(arg_vol, arg_path)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_delete(arg_vol, arg_path)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } static PyObject *wrap_rename(PyObject *self, PyObject *args) { hfsvol *arg_vol; PyObject *arg_vol_c; char *arg_srcpath; char *arg_dstpath; - if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_srcpath, &arg_dstpath)) return NULL; + if(!PyArg_ParseTuple(args, "Oy", &arg_vol_c, &arg_srcpath, &arg_dstpath)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} if(arg_vol_c == Py_None) arg_vol = NULL; - else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) return NULL; - if(hfs_rename(arg_vol, arg_srcpath, arg_dstpath)) return NULL; + else if(!(arg_vol = PyCapsule_GetPointer(arg_vol_c, NAME_HFSVOL))) + {PyErr_SetString(PyExc_ValueError, "bad " NAME_HFSVOL); return NULL;} + if(hfs_rename(arg_vol, arg_srcpath, arg_dstpath)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } @@ -349,16 +451,20 @@ static PyObject *wrap_zero(PyObject *self, PyObject *args) { char *arg_path; unsigned int arg_maxparts; unsigned long ret_blocks; - if(!PyArg_ParseTuple(args, "sI", &arg_path, &arg_maxparts)) return NULL; - if(hfs_zero(arg_path, arg_maxparts, &ret_blocks)) return NULL; + if(!PyArg_ParseTuple(args, "sI", &arg_path, &arg_maxparts)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} + if(hfs_zero(arg_path, arg_maxparts, &ret_blocks)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_BuildValue("k", ret_blocks); } static PyObject *wrap_mkpart(PyObject *self, PyObject *args) { char *arg_path; unsigned long arg_len; - if(!PyArg_ParseTuple(args, "sk", &arg_path, &arg_len)) return NULL; - if(hfs_mkpart(arg_path, arg_len)) return NULL; + if(!PyArg_ParseTuple(args, "sk", &arg_path, &arg_len)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} + if(hfs_mkpart(arg_path, arg_len)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; } @@ -366,17 +472,21 @@ static PyObject *wrap_nparts(PyObject *self, PyObject *args) { char *arg_path; int ret; - if(!PyArg_ParseTuple(args, "s", &arg_path)) return NULL; + if(!PyArg_ParseTuple(args, "s", &arg_path)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} ret = hfs_nparts(arg_path); - if(ret == -1) return NULL; + if(ret == -1) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_BuildValue("i", ret); } static PyObject *wrap_format(PyObject *self, PyObject *args) // bad blocks unimplemented { char *arg_path; int arg_pnum; int arg_mode; char *arg_vname; - if(!PyArg_ParseTuple(args, "siiy", &arg_path, &arg_pnum, &arg_mode, &arg_vname)) return NULL; - if(hfs_format(arg_path, arg_pnum, arg_mode, arg_vname, 0, NULL)) return NULL; + if(!PyArg_ParseTuple(args, "siiy", &arg_path, &arg_pnum, &arg_mode, &arg_vname)) + {PyErr_SetString(PyExc_ValueError, "bad args"); return NULL;} + if(hfs_format(arg_path, arg_pnum, arg_mode, arg_vname, 0, NULL)) + {PyErr_SetString(PyExc_ValueError, "call failed"); return NULL;} return Py_None; }