60

Celui de PedroM 0.81 l'est plus que celui de tigcc tongue.
Mais je dois finir le nouveau kernel sick (preos)...

61

Bon, j'ai fini la réécriture des prototypes et j'essaie de le compiler, ce foutu truc wink

J'ai fait quelques define pour remplacer des fonctions dépassées :
- bcopy -> memmove

J'ai défini certaines constantes qui devraient être dans des fichiers .h :
- HUGE_VAL - math.h - -> POSITIVE_INF - mais gcc me sort alors un warning Integer constant is too large for 'long' type alors que tout est en double à cet endroit. Comprend pas... -

Il manque des fonctions :
- strtod -> stdlib.h
- strncasecmp -> string.h
- getcwd -> unistd.h
- access -> unistd.h
- chdir -> unistd.h

J'ai à changer un argument pour ta fonction qsort, j'ai une fonction vcmp à mettre en paramètre, mais je ne sais pas quels sont les arguments que nécessitent la tienne - j'ai peut-être pas assez cherché... -

Il y a aussi la foncction modf qui utilise exclusivement des floats alors que tout le prg utilise des double, j'ai fait du transtypage à la volée avec variable intermédiaire.

J'ai pas encore la version .81 de PeDroM, donc je te donne les problèmes tels quels, mais certaines fonctions sont relativement rapidement écrites - bon, faut aussi que je finisse une fois mon dossier pour les cours...

62

Tu veux pas les ecrire et me les envoyer sous LGPL ou GPL ?

63

PpHd
: Tu veux pas les ecrire et me les envoyer sous LGPL ou GPL ?

pas de pb pour strncasecmp, les autres, il me faudra sans doute plus de temps, donc ce ne sera pas pour la fin de la semaine...
D'ailleurs, ce qui est le plus demandé, c'est strncasecmp wink

Ah oui, je pense faire passer la version que j'ai écrite de am sous GPL, ce sera plus simple smile

64

Attention, c'est quoi la licence de AM ? Tu ne peux pas faire ce que tu veux.
strtod doit etre definit dans tigcclib je pense.

unistd par contre.

65

PpHd :
Attention, c'est quoi la licence de AM ? Tu ne peux pas faire ce que tu veux.
strtod doit etre definit dans tigcclib je pense.
unistd par contre.

am est en lgpl, j'ai vérifié, version 2.1

unistd est la plus dure à faire, je crois neutral, c'est du particulier pour TI, ce sont des fonctions de changement de dossier, ce genre de petites bêtes.
Je vais voir pour strtod - qui est une version plus compliquée de atof, mais on ne peut pas la simplifier sad

66

Vérification faite, strtod n'existe pas dans tigcclib, ou alors c'est pas marqué sadsadsadsadsad

67

Tu peux voir dans les sources de la glibc. Attention, c'est dur a lire (Mais instructif).

68

PpHd
: Tu peux voir dans les sources de la glibc. Attention, c'est dur a lire (Mais instructif).

mouais, je vais peut-être y jeter un coup d'oeil...

Sinon, il y a presque 500 warnings - et encore, j'en ai supprimé une grande partie - à cause de comparaisons, signé/non signé, d'initialisation de pointeurs de caractères à la dur - machinchose = "truc bidule" dans le code -
Vais voir ce qu'on peut faire wink

69

A l'ancienne quoi grin

70

PpHd :
A l'ancienne quoi grin

Bon, c'est déjà plus propre, il n'y a plus qu'une centaine de warnings, pour des variables potentiellements non-initialisées.
Je sens que je vais faire une initialisation brutale grin

Au fait, on ne pourra sans doute pas améliorer ce boeuf qu'est AM... Si on veut plus, faudra changer ou réécrire sadsad

71

C'est toujours mieux que rien.

72

Bon, strncasecmp, c'est pipo - recopiage de glibc, c'est plus pratique... + définition de tolower récupérée dans PeDroM-internal.h wink -

En revanche, strtod... Autre paire de manche, le truc est ENORME!!!

73

Oui sad

74

PpHd :
Oui sad

