1420aa2d9SBrad Fitzpatrick /* 222238587SBrad Fitzpatrick * Wrappers around strtoull/strtoll that are safer and easier to 322238587SBrad Fitzpatrick * use. For tests and assumptions, see internal_tests.c. 422238587SBrad Fitzpatrick * 5420aa2d9SBrad Fitzpatrick * str a NULL-terminated base decimal 10 unsigned integer 6420aa2d9SBrad Fitzpatrick * out out parameter, if conversion succeeded 7420aa2d9SBrad Fitzpatrick * 8420aa2d9SBrad Fitzpatrick * returns true if conversion succeeded. 9420aa2d9SBrad Fitzpatrick */ 10a977b556SDustin Sallings bool safe_strtoull(const char *str, uint64_t *out); 11a977b556SDustin Sallings bool safe_strtoll(const char *str, int64_t *out); 1263ba0e14SDustin Sallings bool safe_strtoul(const char *str, uint32_t *out); 1363ba0e14SDustin Sallings bool safe_strtol(const char *str, int32_t *out); 14891082f3SDustin Sallings 15*9791b779STrond Norbye #ifndef HAVE_HTONLL 16*9791b779STrond Norbye extern uint64_t htonll(uint64_t); 17*9791b779STrond Norbye extern uint64_t ntohll(uint64_t); 18*9791b779STrond Norbye #endif 19*9791b779STrond Norbye 20891082f3SDustin Sallings #ifdef __GCC 21891082f3SDustin Sallings # define __gcc_attribute__ __attribute__ 22891082f3SDustin Sallings #else 23891082f3SDustin Sallings # define __gcc_attribute__(x) 24891082f3SDustin Sallings #endif 25891082f3SDustin Sallings 26891082f3SDustin Sallings /** 27891082f3SDustin Sallings * Vararg variant of perror that makes for more useful error messages 28891082f3SDustin Sallings * when reporting with parameters. 29891082f3SDustin Sallings * 30891082f3SDustin Sallings * @param fmt a printf format 31891082f3SDustin Sallings */ 32891082f3SDustin Sallings void vperror(const char *fmt, ...) 33891082f3SDustin Sallings __gcc_attribute__ ((format (printf, 1, 2))); 34