X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib.c;h=4f1fee35ad93496eccf43d0b39aa16e1bb073f9f;hp=e730022484a102faf08addb25b48f850a0df0a68;hb=69411872c23f91f24f76cf3a4a4b3be67640e44d;hpb=814a01519c9605d479201b99eb16c97b0ad8635d diff --git a/lib.c b/lib.c index e730022..4f1fee3 100644 --- a/lib.c +++ b/lib.c @@ -28,6 +28,12 @@ #include #include +#ifdef HAVE_SYSEXITS_H +#include +#else /* Make sure EX_OK is defined */ +#define EX_OK 0 +#endif + #include "lib.h" #include "lib/mem.h" @@ -36,6 +42,62 @@ extern short Umask; +static struct sysexits +{ + int v; + const char *str; +} +sysexits_h[] = +{ +#ifdef EX_USAGE + { 0xff & EX_USAGE, "Bad usage." }, +#endif +#ifdef EX_DATAERR + { 0xff & EX_DATAERR, "Data format error." }, +#endif +#ifdef EX_NOINPUT + { 0xff & EX_NOINPUT, "Cannot open input." }, +#endif +#ifdef EX_NOUSER + { 0xff & EX_NOUSER, "User unknown." }, +#endif +#ifdef EX_NOHOST + { 0xff & EX_NOHOST, "Host unknown." }, +#endif +#ifdef EX_UNAVAILABLE + { 0xff & EX_UNAVAILABLE, "Service unavailable." }, +#endif +#ifdef EX_SOFTWARE + { 0xff & EX_SOFTWARE, "Internal error." }, +#endif +#ifdef EX_OSERR + { 0xff & EX_OSERR, "Operating system error." }, +#endif +#ifdef EX_OSFILE + { 0xff & EX_OSFILE, "System file missing." }, +#endif +#ifdef EX_CANTCREAT + { 0xff & EX_CANTCREAT, "Can't create output." }, +#endif +#ifdef EX_IOERR + { 0xff & EX_IOERR, "I/O error." }, +#endif +#ifdef EX_TEMPFAIL + { 0xff & EX_TEMPFAIL, "Deferred." }, +#endif +#ifdef EX_PROTOCOL + { 0xff & EX_PROTOCOL, "Remote protocol error." }, +#endif +#ifdef EX_NOPERM + { 0xff & EX_NOPERM, "Insufficient permission." }, +#endif +#ifdef EX_CONFIG + { 0xff & EX_NOPERM, "Local configuration error." }, +#endif + { S_ERR, "Exec error." }, + { -1, NULL} +}; + void mutt_nocurses_error (const char *fmt, ...) { va_list ap; @@ -155,7 +217,7 @@ int safe_symlink (const char *oldpath, const char *newpath) char abs_oldpath[_POSIX_PATH_MAX]; if ((getcwd (abs_oldpath, sizeof abs_oldpath) == NULL) || - (safe_strlen (abs_oldpath) + 1 + safe_strlen (oldpath) + 1 > + (str_len (abs_oldpath) + 1 + str_len (oldpath) + 1 > sizeof abs_oldpath)) return -1; @@ -335,13 +397,13 @@ char *mutt_read_line (char *s, size_t * size, FILE * fp, int *line) char *ch; if (!s) { - s = safe_malloc (STRING); + s = mem_malloc (STRING); *size = STRING; } FOREVER { if (fgets (s + offset, *size - offset, fp) == NULL) { - FREE (&s); + mem_free (&s); return NULL; } if ((ch = strchr (s + offset, '\n')) != NULL) { @@ -371,7 +433,7 @@ char *mutt_read_line (char *s, size_t * size, FILE * fp, int *line) /* There wasn't room for the line -- increase ``s'' */ offset = *size - 1; /* overwrite the terminating 0 */ *size += STRING; - safe_realloc (&s, *size); + mem_realloc (&s, *size); } } } @@ -416,7 +478,7 @@ char *mutt_concat_path (char *d, const char *dir, const char *fname, size_t l) { const char *fmt = "%s/%s"; - if (!*fname || (*dir && dir[safe_strlen (dir) - 1] == '/')) + if (!*fname || (*dir && dir[str_len (dir) - 1] == '/')) fmt = "%s%s"; snprintf (d, l, fmt, dir, fname); @@ -432,3 +494,17 @@ const char *mutt_basename (const char *f) else return f; } + +const char * +mutt_strsysexit(int e) +{ + int i; + + for(i = 0; sysexits_h[i].str; i++) + { + if(e == sysexits_h[i].v) + break; + } + + return sysexits_h[i].str; +}