Pour l'instant, je taille dedans, je supprime tout ce qui a un rapport avec le groupement par milliers, ça fait déjà ça en moins.
Et il détecte inf ou infinity pour l'instant - mais j'ai toujours encore un bug où il me dit sort un warning avec des 'long' type alors qu'on est en double... comprend pas.

Au fait, ton qsort() prend quoi comme arguments ? - enfin, c'est surtout le 4ème qui m'intéresse wink -

75

La meme chose que tigcc, le meme prototype que strcmp.

76

PpHd
: La meme chose que tigcc, le meme prototype que strcmp.

OK, je vais voir pourquoi ça ne marche pas - j'ai un warning à cause d'un problème de def -

77

Heu...
Le prototype doit etre:
short (*)(const void*, const void*)
alors que normelement il doit etre:
int (*)(const void*, const void*)

Mais sur TI, c'est la meme chose (sauf si on bidouille).

78

en fait, il était int, je l'ai passé en short, mais ça doit être à cause du sort_type dans l'argument de la fonction. Vais voir ce que je peut faire...

79

Si tu veux pas te faire trop *****:
#define int short partout grin

80

Miles
: en fait, il était int, je l'ai passé en short, mais ça doit être à cause du sort_type dans l'argument de la fonction. Vais voir ce que je peut faire...

j'ai mis un (compare_t) devant, ça fait plus de warning, on verra plus tard si ça marche ou pas...
Retour au strtod...

81

Essaye de voir si tu peux pas le remplacer par atof:
Lecture de chiffres, '.' our 'E'. skipe.
Copie dans une chaine temporaire de cette sequence.
Utilisation de atof dessus.

Pas besoin que ca soit generique, juste que ca suffit pour cela.

82

PpHd :
Essaye de voir si tu peux pas le remplacer par atof:
Lecture de chiffres, '.' our 'E'. skipe.
Copie dans une chaine temporaire de cette sequence.
Utilisation de atof dessus.
Pas besoin que ca soit generique, juste que ca suffit pour cela.

J'ai regardé si c'était possible, à priori non, le programme utilise le pointeur rendu par strtod pour savoir où en est la conversion de la chaîne de caractères et continuer ensuite sans doute la tokenisation de cette même chaîne neutral

83

En revanche, on peut faire TRES sale en utilisant strtol 3 fois...

84

Tu peux faire comme je t'ai dit et retourner un ptr apres la copie:
Lecture de chiffres, '.' our 'E'. skipe.
On a maintenant de const char*begin a const char *end (exclue).
Copie de begin a end-1 dans une chaine temporaire.
Utilisation de atof dessus.
Retourne end.

Non ?

85

PpHd :
Tu peux faire comme je t'ai dit et retourner un ptr apres la copie:
Lecture de chiffres, '.' our 'E'. skipe.
On a maintenant de const char*begin a const char *end (exclue).
Copie de begin a end-1 dans une chaine temporaire.
Utilisation de atof dessus.
Retourne end.
Non ?

Effectivement, ça devrait passer wink
En plus, c'est vrai que c'est pas trop trop compliqué à faire. A la brutale.

86

Puis si apres AM fonctionne, on pourra ameliorer.

87

PpHd
: Puis si apres AM fonctionne, on pourra ameliorer.

kler wink

Ce que j'ai fait : enlevé tous les espaces avant, je détecte le signe puis s'il y a infini ou pas.
Si tel n'est pas le cas, je regarde si le nombre qui arrive respecte les critères d'un nombre - ou presque, en fait neutral - :
- pas de signe dans la mantisse - déjà détecté -
- un point dans la mantisse
- un e, et là, j'autorise l'apparition d'un moins tout de suite après.
- un moins, donc, sinon jamais wink
- un entier après

Je balance directement la chaîne à atof et je rend l'indice + 1 du dernier caractère utilisé

88

Ca marche ?

89

PpHd
: Ca marche ?

pas encore testé.
Ca devrait marcher, déjà, pas d'erreurs de compilations.
Pour voir si ça fonctionne faut encore que j'essaie dans un programme...... - aller, on va essayer wink -

90

courage.
Ca va t'exploser a la figure grin
Reporte moi les bugs de PedroM wink