+
+void warn_melody(void);
+
+int get_shell(char **ret);
+int get_home_dir(char **ret);
+
+void freep(void *p);
+void fclosep(FILE **f);
+void closep(int *fd);
+void closedirp(DIR **d);
+void umaskp(mode_t *u);
+
+_malloc_ static inline void *malloc_multiply(size_t a, size_t b) {
+ if (_unlikely_(a > ((size_t) -1) / b))
+ return NULL;
+
+ return malloc(a * b);
+}
+
+_malloc_ static inline void *memdup_multiply(const void *p, size_t a, size_t b) {
+ if (_unlikely_(a > ((size_t) -1) / b))
+ return NULL;
+
+ return memdup(p, a * b);
+}