Commit 5eb0fab846d6b2f8bcf3caf7a9e33afa36753850

Vicent Marti 2011-05-05T01:49:27

errors: Update external API with new `git_lasterror`

diff --git a/include/git2/common.h b/include/git2/common.h
index 22c7cc4..1d2d3a3 100644
--- a/include/git2/common.h
+++ b/include/git2/common.h
@@ -170,6 +170,9 @@
 /** The given literal is not a valid number */
 #define GIT_ENOTNUM (GIT_ERROR - 25)
 
+/** Streaming error */
+#define GIT_ESTREAM (GIT_ERROR - 26)
+
 GIT_BEGIN_DECL
 
 typedef struct {
diff --git a/include/git2/errors.h b/include/git2/errors.h
index 627e67c..fde0dc7 100644
--- a/include/git2/errors.h
+++ b/include/git2/errors.h
@@ -34,11 +34,11 @@
 GIT_BEGIN_DECL
 
 /**
- * strerror() for the Git library
- * @param num The error code to explain
- * @return a string explaining the error code
+ * Return a detailed error string with the latest error
+ * that occurred in the library.
+ * @return a string explaining the error
  */
-GIT_EXTERN(const char *) git_strerror(int num);
+GIT_EXTERN(const char *) git_lasterror(void);
 
 /** @} */
 GIT_END_DECL
diff --git a/src/errors.c b/src/errors.c
index b0c1c15..73df2e2 100644
--- a/src/errors.c
+++ b/src/errors.c
@@ -28,52 +28,6 @@
 
 #include <stdarg.h>
 
-static struct {
-	int num;
-	const char *str;
-} error_codes[] = {
-	{GIT_ERROR, "Unspecified error"},
-	{GIT_ENOTOID, "Input was not a properly formatted Git object id."},
-	{GIT_ENOTFOUND, "Object does not exist in the scope searched."},
-	{GIT_ENOMEM, "Not enough space available."},
-	{GIT_EOSERR, "Consult the OS error information."},
-	{GIT_EOBJTYPE, "The specified object is of invalid type"},
-	{GIT_EOBJCORRUPTED, "The specified object has its data corrupted"},
-	{GIT_ENOTAREPO, "The specified repository is invalid"},
-	{GIT_EINVALIDTYPE, "The object type is invalid or doesn't match"},
-	{GIT_EMISSINGOBJDATA, "The object cannot be written that because it's missing internal data"},
-	{GIT_EPACKCORRUPTED, "The packfile for the ODB is corrupted"},
-	{GIT_EFLOCKFAIL, "Failed to adquire or release a file lock"},
-	{GIT_EZLIB, "The Z library failed to inflate/deflate an object's data"},
-	{GIT_EBUSY, "The queried object is currently busy"},
-	{GIT_EINVALIDPATH, "The path is invalid"},
-	{GIT_EBAREINDEX, "The index file is not backed up by an existing repository"},
-	{GIT_EINVALIDREFNAME, "The name of the reference is not valid"},
-	{GIT_EREFCORRUPTED, "The specified reference has its data corrupted"},
-	{GIT_ETOONESTEDSYMREF, "The specified symbolic reference is too deeply nested"},
-	{GIT_EPACKEDREFSCORRUPTED, "The pack-refs file is either corrupted of its format is not currently supported"},
-	{GIT_EINVALIDPATH, "The path is invalid" },
-	{GIT_EREVWALKOVER, "The revision walker is empty; there are no more commits left to iterate"},
-	{GIT_EINVALIDREFSTATE, "The state of the reference is not valid"},
-	{GIT_ENOTIMPLEMENTED, "This feature has not been implemented yet"},
-	{GIT_EEXISTS, "A reference with this name already exists"},
-	{GIT_EOVERFLOW, "The given integer literal is too large to be parsed"},
-	{GIT_ENOTNUM, "The given literal is not a valid number"},
-};
-
-const char *git_strerror(int num)
-{
-	size_t i;
-
-	if (num == GIT_EOSERR)
-		return strerror(errno);
-	for (i = 0; i < ARRAY_SIZE(error_codes); i++)
-		if (num == error_codes[i].num)
-			return error_codes[i].str;
-
-	return "Unknown error";
-}
-
 static GIT_TLS char g_last_error[1024];
 
 int git__error(int error, const char *msg, ...)
@@ -86,3 +40,9 @@ int git__error(int error, const char *msg, ...)
 
 	return error;
 }
+
+const char *git_lasterror(void)
+{
+	return g_last_error;
+}
+