diff options
author | Xavier Roche <xroche@users.noreply.github.com> | 2013-05-14 19:20:14 +0000 |
---|---|---|
committer | Xavier Roche <xroche@users.noreply.github.com> | 2013-05-14 19:20:14 +0000 |
commit | 0573b166b2aa2ee40be1a328636cb539d96aeeac (patch) | |
tree | 60225c1335ff26c5e4f29bc7043548daa44c7d73 /src/htsparse.c | |
parent | eaef7eb1f7ae092d73eeffa245ab418d70748fdf (diff) |
Merge sources from windows-1252 to utf-8
Diffstat (limited to 'src/htsparse.c')
-rw-r--r-- | src/htsparse.c | 622 |
1 files changed, 311 insertions, 311 deletions
diff --git a/src/htsparse.c b/src/htsparse.c index 5a25d88..128074b 100644 --- a/src/htsparse.c +++ b/src/htsparse.c @@ -80,7 +80,7 @@ Please visit our Website: http://www.httrack.com // does nothing #define XH_uninit do {} while(0) -// version optimisée, qui permet de ne pas toucher aux html non modifiés (update) +// version optimisée, qui permet de ne pas toucher aux html non modifiés (update) #define REALLOC_SIZE 8192 #define HT_ADD_CHK(A) if (((int) (A)+ht_len+1) >= ht_size) { \ ht_size=(A)+ht_len+REALLOC_SIZE; \ @@ -226,7 +226,7 @@ Please visit our Website: http://www.httrack.com tempo \ ); \ fflush(makeindex_fp); \ - fclose(makeindex_fp); /* à ne pas oublier sinon on passe une nuit blanche */ \ + fclose(makeindex_fp); /* à ne pas oublier sinon on passe une nuit blanche */ \ makeindex_fp=NULL; \ usercommand(opt,0,NULL,fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_html_utf8),"index.html"),"primary","primary"); \ } \ @@ -235,9 +235,9 @@ Please visit our Website: http://www.httrack.com } while(0) // Enregistrement d'un lien: -// on calcule la taille nécessaire: taille des 3 chaînes à stocker (taille forcée paire, plus 2 octets de sécurité) -// puis on vérifie qu'on a assez de marge dans le buffer - sinon on en réalloue un autre -// enfin on écrit à l'adresse courante du buffer, qu'on incrémente. on décrémente la taille dispo d'autant ensuite +// on calcule la taille nécessaire: taille des 3 chaînes à stocker (taille forcée paire, plus 2 octets de sécurité) +// puis on vérifie qu'on a assez de marge dans le buffer - sinon on en réalloue un autre +// enfin on écrit à l'adresse courante du buffer, qu'on incrémente. on décrémente la taille dispo d'autant ensuite // codebase: si non nul et si .class stockee on le note pour chemin primaire pour classes // FA,FS: former_adr et former_fil, lien original #define liens_record_sav_len(A) @@ -405,9 +405,9 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } if (RUN_CALLBACK4(opt, check_html, r->adr,(int)r->size,urladr,urlfil)) { - FILE* fp=NULL; // fichier écrit localement + FILE* fp=NULL; // fichier écrit localement char* adr=r->adr; // pointeur (on parcourt) - char* lastsaved; // adresse du dernier octet sauvé + 1 + char* lastsaved; // adresse du dernier octet sauvé + 1 hts_log_print(opt, LOG_DEBUG, "scanning file %s%s (%s)..", urladr, urlfil, savename); // Indexing! @@ -422,14 +422,14 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { #endif // Now, parsing - if ((opt->getmode & 1) && (ptr>0)) { // récupérer les html sur disque - // créer le fichier html local - HT_ADD_FOP; // écrire peu à peu le fichier + if ((opt->getmode & 1) && (ptr>0)) { // récupérer les html sur disque + // créer le fichier html local + HT_ADD_FOP; // écrire peu à peu le fichier } if (!error) { time_t user_interact_timestamp = 0; - int detect_title=0; // détection du title + int detect_title=0; // détection du title int back_add_stats = opt->state.back_add_stats; // char* in_media=NULL; // in other media type (real media and so..) @@ -453,16 +453,16 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } INSCRIPT; INSCRIPT inscript_state_pos=INSCRIPT_START; char* inscript_name=NULL; // script tag name - int inscript_tag=0; // on est dans un <body onLoad="... terminé par > + int inscript_tag=0; // on est dans un <body onLoad="... terminé par > char inscript_tag_lastc='\0'; // terminaison (" ou ') du "<body onLoad=.." - int inscriptgen=0; // on est dans un code générant, ex après obj.write(".. + int inscriptgen=0; // on est dans un code générant, ex après obj.write(".. //int inscript_check_comments=0, inscript_in_comments=0; // javascript comments - char scriptgen_q='\0'; // caractère faisant office de guillemet (' ou ") + char scriptgen_q='\0'; // caractère faisant office de guillemet (' ou ") //int no_esc_utf=0; // ne pas echapper chars > 127 int nofollow=0; // ne pas scanner // - int parseall_lastc='\0'; // dernier caractère parsé pour parseall + int parseall_lastc='\0'; // dernier caractère parsé pour parseall //int parseall_incomment=0; // dans un /* */ (exemple: a = /* URL */ "img.gif";) // char* intag_start = adr; @@ -474,7 +474,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { int emited_footer = 0; // emitted footer comment tag(s) count // int parent_relative=0; // the parent is the base path (.js, .css..) - HT_ADD_START; // débuter + HT_ADD_START; // débuter lastsaved=adr; /* Initialize script automate for comments, quotes.. */ @@ -519,7 +519,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { inscript_locked=1; /* Don't exit js space upon </script> */ if (opt->parsedebug) { HT_ADD("<@@ inscript @@>"); } inscript_name="script"; - intag=1; // because après <script> on y est .. - pas utile + intag=1; // because après <script> on y est .. - pas utile intag_start_valid=0; // OUI car nous sommes dans du code, plus dans du "vrai" tag hts_log_print(opt, LOG_DEBUG, "note: this file is a javascript file"); // for javascript only @@ -579,10 +579,10 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { * ( r->adr + r->size ) = '\0'; // ------------------------------------------------------------ - // analyser ce qu'il y a en mémoire (fichier html) + // analyser ce qu'il y a en mémoire (fichier html) // on scanne les balises // ------------------------------------------------------------ - opt->state._hts_in_html_done=0; // 0% scannés + opt->state._hts_in_html_done=0; // 0% scannés opt->state._hts_in_html_parsing=1; // flag pour indiquer un parsing base[0]='\0'; // effacer base-href @@ -614,12 +614,12 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // Construction index.html (sommaire) // Avant de tester les a href, // Ici on teste si l'on doit construire l'index vers le(s) site(s) miroir(s) - if (!makeindex_done) { // autoriation d'écrire un index + if (!makeindex_done) { // autoriation d'écrire un index if (!detect_title) { if (opt->depth == liens[ptr]->depth) { // on note toujours les premiers liens if (!in_media) { if (opt->makeindex && (ptr>0)) { - if (opt->getmode & 1) { // autorisation d'écrire + if (opt->getmode & 1) { // autorisation d'écrire p=strfield(adr,"title"); if (p) { if (*(adr-1)=='/') p=0; // /title @@ -639,7 +639,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { if (p) { // ok center if (makeindex_fp==NULL) { file_notify(opt,"", "", fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_html_utf8),"index.html"), 1, 1, 0); - verif_backblue(opt,StringBuff(opt->path_html_utf8)); // générer gif + verif_backblue(opt,StringBuff(opt->path_html_utf8)); // générer gif makeindex_fp=filecreate(&opt->state.strc, fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_html_utf8),"index.html")); if (makeindex_fp!=NULL) { @@ -666,7 +666,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } if (lienrelatif(tempo,liens[ptr]->sav,concat(OPT_GET_BUFF(opt),StringBuff(opt->path_html_utf8),"index.html"))==0) { - detect_title=1; // ok détecté pour cette page! + detect_title=1; // ok détecté pour cette page! makeindex_links++; // un de plus strcpybuff(makeindex_firstlink,tempo); // @@ -697,7 +697,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - } else if (liens[ptr]->depth<opt->depth) { // on a sauté level1+1 et level1 + } else if (liens[ptr]->depth<opt->depth) { // on a sauté level1+1 et level1 HT_INDEX_END; } } // if (opt->makeindex) @@ -723,7 +723,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { intag_start = adr; for(intag_name = adr + 1 ; is_realspace(*intag_name) ; intag_name++ ); intag_start_valid = 1; - codebase[0]='\0'; // effacer éventuel codebase + codebase[0]='\0'; // effacer éventuel codebase /* Meta ? */ if (check_tag(intag_start, "meta")) { @@ -803,7 +803,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - // éliminer les <!-- (commentaires) : intag dévalidé + // éliminer les <!-- (commentaires) : intag dévalidé if (*(adr+1)=='!') if (*(adr+2)=='-') if (*(adr+3)=='-') { @@ -827,7 +827,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } else if (!incomment) { intag=0; //inquote=0; - // entrée dans du javascript? + // entrée dans du javascript? // on parse ICI car il se peut qu'on ait eu a parser les src=.. dedans //if (!inscript) { // sinon on est dans un obj.write(".. if ((intag_start_valid) && @@ -839,20 +839,20 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { ) { char* a=intag_start; // < // ** while(is_realspace(*(--a))); - if (*a=='<') { // sûr que c'est un tag? + if (*a=='<') { // sûr que c'est un tag? if (check_tag(intag_start,"script")) inscript_name="script"; else inscript_name="style"; inscript=1; inscript_state_pos=INSCRIPT_START; - intag=1; // because après <script> on y est .. - pas utile + intag=1; // because après <script> on y est .. - pas utile intag_start_valid=0; // OUI car nous sommes dans du code, plus dans du "vrai" tag if (opt->parsedebug) { HT_ADD("<@@ inscript @@>"); } } } } else { /* end of comment? */ - // vérifier fermeture correcte + // vérifier fermeture correcte if ( (*(adr-1)=='-') && (*(adr-2)=='-') ) { intag=0; incomment=0; @@ -890,12 +890,12 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // ------------------------------------------------------------ - // parsing évolé + // parsing évolé // ------------------------------------------------------------ if (((isalpha((unsigned char)*adr)) || (*adr=='/') || (inscript) || (in_media) || (inscriptgen))) { // sinon pas la peine de tester.. - /* caractère de terminaison pour "miniparsing" javascript=.. ? + /* caractère de terminaison pour "miniparsing" javascript=.. ? (ex: <a href="javascript:()" action="foo"> ) */ if (inscript_tag) { if (inscript_tag_lastc) { @@ -914,11 +914,11 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // Note: // Certaines pages ne respectent pas le html - // notamment les guillements ne sont pas fixés + // notamment les guillements ne sont pas fixés // Nous sommes dans un tag, donc on peut faire un test plus - // large pour pouvoi prendre en compte ces particularités + // large pour pouvoi prendre en compte ces particularités - // à vérifier: ACTION, CODEBASE, VRML + // à vérifier: ACTION, CODEBASE, VRML if (in_media) { if (strcmp(in_media,"LNK")==0) { // real media @@ -952,56 +952,56 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } } - } else if (ptr>0) { /* pas première page 0 (primary) */ + } else if (ptr>0) { /* pas première page 0 (primary) */ p=0; // saut pour le nom de fichier: adresse nom fichier=adr+p // ------------------------------ - // détection d'écriture JavaScript. + // détection d'écriture JavaScript. // osons les obj.write et les obj.href=.. ! osons! - // note: inscript==1 donc on sautera après les \" + // note: inscript==1 donc on sautera après les \" if (inscript) { - if (inscriptgen) { // on est déja dans un objet générant.. + if (inscriptgen) { // on est déja dans un objet générant.. if (*adr==scriptgen_q) { // fermeture des " ou ' if (*(adr-1)!='\\') { // non - inscriptgen=0; // ok parsing terminé + inscriptgen=0; // ok parsing terminé } } } else { char* a=NULL; char check_this_fking_line=0; // parsing code javascript.. - char must_be_terminated=0; // caractère obligatoire de terminaison! + char must_be_terminated=0; // caractère obligatoire de terminaison! int token_size; - if (!(token_size=strfield(adr,".writeln"))) // détection ...objet.write[ln]("code html")... + if (!(token_size=strfield(adr,".writeln"))) // détection ...objet.write[ln]("code html")... token_size=strfield(adr,".write"); if (token_size) { a=adr+token_size; while(is_realspace(*a)) a++; // sauter espaces - if (*a=='(') { // début parenthèse - check_this_fking_line=2; // à parser! + if (*a=='(') { // début parenthèse + check_this_fking_line=2; // à parser! must_be_terminated=')'; a++; // sauter ( } } // euhh ??? ??? - /* else if (strfield(adr,".href")) { // détection ...objet.href="... + /* else if (strfield(adr,".href")) { // détection ...objet.href="... a=adr+5; while(is_realspace(*a)) a++; // sauter espaces - if (*a=='=') { // ohh un égal - check_this_fking_line=1; // à noter! - must_be_terminated=';'; // et si t'as oublié le ; tu sais pas coder + if (*a=='=') { // ohh un égal + check_this_fking_line=1; // à noter! + must_be_terminated=';'; // et si t'as oublié le ; tu sais pas coder a++; // sauter = } }*/ - // on a un truc du genre instruction"code généré" dont on parse le code + // on a un truc du genre instruction"code généré" dont on parse le code if (check_this_fking_line) { while(is_realspace(*a)) a++; - if ((*a=='\'') || (*a=='"')) { // départ de '' ou "" + if ((*a=='\'') || (*a=='"')) { // départ de '' ou "" char *b; scriptgen_q=*a; // quote - b=a+1; // départ de la chaîne - // vérifier forme ("code") et pas ("code"+var), ingérable + b=a+1; // départ de la chaîne + // vérifier forme ("code") et pas ("code"+var), ingérable do { if (*a==scriptgen_q && *(a-1)!='\\') // quote non slash break; // sortie @@ -1009,22 +1009,22 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { && ( *(a-1) != '\r' || *(a-2) != '\\' ) ) /* and not CRLF and no .. */ break; else - a++; // caractère suivant + a++; // caractère suivant } while((a-b) < HTS_URLMAXSIZE / 2); if (*a==scriptgen_q) { // fin du quote a++; while(is_realspace(*a)) a++; - if (*a==must_be_terminated) { // parenthèse fermante: ("..") + if (*a==must_be_terminated) { // parenthèse fermante: ("..") // bon, on doit parser une ligne javascript // 1) si check.. ==1 alors c'est un nom de fichier direct, donc - // on fixe p sur le saut nécessaire pour atteindre le nom du fichier - // et le moteur se débrouillera ensuite tout seul comme un grand - // 2) si check==2 c'est un peu plus tordu car là on génére du + // on fixe p sur le saut nécessaire pour atteindre le nom du fichier + // et le moteur se débrouillera ensuite tout seul comme un grand + // 2) si check==2 c'est un peu plus tordu car là on génére du // code html au sein de code javascript au sein de code html - // dans ce cas on doit fixer un flag à un puis ensuite dans la boucle + // dans ce cas on doit fixer un flag à un puis ensuite dans la boucle // on devra parser les instructions standard comme <a href etc - // NOTE: le code javascript autogénéré n'est pas pris en compte!! + // NOTE: le code javascript autogénéré n'est pas pris en compte!! // (et ne marche pas dans 50% des cas de toute facon!) if (check_this_fking_line==1) { p=(int) (b - adr); // calculer saut! @@ -1049,7 +1049,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } } - // fin detection code générant javascript vers html + // fin detection code générant javascript vers html // ------------------------------ @@ -1062,12 +1062,12 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { p=rech_tageq(adr,"href"); if (p) { // href.. tester si c'est une bas href! if ((intag_start_valid) && check_tag(intag_start, "base")) { // oui! - // ** note: base href et codebase ne font pas bon ménage.. + // ** note: base href et codebase ne font pas bon ménage.. p_type=2; // c'est un chemin } } - /* Tags supplémentaires à vérifier (<img src=..> etc) */ + /* Tags supplémentaires à vérifier (<img src=..> etc) */ if (p==0) { int i=0; while( (p==0) && (strnotempty(hts_detect[i])) ) { @@ -1082,7 +1082,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - /* Tags supplémentaires en début à vérifier (<object .. hotspot1=..> etc) */ + /* Tags supplémentaires en début à vérifier (<object .. hotspot1=..> etc) */ if (p==0) { int i=0; while( (p==0) && (strnotempty(hts_detectbeg[i])) ) { @@ -1091,7 +1091,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - /* Tags supplémentaires à vérifier : URL=.. */ + /* Tags supplémentaires à vérifier : URL=.. */ if (p==0) { int i=0; while( (p==0) && (strnotempty(hts_detectURL[i])) ) { @@ -1132,7 +1132,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } - /* Tags supplémentaires à vérifier, mais à ne pas capturer */ + /* Tags supplémentaires à vérifier, mais à ne pas capturer */ if (p==0) { int i=0; while( (p==0) && (strnotempty(hts_detectandleave[i])) ) { @@ -1143,17 +1143,17 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { p_nocatch=1; /* ne pas rechercher */ } - /* Evénements */ + /* Evénements */ if (p==0 && ! inscript /* we don't want events inside document.write */ ) { int i=0; - /* détection onLoad etc */ + /* détection onLoad etc */ while( (p==0) && (strnotempty(hts_detect_js[i])) ) { p=rech_tageq(adr,hts_detect_js[i]); i++; } - /* non détecté - détecter également les onXxxxx= */ + /* non détecté - détecter également les onXxxxx= */ if (p==0) { if ( (*adr=='o') && (*(adr+1)=='n') && isUpperLetter(*(adr+2)) ) { p=0; @@ -1166,32 +1166,32 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } else p=0; } } - /* OK, événement repéré */ + /* OK, événement repéré */ if (p) { - inscript_tag_lastc=*(adr+p); /* à attendre à la fin */ + inscript_tag_lastc=*(adr+p); /* à attendre à la fin */ adr+=p+1; /* saut */ /* - On est désormais dans du code javascript + On est désormais dans du code javascript */ inscript_name=""; inscript=inscript_tag=1; inscript_state_pos=INSCRIPT_START; if (opt->parsedebug) { HT_ADD("<@@ inscript @@>"); } } - p=0; /* quoi qu'il arrive, ne rien démarrer ici */ + p=0; /* quoi qu'il arrive, ne rien démarrer ici */ } - // <APPLET CODE=.. pour les applet java.. [CODEBASE (chemin..) à faire] + // <APPLET CODE=.. pour les applet java.. [CODEBASE (chemin..) à faire] if (p==0) { p=rech_tageq(adr,"code"); if (p) { if ((intag_start_valid) && check_tag(intag_start,"applet")) { // dans un <applet ! - p_type=-1; // juste le nom de fichier+dossier, écire avant codebase + p_type=-1; // juste le nom de fichier+dossier, écire avant codebase add_class=1; // ajouter .class au besoin - // vérifier qu'il n'y a pas de codebase APRES + // vérifier qu'il n'y a pas de codebase APRES // sinon on swappe les deux. - // pas très propre mais c'est ce qu'il y a de plus simple à faire!! + // pas très propre mais c'est ce qu'il y a de plus simple à faire!! { char *a; @@ -1207,12 +1207,12 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { strncatbuff(tempo,a,(int) (b - a) ); strcatbuff( tempo," "); strncatbuff(tempo,adr,(int) (a - adr - 1)); - // éventuellement remplire par des espaces pour avoir juste la taille + // éventuellement remplire par des espaces pour avoir juste la taille while((int) strlen(tempo)<((int) (b - adr))) strcatbuff(tempo," "); // pas d'erreur? if ((int) strlen(tempo) == ((int) (b - adr) )) { - strncpy(adr,tempo,strlen(tempo)); // PAS d'octet nul à la fin! + strncpy(adr,tempo,strlen(tempo)); // PAS d'octet nul à la fin! p=0; // DEVALIDER!! p_type=0; add_class=0; @@ -1226,8 +1226,8 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - // liens à patcher mais pas à charger (ex: codebase) - if (p==0) { // note: si non chargé (ex: ignorer .class) patché tout de même + // liens à patcher mais pas à charger (ex: codebase) + if (p==0) { // note: si non chargé (ex: ignorer .class) patché tout de même p=rech_tageq(adr,"codebase"); if (p) { if ((intag_start_valid) && check_tag(intag_start,"applet")) { // dans un <applet ! @@ -1270,7 +1270,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - // entrée dans une applet javascript + // entrée dans une applet javascript /*if (!inscript) { // sinon on est dans un obj.write(".. if (p==0) if (rech_sampletag(adr,"script")) @@ -1279,10 +1279,10 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } }*/ - // Ici on procède à une analyse du code javascript pour tenter de récupérer - // certains fichiers évidents. - // C'est devenu obligatoire vu le nombre de pages qui intègrent - // des images réactives par exemple + // Ici on procède à une analyse du code javascript pour tenter de récupérer + // certains fichiers évidents. + // C'est devenu obligatoire vu le nombre de pages qui intègrent + // des images réactives par exemple } } else if (inscript) { @@ -1317,7 +1317,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { //while(is_realspace(*(--a))); while( is_realspace(*a) ) a--; a--; - if (*a=='<') { // sûr que c'est un tag? + if (*a=='<') { // sûr que c'est un tag? inscript=0; if (opt->parsedebug) { HT_ADD("<@@ /inscript @@>"); } } @@ -1328,7 +1328,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { foo("url") or foo(url) foo "url" */ - char expected = '='; // caractère attendu après + char expected = '='; // caractère attendu après char* expected_end = ";"; int can_avoid_quotes=0; char quotes_replacement='\0'; @@ -1350,21 +1350,21 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } if (!nc) nc = strfield(adr,".href"); // document.location="doc" if (!nc) if ( (nc = strfield(adr,".open")) ) { // window.open("doc",.. - expected='('; // parenthèse - expected_end="),"; // fin: virgule ou parenthèse + expected='('; // parenthèse + expected_end="),"; // fin: virgule ou parenthèse ensure_not_mime=1; //* ensure the url is not a mime type */ } if (!nc) if ( (nc = strfield(adr,".replace")) ) { // window.replace("url") - expected='('; // parenthèse - expected_end=")"; // fin: parenthèse + expected='('; // parenthèse + expected_end=")"; // fin: parenthèse } if (!nc) if ( (nc = strfield(adr,".link")) ) { // window.link("url") - expected='('; // parenthèse - expected_end=")"; // fin: parenthèse + expected='('; // parenthèse + expected_end=")"; // fin: parenthèse } if (!nc && (nc = strfield(adr,"url")) && (!isalnum(*(adr - 1))) && *(adr - 1) != '_') { // url(url) - expected='('; // parenthèse - expected_end=")"; // fin: parenthèse + expected='('; // parenthèse + expected_end=")"; // fin: parenthèse can_avoid_quotes=1; quotes_replacement=')'; } else { @@ -1478,8 +1478,8 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // ------------------------------------------------------------ - // dernier recours - parsing "sale" : détection systématique des .gif, etc. - // risque: générer de faux fichiers parazites + // dernier recours - parsing "sale" : détection systématique des .gif, etc. + // risque: générer de faux fichiers parazites // fix: ne parse plus dans les commentaires // ------------------------------------------------------------ if ( opt->parseall && (opt->parsejava & HTSPARSE_NO_AGGRESSIVE) == 0 @@ -1494,7 +1494,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { if (parseall_incomment) { if ((*adr=='/') && (*(adr-1)=='*')) parseall_incomment=0; - incomment_justquit=1; // ne pas noter dernier caractère + incomment_justquit=1; // ne pas noter dernier caractère } else { if ((*adr=='/') && (*(adr+1)=='*')) parseall_incomment=1; @@ -1509,15 +1509,15 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { noparse=1; } - /* vérifier que l'on est pas dans un <!-- --> pur */ + /* vérifier que l'on est pas dans un <!-- --> pur */ if ( (!intag) && (incomment) && (!inscript)) noparse=1; /* commentaire */ // recherche d'URLs if (!noparse) { //if ((!parseall_incomment) && (!noparse)) { - if (!p) { // non déja trouvé - if (adr != r->adr) { // >1 caractère + if (!p) { // non déja trouvé + if (adr != r->adr) { // >1 caractère // scanner les chaines if ((*adr == '\"') || (*adr=='\'')) { // "xx.gif" 'xx.gif' if (strchr("=(,",parseall_lastc)) { // exemple: a="img.gif.. (handles comments) @@ -1525,17 +1525,17 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { char stop=*adr; // " ou ' int count=0; - // sauter caractères + // sauter caractères a++; // copier while((*a) && (*a!='\'') && (*a!='\"') && (count<HTS_URLMAXSIZE)) { count++; a++; } - // ok chaine terminée par " ou ' + // ok chaine terminée par " ou ' if ((*a == stop) && (count<HTS_URLMAXSIZE) && (count>0)) { char c; //char* aend; // - //aend=a; // sauver début + //aend=a; // sauver début a++; while(is_taborspace(*a)) a++; c=*a; @@ -1548,13 +1548,13 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // strncatbuff(tempo,adr+1,count); // - if ((!strchr(tempo,' ')) || inscript) { // espace dedans: méfiance! (sauf dans code javascript) + if ((!strchr(tempo,' ')) || inscript) { // espace dedans: méfiance! (sauf dans code javascript) int invalid_url=0; // escape unescape_amp(tempo); - // Couper au # ou ? éventuel + // Couper au # ou ? éventuel { char* a=strchr(tempo,'#'); if (a) @@ -1564,7 +1564,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { *a='\0'; } - // vérifier qu'il n'y a pas de caractères spéciaux + // vérifier qu'il n'y a pas de caractères spéciaux if (!strnotempty(tempo)) invalid_url=1; else if (strchr(tempo,'*') @@ -1580,8 +1580,8 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { /* non invalide? */ if (!invalid_url) { - // Un plus à la fin? Alors ne pas prendre sauf si extension ("/toto.html#"+tag) - if (c!='+') { // PAS de plus à la fin + // Un plus à la fin? Alors ne pas prendre sauf si extension ("/toto.html#"+tag) + if (c!='+') { // PAS de plus à la fin #if 0 char* a; #endif @@ -1598,15 +1598,15 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { #if HTS_USEMMS || strfield(tempo,"mms:") #endif - ) // ok pas de problème + ) // ok pas de problème url_ok=1; else if (tempo[strlen(tempo)-1]=='/') { // un slash: ok.. - if (inscript) // sinon si pas javascript, méfiance (répertoire style base?) + if (inscript) // sinon si pas javascript, méfiance (répertoire style base?) url_ok=1; } #if 0 else if ((a=strchr(tempo,'/'))) { // un slash: ok.. - if (inscript) { // sinon si pas javascript, méfiance (style "text/css") + if (inscript) { // sinon si pas javascript, méfiance (style "text/css") if (strchr(a+1,'/')) // un seul / : abandon (STYLE type='text/css') if (!strchr(tempo,' ')) // avoid spaces (too dangerous for comments) url_ok=1; @@ -1626,7 +1626,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { url_ok=0; } // - // Ok, cela pourrait être une URL + // Ok, cela pourrait être une URL if (url_ok) { // Check if not fodbidden tag (id,name..) @@ -1671,7 +1671,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // plus dans un commentaire if ( inscript_state_pos == INSCRIPT_START && inscript_state_pos_prev == INSCRIPT_START) { - parseall_lastc=*adr; // caractère avant le prochain + parseall_lastc=*adr; // caractère avant le prochain } @@ -1680,10 +1680,10 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // ------------------------------------------------------------ - // p!=0 : on a repéré un éventuel lien + // p!=0 : on a repéré un éventuel lien // ------------------------------------------------------------ // - if ((p>0) || (valid_p)) { // on a repéré un lien + if ((p>0) || (valid_p)) { // on a repéré un lien //int lien_valide=0; char* eadr=NULL; /* fin de l'URL */ //char* quote_adr=NULL; /* adresse du ? dans l'adresse */ @@ -1693,18 +1693,18 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { int noquote=0; char *tag_attr_start = adr; - // si nofollow ou un stop a été déclenché, réécrire tous les liens en externe + // si nofollow ou un stop a été déclenché, réécrire tous les liens en externe if ((nofollow) || (opt->state.stop && /* force follow not to lose previous cache data */ !opt->is_update) ) p_nocatch=1; - // écrire codebase avant, flusher avant code + // écrire codebase avant, flusher avant code if ((p_type==-1) || (p_type==-2)) { if ((opt->getmode & 1) && (ptr>0)) { HT_ADD_ADR; // refresh } - lastsaved=adr; // dernier écrit+1 + lastsaved=adr; // dernier écrit+1 } // sauter espaces @@ -1720,7 +1720,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { ) { if (!quote) if ((*adr=='\"') || (*adr=='\'')) { - quote=*adr; // on doit attendre cela à la fin + quote=*adr; // on doit attendre cela à la fin if (inscriptgen && *(adr - 1) == '\\') { quoteinscript=1; /* will wait for \" */ } @@ -1733,11 +1733,11 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { /* Stop at \n (LF) if primary links or link lists */ if (ptr == 0 || (in_media && strcmp(in_media,"LNK")==0)) quote='\n'; - /* s'arrêter que ce soit un ' ou un " : pour document.write('<img src="foo'+a); par exemple! */ + /* s'arrêter que ce soit un ' ou un " : pour document.write('<img src="foo'+a); par exemple! */ else if (inscript && ! unquoted_script) noquote=1; - // sauter éventuel \" ou \' javascript + // sauter éventuel \" ou \' javascript if (inscript) { // on est dans un obj.write(".. if (*adr=='\\') { if ((*(adr+1)=='\'') || (*(adr+1)=='"')) { // \" ou \' @@ -1760,19 +1760,19 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { adr+=(l+4); } - /* éviter les javascript:document.location=.. : les parser, plutôt */ + /* éviter les javascript:document.location=.. : les parser, plutôt */ if (ok!=-1) { if (strfield(adr,"javascript:") && ! inscript /* we don't want to parse 'javascript:' inside document.write inside scripts */ ) { ok=-1; /* - On est désormais dans du code javascript + On est désormais dans du code javascript */ inscript_name=""; inscript_tag=inscript=1; inscript_state_pos=INSCRIPT_START; - inscript_tag_lastc=quote; /* à attendre à la fin */ + inscript_tag_lastc=quote; /* à attendre à la fin */ if (opt->parsedebug) { HT_ADD("<@@ inscript @@>"); } } } @@ -1784,24 +1784,24 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } eadr=adr; - // ne pas flusher après code si on doit écrire le codebase avant! + // ne pas flusher après code si on doit écrire le codebase avant! if ((p_type!=-1) && (p_type!=2) && (p_type!=-2)) { if ((opt->getmode & 1) && (ptr>0)) { HT_ADD_ADR; // refresh } - lastsaved=adr; // dernier écrit+1 - // après on écrira soit les données initiales, - // soir une URL/lien modifié! - } else if (p_type==-1) p_flush=adr; // flusher jusqu'à adr ensuite + lastsaved=adr; // dernier écrit+1 + // après on écrira soit les données initiales, + // soir une URL/lien modifié! + } else if (p_type==-1) p_flush=adr; // flusher jusqu'à adr ensuite if (ok!=-1) { // continuer - // découper le lien + // découper le lien do { - if ((* (unsigned char*) eadr)<32) { // caractère de contrôle (ou \0) + if ((* (unsigned char*) eadr)<32) { // caractère de contrôle (ou \0) if (!is_space(*eadr)) ok=0; } - if ( ( ((int) (eadr - adr)) ) > HTS_URLMAXSIZE) // ** trop long, >HTS_URLMAXSIZE caractères (on prévoit HTS_URLMAXSIZE autres pour path) + if ( ( ((int) (eadr - adr)) ) > HTS_URLMAXSIZE) // ** trop long, >HTS_URLMAXSIZE caractères (on prévoit HTS_URLMAXSIZE autres pour path) ok=-1; // ne pas traiter ce lien if (ok > 0) { @@ -1811,7 +1811,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { ( *eadr == quote && ( !quoteinscript || *(eadr -1) == '\\') ) // end quote || ( noquote && (*eadr == '\"' || *eadr == '\'') ) // end at any quote || (!noquote && quote == '\0' && is_realspace(*eadr) ) // unquoted href - ) // si pas d'attente de quote spéciale ou si quote atteinte + ) // si pas d'attente de quote spéciale ou si quote atteinte ok=0; } else if (ending_p && (*eadr==ending_p)) ok=0; @@ -1833,7 +1833,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { ok=0; break; // case '?': non! - case '\\': if (inscript) ok=0; break; // \" ou \' point d'arrêt + case '\\': if (inscript) ok=0; break; // \" ou \' point d'arrêt case '?': /*quote_adr=adr;*/ break; // noter position query } } @@ -1865,11 +1865,11 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { if (ok==0) { // tester un lien char BIGSTK lien[HTS_URLMAXSIZE*2]; - int meme_adresse=0; // 0 par défaut pour primary + int meme_adresse=0; // 0 par défaut pour primary //char *copie_de_adr=adr; //char* p; - // construire lien (découpage) + // construire lien (découpage) if ( (((int) (eadr - adr))-1) < HTS_URLMAXSIZE ) { // pas trop long? strncpy(lien,adr,((int) (eadr - adr))-1); *(lien+ (((int) (eadr - adr)))-1 )='\0'; @@ -1883,18 +1883,18 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // ------------------------------------------------------ - // Lien repéré et extrait + // Lien repéré et extrait if (strnotempty(lien)>0) { // construction du lien char BIGSTK adr[HTS_URLMAXSIZE*2],fil[HTS_URLMAXSIZE*2]; // ATTENTION adr cache le "vrai" adr - int forbidden_url=-1; // lien non interdit (mais non autorisé..) + int forbidden_url=-1; // lien non interdit (mais non autorisé..) int just_test_it=0; // mode de test des liens - int set_prio_to=0; // pour capture de page isolée - int import_done=0; // lien importé (ne pas scanner ensuite *à priori*) + int set_prio_to=0; // pour capture de page isolée + int import_done=0; // lien importé (ne pas scanner ensuite *à priori*) // adr[0]='\0'; fil[0]='\0'; // - // 0: autorisé - // 1: interdit (patcher tout de même adresse) + // 0: autorisé + // 1: interdit (patcher tout de même adresse) hts_log_print(opt, LOG_DEBUG, "link detected in html (tag): %s",lien); @@ -1912,16 +1912,16 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { a=strchr(lien,':'); // http:// if (a) { a++; - while(*a=='/') a++; // position après http:// + while(*a=='/') a++; // position après http:// } else { - a=lien; // début - while(*a=='/') a++; // position après http:// + a=lien; // début + while(*a=='/') a++; // position après http:// } - q=strchr(a,'?'); // ne pas traiter après '?' + q=strchr(a,'?'); // ne pas traiter après '?' if (!q) q=a+strlen(a)-1; while(( p=strstr(a,"//")) && (!done) ) { // remplacer // par / - if ((int) p>(int) q) { // après le ? (toto.cgi?param=1//2.3) + if ((int) p>(int) q) { // après le ? (toto.cgi?param=1//2.3) done=1; // stopper } else { char BIGSTK tempo[HTS_URLMAXSIZE*2]; @@ -1934,7 +1934,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } #endif - // purger espaces de début et fin, CR,LF résiduels + // purger espaces de début et fin, CR,LF résiduels // (IMG SRC="foo.<\n><\t>gif<\t>") { char* a = lien; @@ -1975,10 +1975,10 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { *a='\0'; } else query[0]='\0'; - // conversion & -> & et autres joyeusetés + // conversion & -> & et autres joyeusetés unescape_amp(lien); unescape_amp(query); - // décoder l'inutile (%2E par exemple) et coder espaces + // décoder l'inutile (%2E par exemple) et coder espaces // Bad: strcpybuff(lien,unescape_http(lien)); // Bad: strcpybuff(lien,unescape_http_unharm(lien, (no_esc_utf)?0:1)); /* Never unescape high-chars (we don't know the encoding!!) */ @@ -1988,7 +1988,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { strcatbuff(lien,query); /* restore */ } - // convertir les éventuels \ en des / pour éviter des problèmes de reconnaissance! + // convertir les éventuels \ en des / pour éviter des problèmes de reconnaissance! { char* a; for(a = jump_identification(lien) ; *a != '\0' && *a != '?' ; a++) { @@ -2007,13 +2007,13 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { if (strnotempty(lien)==0) // sauf si plus de nom de fichier strcpybuff(lien,"./"); - // vérifie les /~machin -> /~machin/ + // vérifie les /~machin -> /~machin/ // supposition dangereuse? // OUI!! #if HTS_TILDE_SLASH if (lien[strlen(lien)-1]!='/') { char *a=lien+strlen(lien)-1; - // éviter aussi index~1.html + // éviter aussi index~1.html while (((int) a>(int) lien) && (*a!='~') && (*a!='/') && (*a!='.')) a--; if (*a=='~') { strcatbuff(lien,"/"); // ajouter slash @@ -2040,7 +2040,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - // éliminer les éventuels :80 (port par défaut!) + // éliminer les éventuels :80 (port par défaut!) if (link_has_authority(lien)) { char * a; a=strstr(lien,"//"); // "//" authority @@ -2060,7 +2060,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { //} #endif while(isdigit((unsigned char)*b)) { port*=10; port+=(int) (*b-'0'); b++; } - if (port==defport) { // port 80, default - c'est débile + if (port==defport) { // port 80, default - c'est débile char BIGSTK tempo[HTS_URLMAXSIZE*2]; tempo[0]='\0'; strncatbuff(tempo,lien,(int) (a - lien)); @@ -2079,7 +2079,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } */ - // vérifier que l'on ne doit pas ajouter de .class + // vérifier que l'on ne doit pas ajouter de .class if (!error) { if (add_class) { char *a = lien+strlen(lien)-1; @@ -2091,15 +2091,15 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - // si c'est un chemin, alors vérifier (toto/toto.html -> http://www/toto/) + // si c'est un chemin, alors vérifier (toto/toto.html -> http://www/toto/) if (!error) { hts_log_print(opt, LOG_DEBUG, "position link check %s",lien); if ((p_type==2) || (p_type==-2)) { // code ou codebase - // Vérifier les codebase=applet (au lieu de applet/) + // Vérifier les codebase=applet (au lieu de applet/) if (p_type==-2) { // codebase if (strnotempty(lien)) { - if (fil[strlen(lien)-1]!='/') { // pas répertoire + if (fil[strlen(lien)-1]!='/') { // pas répertoire strcatbuff(lien,"/"); } } @@ -2158,12 +2158,12 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { if (start_of_filename == NULL) strcatbuff(lien, "/"); while( (a > lien) && (*a) && (*a!='/')) a--; - if (*a=='/') { // ok on a repéré le dernier / + if (*a=='/') { // ok on a repéré le dernier / if (start_of_filename != NULL && a + 1 >= start_of_filename) { *(a+1)='\0'; // couper } } else { - *lien='\0'; // éliminer + *lien='\0'; // éliminer error=1; // erreur, ne pas poursuivre } } @@ -2195,7 +2195,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // ajouter chemin de base href.. - if (strnotempty(_base)) { // considérer base + if (strnotempty(_base)) { // considérer base if (!link_has_authority(lien)) { // non absolue if (*lien!='/') { // non absolu sur le site (/) if ( ((int) strlen(_base)+(int) strlen(lien))<HTS_URLMAXSIZE) { @@ -2205,8 +2205,8 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // base est absolue strcpybuff(tempo,_base); strcatbuff(tempo,lien + ((*lien=='/')?1:0) ); - strcpybuff(lien,tempo); // patcher en considérant base - // ** vérifier que ../ fonctionne (ne doit pas arriver mais bon..) + strcpybuff(lien,tempo); // patcher en considérant base + // ** vérifier que ../ fonctionne (ne doit pas arriver mais bon..) hts_log_print(opt, LOG_DEBUG, "link modified with code/codebase %s",lien); } @@ -2226,7 +2226,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } strcatbuff(tempo,badr); strcatbuff(tempo,lien); - strcpybuff(lien,tempo); // patcher en considérant base + strcpybuff(lien,tempo); // patcher en considérant base hts_log_print(opt, LOG_DEBUG, "link modified with code/codebase %s",lien); } else { @@ -2264,23 +2264,23 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { #if HTS_CHECK_STRANGEDIR // !ATTENTION! - // Ici on teste les exotiques du genre www.truc.fr/machin (sans slash à la fin) - // je n'ai pas encore trouvé le moyen de faire la différence entre un répertoire + // Ici on teste les exotiques du genre www.truc.fr/machin (sans slash à la fin) + // je n'ai pas encore trouvé le moyen de faire la différence entre un répertoire // et un fichier en http A PRIORI : je fais donc un test // En cas de moved xxx, on recalcule adr et fil, tout simplement - // DEFAUT: test effectué plusieurs fois! à revoir!!! + // DEFAUT: test effectué plusieurs fois! à revoir!!! if ((adr[0]!='\0') && (strcmp(adr,"file://") && (p_type!=2) && (p_type!=-2)) { //## if ((adr[0]!='\0') && (adr[0]!=lOCAL_CHAR) && (p_type!=2) && (p_type!=-2)) { - if (fil[strlen(fil)-1]!='/') { // pas répertoire + if (fil[strlen(fil)-1]!='/') { // pas répertoire if (ishtml(opt,fil)==-2) { // pas d'extension - char BIGSTK loc[HTS_URLMAXSIZE*2]; // éventuelle nouvelle position + char BIGSTK loc[HTS_URLMAXSIZE*2]; // éventuelle nouvelle position loc[0]='\0'; hts_log_print(opt, LOG_DEBUG, "link-check-directory: %s%s",adr,fil); - // tester éventuelle nouvelle position + // tester éventuelle nouvelle position switch (http_location(adr,fil,loc).statuscode) { case 200: // ok au final - if (strnotempty(loc)) { // a changé d'adresse + if (strnotempty(loc)) { // a changé d'adresse hts_log_print(opt, LOG_WARNING, "Link %s%s has moved to %s for %s%s",adr,fil,loc,urladr,urlfil); // recalculer adr et fil! @@ -2302,16 +2302,16 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } #endif - // Le lien doit juste être réécrit, mais ne doit pas générer un lien + // Le lien doit juste être réécrit, mais ne doit pas générer un lien // exemple: <FORM ACTION="url_cgi"> if (p_nocatch) { - forbidden_url=1; // interdire récupération du lien + forbidden_url=1; // interdire récupération du lien hts_log_print(opt, LOG_DEBUG, "link forced external at %s%s",adr,fil); } - // Tester si un lien doit être accepté ou refusé (wizard) - // forbidden_url=1 : lien refusé - // forbidden_url=0 : lien accepté + // Tester si un lien doit être accepté ou refusé (wizard) + // forbidden_url=1 : lien refusé + // forbidden_url=0 : lien accepté //if ((ptr>0) && (p_type!=2) && (p_type!=-2)) { // tester autorisations? if ((p_type!=2) && (p_type!=-2)) { // tester autorisations? if (!p_nocatch) { @@ -2330,26 +2330,26 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // calculer meme_adresse meme_adresse=strfield2(jump_identification(adr),jump_identification(urladr)); - // Début partie sauvegarde + // Début partie sauvegarde - // ici on forme le nom du fichier à sauver, et on patche l'URL + // ici on forme le nom du fichier à sauver, et on patche l'URL if (adr[0]!='\0') { - // savename: simplifier les ../ et autres joyeusetés + // savename: simplifier les ../ et autres joyeusetés char BIGSTK save[HTS_URLMAXSIZE*2]; int r_sv=0; - // En cas de moved, adresse première + // En cas de moved, adresse première char BIGSTK former_adr[HTS_URLMAXSIZE*2]; char BIGSTK former_fil[HTS_URLMAXSIZE*2]; // save[0]='\0'; former_adr[0]='\0'; former_fil[0]='\0'; // - // nom du chemin à sauver si on doit le calculer - // note: url_savename peut décider de tester le lien si il le trouve + // nom du chemin à sauver si on doit le calculer + // note: url_savename peut décider de tester le lien si il le trouve // suspect, et modifier alors adr et fil - // dans ce cas on aura une référence directe au lieu des traditionnels - // moved en cascade (impossible à reproduire à priori en local, lorsque des fichiers - // gif sont impliqués par exemple) + // dans ce cas on aura une référence directe au lieu des traditionnels + // moved en cascade (impossible à reproduire à priori en local, lorsque des fichiers + // gif sont impliqués par exemple) if ((p_type!=2) && (p_type!=-2)) { // pas base href ou codebase if (forbidden_url!=1) { char BIGSTK last_adr[HTS_URLMAXSIZE*2]; @@ -2360,13 +2360,13 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { strcpybuff(last_adr,adr); // ancienne adresse //strcpybuff(last_fil,fil); // ancien chemin r_sv=url_savename2(adr,fil,save,former_adr,former_fil,liens[ptr]->adr,liens[ptr]->fil,opt,liens,lien_tot,sback,cache,hash,ptr,numero_passe,NULL,str->page_charset_); - if (strcmp(jump_identification(last_adr),jump_identification(adr)) != 0) { // a changé + if (strcmp(jump_identification(last_adr),jump_identification(adr)) != 0) { // a changé // 2e test si moved - // Tester si un lien doit être accepté ou refusé (wizard) - // forbidden_url=1 : lien refusé - // forbidden_url=0 : lien accepté + // Tester si un lien doit être accepté ou refusé (wizard) + // forbidden_url=1 : lien refusé + // forbidden_url=0 : lien accepté if ((ptr>0) && (p_type!=2) && (p_type!=-2)) { // tester autorisations? if (!p_nocatch) { if (adr[0]!='\0') { @@ -2382,7 +2382,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } //import_done=1; // c'est un import! - meme_adresse=0; // on a changé + meme_adresse=0; // on a changé } } else { strcpybuff(save,""); // dummy @@ -2417,7 +2417,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { if (r_sv!=-1) { // pas d'erreur, on continue /* log */ if ((opt->debug>1) && (opt->log!=NULL)) { - if (forbidden_url!=1) { // le lien va être chargé + if (forbidden_url!=1) { // le lien va être chargé if ((p_type==2) || (p_type==-2)) { // base href ou codebase, pas un lien hts_log_print(opt, LOG_DEBUG, "Code/Codebase: %s%s",adr,fil); } else if ((opt->getmode & 4)==0) { @@ -2433,7 +2433,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } /* FIN log */ - // écrire lien + // écrire lien if ((p_type==2) || (p_type==-2)) { // base href ou codebase, sauter lastsaved=eadr-1+1; // sauter " } @@ -2462,13 +2462,13 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { HT_ADD("/"); HT_ADD_HTMLESCAPED(fil); } - lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) + lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) /* */ } else if (opt->urlmode == 4) { // ne rien faire! /* */ /* leave the link 'as is' */ - /* Sinon, dépend de interne/externe */ - } else if (forbidden_url==1) { // le lien ne sera pas chargé, référence externe! + /* Sinon, dépend de interne/externe */ + } else if (forbidden_url==1) { // le lien ne sera pas chargé, référence externe! if ((opt->getmode & 1) && (ptr>0)) { if (p_type!=-1) { // pas que le nom de fichier (pas classe java) if (!opt->external) { @@ -2501,7 +2501,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } // - } else { // fichier/page externe, mais on veut générer une erreur + } else { // fichier/page externe, mais on veut générer une erreur // int patch_it=0; int add_url=0; @@ -2512,7 +2512,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // ajouter lien external switch ( (link_has_authority(adr)) ? 1 : ( (fil[strlen(fil)-1]=='/')?1:(ishtml(opt,fil)) ) ) { - case 1: case -2: // html ou répertoire + case 1: case -2: // html ou répertoire if (opt->getmode & 1) { // sauver html patch_it=1; // redirect add_url=1; // avec link? @@ -2594,7 +2594,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - // écrire fichier? + // écrire fichier? if (verif_external(opt,cat_nb,1)) { FILE* fp = filecreate(&opt->state.strc, fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_html_utf8),cat_name)); if (fp) { @@ -2608,7 +2608,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { usercommand(opt,0,NULL,fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_html_utf8),cat_name),"",""); } } - } else { // écrire normalement le nom de fichier + } else { // écrire normalement le nom de fichier HT_ADD("http://"); if (!opt->passprivacy) { HT_ADD_HTMLESCAPED(adr); // Password @@ -2623,12 +2623,12 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } else { // que le nom de fichier (classe java) // en gros recopie de plus bas: copier codebase et base if (p_flush) { - char BIGSTK tempo[HTS_URLMAXSIZE*2]; // <-- ajouté + char BIGSTK tempo[HTS_URLMAXSIZE*2]; // <-- ajouté char BIGSTK tempo_pat[HTS_URLMAXSIZE*2]; // Calculer chemin tempo_pat[0]='\0'; - strcpybuff(tempo,fil); // <-- ajouté + strcpybuff(tempo,fil); // <-- ajouté { char* a=strrchr(tempo,'/'); @@ -2655,7 +2655,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - // érire codebase="chemin" + // érire codebase="chemin" if ((opt->getmode & 1) && (ptr>0)) { char BIGSTK tempo4[HTS_URLMAXSIZE*2]; tempo4[0]='\0'; @@ -2685,14 +2685,14 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { else if (opt->urlmode==1) { // ABSOLU, c'est le cas le moins courant // NE FONCTIONNE PAS!! (et est inutile) if ((opt->getmode & 1) && (ptr>0)) { // ecrire les html - // écrire le lien modifié, absolu + // écrire le lien modifié, absolu HT_ADD("file:"); if (*save=='/') HT_ADD(save+1) else HT_ADD(save) } - lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) + lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) } */ else if (opt->mimehtml) { @@ -2703,13 +2703,13 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { escape_in_url(buff); { char* a = buff; while((a = strchr(a, '%'))) { *a = 'X'; a++; } } HT_ADD_HTMLESCAPED(buff); - lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) + lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) } else if (opt->urlmode==3) { // URI absolue / if ((opt->getmode & 1) && (ptr>0)) { // ecrire les html HT_ADD_HTMLESCAPED(fil); } - lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) + lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) } else if (opt->urlmode==5) { // transparent proxy URL char BIGSTK tempo[HTS_URLMAXSIZE*2]; @@ -2768,7 +2768,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // write it HT_ADD_HTMLESCAPED(tempo); } - lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) + lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) } else if (opt->urlmode==2) { // RELATIF char BIGSTK tempo[HTS_URLMAXSIZE*2]; @@ -2823,7 +2823,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - // érire codebase="chemin" + // érire codebase="chemin" if ((opt->getmode & 1) && (ptr>0)) { char BIGSTK tempo4[HTS_URLMAXSIZE*2]; tempo4[0]='\0'; @@ -2838,7 +2838,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { HT_ADD(tempo4); // refresh code=" } } - //lastsaved=adr; // dernier écrit+1 + //lastsaved=adr; // dernier écrit+1 } if ((opt->getmode & 1) && (ptr>0)) { @@ -2855,7 +2855,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // } //} - // écrire le lien modifié, relatif + // écrire le lien modifié, relatif // Note: escape all chars, even >127 (no UTF) HT_ADD_HTMLESCAPED_FULL(tempo); @@ -2868,11 +2868,11 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } } - lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) + lastsaved=eadr-1; // dernier écrit+1 (enfin euh apres on fait un ++ alors hein) } else { hts_log_print(opt, LOG_WARNING, "Error building relative link %s and %s",save,relativesavename); } - } // sinon le lien sera écrit normalement + } // sinon le lien sera écrit normalement #if 0 @@ -2889,27 +2889,27 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { hts_log_print(opt, LOG_WARNING, "Link is too long: %s",save); } - if ((adr[0]!='\0') && (p_type!=2) && (p_type!=-2) && (forbidden_url!=1) ) { // si le fichier n'existe pas, ajouter à la liste + if ((adr[0]!='\0') && (p_type!=2) && (p_type!=-2) && (forbidden_url!=1) ) { // si le fichier n'existe pas, ajouter à la liste // n'y a-t-il pas trop de liens? if (lien_tot+1 >= lien_max-4) { // trop de liens! printf("PANIC! : Too many URLs : >%d [%d]\n",lien_tot,__LINE__); hts_log_print(opt, LOG_PANIC, "Too many URLs, giving up..(>%d)",lien_max); hts_log_print(opt, LOG_INFO, "To avoid that: use #L option for more links (example: -#L1000000)"); if ((opt->getmode & 1) && (ptr>0)) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers + XH_uninit; // désallocation mémoire & buffers return -1; - } else { // noter le lien sur la listes des liens à charger + } else { // noter le lien sur la listes des liens à charger int pass_fix,dejafait=0; - // Calculer la priorité de ce lien - if ((opt->getmode & 4)==0) { // traiter html après + // Calculer la priorité de ce lien + if ((opt->getmode & 4)==0) { // traiter html après pass_fix=0; - } else { // vérifier que ce n'est pas un !html + } else { // vérifier que ce n'est pas un !html if (!ishtml(opt,fil)) - pass_fix=1; // priorité inférieure (traiter après) + pass_fix=1; // priorité inférieure (traiter après) else - pass_fix=max(0,numero_passe); // priorité normale + pass_fix=max(0,numero_passe); // priorité normale } /* If the file seems to be an html file, get depth-1 */ @@ -2923,11 +2923,11 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } */ - // vérifier que le lien n'a pas déja été noté - // si c'est le cas, alors il faut s'assurer que la priorité associée - // au fichier est la plus grande des deux priorités + // vérifier que le lien n'a pas déja été noté + // si c'est le cas, alors il faut s'assurer que la priorité associée + // au fichier est la plus grande des deux priorités // - // On part de la fin et on essaye de se presser (économise temps machine) + // On part de la fin et on essaye de se presser (économise temps machine) { int i=hash_read(hash,save,"",0,opt->urlhack); // lecture type 0 (sav) if (i>=0) { @@ -2944,15 +2944,15 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } } - // le lien n'a jamais été créé. - // cette fois ci, on le crée! + // le lien n'a jamais été créé. + // cette fois ci, on le crée! if (!dejafait) { // // >>>> CREER LE LIEN <<<< // - // enregistrer lien à charger + // enregistrer lien à charger //liens[lien_tot]->adr[0]=liens[lien_tot]->fil[0]=liens[lien_tot]->sav[0]='\0'; - // même adresse: l'objet père est l'objet père de l'actuel + // même adresse: l'objet père est l'objet père de l'actuel // DEBUT ROBOTS.TXT AJOUT if (!just_test_it) { @@ -2963,18 +2963,18 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { #endif ) { // non file - if (opt->robots) { // récupérer robots - if (ishtml(opt,fil)!=0) { // pas la peine pour des fichiers isolés + if (opt->robots) { // récupérer robots + if (ishtml(opt,fil)!=0) { // pas la peine pour des fichiers isolés if (checkrobots(_ROBOTS,adr,"") != -1) { // robots.txt ? - checkrobots_set(_ROBOTS ,adr,""); // ajouter entrée vide + checkrobots_set(_ROBOTS ,adr,""); // ajouter entrée vide if (checkrobots(_ROBOTS,adr,"") == -1) { // robots.txt ? // enregistrer robots.txt (MACRO) liens_record(adr,"/robots.txt","","",""); - if (liens[lien_tot]==NULL) { // erreur, pas de place réservée + if (liens[lien_tot]==NULL) { // erreur, pas de place réservée printf("PANIC! : Not enough memory [%d]\n",__LINE__); hts_log_print(opt, LOG_PANIC, "Not enough memory, can not re-allocate %d bytes",(int)((add_tab_alloc+1)*sizeof(lien_url))); if ((opt->getmode & 1) && (ptr>0)) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers + XH_uninit; // désallocation mémoire & buffers return -1; } liens[lien_tot]->testmode=0; // pas mode test @@ -3001,11 +3001,11 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { // enregistrer (MACRO) liens_record(adr,fil,save,former_adr,former_fil); - if (liens[lien_tot]==NULL) { // erreur, pas de place réservée + if (liens[lien_tot]==NULL) { // erreur, pas de place réservée printf("PANIC! : Not enough memory [%d]\n",__LINE__); hts_log_print(opt, LOG_PANIC, "Not enough memory, can not re-allocate %d bytes",(int)((add_tab_alloc+1)*sizeof(lien_url))); if ((opt->getmode & 1) && (ptr>0)) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers + XH_uninit; // désallocation mémoire & buffers return -1; } @@ -3018,15 +3018,15 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { liens[lien_tot]->link_import=0; // pas mode import else liens[lien_tot]->link_import=1; // mode import - // écrire autres paramètres de la structure-lien + // écrire autres paramètres de la structure-lien if ((meme_adresse) && (!import_done) && (liens[ptr]->premier != 0)) liens[lien_tot]->premier=liens[ptr]->premier; - else // sinon l'objet père est le précédent lui même + else // sinon l'objet père est le précédent lui même liens[lien_tot]->premier=lien_tot; // liens[lien_tot]->premier=ptr; liens[lien_tot]->precedent=ptr; - // noter la priorité + // noter la priorité if (!set_prio_to) liens[lien_tot]->depth=liens[ptr]->depth - 1; else @@ -3120,9 +3120,9 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { } // ---------- - // écrire peu à peu + // écrire peu à peu if ((opt->getmode & 1) && (ptr>0)) HT_ADD_ADR; - lastsaved=adr; // dernier écrit+1 + lastsaved=adr; // dernier écrit+1 // ---------- // Checks @@ -3140,7 +3140,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) { opt->state._hts_in_html_done=(100 * ((int) (adr - r->adr)) ) / (int)(r->size); if (opt->state._hts_in_html_poll) { opt->state._hts_in_html_poll=0; - // temps à attendre, et remplir autant que l'on peut le cache (backing) + // temps à attendre, et remplir autant que l'on peut le cache (backing) back_wait(sback,opt,cache,HTS_STAT.stat_timestart); back_fillmax(sback,opt,cache,liens,ptr,numero_passe,lien_tot); @@ -3226,7 +3226,7 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) // ------------------------------------------------------------ if (!error) { ////////{ - // on a chargé un fichier en plus + // on a chargé un fichier en plus // if (!error) stat_loaded+=r.size; // ------------------------------------------------------------ @@ -3242,7 +3242,7 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) { char BIGSTK mov_url[HTS_URLMAXSIZE*2],mov_adr[HTS_URLMAXSIZE*2],mov_fil[HTS_URLMAXSIZE*2]; - int get_it=0; // ne pas prendre le fichier à la même adresse par défaut + int get_it=0; // ne pas prendre le fichier à la même adresse par défaut int reponse=0; mov_url[0]='\0'; mov_adr[0]='\0'; mov_fil[0]='\0'; // @@ -3251,7 +3251,7 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) // url qque -> adresse+fichier if ((reponse=ident_url_relatif(mov_url,urladr,urlfil,mov_adr,mov_fil))>=0) { - int set_prio_to=0; // pas de priotité fixéd par wizard + int set_prio_to=0; // pas de priotité fixéd par wizard // check whether URLHack is harmless or not if (opt->urlhack) { @@ -3268,51 +3268,51 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) } //if (ident_url_absolute(mov_url,mov_adr,mov_fil)!=-1) { // ok URL reconnue - // c'est (en gros) la même URL.. - // si c'est un problème de casse dans le host c'est que le serveur est buggé + // c'est (en gros) la même URL.. + // si c'est un problème de casse dans le host c'est que le serveur est buggé // ("RFC says.." : host name IS case insensitive) - if ((strfield2(mov_adr,urladr)!=0) && (strfield2(mov_fil,urlfil)!=0)) { // identique à casse près + if ((strfield2(mov_adr,urladr)!=0) && (strfield2(mov_fil,urlfil)!=0)) { // identique à casse près // on tourne en rond if (strcmp(mov_fil,urlfil)==0) { error=1; get_it=-1; // ne rien faire hts_log_print(opt, LOG_WARNING, "Can not bear crazy server (%s) for %s%s",r->msg,urladr,urlfil); - } else { // mauvaise casse, effacer entrée dans la pile et rejouer une fois + } else { // mauvaise casse, effacer entrée dans la pile et rejouer une fois get_it=1; } - } else { // adresse différente - if (ishtml(opt,mov_url)==0) { // pas même adresse MAIS c'est un fichier non html (pas de page moved possible) - // -> on prend à cette adresse, le lien sera enregistré avec lien_record() (hash) + } else { // adresse différente + if (ishtml(opt,mov_url)==0) { // pas même adresse MAIS c'est un fichier non html (pas de page moved possible) + // -> on prend à cette adresse, le lien sera enregistré avec lien_record() (hash) hts_log_print(opt, LOG_DEBUG, "wizard link test for moved file at %s%s..",mov_adr,mov_fil); - // accepté? + // accepté? if (hts_acceptlink(opt,ptr,lien_tot,liens, mov_adr,mov_fil, NULL, NULL, &set_prio_to, - NULL) != 1) { /* nouvelle adresse non refusée ? */ + NULL) != 1) { /* nouvelle adresse non refusée ? */ get_it=1; hts_log_print(opt, LOG_DEBUG, "moved link accepted: %s%s",mov_adr,mov_fil); } - } /* sinon traité normalement */ + } /* sinon traité normalement */ } - //if ((strfield2(mov_adr,urladr)!=0) && (strfield2(mov_fil,urlfil)!=0)) { // identique à casse près + //if ((strfield2(mov_adr,urladr)!=0) && (strfield2(mov_fil,urlfil)!=0)) { // identique à casse près if (get_it==1) { // court-circuiter le reste du traitement // et reculer pour mieux sauter hts_log_print(opt, LOG_WARNING, "Warning moved treated for %s%s (real one is %s%s)",urladr,urlfil,mov_adr,mov_fil); // canceller lien actuel error=1; - strcpybuff(liens[ptr]->adr,"!"); // caractère bidon (invalide hash) + strcpybuff(liens[ptr]->adr,"!"); // caractère bidon (invalide hash) // noter NOUVEAU lien //xxc xxc // set_prio_to=0+1; // protection if the moved URL is an html page!! //xxc xxc { char BIGSTK mov_sav[HTS_URLMAXSIZE*2]; - // calculer lien et éventuellement modifier addresse/fichier + // calculer lien et éventuellement modifier addresse/fichier if (url_savename2(mov_adr,mov_fil,mov_sav,NULL,NULL,liens[liens[ptr]->precedent]->adr,liens[liens[ptr]->precedent]->fil,opt,liens,lien_tot,sback,cache,hash,ptr,numero_passe,NULL,str->page_charset_)!=-1) { - if (hash_read(hash,mov_sav,"",0,0)<0) { // n'existe pas déja + if (hash_read(hash,mov_sav,"",0,0)<0) { // n'existe pas déja // enregistrer lien (MACRO) avec SAV IDENTIQUE liens_record(mov_adr,mov_fil,liens[ptr]->sav,"",""); //liens_record(mov_adr,mov_fil,mov_sav,"",""); @@ -3329,11 +3329,11 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) liens[lien_tot]->premier=liens[ptr]->premier; liens[lien_tot]->precedent=liens[ptr]->precedent; lien_tot++; - } else { // oups erreur, plus de mémoire!! + } else { // oups erreur, plus de mémoire!! printf("PANIC! : Not enough memory [%d]\n",__LINE__); hts_log_print(opt, LOG_PANIC, "Not enough memory, can not re-allocate %d bytes",(int)((add_tab_alloc+1)*sizeof(lien_url))); //if (opt->getmode & 1) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers + XH_uninit; // désallocation mémoire & buffers return 0; } } else { @@ -3345,13 +3345,13 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) //printf("-> %s %s %s\n",liens[lien_tot-1]->adr,liens[lien_tot-1]->fil,liens[lien_tot-1]->sav); - // note métaphysique: il se peut qu'il y ait un index.html et un INDEX.HTML - // sous DOS ca marche pas très bien... mais comme je suis génial url_savename() - // est à même de régler ce problème + // note métaphysique: il se peut qu'il y ait un index.html et un INDEX.HTML + // sous DOS ca marche pas très bien... mais comme je suis génial url_savename() + // est à même de régler ce problème } } // ident_url_xx - if (get_it==0) { // adresse vraiment différente et potentiellement en html (pas de possibilité de bouger la page tel quel à cause des <img src..> et cie) + if (get_it==0) { // adresse vraiment différente et potentiellement en html (pas de possibilité de bouger la page tel quel à cause des <img src..> et cie) rn=(char*) calloct(8192,1); if (rn!=NULL) { hts_log_print(opt, LOG_WARNING, "File has moved from %s%s to %s",urladr,urlfil,mov_url); @@ -3366,7 +3366,7 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) strcpybuff(mov_url, "cid:"); strcatbuff(mov_url, buff); } - // On prépare une page qui sautera immédiatement sur la bonne URL + // On prépare une page qui sautera immédiatement sur la bonne URL // Le scanner re-changera, ensuite, cette URL, pour la mirrorer! strcpybuff(rn,"<HTML>"CRLF); strcatbuff(rn,"<!-- Created by HTTrack Website Copier/"HTTRACK_VERSION" "HTTRACK_AFF_AUTHORS" -->"CRLF); @@ -3398,10 +3398,10 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) } else if ( (r->statuscode==HTTP_PRECONDITION_FAILED) || (r->statuscode==HTTP_REQUESTED_RANGE_NOT_SATISFIABLE) - ) { // Precondition Failed, c'est à dire pour nous redemander TOUT le fichier + ) { // Precondition Failed, c'est à dire pour nous redemander TOUT le fichier if (fexist_utf8(liens[ptr]->sav)) { remove(liens[ptr]->sav); // Eliminer - if (!fexist_utf8(liens[ptr]->sav)) { // Bien éliminé? (sinon on boucle..) + if (!fexist_utf8(liens[ptr]->sav)) { // Bien éliminé? (sinon on boucle..) #if HDEBUG printf("Partial content NOT up-to-date, reget all file for %s\n",liens[ptr]->sav); #endif @@ -3420,13 +3420,13 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) // // canceller lien actuel error=1; - strcpybuff(liens[ptr]->adr,"!"); // caractère bidon (invalide hash) + strcpybuff(liens[ptr]->adr,"!"); // caractère bidon (invalide hash) // - } else { // oups erreur, plus de mémoire!! + } else { // oups erreur, plus de mémoire!! printf("PANIC! : Not enough memory [%d]\n",__LINE__); hts_log_print(opt, LOG_PANIC, "Not enough memory, can not re-allocate %d bytes",(int)((add_tab_alloc+1)*sizeof(lien_url))); //if (opt->getmode & 1) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers + XH_uninit; // désallocation mémoire & buffers return 0; } } else { @@ -3441,7 +3441,7 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) // Error ? if (error) { if (!opt->errpage) { - if (r->adr) { // désalloc + if (r->adr) { // désalloc freet(r->adr); r->adr=NULL; } @@ -3450,11 +3450,11 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) } else if (r->statuscode!=HTTP_OK) { int can_retry=0; - // cas où l'on peut reessayer + // cas où l'on peut reessayer switch(r->statuscode) { //case -1: can_retry=1; break; case STATUSCODE_TIMEOUT: - if (opt->hostcontrol) { // timeout et retry épuisés + if (opt->hostcontrol) { // timeout et retry épuisés if ((opt->hostcontrol & 1) && (liens[ptr]->retry<=0)) { hts_log_print(opt, LOG_DEBUG, "Link banned: %s%s",urladr,urlfil); host_ban(opt,liens,ptr,lien_tot,sback,jump_identification(urladr)); @@ -3486,14 +3486,14 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) } if ( strcmp(liens[ptr]->fil,"/primary") != 0 ) { // no primary (internal page 0) - if ((liens[ptr]->retry<=0) || (!can_retry) ) { // retry épuisés (ou retry impossible) + if ((liens[ptr]->retry<=0) || (!can_retry) ) { // retry épuisés (ou retry impossible) if ((opt->retry>0) && (can_retry)){ hts_log_print(opt, LOG_ERROR, "\"%s\" (%d) after %d retries at link %s%s (from %s%s)",r->msg,r->statuscode,opt->retry,urladr,urlfil,liens[liens[ptr]->precedent]->adr,liens[liens[ptr]->precedent]->fil); } else { if (r->statuscode==STATUSCODE_TEST_OK) { // test OK hts_log_print(opt, LOG_INFO, "Test OK at link %s%s (from %s%s)",urladr,urlfil,liens[liens[ptr]->precedent]->adr,liens[liens[ptr]->precedent]->fil); } else { - if (strcmp(urlfil,"/robots.txt")) { // ne pas afficher d'infos sur robots.txt par défaut + if (strcmp(urlfil,"/robots.txt")) { // ne pas afficher d'infos sur robots.txt par défaut hts_log_print(opt, LOG_ERROR, "\"%s\" (%d) at link %s%s (from %s%s)",r->msg,r->statuscode,urladr,urlfil,liens[liens[ptr]->precedent]->adr,liens[liens[ptr]->precedent]->fil); } else { hts_log_print(opt, LOG_DEBUG, "No robots.txt rules at %s",urladr); @@ -3506,7 +3506,7 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) // This prevent the engine from wiping all data if the website has been deleted (or moved) // since last time (which is quite annoying) if (liens[ptr]->precedent != 0) { - // ici on teste si on doit enregistrer la page tout de même + // ici on teste si on doit enregistrer la page tout de même if (opt->errpage) { store_errpage=1; } @@ -3538,11 +3538,11 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) liens[lien_tot]->premier=liens[ptr]->premier; liens[lien_tot]->precedent=liens[ptr]->precedent; lien_tot++; - } else { // oups erreur, plus de mémoire!! + } else { // oups erreur, plus de mémoire!! printf("PANIC! : Not enough memory [%d]\n",__LINE__); hts_log_print(opt, LOG_PANIC, "Not enough memory, can not re-allocate %d bytes",(int)((add_tab_alloc+1)*sizeof(lien_url))); //if (opt->getmode & 1) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers + XH_uninit; // désallocation mémoire & buffers return 0; } } @@ -3550,7 +3550,7 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre) hts_log_print(opt, LOG_DEBUG, "Info: no robots.txt at %s%s",urladr,urlfil); } if (!store_errpage) { - if (r->adr) { // désalloc + if (r->adr) { // désalloc freet(r->adr); r->adr=NULL; } @@ -3634,8 +3634,8 @@ void hts_mirror_process_user_interaction(htsmoduleStruct* str, htsmoduleStructEx } } } - // On désalloue le buffer d'enregistrement des chemins créée, au cas où pendant la pause - // l'utilisateur ferait un rm -r après avoir effectué un tar + // On désalloue le buffer d'enregistrement des chemins créée, au cas où pendant la pause + // l'utilisateur ferait un rm -r après avoir effectué un tar // structcheck_init(1); { FILE* fp = fopen(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-paused.lock"),"wb"); @@ -3654,7 +3654,7 @@ void hts_mirror_process_user_interaction(htsmoduleStruct* str, htsmoduleStructEx } // end of pause/lock files - // changement dans les préférences + // changement dans les préférences if (opt->state._hts_addurl) { char BIGSTK add_adr[HTS_URLMAXSIZE*2]; char BIGSTK add_fil[HTS_URLMAXSIZE*2]; @@ -3668,9 +3668,9 @@ void hts_mirror_process_user_interaction(htsmoduleStruct* str, htsmoduleStructEx // ----Ajout---- // noter NOUVEAU lien char BIGSTK add_sav[HTS_URLMAXSIZE*2]; - // calculer lien et éventuellement modifier addresse/fichier + // calculer lien et éventuellement modifier addresse/fichier if (url_savename2(add_adr,add_fil,add_sav,NULL,NULL,NULL,NULL,opt,liens,lien_tot,sback,cache,hash,ptr,numero_passe,NULL,str->page_charset_)!=-1) { - if (hash_read(hash,add_sav,"",0,0)<0) { // n'existe pas déja + if (hash_read(hash,add_sav,"",0,0)<0) { // n'existe pas déja // enregistrer lien (MACRO) liens_record(add_adr,add_fil,add_sav,"",""); if (liens[lien_tot]!=NULL) { // OK, pas d'erreur @@ -3685,11 +3685,11 @@ void hts_mirror_process_user_interaction(htsmoduleStruct* str, htsmoduleStructEx // hts_log_print(opt, LOG_INFO, "Link added by user: %s%s",add_adr,add_fil); // - } else { // oups erreur, plus de mémoire!! + } else { // oups erreur, plus de mémoire!! printf("PANIC! : Not enough memory [%d]\n",__LINE__); hts_log_print(opt, LOG_PANIC, "Not enough memory, can not re-allocate %d bytes",(int)((add_tab_alloc+1)*sizeof(lien_url))); //if (opt->getmode & 1) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers + XH_uninit; // désallocation mémoire & buffers return ; } } else { @@ -3703,9 +3703,9 @@ void hts_mirror_process_user_interaction(htsmoduleStruct* str, htsmoduleStructEx // ----Fin Ajout---- opt->state._hts_addurl++; // suivante } - opt->state._hts_addurl=NULL; // libérer _hts_addurl + opt->state._hts_addurl=NULL; // libérer _hts_addurl } - // si une pause a été demandée + // si une pause a été demandée if (opt->state._hts_setpause || back_pluggable_sockets_strict(sback, opt) <= 0) { // index du lien actuel int b=back_index(opt,sback,urladr,urlfil,savename); @@ -3802,7 +3802,7 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended* // index du lien actuel { // ------------------------------------------------------------ - // attendre que le fichier actuel soit prêt - BOUCLE D'ATTENTE + // attendre que le fichier actuel soit prêt - BOUCLE D'ATTENTE do { /* User interaction */ ENGINE_SAVE_CONTEXT(); @@ -3876,10 +3876,10 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended* int i; char* s; while(( s = hts_cancel_file_pop(opt) ) != NULL) { - if (strnotempty(s)) { // fichier à canceller + if (strnotempty(s)) { // fichier à canceller for(i = 0 ; i < back_max ; i++) { if ((back[i].status > 0)) { - if (strcmp(back[i].url_sav,s) == 0) { // ok trouvé + if (strcmp(back[i].url_sav,s) == 0) { // ok trouvé if (back[i].status != 1000) { #if HTS_DEBUG_CLOSESOCK DEBUG_W("user cancel: deletehttp\n"); @@ -3889,9 +3889,9 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended* back[i].r.soc=INVALID_SOCKET; back[i].r.statuscode=STATUSCODE_INVALID; strcpybuff(back[i].r.msg,"Cancelled by User"); - back[i].status=0; // terminé + back[i].status=0; // terminé back_set_finished(sback, i); - } else // cancel ftp.. flag à 1 + } else // cancel ftp.. flag à 1 back[i].stop_ftp = 1; } } @@ -3943,15 +3943,15 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended* tl=time_local(); - // générer un message d'infos sur l'état actuel + // générer un message d'infos sur l'état actuel if (opt->shell) { // si shell if ((tl-*stre->last_info_shell_)>0) { // toute les 1 sec FILE* fp=stdout; int a=0; *stre->last_info_shell_=tl; - if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-autopsy"))) { // débuggage: teste si le robot est vivant + if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-autopsy"))) { // débuggage: teste si le robot est vivant // (oui je sais un robot vivant.. mais bon.. il a le droit de vivre lui aussi) - // (libérons les robots esclaves de l'internet!) + // (libérons les robots esclaves de l'internet!) remove(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-autopsy")); fp=fopen(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-isalive"),"wb"); a=1; @@ -4040,20 +4040,20 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended* //} // ------------------------------------------------------------ - // Vérificateur d'intégrité + // Vérificateur d'intégrité #if DEBUG_CHECKINT - _CHECKINT(&back[b],"Retour de back_wait, après le while") + _CHECKINT(&back[b],"Retour de back_wait, après le while") { int i; for(i=0;i<back_max;i++) { char si[256]; - sprintf(si,"Test global après back_wait, index %d",i); + sprintf(si,"Test global après back_wait, index %d",i); _CHECKINT(&back[i],si) } } #endif - // copier structure réponse htsblk + // copier structure réponse htsblk if (b >= 0) { memcpy(r, &(back[b].r), sizeof(htsblk)); r->location=stre->loc_; // ne PAS copier location!! adresse, pas de buffer @@ -4061,11 +4061,11 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended* strcpybuff(r->location,back[b].r.location); back[b].r.adr=NULL; // ne pas faire de desalloc ensuite - // libérer emplacement backing + // libérer emplacement backing back_maydelete(opt,cache,sback,b); } - // débug graphique + // débug graphique #if BDEBUG==2 { char s[12]; @@ -4176,7 +4176,7 @@ int hts_wait_delayed(htsmoduleStruct* str, b=back_index(opt,sback,adr,fil,save); if (b<0) { printf("PANIC! : Crash adding error, unexpected error found.. [%d]\n",__LINE__); - XH_uninit; // désallocation mémoire & buffers + XH_uninit; // désallocation mémoire & buffers return -1; } @@ -4220,7 +4220,7 @@ int hts_wait_delayed(htsmoduleStruct* str, } if (b<0) { printf("PANIC! : Crash adding error, unexpected error found.. [%d]\n",__LINE__); - XH_uninit; // désallocation mémoire & buffers + XH_uninit; // désallocation mémoire & buffers return -1; } @@ -4238,7 +4238,7 @@ int hts_wait_delayed(htsmoduleStruct* str, if (b < 0) break; - // temps à attendre, et remplir autant que l'on peut le cache (backing) + // temps à attendre, et remplir autant que l'on peut le cache (backing) if (back[b].status>0) { back_wait(sback,opt,cache,0); } @@ -4246,7 +4246,7 @@ int hts_wait_delayed(htsmoduleStruct* str, back_fillmax(sback,opt,cache,liens,ptr,numero_passe,lien_tot); } - // on est obligé d'appeler le shell pour le refresh.. + // on est obligé d'appeler le shell pour le refresh.. { // Transfer rate @@ -4325,12 +4325,12 @@ int hts_wait_delayed(htsmoduleStruct* str, // if (ident_url_relatif(mov_url,adr,fil,mov_adr,mov_fil)>=0) { hts_log_print(opt, LOG_DEBUG, "Redirect while resolving type: %s%s -> %s%s", adr, fil, mov_adr, mov_fil); - // si non bouclage sur soi même, ou si test avec GET non testé + // si non bouclage sur soi même, ou si test avec GET non testé if (strcmp(mov_adr,adr) != 0 || strcmp(mov_fil,fil) != 0) { // recopier former_adr/fil? if ((former_adr) && (former_fil)) { - if (strnotempty(former_adr)==0) { // Pas déja noté + if (strnotempty(former_adr)==0) { // Pas déja noté strcpybuff(former_adr,adr); strcpybuff(former_fil,fil); } @@ -4417,7 +4417,7 @@ int hts_wait_delayed(htsmoduleStruct* str, } // b >= 0 } else { printf("PANIC! : Crash adding error, unexpected error found.. [%d]\n",__LINE__); - XH_uninit; // désallocation mémoire & buffers + XH_uninit; // désallocation mémoire & buffers return -1; } |