aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2020-02-13 22:09:37 +0100
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2020-02-15 18:09:40 +0100
commit943486f573ea5395d8b38735dbe019d2a3dfc5dd (patch)
tree7b0b69d9877c65fbbebc28bb6e85302d9438b014
parent6f4d85d2150c287432f7696659f22eeca0a0e1b2 (diff)
Add a "sequence error" to libsquashfs error codes
Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
-rw-r--r--include/sqfs/error.h12
-rw-r--r--lib/common/perror.c3
2 files changed, 15 insertions, 0 deletions
diff --git a/include/sqfs/error.h b/include/sqfs/error.h
index 77e33ed..055e98f 100644
--- a/include/sqfs/error.h
+++ b/include/sqfs/error.h
@@ -133,6 +133,18 @@ typedef enum {
* @brief An invalid argument was passed to a library function.
*/
SQFS_ERROR_ARG_INVALID = -16,
+
+ /**
+ * @brief Library functions were called an a nonsensical order.
+ *
+ * Some libsquashfs functions operate on an object with an internal
+ * state. Depending on the state, calling a function might not make
+ * sense at all (e.g. calling foo_end before foo_begin). In that case,
+ * this error is returned, signifying to the caller that the sequence
+ * makes not sense, but the object itself is unchanged, no action was
+ * performed and the object can still be used.
+ */
+ SQFS_ERROR_SEQUENCE = -17,
} E_SQFS_ERROR;
#endif /* SQFS_ERROR_H */
diff --git a/lib/common/perror.c b/lib/common/perror.c
index a0a86aa..c7dab08 100644
--- a/lib/common/perror.c
+++ b/lib/common/perror.c
@@ -61,6 +61,9 @@ void sqfs_perror(const char *file, const char *action, int error_code)
case SQFS_ERROR_ARG_INVALID:
errstr = "invalid argument";
break;
+ case SQFS_ERROR_SEQUENCE:
+ errstr = "illegal oder of operations";
+ break;
default:
errstr = "libsquashfs returned an unknown error code";
break;