summaryrefslogtreecommitdiff
path: root/src/libmain.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmain.c')
-rw-r--r--src/libmain.c45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/libmain.c b/src/libmain.c
new file mode 100644
index 0000000..1458bf8
--- /dev/null
+++ b/src/libmain.c
@@ -0,0 +1,45 @@
+#include <aplwc.h>
+#include <aplwc_internal.h>
+
+AplwcRc
+aplwc_new(Aplwc **p)
+{
+ *p = malloc_zero(sizeof(Aplwc));
+ if(*p == NULL)
+ RETURN_ERROR(*p, MALLOC_FAILED, "");
+
+ return APLWC_OK;
+}
+
+AplwcRc
+aplwc_destroy(Aplwc *p)
+{
+ if(p)
+ free(p);
+
+ return APLWC_OK;
+}
+
+const char *
+aplwc_errstr(Aplwc *aplwc)
+{
+ static char buf[256];
+ buf[0] = 0;
+
+ const char *err = NULL;
+ const char *msg = NULL;
+ if(aplwc){
+ err = rc_to_string(aplwc->last_error);
+ msg = aplwc->last_error_msg;
+ }
+
+ if(!err)
+ err = "(unable to produce error string)";
+
+ if(msg && (strlen(msg) > 0))
+ snprintf(buf, sizeof(buf), "%s: %s", err, msg);
+ else
+ snprintf(buf, sizeof(buf), "%s", err);
+
+ return buf;
+}