unsigned int check_print(t_struct_arg *args, const char *str, unsigned int i, unsigned schars) { t_params *params; t_tmp_arg *tmp; unsigned int cwrite; if ((params = (t_params*)malloc(sizeof(*params))) == NULL || (tmp = (t_tmp_arg*)malloc(sizeof(*tmp))) == NULL) return (i); init_params(params); if (is_params_nbr(str + i)) i = find_good_param(params, &(args->arg_tmp), str, i); i = init_flags(params, str, i + 1); i = init_len(params, str, i); if (params->is_size == 1) params->width = va_arg(args->arg, int); if (params->is_prec == 1) params->precision = va_arg(args->arg, int); if (params->is_other == 1) stock_arg(&(args->arg_tmp), tmp, str[i]); else if (params->is_other == 0) stock_arg(&(args->arg), tmp, str[i]); cwrite = print_it(tmp, params, str[i], schars); free(params); free(tmp); return (cwrite); }
unsigned int organize_and_print(t_struct_arg *args, const char *str, unsigned int i, unsigned chars_to_save) { t_params *params; t_tmp_arg *tmp; unsigned int chars_written; params = (t_params*)malloc(sizeof(*params)); tmp = (t_tmp_arg*)malloc(sizeof(*tmp)); if (params == NULL || tmp == NULL) return (i); init_params_to_zero(params); if (is_parameter_number(str + i)) i = find_good_param(params, &(args->arg_tmp), str, i); i = init_flags_width_prec(params, str, i + 1); i = init_length(params, str, i); if (params->is_width_in_arg == 1) params->width = va_arg(args->arg, int); if (params->is_precision_in_arg == 1) params->precision = va_arg(args->arg, int); if (params->is_other_param == 1) stock_arg(&(args->arg_tmp), tmp, str[i]); else if (params->is_other_param == 0) stock_arg(&(args->arg), tmp, str[i]); chars_written = print_it(tmp, params, str[i], chars_to_save); free(params); free(tmp); return (chars_written); }