/* Helper for functions that need a root filesystem mounted.
* NB. Cannot be used for FileIn functions.
*/
-#define NEED_ROOT(errcode) \
+#define NEED_ROOT(fail_stmt) \
do { \
if (!root_mounted) { \
reply_with_error ("%s: you must call 'mount' first to mount the root filesystem", __func__); \
- return (errcode); \
+ fail_stmt; \
} \
} \
while (0)
/* Helper for functions that need an argument ("path") that is absolute.
* NB. Cannot be used for FileIn functions.
*/
-#define ABS_PATH(path,errcode) \
+#define ABS_PATH(path,fail_stmt) \
do { \
if ((path)[0] != '/') { \
reply_with_error ("%s: path must start with a / character", __func__); \
- return (errcode); \
+ fail_stmt; \
} \
} while (0)
*
* NB. Cannot be used for FileIn functions.
*/
-#define IS_DEVICE(path,errcode) \
+#define RESOLVE_DEVICE(path,fail_stmt) \
do { \
if (strncmp ((path), "/dev/", 5) != 0) { \
reply_with_error ("%s: %s: expecting a device name", __func__, (path)); \
- return (errcode); \
+ fail_stmt; \
} \
if (device_name_translation ((path), __func__) == -1) \
- return (errcode); \
+ fail_stmt; \
} while (0)
/* Helper for functions which need either an absolute path in the
* because we intend in future to make device parameters a distinct
* type from filenames.
*/
-#define NEED_ROOT_OR_IS_DEVICE(path,errcode) \
+#define REQUIRE_ROOT_OR_RESOLVE_DEVICE(path,fail_stmt) \
do { \
if (strncmp ((path), "/dev/", 5) == 0) \
- IS_DEVICE ((path),(errcode)); \
+ RESOLVE_DEVICE ((path), fail_stmt); \
else { \
- NEED_ROOT ((errcode)); \
- ABS_PATH ((path),(errcode)); \
+ NEED_ROOT (fail_stmt); \
+ ABS_PATH ((path),fail_stmt); \
} \
} while (0)