X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib.c;h=937ffcc0f8d5e847e7d8bef25484d26976ee0063;hp=8f88c74a48cce9cc48fdbbc018f2b682c06add4c;hb=f422bddfe7468c3f36388a8830c832c01841eabc;hpb=c3e57678c8be193fc137854020f3a90887be97c9 diff --git a/lib.c b/lib.c index 8f88c74..937ffcc 100644 --- a/lib.c +++ b/lib.c @@ -30,6 +30,9 @@ #include "lib.h" +#include "lib/mem.h" +#include "lib/str.h" + extern short Umask; void mutt_nocurses_error (const char *fmt, ...) @@ -42,84 +45,6 @@ void mutt_nocurses_error (const char *fmt, ...) fputc ('\n', stderr); } -void *safe_calloc (size_t nmemb, size_t size) -{ - void *p; - - if (!nmemb || !size) - return NULL; - - if (((size_t) - 1) / nmemb <= size) { - mutt_error _("Integer overflow -- can't allocate memory!"); - - sleep (1); - mutt_exit (1); - } - - if (!(p = calloc (nmemb, size))) { - mutt_error _("Out of memory!"); - - sleep (1); - mutt_exit (1); - } - return p; -} - -void *safe_malloc (size_t siz) -{ - void *p; - - if (siz == 0) - return 0; - if ((p = (void *) malloc (siz)) == 0) { /* __MEM_CHECKED__ */ - mutt_error _("Out of memory!"); - - sleep (1); - mutt_exit (1); - } - return (p); -} - -void safe_realloc (void *ptr, size_t siz) -{ - void *r; - void **p = (void **) ptr; - - if (siz == 0) { - if (*p) { - free (*p); /* __MEM_CHECKED__ */ - *p = NULL; - } - return; - } - - if (*p) - r = (void *) realloc (*p, siz); /* __MEM_CHECKED__ */ - else { - /* realloc(NULL, nbytes) doesn't seem to work under SunOS 4.1.x --- __MEM_CHECKED__ */ - r = (void *) malloc (siz); /* __MEM_CHECKED__ */ - } - - if (!r) { - mutt_error _("Out of memory!"); - - sleep (1); - mutt_exit (1); - } - - *p = r; -} - -void safe_free (void *ptr) -{ - void **p = (void **) ptr; - - if (*p) { - free (*p); /* __MEM_CHECKED__ */ - *p = 0; - } -} - int safe_fclose (FILE ** f) { int r = 0; @@ -138,7 +63,7 @@ char *safe_strdup (const char *s) if (!s || !*s) return 0; - l = strlen (s) + 1; + l = mutt_strlen (s) + 1; p = (char *) safe_malloc (l); memcpy (p, s, l); return (p); @@ -193,7 +118,7 @@ void mutt_str_adjust (char **p) { if (!p || !*p) return; - safe_realloc (p, strlen (*p) + 1); + safe_realloc (p, mutt_strlen (*p) + 1); } /* convert all characters in the string to lowercase */ @@ -307,7 +232,7 @@ int safe_symlink (const char *oldpath, const char *newpath) char abs_oldpath[_POSIX_PATH_MAX]; if ((getcwd (abs_oldpath, sizeof abs_oldpath) == NULL) || - (strlen (abs_oldpath) + 1 + strlen (oldpath) + 1 > + (mutt_strlen (abs_oldpath) + 1 + mutt_strlen (oldpath) + 1 > sizeof abs_oldpath)) return -1; @@ -550,7 +475,7 @@ char *mutt_substrdup (const char *begin, const char *end) if (end) len = end - begin; else - len = strlen (begin); + len = mutt_strlen (begin); p = safe_malloc (len + 1); memcpy (p, begin, len); @@ -664,7 +589,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[strlen (dir) - 1] == '/')) + if (!*fname || (*dir && dir[mutt_strlen (dir) - 1] == '/')) fmt = "%s%s"; snprintf (d, l, fmt, dir, fname);