#801 Le 06/07/2011, à 15:35
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
Et les gens sont sensés recoder les équivalents plus buggés à tout ça?
Plus buggé je ne suis pas sûr, c'est le genre de domaine où ils ne lésinent pas sur les tests.
Puis bon, sont pas obliger de recoder un truc 100% équivalent : genre pour printf t'as rarement besoin de toutes les options.
Surtout que des fois, faut voir la gueule de l'implémentation de la lib standard livré avec le compilo.
Des fois, vaut mieux reécrire soi-même certaines parties (avec les compilo mainstream pas de soucis en général, mais avec les autres on voit le meilleur comme le pire...).
ou il y a des alternatives conseillées? ^^
Pour certaines règles je sais que y'a des compléments et/ou des notes, mais c'est que dans le standard (si tu veux bien me le payer je te le dirais ).
La j'ai juste trouvé certaines règles, rien de plus.
Puis bon, les trucs interdits sont en général pas trop handicapant (dans ce domaine là).
Genre la locale tu t'en fous, les signaux idem (tu joues direct avec les IT hard là), exit et abort c'est pas genre de fonction à appeler, et l'alloc dynamique si t'en fais et que ça foire, tu récupères ça comment ?
Dernière modification par grim7reaper (Le 06/07/2011, à 15:38)
Hors ligne
#802 Le 06/07/2011, à 15:42
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
Oui, mais apparemment il a gagné une certaine popularité en dehors du domaine automobile… je suppose que ça reste très embarqué mais bon ^^.
Sinon, oui, ils auront intérêts à blinder de tests unitairs leurs alternatives ^^. Faut juste que ce soit de vrai libs, pas des bricolages un peu partout dans le code, pour éviter l'utilisation des trucs interdits…
Hors ligne
#803 Le 06/07/2011, à 15:47
- The Uploader
Re : /* Topic des codeurs couche-tard [5] */
http://resources.infosecinstitute.com/tdss4-part-1/
Sacré morceau de code ! (surtout pour Win64).
- Oldies PC : Intel Pentium 3 @ 800 Mhz sur CM ASUS P2B-F, GeForce 4 Ti4800 SE, Disque Dur Hitachi 160 Go, 512 Mo de RAM, 3DFX Voodoo 2, Sound Blaster 16 ISA PnP, Windows 98 SE / XP)
- Desktop : Intel Core i7 6700K @ 4 GHz sur CM ASUS Z170-P, GeForce GTX 1070, SSD Samsung 850 EVO 1 To, 16 Go de RAM, Disque Dur Seagate Barracuda 3 To, Windows 10
Hors ligne
#804 Le 06/07/2011, à 16:46
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
Oui, mais apparemment il a gagné une certaine popularité en dehors du domaine automobile… je suppose que ça reste très embarqué mais bon ^^.
Oui ça reste dans l'embarqué, c'est trop exigeant pour être utilisé ailleurs (sauf si on est maso).
M'enfin y'a 2-3 règles dedans qui sont applicable aux développements plus classique (mais pas celle que j'ai cité ici, c'est évident).
Sinon, oui, ils auront intérêts à blinder de tests unitairs leurs alternatives ^^. Faut juste que ce soit de vrai libs, pas des bricolages un peu partout dans le code, pour éviter l'utilisation des trucs interdits…
Nan c'est pas le genre, vu les responsabilités que tu as derrière jpense que le mec qui se fait prendre à bidouiller fait pas long feu dans ce domaine (du moins j'ose espérer).
http://resources.infosecinstitute.com/tdss4-part-1/
Sacré morceau de code ! (surtout pour Win64).
Ouais, j'avais vu passer ça (ça va faire 1 semaine qu'ils en parlent sur dvp).
Mais c'est pas un nouveau truc (comme certains semblent le dire à droite ou à gauche), il existe depuis ~1 an (et le virus de base lui il a ~3 ans).
Bon après c'est bien, il est comme ZeuS : il fait antivirus
Hors ligne
#806 Le 06/07/2011, à 19:19
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
bon signe
Hors ligne
#807 Le 06/07/2011, à 19:41
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
Ouais, en fait c’est le C89 ; mais sans la bibliothèque standard (potentiellement pleine de bugs), en gros ?
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#808 Le 06/07/2011, à 19:42
- helly
Re : /* Topic des codeurs couche-tard [5] */
Putaiiiin, j’ai encore rien fait !
Je lis « le C en 20 h »
Chapitre 4 : les variables .
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#809 Le 06/07/2011, à 19:46
- xapantu
Re : /* Topic des codeurs couche-tard [5] */
Il est vraiment bien ce livre Ça ne t'assomme pas avec des trucs trop compliqués, qui sont assez décourageant quand on apprend le C en amateur…
Hors ligne
#810 Le 06/07/2011, à 19:54
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
Ouais, en fait c’est le C89 ; mais sans la bibliothèque standard (potentiellement pleine de bugs), en gros ?
Bah non, au final y'a assez peu de fonction interdite.
Et puis le standard MISRA C ne se limite pas à ce que j'ai posté.
Tiens, un résumé ici (c'est le seul truc que j'arrive à trouver, après faut allonger la monnaie).
@helly : spa du C++ que t'étais censé faire ?
Dernière modification par grim7reaper (Le 06/07/2011, à 19:58)
Hors ligne
#811 Le 06/07/2011, à 20:17
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
@Rolinh : pour la fonction treat_queue (dans copy.c) dont voici le début :
/*
* Treats the queue of files
* Returns:
* --> 0 on success
* --> -1 on error
* TODO: manage errors so it add the file causing problem to the error queue
*/
int
treat_queue(void)
{
struct file_to_copy crt_elt;
int retval = 0;
off_t size, new_size;
gdouble perct;
if ((size = cp_queue.size) == 0){
(void)fprintf(stderr, "Error : cannot calculate percentage as "
"err_queue size is null. No file can be copied\n");
goto err_null_size;
/* NOTREACHED */
}
On voit que si la file est vide tu sautes à la fin de fonction où tu fais ça
err_null_size:
display_queue(err_queue);
w_log();
return retval;
}
Or retval est initialisé à 0, il n'est pas modifié donc tu renvoies 0 => tu signifies donc un succès alors qu'une erreur a eu lieu.
Il faut donc passer retval à -1 dans le if où tu testes la taille.
Toujours dans la même fonction, à un moment tu fais ça :
perct = 1 - new_size / size;
gtk_progress_bar_set_fraction(pbar, perct);
Avec respectivement size et new_size des off_t et perct un double.
Bah là tu vas faire une division entière et affecter le résultat à un flottant. Je ne suis pas sûr que tu souhaites vraiment faire ça, je pense que tu veux faire une « vraie » division pour avoir ton pourcentage.
Toujours dans copy.c, mais cette fois dans la fonction add_copy. Au début tu fais ça :
if ((from = calloc(MAXPATHLEN, sizeof(char))) == NULL){
perror("Error allocating memory ");
exit(EXIT_FAILURE);
}
if ((to = calloc(MAXPATHLEN, sizeof(char))) == NULL){
perror("Error allocating memory ");
exit(EXIT_FAILURE);
}
Bon, c'est pas faux.
Après personnellement je trouve que c'est une perte de perf' pas justifié de mettre toutes les cases à 0.
Je m'explique : les fonctions qui bossent sur les chaînes en C elles s'arrêtent dès qu'elles rencontrent un '\0', donc pourquoi en mettre plusieurs alors qu'un seul suffit.
Du coup, je ferais ça :
if ((from = malloc(MAXPATHLEN * sizeof(char)) == NULL){
perror("Error allocating memory ");
exit(EXIT_FAILURE);
}
from[0] = '\0';
if ((to = malloc(MAXPATHLEN * sizeof(char)) == NULL){
perror("Error allocating memory ");
exit(EXIT_FAILURE);
}
to[0] = '\0';
Mais bon, ton code n'est pas faux non plus. C'est toi qui vois ;-)
Bon sinon tu fais des exit sans libérer la mémoire (genre si tu plantes l'alloc de to tu te barres sans libérer from), chui pas fan de ce comportement (même si les OS moderne nettoie derrière toi), m'enfin encore une fois c'est toi qui vois.
Bon sinon il me semble que MAXPATHLEN est pas obligatoirement défini (en fait je ne sais plus, faudrait que je vérifie) donc si c'est le cas, ajouter un petit
#ifndef MAXPATHLEN
#define MAXPATHLEN 42 /* Remplacer 42 par la valeur voulue :D */
#endif
devrait éviter d'éventuels soucis
(@Πυλάδης : oui je sais que sizeof(char) est inutile , mais ici je respecte les conventions de Rolinh.)
On reste dans add_copy et on vois ça :
} else{
if (is_dir(to) == 1){
/*
* If the target file is not
* specified in the destination
* we add it at the end.
*/
if (to[len_to - 1] == '/')
to[len_to - 1] = '\0';
path = get_filename(from);
(void)strcat(to, path);
}
retval = (copy(from, to) == 0) ? 0 : -1;
}
Sachant que is_dir retourne 1 si c'est un répertoire, 0 si c'en est pas un et -1 en cas d'erreur.
C'est normal de lancer la copie si is_dir retourne une erreur sur to ?
En cas de -1, devrait pas y'avoir le même bout de code que pour from (passer retval à -1 + appel à perror) ?
Tiens d'ailleurs, à cette ligne là :
path = get_filename(from);
si from est en fait composé uniquement du nom de fichier, genre comme quand on fait
cp file1 dir
bah dans ce cas get_filename va renvoyer NULL et le strcat qui suit va méchamment SIGSEGV.
(j'ai testé avec lincopier-cli et ça SIGSEGV bien comme prévu à l'endroit prévu).
Je te propose donc de réecrire ton code comme ça :
path = get_filename(from);
/* Si ça renvoie NULL c'est que y'a pas de '/' donc c'est le cas où on a juste le nom de fichier. */
if(path == NULL)
{
(void)strcat(to, "/"); /* Dans ce cas faut ajouter le "/", vu que tu l'as supprimé prédémment. */
path = from; /* comme y'a que le nom dans from, bah path == from. */
}
(void)strcat(to, path);
Jt'aurais bien fais une série de patch tout propre, mais comme je sais pas quelles modif' tu vas accepter et dans quel ordre tu vas les appliquer bah je suis marron. Désolé ^^"
Long post is long…
Dernière modification par grim7reaper (Le 07/07/2011, à 08:41)
Hors ligne
#812 Le 07/07/2011, à 01:05
- samυncle
Re : /* Topic des codeurs couche-tard [5] */
.
Hello world
Hors ligne
#813 Le 07/07/2011, à 01:24
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
Hum, je tente de clarifier les choses en sortant une partie de ma classe Entity dans une classe Actor, et la faire hériter, ça m'occupe… vue que la séparation entre la partie physique et la partie graphique des mes entités pas franchement claire (le rectangle de collision étant directement lié à la frame à un instant T…) bref, je sens que je vais mettre un certain temps à m'y habituer.
Sinon je me suis fournis un clavier mou, les trucs tout en caoutchouc qu'on peut rouler là, c'est un peu spé par ce que ce layout, que je n'avais pas pu admirer avant, comporte deux touches espaces (WTF?) l'une étant à la place de alt, (donc juste à coté de l'autre touche espace... oO) et que du coup j'ai du mal a taper sur super ou alt correctement, vu le décalage. Bref, heureusement que je l'ai pas payé…z
Oh, et les touches 1234789 du rownum marchaient pas de base, j'ai démonté et remonté, je pense que c'était la nappe qui était mal insérée, pour un truc neuf, ça fait bien…
allez, sur ces bonnes aventures, je vous dis bonne nuit.
Hors ligne
#814 Le 07/07/2011, à 02:03
- cm-t
Re : /* Topic des codeurs couche-tard [5] */
'Nuit;
Actu Ubuntu ☺/
Pauses Ubuntu sur Paris \_< -t
[(π)] La Quadrature du net
Hors ligne
#815 Le 07/07/2011, à 02:06
- nesthib
Re : /* Topic des codeurs couche-tard [5] */
plop
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#816 Le 07/07/2011, à 02:21
- Кຼزດ
Re : /* Topic des codeurs couche-tard [5] */
That
dou
Hors ligne
#817 Le 07/07/2011, à 02:24
- samυncle
Re : /* Topic des codeurs couche-tard [5] */
.
Hello world
Hors ligne
#818 Le 07/07/2011, à 03:23
- Pylades
Re : /* Topic des codeurs couche-tard [5] */
Bon sinon il me semble que MAXPATHLEN est pas obligatoirement défini (en fait je ne sais plus, faudrait que je vérifie) donc si c'est le cas, ajouter un petit
#ifndef MAXPATHLEN #define MAXPATHLEN 42 /* Remplacer 42 par la valeur voulue :D */ #endif
devrait éviter d'éventuels soucis
En effet ; elle n’est pas définie dans Gnu, par exemple…
“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
Linus Torvalds – 12 janvier 2003
Hors ligne
#819 Le 07/07/2011, à 06:42
- Compteur du TdCCT
Re : /* Topic des codeurs couche-tard [5] */
Scores totaux, depuis le début :
1) 3703 nesthib
2) 3279 samuncle
3) 3164 Πυλάδης
4) 2370 Кຼزດ
5) 1834 cm-t
6) 1747+5 grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
7) 1394 na kraïou
8) 866 helly
9) 862 \\Ouranos//
10) 687 tshirtman
11) 659 gnuuat
12) 565 Lagierl
13) 445 Rolinh
14) 418 nathéo
15) 388 The Uploader
16) 271 Kanor
17) 202 :!pakman
18) 196 Askelon
19) 121 ǤƦƯƝƬ
20) 99 kamui57
21) 93 petifrancais
22) 78 edge_one
22) 78 pierguiard
24) 70 gulp
25) 45 Le Rouge
26) 42 sakul
27) 37 ilagas
28) 36 xapantu
29) 30 keny
30) 26 gustare
30) 26 d10g3n
32) 25 GentooUser
32) 25 Morgiver
34) 24 ไ୦บเઢ'
34) 24 Steap
36) 20 CROWD
37) 18 Ph3nix_
38) 16 kouskous
39) 15 timsy
40) 12 stratoboy
40) 12 sailing
42) 11 alexises
42) 11 Crocoii
44) 10 Toineo
44) 10 NutMotion
44) 10 pseudovingtcinqcaracteres
44) 10 pfriedZ
44) 10 CasseTaTele
44) 10 Zeibux
44) 10 THS`
51) 8 Mornagest
52) 7 Vista
53) 6 ubuntlin
53) 6 asma.geek
55) 5 tendances-tdct
55) 5 kinouchou
57) 4 danychou56
57) 4 Neros
57) 4 Biaise
57) 4 totoflute
57) 4 pinballyoda ㋛
57) 4 NLS le pingouin
57) 4 ceric
57) 4 Dice-Man
57) 4 Pylade
66) 3 Revan26914
66) 3 raspouillas
66) 3 sweetly
69) 2 SoJaS
70) 1 geenux
70) 1 ArzhurBZH
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#820 Le 07/07/2011, à 06:42
- Compteur du TdCCT
Re : /* Topic des codeurs couche-tard [5] */
Scores de la période en cours :
1) 60 nesthib
2) 49 Πυλάδης
3) 48 samuncle
4) 43 Кຼزດ
5) 40 tshirtman
6) 35 cm-t
7) 14 na kraïou
7) 14 grim7reaper
9) 5 Rolinh
10) 3 The Uploader
Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !
J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).
Hors ligne
#821 Le 07/07/2011, à 09:42
- Кຼزດ
Re : /* Topic des codeurs couche-tard [5] */
grim7reaper a écrit :Bon sinon il me semble que MAXPATHLEN est pas obligatoirement défini (en fait je ne sais plus, faudrait que je vérifie) donc si c'est le cas, ajouter un petit
#ifndef MAXPATHLEN #define MAXPATHLEN 42 /* Remplacer 42 par la valeur voulue :D */ #endif
devrait éviter d'éventuels soucis
En effet ; elle n’est pas définie dans Gnu, par exemple…
Gnu définit PATHMAX, iirc
dou
Hors ligne
#822 Le 07/07/2011, à 09:50
- helly
Re : /* Topic des codeurs couche-tard [5] */
@helly : spa du C++ que t'étais censé faire ?
Y’a ce qu’on dit, y’a ce qu’on fait .
[foi=mauvaise]bhooo, c’est du C/C++ quoi :][/foi]
Dernière modification par helly (Le 07/07/2011, à 09:51)
Archlinux-wmii-dwb.
Un problème résolu ? Faites le savoir en mettant [résolu] à côté du titre de votre topic.
Un problème non résolu ? Faites le savoir en insultant ceux qui cherchent à vous aider.
Un site bleu super remasterised©, un wiki cherchant des volontaires pour traduire un site.
Hors ligne
#823 Le 07/07/2011, à 16:28
- Elzen
Re : /* Topic des codeurs couche-tard [5] */
Dites, les gens, question technique, pour Touhy : quelqu'un sait comment on fait pour monter/démonter une partoche manuellement, sans mount (qui demande les droits roots) ni gnome-mount (qui dépend de gnome, donc ç'pas portable) ? J'pensais qu'il y avait une commande, mais j'trouve pas…
J'ai cherché du côté de udev, mais tout ce que je trouve, c'est comment le régler pour qu'il monte des trucs automatiquement
Elzen : polisson, polémiste, polymathe ! (ex-ArkSeth)
Un script pour améliorer quelques trucs du forum.
La joie de t'avoir connu surpasse la peine de t'avoir perdu…
timezone[blocklist]
Hors ligne
#824 Le 07/07/2011, à 16:31
- tshirtman
Re : /* Topic des codeurs couche-tard [5] */
un petit script suid?
⍈
Hors ligne
#825 Le 07/07/2011, à 16:40
- grim7reaper
Re : /* Topic des codeurs couche-tard [5] */
Gnu définit PATHMAX, iirc
Je crois pas, à la limite je connais PATH_MAX mais c'est du POSIX.
C'est même une des inconsistances de POSIX car elle requiert des fonctions telles que getcwd ou realpath (qui se base plus ou moins sur PATH_MAX), mais n'exige pas la définition de PATH_MAX…
grim7reaper a écrit :@helly : spa du C++ que t'étais censé faire ?
Y’a ce qu’on dit, y’a ce qu’on fait .
[foi=mauvaise]bhooo, c’est du C/C++ quoi :][/foi]
*PAN*
Dites, les gens, question technique, pour Touhy : quelqu'un sait comment on fait pour monter/démonter une partoche manuellement, sans mount (qui demande les droits roots) ni gnome-mount (qui dépend de gnome, donc ç'pas portable) ? J'pensais qu'il y avait une commande, mais j'trouve pas…
J'ai cherché du côté de udev, mais tout ce que je trouve, c'est comment le régler pour qu'il monte des trucs automatiquement
pmount.
Après je sais qu'on peut faire des trucs avec udev, mais moi j'ai fait que du montage auto avec (jamais regardé pour du manuel).
Dernière modification par grim7reaper (Le 07/07/2011, à 16:53)
Hors ligne