94 static int mail_version_int(
const char *strval)
101 intval = longval = strtol(strval, &end, 10);
102 if (*strval == 0 || *end != 0 || errno == ERANGE || longval != intval)
109 static const char *mail_version_worker(
MAIL_VERSION *mp,
char *cp)
119 return (
"no program name");
125 if ((major_field =
mystrtok(&cp,
"-")) == 0)
126 return (
"missing major version");
128 if ((minor_field =
split_at(major_field,
'.')) == 0)
129 return (
"missing minor version");
130 if ((mp->
major = mail_version_int(major_field)) < 0)
131 return (
"bad major version");
132 patch_field =
split_at(minor_field,
'.');
133 if ((mp->
minor = mail_version_int(minor_field)) < 0)
134 return (
"bad minor version");
136 if (patch_field == 0)
138 else if ((mp->
patch = mail_version_int(patch_field)) < 0)
139 return (
"bad patchlevel");
145 if (patch_field != 0)
148 return (
"missing snapshot field");
163 if ((err = mail_version_worker(mp, saved_string)) != 0) {
193 msg_warn(
"Postfix library version mis-match: wanted %s, found %s",
204 #define STR(x) vstring_str(x)
208 static void parse_sample(
const char *sample)
231 int main(
int argc,
char **argv)
234 int have_tty = isatty(0);
237 while (--argc > 0 && *++argv)
249 if (*
STR(inbuf) == 0 || *
STR(inbuf) ==
'#')
251 parse_sample(
STR(inbuf));
#define vstring_fgets_nonl(s, p)
char * mystrdup(const char *str)
int main(int argc, char **argv)
char * mystrtok(char **src, const char *sep)
MAIL_VERSION * mail_version_parse(const char *string, const char **why)
void mail_version_free(MAIL_VERSION *mp)
VSTREAM * vstream_printf(const char *fmt,...)
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
int vstream_fflush(VSTREAM *stream)
VSTRING * vstring_free(VSTRING *vp)
char * split_at(char *string, int delimiter)
void check_mail_version(const char *version_string)
const char * get_mail_version(void)
void * mymalloc(ssize_t len)