minishell
parse_opt_c_str.c
Go to the documentation of this file.
1 /* ************************************************************************** */
2 /* */
3 /* ::: :::::::: */
4 /* parse_opt_c_str.c :+: :+: :+: */
5 /* +:+ +:+ +:+ */
6 /* By: kfujita <kfujita@student.42tokyo.jp> +#+ +:+ +#+ */
7 /* +#+#+#+#+#+ +#+ */
8 /* Created: 2022/04/23 02:44:07 by kfujita #+# #+# */
9 /* Updated: 2023/01/26 21:33:55 by kfujita ### ########.fr */
10 /* */
11 /* ************************************************************************** */
12 
13 #include "ft_printf_local.h"
14 #include "../ft_string/ft_string.h"
15 
16 const char *const g_nullstr = "(null)";
17 
18 bool parse_opt_c_str(char fmt, va_list *args, t_fmt *p_ret)
19 {
20  if (fmt == 'c' || fmt == '%')
21  {
22  p_ret->type = CHAR;
23  if (fmt == 'c')
24  p_ret->data.c = (char)va_arg(*args, int);
25  else
26  p_ret->data.c = '%';
27  p_ret->str_len = 1;
28  }
29  else if (fmt == 's')
30  {
31  p_ret->type = STR;
32  p_ret->data.str = va_arg(*args, char *);
33  if (p_ret->data.str == NULL)
34  p_ret->data.str = (char *)g_nullstr;
35  p_ret->str_len = ft_strlen(p_ret->data.str);
36  }
37  else
38  return (false);
39  return (true);
40 }
@ CHAR
@ STR
size_t ft_strlen(const char *s)
Definition: ft_strlen.c:15
bool parse_opt_c_str(char fmt, va_list *args, t_fmt *p_ret)
const char *const g_nullstr
t_dtype type
t_data data
int str_len
char * str