Example #1
0
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);
}
Example #2
0
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);
}