diff --git a/c_src/alcove_mount.h b/c_src/sys/alcove_mount_constants.h similarity index 98% rename from c_src/alcove_mount.h rename to c_src/sys/alcove_mount_constants.h index 81c4c9f..5ed58df 100644 --- a/c_src/alcove_mount.h +++ b/c_src/sys/alcove_mount_constants.h @@ -12,7 +12,7 @@ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -const alcove_define_t alcove_mount_constants[] = { +static const alcove_define_t alcove_mount_constants[] = { #ifdef MS_RDONLY {"rdonly", MS_RDONLY}, ALCOVE_DEFINE(MS_RDONLY), diff --git a/c_src/alcove_mount.c b/c_src/sys/mount.c similarity index 75% rename from c_src/alcove_mount.c rename to c_src/sys/mount.c index 29d13a4..3ec2f64 100644 --- a/c_src/alcove_mount.c +++ b/c_src/sys/mount.c @@ -14,9 +14,8 @@ */ #include "alcove.h" #include "alcove_call.h" - #include -#include "alcove_mount.h" +#include "alcove_mount_constants.h" #define MAYBE_NULL(_len, _buf) ((_len) == 0 ? NULL : (_buf)) @@ -116,57 +115,3 @@ alcove_sys_mount(alcove_state_t *ap, const char *arg, size_t len, ? alcove_mk_errno(reply, rlen, errno) : alcove_mk_atom(reply, rlen, "ok"); } - -/* - * umount(2) - * - */ - ssize_t -alcove_sys_umount(alcove_state_t *ap, const char *arg, size_t len, - char *reply, size_t rlen) -{ - int index = 0; - - char source[PATH_MAX] = {0}; - size_t slen = sizeof(source)-1; - - int rv = 0; - - /* source */ - if (alcove_decode_iolist(arg, len, &index, source, &slen) < 0 || - slen == 0) - return -1; - -#if defined(__linux__) || defined(__sunos__) - rv = umount(source); -#else - rv = unmount(source, 0); -#endif - - return (rv < 0) - ? alcove_mk_errno(reply, rlen, errno) - : alcove_mk_atom(reply, rlen, "ok"); -} - -/* - * mount constants - * - */ - ssize_t -alcove_sys_mount_define(alcove_state_t *ap, const char *arg, size_t len, - char *reply, size_t rlen) -{ - int index = 0; - int rindex = 0; - - char name[MAXATOMLEN] = {0}; - - /* flag */ - if (alcove_decode_atom(arg, len, &index, name) < 0) - return -1; - - ALCOVE_ERR(alcove_encode_version(reply, rlen, &rindex)); - ALCOVE_ERR(alcove_encode_define(reply, rlen, &rindex, - name, alcove_mount_constants)); - return rindex; -} diff --git a/c_src/sys/mount_define.c b/c_src/sys/mount_define.c new file mode 100644 index 0000000..ca4a71c --- /dev/null +++ b/c_src/sys/mount_define.c @@ -0,0 +1,41 @@ +/* Copyright (c) 2014, Michael Santos + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#include "alcove.h" +#include "alcove_call.h" +#include +#include "alcove_mount_constants.h" + +/* + * mount constants + * + */ + ssize_t +alcove_sys_mount_define(alcove_state_t *ap, const char *arg, size_t len, + char *reply, size_t rlen) +{ + int index = 0; + int rindex = 0; + + char name[MAXATOMLEN] = {0}; + + /* flag */ + if (alcove_decode_atom(arg, len, &index, name) < 0) + return -1; + + ALCOVE_ERR(alcove_encode_version(reply, rlen, &rindex)); + ALCOVE_ERR(alcove_encode_define(reply, rlen, &rindex, + name, alcove_mount_constants)); + return rindex; +} diff --git a/c_src/sys/umount.c b/c_src/sys/umount.c new file mode 100644 index 0000000..8588971 --- /dev/null +++ b/c_src/sys/umount.c @@ -0,0 +1,48 @@ +/* Copyright (c) 2014, Michael Santos + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ +#include "alcove.h" +#include "alcove_call.h" +#include + +/* + * umount(2) + * + */ + ssize_t +alcove_sys_umount(alcove_state_t *ap, const char *arg, size_t len, + char *reply, size_t rlen) +{ + int index = 0; + + char source[PATH_MAX] = {0}; + size_t slen = sizeof(source)-1; + + int rv = 0; + + /* source */ + if (alcove_decode_iolist(arg, len, &index, source, &slen) < 0 || + slen == 0) + return -1; + +#if defined(__linux__) || defined(__sunos__) + rv = umount(source); +#else + rv = unmount(source, 0); +#endif + + return (rv < 0) + ? alcove_mk_errno(reply, rlen, errno) + : alcove_mk_atom(reply, rlen, "ok"); +}