From f6ee1462e26d723cf5d53157eadaff2804d18c3a Mon Sep 17 00:00:00 2001 From: Charles Date: Mon, 28 Oct 2019 04:15:16 +0100 Subject: reformed pformat struct, rename t_flist --- parse.c | 39 +++++++++++++++++---------------------- 1 file changed, 17 insertions(+), 22 deletions(-) (limited to 'parse.c') diff --git a/parse.c b/parse.c index 864f95c..d486ae7 100644 --- a/parse.c +++ b/parse.c @@ -8,10 +8,10 @@ */ #include -t_pformat_list *parse(const char *format) +t_flist *parse(const char *format) { - t_pformat_list *format_list; - t_pformat_list *tmp; + t_flist *format_list; + t_flist *tmp; t_pformat *parsed; format_list = NULL; @@ -27,40 +27,35 @@ t_pformat_list *parse(const char *format) return (list_destroy(&format_list)); if ((tmp = list_new(parsed)) == NULL) return (list_destroy(&format_list)); - list_push_back(&format_list, tmp); + list_push_front(&format_list, tmp); } + list_reverse(&format_list); return (format_list); } -char *isolate_conversion(const char *conversion_start) -{ - int i; - - i = 0; - while (strrchr_index(CONVERSIONS_STR, conversion_start[i]) == -1) - i++; - return (ft_strndup(conversion_start, i + 1)); -} - t_pformat *parse_reduced(char *fmt) { t_pformat *pformat; + int i; - if (fmt == NULL) + i = 0; + while (strrchr_index(CONVERSIONS_STR, fmt[i]) == -1) + i++; + if ((fmt = ft_strndup(fmt, i + 1)) == NULL) return (NULL); if ((pformat = (t_pformat*)malloc(sizeof(t_pformat))) == NULL) return (NULL); - pformat->ap_index = -1; pformat->left_adjusted = FALSE; pformat->zero_padding = FALSE; - pformat->min_width.wildcard.exist = FALSE; - pformat->precision.wildcard.exist = FALSE; pformat->precision.value = -1; + pformat->precision.wildcard = FALSE; + pformat->min_width.value = -1; + pformat->min_width.wildcard = FALSE; pformat->len = ft_strlen(fmt); pformat->conversion = strrchr_index(CONVERSIONS_STR, fmt[pformat->len - 1]); - fmt[pformat->len - 1] = 0; - fmt = extract_standalone_flags(pformat, fmt); - fmt = extract_min_width(pformat, fmt); - fmt = extract_precision(pformat, fmt); + fmt[pformat->len - 1] = '\0'; + fmt = extract_standalone_flags(pformat, fmt + i); + fmt = extract_min_width(pformat, fmt + i); + fmt = extract_precision(pformat, fmt + i); return (pformat); } -- cgit