summaryrefslogtreecommitdiffstats
path: root/generic/regerror.c
diff options
context:
space:
mode:
Diffstat (limited to 'generic/regerror.c')
-rw-r--r--generic/regerror.c150
1 files changed, 65 insertions, 85 deletions
diff --git a/generic/regerror.c b/generic/regerror.c
index a1a0163..6376e80 100644
--- a/generic/regerror.c
+++ b/generic/regerror.c
@@ -2,20 +2,20 @@
* regerror - error-code expansion
*
* Copyright (c) 1998, 1999 Henry Spencer. All rights reserved.
- *
+ *
* Development of this software was funded, in part, by Cray Research Inc.,
* UUNET Communications Services Inc., Sun Microsystems Inc., and Scriptics
* Corporation, none of whom are responsible for the results. The author
- * thanks all of them.
- *
+ * thanks all of them.
+ *
* Redistribution and use in source and binary forms -- with or without
* modification -- are permitted for any purpose, provided that
* redistributions in source form retain this entire copyright notice and
* indicate the origin and nature of any modifications.
- *
- * I'd appreciate being given credit for this package in the documentation of
- * software which uses it, but that is not a requirement.
- *
+ *
+ * I'd appreciate being given credit for this package in the documentation
+ * of software which uses it, but that is not a requirement.
+ *
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
* AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
@@ -31,99 +31,79 @@
#include "regguts.h"
-/*
- * Unknown-error explanation.
- */
-
-static const char unk[] = "*** unknown regex error code 0x%x ***";
-
-/*
- * Struct to map among codes, code names, and explanations.
- */
+/* unknown-error explanation */
+static CONST char unk[] = "*** unknown regex error code 0x%x ***";
+/* struct to map among codes, code names, and explanations */
static struct rerr {
- int code;
- const char *name;
- const char *explain;
+ int code;
+ char *name;
+ char *explain;
} rerrs[] = {
- /* The actual table is built from regex.h */
-#include "regerrs.h"
- { -1, "", "oops" }, /* explanation special-cased in code */
+ /* the actual table is built from regex.h */
+# include "regerrs.h"
+ { -1, "", "oops" }, /* explanation special-cased in code */
};
-
+
/*
- regerror - the interface to error numbers
*/
/* ARGSUSED */
-size_t /* Actual space needed (including NUL) */
-regerror(
- int code, /* Error code, or REG_ATOI or REG_ITOA */
- const regex_t *preg, /* Associated regex_t (unused at present) */
- char *errbuf, /* Result buffer (unless errbuf_size==0) */
- size_t errbuf_size) /* Available space in errbuf, can be 0 */
+size_t /* actual space needed (including NUL) */
+regerror(code, preg, errbuf, errbuf_size)
+int code; /* error code, or REG_ATOI or REG_ITOA */
+CONST regex_t *preg; /* associated regex_t (unused at present) */
+char *errbuf; /* result buffer (unless errbuf_size==0) */
+size_t errbuf_size; /* available space in errbuf, can be 0 */
{
- struct rerr *r;
- const char *msg;
- char convbuf[sizeof(unk)+50]; /* 50 = plenty for int */
- size_t len;
- int icode;
+ struct rerr *r;
+ char *msg;
+ char convbuf[sizeof(unk)+50]; /* 50 = plenty for int */
+ size_t len;
+ int icode;
- switch (code) {
- case REG_ATOI: /* Convert name to number */
- for (r = rerrs; r->code >= 0; r++) {
- if (strcmp(r->name, errbuf) == 0) {
+ switch (code) {
+ case REG_ATOI: /* convert name to number */
+ for (r = rerrs; r->code >= 0; r++)
+ if (strcmp(r->name, errbuf) == 0)
+ break;
+ sprintf(convbuf, "%d", r->code); /* -1 for unknown */
+ msg = convbuf;
break;
- }
- }
- sprintf(convbuf, "%d", r->code); /* -1 for unknown */
- msg = convbuf;
- break;
- case REG_ITOA: /* Convert number to name */
- icode = atoi(errbuf); /* Not our problem if this fails */
- for (r = rerrs; r->code >= 0; r++) {
- if (r->code == icode) {
+ case REG_ITOA: /* convert number to name */
+ icode = atoi(errbuf); /* not our problem if this fails */
+ for (r = rerrs; r->code >= 0; r++)
+ if (r->code == icode)
+ break;
+ if (r->code >= 0)
+ msg = r->name;
+ else { /* unknown; tell him the number */
+ sprintf(convbuf, "REG_%u", (unsigned)icode);
+ msg = convbuf;
+ }
break;
- }
- }
- if (r->code >= 0) {
- msg = r->name;
- } else { /* Unknown; tell him the number */
- sprintf(convbuf, "REG_%u", (unsigned)icode);
- msg = convbuf;
- }
- break;
- default: /* A real, normal error code */
- for (r = rerrs; r->code >= 0; r++) {
- if (r->code == code) {
+ default: /* a real, normal error code */
+ for (r = rerrs; r->code >= 0; r++)
+ if (r->code == code)
+ break;
+ if (r->code >= 0)
+ msg = r->explain;
+ else { /* unknown; say so */
+ sprintf(convbuf, unk, code);
+ msg = convbuf;
+ }
break;
- }
- }
- if (r->code >= 0) {
- msg = r->explain;
- } else { /* Unknown; say so */
- sprintf(convbuf, unk, code);
- msg = convbuf;
}
- break;
- }
- len = strlen(msg) + 1; /* Space needed, including NUL */
- if (errbuf_size > 0) {
- if (errbuf_size > len) {
- strcpy(errbuf, msg);
- } else { /* Truncate to fit */
- strncpy(errbuf, msg, errbuf_size-1);
- errbuf[errbuf_size-1] = '\0';
+ len = strlen(msg) + 1; /* space needed, including NUL */
+ if (errbuf_size > 0) {
+ if (errbuf_size > len)
+ strcpy(errbuf, msg);
+ else { /* truncate to fit */
+ strncpy(errbuf, msg, errbuf_size-1);
+ errbuf[errbuf_size-1] = '\0';
+ }
}
- }
- return len;
+ return len;
}
-
-/*
- * Local Variables:
- * mode: c
- * c-basic-offset: 4
- * fill-column: 78
- * End:
- */