-#define STN_FLAGS (STN_MINUS | STN_PLUS | STN_BASES)
-#define STN_UFLAGS (STN_FLAGS | STN_UNDERSCORE)
-#define STN_SFLAGS (STN_FLAGS | STN_SIGNED)
-#define STN_USFLAGS (STN_SFLAGS | STN_UNDERSCORE)
-
-#define STN_DECLARE_CONVERTOR(type, suffix) \
-const char *str_to_##suffix(type *num, const char *str, const char **next, const uns flags)
-
-#define STN_SIGNED_CONVERTOR(utype, itype, suffix) \
-static inline const char *str_to_##suffix(itype *num, const char *str, const char **next, const uns flags) \
-{ \
- return str_to_##suffix((utype*) num, str, next, flags | STN_SIGNED); \
+#define STN_BASES0 (STN_BASES | STN_OCT0)
+#define STN_FLAGS (STN_MINUS | STN_PLUS | STN_BASES)
+#define STN_UFLAGS (STN_FLAGS | STN_UNDERSCORE)
+#define STN_SFLAGS (STN_FLAGS | STN_SIGNED)
+#define STN_USFLAGS (STN_SFLAGS | STN_UNDERSCORE)
+
+#define STN_DECLARE_CONVERTOR(type, suffix) \
+const char *str_to_##suffix(type *num, const char *str, const char **next, const uint flags)
+
+#define STN_SIGNED_CONVERTOR(type, suffix, usuffix) \
+static inline const char *str_to_##suffix(type *num, const char *str, const char **next, const uint flags) \
+{ \
+ return str_to_##usuffix((void *) num, str, next, flags | STN_SIGNED | STN_PLUS | STN_MINUS); \