#ifndef MLMMJ_UTILS_H
#define MLMMJ_UTILS_H
+#include <time.h>
+
intmax_t strtoim(const char *, intmax_t, intmax_t, const char **);
+time_t strtotimet(const char *, const char **);
#endif
mlmmj_maintd_SOURCES = mlmmj.c mlmmj-maintd.c print-version.c log_error.c mygetline.c \
strgen.c random-int.c chomp.c memory.c \
- send_digest.c dumpfd2fd.c \
+ send_digest.c dumpfd2fd.c utils.c \
mylocking.c log_oper.c readn.c getlistdelim.c \
prepstdreply.c gethdrline.c unistr.c controls.c
#include "send_digest.h"
#include "mylocking.h"
#include "log_oper.h"
+#include "utils.h"
static void print_help(const char *prg)
{
time_t probetime, t;
struct dirent *dp;
struct stat st;
+ const char *errstr;
if(chdir(dirname) < 0) {
log_error(LOG_ARGS, "Could not chdir(%s)", dirname);
}
close(probefd);
chomp(probetimestr);
- probetime = (time_t)strtol(probetimestr, NULL, 10);
+ probetime = strtotimet(probetimestr, &errstr);
myfree(probetimestr);
t = time(NULL);
if(t - probetime > WAITPROBE) {
pid_t pid, childpid;
int status, fd;
time_t bouncetime, t, bouncelife = 0;
+ const char *errstr;
if(chdir(dirname) < 0) {
log_error(LOG_ARGS, "Could not chdir(%s)", dirname);
}
a++; /* Increase to first digit */
- bouncetime = (time_t)strtol(a, NULL, 10);
+ bouncetime = strtotimet(a, &errstr);
myfree(firstbounce);
t = time(NULL);
if(t - bouncetime < bouncelife + WAITPROBE) {
#include "controls.h"
#include "mylocking.h"
#include "getaddrsfromfd.h"
+#include "utils.h"
static int addtohdr = 0;
static int prepmailinmem = 0;
struct mlmmj_list list;
unsigned short smtpport = 25;
struct sigaction sigact;
+ const char *errstr;
mlmmj_list_init(&list);
CHECKFULLPATH(argv[0]);
memmailsizestr = ctrlvalue(&list, "memorymailsize");
ctrlarchive = statctrl(&list, "noarchive");
if(memmailsizestr) {
- memmailsize = strtol(memmailsizestr, NULL, 10);
+ memmailsize = strtoim(memmailsizestr, 0, SIZE_T_MAX, &errstr);
myfree(memmailsizestr);
}
#include <limits.h>
#include <stdlib.h>
+#include "utils.h"
+
intmax_t
strtoim(const char *np, intmax_t minval, intmax_t maxval, const char **errpp)
{
}
return (ret);
}
+
+time_t
+strtotimet(const char *np, const char **errpp)
+{
+ if (sizeof(time_t) == 4)
+ return ((time_t)strtoim(np, INT_MIN, INT_MAX, errpp));
+ return ((time_t)strtoim(np, LLONG_MIN, LLONG_MAX, errpp));
+}