X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib.c;h=4f1fee35ad93496eccf43d0b39aa16e1bb073f9f;hp=b57070be6707ace6d717bea72a54a10caf137710;hb=c7ef4c04b0e95e263768e4df06220525a5872dca;hpb=0f44dc85fc1280372ffab911d701e703d803fb4b diff --git a/lib.c b/lib.c index b57070b..4f1fee3 100644 --- a/lib.c +++ b/lib.c @@ -28,13 +28,76 @@ #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" #include "lib/str.h" +#include "lib/debug.h" 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; @@ -104,7 +167,7 @@ int mutt_copy_bytes (FILE * in, FILE * out, size_t size) if ((chunk = fread (buf, 1, chunk, in)) < 1) break; if (fwrite (buf, 1, chunk, out) != chunk) { - /* dprint (1, (debugfile, "mutt_copy_bytes(): fwrite() returned short byte count\n")); */ + debug_print (1, ("fwrite() returned short byte count\n")); return (-1); } size -= chunk; @@ -154,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; @@ -250,7 +313,7 @@ int safe_open (const char *path, int flags) /* make sure the file is not symlink */ if (lstat (path, &osb) < 0 || fstat (fd, &nsb) < 0 || compare_stat (&osb, &nsb) == -1) { -/* dprint (1, (debugfile, "safe_open(): %s is a symlink!\n", path)); */ + debug_print (1, ("%s is a symlink!\n", path)); close (fd); return (-1); } @@ -334,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) { @@ -370,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); } } } @@ -415,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); @@ -431,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; +}