char *textcontent(struct mlmmj_list *list, const char *ctrlstr);
struct strlist *ctrlvalues(struct mlmmj_list *list, const char *ctrlstr);
time_t ctrltimet(struct mlmmj_list *list, const char *ctrlstr);
+long ctrllong(struct mlmmj_list *list, const char *ctrlstr);
+int ctrlint(struct mlmmj_list *list, const char *ctrlstr);
+size_t ctrlsizet(struct mlmmj_list *list, const char *ctrlstr);
#endif /* STATCTRL_H */
mylocking.c listcontrol.c random-int.c strgen.c \
print-version.c send_help.c prepstdreply.c \
do_all_the_voodoo_here.c mygetline.c gethdrline.c \
- log_error.c controls.c dumpfd2fd.c utils.c \
+ log_error.c controls.c dumpfd2fd.c \
subscriberfuncs.c memory.c log_oper.c \
send_list.c readn.c getlistdelim.c unistr.c
* IN THE SOFTWARE.
*/
+#include <sys/limits.h>
+
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
char *val = ctrlvalue(list, ctrlstr);
time_t ret;
+ if (val == NULL)
+ return (0);
+
ret = strtotimet(val, &errstr);
if (errstr != NULL) {
log_error(LOG_ARGS, "Invalid value for '%s': %s", ctrlstr, errstr);
}
+ myfree(val);
+ return (ret);
+}
+
+long
+ctrllong(struct mlmmj_list *list, const char *ctrlstr)
+{
+ const char *errstr;
+ char *val = ctrlvalue(list, ctrlstr);
+ long ret;
+
+ if (val == NULL)
+ return (0);
+
+ ret = strtoim(val, LONG_MIN, LONG_MAX, &errstr);
+ if (errstr != NULL) {
+ log_error(LOG_ARGS, "Invalid value for '%s': %s", ctrlstr, errstr);
+ }
+ myfree(val);
+ return (ret);
+}
+
+int
+ctrlint(struct mlmmj_list *list, const char *ctrlstr)
+{
+ const char *errstr;
+ char *val = ctrlvalue(list, ctrlstr);
+ int ret;
+
+ if (val == NULL)
+ return (0);
+
+ ret = strtoim(val, INT_MIN, INT_MAX, &errstr);
+ if (errstr != NULL) {
+ log_error(LOG_ARGS, "Invalid value for '%s': %s", ctrlstr, errstr);
+ }
+ myfree(val);
+ return (ret);
+}
+
+size_t
+ctrlsizet(struct mlmmj_list *list, const char *ctrlstr)
+{
+ const char *errstr;
+ char *val = ctrlvalue(list, ctrlstr);
+ size_t ret;
+
+ if (val == NULL)
+ return (0);
+
+ ret = strtoim(val, 0, SIZE_T_MAX, &errstr);
+ if (errstr != NULL) {
+ log_error(LOG_ARGS, "Invalid value for '%s': %s", ctrlstr, errstr);
+ }
+ myfree(val);
return (ret);
}