char *ft_itoa_base(intmax_t n, int base) { int i; int len; int neg; char *str; char *cmp; cmp = init(&neg, &i); len = ft_get_len(n, base); is_neg(&neg, &n); if (n == 0) return (ft_strdup("0")); if (neg && !(str = (char *)malloc(sizeof(char) * (len + 1)))) return (NULL); else return (ft_neg(n, base, len)); str[len + 1] = 0; while (len + 1) { str[len] = cmp[n % base]; n = n / base; len--; } if (str[0] == '0') str = ft_strsub(str, 1, ft_strlen(str) - 1); return (str); }
char *ft_get_word(char *str) { int len; char *tmp; int i; int j; i = -1; j = 0; len = 0; ft_get_len(str, &len); tmp = ft_strnew(len + 1); while (str[++i] && ((!ft_isspace(str[i]) || (ft_isspace(str[i]) && i > 1 && str[i - 1] == '\\')))) { if (str[i]) { if ((str[i] == '\'' || str[i] == '\"') && ( i == 0 || (i > 1 && str[i - 1] != '\\'))) ft_get_quote(str, &i, &j, &tmp); else if (i > 0 && str[i - 1] == '\\' && --j >= 0) tmp[j++] = str[i]; else tmp[j++] = str[i]; } } return (tmp); }
char *ft_strtrim(const char *s) { size_t len; char *trim; char *tmp; if (!s) return (NULL); len = ft_get_len(s); trim = ft_strnew(len); if (trim) { tmp = trim; while (ft_isspace(*s)) s++; while (len--) *tmp++ = *s++; } return (trim); }
int ft_get_var(char **str, int ret, va_list ap) { t_print *print; size_t i; i = 0; if (!(print = (t_print*)ft_memalloc(sizeof(*print)))) return (-1); if ((print->flag = ft_get_flag(*str, &i)) < 0) return (ft_free_print(print)); if ((print->width = ft_get_width(*str, &i, print, ap)) < 0) return (ft_free_print(print)); if ((print->prec = ft_get_prec(*str, &i, print, ap)) < 0) return (ft_free_print(print)); if (!(print->len = ft_get_len(*str, &i))) return (ft_free_print(print)); if (ft_get_type(*str, &i, print) < 0) return (ft_free_print(print)); if (!(print->value = ft_get_value(print, ap, ret))) return (ft_free_print(print)); str[0] += i + 1; return (ft_create_str(print, print->flag, print->dot)); }