Commit eb4c11f2 authored by Gabriel Genois's avatar Gabriel Genois

commenting

parent 4aba2823
Pipeline #103 failed with stages
in 14 minutes 47 seconds
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
......@@ -79,8 +79,6 @@ Tactic de recup des informations:
Pour le reste: do noting.
[length]
Je ne maitrise pas cette fonctionnalite. Test to do. Je peux quand meme faire la
validation en massurant que le char est compris.
hh
h
l
......
......@@ -13,6 +13,11 @@
#include "../includes/ft_printf.h"
/*
** ftpf_core
** ==============================
** Point de départ de la fonction. Cherche un début de requête ("%").
*/
void ftpf_core(const char **str, va_list *data, int *size)
{
int i;
......@@ -44,6 +49,11 @@ void ftpf_core(const char **str, va_list *data, int *size)
}
}
/*
** ft_printf
** ==============================
** Point d'entré. Déclaration de va_arg et retour de la size.
*/
int ft_printf(const char *str, ...)
{
va_list arg;
......
......@@ -12,7 +12,12 @@
/* ************************************************************************** */
#include "../includes/ft_printf.h"
/*
** ftpf_isvalidflags
** ==============================
** Valide si le Charatère est un char de Flag Valide.
** Retoure 1 si valide et 0 si invalide.
*/
int ftpf_isvalidflags(char c)
{
if (c == '-' || c == '+' || c == ' ' || c == '#' || c == '0')
......@@ -21,6 +26,11 @@ int ftpf_isvalidflags(char c)
return (0);
}
/*
** ftpf_flag_padsecu
** ==============================
** Valide que le Char de Flag Valide n'est pas une Précision ou un Width.
*/
int ftpf_flag_padsecu(char *input, size_t pos)
{
if (input[pos] == '0')
......@@ -35,6 +45,11 @@ int ftpf_flag_padsecu(char *input, size_t pos)
return (0);
}
/*
** ftpf_flags_widecheck
** ==============================
** Tente de détecter les Flags qui ne seraient pas aux bons endroits.
*/
void ftpf_flags_widecheck(t_pfdata **dt)
{
size_t pos;
......@@ -46,6 +61,11 @@ void ftpf_flags_widecheck(t_pfdata **dt)
ft_lstadd(&(*dt)->f, ft_lstnew(&(*dt)->input[pos], sizeof(char)));
}
/*
** ftpf_flags
** ==============================
** Tente de détecter les Flags qui sont au bon endroit.
*/
void ftpf_flags(t_pfdata **dt, int *pos)
{
while ((*dt)->input[++(*pos)] != '\0')
......
......@@ -13,6 +13,11 @@
#include "../includes/ft_printf.h"
/*
** ftpf_getlength
** ==============================
** Détecte le length. Valeurs de retour: 0:None,1:hh,2:h,3:l,4:ll,5:j,6:z
*/
int ftpf_getlength(t_pfdata **dt)
{
int ipos;
......@@ -44,18 +49,28 @@ int ftpf_getlength(t_pfdata **dt)
return (res);
}
/*
** ftpf_get_numuwf
** ==============================
** Récupère la valeur numérique transmise via va_arg selon la length.
** Branche Unsigned.
*/
char *ftpf_get_numuwf(va_list *data, int l, int base, t_pfdata **dt)
{
char *str;
if (l == 1)
str = ft_uitoa_base((unsigned char) va_arg((*data), unsigned int), base);
str = ft_uitoa_base(
(unsigned char) va_arg((*data), unsigned int), base);
else if (l == 2)
str = ft_uitoa_base((unsigned short int) va_arg((*data), unsigned int), base);
str = ft_uitoa_base(
(unsigned short int) va_arg((*data), unsigned int), base);
else if (l == 3)
str = ft_luitoa_base((unsigned long int) va_arg((*data), unsigned long int), base);
str = ft_luitoa_base(
(unsigned long int) va_arg((*data), unsigned long int), base);
else if (l == 4 || l == 5 || l == 6)
str = ft_lluitoa_base((unsigned long long int) va_arg((*data), unsigned long long int), base);
str = ft_lluitoa_base((unsigned long long int) va_arg(
(*data), unsigned long long int), base);
else
str = ft_uitoa_base((unsigned int) va_arg((*data), unsigned int), base);
if (ft_strlen(str) == 1 && str[0] == '0')
......@@ -63,6 +78,12 @@ char *ftpf_get_numuwf(va_list *data, int l, int base, t_pfdata **dt)
return (str);
}
/*
** ftpf_get_numuwf
** ==============================
** Récupère la valeur numérique transmise via va_arg selon la length.
** Branche Signed.
*/
char *ftpf_get_numswf(va_list *data, int l, int base, t_pfdata **dt)
{
char *str;
......@@ -74,7 +95,8 @@ char *ftpf_get_numswf(va_list *data, int l, int base, t_pfdata **dt)
else if (l == 3)
str = ft_litoa_base((long int) va_arg((*data), long int), base);
else if (l == 4 || l == 5 || l == 6)
str = ft_llitoa_base((long long int) va_arg((*data), long long int), base);
str = ft_llitoa_base((long long int) va_arg(
(*data), long long int), base);
else
str = ft_itoa_base((int) va_arg((*data), int), base);
if (ft_strlen(str) == 1 && str[0] == '0')
......@@ -82,6 +104,11 @@ char *ftpf_get_numswf(va_list *data, int l, int base, t_pfdata **dt)
return (str);
}
/*
** ftpf_get_n
** ==============================
** Retourne le nombre convertie en chaine char selon son type et sa longeur.
*/
char *ftpf_get_n(t_pfdata **dt, va_list *data)
{
int l;
......
......@@ -13,10 +13,16 @@
#include "../includes/ft_printf.h"
/*
** ftpf_ist
** ==============================
** Compare un Char à la liste de char valide pour un type.
** Retourne 1 si valide. 0 si invlaide.
*/
int ftpf_ist(char c)
{
int i;
const char s[16] = "sSpdDioOuUxXcC%";
const char s[16] = "spdiouxXc%";
i = -1;
while (s[++i] != '\0')
......@@ -25,6 +31,12 @@ int ftpf_ist(char c)
return (0);
}
/*
** ftpf_iachar
** ==============================
** Compare un Char à la liste de char valide hors-type dans le but d'accepter
** les requêtes comprenant des erreurs de syntaxes.
*/
int ftpf_iachar(char c)
{
int i;
......@@ -39,6 +51,13 @@ int ftpf_iachar(char c)
return (0);
}
/*
** ftpf_isolate
** ==============================
** Depuis la chaine input; détecte une requête, l'isole puis la retourne. Le
** tout en avancant le pointeur de la chaine input à la fin de la requête
** détectée.
*/
void ftpf_isolate(const char **str, char **src, int *ipos)
{
int i;
......
#include "../includes/ft_printf.h"
/*
** FIXME: Wide char ne sont plus demandés. Il sont désactivés via l'isolation.
** ftpf_strings_null
** ==============================
** Retourne une chaine static alloué en mémoire pour signaler un élément null.
*/
char *ftpf_strings_null(void)
{
char *s;
......@@ -9,28 +15,30 @@ char *ftpf_strings_null(void)
return (s);
}
/*
** ftpf_getwcharlen
** ==============================
** Détecte la longueur à prévoir pour une chaine CHAR pour stocker un WCHAR.
*/
int ftpf_getwcharlen(wchar_t wchar)
{
if (wchar == 0)
return (0);
else if (wchar <= 0x7f)
{
return (1);
}
else if (wchar <= 0x7ff)
{
return (2);
}
else if (wchar <= 0xffff)
{
return (3);
}
else
{
return (4);
}
}
/*
** ftpf_charfromwchar
** ==============================
** Contruit et retourne une chaine CHAR depuis un Charactère WCHAR.
*/
char *ftpf_charfromwchar(wchar_t wchar)
{
char *str;
......@@ -63,13 +71,17 @@ char *ftpf_charfromwchar(wchar_t wchar)
return (str);
}
/*
** ft_lstfromwchar
** ==============================
** Contruit et ajoute à (*dt)->data les chaines CHAR depuis une chaine WCHAR.
*/
int ft_lstfromwchar(t_pfdata **dt, wchar_t *item)
{
int ilenght;
char *buffer;
wchar_t tmp;
ilenght = 0;
if(!item)
{
......@@ -88,6 +100,5 @@ int ft_lstfromwchar(t_pfdata **dt, wchar_t *item)
ft_lstfromstr(&(*dt)->data, &buffer);
free(buffer);
}
//ftpf_tmp_printpfdata(dt);
return (ilenght);
}
......@@ -14,7 +14,13 @@
#include "../includes/ft_printf.h"
/*
** ftpf_notypes
** ==============================
** Dans le cas où ftpf_isolate ne trouve pas de requête valide ou même
** comportant des erreurs mais qu'un "%" est présent, un tente de détecter
** une requête partiel ou les cas limites comme "% gt".
*/
int ftpf_notypes(const char **input, int *size, int *ipos)
{
t_pfdata *dt;
......@@ -30,34 +36,18 @@ int ftpf_notypes(const char **input, int *size, int *ipos)
while ((*input)[i] != '\0' && ftpf_iachar((*input)[i]) == 1)
++i;
ilen = i - (*ipos);
dt->input = ft_strsub((*input), (*ipos), ilen);
//ft_putstr(dt->input);
ftpf_flags(&dt, &itlen);
ftpf_flags_widecheck(&dt);
ftpf_width(&dt, NULL, &itlen);
if ((*input)[i] != '\0')
{
if (ftpf_iachar((*input)[i]) == 0)
{
(dt)->data = ft_lstnew(&(*input)[i], sizeof(char));
imode = 1;
}
}
//ftpf_tmp_printpfdata(&dt);
if(imode == 1)
(*ipos)++;
else
--dt->w;
(*size) = (*size) + ftpf_write(&dt);
(*ipos) = (*ipos) + (ilen - 1);
return (0);
......
......@@ -13,15 +13,23 @@
#include "../includes/ft_printf.h"
/*
** ftpf_precision_add
** ==============================
** Ajoute C à la liste (*lst) pour NB fois.
*/
void ftpf_precision_add(t_list **lst, char c, int nb)
{
//ft_putnbr(nb);
//ft_putnbr(ftpf_numbers_counts(lst));
//nb = nb - ftpf_numbers_counts(lst);
while (nb-- > 0)
ft_lstadd(lst, ft_lstnew(&c, sizeof(char)));
}
/*
** ftpf_apply_precision_insert
** ==============================
** Applique la précsion selon le type.
** FIXME: Norme: fonction trop grande.
*/
void ftpf_apply_precision_insert(int i, t_pfdata **dt, int dz)
{
int m;
......@@ -31,7 +39,6 @@ void ftpf_apply_precision_insert(int i, t_pfdata **dt, int dz)
if (i < 0)
return ;
i = (*dt)->p - i;
m = 0;
c = '0';
if (dz == 0)
......@@ -43,13 +50,10 @@ void ftpf_apply_precision_insert(int i, t_pfdata **dt, int dz)
(*dt)->w = ((*dt)->p > 0 ? (*dt)->w + (*dt)->p : (*dt)->w);
return ;
}
if (!ft_isdigit(ftpf_getcfl(&(*dt)->data)))
{
if (ftpf_iscinlist(&(*dt)->data, '-'))
{
i = i - 1;
}
m = ftpf_getcfl(&(*dt)->data);
tmp = (*dt)->data->next;
free((*dt)->data->content);
......@@ -57,7 +61,6 @@ void ftpf_apply_precision_insert(int i, t_pfdata **dt, int dz)
(*dt)->data = tmp;
if (!ftpf_iscinlist(&(*dt)->data, '-'))
i = i + 1;
}
ftpf_precision_add(&(*dt)->data, c, i);
c = '-';
......@@ -65,6 +68,11 @@ void ftpf_apply_precision_insert(int i, t_pfdata **dt, int dz)
ft_lstadd(&(*dt)->data, ft_lstnew(&m, sizeof(char)));
}
/*
** ftpf_precision
** ==============================
** Applique la précsion selon le type.
*/
void ftpf_precision(t_pfdata **dt)
{
int i;
......@@ -72,22 +80,16 @@ void ftpf_precision(t_pfdata **dt)
i = 0;
dz = 1;
if ((*dt)->p >= 0)
{
if (!ftpf_istypenum((*dt)->t) && (*dt)->t != '%')
{
ft_lstcutat(&(*dt)->data, (*dt)->p);
}
else
{
i = ftpf_numbers_counts(&(*dt)->data);
dz = ftpf_numbers_cval(&(*dt)->data);
}
}
if (ftpf_istypenum((*dt)->t))
{
ftpf_apply_precision_insert(i, dt, dz);
}
}
......@@ -13,6 +13,12 @@
#include "../includes/ft_printf.h"
/*
** ftpf_wmemcpy
** ==============================
** memcpy pour WCHAR.
** FIXME: Les WideChar ne sont plus demandés.
*/
void ftpf_wmemcpy(void *dst, void *src, size_t n)
{
wchar_t *odst;
......@@ -26,6 +32,12 @@ void ftpf_wmemcpy(void *dst, void *src, size_t n)
odst[nb] = osrc[nb];
}
/*
** ftpf_strings_w
** ==============================
** Ajoute à (*dt)->data une entré WCHAR ou *WCHAR
** FIXME: Les WideChar ne sont plus demandés.
*/
int ftpf_strings_w(t_pfdata **dt, va_list *data)
{
wchar_t c;
......@@ -33,8 +45,6 @@ int ftpf_strings_w(t_pfdata **dt, va_list *data)
char *tmp;
int l;
l = 1;
if ((*dt)->t == 'C' || (*dt)->t == 'c')
{
......@@ -48,7 +58,6 @@ int ftpf_strings_w(t_pfdata **dt, va_list *data)
ft_lstfromstr(&(*dt)->data, &tmp);
free(tmp);
}
}
else if ((*dt)->t == 'S' || (*dt)->t == 's')
{
......@@ -59,6 +68,11 @@ int ftpf_strings_w(t_pfdata **dt, va_list *data)
return (l);
}
/*
** ftpf_string_n
** ==============================
** Ajoute à (*dt)->data une entré CHAR ou *CHAR
*/
int ftpf_string_n(t_pfdata **dt, va_list *data)
{
char c;
......@@ -85,6 +99,12 @@ int ftpf_string_n(t_pfdata **dt, va_list *data)
}
return (l);
}
/*
** ftpf_string_p
** ==============================
** Ajoute à (*dt)->data l'adresse d'un pointeur.
*/
int ftpf_string_p(t_pfdata **dt, va_list *data)
{
char *src;
......@@ -112,6 +132,11 @@ int ftpf_string_p(t_pfdata **dt, va_list *data)
return (0);
}
/*
** ftpf_strings
** ==============================
** Fonction d'aiguillage selon le type.
*/
void ftpf_strings(t_pfdata **dt, va_list *data)
{
int l;
......
......@@ -13,9 +13,17 @@
#include "../includes/ft_printf.h"
/*
** ftpf_gettype
** ==============================
** Tente de trouver un Char de type valide dans la chaine
** input transmise depuis **dt. Sur succès, assigne le char
** à la variable de type (*dt)->t. Sur echec, rien n'est fait.
** Old String: sSpdDioOuUxXcC%
*/
void ftpf_gettype(t_pfdata **dt)
{
char s[16] = "sSpdDioOuUxXcC%";
char s[16] = "spdiouxXc%";
int i = -1;
int x;
......@@ -25,6 +33,11 @@ void ftpf_gettype(t_pfdata **dt)
(*dt)->t = (s[i]);
}
/*
** ftpf_getflagsnw
** ==============================
** Obtient et attribue au container (**dt) les flags et le Width de la requête.
*/
void ftpf_getflagsnw(t_pfdata **dt, va_list *data)
{
int pos;
......@@ -35,6 +48,11 @@ void ftpf_getflagsnw(t_pfdata **dt, va_list *data)
ftpf_width(dt, data, &pos);
}
/*
** ftpf_getprecision
** ==============================
** Obtient et attribue au container (**dt) précision de la requête.
*/
void ftpf_getprecision(t_pfdata **dt, va_list *data)
{
int pos;
......@@ -61,13 +79,16 @@ void ftpf_getprecision(t_pfdata **dt, va_list *data)
}
}
/*
** ftpf_initcontainer
** ==============================
** Génère et initialise le container (*dt).
*/
t_pfdata *ftpf_initcontainer()
{
t_pfdata *dt;
dt = (t_pfdata *)malloc(sizeof(*dt));
if (dt == NULL)
return (NULL);
dt->data = NULL;
dt->f = NULL;
dt->raw = NULL;
......@@ -81,14 +102,18 @@ t_pfdata *ftpf_initcontainer()
return (dt);
}
/*
** ftpf_types
** ==============================
** Détecte le Type et agis en concéquance. Obtient plusieurs informations
** complémentaire au passage.
*/
void ftpf_types(char **input, va_list *data, int *size)
{
t_pfdata *dt;
char *percent;
dt = ftpf_initcontainer();
if (dt == NULL)
ft_putstr("\nWarning: Memory allocation error.\n");
dt->input = ft_strdup((*input));
ftpf_gettype(&dt);
ftpf_getflagsnw(&dt, data);
......@@ -97,10 +122,7 @@ void ftpf_types(char **input, va_list *data, int *size)
|| dt->t == 'c' || dt->t == 'C')
{
ftpf_strings(&dt, data);
ftpf_numbers_put_lefpad(&dt, size);
//ftpf_tmp_printpfdata(&dt);
}
else if (dt->t != '%')
(*size) = (*size) + ftpf_numbers(&dt, data);
......@@ -116,7 +138,6 @@ void ftpf_types(char **input, va_list *data, int *size)
dt->w = dt->w - dt->s;
else
(*size) = (*size) + (dt->s > 0 ? dt->s : 0);
//ftpf_tmp_printpfdata(&dt);
if ((*input) != NULL)
free((*input));
(*input) = NULL;
......
......@@ -13,6 +13,12 @@
#include "../includes/ft_printf.h"
/*
** ftpf_istypenum
** ==============================
** Détecte un Chars valides pour type numérique.
** Si valide retourne 1. Sinon, 0.
*/
int ftpf_istypenum(char c)
{
const char num[10] = "diouxXOUD";
......@@ -25,6 +31,13 @@ int ftpf_istypenum(char c)
return (0);
}
/*
** ftpf_iscinlist
** ==============================
** "Is Char in List". Retourne 1 si le Char C est présent
** dans la liste chainé pointé par LIST. Le char doit être
** à la position 0 du *CHAR présent dans la liste pointée.
*/
int ftpf_iscinlist(t_list **list, char c)
{
t_list *tmp;
......@@ -43,7 +56,12 @@ int ftpf_iscinlist(t_list **list, char c)
return (0);
}
/*
** ftpf_getcfl
** ==============================
** "Get Char For List". Get the first char of a String CHAR in a linked list.
** On failure, return 0.
*/
char ftpf_getcfl(t_list **lst)
{
char *s;
......@@ -58,15 +76,18 @@ char ftpf_getcfl(t_list **lst)
return (0);
}
/*
** ftpf_numbers_put_ox
** ==============================
** Ajoute les préfix 0, x et X au besoin.
*/
void ftpf_numbers_put_ox(t_pfdata **dt, int mode)
{
if ((*dt)->s < 0)
return ;
(*dt)->s = 0;
if (ftpf_iscinlist(&(*dt)->f, '#') || (*dt)->t == 'p')
{
if (mode)
{
if ((*dt)->t == 'x' || (*dt)->t == 'p')
......@@ -79,7 +100,6 @@ void ftpf_numbers_put_ox(t_pfdata **dt, int mode)
}
else
{