int print_lx(t_data *data, va_list arg) { char *nb; int i; char *mod; nb = what_uconv(arg, data, 16); if (ft_strcmp(nb, "0") == 0 && data->prec == 0) ft_str_empty(nb); mod = ((data->flag & 1) && ft_strcmp(nb, "0") != 0) ? "0X" : NULL; ft_strupper(nb); if (nb[0] == '-') i = data->field - ft_max(ft_strlen(nb) + ft_strnlen(mod), data->prec + 1); else i = data->field - ft_max(ft_strlen(nb), data->prec); if (data->prec != -1 && ((data->flag & 2) != 0)) data->flag = data->flag - 2; if ((data->flag & 4) != 0) print_nb_str(nb, data, mod); while ((i-- > 0) && (data->flag & 2) == 0) ft_printchar(' ', data); if ((data->flag & 4) == 0) print_nb_str(nb, data, mod); free(nb); return (1); }
char *ft_strnrchr(const char *s, int c, size_t n) { n = ft_strnlen(s, n) + 1; while (n-- > 0) if (s[n] == (char)c) return ((char *)(s + n)); return (NULL); }
size_t ft_strlcat(char *dst, const char *src, size_t size) { size_t dst_size; size_t src_size; size_t remaining_size; dst_size = ft_strnlen(dst, size); src_size = ft_strlen(src); remaining_size = size - dst_size; dst += dst_size; if (remaining_size > 0) { ft_strncpy(dst, src, remaining_size); dst[remaining_size - 1] = '\0'; } return (dst_size + src_size); }
size_t ft_strlcat(char *dst, const char *src, size_t size) { size_t s_dst; size_t s_src; size_t n_size; s_dst = ft_strnlen(dst, size); s_src = ft_strlen(src); n_size = size - s_dst; dst += s_dst; if (n_size > 0) { ft_strncpy(dst, src, n_size); dst[n_size - 1] = '\0'; } return (s_dst + s_src); }
char *ft_strndup(size_t n, const char *src) { size_t len; char *copy; copy = NULL; len = ft_strnlen(n, src); copy = (char *)malloc((1 + len) * sizeof(char)); if (copy != NULL) { copy[len] = 0; while (len > 0) { len -= 1; copy[len] = src[len]; } } return (copy); }
void ft_putnstr(char *str, size_t size) { write(1, str, ft_strnlen(str, size)); }
size_t ft_strnlen(const char *s, size_t maxlen) { if (*s && maxlen) return (ft_strnlen(s + 1, maxlen - 1) + 1); return (0); }