Exemple : ligne 123 à 234, avec un mélange de if avec blogcs entre {}, et sans {}, des else if imbriqués dans tous les sens, qui fait qu'on a du mal à voir ce qui se passe. C'est à ce genre de code que l'on doit des bugs qui ont fait beaucoup parler d'eux ces temps-ci. Certaines parties du code sont plus propres (hereusement d'ailleurs), mais celle-ci me fait un peu peur. Ca manque de cohérence dans le style, ça fait mal rangé.
A mon avis ce code est trop long et aurait du être splitté en plusieurs fonctions.
for(;;){intsleep_for=-1,j;if(until>0){usec_ty;y=now(CLOCK_MONOTONIC);if(y>until){r=-ETIME;gotofinish;}sleep_for=(int)((until-y)/USEC_PER_MSEC);}if(flag_file)if(access(flag_file,F_OK)<0){r=-errno;gotofinish;}if((j=poll(pollfd,notify>0?2:1,sleep_for))<0){if(errno==EINTR)continue;r=-errno;gotofinish;}elseif(j==0){r=-ETIME;gotofinish;}if(notify>0&&pollfd[POLL_INOTIFY].revents!=0)flush_fd(notify);if(pollfd[POLL_SOCKET].revents==0)continue;if((k=read(fd,buffer+p,sizeof(buffer)-p))<=0){r=k<0?-errno:-EIO;gotofinish;}p+=k;if(p<1)continue;if(buffer[0]==5){if(accept_cached){/* Hmm, first try with cached * passwords failed, so let's retry * with a normal password request */free(packet);packet=NULL;if(asprintf(&packet,"*002円%c%s%n",(int)(strlen(message)+1),message,&n)<0){r=-ENOMEM;gotofinish;}if((k=loop_write(fd,packet,n+1,true))!=n+1){r=k<0?(int)k:-EIO;gotofinish;}accept_cached=false;p=0;continue;}/* No password, because UI not shown */r=-ENOENT;gotofinish;}elseif(buffer[0]==2||buffer[0]==9){uint32_tsize;char**l;/* One ore more answers */if(p<5)continue;memcpy(&size,buffer+1,sizeof(size));size=le32toh(size);if(size+5>sizeof(buffer)){r=-EIO;gotofinish;}if(p-5<size)continue;if(!(l=strv_parse_nulstr(buffer+5,size))){r=-ENOMEM;gotofinish;}*_passphrases=l;break;}else{/* Unknown packet */r=-EIO;gotofinish;}}r=0;```
[^] # Re: Ca traduit bien un état d'esprit de la part des développeurs de systemd
Posté par totof2000 . En réponse au journal Systemd vs Linux, quand l'intransigeance d'un développeur tourne au ridicule.... Évalué à 2. Dernière modification le 04 avril 2014 à 08:02.
Exemple : ligne 123 à 234, avec un mélange de if avec blogcs entre {}, et sans {}, des else if imbriqués dans tous les sens, qui fait qu'on a du mal à voir ce qui se passe. C'est à ce genre de code que l'on doit des bugs qui ont fait beaucoup parler d'eux ces temps-ci. Certaines parties du code sont plus propres (hereusement d'ailleurs), mais celle-ci me fait un peu peur. Ca manque de cohérence dans le style, ça fait mal rangé.
A mon avis ce code est trop long et aurait du être splitté en plusieurs fonctions.