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 | |
parent | eaef7eb1f7ae092d73eeffa245ab418d70748fdf (diff) |
Merge sources from windows-1252 to utf-8
Diffstat (limited to 'src')
-rw-r--r-- | src/htsback.c | 366 | ||||
-rw-r--r-- | src/htsbase.h | 4 | ||||
-rw-r--r-- | src/htsbauth.c | 42 | ||||
-rw-r--r-- | src/htscache.c | 124 | ||||
-rw-r--r-- | src/htscatchurl.c | 20 | ||||
-rw-r--r-- | src/htsconfig.h | 42 | ||||
-rw-r--r-- | src/htscore.c | 254 | ||||
-rw-r--r-- | src/htscore.h | 54 | ||||
-rw-r--r-- | src/htscoremain.c | 112 | ||||
-rw-r--r-- | src/htscoremain.h | 2 | ||||
-rw-r--r-- | src/htsfilters.c | 56 | ||||
-rw-r--r-- | src/htsftp.c | 80 | ||||
-rw-r--r-- | src/htsglobal.h | 28 | ||||
-rw-r--r-- | src/htshash.c | 40 | ||||
-rw-r--r-- | src/htshelp.c | 4 | ||||
-rw-r--r-- | src/htsindex.c | 22 | ||||
-rw-r--r-- | src/htsjava.c | 4 | ||||
-rw-r--r-- | src/htslib.c | 402 | ||||
-rw-r--r-- | src/htslib.h | 62 | ||||
-rw-r--r-- | src/htsname.c | 174 | ||||
-rw-r--r-- | src/htsopt.h | 88 | ||||
-rw-r--r-- | src/htsparse.c | 622 | ||||
-rw-r--r-- | src/htsrobots.c | 4 | ||||
-rw-r--r-- | src/htsserver.c | 8 | ||||
-rw-r--r-- | src/htsserver.h | 10 | ||||
-rw-r--r-- | src/htstools.c | 52 | ||||
-rw-r--r-- | src/htsweb.c | 14 | ||||
-rw-r--r-- | src/htswizard.c | 180 | ||||
-rw-r--r-- | src/httrack.c | 24 | ||||
-rwxr-xr-x | src/proxy/proxystrings.h | 2 | ||||
-rw-r--r-- | src/proxy/proxytrack.c | 8 | ||||
-rw-r--r-- | src/proxy/proxytrack.h | 8 | ||||
-rw-r--r-- | src/proxy/store.c | 22 | ||||
-rw-r--r-- | src/proxy/store.h | 8 |
34 files changed, 1471 insertions, 1471 deletions
diff --git a/src/htsback.c b/src/htsback.c index 2e07121..0d4da0d 100644 --- a/src/htsback.c +++ b/src/htsback.c @@ -316,7 +316,7 @@ int back_cleanup_background(httrackp* opt,cache_back* cache,struct_back* sback) return nclean; } -// nombre d'entrées libres dans le backing +// nombre d'entrées libres dans le backing int back_available(struct_back* sback) { lien_back* const back = sback->lnk; const int back_max = sback->count; @@ -328,7 +328,7 @@ int back_available(struct_back* sback) { return nb; } -// retourne estimation de la taille des html et fichiers stockés en mémoire +// retourne estimation de la taille des html et fichiers stockés en mémoire LLint back_incache(struct_back* sback) { lien_back* const back = sback->lnk; const int back_max = sback->count; @@ -336,7 +336,7 @@ LLint back_incache(struct_back* sback) { LLint sum=0; for(i=0;i<back_max;i++) if (back[i].status!=-1) - if (back[i].r.adr) // ne comptabilier que les blocs en mémoire + if (back[i].r.adr) // ne comptabilier que les blocs en mémoire sum+=max(back[i].r.size,back[i].r.totalsize); // stored (ready) slots #ifdef HTS_NO_BACK_ON_DISK @@ -346,7 +346,7 @@ LLint back_incache(struct_back* sback) { while((item = inthash_enum_next(&e))) { lien_back* ritem = (lien_back*) item->value.ptr; if (ritem->status!=-1) - if (ritem->r.adr) // ne comptabilier que les blocs en mémoire + if (ritem->r.adr) // ne comptabilier que les blocs en mémoire sum+=max(ritem->r.size,ritem->r.totalsize); } } @@ -354,7 +354,7 @@ LLint back_incache(struct_back* sback) { return sum; } -// retourne estimation de la taille des html et fichiers stockés en mémoire +// retourne estimation de la taille des html et fichiers stockés en mémoire int back_done_incache(struct_back* sback) { lien_back* const back = sback->lnk; const int back_max = sback->count; @@ -381,12 +381,12 @@ int back_done_incache(struct_back* sback) { } -// le lien a-t-il été mis en backing? +// le lien a-t-il été mis en backing? HTS_INLINE int back_exist(struct_back* sback,httrackp* opt,char* adr,char* fil,char* sav) { return (back_index_fetch(opt, sback, adr, fil, sav, /*don't fetch*/0) >= 0); } -// nombre de sockets en tâche de fond +// nombre de sockets en tâche de fond int back_nsoc(struct_back* sback) { lien_back* const back = sback->lnk; const int back_max = sback->count; @@ -410,10 +410,10 @@ int back_nsoc_overall(struct_back* sback) { return n; } -// objet (lien) téléchargé ou transféré depuis le cache +// objet (lien) téléchargé ou transféré depuis le cache // -// fermer les paramètres de transfert, -// et notamment vérifier les fichiers compressés (décompresser), callback etc. +// fermer les paramètres de transfert, +// et notamment vérifier les fichiers compressés (décompresser), callback etc. int back_finalize(httrackp* opt, cache_back* cache, struct_back* sback, const int p) { char catbuff[CATBUFF_SIZE]; lien_back* const back = sback->lnk; @@ -448,14 +448,14 @@ int back_finalize(httrackp* opt, cache_back* cache, struct_back* sback, const in if (!back[p].testmode) { // not test mode char* state="unknown"; - /* décompression */ + /* décompression */ #if HTS_USEZLIB if (gz_is_available && back[p].r.compressed) { if (back[p].r.size > 0) { //if ( (back[p].r.adr) && (back[p].r.size>0) ) { // stats back[p].compressed_size=back[p].r.size; - // en mémoire -> passage sur disque + // en mémoire -> passage sur disque if (!back[p].r.is_write) { #if 1 #ifdef _WIN32 @@ -500,7 +500,7 @@ int back_finalize(httrackp* opt, cache_back* cache, struct_back* sback, const in fclose(back[p].r.out); back[p].r.out=NULL; } - // décompression + // décompression if (back[p].tmpfile != NULL && back[p].tmpfile[0] != '\0') { if (back[p].url_sav[0]) { LLint size; @@ -508,7 +508,7 @@ int back_finalize(httrackp* opt, cache_back* cache, struct_back* sback, const in filecreateempty(&opt->state.strc, back[p].url_sav); // filenote & co if ((size = hts_zunpack(back[p].tmpfile, back[p].url_sav))>=0) { back[p].r.size=back[p].r.totalsize=size; - // fichier -> mémoire + // fichier -> mémoire if (!back[p].r.is_write) { deleteaddr(&back[p].r); back[p].r.adr = readfile_utf8(back[p].url_sav); @@ -647,7 +647,7 @@ int back_finalize(httrackp* opt, cache_back* cache, struct_back* sback, const in HTS_STAT.stat_files++; } if ( (!back[p].r.notmodified) && (opt->is_update) ) { - HTS_STAT.stat_updated_files++; // page modifiée + HTS_STAT.stat_updated_files++; // page modifiée if (back[p].is_update) { hts_log_print(opt, LOG_INFO, "engine: transfer-status: link updated: %s%s -> %s",back[p].url_adr,back[p].url_fil,back[p].url_sav); } else { @@ -1135,14 +1135,14 @@ int back_flush_output(httrackp* opt, cache_back* cache, struct_back* sback, cons } /* set file time */ if (back[p].r.is_write) { // ecriture directe - /* écrire date "remote" */ + /* écrire date "remote" */ if (strnotempty(back[p].url_sav) && strnotempty(back[p].r.lastmodified) && fexist_utf8(back[p].url_sav)) // normalement existe si on a un fichier de sortie { set_filetime_rfc822(back[p].url_sav,back[p].r.lastmodified); } - /* executer commande utilisateur après chargement du fichier */ + /* executer commande utilisateur après chargement du fichier */ //xx usercommand(opt,0,NULL,back[p].url_sav, back[p].url_adr, back[p].url_fil); back[p].r.is_write=0; } @@ -1151,13 +1151,13 @@ int back_flush_output(httrackp* opt, cache_back* cache, struct_back* sback, cons return 0; } -// effacer entrée +// effacer entrée int back_delete(httrackp* opt, cache_back* cache, struct_back* sback, const int p) { lien_back* const back = sback->lnk; const int back_max = sback->count; assertf(p >= 0 && p < back_max); if (p >= 0 && p < sback->count) { // on sait jamais.. - // Vérificateur d'intégrité + // Vérificateur d'intégrité #if DEBUG_CHECKINT _CHECKINT(&back[p],"Appel back_delete") #endif @@ -1207,7 +1207,7 @@ static void back_set_free(lien_back* back) { /* delete entry content (clear the entry), but don't unallocate the entry itself */ int back_clear_entry(lien_back* back) { if (back != NULL) { - // Libérer tous les sockets, handles, buffers.. + // Libérer tous les sockets, handles, buffers.. if (back->r.soc!=INVALID_SOCKET) { #if HTS_DEBUG_CLOSESOCK DEBUG_W("back_delete: deletehttp\n"); @@ -1216,11 +1216,11 @@ int back_clear_entry(lien_back* back) { back->r.soc=INVALID_SOCKET; } - if (back->r.adr!=NULL) { // reste un bloc à désallouer + if (back->r.adr!=NULL) { // reste un bloc à désallouer freet(back->r.adr); back->r.adr=NULL; } - if (back->chunk_adr!=NULL) { // reste un bloc à désallouer + if (back->chunk_adr!=NULL) { // reste un bloc à désallouer freet(back->chunk_adr); back->chunk_adr=NULL; back->chunk_size=0; @@ -1245,7 +1245,7 @@ int back_clear_entry(lien_back* back) { back->r.soc = INVALID_SOCKET; back->r.location = back->location_buffer; - // Le plus important: libérer le champ + // Le plus important: libérer le champ back_set_free(back); return 1; @@ -1288,7 +1288,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* } #endif - // vérifier cohérence de adr et fil (non vide!) + // vérifier cohérence de adr et fil (non vide!) if (strnotempty(adr)==0) { hts_log_print(opt, LOG_WARNING, "error: adr is empty for back_add"); return -1; // erreur! @@ -1297,7 +1297,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* hts_log_print(opt, LOG_WARNING, "error: fil is empty for back_add"); return -1; // erreur! } - // FIN vérifier cohérence de adr et fil (non vide!) + // FIN vérifier cohérence de adr et fil (non vide!) // stats opt->state.back_add_stats++; @@ -1305,7 +1305,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* // rechercher emplacement back_clean(opt, cache, sback); if ( ( p = back_search(opt, sback) ) >= 0) { - back[p].send_too[0]='\0'; // éventuels paramètres supplémentaires à transmettre au serveur + back[p].send_too[0]='\0'; // éventuels paramètres supplémentaires à transmettre au serveur // clear r if (back[p].r.soc!=INVALID_SOCKET) { /* we never know */ @@ -1315,7 +1315,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* hts_init_htsblk(&back[p].r); back[p].r.location=back[p].location_buffer; - // créer entrée + // créer entrée strcpybuff(back[p].url_adr,adr); strcpybuff(back[p].url_fil,fil); strcpybuff(back[p].url_sav,save); @@ -1325,7 +1325,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* strcpybuff(back[p].referer_fil,""); if ((referer_adr) && (referer_fil)) { // existe if ((strnotempty(referer_adr)) && (strnotempty(referer_fil))) { // non vide - if (referer_adr[0]!='!') { // non détruit + if (referer_adr[0]!='!') { // non détruit if (strcmp(referer_adr,"file://")) { // PAS file:// if (strcmp(referer_adr,"primary")) { // pas referer 1er lien strcpybuff(back[p].referer_adr,referer_adr); @@ -1335,14 +1335,14 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* } } } - // sav ne sert à rien pour le moment - back[p].r.size=0; // rien n'a encore été chargé - back[p].r.adr=NULL; // pas de bloc de mémoire - back[p].r.is_write=0; // à priori stockage en mémoire + // sav ne sert à rien pour le moment + back[p].r.size=0; // rien n'a encore été chargé + back[p].r.adr=NULL; // pas de bloc de mémoire + back[p].r.is_write=0; // à priori stockage en mémoire back[p].maxfile_html=opt->maxfile_html; back[p].maxfile_nonhtml=opt->maxfile_nonhtml; back[p].testmode=test; // mode test? - if (!opt->http10) // option "forcer 1.0" désactivée + if (!opt->http10) // option "forcer 1.0" désactivée back[p].http11=1; // autoriser http/1.1 back[p].head_request=0; if (strcmp(back[p].url_sav,BACK_ADD_TEST)==0) // HEAD @@ -1355,7 +1355,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* if (opt->state.stop && !opt->is_update) { back[p].r.statuscode=STATUSCODE_INVALID; // fatal strcpybuff(back[p].r.msg,"mirror stopped by user"); - back[p].status=STATUS_READY; // terminé + back[p].status=STATUS_READY; // terminé back_set_finished(sback, p); hts_log_print(opt, LOG_WARNING, "File not added due to mirror cancel: %s%s",adr,fil); return 0; @@ -1371,7 +1371,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* int code = 0; if (sscanf(text, "%d", &code) == 1) { // got code back[p].r.statuscode=code; - back[p].status=STATUS_READY; // terminé + back[p].status=STATUS_READY; // terminé if (lf != NULL && *lf != '\0') { // got location ? strcpybuff(back[p].r.location, lf + 1); } @@ -1405,7 +1405,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* a=strstr(cache->use,buff); #endif - // Ok, noté en cache->. mais bien présent dans le cache ou sur disque? + // Ok, noté en cache->. mais bien présent dans le cache ou sur disque? #if HTS_FAST_CACHE // negative values when data is not in cache if (hash_pos_return < 0) { @@ -1420,7 +1420,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* #endif #if HTS_FAST_CACHE==0 - if (pos<0) { // pas de mise en cache data, vérifier existence + if (pos<0) { // pas de mise en cache data, vérifier existence #endif /* note: no check with IS_DELAYED_EXT() enabled - postcheck by client please! */ if (save[0] != '\0' && !IS_DELAYED_EXT(save) && fsize_utf8(fconv(catbuff,save)) <= 0) { // fichier final n'existe pas ou est vide! @@ -1455,11 +1455,11 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* #else a=NULL; #endif - // dévalider car non présent sur disque dans structure originale!!! - // sinon, le fichier est ok à priori, mais on renverra un if-modified-since pour - // en être sûr + // dévalider car non présent sur disque dans structure originale!!! + // sinon, le fichier est ok à priori, mais on renverra un if-modified-since pour + // en être sûr if (opt->norecatch) { // tester norecatch - if (!fexist_utf8(fconv(catbuff,save))) { // fichier existe pas mais déclaré: on l'a effacé + if (!fexist_utf8(fconv(catbuff,save))) { // fichier existe pas mais déclaré: on l'a effacé FILE* fp=FOPEN(fconv(catbuff,save),"wb"); if (fp) fclose(fp); hts_log_print(opt, LOG_WARNING, "Previous file '%s' not found (erased by user ?), ignoring: %s%s",save,back[p].url_adr,back[p].url_fil); @@ -1483,25 +1483,25 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* #endif } - // Existe pas en cache, ou bien pas de cache présent + // Existe pas en cache, ou bien pas de cache présent #if HTS_FAST_CACHE - if (hash_pos_return) { // OK existe en cache (et données aussi)! + if (hash_pos_return) { // OK existe en cache (et données aussi)! #else - if (a!=NULL) { // OK existe en cache (et données aussi)! + if (a!=NULL) { // OK existe en cache (et données aussi)! #endif const int cache_is_prioritary = cache->type == 1 || opt->state.stop != 0; if (cache_is_prioritary) { // cache prioritaire (pas de test if-modified..) - // dans ce cas on peut également lire des réponses cachées comme 404,302... + // dans ce cas on peut également lire des réponses cachées comme 404,302... // lire dans le cache if (!test) back[p].r = cache_read(opt,cache,adr,fil,save, back[p].location_buffer); else - back[p].r = cache_read(opt,cache,adr,fil,NULL, back[p].location_buffer); // charger en tête uniquement du cache + back[p].r = cache_read(opt,cache,adr,fil,NULL, back[p].location_buffer); // charger en tête uniquement du cache /* ensure correct location buffer set */ back[p].r.location=back[p].location_buffer; - /* Interdiction taille par le wizard? --> détruire */ + /* Interdiction taille par le wizard? --> détruire */ if (back[p].r.statuscode != -1) { // pas d'erreur de lecture if (!back_checksize(opt,&back[p],0)) { back[p].status=STATUS_READY; // FINI @@ -1515,14 +1515,14 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* } } - if (back[p].r.statuscode != -1 || IS_DELAYED_EXT(save)) { // pas d'erreur de lecture ou test retardé + if (back[p].r.statuscode != -1 || IS_DELAYED_EXT(save)) { // pas d'erreur de lecture ou test retardé if (!test) { hts_log_print(opt, LOG_DEBUG, "File immediately loaded from cache: %s%s",back[p].url_adr,back[p].url_fil); } else { hts_log_print(opt, LOG_DEBUG, "File immediately tested from cache: %s%s",back[p].url_adr,back[p].url_fil); } - back[p].r.notmodified=1; // fichier non modifié - back[p].status=STATUS_READY; // OK prêt + back[p].r.notmodified=1; // fichier non modifié + back[p].status=STATUS_READY; // OK prêt //file_notify(back[p].url_adr, back[p].url_fil, back[p].url_sav, 0, 0, back[p].r.notmodified); // not modified back_set_finished(sback, p); @@ -1632,12 +1632,12 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* /* Not in cache or temporary cache ; found on disk ? (hack) */ else if (fexist_utf8(save)) { off_t sz=fsize_utf8(save); - // Bon, là il est possible que le fichier ait été partiellement transféré - // (s'il l'avait été en totalité il aurait été inscrit dans le cache ET existerait sur disque) - // PAS de If-Modified-Since, on a pas connaissance des données à la date du cache - // On demande juste les données restantes si le date est valide (206), tout sinon (200) - if ((ishtml(opt,save) != 1) && (ishtml(opt,back[p].url_fil)!=1)) { // NON HTML (liens changés!!) - if (sz>0) { // Fichier non vide? (question bête, sinon on transfert tout!) + // Bon, là il est possible que le fichier ait été partiellement transféré + // (s'il l'avait été en totalité il aurait été inscrit dans le cache ET existerait sur disque) + // PAS de If-Modified-Since, on a pas connaissance des données à la date du cache + // On demande juste les données restantes si le date est valide (206), tout sinon (200) + if ((ishtml(opt,save) != 1) && (ishtml(opt,back[p].url_fil)!=1)) { // NON HTML (liens changés!!) + if (sz>0) { // Fichier non vide? (question bête, sinon on transfert tout!) char lastmodified[256]; get_filetime_rfc822(save, lastmodified); if (strnotempty(lastmodified)) { /* pas de If-.. possible */ @@ -1649,17 +1649,17 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* /* impossible - don't have etag or date if (strnotempty(back[p].r.etag)) { // ETag (RFC2616) sprintf(back[p].send_too,"If-None-Match: %s\r\n",back[p].r.etag); - back[p].http11=1; // En tête 1.1 + back[p].http11=1; // En tête 1.1 } else if (strnotempty(back[p].r.lastmodified)) { sprintf(back[p].send_too,"If-Unmodified-Since: %s\r\n",back[p].r.lastmodified); - back[p].http11=1; // En tête 1.1 + back[p].http11=1; // En tête 1.1 } else */ if (strlen(lastmodified)) { sprintf(back[p].send_too, "If-Unmodified-Since: %s\r\nRange: bytes="LLintP"-\r\n" , lastmodified, (LLint)sz); - back[p].http11=1; // En tête 1.1 + back[p].http11=1; // En tête 1.1 back[p].is_update=1; /* this is an update of a file */ back[p].range_req_size=sz; back[p].r.req.range_used=1; @@ -1670,13 +1670,13 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* } else { hts_log_print(opt, LOG_NOTICE, "File partially present ("LLintP" bytes) retransfered due to lack of cache: %s%s",(LLint)sz,back[p].url_adr,back[p].url_fil); - /* Sinon requête normale... */ + /* Sinon requête normale... */ back[p].http11=0; } } else if (opt->norecatch) { // tester norecatch - filenote(&opt->state.strc,save,NULL); // ne pas purger tout de même + filenote(&opt->state.strc,save,NULL); // ne pas purger tout de même file_notify(opt,back[p].url_adr, back[p].url_fil, back[p].url_sav, 0, 0, back[p].r.notmodified); - back[p].status=STATUS_READY; // OK prêt + back[p].status=STATUS_READY; // OK prêt back_set_finished(sback, p); back[p].r.statuscode=STATUSCODE_INVALID; // erreur strcpybuff(back[p].r.msg,"Null-size file not recaught"); @@ -1684,7 +1684,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* } } else { hts_log_print(opt, LOG_NOTICE, "HTML file ("LLintP" bytes) retransfered due to lack of cache: %s%s",(LLint)sz,back[p].url_adr,back[p].url_fil); - /* Sinon requête normale... */ + /* Sinon requête normale... */ back[p].http11=0; } } @@ -1694,18 +1694,18 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* if (opt->state.stop) { back[p].r.statuscode=STATUSCODE_INVALID; // fatal strcpybuff(back[p].r.msg,"mirror stopped by user"); - back[p].status=STATUS_READY; // terminé + back[p].status=STATUS_READY; // terminé back_set_finished(sback, p); hts_log_print(opt, LOG_WARNING, "File not added due to mirror cancel: %s%s",adr,fil); return 0; } { - ///htsblk r; non directement dans la structure-réponse! + ///htsblk r; non directement dans la structure-réponse! T_SOC soc; - // ouvrir liaison, envoyer requète - // ne pas traiter ou recevoir l'en tête immédiatement + // ouvrir liaison, envoyer requète + // ne pas traiter ou recevoir l'en tête immédiatement hts_init_htsblk(&back[p].r); //memset(&(back[p].r), 0, sizeof(htsblk)); back[p].r.location=back[p].location_buffer; @@ -1734,7 +1734,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* hts_log_print(opt, LOG_DEBUG, "error: forbidden test with ftp link for back_add"); return -1; // erreur pas de test permis } - if (!(back[p].r.req.proxy.active && opt->ftp_proxy)) { // connexion directe, gérée en thread + if (!(back[p].r.req.proxy.active && opt->ftp_proxy)) { // connexion directe, gérée en thread FTPDownloadStruct *str = (FTPDownloadStruct*) malloc(sizeof(FTPDownloadStruct)); str->pBack = &back[p]; str->pOpt = opt; @@ -1778,10 +1778,10 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* #if HDEBUG printf("back_solve..\n"); #endif - back[p].status=STATUS_WAIT_DNS; // tentative de résolution du nom de host + back[p].status=STATUS_WAIT_DNS; // tentative de résolution du nom de host soc=INVALID_SOCKET; // pas encore ouverte - back_solve(opt, &back[p]); // préparer - if (host_wait(opt, &back[p])) { // prêt, par ex fichier ou dispo dans dns + back_solve(opt, &back[p]); // préparer + if (host_wait(opt, &back[p])) { // prêt, par ex fichier ou dispo dans dns #if HDEBUG printf("ok, dns cache ready..\n"); #endif @@ -1826,14 +1826,14 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char* back[p].timeout=-1; // pas de gestion (default) } - if (opt->rateout>0) { // gestion d'un taux minimum de transfert toléré + if (opt->rateout>0) { // gestion d'un taux minimum de transfert toléré back[p].rateout=opt->rateout; back[p].rateout_time=time_local(); } else { back[p].rateout=-1; // pas de gestion (default) } - // Note: on charge les code-page erreurs (erreur 404, etc) dans le cas où cela est + // Note: on charge les code-page erreurs (erreur 404, etc) dans le cas où cela est // rattrapable (exemple: 301,302 moved xxx -> refresh sur la page!) //if ((back[p].statuscode!=HTTP_OK) || (soc<0)) { // ERREUR HTTP/autre @@ -1861,7 +1861,7 @@ printf("Xfopen ok, poll..\n"); #if HTS_XCONN back[p].status=STATUS_CONNECTING; // connexion en cours #else - back[p].status=99; // chargement en tête en cours + back[p].status=99; // chargement en tête en cours #endif else back[p].status=1; // chargement fichier @@ -1874,8 +1874,8 @@ printf("Xfopen ok, poll..\n"); } - // note: si il y a erreur (404,etc) status=2 (terminé/échec) mais - // le lien est considéré comme traité + // note: si il y a erreur (404,etc) status=2 (terminé/échec) mais + // le lien est considéré comme traité //if (back[p].soc<0) // erreur // return -1; @@ -1940,12 +1940,12 @@ void Hostlookup(void* pP) { t_hostent* hp; int error_found=0; - // recopier (après id:pass) + // recopier (après id:pass) #if DEBUGDNS printf("resolv in background: %s\n",jump_identification(iadr_p)); #endif strcpybuff(iadr,jump_identification(str->iadr_p)); - // couper éventuel : + // couper éventuel : { char *a; if ( (a=jump_toport(iadr)) ) @@ -2000,8 +2000,8 @@ void Hostlookup(void* pP) { } #endif -// attendre que le host (ou celui du proxy) ait été résolu -// si c'est un fichier, la résolution est immédiate +// attendre que le host (ou celui du proxy) ait été résolu +// si c'est un fichier, la résolution est immédiate // idem pour ftp:// void back_solve(httrackp *opt, lien_back* back) { if ((!strfield(back->url_adr,"file://")) @@ -2010,14 +2010,14 @@ void back_solve(httrackp *opt, lien_back* back) { && ! strfield(back->url_adr,"mms://") #endif ) { - //## if (back->url_adr[0]!=lOCAL_CHAR) { // qq chose à préparer + //## if (back->url_adr[0]!=lOCAL_CHAR) { // qq chose à préparer const char* a; if (!(back->r.req.proxy.active)) a=back->url_adr; else a=back->r.req.proxy.name; a = jump_protocol(a); - if (!hts_dnstest(opt, a)) { // non encore testé!.. + if (!hts_dnstest(opt, a)) { // non encore testé!.. // inscire en thread #ifdef _WIN32 // Windows @@ -2051,7 +2051,7 @@ void back_solve(httrackp *opt, lien_back* back) { } } -// détermine si le host a pu être résolu +// détermine si le host a pu être résolu int host_wait(httrackp *opt, lien_back* back) { if ((!strfield(back->url_adr,"file://")) && (!strfield(back->url_adr,"ftp://")) @@ -2065,12 +2065,12 @@ int host_wait(httrackp *opt, lien_back* back) { } else { return (hts_dnstest(opt, back->r.req.proxy.name)); } - } else return 1; // prêt, fichier local + } else return 1; // prêt, fichier local } #endif -// élimine les fichiers non html en backing (anticipation) +// élimine les fichiers non html en backing (anticipation) // cleanup non-html files in backing to save backing space // and allow faster "save in cache" operation // also cleanup keep-alive sockets and ensure that not too many sockets are being opened @@ -2219,9 +2219,9 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti struct timeval tv; int do_wait=0; int gestion_timeout=0; - int busy_recv=0; // pas de données pour le moment + int busy_recv=0; // pas de données pour le moment int busy_state=0; // pas de connexions - int max_loop; // nombre de boucles max à parcourir.. + int max_loop; // nombre de boucles max à parcourir.. int max_loop_chk=0; unsigned int mod_random = (unsigned int) ( time_local() + HTS_STAT.HTS_TOTAL_RECV ); @@ -2233,7 +2233,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti back_clean(opt,cache,sback); #endif - // recevoir tant qu'il y a des données (avec un maximum de max_loop boucles) + // recevoir tant qu'il y a des données (avec un maximum de max_loop boucles) do_wait=0; gestion_timeout=0; do { @@ -2241,9 +2241,9 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti busy_state=busy_recv=0; #if 0 - check_rate(stat_timestart,opt->maxrate); // vérifier taux de transfert + check_rate(stat_timestart,opt->maxrate); // vérifier taux de transfert #endif - // inscrire les sockets actuelles, et rechercher l'ID la plus élevée + // inscrire les sockets actuelles, et rechercher l'ID la plus élevée FD_ZERO(&fds); FD_ZERO(&fds_c); FD_ZERO(&fds_e); @@ -2256,7 +2256,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti // for(i=0;i<back_max;i++) { unsigned int i = ( i_mod + mod_random ) % ( back_max ); - // en cas de gestion du connect préemptif + // en cas de gestion du connect préemptif #if HTS_XCONN if (back[i].status==STATUS_CONNECTING) { // connexion do_wait=1; @@ -2272,7 +2272,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti max_c=0; nfds=back[i].r.soc; } else if (back[i].r.soc>nfds) { - // ID socket la plus élevée + // ID socket la plus élevée nfds=back[i].r.soc; } @@ -2280,11 +2280,11 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti #endif #if HTS_XGETHOST if (back[i].status==STATUS_WAIT_DNS) { // attente - // rien à faire.. + // rien à faire.. } else #endif // poll pour la lecture sur les sockets - if ((back[i].status>0) && (back[i].status<100)) { // en réception http + if ((back[i].status>0) && (back[i].status<100)) { // en réception http #if BDEBUG==1 //printf("....socket in progress: %d\n",back[i].r.soc); @@ -2293,7 +2293,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (!back[i].r.is_file) { //## if (back[i].url_adr[0]!=lOCAL_CHAR) { - // vérification de sécurité + // vérification de sécurité if (back[i].r.soc!=INVALID_SOCKET) { // hey, you never know.. // Do not endlessly wait when receiving SSL http data (Patrick Pfeifer) if (!(back[i].r.ssl && back[i].status > 0 && back[i].status < 1000)) { @@ -2305,7 +2305,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti // noter socket error FD_SET(back[i].r.soc,&fds_e); - // incrémenter nombre de sockets + // incrémenter nombre de sockets nsockets++; // calculer max @@ -2313,7 +2313,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti max_c=0; nfds=back[i].r.soc; } else if (back[i].r.soc>nfds) { - // ID socket la plus élevée + // ID socket la plus élevée nfds=back[i].r.soc; } } @@ -2323,7 +2323,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti strcpybuff(back[i].r.msg,"Connect Error"); else strcpybuff(back[i].r.msg,"Receive Error"); - back[i].status=STATUS_READY; // terminé + back[i].status=STATUS_READY; // terminé back_set_finished(sback, i); hts_log_print(opt, LOG_WARNING, "Unexpected socket error during pre-loop"); } @@ -2368,7 +2368,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (!max_read_bytes) busy_recv=0; - // recevoir les données arrivées + // recevoir les données arrivées for(i_mod = 0 ; i_mod < (unsigned int) back_max ; i_mod++) { // for(i=0;i<back_max;i++) { unsigned int i = ( i_mod + mod_random ) % ( back_max ); @@ -2392,7 +2392,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (back[i].status == STATUS_ALIVE) { /* Keep-alive socket */ back_delete(opt,cache,sback, i); } else { - back[i].status=STATUS_READY; // terminé + back[i].status=STATUS_READY; // terminé back_set_finished(sback, i); } } @@ -2403,12 +2403,12 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti // ---- FLAG WRITE MIS A UN?: POUR LE CONNECT if (back[i].status==STATUS_CONNECTING) { // attendre connect int dispo=0; - // vérifier l'existance de timeout-check + // vérifier l'existance de timeout-check if (!gestion_timeout) if (back[i].timeout>0) gestion_timeout=1; - // connecté? + // connecté? dispo=FD_ISSET(back[i].r.soc,&fds_c); if (dispo) { // ok connected!! busy_state=1; @@ -2458,7 +2458,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (back[i].timeout>0) { // refresh timeout si besoin est back[i].timeout_refresh=back[i].ka_time_start; } - if (back[i].rateout>0) { // le taux de transfert de base sur le début de la connexion + if (back[i].rateout>0) { // le taux de transfert de base sur le début de la connexion back[i].rateout_time=back[i].ka_time_start; } // envoyer header @@ -2470,7 +2470,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti http_sendhead(opt, opt->cookie,0,back[i].send_too,back[i].url_adr,back[i].url_fil,back[i].referer_adr,back[i].referer_fil,&back[i].r); else // test! http_sendhead(opt, opt->cookie,1,back[i].send_too,back[i].url_adr,back[i].url_fil,back[i].referer_adr,back[i].referer_fil,&back[i].r); - back[i].status=99; // attendre en tête maintenant + back[i].status=99; // attendre en tête maintenant } } @@ -2527,12 +2527,12 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (back[i].timeout>0) gestion_timeout=1; - if (host_wait(opt, &back[i])) { // prêt + if (host_wait(opt, &back[i])) { // prêt back[i].status=STATUS_CONNECTING; // attente connexion if (back[i].timeout>0) { // refresh timeout si besoin est back[i].timeout_refresh=time_local(); } - if (back[i].rateout>0) { // le taux de transfert de base sur le début de la connexion + if (back[i].rateout>0) { // le taux de transfert de base sur le début de la connexion back[i].rateout_time=time_local(); } @@ -2558,10 +2558,10 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } #endif #if USE_BEGINTHREAD - // ..rien à faire, c'est magic les threads + // ..rien à faire, c'est magic les threads #else - else if (back[i].status==STATUS_FTP_TRANSFER) { // en réception ftp - if (!fexist(back[i].location_buffer)) { // terminé + else if (back[i].status==STATUS_FTP_TRANSFER) { // en réception ftp + if (!fexist(back[i].location_buffer)) { // terminé FILE* fp; fp=FOPEN(fconcat(OPT_GET_BUFF(opt), back[i].location_buffer,".ok"),"rb"); if (fp) { @@ -2597,15 +2597,15 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti back_finalize(opt,cache,sback,i); } } - else if ((back[i].status>0) && (back[i].status<1000)) { // en réception http + else if ((back[i].status>0) && (back[i].status<1000)) { // en réception http int dispo=0; - // vérifier l'existance de timeout-check + // vérifier l'existance de timeout-check if (!gestion_timeout) if (back[i].timeout>0) gestion_timeout=1; - // données dispo? + // données dispo? //## if (back[i].url_adr[0]!=lOCAL_CHAR) if (back[i].r.is_file) dispo=1; @@ -2618,9 +2618,9 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (!max_read_bytes) dispo=0; // limit transfer rate - if (dispo) { // données dispo + if (dispo) { // données dispo LLint retour_fread; - busy_recv=1; // on récupère encore + busy_recv=1; // on récupère encore #if BDEBUG==1 printf("..data available on socket %d\n",back[i].r.soc); #endif @@ -2631,10 +2631,10 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti #if HTS_DIRECTDISK // Court-circuit: // Peut-on stocker le fichier directement sur disque? - // Ahh que ca serait vachement mieux et que ahh que la mémoire vous dit merci! + // Ahh que ca serait vachement mieux et que ahh que la mémoire vous dit merci! if (back[i].status) { - if (back[i].r.is_write==0) { // mode mémoire - if (back[i].r.adr==NULL) { // rien n'a été écrit + if (back[i].r.is_write==0) { // mode mémoire + if (back[i].r.adr==NULL) { // rien n'a été écrit if (!back[i].testmode) { // pas mode test if (strnotempty(back[i].url_sav)) { if (strcmp(back[i].url_fil,"/robots.txt")) { @@ -2643,7 +2643,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (opt->getmode&2) { // on peut ecrire des non html int fcheck=0; int last_errno = 0; - back[i].r.is_write=1; // écrire + back[i].r.is_write=1; // écrire if (back[i].r.compressed && /* .gz are *NOT* depacked!! */ @@ -2709,7 +2709,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } } else { // on coupe tout! hts_log_print(opt, LOG_DEBUG, "File cancelled (non HTML): %s%s",back[i].url_adr,back[i].url_fil); - back[i].status=STATUS_READY; // terminé + back[i].status=STATUS_READY; // terminé back_set_finished(sback, i); if (!back[i].testmode) back[i].r.statuscode=STATUSCODE_INVALID; // EUHH CANCEL @@ -2733,15 +2733,15 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } #endif - // réception de données depuis socket ou fichier + // réception de données depuis socket ou fichier if (back[i].status) { if (back[i].status==STATUS_WAIT_HEADERS) // recevoir par bloc de lignes retour_fread=http_xfread1(&(back[i].r),0); - else if (back[i].status==STATUS_CHUNK_WAIT || back[i].status==STATUS_CHUNK_CR) { // recevoir longueur chunk en hexa caractère par caractère + else if (back[i].status==STATUS_CHUNK_WAIT || back[i].status==STATUS_CHUNK_CR) { // recevoir longueur chunk en hexa caractère par caractère // backuper pour lire dans le buffer chunk htsblk r; memcpy(&r, &(back[i].r), sizeof(htsblk)); - back[i].r.is_write=0; // mémoire + back[i].r.is_write=0; // mémoire back[i].r.adr=back[i].chunk_adr; // adresse back[i].r.size=back[i].chunk_size; // taille taille chunk back[i].r.totalsize=-1; // total inconnu @@ -2753,9 +2753,9 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti // modifier et restaurer back[i].chunk_adr=back[i].r.adr; // adresse back[i].chunk_size=back[i].r.size; // taille taille chunk - memcpy(&(back[i].r), &r, sizeof(htsblk)); // restaurer véritable r + memcpy(&(back[i].r), &r, sizeof(htsblk)); // restaurer véritable r } - else if (back[i].is_chunk) { // attention chunk, limiter taille à lire + else if (back[i].is_chunk) { // attention chunk, limiter taille à lire #if CHUNKDEBUG==1 printf("[%d] read %d bytes\n",(int)back[i].r.soc,(int)min(back[i].r.totalsize-back[i].r.size,max_read_bytes)); #endif @@ -2764,9 +2764,9 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti retour_fread=(int) http_xfread1(&(back[i].r),(int) max_read_bytes); // retour_fread=http_fread1(&(back[i].r)); } else - retour_fread=READ_EOF; // interruption ou annulation interne (peut ne pas être une erreur) + retour_fread=READ_EOF; // interruption ou annulation interne (peut ne pas être une erreur) - // Si réception chunk, tester si on est pas à la fin! + // Si réception chunk, tester si on est pas à la fin! if (back[i].status==1) { if (back[i].is_chunk) { // attendre prochain chunk if (back[i].r.size==back[i].r.totalsize) { // fin chunk! @@ -2789,8 +2789,8 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } } - if (retour_fread < 0) { // fin réception - back[i].status=STATUS_READY; // terminé + if (retour_fread < 0) { // fin réception + back[i].status=STATUS_READY; // terminé back_set_finished(sback, i); /*KA back[i].r.soc=INVALID_SOCKET; */ #if CHUNKDEBUG==1 @@ -2832,7 +2832,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (back[i].r.totalsize>=0) { // tester totalsize //if ((back[i].r.totalsize>=0) && (back[i].status==STATUS_WAIT_HEADERS)) { // tester totalsize - if (back[i].r.totalsize!=back[i].r.size) { // pas la même! + if (back[i].r.totalsize!=back[i].r.size) { // pas la même! if (!opt->tolerant) { //#if HTS_CL_IS_FATAL deleteaddr(&back[i].r); @@ -2850,13 +2850,13 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti #if BDEBUG==1 printf("transfer ok\n"); #endif - } else if (retour_fread > 0) { // pas d'erreur de réception et data + } else if (retour_fread > 0) { // pas d'erreur de réception et data if (back[i].timeout>0) { // refresh timeout si besoin est back[i].timeout_refresh=time_local(); } - // Traitement des en têtes chunks ou en têtes - if (back[i].status==STATUS_CHUNK_WAIT || back[i].status==STATUS_CHUNK_CR) { // réception taille chunk en hexa ( après les en têtes, peut ne pas + // Traitement des en têtes chunks ou en têtes + if (back[i].status==STATUS_CHUNK_WAIT || back[i].status==STATUS_CHUNK_CR) { // réception taille chunk en hexa ( après les en têtes, peut ne pas if (back[i].chunk_size > 0 && back[i].chunk_adr[back[i].chunk_size-1]==10) { int chunk_size=-1; char chunk_data[64]; @@ -2875,7 +2875,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti printf("[%d] chunk received and read: %s\n",(int)back[i].r.soc,chunk_data); #endif if (back[i].r.totalsize<0) - back[i].r.totalsize=0; // initialiser à 0 (-1 == unknown) + back[i].r.totalsize=0; // initialiser à 0 (-1 == unknown) if (back[i].status==STATUS_CHUNK_WAIT) { // "real" chunk if (sscanf(chunk_data,"%x",&chunk_size) == 1) { if (chunk_size > 0) @@ -2975,7 +2975,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti /* Tester totalsize en fin de chunk */ if ((back[i].r.totalsize>=0)) { // tester totalsize - if (back[i].r.totalsize!=back[i].r.size) { // pas la même! + if (back[i].r.totalsize!=back[i].r.size) { // pas la même! if (!opt->tolerant) { deleteaddr(&back[i].r); back[i].r.statuscode=STATUSCODE_INVALID; @@ -3008,7 +3008,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } // taille buffer chunk > 1 && LF // - } else if (back[i].status==STATUS_WAIT_HEADERS) { // en têtes (avant le chunk si il est présent) + } else if (back[i].status==STATUS_WAIT_HEADERS) { // en têtes (avant le chunk si il est présent) // if (back[i].r.size>=2) { // double LF @@ -3030,8 +3030,8 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (back[i].status != 0 && back[i].r.adr[0] != '<') { // ---------------------------------------- - // traiter en-tête! - // status-line à récupérer + // traiter en-tête! + // status-line à récupérer ptr+=binput(back[i].r.adr+ptr,rcvd,2000); if (strnotempty(rcvd)==0) { /* Bogus CRLF, OR recycled connection and trailing chunk CRLF */ @@ -3051,10 +3051,10 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti fprintfio(ioinfo,back[i].r.adr,">>> "); fprintf(ioinfo,"\r\n"); fflush(ioinfo); - } // en-tête + } // en-tête } - // header // ** !attention! HTTP/0.9 non supporté + // header // ** !attention! HTTP/0.9 non supporté do { ptr+=binput(back[i].r.adr+ptr,rcvd,2000); #if HDEBUG @@ -3072,7 +3072,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (strnotempty(rcvd)) treathead(opt->cookie,back[i].url_adr,back[i].url_fil,&back[i].r,rcvd); // traiter - // parfois les serveurs buggés renvoient un content-range avec un 200 + // parfois les serveurs buggés renvoient un content-range avec un 200 if (back[i].r.statuscode==HTTP_OK) // 'OK' if (strfield(rcvd, "content-range:")) { // Avec un content-range: relisez les RFC.. // Fake range (the file is complete) @@ -3180,9 +3180,9 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti // And answer with a 200 (OK) response, and the same page // If the size is the same, and the option has been set, we assume // that the file is identical - and therefore let's break the connection - if (back[i].is_update) { // mise à jour + if (back[i].is_update) { // mise à jour if (back[i].r.statuscode==HTTP_OK && !back[i].testmode) { // 'OK' - htsblk r = cache_read(opt,cache,back[i].url_adr,back[i].url_fil,NULL,NULL); // lire entrée cache + htsblk r = cache_read(opt,cache,back[i].url_adr,back[i].url_fil,NULL,NULL); // lire entrée cache if (r.statuscode == HTTP_OK) { // OK pas d'erreur cache LLint len1,len2; len1=r.totalsize; @@ -3210,7 +3210,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti // Various hacks to limit re-transfers when updating a mirror // Detect already downloaded file (with another browser, for example) if (opt->sizehack) { - if (!back[i].is_update) { // mise à jour + if (!back[i].is_update) { // mise à jour if (back[i].r.statuscode==HTTP_OK && !back[i].testmode) { // 'OK' if (!is_hypertext_mime(opt,back[i].r.contenttype, back[i].url_fil)) { // not HTML if (strnotempty(back[i].url_sav)) { // target found @@ -3240,8 +3240,8 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti // and received a complete file notification (200), with 'Content-length: NNN' // it might be possible that we had the complete file // this is the case in *most* cases, so break the connection - if (back[i].r.is_write==0) { // mode mémoire - if (back[i].r.adr==NULL) { // rien n'a été écrit + if (back[i].r.is_write==0) { // mode mémoire + if (back[i].r.adr==NULL) { // rien n'a été écrit if (!back[i].testmode) { // pas mode test if (strnotempty(back[i].url_sav)) { if (strcmp(back[i].url_fil,"/robots.txt")) { @@ -3296,8 +3296,8 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } /* sinon, continuer */ - /* if (back[i].r.soc!=INVALID_SOCKET) { // ok récupérer body? */ - // head: terminé + /* if (back[i].r.soc!=INVALID_SOCKET) { // ok récupérer body? */ + // head: terminé if (back[i].head_request) { hts_log_print(opt, LOG_DEBUG, "Tested file: %s%s",back[i].url_adr,back[i].url_fil); #if HTS_DEBUG_CLOSESOCK @@ -3307,13 +3307,13 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (!back[i].http11) { /* NO KA */ deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; } - back[i].status=STATUS_READY; // terminé + back[i].status=STATUS_READY; // terminé back_set_finished(sback, i); } - // traiter une éventuelle erreur 304 (cache à jour utilisable) - else if (back[i].r.statuscode==HTTP_NOT_MODIFIED) { // document à jour dans le cache + // traiter une éventuelle erreur 304 (cache à jour utilisable) + else if (back[i].r.statuscode==HTTP_NOT_MODIFIED) { // document à jour dans le cache // lire dans le cache - // ** NOTE: pas de vérif de la taille ici!! + // ** NOTE: pas de vérif de la taille ici!! #if HTS_DEBUG_CLOSESOCK DEBUG_W("back_wait(file is not modified): deletehttp\n"); #endif @@ -3343,9 +3343,9 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti // Status is okay? if (back[i].r.statuscode!=-1) { // pas d'erreur de lecture - back[i].status=STATUS_READY; // OK prêt + back[i].status=STATUS_READY; // OK prêt back_set_finished(sback, i); - back[i].r.notmodified=1; // NON modifié! + back[i].r.notmodified=1; // NON modifié! hts_log_print(opt, LOG_DEBUG, "File loaded after test from cache: %s%s",back[i].url_adr,back[i].url_fil); // finalize @@ -3355,12 +3355,12 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } #if DEBUGCA - printf("..document à jour après requète: %s%s\n",back[i].url_adr,back[i].url_fil); + printf("..document à jour après requète: %s%s\n",back[i].url_adr,back[i].url_fil); #endif //printf(">%s status %d\n",back[p].r.contenttype,back[p].r.statuscode); } else { // erreur - back[i].status=STATUS_READY; // terminé + back[i].status=STATUS_READY; // terminé back_set_finished(sback, i); //printf("erreur cache\n"); @@ -3371,7 +3371,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } else if (HTTP_IS_REDIRECT(back[i].r.statuscode) || (back[i].r.statuscode==412) || (back[i].r.statuscode==416) - ) { // Ne pas prendre le html, erreurs connues et gérées + ) { // Ne pas prendre le html, erreurs connues et gérées #if HTS_DEBUG_CLOSESOCK DEBUG_W("back_wait(301,302,303,307,412,416..): deletehttp\n"); #endif @@ -3379,7 +3379,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti /*KA deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET;*/ back_maydeletehttp(opt, cache, sback, i); - back[i].status=STATUS_READY; // terminé + back[i].status=STATUS_READY; // terminé back_set_finished(sback, i); // finalize if (back[i].r.statuscode>0) { @@ -3389,7 +3389,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti /********** **************************** ********** */ } else { // il faut aller le chercher - // effacer buffer (requète) + // effacer buffer (requète) if (!noFreebuff) { deleteaddr(&back[i].r); back[i].r.size=0; @@ -3404,17 +3404,17 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti #endif if (sz>=0) { if (!is_hypertext_mime(opt,back[i].r.contenttype, back[i].url_sav)) { // pas HTML - if (opt->getmode&2) { // on peut ecrire des non html **sinon ben euhh sera intercepté plus loin, donc rap sur ce qui va sortir** + if (opt->getmode&2) { // on peut ecrire des non html **sinon ben euhh sera intercepté plus loin, donc rap sur ce qui va sortir** filenote(&opt->state.strc,back[i].url_sav,NULL); // noter fichier comme connu file_notify(opt,back[i].url_adr, back[i].url_fil, back[i].url_sav, 0, 1, back[i].r.notmodified); back[i].r.out=FOPEN(fconv(catbuff,back[i].url_sav),"ab"); // append if (back[i].r.out) { - back[i].r.is_write=1; // écrire - back[i].r.size=sz; // déja écrit + back[i].r.is_write=1; // écrire + back[i].r.size=sz; // déja écrit back[i].r.statuscode=HTTP_OK; // Forcer 'OK' if (back[i].r.totalsize>=0) back[i].r.totalsize+=sz; // plus en fait - fseek(back[i].r.out,0,SEEK_END); // à la fin + fseek(back[i].r.out,0,SEEK_END); // à la fin /* create a temporary reference file in case of broken mirror */ if (back_serialize_ref(opt, &back[i]) != 0) { hts_log_print(opt, LOG_WARNING, "Could not create temporary reference file for %s%s",back[i].url_adr,back[i].url_fil); @@ -3423,12 +3423,12 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti printf("continue interrupted file\n"); #endif } else { // On est dans la m** - back[i].status=STATUS_READY; // terminé (voir plus loin) + back[i].status=STATUS_READY; // terminé (voir plus loin) back_set_finished(sback, i); strcpybuff(back[i].r.msg,"Can not open partial file"); } } - } else { // mémoire + } else { // mémoire FILE* fp=FOPEN(fconv(catbuff,back[i].url_sav),"rb"); if (fp) { LLint alloc_mem=sz + 1; @@ -3439,7 +3439,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti if (back[i].r.totalsize>=0) back[i].r.totalsize+=sz; // plus en fait if (( fread(back[i].r.adr,1,sz,fp)) != sz) { - back[i].status=STATUS_READY; // terminé (voir plus loin) + back[i].status=STATUS_READY; // terminé (voir plus loin) back_set_finished(sback, i); strcpybuff(back[i].r.msg,"Can not read partial file"); } else { @@ -3449,19 +3449,19 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti #endif } } else { - back[i].status=STATUS_READY; // terminé (voir plus loin) + back[i].status=STATUS_READY; // terminé (voir plus loin) back_set_finished(sback, i); strcpybuff(back[i].r.msg,"No memory for partial file"); } fclose(fp); } else { // Argh.. - back[i].status=STATUS_READY; // terminé (voir plus loin) + back[i].status=STATUS_READY; // terminé (voir plus loin) back_set_finished(sback, i); strcpybuff(back[i].r.msg,"Can not open partial file"); } } - } else { // Non trouvé?? - back[i].status=STATUS_READY; // terminé (voir plus loin) + } else { // Non trouvé?? + back[i].status=STATUS_READY; // terminé (voir plus loin) back_set_finished(sback, i); strcpybuff(back[i].r.msg,"Can not find partial file"); } @@ -3481,14 +3481,14 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } } - if (back[i].status!=0) { // non terminé (erreur) + if (back[i].status!=0) { // non terminé (erreur) if (!back[i].testmode) { // fichier normal if (back[i].r.empty /* ?? && back[i].r.statuscode==HTTP_OK */) { // empty response // Couper connexion back_maydeletehttp(opt, cache, sback, i); /* KA deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; */ - back[i].status=STATUS_READY; // terminé + back[i].status=STATUS_READY; // terminé back_set_finished(sback, i); if ( deleteaddr(&back[i].r) && (back[i].r.adr=(char*) malloct( 2)) ) { back[i].r.adr[0] = 0; @@ -3525,9 +3525,9 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; if (back[i].r.statuscode==HTTP_OK) { strcpybuff(back[i].r.msg,"Test: OK"); - back[i].r.statuscode=STATUSCODE_TEST_OK; // test réussi + back[i].r.statuscode=STATUSCODE_TEST_OK; // test réussi } - else { // test a échoué, on ne change rien sauf que l'erreur est à titre indicatif + else { // test a échoué, on ne change rien sauf que l'erreur est à titre indicatif char tempo[1000]; strcpybuff(tempo,back[i].r.msg); strcpybuff(back[i].r.msg,"Test: "); @@ -3549,13 +3549,13 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti #if BDEBUG==1 printf("bytes overall: %d\n",back[i].r.size); #endif - } // données dispo + } // données dispo - // en cas d'erreur cl, supprimer éventuel fichier sur disque + // en cas d'erreur cl, supprimer éventuel fichier sur disque #if HTS_REMOVE_BAD_FILES if (back[i].status<0) { if (!back[i].testmode) { // pas en test - UNLINK(back[i].url_sav); // éliminer fichier (endommagé) + UNLINK(back[i].url_sav); // éliminer fichier (endommagé) //printf("&& %s\n",back[i].url_sav); } } @@ -3579,14 +3579,14 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } // status>0 } // for - // vérifier timeouts + // vérifier timeouts if (gestion_timeout) { TStamp act; act=time_local(); // temps en secondes for(i_mod = 0 ; i_mod < (unsigned int) back_max ; i_mod++) { // for(i=0;i<back_max;i++) { unsigned int i = ( i_mod + mod_random ) % ( back_max ); - if (back[i].status>0) { // réception/connexion/.. + if (back[i].status>0) { // réception/connexion/.. if (back[i].timeout>0) { //printf("time check %d\n",((int) (act-back[i].timeout_refresh))-back[i].timeout); if (((int) (act-back[i].timeout_refresh))>=back[i].timeout) { @@ -3604,12 +3604,12 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti strcpybuff(back[i].r.msg,"DNS Time Out"); else strcpybuff(back[i].r.msg,"Receive Time Out"); - back[i].status=STATUS_READY; // terminé + back[i].status=STATUS_READY; // terminé back_set_finished(sback, i); } else if ((back[i].rateout>0) && (back[i].status<99)) { if (((int) (act-back[i].rateout_time))>=HTS_WATCHRATE) { // checker au bout de 15s if ( (int) ((back[i].r.size)/(act-back[i].rateout_time)) < back[i].rateout ) { // trop lent - back[i].status=STATUS_READY; // terminé + back[i].status=STATUS_READY; // terminé back_set_finished(sback, i); if (back[i].r.soc!=INVALID_SOCKET) { #if HTS_DEBUG_CLOSESOCK @@ -3632,7 +3632,7 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti } while((busy_state) && (busy_recv) && (max_loop>0)); if ((!busy_recv) && (!busy_state)) { if (max_loop_chk>=1) { - Sleep(10); // un tite pause pour éviter les lag.. + Sleep(10); // un tite pause pour éviter les lag.. } } } @@ -3650,7 +3650,7 @@ int back_checksize(httrackp* opt,lien_back* eback,int check_only_totalsize) { return 0; /* interdit */ } - /* vérifier taille classique (heml et non html) */ + /* vérifier taille classique (heml et non html) */ if ((istoobig(opt,size_to_test,eback->maxfile_html,eback->maxfile_nonhtml,eback->r.contenttype))) { return 0; /* interdit */ } @@ -3682,7 +3682,7 @@ int back_checkmirror(httrackp* opt) { } -// octets transférés + add +// octets transférés + add LLint back_transfered(LLint nb,struct_back* sback) { lien_back* const back = sback->lnk; const int back_max = sback->count; diff --git a/src/htsbase.h b/src/htsbase.h index ef01eba..d850bd9 100644 --- a/src/htsbase.h +++ b/src/htsbase.h @@ -91,11 +91,11 @@ extern "C" { #define Sleep(a) { if (((a)*1000)%1000000) usleep(((a)*1000)%1000000); if (((a)*1000)/1000000) sleep(((a)*1000)/1000000); } #endif -// teste égalité de 2 chars, case insensitive +// teste égalité de 2 chars, case insensitive #define hichar(a) ((((a)>='a') && ((a)<='z')) ? ((a)-('a'-'A')) : (a)) #define streql(a,b) (hichar(a)==hichar(b)) -// caractère maj +// caractère maj #define isUpperLetter(a) ( ((a) >= 'A') && ((a) <= 'Z') ) diff --git a/src/htsbauth.c b/src/htsbauth.c index 87ddc2b..3f04c9b 100644 --- a/src/htsbauth.c +++ b/src/htsbauth.c @@ -53,7 +53,7 @@ int cookie_add(t_cookie* cookie,char* cook_name,char* cook_value,char* domain,ch char* a=cookie->data; char* insert; char cook[16384]; - // effacer éventuel cookie en double + // effacer éventuel cookie en double cookie_del(cookie,cook_name,domain,path); if ((int)strlen(cook_value)>1024) return -1; // trop long if ((int)strlen(cook_name)>256) return -1; // trop long @@ -68,7 +68,7 @@ int cookie_add(t_cookie* cookie,char* cook_name,char* cook_value,char* domain,ch +256 ) > cookie->max_len) return -1; // impossible d'ajouter - insert=a; // insérer ici + insert=a; // insérer ici while (*a) { if ( strlen(cookie_get(buffer, a,2)) < strlen(path) ) // long. path (le + long est prioritaire) a=cookie->data+strlen(cookie->data); // fin @@ -79,7 +79,7 @@ int cookie_add(t_cookie* cookie,char* cook_name,char* cook_value,char* domain,ch else a++; while(*a=='\n') a++; - insert=a; // insérer ici + insert=a; // insérer ici } } // construction du cookie @@ -120,9 +120,9 @@ int cookie_del(t_cookie* cookie,char* cook_name,char* domain,char* path) { return 0; } -// rechercher cookie à partir de la position s (par exemple s=cookie.data) +// rechercher cookie à partir de la position s (par exemple s=cookie.data) // renvoie pointeur sur ligne, ou NULL si introuvable -// path est aligné à droite et cook_name peut être vide (chercher alors tout cookie) +// path est aligné à droite et cook_name peut être vide (chercher alors tout cookie) // .doubleclick.net TRUE / FALSE 1999999999 id A char* cookie_find(char* s,char* cook_name,char* domain,char* path) { char buffer[8192]; @@ -130,18 +130,18 @@ char* cookie_find(char* s,char* cook_name,char* domain,char* path) { while (*a) { int t; if (strnotempty(cook_name)==0) - t=1; // accepter par défaut + t=1; // accepter par défaut else - t=( strcmp(cookie_get(buffer, a,5),cook_name)==0 ); // tester si même nom - if (t) { // même nom ou nom qualconque + t=( strcmp(cookie_get(buffer, a,5),cook_name)==0 ); // tester si même nom + if (t) { // même nom ou nom qualconque // - char* chk_dom=cookie_get(buffer,a,0); // domaine concerné par le cookie + char* chk_dom=cookie_get(buffer,a,0); // domaine concerné par le cookie if ((int) strlen(chk_dom) <= (int) strlen(domain)) { - if ( strcmp(chk_dom,domain+strlen(domain)-strlen(chk_dom))==0 ) { // même domaine + if ( strcmp(chk_dom,domain+strlen(domain)-strlen(chk_dom))==0 ) { // même domaine // - char* chk_path=cookie_get(buffer,a,2); // chemin concerné par le cookie + char* chk_path=cookie_get(buffer,a,2); // chemin concerné par le cookie if ((int) strlen(chk_path) <= (int) strlen(path)) { - if (strncmp(path,chk_path,strlen(chk_path))==0 ) { // même chemin + if (strncmp(path,chk_path,strlen(chk_path))==0 ) { // même chemin return a; } } @@ -166,14 +166,14 @@ char* cookie_nextfield(char* a) { } // lire cookies.txt -// lire également (Windows seulement) les *@*.txt (cookies IE copiés) +// lire également (Windows seulement) les *@*.txt (cookies IE copiés) // !=0 : erreur int cookie_load(t_cookie* cookie, const char* fpath, const char* name) { char catbuff[CATBUFF_SIZE]; char buffer[8192]; // cookie->data[0]='\0'; - // Fusionner d'abord les éventuels cookies IE + // Fusionner d'abord les éventuels cookies IE #ifdef _WIN32 { WIN32_FIND_DATAA find; @@ -266,7 +266,7 @@ int cookie_load(t_cookie* cookie, const char* fpath, const char* name) { return -1; } -// écrire cookies.txt +// écrire cookies.txt // !=0 : erreur int cookie_save(t_cookie* cookie,char* name) { char catbuff[CATBUFF_SIZE]; @@ -291,13 +291,13 @@ int cookie_save(t_cookie* cookie,char* name) { // insertion chaine ins avant s void cookie_insert(char* s,char* ins) { char* buff; - if (strnotempty(s)==0) { // rien à faire, juste concat + if (strnotempty(s)==0) { // rien à faire, juste concat strcatbuff(s,ins); } else { buff=(char*) malloct(strlen(s)+2); if (buff) { strcpybuff(buff,s); // copie temporaire - strcpybuff(s,ins); // insérer + strcpybuff(s,ins); // insérer strcatbuff(s,buff); // copier freet(buff); } @@ -306,7 +306,7 @@ void cookie_insert(char* s,char* ins) { // destruction chaine dans s position pos void cookie_delete(char* s,int pos) { char* buff; - if (strnotempty(s+pos)==0) { // rien à faire, effacer + if (strnotempty(s+pos)==0) { // rien à faire, effacer s[0]='\0'; } else { buff=(char*) malloct(strlen(s+pos)+2); @@ -356,11 +356,11 @@ char* cookie_get(char *buffer,char* cookie_base,int param) { // -- basic auth -- -/* déclarer un répertoire comme possédant une authentification propre */ +/* déclarer un répertoire comme possédant une authentification propre */ int bauth_add(t_cookie* cookie,char* adr,char* fil,char* auth) { char buffer[HTS_URLMAXSIZE*2]; if (cookie) { - if (!bauth_check(cookie,adr,fil)) { // n'existe pas déja + if (!bauth_check(cookie,adr,fil)) { // n'existe pas déja bauth_chain* chain=&cookie->auth; char* prefix=bauth_prefix(buffer,adr,fil); /* fin de la chaine */ @@ -379,7 +379,7 @@ int bauth_add(t_cookie* cookie,char* adr,char* fil,char* auth) { return 0; } -/* tester adr et fil, et retourner authentification si nécessaire */ +/* tester adr et fil, et retourner authentification si nécessaire */ /* sinon, retourne NULL */ char* bauth_check(t_cookie* cookie,char* adr,char* fil) { char buffer[HTS_URLMAXSIZE*2]; diff --git a/src/htscache.c b/src/htscache.c index 07e2cf7..22f57e6 100644 --- a/src/htscache.c +++ b/src/htscache.c @@ -120,13 +120,13 @@ void cache_mayadd(httrackp* opt,cache_back* cache,htsblk* r,const char* url_adr, } // c'est le seul endroit ou l'on ajoute des elements dans le cache (fichier entier ou header) - // on stocke tout fichier "ok", mais également les réponses 404,301,302... + // on stocke tout fichier "ok", mais également les réponses 404,301,302... if ( #if 1 r->statuscode > 0 #else /* We don't store 5XX errors, because it might be a server problem */ - (r->statuscode==HTTP_OK) /* stocker réponse standard, plus */ + (r->statuscode==HTTP_OK) /* stocker réponse standard, plus */ || (r->statuscode==204) /* no content */ || HTTP_IS_REDIRECT(r->statuscode) /* redirect */ || (r->statuscode==401) /* authorization */ @@ -135,7 +135,7 @@ void cache_mayadd(httrackp* opt,cache_back* cache,htsblk* r,const char* url_adr, || (r->statuscode==410) /* gone */ #endif ) - { /* ne pas stocker si la page générée est une erreur */ + { /* ne pas stocker si la page générée est une erreur */ if (!r->is_file) { // stocker fichiers (et robots.txt) if ( url_save == NULL || (strnotempty(url_save)) || (strcmp(url_fil,"/robots.txt")==0)) { @@ -402,7 +402,7 @@ void cache_add(httrackp* opt,cache_back* cache,const htsblk *r,char* url_adr,cha char s[256]; char BIGSTK buff[HTS_URLMAXSIZE*4]; int ok=1; - int dataincache=0; // donnée en cache? + int dataincache=0; // donnée en cache? FILE* cache_ndx = cache->ndx; FILE* cache_dat = cache->dat; /*char digest[32+2];*/ @@ -420,12 +420,12 @@ void cache_add(httrackp* opt,cache_back* cache,const htsblk *r,char* url_adr,cha /* if (r->size <= 0) // taille <= 0 - return; // refusé.. + return; // refusé.. */ - // Mettre les *donées* en cache ? - if (is_hypertext_mime(opt,r->contenttype, url_fil)) // html, mise en cache des données et - dataincache=1; // pas uniquement de l'en tête + // Mettre les *donées* en cache ? + if (is_hypertext_mime(opt,r->contenttype, url_fil)) // html, mise en cache des données et + dataincache=1; // pas uniquement de l'en tête else if (all_in_cache) dataincache=1; // forcer tout en cache @@ -440,16 +440,16 @@ void cache_add(httrackp* opt,cache_back* cache,const htsblk *r,char* url_adr,cha // Position fflush(cache_dat); fflush(cache_ndx); pos=ftell(cache_dat); - // écrire pointeur seek, adresse, fichier + // écrire pointeur seek, adresse, fichier if (dataincache) // patcher - sprintf(s,"%d\n",pos); // ecrire tel que (eh oui évite les \0..) + sprintf(s,"%d\n",pos); // ecrire tel que (eh oui évite les \0..) else - sprintf(s,"%d\n",-pos); // ecrire tel que (eh oui évite les \0..) + sprintf(s,"%d\n",-pos); // ecrire tel que (eh oui évite les \0..) // data - // écrire données en-tête, données fichier + // écrire données en-tête, données fichier /*if (!dataincache) { // patcher - r->size=-r->size; // négatif + r->size=-r->size; // négatif }*/ // Construction header @@ -479,12 +479,12 @@ void cache_add(httrackp* opt,cache_back* cache,const htsblk *r,char* url_adr,cha if (!r->adr) { /* taille nulle (parfois en cas de 301 */ if (cache_wLLint(cache_dat,0)==-1) /* 0 bytes */ ok=0; - } else if (r->is_write==0) { // en mémoire, recopie directe + } else if (r->is_write==0) { // en mémoire, recopie directe if (cache_wLLint(cache_dat,r->size)!=-1) { if (r->size>0) { // taille>0 if (fwrite(r->adr,1,r->size,cache_dat)!=r->size) ok=0; - } else // taille=0, ne rien écrire + } else // taille=0, ne rien écrire ok=0; } else ok=0; @@ -517,7 +517,7 @@ void cache_add(httrackp* opt,cache_back* cache,const htsblk *r,char* url_adr,cha ok=0; } } else ok=0; - /*if (!dataincache) { // dépatcher + /*if (!dataincache) { // dépatcher r->size=-r->size; }*/ @@ -527,7 +527,7 @@ void cache_add(httrackp* opt,cache_back* cache,const htsblk *r,char* url_adr,cha buff[0]='\0'; strcatbuff(buff,url_adr); strcatbuff(buff,"\n"); strcatbuff(buff,url_fil); strcatbuff(buff,"\n"); cache_wstr(cache_ndx,buff); fwrite(s,1,strlen(s),cache_ndx); - } // si ok=0 on a peut être écrit des données pour rien mais on s'en tape + } // si ok=0 on a peut être écrit des données pour rien mais on s'en tape // en cas de plantage, on aura au moins le cache! fflush(cache_dat); fflush(cache_ndx); @@ -691,14 +691,14 @@ static htsblk cache_readex_new(httrackp* opt,cache_back* cache,const char* adr,c /* Do not get data ? Do some final tests. */ if (target_save == NULL) { - // si save==null, ne rien charger (juste en tête) - if (r.statuscode==HTTP_OK && !is_hypertext_mime(opt, r.contenttype, fil)) { // pas HTML, écrire sur disk directement + // si save==null, ne rien charger (juste en tête) + if (r.statuscode==HTTP_OK && !is_hypertext_mime(opt, r.contenttype, fil)) { // pas HTML, écrire sur disk directement r.is_write = 1; /* supposed to be on disk (informational) */ } /* Ensure the file is present, because returning a reference to a missing file is useless! */ if (!dataincache) { /* Data are supposed to be on disk */ - if (!fexist_utf8(fconv(catbuff, previous_save))) { // un fichier existe déja + if (!fexist_utf8(fconv(catbuff, previous_save))) { // un fichier existe déja if (!opt->norecatch) { hts_log_print(opt, LOG_DEBUG, "Cache: could not find %s", previous_save); r.statuscode=STATUSCODE_INVALID; @@ -713,29 +713,29 @@ static htsblk cache_readex_new(httrackp* opt,cache_back* cache,const char* adr,c #if HTS_DIRECTDISK // Not ro, and pure data (not HTML and friends) to be saved now. - if (!readonly && r.statuscode==HTTP_OK && !is_hypertext_mime(opt,r.contenttype, fil) && strnotempty(target_save)) { // pas HTML, écrire sur disk directement - r.is_write=1; // écrire + if (!readonly && r.statuscode==HTTP_OK && !is_hypertext_mime(opt,r.contenttype, fil) && strnotempty(target_save)) { // pas HTML, écrire sur disk directement + r.is_write=1; // écrire // Data is supposed to be on disk if (!dataincache) { r.msg[0] = '\0'; // File exists on disk with declared cache name (this is expected!) - if (fexist_utf8(fconv(catbuff, previous_save))) { // un fichier existe déja + if (fexist_utf8(fconv(catbuff, previous_save))) { // un fichier existe déja // Expected size ? const size_t fsize = fsize_utf8(fconv(catbuff, previous_save)); if (fsize == r.size) { // Target name is the previous name, and the file looks good: nothing to do! if (strcmp(previous_save, target_save) == 0) { // So far so good - ok=1; // plus rien à faire + ok=1; // plus rien à faire } // Different filenames: rename now! else { char catbuff2[CATBUFF_SIZE]; if (RENAME(fconv(catbuff, previous_save), fconv(catbuff2, target_save)) == 0) { // So far so good - ok=1; // plus rien à faire + ok=1; // plus rien à faire hts_log_print(opt, LOG_DEBUG, "File '%s' has been renamed since last mirror to '%s' ; applying changes", previous_save, target_save); } else { @@ -754,7 +754,7 @@ static htsblk cache_readex_new(httrackp* opt,cache_back* cache,const char* adr,c const size_t fsize = fsize_utf8(fconv(catbuff, target_save)); if (fsize == r.size) { // So far so good - ok=1; // plus rien à faire + ok=1; // plus rien à faire } else { hts_log_print(opt, LOG_WARNING, "warning: renamed file size on disk ("LLintP") does not have the expected size ("LLintP"))", (LLint) fsize, (LLint) r.size); } @@ -824,12 +824,12 @@ static htsblk cache_readex_new(httrackp* opt,cache_back* cache,const char* adr,c } else #endif - { // lire en mémoire + { // lire en mémoire // We need to get bytes on memory, but the previous version is (supposed to be) on disk. if (!dataincache) { // Empty previous save name, or file does not exist ? - if (!strnotempty(previous_save) || !fexist_utf8(previous_save)) { // Pas de donnée en cache, bizarre car html!!! + if (!strnotempty(previous_save) || !fexist_utf8(previous_save)) { // Pas de donnée en cache, bizarre car html!!! // Hack: if error page data is missing (pre-3.45 releases), create one. We won't use it anyway. if (!HTTP_IS_OK(r.statuscode)) { const int size = 512; @@ -963,7 +963,7 @@ static htsblk cache_readex_old(httrackp* opt,cache_back* cache,const char* adr,c #endif } - // en cas de succès + // en cas de succès #if HTS_FAST_CACHE if (hash_pos_return != 0) { #else @@ -1028,15 +1028,15 @@ static htsblk cache_readex_old(httrackp* opt,cache_back* cache,const char* adr,c } // cache_rstr(cache->olddat,check); - if (strcmp(check,"HTS")==0) { /* intégrité OK */ + if (strcmp(check,"HTS")==0) { /* intégrité OK */ ok=1; } - cache_rLLint(cache->olddat,&size_read); /* lire size pour être sûr de la taille déclarée (réécrire) */ + cache_rLLint(cache->olddat,&size_read); /* lire size pour être sûr de la taille déclarée (réécrire) */ if (size_read>0) { /* si inscrite ici */ r.size=size_read; - } else { /* pas de données directement dans le cache, fichier présent? */ + } else { /* pas de données directement dans le cache, fichier présent? */ if (r.statuscode!=HTTP_OK) - header_only=1; /* que l'en tête ici! */ + header_only=1; /* que l'en tête ici! */ } } @@ -1046,14 +1046,14 @@ static htsblk cache_readex_old(httrackp* opt,cache_back* cache,const char* adr,c // lecture du header (y compris le statuscode) /*if (fread((char*) &r,1,sizeof(htsblk),cache->olddat)==sizeof(htsblk)) { // lire tout (y compris statuscode etc)*/ if (ok) { - // sécurité + // sécurité r.adr=NULL; r.out=NULL; - ////r.location=NULL; non, fixée lors des 301 ou 302 + ////r.location=NULL; non, fixée lors des 301 ou 302 r.fp=NULL; if ( (r.statuscode>=0) && (r.statuscode<=999) - && (r.notmodified>=0) && (r.notmodified<=9) ) { // petite vérif intégrité + && (r.notmodified>=0) && (r.notmodified<=9) ) { // petite vérif intégrité if ((save) && (!header_only) ) { /* ne pas lire uniquement header */ //int to_file=0; @@ -1063,30 +1063,30 @@ static htsblk cache_readex_old(httrackp* opt,cache_back* cache,const char* adr,c #if HTS_DIRECTDISK // Court-circuit: // Peut-on stocker le fichier directement sur disque? - if (!readonly && r.statuscode==HTTP_OK && !is_hypertext_mime(opt,r.contenttype, fil) && strnotempty(save)) { // pas HTML, écrire sur disk directement + if (!readonly && r.statuscode==HTTP_OK && !is_hypertext_mime(opt,r.contenttype, fil) && strnotempty(save)) { // pas HTML, écrire sur disk directement int ok=0; - r.is_write=1; // écrire - if (fexist_utf8(fconv(catbuff, save))) { // un fichier existe déja - //if (fsize_utf8(fconv(save))==r.size) { // même taille -- NON tant pis (taille mal declaree) - ok=1; // plus rien à faire + r.is_write=1; // écrire + if (fexist_utf8(fconv(catbuff, save))) { // un fichier existe déja + //if (fsize_utf8(fconv(save))==r.size) { // même taille -- NON tant pis (taille mal declaree) + ok=1; // plus rien à faire filenote(&opt->state.strc,save,NULL); // noter comme connu file_notify(opt,adr, fil, save, 0, 0, 0); //} } - if ((pos<0) && (!ok)) { // Pas de donnée en cache et fichier introuvable : erreur! + if ((pos<0) && (!ok)) { // Pas de donnée en cache et fichier introuvable : erreur! if (opt->norecatch) { file_notify(opt,adr, fil, save, 1, 0, 0); filecreateempty(&opt->state.strc, save); // r.statuscode=STATUSCODE_INVALID; strcpybuff(r.msg,"File deleted by user not recaught"); - ok=1; // ne pas récupérer (et pas d'erreur) + ok=1; // ne pas récupérer (et pas d'erreur) } else { r.statuscode=STATUSCODE_INVALID; strcpybuff(r.msg,"Previous cache file not found"); - ok=1; // ne pas récupérer + ok=1; // ne pas récupérer } } @@ -1126,10 +1126,10 @@ static htsblk cache_readex_old(httrackp* opt,cache_back* cache,const char* adr,c } else #endif - { // lire en mémoire + { // lire en mémoire if (pos<0) { - if (strnotempty(save)) { // Pas de donnée en cache, bizarre car html!!! + if (strnotempty(save)) { // Pas de donnée en cache, bizarre car html!!! r.statuscode=STATUSCODE_INVALID; strcpybuff(r.msg,"Previous cache file not found (2)"); } else { /* Read in memory from cache */ @@ -1171,7 +1171,7 @@ static htsblk cache_readex_old(httrackp* opt,cache_back* cache,const char* adr,c } } } - } // si save==null, ne rien charger (juste en tête) + } // si save==null, ne rien charger (juste en tête) } else { #if DEBUGCA printf("Cache Read Error : Bad Data"); @@ -1269,7 +1269,7 @@ static int hts_rename(httrackp* opt, const char *a, const char *b) { return rename(a, b); } -// renvoyer uniquement en tête, ou NULL si erreur +// renvoyer uniquement en tête, ou NULL si erreur // return NULL upon error, and set -1 to r.statuscode htsblk* cache_header(httrackp* opt,cache_back* cache,const char* adr,const char* fil,htsblk* r) { *r=cache_read(opt,cache,adr,fil,NULL,NULL); // test uniquement @@ -1280,10 +1280,10 @@ htsblk* cache_header(httrackp* opt,cache_back* cache,const char* adr,const char* } -// Initialisation du cache: créer nouveau, renomer ancien, charger.. +// Initialisation du cache: créer nouveau, renomer ancien, charger.. void cache_init(cache_back* cache,httrackp* opt) { // --- - // utilisation du cache: renommer ancien éventuel et charger index + // utilisation du cache: renommer ancien éventuel et charger index hts_log_print(opt, LOG_DEBUG, "Cache: enabled=%d, base=%s, ro=%d", (int) opt->cache, fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/"), (int) cache->ro); if (opt->cache) { #if DEBUGCA @@ -1295,7 +1295,7 @@ void cache_init(cache_back* cache,httrackp* opt) { #else mkdir(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache"),HTS_PROTECT_FOLDER); #endif - if ((fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.zip")))) { // il existe déja un cache précédent.. renommer + if ((fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.zip")))) { // il existe déja un cache précédent.. renommer /* Previous cache from the previous cache version */ #if 0 /* No.. reuse with old httrack releases! */ @@ -1305,7 +1305,7 @@ void cache_init(cache_back* cache,httrackp* opt) { remove(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/old.ndx")); #endif /* Previous cache version */ - if ((fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat"))) && (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer + if ((fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat"))) && (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer rename(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat"),fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/old.dat")); rename(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.ndx"),fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/old.ndx")); } @@ -1324,7 +1324,7 @@ void cache_init(cache_back* cache,httrackp* opt) { hts_log_print(opt, LOG_DEBUG, "Cache: successfully renamed"); } } - else if ((fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat"))) && (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer + else if ((fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat"))) && (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer #if DEBUGCA printf("work with former cache\n"); #endif @@ -1335,7 +1335,7 @@ void cache_init(cache_back* cache,httrackp* opt) { rename(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat"),fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/old.dat")); rename(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.ndx"),fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/old.ndx")); - } else { // un des deux (ou les deux) fichiers cache absents: effacer l'autre éventuel + } else { // un des deux (ou les deux) fichiers cache absents: effacer l'autre éventuel #if DEBUGCA printf("new cache\n"); #endif @@ -1349,7 +1349,7 @@ void cache_init(cache_back* cache,httrackp* opt) { } hts_log_print(opt, LOG_DEBUG, "Cache: size %d", (int)fsize(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/old.zip"))); - // charger index cache précédent + // charger index cache précédent if ( ( !cache->ro && @@ -1490,7 +1490,7 @@ void cache_init(cache_back* cache,httrackp* opt) { cache->olddat=fopen(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat"),"rb"); oldndx=fopen(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.ndx"),"rb"); } - // les deux doivent être ouvrables + // les deux doivent être ouvrables if ((cache->olddat==NULL) && (oldndx!=NULL)) { fclose(oldndx); oldndx=NULL; @@ -1528,7 +1528,7 @@ void cache_init(cache_back* cache,httrackp* opt) { freet(cache->use); cache->use=NULL; } - } else { // non supporté + } else { // non supporté hts_log_print(opt, LOG_ERROR, "Cache: %s not supported, ignoring current cache",firstline); fclose(cache->olddat); cache->olddat=NULL; @@ -1619,7 +1619,7 @@ void cache_init(cache_back* cache,httrackp* opt) { } else { cache->dat=fopen(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat"),"wb"); cache->ndx=fopen(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.ndx"),"wb"); - // les deux doivent être ouvrables + // les deux doivent être ouvrables if ((cache->dat==NULL) && (cache->ndx!=NULL)) { fclose(cache->ndx); cache->ndx=NULL; @@ -1639,7 +1639,7 @@ void cache_init(cache_back* cache,httrackp* opt) { // time_gmt_rfc822(s); // date et heure actuelle GMT pour If-Modified-Since.. cache_wstr(cache->ndx,s); - fflush(cache->ndx); // un petit fflush au cas où + fflush(cache->ndx); // un petit fflush au cas où // supprimer old.lst if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/old.lst"))) @@ -1709,7 +1709,7 @@ char* readfile2(char* fil, LLint* size) { if (size != NULL) *size = len; if (adr!=NULL) { - if (len > 0 && fread(adr,1,len,fp) != len) { // fichier endommagé ? + if (len > 0 && fread(adr,1,len,fp) != len) { // fichier endommagé ? freet(adr); adr=NULL; } else @@ -1731,7 +1731,7 @@ char* readfile_utf8(char* fil) { if (fp!=NULL) { // n'existe pas (!) adr = (char*) malloct(len+1); if (adr!=NULL) { - if (len > 0 && fread(adr,1,len,fp) != len) { // fichier endommagé ? + if (len > 0 && fread(adr,1,len,fp) != len) { // fichier endommagé ? freet(adr); adr=NULL; } else { @@ -1764,7 +1764,7 @@ char* readfile_or(char* fil,char* defaultdata) { return NULL; } -// écriture/lecture d'une chaîne sur un fichier +// écriture/lecture d'une chaîne sur un fichier // -1 : erreur, sinon 0 int cache_wstr(FILE* fp,const char* s) { INTsys i; diff --git a/src/htscatchurl.c b/src/htscatchurl.c index 577ee16..0d486ac 100644 --- a/src/htscatchurl.c +++ b/src/htscatchurl.c @@ -53,7 +53,7 @@ Please visit our Website: http://www.httrack.com #endif /* END specific definitions */ -/* définitions globales */ +/* définitions globales */ #include "htsglobal.h" /* htslib */ @@ -111,7 +111,7 @@ HTSEXT_API T_SOC catch_url_init(int* port,char* adr) { // effacer structure memset(&server2, 0, sizeof(server2)); if (getsockname(soc,(struct sockaddr*) &server2,&len) == 0) { - *port=ntohs(SOCaddr_sinport(server)); // récupérer port + *port=ntohs(SOCaddr_sinport(server)); // récupérer port if (listen(soc,10)>=0) { // au pif le 10 SOCaddr_inetntoa(adr, 128, server2, len); } else { @@ -183,7 +183,7 @@ HTSEXT_API int catch_url(T_SOC soc,char* url,char* method,char* data) { } /* INFOS */ - // réception + // réception if (soc != INVALID_SOCKET) { char line[1000]; char protocol[256]; @@ -194,7 +194,7 @@ HTSEXT_API int catch_url(T_SOC soc,char* url,char* method,char* data) { if (sscanf(line,"%s %s %s",method,url,protocol) == 3) { char BIGSTK url_adr[HTS_URLMAXSIZE*2]; char BIGSTK url_fil[HTS_URLMAXSIZE*2]; - // méthode en majuscule + // méthode en majuscule int i,r=0; url_adr[0]=url_fil[0]='\0'; // @@ -204,13 +204,13 @@ HTSEXT_API int catch_url(T_SOC soc,char* url,char* method,char* data) { } // adresse du lien if (ident_url_absolute(url,url_adr,url_fil)>=0) { - // Traitement des en-têtes + // Traitement des en-têtes char BIGSTK loc[HTS_URLMAXSIZE*2]; htsblk blkretour; hts_init_htsblk(&blkretour); //memset(&blkretour, 0, sizeof(htsblk)); // effacer - blkretour.location=loc; // si non nul, contiendra l'adresse véritable en cas de moved xx - // Lire en têtes restants + blkretour.location=loc; // si non nul, contiendra l'adresse véritable en cas de moved xx + // Lire en têtes restants sprintf(data,"%s %s %s\r\n",method,url_fil,protocol); while(strnotempty(line)) { socinput(soc,line,1000); @@ -218,12 +218,12 @@ HTSEXT_API int catch_url(T_SOC soc,char* url,char* method,char* data) { strcatbuff(data,line); strcatbuff(data,"\r\n"); } - // CR/LF final de l'en tête inutile car déja placé via la ligne vide juste au dessus + // CR/LF final de l'en tête inutile car déja placé via la ligne vide juste au dessus //strcatbuff(data,"\r\n"); if (blkretour.totalsize>0) { int len=(int)min(blkretour.totalsize,32000); int pos = (int) strlen(data); - // Copier le reste (post éventuel) + // Copier le reste (post éventuel) while((len>0) && ((r=recv(soc,(char*) data+pos,len,0))>0) ) { pos+=r; len-=r; @@ -266,7 +266,7 @@ void socinput(T_SOC soc,char* s,int max) { switch(c) { case 13: break; // sauter CR case 10: c=-1; break; - case 9: case 12: break; // sauter ces caractères + case 9: case 12: break; // sauter ces caractères default: s[j++]=(char) c; break; } } else diff --git a/src/htsconfig.h b/src/htsconfig.h index 94ad3f6..25f3e0e 100644 --- a/src/htsconfig.h +++ b/src/htsconfig.h @@ -34,31 +34,31 @@ Please visit our Website: http://www.httrack.com /* Author: Xavier Roche */ /* ------------------------------------------------------------ */ -// Ensemble des paramètres du robot +// Ensemble des paramètres du robot #ifndef HTTRACK_GLOBAL_ENGINE_DEFH #define HTTRACK_GLOBAL_ENGINE_DEFH // ------------------------------------------------------------ -// Définitions du ROBOT +// Définitions du ROBOT -// accès des miroirs pour les autres utilisateurs (0/1) +// accès des miroirs pour les autres utilisateurs (0/1) #define HTS_ACCESS 1 // temps de poll d'une socket: 1/10s #define HTS_SOCK_SEC 0 #define HTS_SOCK_MS 100000 -// nom par défaut +// nom par défaut #define DEFAULT_HTML "index.html" -// nom par défaut pour / en ftp +// nom par défaut pour / en ftp #define DEFAULT_FTP "index.txt" -// nom par défaut pour / en mms +// nom par défaut pour / en mms #define DEFAULT_MMS "default.avi" -// extension par défaut pour fichiers n'en ayant pas +// extension par défaut pour fichiers n'en ayant pas #define DEFAULT_EXT ".html" #define DEFAULT_EXT_SHORT ".htm" //#define DEFAULT_BIN_EXT ".bin" @@ -66,38 +66,38 @@ Please visit our Website: http://www.httrack.com //#define DEFAULT_EXT ".txt" //#define DEFAULT_EXT_SHORT ".txt" -// éviter les /nul, /con.. +// éviter les /nul, /con.. #define HTS_OVERRIDE_DOS_FOLDERS 1 // indexing (keyword) #define HTS_MAKE_KEYWORD_INDEX 1 -// poll stdin autorisé? (0/1) +// poll stdin autorisé? (0/1) #define HTS_POLL 1 -// vérifier les liens sans extension (0/1) [à éviter, très lent] +// vérifier les liens sans extension (0/1) [à éviter, très lent] #define HTS_CHECK_STRANGEDIR 0 -// le slash est un html par défaut (exemple/ est toujours un html) +// le slash est un html par défaut (exemple/ est toujours un html) #define HTS_SLASH_ISHTML 1 -// supprimer index si un répertoire identique existe +// supprimer index si un répertoire identique existe #define HTS_REMOVE_ANNOYING_INDEX 1 -// écriture directe dur disque possible (0/1) +// écriture directe dur disque possible (0/1) #define HTS_DIRECTDISK 1 // always direct-to-disk (0/1) #define HTS_DIRECTDISK_ALWAYS 1 -// gérer une table de hachage? +// gérer une table de hachage? // REMOVED // #define HTS_HASH 1 // fast cache (build hash table) #define HTS_FAST_CACHE 1 -// le > peut être considéré comme un tag de fermeture de commentaire (<!-- > est valide) +// le > peut être considéré comme un tag de fermeture de commentaire (<!-- > est valide) #define GT_ENDS_COMMENT 1 // always adds a '/' at the end if a '~' is encountered (/~smith -> /~smith/) @@ -107,21 +107,21 @@ Please visit our Website: http://www.httrack.com #define HTS_STRIP_DOUBLE_SLASH 0 // case-sensitive pour les dossiers et fichiers (0/1) -// [normalement 1, mais pose des problèmes (url malformée par exemple) et n'est pas très utile.. -// ..et pas bcp respecté] +// [normalement 1, mais pose des problèmes (url malformée par exemple) et n'est pas très utile.. +// ..et pas bcp respecté] // REMOVED // #define HTS_CASSE 0 -// Un fichier ayant une taille différente du content-length doit il être annulé? +// Un fichier ayant une taille différente du content-length doit il être annulé? // SEE opt.tolerant and opt.http10 // #define HTS_CL_IS_FATAL 0 // une erreur supprime le fichier sur disque -// (non fixé pour cause de retry) +// (non fixé pour cause de retry) #define HTS_REMOVE_BAD_FILES 0 // en cas de Range: xx- donnant un Content-length: xx -// alors skipper le fichier, considéré comme transmis +// alors skipper le fichier, considéré comme transmis // #define HTS_SKIP_FULL_RANGE 1 // nombre max de filtres que l'utilisateur peut fixer @@ -134,7 +134,7 @@ Please visit our Website: http://www.httrack.com // gethostbyname non bloquant? (gestion multithread) #define HTS_XGETHOST 1 -// à partir de combien de secondes doit-on étudier le taux de transfert? +// à partir de combien de secondes doit-on étudier le taux de transfert? #define HTS_WATCHRATE 15 // ------------------------------------------------------------ diff --git a/src/htscore.c b/src/htscore.c index f77124f..3f623b7 100644 --- a/src/htscore.c +++ b/src/htscore.c @@ -112,17 +112,17 @@ int nsocDEBUG=0; int longest_hash[3]={0,0,0},hashnumber=0; #endif -// Début de httpmirror, routines annexes +// Début de httpmirror, routines annexes -// pour alléger la syntaxe, des raccourcis sont créés +// pour alléger la syntaxe, des raccourcis sont créés #define urladr (liens[ptr]->adr) #define urlfil (liens[ptr]->fil) #define savename (liens[ptr]->sav) //#define level (liens[ptr]->depth) -// au cas où nous devons quitter rapidement xhttpmirror (plus de mémoire, etc) -// note: partir de liens_max.. vers 0.. sinon erreur de violation de mémoire: les liens suivants -// ne sont plus à nous.. agh! [dur celui-là] +// au cas où nous devons quitter rapidement xhttpmirror (plus de mémoire, etc) +// note: partir de liens_max.. vers 0.. sinon erreur de violation de mémoire: les liens suivants +// ne sont plus à nous.. agh! [dur celui-là ] #define HTMLCHECK_UNINIT { \ hts_log_print(opt, LOG_INFO, "engine: end"); \ RUN_CALLBACK0(opt, end); \ @@ -182,9 +182,9 @@ RUN_CALLBACK0(opt, end); \ #define XH_uninit do { XH_extuninit; if (r.adr) { freet(r.adr); r.adr=NULL; } } 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) @@ -253,7 +253,7 @@ if (makeindex_fp) { \ 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"),"",""); \ } \ @@ -264,28 +264,28 @@ makeindex_done=1; /* ok c'est fait */ \ -// Début de httpmirror, robot -// url1 peut être multiple +// Début de httpmirror, robot +// url1 peut être multiple int httpmirror(char* url1, httrackp* opt) { - char* primary=NULL; // première page, contenant les liens à scanner + char* primary=NULL; // première page, contenant les liens à scanner int lien_tot=0; // nombre de liens pour le moment lien_url** liens=NULL; // les pointeurs sur les liens - hash_struct hash; // système de hachage, accélère la recherche dans les liens + hash_struct hash; // système de hachage, accélère la recherche dans les liens hash_struct* hashptr = &hash; t_cookie BIGSTK cookie; // gestion des cookies int lien_max=0; size_t lien_size=0; // octets restants dans buffer liens dispo char* lien_buffer=NULL; // buffer liens actuel - int add_tab_alloc=256000; // +256K de liens à chaque fois + int add_tab_alloc=256000; // +256K de liens à chaque fois //char* tab_alloc=NULL; int ptr; // pointeur actuel sur les liens // int numero_passe=0; // deux passes pour html puis images struct_back* sback=NULL; htsblk BIGSTK r; // retour de certaines fonctions - // pour les stats, nombre de fichiers & octets écrits + // pour les stats, nombre de fichiers & octets écrits LLint stat_fragment=0; // pour la fragmentation - //TStamp istat_timestart; // départ pour calcul instantanné + //TStamp istat_timestart; // départ pour calcul instantanné // TStamp last_info_shell=0; int info_shell=0; @@ -302,7 +302,7 @@ int httpmirror(char* url1, httrackp* opt) { FILE* makestat_fp=NULL; // fichier de stats taux transfert FILE* maketrack_fp=NULL; // idem pour le tracking TStamp makestat_time=0; // attente (secondes) - LLint makestat_total=0; // repère du nombre d'octets transférés depuis denrière stat + LLint makestat_total=0; // repère du nombre d'octets transférés depuis denrière stat int makestat_lnk=0; // idem, pour le nombre de liens // char BIGSTK codebase[HTS_URLMAXSIZE*2]; // base pour applet java @@ -322,7 +322,7 @@ int httpmirror(char* url1, httrackp* opt) { cookie.auth.auth[0]=cookie.auth.prefix[0]='\0'; // - // noter heure actuelle de départ en secondes + // noter heure actuelle de départ en secondes memset(&HTS_STAT, 0, sizeof(HTS_STAT)); HTS_STAT.stat_timestart=time_local(); //istat_timestart=stat_timestart; @@ -344,14 +344,14 @@ int httpmirror(char* url1, httrackp* opt) { opt->cookie=&cookie; cookie.max_len=30000; // max len strcpybuff(cookie.data,""); - // Charger cookies.txt par défaut ou cookies.txt du miroir + // Charger cookies.txt par défaut ou cookies.txt du miroir cookie_load(opt->cookie,StringBuff(opt->path_log),"cookies.txt"); cookie_load(opt->cookie,"","cookies.txt"); } else opt->cookie=NULL; // initialiser exit_xh - opt->state.exit_xh=0; // sortir prématurément (var globale) + opt->state.exit_xh=0; // sortir prématurément (var globale) // initialiser usercommand usercommand(opt,opt->sys_com_exec,StringBuff(opt->sys_com),"","",""); @@ -438,7 +438,7 @@ int httpmirror(char* url1, httrackp* opt) { { int i; for(i=0;i<HTS_HASH_SIZE;i++) - hash.hash[0][i]=hash.hash[1][i]=hash.hash[2][i] = -1; // pas d'entrées + hash.hash[0][i]=hash.hash[1][i]=hash.hash[2][i] = -1; // pas d'entrées hash.liens = liens; hash.max_lien=0; } @@ -452,9 +452,9 @@ int httpmirror(char* url1, httrackp* opt) { } primary_len += (int) strlen(url1)*2; - // création de la première page, qui contient les liens de base à scanner - // c'est plus propre et plus logique que d'entrer à la main les liens dans la pile - // on bénéficie ainsi des vérifications et des tests du robot pour les liens "primaires" + // création de la première page, qui contient les liens de base à scanner + // c'est plus propre et plus logique que d'entrer à la main les liens dans la pile + // on bénéficie ainsi des vérifications et des tests du robot pour les liens "primaires" primary=(char*) malloct(primary_len); if (primary) { primary[0]='\0'; @@ -468,7 +468,7 @@ int httpmirror(char* url1, httrackp* opt) { int i; int joker=0; - // vérifier qu'il n'y a pas de * dans l'url + // vérifier qu'il n'y a pas de * dans l'url if (*a=='+') joker=1; else if (*a=='-') @@ -494,7 +494,7 @@ int httpmirror(char* url1, httrackp* opt) { tempo[i++]='\0'; while(isspace((unsigned char)*a)) { a++; } - // sauter les + sans rien après.. + // sauter les + sans rien après.. if (strnotempty(tempo)) { if ((plus==0) && (type==1)) { // implicite: *www.edf.fr par exemple if (tempo[strlen(tempo)-1]!='*') { @@ -594,19 +594,19 @@ int httpmirror(char* url1, httrackp* opt) { // lien primaire liens_record("primary","/primary",fslash(OPT_GET_BUFF(opt),fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_html_utf8),"index.html")),"","",opt->urlhack); - 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))); - XH_extuninit; // désallocation mémoire & buffers + XH_extuninit; // désallocation mémoire & buffers return 0; } liens[lien_tot]->testmode=0; // pas mode test liens[lien_tot]->link_import=0; // pas mode import - liens[lien_tot]->depth=opt->depth+1; // lien de priorité maximale - liens[lien_tot]->pass2=0; // 1ère passe - liens[lien_tot]->retry=opt->retry; // lien de priorité maximale - liens[lien_tot]->premier=lien_tot; // premier lien, objet-père=objet - liens[lien_tot]->precedent=lien_tot; // lien précédent + liens[lien_tot]->depth=opt->depth+1; // lien de priorité maximale + liens[lien_tot]->pass2=0; // 1ère passe + liens[lien_tot]->retry=opt->retry; // lien de priorité maximale + liens[lien_tot]->premier=lien_tot; // premier lien, objet-père=objet + liens[lien_tot]->precedent=lien_tot; // lien précédent lien_tot++; // Initialiser cache @@ -642,10 +642,10 @@ int httpmirror(char* url1, httrackp* opt) { #if BDEBUG==2 _CLRSCR; #endif - // Nombre de fichiers HTML pouvant être présents en mémoire de manière simultannée - // On prévoit large: les fichiers HTML ne prennent que peu de place en mémoire, et les - // fichiers non html sont sauvés en direct sur disque. - // --> 1024 entrées + 32 entrées par socket en supplément + // Nombre de fichiers HTML pouvant être présents en mémoire de manière simultannée + // On prévoit large: les fichiers HTML ne prennent que peu de place en mémoire, et les + // fichiers non html sont sauvés en direct sur disque. + // --> 1024 entrées + 32 entrées par socket en supplément sback = back_new(opt->maxsoc*32+1024); if (sback == NULL) { hts_log_print(opt, LOG_PANIC, "Not enough memory, can not allocate %d bytes",(int)((opt->maxsoc+1)*sizeof(lien_back))); @@ -662,7 +662,7 @@ int httpmirror(char* url1, httrackp* opt) { } } - // tracking -- débuggage + // tracking -- débuggage if (opt->maketrack) { maketrack_fp=fopen(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-track.txt"),"wb"); if (maketrack_fp != NULL) { @@ -671,7 +671,7 @@ int httpmirror(char* url1, httrackp* opt) { } } - // on n'a pas de liens!! (exemple: httrack www.* impossible sans départ..) + // on n'a pas de liens!! (exemple: httrack www.* impossible sans départ..) if (lien_tot<=0) { hts_log_print(opt, LOG_ERROR, "You MUST specify at least one complete URL, and not only wildcards!"); } @@ -733,7 +733,7 @@ int httpmirror(char* url1, httrackp* opt) { opt->state._hts_in_html_parsing=0; // note: recopie de plus haut - // noter heure actuelle de départ en secondes + // noter heure actuelle de départ en secondes HTS_STAT.stat_timestart=time_local(); if (opt->shell) { last_info_shell=HTS_STAT.stat_timestart; @@ -754,7 +754,7 @@ int httpmirror(char* url1, httrackp* opt) { // ------------------------------------------------------------ // ------------------------------------------------------------ - // Boucle générale de parcours des liens + // Boucle générale de parcours des liens // ------------------------------------------------------------ do { int error=0; // si error alors sauter @@ -763,8 +763,8 @@ int httpmirror(char* url1, httrackp* opt) { int is_loaded_from_file=0; // has been loaded from a file (implies is_write=1) char BIGSTK loc[HTS_URLMAXSIZE*2]; // adresse de relocation - // Ici on charge le fichier (html, gif..) en mémoire - // Les HTMLs sont traités (si leur priorité est suffisante) + // Ici on charge le fichier (html, gif..) en mémoire + // Les HTMLs sont traités (si leur priorité est suffisante) // effacer r hts_init_htsblk(&r); @@ -794,7 +794,7 @@ int httpmirror(char* url1, httrackp* opt) { ( ((urlfil != NULL)?(urlfil):(" "))[0]=='\0') || ( (liens[ptr]->pass2 == -1) ) ) - ) { // sauter si lien annulé (ou fil vide) + ) { // sauter si lien annulé (ou fil vide) if (liens[ptr] != NULL && liens[ptr]->pass2 == -1) { hts_log_print(opt, LOG_DEBUG, "link #%d is ready, skipping: %s%s..",ptr,((urladr != NULL)?(urladr):(" ")),((urlfil != NULL)?(urlfil):(" "))); } else { @@ -807,7 +807,7 @@ int httpmirror(char* url1, httrackp* opt) { ptr++; } } - if (liens[ptr] != NULL) { // on a qq chose à récupérer? + if (liens[ptr] != NULL) { // on a qq chose à récupérer? hts_log_print(opt, LOG_DEBUG, "Wait get: %s%s",urladr,urlfil); #if DEBUG_ROBOTS @@ -817,14 +817,14 @@ int httpmirror(char* url1, httrackp* opt) { #endif // ------------------------------------------------------------ // DEBUT --RECUPERATION LIEN--- - if (ptr==0) { // premier lien à parcourir: lien primaire construit avant + if (ptr==0) { // premier lien à parcourir: lien primaire construit avant r.adr=primary; primary=NULL; r.statuscode=HTTP_OK; r.size=strlen(r.adr); r.soc=INVALID_SOCKET; strcpybuff(r.contenttype,"text/html"); - /*} else if (opt->maxsoc<=0) { // fichiers 1 à 1 en attente (pas de backing) - // charger le fichier en mémoire tout bêtement + /*} else if (opt->maxsoc<=0) { // fichiers 1 à 1 en attente (pas de backing) + // charger le fichier en mémoire tout bêtement r=xhttpget(urladr,urlfil); // */ @@ -935,7 +935,7 @@ int httpmirror(char* url1, httrackp* opt) { // ---tester taille a posteriori--- // tester r.adr if (!error) { - // erreur, pas de fichier chargé: + // erreur, pas de fichier chargé: if ((!r.adr) && (r.is_write==0) && (r.statuscode!=301) && (r.statuscode!=302) @@ -946,7 +946,7 @@ int httpmirror(char* url1, httrackp* opt) { ) { // error=1; - // peut être que le fichier était trop gros? + // peut être que le fichier était trop gros? if ((istoobig(opt,r.totalsize,opt->maxfile_html,opt->maxfile_nonhtml,r.contenttype)) || (istoobig(opt,r.totalsize,opt->maxfile_html,opt->maxfile_nonhtml,r.contenttype))) { error=0; @@ -1328,16 +1328,16 @@ int httpmirror(char* url1, httrackp* opt) { LOAD_IN_MEMORY_IF_NECESSARY(); // ------------------------------------------------------ - // ok, fichier chargé localement + // ok, fichier chargé localement // ------------------------------------------------------ - // Vérificateur d'intégrité + // Vérificateur d'intégrité #if DEBUG_CHECKINT { int i; for(i = 0 ; i < sback->count ; 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) } } @@ -1347,8 +1347,8 @@ int httpmirror(char* url1, httrackp* opt) { /* info: updated */ /* if (ptr>0) { - // "mis à jour" - if ((!r.notmodified) && (opt->is_update) && (!store_errpage)) { // page modifiée + // "mis à jour" + if ((!r.notmodified) && (opt->is_update) && (!store_errpage)) { // page modifiée if (strnotempty(savename)) { HTS_STAT.stat_updated_files++; //if ((opt->debug>0) && (opt->log!=NULL)) { @@ -1378,7 +1378,7 @@ int httpmirror(char* url1, httrackp* opt) { && (r.size>0) /* And not empty */ && (!store_errpage) /* Not an html error page */ && (savename[0]!='\0') /* Output filename exists */ - ) { // ne traiter que le html si autorisé + ) { // ne traiter que le html si autorisé // -- -- -- -- // Parsing HTML if (!error) { @@ -1512,7 +1512,7 @@ int httpmirror(char* url1, httrackp* opt) { // sauver fichier - /* En cas d'erreur, vérifier que fichier d'erreur existe */ + /* En cas d'erreur, vérifier que fichier d'erreur existe */ if (strnotempty(savename) == 0) { // chemin de sauvegarde existant if (strcmp(urlfil,"/robots.txt")==0) { // pas robots.txt if (store_errpage) { // c'est une page d'erreur @@ -1534,7 +1534,7 @@ int httpmirror(char* url1, httrackp* opt) { default: /* don't know.. */ break; } - /* Créer message d'erreur ? */ + /* Créer message d'erreur ? */ if (create_html_warning) { char* adr=(char*)malloct(strlen(HTS_DATA_ERROR_HTML)+1100); hts_log_print(opt, LOG_INFO, "Creating HTML warning file (%s)",r.msg); @@ -1639,7 +1639,7 @@ int httpmirror(char* url1, httrackp* opt) { } } } - } else if (r.is_write) { // déja sauvé sur disque + } else if (r.is_write) { // déja sauvé sur disque /* if (!ishttperror(r.statuscode)) HTS_STAT.stat_files++; @@ -1648,11 +1648,11 @@ int httpmirror(char* url1, httrackp* opt) { //printf("ok......\n"); } else { // Si on doit sauver une page HTML sans la scanner, cela signifie que le niveau de - // récursion nous en empêche + // récursion nous en empêche // Dans ce cas on met un fichier indiquant ce fait - // Si par la suite on doit retraiter ce fichier avec un niveau de récursion plus + // Si par la suite on doit retraiter ce fichier avec un niveau de récursion plus // fort, on supprimera le readme, et on scannera le fichier html! - // note: sauté si store_errpage (càd si page d'erreur, non à scanner!) + // note: sauté si store_errpage (cà d si page d'erreur, non à scanner!) if ( (is_hypertext_mime(opt,r.contenttype, urlfil)) && (!store_errpage) && (r.size>0)) { // c'est du html!! char BIGSTK tempo[HTS_URLMAXSIZE*2]; FILE* fp; @@ -1661,7 +1661,7 @@ int httpmirror(char* url1, httrackp* opt) { strcatbuff(tempo,".readme"); #if HTS_DOSNAME - // remplacer / par des slash arrière + // remplacer / par des slash arrière { int i=0; while(tempo[i]) { @@ -1689,9 +1689,9 @@ int httpmirror(char* url1, httrackp* opt) { hts_log_print(opt, LOG_WARNING, "Warning: store %s without scan: %s",r.contenttype,savename); } else { - if ((opt->getmode & 2)!=0) { // ok autorisé + if ((opt->getmode & 2)!=0) { // ok autorisé hts_log_print(opt, LOG_DEBUG, "Store %s: %s",r.contenttype,savename); - } else { // lien non autorisé! (ex: cgi-bin en html) + } else { // lien non autorisé! (ex: cgi-bin en html) hts_log_print(opt, LOG_DEBUG, "non-html file ignored after upload at %s : %s",urladr,urlfil); if (r.adr) { freet(r.adr); r.adr=NULL; @@ -1794,17 +1794,17 @@ int httpmirror(char* url1, httrackp* opt) { } // if !error jump_if_done: - // libérer les liens + // libérer les liens if (r.adr) { freet(r.adr); r.adr=NULL; - } // libérer la mémoire! + } // libérer la mémoire! // prochain lien ptr++; - // faut-il sauter le(s) lien(s) suivant(s)? (fichiers images à passer après les html) - if (opt->getmode & 4) { // sauver les non html après + // faut-il sauter le(s) lien(s) suivant(s)? (fichiers images à passer après les html) + if (opt->getmode & 4) { // sauver les non html après // sauter les fichiers selon la passe if (!numero_passe) { while((ptr<lien_tot)?( liens[ptr]->pass2):0) ptr++; @@ -1812,7 +1812,7 @@ jump_if_done: while((ptr<lien_tot)?( ! liens[ptr]->pass2):0) ptr++; } if (ptr>=lien_tot) { // fin de boucle - if (!numero_passe) { // première boucle + if (!numero_passe) { // première boucle hts_log_print(opt, LOG_DEBUG, "Now getting non-html files..."); numero_passe=1; // seconde boucle ptr=0; @@ -1829,7 +1829,7 @@ jump_if_done: //if (!exit_xh && opt->state.exit_xh) { // exit_xh=opt->state.exit_xh; //} - // a-t-on dépassé le quota? + // a-t-on dépassé le quota? if (!back_checkmirror(opt)) { ptr=lien_tot; } else if (opt->state.exit_xh) { // sortir @@ -1903,7 +1903,7 @@ jump_if_done: int purge=0; while(!feof(old_lst)) { linput(old_lst,line,1000); - if (!strstr(adr,line)) { // fichier non trouvé dans le nouveau? + if (!strstr(adr,line)) { // fichier non trouvé dans le nouveau? char BIGSTK file[HTS_URLMAXSIZE*2]; strcpybuff(file,StringBuff(opt->path_html)); strcatbuff(file,line+1); @@ -1924,11 +1924,11 @@ jump_if_done: if (strnotempty(line)) line[strlen(line)-1]='\0'; if (strnotempty(line)) - if (!strstr(adr,line)) { // non trouvé? + if (!strstr(adr,line)) { // non trouvé? char BIGSTK file[HTS_URLMAXSIZE*2]; strcpybuff(file,StringBuff(opt->path_html)); strcatbuff(file,line+1); - while ((strnotempty(file)) && (rmdir(file)==0)) { // ok, éliminé (existait) + while ((strnotempty(file)) && (rmdir(file)==0)) { // ok, éliminé (existait) purge=1; if (opt->log) { hts_log_print(opt, LOG_INFO, "Purging directory %s/",file); @@ -1963,7 +1963,7 @@ jump_if_done: if (opt->kindex) index_finish(StringBuff(opt->path_html),opt->kindex); - // afficher résumé dans log + // afficher résumé dans log if (opt->log!=NULL) { char BIGSTK finalInfo[8192]; int error = fspc(opt,NULL,"error"); @@ -2045,12 +2045,12 @@ jump_if_done: printf("\n"); } #endif - // fin afficher résumé dans log + // fin afficher résumé dans log // ending usercommand(opt,0,NULL,NULL,NULL,NULL); - // désallocation mémoire & buffers + // désallocation mémoire & buffers XH_uninit; return 1; // OK @@ -2135,7 +2135,7 @@ void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,struct_back* s int i; if (host[0]=='!') - return; // erreur.. déja cancellé.. bizarre.. devrait pas arriver + return; // erreur.. déja cancellé.. bizarre.. devrait pas arriver /* sanity check */ if (*_FILTERS_PTR + 1 >= opt->maxfilter) { @@ -2162,18 +2162,18 @@ void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,struct_back* s if (strcmp(host,"file://")) { //## if (host[0]!=lOCAL_CHAR) { // pas local hts_log_print(opt, LOG_PANIC, "PANIC! HostCancel detected memory leaks [char %d]",host[0]); - return; // purée + return; // purée } } // couper connexion for(i=0;i<back_max;i++) { - if (back[i].status>=0) // réception OU prêt + if (back[i].status>=0) // réception OU prêt if (strfield2(back[i].url_adr,host)) { #if HTS_DEBUG_CLOSESOCK DEBUG_W("host control: deletehttp\n"); #endif - back[i].status=0; // terminé + back[i].status=0; // terminé back_set_finished(sback, i); if (back[i].r.soc!=INVALID_SOCKET) deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; @@ -2186,13 +2186,13 @@ void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,struct_back* s // effacer liens //l=strlen(host); for(i=0;i<lien_tot;i++) { - //if (liens[i]->adr_len==l) { // même taille de chaîne - // Calcul de taille sécurisée + //if (liens[i]->adr_len==l) { // même taille de chaîne + // Calcul de taille sécurisée if (liens[i]) { if (liens[i]->adr) { int l = 0; while((liens[i]->adr[l]) && (l<1020)) l++; - if ((l > 0) && (l<1020)) { // sécurité + if ((l > 0) && (l<1020)) { // sécurité if (strfield2(jump_identification(liens[i]->adr),host)) { // host hts_log_print(opt, LOG_DEBUG, "Cancel: %s%s",liens[i]->adr,liens[i]->fil); strcpybuff(liens[i]->adr,"!"); // cancel (invalide hash) @@ -2245,10 +2245,10 @@ int filters_init(char*** ptrfilters, int maxfilter, int filterinc) { from = 0; else from = filter_max - filterinc; - for(i=0 ; i<=filter_max ; i++) { // PLUS UN (sécurité) + for(i=0 ; i<=filter_max ; i++) { // PLUS UN (sécurité) filters[i]=filters[0]+i*(HTS_URLMAXSIZE*2); } - for(i=from ; i<=filter_max ; i++) { // PLUS UN (sécurité) + for(i=from ; i<=filter_max ; i++) { // PLUS UN (sécurité) filters[i][0]='\0'; // clear } } @@ -2516,7 +2516,7 @@ HTSEXT_API int structcheck_utf8(const char* path) { // sauver un fichier int filesave(httrackp* opt,const char* adr,int len,const char* s,const char* url_adr,const char* url_fil) { FILE* fp; - // écrire le fichier + // écrire le fichier if ((fp = filecreate(&opt->state.strc, s))!=NULL) { int nl=0; if (len>0) { @@ -2565,7 +2565,7 @@ FILE* filecreate(filenote_strc *strc, const char* s) { strcpybuff(fname, s); #if HTS_DOSNAME - // remplacer / par des slash arrière + // remplacer / par des slash arrière { int i=0; while(fname[i]) { @@ -2609,11 +2609,11 @@ FILE* fileappend(filenote_strc *strc,const char* s) { // noter lst filenote(strc,s,NULL); - // if (*s=='/') strcpybuff(fname,s+1); else strcpybuff(fname,s); // pas de / (root!!) // ** SIIIIIII!!! à cause de -O <path> + // if (*s=='/') strcpybuff(fname,s+1); else strcpybuff(fname,s); // pas de / (root!!) // ** SIIIIIII!!! à cause de -O <path> strcpybuff(fname,s); #if HTS_DOSNAME - // remplacer / par des slash arrière + // remplacer / par des slash arrière { int i=0; while(fname[i]) { @@ -2828,7 +2828,7 @@ static void postprocess_file(httrackp* opt,const char* save, const char* adr, co } } -// écrire n espaces dans fp +// écrire n espaces dans fp int fspc(httrackp *opt,FILE* fp,const char* type) { fspc_strc* const strc = ( opt != NULL ) ? &opt->state.fspc : NULL; if (fp != NULL) { @@ -2871,22 +2871,22 @@ int fspc(httrackp *opt,FILE* fp,const char* type) { } -// vérifier taux de transfert +// vérifier taux de transfert #if 0 void check_rate(TStamp stat_timestart,int maxrate) { - // vérifier taux de transfert (pas trop grand?) + // vérifier taux de transfert (pas trop grand?) /* if (maxrate>0) { int r = (int) (HTS_STAT.HTS_TOTAL_RECV/(time_local()-stat_timestart)); // taux actuel de transfert HTS_STAT.HTS_TOTAL_RECV_STATE=0; - if (r>maxrate) { // taux>taux autorisé + if (r>maxrate) { // taux>taux autorisé int taux = (int) (((TStamp) (r - maxrate) * 100) / (TStamp) maxrate); if (taux<15) - HTS_STAT.HTS_TOTAL_RECV_STATE=1; // ralentir un peu (<15% dépassement) + HTS_STAT.HTS_TOTAL_RECV_STATE=1; // ralentir un peu (<15% dépassement) else if (taux<50) - HTS_STAT.HTS_TOTAL_RECV_STATE=2; // beaucoup (<50% dépassement) + HTS_STAT.HTS_TOTAL_RECV_STATE=2; // beaucoup (<50% dépassement) else - HTS_STAT.HTS_TOTAL_RECV_STATE=3; // énormément (>50% dépassement) + HTS_STAT.HTS_TOTAL_RECV_STATE=3; // énormément (>50% dépassement) } } */ @@ -2894,7 +2894,7 @@ void check_rate(TStamp stat_timestart,int maxrate) { #endif // --- -// sous routines liées au moteur et au backing +// sous routines liées au moteur et au backing // supplemental links ready (done) after ptr or ready in background int backlinks_done(struct_back* sback,lien_url** liens,int lien_tot,int ptr) { @@ -2917,10 +2917,10 @@ int backlinks_done(struct_back* sback,lien_url** liens,int lien_tot,int ptr) { return n; } -// remplir backing si moins de max_bytes en mémoire +// remplir backing si moins de max_bytes en mémoire HTS_INLINE int back_fillmax(struct_back* sback,httrackp* opt,cache_back* cache,lien_url** liens,int ptr,int numero_passe,int lien_tot) { if (!opt->state.stop) { - if (back_incache(sback)<opt->maxcache) { // pas trop en mémoire? + if (back_incache(sback)<opt->maxcache) { // pas trop en mémoire? return back_fill(sback,opt,cache,liens,ptr,numero_passe,lien_tot); } } @@ -2953,7 +2953,7 @@ int back_pluggable_sockets(struct_back* sback, httrackp* opt) { // ajouter autant de socket qu'on peut ajouter n=back_pluggable_sockets_strict(sback, opt); - // vérifier qu'il restera assez de place pour les tests ensuite (en théorie, 1 entrée libre restante suffirait) + // vérifier qu'il restera assez de place pour les tests ensuite (en théorie, 1 entrée libre restante suffirait) n=min( n, back_available(sback) - 8 ); // no space left on backing stack - do not back anymore @@ -2976,15 +2976,15 @@ int back_fill(struct_back* sback,httrackp* opt,cache_back* cache,lien_url** lien } p=ptr+1; - /* on a déja parcouru */ + /* on a déja parcouru */ if (p<cache->ptr_ant) p=cache->ptr_ant; while( (p<lien_tot) && (n>0) && back_checkmirror(opt)) { //while((p<lien_tot) && (n>0) && (p < ptr+opt->maxcache_anticipate)) { int ok=1; - // on ne met pas le fichier en backing si il doit être traité après ou s'il a déja été traité - if (liens[p]->pass2) { // 2è passe + // on ne met pas le fichier en backing si il doit être traité après ou s'il a déja été traité + if (liens[p]->pass2) { // 2è passe if (numero_passe!=1) ok=0; } else { @@ -3003,7 +3003,7 @@ int back_fill(struct_back* sback,httrackp* opt,cache_back* cache,lien_url** lien ok = 0; } - // note: si un backing est fini, il reste en mémoire jusqu'à ce que + // note: si un backing est fini, il reste en mémoire jusqu'à ce que // le ptr l'atteigne if (ok) { if (!back_exist(sback, opt, liens[p]->adr,liens[p]->fil,liens[p]->sav)) { @@ -3023,7 +3023,7 @@ int back_fill(struct_back* sback,httrackp* opt,cache_back* cache,lien_url** lien } p++; } // while - /* sauver position dernière anticipation */ + /* sauver position dernière anticipation */ cache->ptr_ant=p; cache->ptr_last=ptr; } @@ -3050,7 +3050,7 @@ int back_fill(struct_back* sback,httrackp* opt,cache_back* cache,lien_url** lien // Poll stdin.. si besoin #if HTS_POLL -// lecture stdin des caractères disponibles +// lecture stdin des caractères disponibles int read_stdin(char* s,int max) { int i=0; while((check_stdin()) && (i<(max-1)) ) @@ -3133,7 +3133,7 @@ int nombre_digit(int n) { // renvoi adresse de la fin du token dans p // renvoi NULL si la chaine est un token unique -// (PATCHE également la chaine) +// (PATCHE également la chaine) // ex: "test" "test2" renvoi adresse sur espace // flag==1 si chaine comporte des echappements comme \" char* next_token(char* p,int flag) { @@ -3233,13 +3233,13 @@ HTSEXT_API void hts_cancel_parsing(httrackp *opt) { opt->state._hts_cancel=1; } -// en train de parser un fichier html? réponse: % effectués -// flag>0 : refresh demandé +// en train de parser un fichier html? réponse: % effectués +// flag>0 : refresh demandé HTSEXT_API int hts_is_parsing(httrackp *opt, int flag) { if (opt->state._hts_in_html_parsing) { // parsing? if (flag >= 0) opt->state._hts_in_html_poll = 1; // faudrait un tit refresh - return max(opt->state._hts_in_html_done, 1); // % effectués + return max(opt->state._hts_in_html_done, 1); // % effectués } else { return 0; // non } @@ -3278,7 +3278,7 @@ HTSEXT_API int hts_request_stop(httrackp* opt, int force) { } return 0; } -// régler en cours de route les paramètres réglables.. +// régler en cours de route les paramètres réglables.. // -1 : erreur //HTSEXT_API int hts_setopt(httrackp* set_opt) { // if (set_opt) { @@ -3301,7 +3301,7 @@ HTSEXT_API int hts_resetaddurl(httrackp *opt) { opt->state._hts_addurl = NULL; return (opt->state._hts_addurl != NULL); } -// copier nouveaux paramètres si besoin +// copier nouveaux paramètres si besoin HTSEXT_API int copy_htsopt(const httrackp* from,httrackp* to) { if (from->maxsite > -1) to->maxsite = from->maxsite; @@ -3397,7 +3397,7 @@ int htsAddLink(htsmoduleStruct* str, char* link) { return 0; } - // adr = c'est la même + // adr = c'est la même // fil et save: save2 et fil2 prio_fix=maximum(liens[ptr]->depth-1,0); pass_fix=max(liens[ptr]->pass2,numero_passe); @@ -3412,12 +3412,12 @@ int htsAddLink(htsmoduleStruct* str, char* link) { while((*a) && (*a!='/') && ( a > codebase)) a--; if (*a=='/') *(a+1)='\0'; // couper - } else { // couper http:// éventuel + } else { // couper http:// éventuel if (strfield(codebase,"http://")) { char BIGSTK tempo[HTS_URLMAXSIZE*2]; char* a=codebase+7; - a=strchr(a,'/'); // après host - if (a) { // ** msg erreur et vérifier? + a=strchr(a,'/'); // après host + if (a) { // ** msg erreur et vérifier? strcpybuff(tempo,a); strcpybuff(codebase,tempo); // couper host } else { @@ -3457,7 +3457,7 @@ int htsAddLink(htsmoduleStruct* str, char* link) { b=opt->savename_83; opt->savename_type=0; opt->savename_83=0; - // note: adr,fil peuvent être patchés + // note: adr,fil peuvent être patchés r=url_savename(adr,fil,save,NULL,NULL,NULL,NULL,opt,liens,lien_tot,sback,cache,hashptr,ptr,numero_passe,NULL); // resolve unresolved type if (r != -1 @@ -3501,13 +3501,13 @@ int htsAddLink(htsmoduleStruct* str, char* link) { if (r != -1) { hts_log_print(opt, LOG_DEBUG, "(module): %s%s -> %s (base %s)",adr,fil,save,codebase); - // modifié par rapport à l'autre version (cf prio_fix notamment et save2) + // modifié par rapport à l'autre version (cf prio_fix notamment et save2) - // 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(hashptr,save,"",0,opt->urlhack); // lecture type 0 (sav) if (i>=0) { @@ -3522,7 +3522,7 @@ int htsAddLink(htsmoduleStruct* str, char* link) { // enregistrer fichier (MACRO) liens_record(adr,fil,save,"","",opt->urlhack); - 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))); opt->state.exit_xh=-1; /* fatal error -> exit */ @@ -3534,14 +3534,14 @@ int htsAddLink(htsmoduleStruct* str, char* link) { liens[lien_tot]->link_import=0; // pas mode import - // écrire autres paramètres de la structure-lien + // écrire autres paramètres de la structure-lien //if (meme_adresse) 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=ptr; liens[lien_tot]->precedent=ptr; - // noter la priorité + // noter la priorité if (!set_prio_to) liens[lien_tot]->depth=prio_fix; else diff --git a/src/htscore.h b/src/htscore.h index 8f07cf2..4d707e9 100644 --- a/src/htscore.h +++ b/src/htscore.h @@ -42,7 +42,7 @@ Please visit our Website: http://www.httrack.com /* specific definitions */ #include "htsbase.h" -// Includes & définitions +// Includes & définitions #include <sys/types.h> #include <sys/stat.h> #ifdef _WIN32 @@ -105,7 +105,7 @@ typedef struct filecreate_params filecreate_params; // aide pour la version en ligne de commande #include "htshelp.h" -// génération du nom de fichier à sauver +// génération du nom de fichier à sauver #include "htsname.h" // gestion ftp @@ -144,25 +144,25 @@ typedef struct lien_url lien_url; #endif struct lien_url { char firstblock; // flag 1=premier malloc - char link_import; // lien importé à la suite d'un moved - ne pas appliquer les règles classiques up/down - int depth; // profondeur autorisée lien ; >0 forte 0=faible - int pass2; // traiter après les autres, seconde passe. si == -1, lien traité en background - int premier; // pointeur sur le premier lien qui a donné lieu aux autres liens du domaine - int precedent; // pointeur sur le lien qui a donné lieu à ce lien précis + char link_import; // lien importé à la suite d'un moved - ne pas appliquer les règles classiques up/down + int depth; // profondeur autorisée lien ; >0 forte 0=faible + int pass2; // traiter après les autres, seconde passe. si == -1, lien traité en background + int premier; // pointeur sur le premier lien qui a donné lieu aux autres liens du domaine + int precedent; // pointeur sur le lien qui a donné lieu à ce lien précis //int moved; // pointeur sur moved int retry; // nombre de retry restants int testmode; // mode test uniquement, envoyer juste un head! char* adr; // adresse char* fil; // nom du fichier distant - char* sav; // nom à sauver sur disque (avec chemin éventuel) - char* cod; // chemin codebase éventuel si classe java - char* former_adr; // adresse initiale (avant éventuel moved), peut être nulle - char* former_fil; // nom du fichier distant initial (avant éventuel moved), peut être nul + char* sav; // nom à sauver sur disque (avec chemin éventuel) + char* cod; // chemin codebase éventuel si classe java + char* former_adr; // adresse initiale (avant éventuel moved), peut être nulle + char* former_fil; // nom du fichier distant initial (avant éventuel moved), peut être nul // pour optimisation: - int hash_next[3]; // prochain lien avec même valeur hash + int hash_next[3]; // prochain lien avec même valeur hash }; -// chargement de fichiers en 'arrière plan' +// chargement de fichiers en 'arrière plan' #ifndef HTS_DEF_FWSTRUCT_lien_back #define HTS_DEF_FWSTRUCT_lien_back typedef struct lien_back lien_back; @@ -173,38 +173,38 @@ struct lien_back { #endif char url_adr[HTS_URLMAXSIZE*2]; // adresse char url_fil[HTS_URLMAXSIZE*2]; // nom du fichier distant - char url_sav[HTS_URLMAXSIZE*2]; // nom à sauver sur disque (avec chemin éventuel) + char url_sav[HTS_URLMAXSIZE*2]; // nom à sauver sur disque (avec chemin éventuel) char referer_adr[HTS_URLMAXSIZE*2]; // adresse host page referer char referer_fil[HTS_URLMAXSIZE*2]; // fichier page referer char location_buffer[HTS_URLMAXSIZE*2]; // "location" en cas de "moved" (302,..) - char* tmpfile; // nom à sauver temporairement (compressé) - char tmpfile_buffer[HTS_URLMAXSIZE*2]; // buffer pour le nom à sauver temporairement - char send_too[1024]; // données à envoyer en même temps que le header - int status; // status (-1=non utilisé, 0: prêt, >0: opération en cours) + char* tmpfile; // nom à sauver temporairement (compressé) + char tmpfile_buffer[HTS_URLMAXSIZE*2]; // buffer pour le nom à sauver temporairement + char send_too[1024]; // données à envoyer en même temps que le header + int status; // status (-1=non utilisé, 0: prêt, >0: opération en cours) int locked; // locked (to be used soon) int testmode; // mode de test - int timeout; // gérer des timeouts? (!=0 : nombre de secondes) + int timeout; // gérer des timeouts? (!=0 : nombre de secondes) TStamp timeout_refresh; // si oui, time refresh - int rateout; // timeout refresh? (!=0 : taux minimum toléré en octets/s) - TStamp rateout_time; // si oui, date de départ + int rateout; // timeout refresh? (!=0 : taux minimum toléré en octets/s) + TStamp rateout_time; // si oui, date de départ LLint maxfile_nonhtml; // taille max d'un fichier non html LLint maxfile_html; // idem pour un ficheir html htsblk r; // structure htsblk de chaque objet en background int is_update; // mode update - int head_request; // requète HEAD? - LLint range_req_size; // range utilisé + int head_request; // requète HEAD? + LLint range_req_size; // range utilisé TStamp ka_time_start; // refresh time for KA // - int http11; // L'en tête doit être signé HTTP/1.1 et non HTTP/1.0 + int http11; // L'en tête doit être signé HTTP/1.1 et non HTTP/1.0 int is_chunk; // chunk? char* chunk_adr; // adresse chunk en cours de chargement LLint chunk_size; // taille chunk en cours de chargement LLint chunk_blocksize; // taille data declaree par le chunk - LLint compressed_size; // taille compressés (stats uniquement) + LLint compressed_size; // taille compressés (stats uniquement) // //int links_index; // to access liens[links_index] // - char info[256]; // éventuel status pour le ftp + char info[256]; // éventuel status pour le ftp int stop_ftp; // flag stop pour ftp int finalized; // finalized (optim memory) int early_add; // was added before link heap saw it @@ -265,7 +265,7 @@ typedef struct hash_struct hash_struct; #endif struct hash_struct { lien_url** liens; // pointeur sur liens - int max_lien; // indice le plus grand rencontré + int max_lien; // indice le plus grand rencontré int hash[3][HTS_HASH_SIZE]; // tables pour sav/adr-fil/former_adr-former_fil }; diff --git a/src/htscoremain.c b/src/htscoremain.c index 3059ea3..4775432 100644 --- a/src/htscoremain.c +++ b/src/htscoremain.c @@ -116,17 +116,17 @@ HTSEXT_API int hts_main(int argc, char **argv) return ret; } -// Main, récupère les paramètres et appelle le robot +// Main, récupère les paramètres et appelle le robot HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { - char** x_argv=NULL; // Patch pour argv et argc: en cas de récupération de ligne de commande + char** x_argv=NULL; // Patch pour argv et argc: en cas de récupération de ligne de commande char* x_argvblk=NULL; // (reprise ou update) int x_ptr=0; // offset // int argv_url=-1; // ==0 : utiliser cache et doit.log - char* argv_firsturl=NULL; // utilisé pour nommage par défaut - char* url = NULL; // URLS séparées par un espace + char* argv_firsturl=NULL; // utilisé pour nommage par défaut + char* url = NULL; // URLS séparées par un espace int url_sz = 65535; - //char url[65536]; // URLS séparées par un espace + //char url[65536]; // URLS séparées par un espace // the parametres int httrack_logmode=3; // ONE log file #ifndef _WIN32 @@ -139,7 +139,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { ensureUrlCapacity(url, url_sz, 65536); // Create options - _DEBUG_HEAD=0; // pas de debuggage en têtes + _DEBUG_HEAD=0; // pas de debuggage en têtes /* command max-size check (3.43 ; 3.42-4) */ { @@ -236,15 +236,15 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { argv_url=0; /* pour comptage */ // cmdl_add(argv[0],x_argc,x_argv,x_argvblk,x_ptr); - na=1; /* commencer après nom_prg */ + na=1; /* commencer après nom_prg */ while(na<argc) { int result=1; tmp_argv[0][0]=tmp_argv[1][0]='\0'; - /* Vérifier argv[] non vide */ + /* Vérifier argv[] non vide */ if (strnotempty(argv[na])) { - /* Vérifier Commande (alias) */ + /* Vérifier Commande (alias) */ result=optalias_check(argc,(const char * const *)argv,na, &tmp_argc,(char**)tmp_argv,tmp_error); if (!result) { @@ -259,7 +259,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { cmdl_add(tmp_argv[1],x_argc,x_argv,x_argvblk,x_ptr); } - /* Compter URLs et détecter -i,-q.. */ + /* Compter URLs et détecter -i,-q.. */ if (tmp_argc == 1) { /* pas -P & co */ if (!cmdl_opt(tmp_argv[0])) { /* pas -c0 & co */ if (argv_url<0) argv_url=0; // -1==force -> 1=one url already detected, wipe all previous options @@ -442,7 +442,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { if ( fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/doit.log")) && (argv_url<=0) ) { FILE* fp=fopen(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/doit.log"),"rb"); if (fp) { - int insert_after=1; /* insérer après nom au début */ + int insert_after=1; /* insérer après nom au début */ // char BIGSTK buff[8192]; char *p,*lastp; @@ -511,7 +511,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { } // remplacer "macros" comme --spider - // permet de lancer httrack sans a avoir à se rappeler de syntaxes comme p0C0I0Qc32 .. + // permet de lancer httrack sans a avoir à se rappeler de syntaxes comme p0C0I0Qc32 .. #if DEBUG_STEPS printf("Checking last macros\n"); #endif @@ -630,12 +630,12 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { } */ - // Ici on ajoute les arguments qui ont été appelés avant au cas où on récupère une session - // Exemple: httrack www.truc.fr -L0 puis ^C puis httrack sans URL : ajouter URL précédente + // Ici on ajoute les arguments qui ont été appelés avant au cas où on récupère une session + // Exemple: httrack www.truc.fr -L0 puis ^C puis httrack sans URL : ajouter URL précédente /* if (argv_url==0) { - //if ((fexist(fconcat(StringBuff(opt->path_log),"hts-cache/new.dat"))) && (fexist(fconcat(StringBuff(opt->path_log),"hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer - if (fexist(fconcat(StringBuff(opt->path_log),"hts-cache/doit.log"))) { // un cache est présent + //if ((fexist(fconcat(StringBuff(opt->path_log),"hts-cache/new.dat"))) && (fexist(fconcat(StringBuff(opt->path_log),"hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer + if (fexist(fconcat(StringBuff(opt->path_log),"hts-cache/doit.log"))) { // un cache est présent x_argvblk=(char*) calloct(32768,1); @@ -686,7 +686,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { } */ - // Vérifier quiet + // Vérifier quiet /* { int na; @@ -707,16 +707,16 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { printf("Checking URLs\n"); #endif if (argv_url==0) { - // Présence d'un cache, que faire?.. + // Présence d'un cache, que faire?.. if ( ( fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.zip")) ) || ( fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat")) && fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.ndx")) ) - ) { // il existe déja un cache précédent.. renommer - if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/doit.log"))) { // un cache est présent + ) { // il existe déja un cache précédent.. renommer + if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/doit.log"))) { // un cache est présent if (x_argvblk!=NULL) { int m; - // établir mode - mode cache: 1 (cache valide) 2 (cache à vérifier) + // établir mode - mode cache: 1 (cache valide) 2 (cache à vérifier) if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-in_progress.lock"))) { // cache prioritaire m=1; } else { @@ -756,7 +756,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { return -1; } - } else { // aucune URL définie et pas de cache + } else { // aucune URL définie et pas de cache if (opt->quiet) { help(argv[0],!opt->quiet); htsmain_free(); @@ -769,7 +769,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { htsmain_free(); return 0; } - } else { // plus de 2 paramètres + } else { // plus de 2 paramètres // un fichier log existe? if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-in_progress.lock"))) { // fichier lock? //char s[32]; @@ -796,7 +796,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { } } else if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_html),"index.html"))) { //char s[32]; - opt->cache=2; // cache vient après test de validité + opt->cache=2; // cache vient après test de validité if (opt->quiet==0) { if ( ( fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.zip")) ) @@ -833,7 +833,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { // Treat parameters - // Traiter les paramètres + // Traiter les paramètres #if DEBUG_STEPS printf("Analyze parameters\n"); #endif @@ -867,15 +867,15 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { case 'h': help(argv[0],0); htsmain_free(); - return 0; // déja fait normalement + return 0; // déja fait normalement // - case 'g': // récupérer un (ou plusieurs) fichiers isolés + case 'g': // récupérer un (ou plusieurs) fichiers isolés opt->wizard=2; // le wizard on peut plus s'en passer.. //opt->wizard=0; // pas de wizard opt->cache=0; // ni de cache opt->makeindex=0; // ni d'index - httrack_logmode=1; // erreurs à l'écran - opt->savename_type=1003; // mettre dans le répertoire courant + httrack_logmode=1; // erreurs à l'écran + opt->savename_type=1003; // mettre dans le répertoire courant opt->depth=0; // ne pas explorer la page opt->accept_cookie=0; // pas de cookies opt->robots=0; // pas de robots @@ -903,7 +903,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { break; */ // - // note: les tests opt->depth sont pour éviter de faire + // note: les tests opt->depth sont pour éviter de faire // un miroir du web (:-O) accidentelement ;-) case 'a': /*if (opt->depth==9999) opt->depth=3;*/ opt->travel=0+(opt->travel&256); break; @@ -1004,7 +1004,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { if (StringLength(opt->savename_userdef) > 0) opt->savename_type = -1; // userdef! else - opt->savename_type = 0; // -N "" : par défaut + opt->savename_type = 0; // -N "" : par défaut } } else { sscanf(com+1,"%d",&opt->savename_type); while(isdigit((unsigned char)*(com+1))) com++; @@ -1050,7 +1050,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { case 'z': opt->debug=1; break; // petit debug case 'Z': opt->debug=2; break; // GROS debug // - case '&': case '%': { // deuxième jeu d'options + case '&': case '%': { // deuxième jeu d'options com++; switch(*com) { case 'M': opt->mimehtml = 1; if (*(com+1)=='0') { opt->mimehtml=0; com++; } break; @@ -1066,7 +1066,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { case 'z': opt->nocompression=1; if (*(com+1)=='0') { opt->nocompression=0; com++; } break; // pas de compression case 'f': opt->ftp_proxy=1; if (*(com+1)=='0') { opt->ftp_proxy=0; com++; } break; // proxy http pour ftp case 'P': opt->parseall=1; if (*(com+1)=='0') { opt->parseall=0; com++; } break; // tout parser - case 'n': opt->norecatch=1; if (*(com+1)=='0') { opt->norecatch=0; com++; } break; // ne pas reprendre fichiers effacés localement + case 'n': opt->norecatch=1; if (*(com+1)=='0') { opt->norecatch=0; com++; } break; // ne pas reprendre fichiers effacés localement case 's': opt->sizehack=1; if (*(com+1)=='0') { opt->sizehack=0; com++; } break; // hack sur content-length case 'u': opt->urlhack=1; if (*(com+1)=='0') { opt->urlhack=0; com++; } break; // url hack case 'v': opt->verbosedisplay=2; if (isdigit((unsigned char)*(com+1))) { sscanf(com+1,"%d",&opt->verbosedisplay); while(isdigit((unsigned char)*(com+1))) com++; } break; @@ -1369,7 +1369,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { } break; // - case '@': { // troisième jeu d'options + case '@': { // troisième jeu d'options com++; switch(*com) { case 'i': @@ -1418,7 +1418,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { break; // - case '#': { // non documenté + case '#': { // non documenté com++; switch(*com) { case 'C': // list cache files : httrack -#C '*spid*.gif' will attempt to find the matching file @@ -1482,7 +1482,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { || (strjoker(url, filter, NULL, NULL) != NULL) ) { - r = cache_read_ro(opt, &cache, adr, fil, "", NULL); // lire entrée cache + data + r = cache_read_ro(opt, &cache, adr, fil, "", NULL); // lire entrée cache + data if (r.statuscode != -1) { // No errors found++; if (!hasFilter) { @@ -1634,7 +1634,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { break; case 'p': /* opt->aff_progress=1; deprecated */ break; case 'S': opt->shell=1; break; // stdin sur un shell - case 'K': opt->keyboard=1; break; // vérifier stdin + case 'K': opt->keyboard=1; break; // vérifier stdin // case 'L': sscanf(com+1,"%d",&opt->maxlink); while(isdigit((unsigned char)*(com+1))) com++; break; case 'F': sscanf(com+1,"%d",&opt->maxfilter); while(isdigit((unsigned char)*(com+1))) com++; break; @@ -1711,7 +1711,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { return 0; } break; - case '3': // charset tests: httrack #3 "iso-8859-1" "café" + case '3': // charset tests: httrack #3 "iso-8859-1" "café" if (argc == 3) { char *s = hts_convertStringToUTF8(argv[2], strlen(argv[2]), argv[1]); if (s != NULL) { @@ -1757,7 +1757,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { while(isdigit(com[1])) { com++; } - na++; // sauter, déja traité + na++; // sauter, déja traité break; case 'P': // proxy if ((na+1>=argc) || (argv[na+1][0]=='-')) { @@ -1769,11 +1769,11 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { char* a; na++; opt->proxy.active=1; - // Rechercher MAIS en partant de la fin à cause de user:pass@proxy:port + // Rechercher MAIS en partant de la fin à cause de user:pass@proxy:port a = argv[na] + strlen(argv[na]) -1; // a=strstr(argv[na],":"); // port while( (a > argv[na]) && (*a != ':') && (*a != '@') ) a--; - if (*a == ':') { // un port est présent, <proxy>:port + if (*a == ':') { // un port est présent, <proxy>:port sscanf(a+1,"%d",&opt->proxy.port); StringCopyN(opt->proxy.name,argv[na],(int) (a - argv[na])); } else { // <proxy> @@ -1799,7 +1799,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { if (StringNotEmpty(opt->user_agent)) opt->user_agent_send=1; else - opt->user_agent_send=0; // -F "" désactive l'option + opt->user_agent_send=0; // -F "" désactive l'option } break; // @@ -1820,7 +1820,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { if (StringNotEmpty(opt->sys_com)) opt->sys_com_exec=1; else - opt->sys_com_exec=0; // -V "" désactive l'option + opt->sys_com_exec=0; // -V "" désactive l'option } break; // @@ -1844,7 +1844,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { assertf(urlSize < HTS_URLMAXSIZE); if (urlSize < HTS_URLMAXSIZE) { ensureUrlCapacity(url, url_sz, capa); - if (strnotempty(url)) strcatbuff(url," "); // espace de séparation + if (strnotempty(url)) strcatbuff(url," "); // espace de séparation strcpybuff(tempo,unescape_http_unharm(catbuff,argv[na],1)); escape_spc_url(tempo); strcatbuff(url,tempo); @@ -1942,7 +1942,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { #endif // on utilise le cache.. - // en cas de présence des deux versions, garder la version la plus avancée, + // en cas de présence des deux versions, garder la version la plus avancée, // cad la version contenant le plus de fichiers if (opt->cache) { if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-in_progress.lock"))) { // problemes.. @@ -1961,7 +1961,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { else if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat")) && fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.ndx"))) { if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/old.dat")) && fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/old.ndx"))) { // switcher si new<32Ko et old>65Ko (tailles arbitraires) ? - // ce cas est peut être une erreur ou un crash d'un miroir ancien, prendre + // ce cas est peut être une erreur ou un crash d'un miroir ancien, prendre // alors l'ancien cache if (fsize(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/new.dat"))<32768) { if (fsize(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-cache/old.dat"))>65536) { @@ -1981,7 +1981,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { } } - // Débuggage des en têtes + // Débuggage des en têtes if (_DEBUG_HEAD) { ioinfo=fopen(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-ioinfo.txt"),"wb"); } @@ -2028,7 +2028,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { opt->errlog=NULL; } - // un petit lock-file pour indiquer un miroir en cours, ainsi qu'un éventuel fichier log + // un petit lock-file pour indiquer un miroir en cours, ainsi qu'un éventuel fichier log { FILE* fp=NULL; //int n=0; @@ -2067,7 +2067,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { } }*/ - // vérifier existence de la structure + // vérifier existence de la structure structcheck(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_html), "/")); structcheck(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "/")); @@ -2156,7 +2156,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { #endif if (strchr(arg, ' ') == NULL || strchr(arg, '\"') != NULL) fprintf(opt->log,"%s ", arg); - else // entre "" (si espace(s) et pas déja de ") + else // entre "" (si espace(s) et pas déja de ") fprintf(opt->log,"\"%s\" ", arg); #ifdef _WIN32 if (carg != NULL) @@ -2206,7 +2206,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { /* Init external */ RUN_CALLBACK_NOARG(opt, init); - // détourner SIGHUP etc. + // détourner SIGHUP etc. #if DEBUG_STEPS printf("Launching the mirror\n"); #endif @@ -2285,7 +2285,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { if (opt->errlog) { fclose(opt->errlog); opt->errlog=NULL; } } - // Débuggage des en têtes + // Débuggage des en têtes if (_DEBUG_HEAD) { if (ioinfo) { fclose(ioinfo); @@ -2316,7 +2316,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) { // main() subroutines -// vérifier chemin path +// vérifier chemin path int check_path(String* s, char* defaultname) { int i; int return_value=0; @@ -2348,15 +2348,15 @@ int check_path(String* s, char* defaultname) { } // ending / - if (StringNotEmpty(*s) && StringRight(*s, 1) != '/') // ajouter slash à la fin + if (StringNotEmpty(*s) && StringRight(*s, 1) != '/') // ajouter slash à la fin StringCat(*s, "/"); return return_value; } -// détermine si l'argument est une option +// détermine si l'argument est une option int cmdl_opt(char* s) { - if (s[0]=='-') { // c'est peut être une option + if (s[0]=='-') { // c'est peut être une option if (strchr(s,'.')!=NULL && strchr(s,'%')==NULL) return 0; // sans doute un -www.truc.fr (note: -www n'est pas compris) else if (strchr(s,'/')!=NULL) diff --git a/src/htscoremain.h b/src/htscoremain.h index 9c19613..1de4c36 100644 --- a/src/htscoremain.h +++ b/src/htscoremain.h @@ -49,7 +49,7 @@ Please visit our Website: http://www.httrack.com /* Library internal definictions */ #ifdef HTS_INTERNAL_BYTECODE -// Main, récupère les paramètres et appelle le robot +// Main, récupère les paramètres et appelle le robot #ifndef HTTRACK_DEFLIB HTSEXT_API int hts_main(int argc, char **argv); HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt); diff --git a/src/htsfilters.c b/src/htsfilters.c index 68d66f5..4cc740b 100644 --- a/src/htsfilters.c +++ b/src/htsfilters.c @@ -55,9 +55,9 @@ Please visit our Website: http://www.httrack.com #include <ctype.h> /* END specific definitions */ -// à partir d'un tableau de {"+*.toto","-*.zip","+*.tata"} définit si nom est autorisé -// optionnel: taille à contrôller (ou numéro, etc) en pointeur -// (en de détection de *size, la taille limite est écrite par dessus *size) +// à partir d'un tableau de {"+*.toto","-*.zip","+*.tata"} définit si nom est autorisé +// optionnel: taille à contrôller (ou numéro, etc) en pointeur +// (en de détection de *size, la taille limite est écrite par dessus *size) // exemple: +-*.gif*[<5] == supprimer GIF si <5KB int fa_strjoker(int type,char** filters,int nfil,char* nom,LLint* size,int* size_flag,int* depth) { int verdict = 0; // on sait pas @@ -83,7 +83,7 @@ int fa_strjoker(int type,char** filters,int nfil,char* nom,LLint* size,int* size if (sz != *size) sizelimit=sz; if (filters[i][0]=='+') - verdict = 1; // autorisé + verdict = 1; // autorisé else verdict = -1; // interdit if (depth) @@ -98,12 +98,12 @@ int fa_strjoker(int type,char** filters,int nfil,char* nom,LLint* size,int* size // supercomparateur joker (tm) // compare a et b (b=avec joker dedans), case insensitive [voir CI] -// renvoi l'adresse de la première lettre de la chaine -// (càd *[..]toto.. renvoi adresse de toto dans la chaine) -// accepte les délires du genre www.*.*/ * / * truc*.* -// cet algo est 'un peu' récursif mais ne consomme pas trop de tm +// renvoi l'adresse de la première lettre de la chaine +// (cà d *[..]toto.. renvoi adresse de toto dans la chaine) +// accepte les délires du genre www.*.*/ * / * truc*.* +// cet algo est 'un peu' récursif mais ne consomme pas trop de tm // * = toute lettre -// --?-- : spécifique à HTTrack et aux ? +// --?-- : spécifique à HTTrack et aux ? HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { //int err=0; if (strnotempty(joker)==0) { // fin de chaine joker @@ -112,20 +112,20 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { else if (chaine[0]=='?') return chaine; // --?-- pour les index.html?Choix=2 else - return NULL; // non trouvé + return NULL; // non trouvé } // on va progresser en suivant les 'mots' contenus dans le joker - // un mot peut être un * ou bien toute autre séquence de lettres + // un mot peut être un * ou bien toute autre séquence de lettres - if (strcmp(joker,"*")==0) { // ok, rien après + if (strcmp(joker,"*")==0) { // ok, rien après return chaine; } // 1er cas: jokers * ou jokers multiples *[..] if (joker[0]=='*') { // comparer joker+reste (*toto/..) - int jmp; // nombre de caractères pour le prochain mot dans joker - int cut = 0; // interdire tout caractère superflu + int jmp; // nombre de caractères pour le prochain mot dans joker + int cut = 0; // interdire tout caractère superflu char pass[256]; char LEFT='[',RIGHT=']'; int unique=0; @@ -147,7 +147,7 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { int i; for(i=0;i<256;i++) pass[i]=0; - // noms réservés + // noms réservés if ((strfield(joker+2,"file")) || (strfield(joker+2,"name"))) { for(i=0;i<256;i++) pass[i]=1; pass[(int) '?'] = 0; @@ -166,7 +166,7 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { while ((joker[i]!=RIGHT) && (joker[i]) && (i<len)) i++; } } else if (strfield(joker+2,"param")) { - if (chaine[0]=='?') { // il y a un paramètre juste là + if (chaine[0]=='?') { // il y a un paramètre juste là for(i=0;i<256;i++) pass[i]=1; } // sinon synonyme de 'rien' i=2; @@ -174,10 +174,10 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { while ((joker[i]!=RIGHT) && (joker[i]) && (i<len)) i++; } } else { - // décode les directives comme *[A-Z,âêîôû,0-9] + // décode les directives comme *[A-Z,âêîôû,0-9] i=2; - if (joker[i] == RIGHT) { // *[] signifie "plus rien après" - cut = 1; // caractère supplémentaire interdit + if (joker[i] == RIGHT) { // *[] signifie "plus rien après" + cut = 1; // caractère supplémentaire interdit } else { int len=(int) strlen(joker); while ((joker[i]!=RIGHT) && (joker[i]) && (i<len)) { @@ -189,7 +189,7 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { if (size) { if (*size>=0) { if (size_flag) - *size_flag=1; /* a joué */ + *size_flag=1; /* a joué */ if (joker[i-1]=='<') lverdict=(*size<lsize); else @@ -228,7 +228,7 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { } } } - // à sauter dans joker + // à sauter dans joker jmp=i; if (joker[i]) jmp++; @@ -254,7 +254,7 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { } // comparaison en boucle, c'est ca qui consomme huhu.. - // le tableau pass[256] indique les caractères ASCII autorisés + // le tableau pass[256] indique les caractères ASCII autorisés // tester sans le joker (pas ()+ mais ()*) if (!unique) { @@ -270,7 +270,7 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { else /* *(a) only match a (not aaaaa) */ max=1; while(i<(int) max) { - if (pass[(int) (unsigned char) chaine[i]]) { // caractère autorisé + if (pass[(int) (unsigned char) chaine[i]]) { // caractère autorisé if ( (adr=strjoker(chaine+i+1,joker+jmp,size,size_flag)) ) { return adr; } @@ -278,7 +278,7 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { } else i=max+2; // sortir } - // tester chaîne vide + // tester chaîne vide if (i!=max+2) // avant c'est ok if ( (adr=strjoker(chaine+max,joker+jmp,size,size_flag)) ) return adr; @@ -290,7 +290,7 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { if (strnotempty(chaine)) { int jmp=0,ok=1; - // comparer début de joker et début de chaine + // comparer début de joker et début de chaine while((joker[jmp]!='*') && (joker[jmp]) && (ok)) { // CI : remplacer streql par une comparaison != if (!streql(chaine[jmp],joker[jmp])) { @@ -314,13 +314,13 @@ HTS_INLINE char* strjoker(char* chaine,char* joker,LLint* size,int* size_flag) { } // recherche multiple -// exemple: find dans un texte de strcpybuff(*[A-Z,a-z],"*[0-9]"); va rechercher la première occurence +// exemple: find dans un texte de strcpybuff(*[A-Z,a-z],"*[0-9]"); va rechercher la première occurence // d'un strcpy sur une variable ayant un nom en lettres et copiant une chaine de chiffres -// ATTENTION!! Eviter les jokers en début, où gare au temps machine! +// ATTENTION!! Eviter les jokers en début, où gare au temps machine! char* strjokerfind(char* chaine,char* joker) { char* adr; while(*chaine) { - if ( (adr=strjoker(chaine,joker,NULL,NULL)) ) { // ok trouvé + if ( (adr=strjoker(chaine,joker,NULL,NULL)) ) { // ok trouvé return adr; } chaine++; diff --git a/src/htsftp.c b/src/htsftp.c index 6e1d1f0..d8ed03d 100644 --- a/src/htsftp.c +++ b/src/htsftp.c @@ -92,7 +92,7 @@ void back_launch_ftp( void* pP ) { printf("[Launching main ftp routine]\n"); #endif run_launch_ftp(pStruct); - // prêt + // prêt pStruct->pBack->status=STATUS_FTP_READY; /* Delete structure */ @@ -115,7 +115,7 @@ void launch_ftp(FTPDownloadStruct* params) { #error No more supported #endif -// pour l'arrêt du ftp +// pour l'arrêt du ftp #ifdef _WIN32 #define _T_SOC_close(soc) closesocket(soc); soc=INVALID_SOCKET; #else @@ -132,7 +132,7 @@ void launch_ftp(FTPDownloadStruct* params) { return 0; \ } -// la véritable fonction une fois lancées les routines thread/fork +// la véritable fonction une fois lancées les routines thread/fork int run_launch_ftp(FTPDownloadStruct *pStruct) { lien_back* back = pStruct->pBack; httrackp *opt = pStruct->pOpt; @@ -147,7 +147,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { char *adr,*real_adr; char* ftp_filename=""; int timeout = 300; // timeout - int timeout_onfly=8; // attente réponse supplémentaire + int timeout_onfly=8; // attente réponse supplémentaire int transfer_list=0; // directory int rest_understood=0; // rest command understood t_fullhostent fullhostent_buffer; // buffer pour resolver @@ -168,7 +168,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { back->r.statuscode=0; back->r.size=0; - // récupérer user et pass si présents, et sauter user:id@ dans adr + // récupérer user et pass si présents, et sauter user:id@ dans adr real_adr = strchr(back->url_adr,':'); if (real_adr) real_adr++; else real_adr=back->url_adr; @@ -262,7 +262,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { } else strcpybuff(_adr,adr); - // récupérer adresse résolue + // récupérer adresse résolue strcpybuff(back->info,"host name"); hp = hts_gethostbyname(opt,_adr, &fullhostent_buffer); if (hp == NULL) { @@ -280,7 +280,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { SOCaddr_copyaddr(server_data, server_data_size, hp->h_addr_list[0], hp->h_length); // memcpy(&server.sin_addr, hp->h_addr, hp->h_length); - // créer ("attachement") une socket (point d'accès) internet,en flot + // créer ("attachement") une socket (point d'accès) internet,en flot soc_ctl = (T_SOC) socket(SOCaddr_sinfamily(server), SOCK_STREAM, 0); if (soc_ctl==INVALID_SOCKET) { strcpybuff(back->r.msg,"Unable to create a socket"); @@ -318,10 +318,10 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { // envoi du login // --USER-- - get_ftp_line(soc_ctl,line,timeout); // en tête + get_ftp_line(soc_ctl,line,timeout); // en tête _CHECK_HALT_FTP; - if (line[0]=='2') { // ok, connecté + if (line[0]=='2') { // ok, connecté strcpybuff(back->info,"login: user"); sprintf(line,"USER %s",user); send_line(soc_ctl,line); @@ -352,7 +352,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { char* a; a=back->url_fil + strlen(back->url_fil)-1; while( (a > back->url_fil) && (*a!='/')) a--; - if (*a == '/') { // ok repéré + if (*a == '/') { // ok repéré char BIGSTK target[1024]; target[0]='\0'; strncatbuff(target,back->url_fil,(int) (a - back->url_fil)); @@ -378,7 +378,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { sprintf(back->r.msg,"CWD error: %s",linejmp(line)); // back->status=STATUS_FTP_READY; // fini back->r.statuscode=STATUSCODE_INVALID; - } // sinon on est prêts + } // sinon on est prêts } else { strcpybuff(back->r.msg,"Unexpected ftp error"); // back->status=STATUS_FTP_READY; // fini @@ -402,12 +402,12 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { back->r.statuscode=STATUSCODE_INVALID; } - // ok, si on est prêts on écoute sur un port et on demande la sauce + // ok, si on est prêts on écoute sur un port et on demande la sauce if (back->r.statuscode != -1) { // - // Pré-REST + // Pré-REST // #if FTP_PASV if (SOCaddr_getproto(server, server_size) == '1') { @@ -436,7 +436,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { strcpybuff(adr_ip,a); // copier adresse ip // if (b) { - a=b+1; // début du port + a=b+1; // début du port b=strchr(a,'.'); if (b) { int n1,n2; @@ -451,7 +451,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { } } else { deletesoc(soc_dat); soc_dat=INVALID_SOCKET; - } // sinon on est prêts + } // sinon on est prêts } } // -- fin analyse de l'adresse IP et du port -- @@ -459,7 +459,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { sprintf(back->r.msg,"PASV incorrect: %s",linejmp(line)); // back->status=STATUS_FTP_READY; // fini back->r.statuscode=STATUSCODE_INVALID; - } // sinon on est prêts + } // sinon on est prêts } else { /* * try epsv (ipv6) * @@ -496,10 +496,10 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { sprintf(back->r.msg,"PASV/EPSV error: %s",linejmp(line)); // back->status=STATUS_FTP_READY; // fini back->r.statuscode=STATUSCODE_INVALID; - } // sinon on est prêts + } // sinon on est prêts } #else - // rien à faire avant + // rien à faire avant #endif #if FTP_PASV @@ -570,7 +570,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { // infos strcpybuff(back->info,"resolv"); - // résoudre + // résoudre if (adr_ip[0]) { hp = hts_gethostbyname(opt,adr_ip, &fullhostent_buffer); if (hp) { @@ -613,7 +613,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { sprintf(back->r.msg,"RETR command errror: %s",linejmp(line)); // back->status=STATUS_FTP_READY; // fini back->r.statuscode=STATUSCODE_INVALID; - } // sinon on est prêts + } // sinon on est prêts } else { #if FTP_DEBUG printf("Data: unable to connect\n"); @@ -623,22 +623,22 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { strcpybuff(back->r.msg,"Unable to connect"); // back->status=STATUS_FTP_READY; // fini back->r.statuscode=STATUSCODE_INVALID; - } // sinon on est prêts + } // sinon on est prêts } else { strcpybuff(back->r.msg,"Unable to create a socket"); // back->status=STATUS_FTP_READY; // fini back->r.statuscode=STATUSCODE_INVALID; - } // sinon on est prêts + } // sinon on est prêts } else { sprintf(back->r.msg,"Unable to resolve IP %s",adr_ip); // back->status=STATUS_FTP_READY; // fini back->r.statuscode=STATUSCODE_INVALID; - } // sinon on est prêts + } // sinon on est prêts } else { sprintf(back->r.msg,"PASV incorrect: %s",linejmp(line)); // back->status=STATUS_FTP_READY; // fini back->r.statuscode=STATUSCODE_INVALID; - } // sinon on est prêts + } // sinon on est prêts #else //T_SOC soc_servdat; strcpybuff(back->info,"listening"); @@ -683,10 +683,10 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { #endif // - // Ok, connexion initiée + // Ok, connexion initiée // if (soc_dat != INVALID_SOCKET) { - if (rest_understood) { // REST envoyée et comprise + if (rest_understood) { // REST envoyée et comprise file_notify(opt, back->url_adr, back->url_fil, back->url_sav, 0, 1, 0); back->r.fp = fileappend(&opt->state.strc, back->url_sav); } else { @@ -698,10 +698,10 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { char BIGSTK buff[1024]; int len=1; int read_len=1024; - //HTS_TOTAL_RECV_CHECK(read_len); // Diminuer au besoin si trop de données reçues + //HTS_TOTAL_RECV_CHECK(read_len); // Diminuer au besoin si trop de données reçues while( (len>0) && (!stop_ftp(back)) ) { - // attendre les données + // attendre les données len=1; // pas d'erreur pour le moment switch(wait_socket_receive(soc_dat,timeout)) { case -1: @@ -718,7 +718,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { break; } - // réception + // réception if (len) { len=recv(soc_dat,buff,read_len,0); if (len>0) { @@ -742,7 +742,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { // back->status=STATUS_FTP_READY; // fini back->r.statuscode=STATUSCODE_INVALID; } - } else { // Erreur ou terminé + } else { // Erreur ou terminé // back->status=STATUS_FTP_READY; // fini back->r.statuscode=0; if (back->r.totalsize > 0 && back->r.size != back->r.totalsize) { @@ -751,7 +751,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { } } read_len=1024; - //HTS_TOTAL_RECV_CHECK(read_len); // Diminuer au besoin si trop de données reçues + //HTS_TOTAL_RECV_CHECK(read_len); // Diminuer au besoin si trop de données reçues } } if (back->r.fp) { @@ -772,7 +772,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) { // 226 Transfer complete? if (back->r.statuscode != -1) { if (wait_socket_receive(soc_ctl,timeout_onfly)>0) { - // récupérer 226 transfer complete + // récupérer 226 transfer complete get_ftp_line(soc_ctl,line,timeout); if (line[0]=='2') { // OK strcpybuff(back->r.msg,"OK"); @@ -849,7 +849,7 @@ T_SOC get_datasocket(char* to_send) { // effacer structure memset(&server2, 0, sizeof(server2)); if (getsockname(soc,(struct sockaddr*) &server2, &len) == 0) { - // *port=ntohs(server.sin_port); // récupérer port + // *port=ntohs(server.sin_port); // récupérer port if (listen(soc,10)>=0) { // au pif le 10 #if HTS_INET6==0 unsigned short int a,n1,n2; @@ -921,7 +921,7 @@ T_SOC get_datasocket(char* to_send) { FILE* dd=NULL; #endif -// routines de réception/émission +// routines de réception/émission // 0 = ERROR int send_line(T_SOC soc,char* data) { char BIGSTK line[1024]; @@ -941,7 +941,7 @@ int send_line(T_SOC soc,char* data) { #if FTP_DEBUG printf("!SOC WRITE ERROR\n"); #endif - return 0; // erreur, plus connecté! + return 0; // erreur, plus connecté! } #if FTP_DEBUG { @@ -966,7 +966,7 @@ int get_ftp_line(T_SOC soc,char* line,int timeout) { do { char b; - // vérifier données + // vérifier données switch(wait_socket_receive(soc,timeout)) { case -1: // erreur de lecture if (line) strcpybuff(line,"500 *read error"); @@ -978,7 +978,7 @@ int get_ftp_line(T_SOC soc,char* line,int timeout) { break; } - //HTS_TOTAL_RECV_CHECK(dummy); // Diminuer au besoin si trop de données reçues + //HTS_TOTAL_RECV_CHECK(dummy); // Diminuer au besoin si trop de données reçues switch(recv(soc,&b,1,0)) { //case 0: break; // pas encore --> erreur (on attend)! case 1: @@ -1075,9 +1075,9 @@ int check_socket_connect(T_SOC soc) { } return 0; } -// attendre des données +// attendre des données int wait_socket_receive(T_SOC soc,int timeout) { - // attendre les données + // attendre les données TStamp ltime=time_local(); int r; #if FTP_DEBUG @@ -1096,7 +1096,7 @@ int wait_socket_receive(T_SOC soc,int timeout) { } -// cancel reçu? +// cancel reçu? int stop_ftp(lien_back* back) { if (back->stop_ftp) { strcpybuff(back->r.msg, "Cancelled by User"); diff --git a/src/htsglobal.h b/src/htsglobal.h index 6512f42..8d13c43 100644 --- a/src/htsglobal.h +++ b/src/htsglobal.h @@ -34,7 +34,7 @@ Please visit our Website: http://www.httrack.com /* Author: Xavier Roche */ /* ------------------------------------------------------------ */ -// Fichier réunissant l'ensemble des defines +// Fichier réunissant l'ensemble des defines #ifndef HTTRACK_GLOBAL_DEFH #define HTTRACK_GLOBAL_DEFH @@ -60,7 +60,7 @@ Please visit our Website: http://www.httrack.com #endif #endif -// Définition plate-forme +// Définition plate-forme #include "htsconfig.h" // WIN32 types @@ -179,7 +179,7 @@ Please visit our Website: http://www.httrack.com #define BIGSTK #endif -// compatibilité DOS +// compatibilité DOS #ifdef _WIN32 #define HTS_DOSNAME 1 #else @@ -279,7 +279,7 @@ Please visit our Website: http://www.httrack.com #define LF "\x0a" #endif -/* équivaut à "paramètre vide", par exemple -F (none) */ +/* équivaut à "paramètre vide", par exemple -F (none) */ #define HTS_NOPARAM "(none)" #define HTS_NOPARAM2 "\"(none)\"" @@ -381,7 +381,7 @@ typedef int T_SOC; #define __cdecl #endif -/* mode pour mkdir ET chmod (accès aux fichiers) */ +/* mode pour mkdir ET chmod (accès aux fichiers) */ #define HTS_PROTECT_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR) #if HTS_ACCESS #define HTS_ACCESS_FILE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) @@ -391,7 +391,7 @@ typedef int T_SOC; #define HTS_ACCESS_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR) #endif -/* vérifier la déclaration des variables préprocesseur */ +/* vérifier la déclaration des variables préprocesseur */ #ifndef HTS_DOSNAME #error | HTS_DOSNAME Has not been defined. #error | Set it to 1 if you are under DOS, 0 under Unix. @@ -401,7 +401,7 @@ typedef int T_SOC; #error #endif #ifndef HTS_ACCESS -/* Par défaut, accès à tous les utilisateurs */ +/* Par défaut, accès à tous les utilisateurs */ #define HTS_ACCESS 1 #endif @@ -412,7 +412,7 @@ typedef int T_SOC; /* HTSLib */ -// Cache DNS, accélère les résolution d'adresses +// Cache DNS, accélère les résolution d'adresses #define HTS_DNSCACHE 1 // ID d'une pseudo-socket locale pour les file:// @@ -459,7 +459,7 @@ static const t_htsboundary htsboundary = 0xDEADBEEF; /* Debugging */ /* ------------------------------------------------------------ */ -// débuggage types +// débuggage types #define DEBUG_SHOWTYPES 0 // backing debug #define BDEBUG 0 @@ -477,29 +477,29 @@ static const t_htsboundary htsboundary = 0xDEADBEEF; #define DEBUG_ROBOTS 0 // debug hash #define DEBUG_HASH 0 -// Vérification d'intégrité +// Vérification d'intégrité #define DEBUG_CHECKINT 0 // nbr sockets debug #define NSDEBUG 0 -// débuggage HTSLib +// débuggage HTSLib #define HDEBUG 0 // surveillance de la connexion #define CNXDEBUG 0 // debuggage cookies #define DEBUG_COOK 0 -// débuggage hard.. +// débuggage hard.. #define HTS_WIDE_DEBUG 0 // debuggage deletehttp et cie #define HTS_DEBUG_CLOSESOCK 0 -// debug tracage mémoire +// debug tracage mémoire #define MEMDEBUG 0 // htsmain #define DEBUG_STEPS 0 -// Débuggage de contrôle +// Débuggage de contrôle #if HTS_DEBUG_CLOSESOCK #define _HTS_WIDE 1 #endif diff --git a/src/htshash.c b/src/htshash.c index f4c6ffd..034ee81 100644 --- a/src/htshash.c +++ b/src/htshash.c @@ -57,12 +57,12 @@ Please visit our Website: http://www.httrack.com #endif // GESTION DES TABLES DE HACHAGE -// Méthode à 2 clés (adr+fil), 2e cle facultative -// hash[no_enregistrement][pos]->hash est un index dans le tableau général liens +// Méthode à 2 clés (adr+fil), 2e cle facultative +// hash[no_enregistrement][pos]->hash est un index dans le tableau général liens // #define HTS_HASH_SIZE 8191 (premier si possible!) // type: numero enregistrement - 0 est case insensitive (sav) 1 (adr+fil) 2 (former_adr+former_fil) // recherche dans la table selon nom1,nom2 et le no d'enregistrement -// retour: position ou -1 si non trouvé +// retour: position ou -1 si non trouvé int hash_read(const hash_struct* hash,const char* nom1,const char* nom2,int type,int normalized) { char BIGSTK normfil_[HTS_URLMAXSIZE*2]; char catbuff[CATBUFF_SIZE]; @@ -70,17 +70,17 @@ int hash_read(const hash_struct* hash,const char* nom1,const char* nom2,int type const char* normadr; unsigned int cle; int pos; - // calculer la clé de recherche, non modulée + // calculer la clé de recherche, non modulée if (type) cle = hash_cle(nom1,nom2); else cle = hash_cle(convtolower(catbuff,nom1),nom2); // case insensitive // la position se calcule en modulant pos = (int) (cle%HTS_HASH_SIZE); - // entrée trouvée? - if (hash->hash[type][pos] >= 0) { // un ou plusieurs enregistrement(s) avec une telle clé existe.. + // entrée trouvée? + if (hash->hash[type][pos] >= 0) { // un ou plusieurs enregistrement(s) avec une telle clé existe.. // tester table de raccourcis (hash) - // pos est maintenant la position recherchée dans liens + // pos est maintenant la position recherchée dans liens pos = hash->hash[type][pos]; while (pos>=0) { // parcourir la chaine switch (type) { @@ -142,13 +142,13 @@ int hash_read(const hash_struct* hash,const char* nom1,const char* nom2,int type } // Ok va falloir chercher alors.. - /*pos=hash->max_lien; // commencer à max_lien + /*pos=hash->max_lien; // commencer à max_lien switch (type) { case 0: // sav while(pos>=0) { if (hash->liens[pos]->hash_sav == cle ) { if (strcmp(nom1,hash->liens[pos]->sav)==0) { - hash->hash[type][(int) (cle%HTS_HASH_SIZE)] = pos; // noter plus récent dans shortcut table + hash->hash[type][(int) (cle%HTS_HASH_SIZE)] = pos; // noter plus récent dans shortcut table #if DEBUG_HASH==2 printf("hash: found long search at %d\n",pos); #endif @@ -162,7 +162,7 @@ int hash_read(const hash_struct* hash,const char* nom1,const char* nom2,int type while(pos>=0) { if (hash->liens[pos]->hash_adrfil == cle ) { if ((strcmp(nom1,hash->liens[pos]->adr)==0) && (strcmp(nom2,hash->liens[pos]->fil)==0)) { - hash->hash[type][(int) (cle%HTS_HASH_SIZE)] = pos; // noter plus récent dans shortcut table + hash->hash[type][(int) (cle%HTS_HASH_SIZE)] = pos; // noter plus récent dans shortcut table #if DEBUG_HASH==2 printf("hash: found long search at %d\n",pos); #endif @@ -177,7 +177,7 @@ int hash_read(const hash_struct* hash,const char* nom1,const char* nom2,int type if (hash->liens[pos]->hash_fadrfil == cle ) { if (hash->liens[pos]->former_adr) if ((strcmp(nom1,hash->liens[pos]->former_adr)==0) && (strcmp(nom2,hash->liens[pos]->former_fil)==0)) { - hash->hash[type][(int) (cle%HTS_HASH_SIZE)] = pos; // noter plus récent dans shortcut table + hash->hash[type][(int) (cle%HTS_HASH_SIZE)] = pos; // noter plus récent dans shortcut table #if DEBUG_HASH==2 printf("hash: found long search at %d\n",pos); #endif @@ -190,12 +190,12 @@ int hash_read(const hash_struct* hash,const char* nom1,const char* nom2,int type #if DEBUG_HASH==1 printf("hash: not found after test %s%s\n",nom1,nom2); #endif - return -1; // non trouvé + return -1; // non trouvé } else { #if DEBUG_HASH==2 printf("hash: not found %s%s\n",nom1,nom2); #endif - return -1; // non trouvé : clé non entrée (même une fois) + return -1; // non trouvé : clé non entrée (même une fois) } } @@ -213,13 +213,13 @@ void hash_write(hash_struct* hash,int lpos,int normalized) { #if DEBUG_HASH hashnumber=hash->max_lien; #endif - // élément actuel sur -1 (fin de chaine) + // élément actuel sur -1 (fin de chaine) hash->liens[lpos]->hash_next[0]=hash->liens[lpos]->hash_next[1]=hash->liens[lpos]->hash_next[2]=-1; // cle = hash_cle(convtolower(catbuff,hash->liens[lpos]->sav),""); // CASE INSENSITIVE pos = (int) (cle%HTS_HASH_SIZE); ptr = hash_calc_chaine(hash,0,pos); // calculer adresse chaine - *ptr = lpos; // noter dernier enregistré + *ptr = lpos; // noter dernier enregistré #if DEBUG_HASH==3 printf("[%d",pos); #endif @@ -234,7 +234,7 @@ void hash_write(hash_struct* hash,int lpos,int normalized) { cle = hash_cle(jump_normalized(hash->liens[lpos]->adr),normfil); pos = (int) (cle%HTS_HASH_SIZE); ptr = hash_calc_chaine(hash,1,pos); // calculer adresse chaine - *ptr = lpos; // noter dernier enregistré + *ptr = lpos; // noter dernier enregistré #if DEBUG_HASH==3 printf(",%d",pos); #endif @@ -250,7 +250,7 @@ void hash_write(hash_struct* hash,int lpos,int normalized) { cle = hash_cle(jump_normalized(hash->liens[lpos]->former_adr),normfil); pos = (int) (cle%HTS_HASH_SIZE); ptr = hash_calc_chaine(hash,2,pos); // calculer adresse chaine - *ptr = lpos; // noter dernier enregistré + *ptr = lpos; // noter dernier enregistré #if DEBUG_HASH==3 printf(",%d",pos); #endif @@ -269,7 +269,7 @@ void hash_write(hash_struct* hash,int lpos,int normalized) { // } -// calcul clé +// calcul clé // il n'y a pas de formule de hashage universelle, celle-ci semble acceptable.. unsigned long int hash_cle(const char* nom1, const char* nom2) { /* @@ -294,13 +294,13 @@ unsigned long int hash_cle(const char* nom1, const char* nom2) { +md5sum32(nom2); } -// calcul de la position finale dans la chaine des elements ayant la même clé +// calcul de la position finale dans la chaine des elements ayant la même clé int* hash_calc_chaine(hash_struct* hash,int type,int pos) { #if DEBUG_HASH int count=0; #endif if (hash->hash[type][pos] == -1) - return &(hash->hash[type][pos]); // premier élément dans la chaine + return &(hash->hash[type][pos]); // premier élément dans la chaine pos=hash->hash[type][pos]; while(hash->liens[pos]->hash_next[type] != -1) { pos = hash->liens[pos]->hash_next[type]; diff --git a/src/htshelp.c b/src/htshelp.c index 6ba34c6..37aee84 100644 --- a/src/htshelp.c +++ b/src/htshelp.c @@ -184,7 +184,7 @@ void help_wizard(httrackp* opt) { if ((str[strlen(str)-1]!='/') && (str[strlen(str)-1]!='\\')) strcatbuff(str,"/"); strcatbuff(stropt2,"-O \""); strcatbuff(stropt2,str); strcatbuff(stropt2,projname); strcatbuff(stropt2,"\" "); - // Créer si ce n'est fait un index.html 1er niveau + // Créer si ce n'est fait un index.html 1er niveau make_empty_index(str); // printf("\n"); @@ -376,7 +376,7 @@ void help_catchurl(const char* dest_path) { printf("Unable to create a temporary proxy (no remaining port)\n"); } -// Créer un index.html vide +// Créer un index.html vide void make_empty_index(char* str) { #if 0 if (!fexist(fconcat(str,"index.html"))) { diff --git a/src/htsindex.c b/src/htsindex.c index eea1c47..48d50e2 100644 --- a/src/htsindex.c +++ b/src/htsindex.c @@ -61,17 +61,17 @@ Please visit our Website: http://www.httrack.com // MUST HAVE SAME SIZES!! #define KEYW_TRANSCODE_FROM (\ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ - "àâä" \ - "ÀÂÄ" \ - "éèêë" \ - "ÈÈÊË" \ - "ìîï" \ - "ÌÎÏ" \ - "òôö" \ - "ÒÔÖ" \ - "ùûü" \ - "ÙÛÜ" \ - "ÿ" \ + "à âä" \ + "ÀÂÄ" \ + "éèêë" \ + "ÈÈÊË" \ + "ìîï" \ + "ÌÎÃ" \ + "òôö" \ + "ÒÔÖ" \ + "ùûü" \ + "ÙÛÜ" \ + "ÿ" \ ) #define KEYW_TRANSCODE_TO ( \ "abcdefghijklmnopqrstuvwxyz" \ diff --git a/src/htsjava.c b/src/htsjava.c index 89bc74f..2a3d648 100644 --- a/src/htsjava.c +++ b/src/htsjava.c @@ -191,7 +191,7 @@ static int hts_parse_java(t_hts_callbackarg *carg, httrackp *opt, #if JAVADEBUG printf("header\n"); #endif - // tester en tête + // tester en tête if (reverse_endian()) { header.magic = hts_swap32(header.magic); header.count = hts_swap16(header.count); @@ -415,7 +415,7 @@ static RESP_STRUCT readtable(htsmoduleStruct* str, break; default: // printf("Type inconnue\n"); - // on arrête tout + // on arrête tout sprintf(str->err_msg,"Internal structure unknown (type %d)",trans.type); *error = 1; return(trans); diff --git a/src/htslib.c b/src/htslib.c index 8b20879..11d40da 100644 --- a/src/htslib.c +++ b/src/htslib.c @@ -120,7 +120,7 @@ FILE* ioinfo; #endif int IPV6_resolver = 0; -/* détection complémentaire */ +/* détection complémentaire */ const char* hts_detect[] = { "archive", "background", @@ -138,13 +138,13 @@ const char* hts_detect[] = { "" }; -/* détecter début */ +/* détecter début */ const char* hts_detectbeg[] = { "hotspot", /* hotspot1=..,hotspot2=.. */ "" }; -/* ne pas détcter de liens dedans */ +/* ne pas détcter de liens dedans */ const char* hts_nodetect[] = { "accept-charset", "accesskey", @@ -185,7 +185,7 @@ const char* hts_nodetect[] = { }; -/* détection de mini-code javascript */ +/* détection de mini-code javascript */ /* ALSO USED: detection based on the name: onXXX="<tag>" where XXX starts with upper case letter */ const char* hts_detect_js[] = { "onAbort", @@ -226,19 +226,19 @@ const char* hts_main_mime[] = { "" }; -/* détection "...URL=<url>" */ +/* détection "...URL=<url>" */ const char* hts_detectURL[] = { "content", "" }; -/* tags où l'URL doit être réécrite mais non capturée */ +/* tags où l'URL doit être réécrite mais non capturée */ const char* hts_detectandleave[] = { "action", "" }; -/* ne pas renommer les types renvoyés (souvent types inconnus) */ +/* ne pas renommer les types renvoyés (souvent types inconnus) */ const char* hts_mime_keep[] = { "application/octet-stream", "text/plain", @@ -603,7 +603,7 @@ const char* hts_mime[][2] = { -// conversion éventuelle / vers antislash +// conversion éventuelle / vers antislash #ifdef _WIN32 char* antislash(char *catbuff, const char* s) { char* a; @@ -626,24 +626,24 @@ void hts_init_htsblk(htsblk* r) { r->totalsize=-1; } -// Récupération d'un fichier http sur le net. -// Renvoie une adresse sur le bloc de mémoire, ou bien +// Récupération d'un fichier http sur le net. +// Renvoie une adresse sur le bloc de mémoire, ou bien // NULL si un retour.msgeur (buffer retour.msg) est survenue. // -// Une adresse de structure htsmsg peut être transmise pour -// suivre l'évolution du chargement si le process a été lancé +// Une adresse de structure htsmsg peut être transmise pour +// suivre l'évolution du chargement si le process a été lancé // en background htsblk httpget(httrackp *opt,char* url) { char BIGSTK adr[HTS_URLMAXSIZE*2]; // adresse char BIGSTK fil[HTS_URLMAXSIZE*2]; // chemin - // séparer URL en adresse+chemin + // séparer URL en adresse+chemin if (ident_url_absolute(url,adr,fil)==-1) { htsblk retour; hts_init_htsblk(&retour); //memset(&retour, 0, sizeof(htsblk)); // effacer - // retour prédéfini: erreur + // retour prédéfini: erreur retour.adr=NULL; retour.size=0; retour.msg[0]='\0'; @@ -655,14 +655,14 @@ htsblk httpget(httrackp *opt,char* url) { return xhttpget(opt,adr,fil); } -// ouvre une liaison http, envoie une requète GET et réceptionne le header +// ouvre une liaison http, envoie une requète GET et réceptionne le header // retour: socket T_SOC http_fopen(httrackp *opt,char* adr,char* fil,htsblk* retour) { - // / GET, traiter en-tête + // / GET, traiter en-tête return http_xfopen(opt,0,1,1,NULL,adr,fil,retour); } -// ouverture d'une liaison http, envoi d'une requète +// ouverture d'une liaison http, envoi d'une requète // mode: 0 GET 1 HEAD [2 POST] // treat: traiter header? // waitconnect: attendre le connect() @@ -673,7 +673,7 @@ T_SOC http_xfopen(httrackp *opt,int mode,int treat,int waitconnect,char* xsend,c T_SOC soc=INVALID_SOCKET; //char *p,*q; - // retour prédéfini: erreur + // retour prédéfini: erreur if (retour) { retour->adr=NULL; retour->size=0; @@ -687,7 +687,7 @@ T_SOC http_xfopen(httrackp *opt,int mode,int treat,int waitconnect,char* xsend,c // ouvrir liaison #if HDEBUG - printf("Création d'une socket sur %s\n",adr); + printf("Création d'une socket sur %s\n",adr); #endif #if CNXDEBUG @@ -706,7 +706,7 @@ T_SOC http_xfopen(httrackp *opt,int mode,int treat,int waitconnect,char* xsend,c ) { /* pas de proxy, ou non utilisable ici */ soc=newhttp(opt,adr,retour,-1,waitconnect); } else { - soc=newhttp(opt, retour->req.proxy.name, retour,retour->req.proxy.port, waitconnect); // ouvrir sur le proxy à la place + soc=newhttp(opt, retour->req.proxy.name, retour,retour->req.proxy.port, waitconnect); // ouvrir sur le proxy à la place } } else { soc=newhttp(opt,adr,NULL,-1,waitconnect); @@ -785,10 +785,10 @@ T_SOC http_xfopen(httrackp *opt,int mode,int treat,int waitconnect,char* xsend,c char rcvd[1100]; rcvd[0]='\0'; #if HDEBUG - printf("Ok, connexion réussie, id=%d\n",soc); + printf("Ok, connexion réussie, id=%d\n",soc); #endif - // connecté? + // connecté? if (waitconnect) { http_sendhead(opt,NULL,mode,xsend,adr,fil,NULL,NULL,retour); } @@ -796,20 +796,20 @@ T_SOC http_xfopen(httrackp *opt,int mode,int treat,int waitconnect,char* xsend,c if (soc!=INVALID_SOCKET) { #if HDEBUG - printf("Attente de la réponse:\n"); + printf("Attente de la réponse:\n"); #endif - // si GET (réception d'un fichier), réceptionner en-tête d'abord, + // si GET (réception d'un fichier), réceptionner en-tête d'abord, // et ensuite le corps - // si POST on ne réceptionne rien du tout, c'est après que l'on fera - // une réception standard pour récupérer l'en tête - if ((treat) && (waitconnect)) { // traiter (attendre!) en-tête - // Réception de la status line et de l'en-tête (norme RFC1945) + // si POST on ne réceptionne rien du tout, c'est après que l'on fera + // une réception standard pour récupérer l'en tête + if ((treat) && (waitconnect)) { // traiter (attendre!) en-tête + // Réception de la status line et de l'en-tête (norme RFC1945) - // status-line à récupérer + // status-line à récupérer finput(soc,rcvd,1024); if (strnotempty(rcvd)==0) - finput(soc,rcvd,1024); // "certains serveurs buggés envoient un \n au début" (RFC) + finput(soc,rcvd,1024); // "certains serveurs buggés envoient un \n au début" (RFC) // traiter status-line treatfirstline(retour,rcvd); @@ -818,9 +818,9 @@ T_SOC http_xfopen(httrackp *opt,int mode,int treat,int waitconnect,char* xsend,c printf("Status-Code=%d\n",retour->statuscode); #endif - // en-tête + // en-tête - // header // ** !attention! HTTP/0.9 non supporté + // header // ** !attention! HTTP/0.9 non supporté do { finput(soc,rcvd,1024); #if HDEBUG @@ -836,8 +836,8 @@ T_SOC http_xfopen(httrackp *opt,int mode,int treat,int waitconnect,char* xsend,c //if (retour) // retour->totalsize=rcvsize; - } else { // si GET, on recevra l'en tête APRES - //rcvsize=-1; // on ne connait pas la taille de l'en-tête + } else { // si GET, on recevra l'en tête APRES + //rcvsize=-1; // on ne connait pas la taille de l'en-tête if (retour) retour->totalsize=-1; } @@ -850,10 +850,10 @@ T_SOC http_xfopen(httrackp *opt,int mode,int treat,int waitconnect,char* xsend,c } -// envoi d'une requète +// envoi d'une requète int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr,char* fil,char* referer_adr,char* referer_fil,htsblk* retour) { char BIGSTK buff[8192]; - //int use_11=0; // HTTP 1.1 utilisé + //int use_11=0; // HTTP 1.1 utilisé int direct_url=0; // ne pas analyser l'url (exemple: ftp://) char* search_tag=NULL; buff[0]='\0'; @@ -864,10 +864,10 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, //sendc("\n"); //strcatbuff(buff,buff); - // possibilité non documentée: >post: et >postfile: - // si présence d'un tag >post: alors executer un POST + // possibilité non documentée: >post: et >postfile: + // si présence d'un tag >post: alors executer un POST // exemple: http://www.someweb.com/test.cgi?foo>post:posteddata=10&foo=5 - // si présence d'un tag >postfile: alors envoyer en tête brut contenu dans le fichier en question + // si présence d'un tag >postfile: alors envoyer en tête brut contenu dans le fichier en question // exemple: http://www.someweb.com/test.cgi?foo>postfile:post0.txt search_tag=strstr(fil,POSTTOK":"); if (!search_tag) { @@ -898,7 +898,7 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, // Fin postfile if (strnotempty(buff)==0) { // PAS POSTFILE - // Type de requète? + // Type de requète? if ((search_tag) && (mode==0)) { strcatbuff(buff,"POST "); } else if (mode==0) { // GET @@ -910,7 +910,7 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, strcatbuff(buff,"HEAD "); } - // si on gère un proxy, il faut une Absolute URI: on ajoute avant http://www.adr.dom + // si on gère un proxy, il faut une Absolute URI: on ajoute avant http://www.adr.dom if ( retour->req.proxy.active && (strncmp(adr,"https://", 8) != 0) ) { if (!link_has_authority(adr)) { // default http #if HDEBUG @@ -928,7 +928,7 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, } // NOM DU FICHIER - // on slash doit être présent en début, sinon attention aux bad request! (400) + // on slash doit être présent en début, sinon attention aux bad request! (400) if (*fil!='/') strcatbuff(buff,"/"); { char BIGSTK tempo[HTS_URLMAXSIZE*2]; @@ -938,20 +938,20 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, else strcpybuff(tempo,fil); escape_check_url(tempo); - strcatbuff(buff,tempo); // avec échappement + strcatbuff(buff,tempo); // avec échappement } // protocole if (!retour->req.http11) { // forcer HTTP/1.0 //use_11=0; strcatbuff(buff," HTTP/1.0\x0d\x0a"); - } else { // Requète 1.1 + } else { // Requète 1.1 //use_11=1; strcatbuff(buff," HTTP/1.1\x0d\x0a"); } /* supplemental data */ - if (xsend) strcatbuff(buff,xsend); // éventuelles autres lignes + if (xsend) strcatbuff(buff,xsend); // éventuelles autres lignes // tester proxy authentication if (retour->req.proxy.active) { @@ -1036,7 +1036,7 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, b=cookie_nextfield(b); } } while( (b) && (max_cookies>0) && ((int)strlen(buff)<max_size)); - if (cook) { // on a envoyé un (ou plusieurs) cookie? + if (cook) { // on a envoyé un (ou plusieurs) cookie? strcatbuff(buff,H_CRLF); #if DEBUG_COOK printf("Header:\n%s\n",buff); @@ -1044,7 +1044,7 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, } } - // gérer le keep-alive (garder socket) + // gérer le keep-alive (garder socket) if (retour->req.http11 && !retour->req.nokeepalive) { strcatbuff(buff,"Connection: Keep-Alive"H_CRLF); } else { @@ -1068,7 +1068,7 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, strcatbuff(buff, H_CRLF); } - // Présence d'un user-agent? + // Présence d'un user-agent? if (retour->req.user_agent_send) { // ohh un user-agent char s[256]; // HyperTextSeeker/"HTSVERSION @@ -1136,10 +1136,10 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, //strcatbuff(buff,"Accept-Language: en\n"); //strcatbuff(buff,"Accept-Charset: iso-8859-1,*,utf-8\n"); - // CRLF de fin d'en tête + // CRLF de fin d'en tête strcatbuff(buff,H_CRLF); - // données complémentaires? + // données complémentaires? if (search_tag) if (mode==0) // GET! strcatbuff(buff,unescape_http(OPT_GET_BUFF(opt),search_tag+strlen(POSTTOK)+1)); @@ -1171,7 +1171,7 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, HTS_STAT.last_request = mtime_local(); if (sendc(retour, buff)<0) { // ERREUR, socket rompue?... //if (sendc(retour->soc,buff) != strlen(buff)) { // ERREUR, socket rompue?... - deletesoc_r(retour); // fermer tout de même + deletesoc_r(retour); // fermer tout de même // et tenter de reconnecter strcpybuff(retour->msg, "Write error"); @@ -1185,29 +1185,29 @@ int http_sendhead(httrackp *opt,t_cookie* cookie,int mode,char* xsend,char* adr, -// traiter 1ere ligne d'en tête +// traiter 1ere ligne d'en tête void treatfirstline(htsblk* retour,char* rcvd) { char* a=rcvd; // exemple: // HTTP/1.0 200 OK if (*a) { - // note: certains serveurs buggés renvoient HTTP/1.0\n200 OK ou " HTTP/1.0 200 OK" - while ((*a==' ') || (*a==10) || (*a==13) || (*a==9)) a++; // épurer espaces au début + // note: certains serveurs buggés renvoient HTTP/1.0\n200 OK ou " HTTP/1.0 200 OK" + while ((*a==' ') || (*a==10) || (*a==13) || (*a==9)) a++; // épurer espaces au début if (strfield(a, "HTTP/")) { // sauter HTTP/1.x while ((*a!=' ') && (*a!='\0') && (*a!=10) && (*a!=13) && (*a!=9)) a++; if (*a != '\0') { - while ((*a==' ') || (*a==10) || (*a==13) || (*a==9)) a++; // épurer espaces + while ((*a==' ') || (*a==10) || (*a==13) || (*a==9)) a++; // épurer espaces if ((*a>='0') && (*a<='9')) { sscanf(a,"%d",&(retour->statuscode)); // sauter 200 while ((*a!=' ') && (*a!='\0') && (*a!=10) && (*a!=13) && (*a!=9)) a++; - while ((*a==' ') || (*a==10) || (*a==13) || (*a==9)) a++; // épurer espaces + while ((*a==' ') || (*a==10) || (*a==13) || (*a==9)) a++; // épurer espaces if ((strlen(a) > 1) && (strlen(a) < 64) ) // message retour strcpybuff(retour->msg,a); else infostatuscode(retour->msg,retour->statuscode); - // type MIME par défaut2 + // type MIME par défaut2 strcpybuff(retour->contenttype,HTS_HYPERTEXT_DEFAULT_MIME); } else { // pas de code! retour->statuscode=STATUSCODE_INVALID; @@ -1247,13 +1247,13 @@ void treatfirstline(htsblk* retour,char* rcvd) { } } -// traiter ligne par ligne l'en tête +// traiter ligne par ligne l'en tête // gestion des cookies void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { int p; if ((p=strfield(rcvd,"Content-length:"))!=0) { #if HDEBUG - printf("ok, Content-length: détecté\n"); + printf("ok, Content-length: détecté\n"); #endif if (sscanf(rcvd+p,LLintP,&(retour->totalsize)) == 1) { if (retour->totalsize == 0) { @@ -1323,14 +1323,14 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { retour->is_chunk=1; // chunked //retour->http11=2; // chunked #if HDEBUG - printf("ok, Transfer-Encoding: détecté\n"); + printf("ok, Transfer-Encoding: détecté\n"); #endif } } else if ((p=strfield(rcvd,"Content-type:"))!=0) { if (retour) { char tempo[1100]; - // éviter les text/html; charset=foo + // éviter les text/html; charset=foo { char* a=strchr(rcvd+p,';'); if (a) { // extended information @@ -1506,8 +1506,8 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { do { char* start_loop=a; while(is_space(*a)) a++; // sauter espaces - token_st=a; // départ token - while((!is_space(*a)) && (*a) && (*a!=';') && (*a!='=')) a++; // arrêter si espace, point virgule + token_st=a; // départ token + while((!is_space(*a)) && (*a) && (*a!=';') && (*a!='=')) a++; // arrêter si espace, point virgule token_end=a; while(is_space(*a)) a++; // sauter espaces if (*a=='=') { // name=value @@ -1518,7 +1518,7 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { //while( ((*a!='"') || (*(a-1)=='\\')) && (*a)) a++; // prochain " (et pas \") value_end=a; //if (*a==';') { // finit par un ; - // vérifier débordements + // vérifier débordements if ( (((int) (token_end - token_st))<200) && (((int) (value_end - value_st))<8000) && (((int) (token_end - token_st))>0) && (((int) (value_end - value_st))>0) ) { @@ -1548,19 +1548,19 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { } } else if (strfield2(name,"max-age")) { - // ignoré.. + // ignoré.. } else if (strfield2(name,"expires")) { - // ignoré.. + // ignoré.. } else if (strfield2(name,"version")) { - // ignoré.. + // ignoré.. } else if (strfield2(name,"comment")) { - // ignoré + // ignoré } else if (strfield2(name,"secure")) { // ne devrait pas arriver ici - // ignoré + // ignoré } else { if (value_len < sizeof(cook_value) - 1 && name_len < sizeof(cook_name) - 1) { @@ -1568,7 +1568,7 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { strcpybuff(cook_name,name); strcpybuff(cook_value,value); } else { // prochain cookie - a=start_loop; // on devra recommencer à cette position + a=start_loop; // on devra recommencer à cette position next=1; // enregistrer } } else { @@ -1594,7 +1594,7 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { } -// transforme le message statuscode en chaîne +// transforme le message statuscode en chaîne HTSEXT_API void infostatuscode(char* msg,int statuscode) { switch( statuscode) { // Erreurs HTTP, selon RFC @@ -1645,7 +1645,7 @@ HTSEXT_API void infostatuscode(char* msg,int statuscode) { } -// identique au précédent, sauf que l'on donne adr+fil et non url complète +// identique au précédent, sauf que l'on donne adr+fil et non url complète htsblk xhttpget(httrackp *opt,char* adr,char* fil) { T_SOC soc; htsblk retour; @@ -1665,19 +1665,19 @@ htsblk xhttpget(httrackp *opt,char* adr,char* fil) { return retour; } -// variation sur un thème... -// réceptionne uniquement un en-tête (HEAD) -// retourne dans xx.adr l'adresse pointant sur le bloc de mémoire de l'en tête +// variation sur un thème... +// réceptionne uniquement un en-tête (HEAD) +// retourne dans xx.adr l'adresse pointant sur le bloc de mémoire de l'en tête htsblk http_gethead(httrackp *opt,char* adr,char* fil) { T_SOC soc; htsblk retour; hts_init_htsblk(&retour); //memset(&retour, 0, sizeof(htsblk)); - soc=http_xfopen(opt,1,0,1,NULL,adr,fil,&retour); // HEAD, pas de traitement en-tête + soc=http_xfopen(opt,1,0,1,NULL,adr,fil,&retour); // HEAD, pas de traitement en-tête if (soc!=INVALID_SOCKET) { - http_fread(soc,&retour); // réception en-tête + http_fread(soc,&retour); // réception en-tête #if HTS_DEBUG_CLOSESOCK DEBUG_W("http_gethead: deletehttp\n"); #endif @@ -1686,11 +1686,11 @@ htsblk http_gethead(httrackp *opt,char* adr,char* fil) { } return retour; } -// oui ca ressemble vachement à xhttpget - en étant sobre on peut voir LA différence.. +// oui ca ressemble vachement à xhttpget - en étant sobre on peut voir LA différence.. -// lecture sur une socket ouverte, le header a déja été envoyé dans le cas de GET -// il ne reste plus qu'à lire les données +// lecture sur une socket ouverte, le header a déja été envoyé dans le cas de GET +// il ne reste plus qu'à lire les données // (pour HEAD le header est lu ici!) void http_fread(T_SOC soc,htsblk* retour) { //int bufl=TAILLE_BUFFER; // 8Ko de buffer @@ -1707,7 +1707,7 @@ void http_fread(T_SOC soc,htsblk* retour) { } #if HDEBUG - printf("Ok, données reçues\n"); + printf("Ok, données reçues\n"); #endif return ; @@ -1766,12 +1766,12 @@ HTS_INLINE LLint http_fread1(htsblk* r) { return http_xfread1(r,TAILLE_BUFFER); } -// idem, sauf qu'ici on peut choisir la taille max de données à recevoir -// SI bufl==0 alors le buffer est censé être de 8kos, et on recoit par bloc de lignes -// en éliminant les cr (ex: header), arrêt si double-lf -// SI bufl==-1 alors le buffer est censé être de 8kos, et on recoit ligne par ligne -// en éliminant les cr (ex: header), arrêt si double-lf -// Note: les +1 dans les malloc sont dûs à l'octet nul rajouté en fin de fichier +// idem, sauf qu'ici on peut choisir la taille max de données à recevoir +// SI bufl==0 alors le buffer est censé être de 8kos, et on recoit par bloc de lignes +// en éliminant les cr (ex: header), arrêt si double-lf +// SI bufl==-1 alors le buffer est censé être de 8kos, et on recoit ligne par ligne +// en éliminant les cr (ex: header), arrêt si double-lf +// Note: les +1 dans les malloc sont dûs à l'octet nul rajouté en fin de fichier LLint http_xfread1(htsblk* r,int bufl) { int nl=-1; @@ -1781,8 +1781,8 @@ LLint http_xfread1(htsblk* r,int bufl) { } if (bufl>0) { - if (!r->is_write) { // stocker en mémoire - if (r->totalsize>=0) { // totalsize déterminé ET ALLOUE + if (!r->is_write) { // stocker en mémoire + if (r->totalsize>=0) { // totalsize déterminé ET ALLOUE if (r->adr==NULL) { r->adr = (char*) malloct((size_t) r->totalsize + 1); r->size = 0; @@ -1799,11 +1799,11 @@ LLint http_xfread1(htsblk* r,int bufl) { nl = -1; // break */ - r->adr[r->size]='\0'; // caractère NULL en fin au cas où l'on traite des HTML + r->adr[r->size]='\0'; // caractère NULL en fin au cas où l'on traite des HTML } } else { // inconnu.. - // réserver de la mémoire? + // réserver de la mémoire? if (r->adr==NULL) { #if HDEBUG printf("..alloc xfread\n"); @@ -1862,7 +1862,7 @@ LLint http_xfread1(htsblk* r,int bufl) { //if ((nl < 0) || ((r->totalsize>0) && (r->size >= r->totalsize))) // nl=-1; // break - // libérer bloc tempo + // libérer bloc tempo freet(buff); } else nl=READ_ERROR; @@ -1872,7 +1872,7 @@ LLint http_xfread1(htsblk* r,int bufl) { } - } // stockage disque ou mémoire + } // stockage disque ou mémoire } else if (bufl == -2) { // force reserve if (r->adr==NULL) { @@ -1881,7 +1881,7 @@ LLint http_xfread1(htsblk* r,int bufl) { return 0; } return -1; - } else { // réception d'un en-tête octet par octet + } else { // réception d'un en-tête octet par octet int count=256; int tot_nl=0; int lf_detected=0; @@ -1907,7 +1907,7 @@ LLint http_xfread1(htsblk* r,int bufl) { count=-1; lf_detected=1; } - if (*(r->adr+r->size) != 13) { // sauter caractères 13 + if (*(r->adr+r->size) != 13) { // sauter caractères 13 if ( (*(r->adr+r->size) != 10) && @@ -1942,9 +1942,9 @@ LLint http_xfread1(htsblk* r,int bufl) { } -// teste une adresse, et suit l'éventuel chemin "moved" +// teste une adresse, et suit l'éventuel chemin "moved" // retourne 200 ou le code d'erreur (404=NOT FOUND, etc) -// copie dans loc la véritable adresse si celle-ci est différente +// copie dans loc la véritable adresse si celle-ci est différente htsblk http_location(httrackp *opt,char* adr,char* fil,char* loc) { htsblk retour; int retry=0; @@ -1972,10 +1972,10 @@ htsblk http_location(httrackp *opt,char* adr,char* fil,char* loc) { } -// teste si une URL (validité, header, taille) +// teste si une URL (validité, header, taille) // retourne 200 ou le code d'erreur (404=NOT FOUND, etc) // en cas de moved xx, dans location -// abandonne désormais au bout de 30 secondes (aurevoir les sites +// abandonne désormais au bout de 30 secondes (aurevoir les sites // qui nous font poireauter 5 heures..) -> -2=timeout htsblk http_test(httrackp *opt,char* adr,char* fil,char* loc) { T_SOC soc; @@ -1992,16 +1992,16 @@ htsblk http_test(httrackp *opt,char* adr,char* fil,char* loc) { loc[0]='\0'; hts_init_htsblk(&retour); //memset(&retour, 0, sizeof(htsblk)); // effacer - retour.location=loc; // si non nul, contiendra l'adresse véritable en cas de moved xx + retour.location=loc; // si non nul, contiendra l'adresse véritable en cas de moved xx //soc=http_fopen(adr,fil,&retour,NULL); // ouvrir, + header - // on ouvre en head, et on traite l'en tête + // on ouvre en head, et on traite l'en tête soc=http_xfopen(opt,1,0,1,NULL,adr,fil,&retour); // ouvrir HEAD, + envoi header if (soc!=INVALID_SOCKET) { int e=0; - // tant qu'on a des données, et qu'on ne recoit pas deux LF, et que le timeout n'arrie pas + // tant qu'on a des données, et qu'on ne recoit pas deux LF, et que le timeout n'arrie pas do { if (http_xfread1(&retour,0) < 0) e=1; @@ -2030,11 +2030,11 @@ htsblk http_test(httrackp *opt,char* adr,char* fil,char* loc) { // ---------------------------------------- - // traiter en-tête! - // status-line à récupérer + // traiter en-tête! + // status-line à récupérer ptr+=binput(retour.adr+ptr,rcvd,1024); if (strnotempty(rcvd)==0) - ptr+=binput(retour.adr+ptr,rcvd,1024); // "certains serveurs buggés envoient un \n au début" (RFC) + ptr+=binput(retour.adr+ptr,rcvd,1024); // "certains serveurs buggés envoient un \n au début" (RFC) // traiter status-line treatfirstline(&retour,rcvd); @@ -2043,9 +2043,9 @@ htsblk http_test(httrackp *opt,char* adr,char* fil,char* loc) { printf("(Buffer) Status-Code=%d\n",retour.statuscode); #endif - // en-tête + // en-tête - // header // ** !attention! HTTP/0.9 non supporté + // header // ** !attention! HTTP/0.9 non supporté do { ptr+=binput(retour.adr+ptr,rcvd,1024); #if HDEBUG @@ -2057,7 +2057,7 @@ htsblk http_test(httrackp *opt,char* adr,char* fil,char* loc) { } while(strnotempty(rcvd)); // ---------------------------------------- - // libérer mémoire + // libérer mémoire if (retour.adr!=NULL) { freet(retour.adr); retour.adr=NULL; } } } else { @@ -2075,7 +2075,7 @@ htsblk http_test(httrackp *opt,char* adr,char* fil,char* loc) { return retour; } -// Crée un lien (http) vers une adresse internet iadr +// Crée un lien (http) vers une adresse internet iadr // retour: structure (adresse, taille, message si erreur (si !adr)) // peut ouvrir avec des connect() non bloquants: waitconnect=0/1 T_SOC newhttp(httrackp *opt,const char* _iadr,htsblk* retour,int port,int waitconnect) { @@ -2095,23 +2095,23 @@ T_SOC newhttp(httrackp *opt,const char* _iadr,htsblk* retour,int port,int waitco // effacer structure memset(&server, 0, sizeof(server)); - // tester un éventuel id:pass et virer id:pass@ si détecté + // tester un éventuel id:pass et virer id:pass@ si détecté iadr = jump_identification(_iadr); #if HDEBUG printf("gethostbyname\n"); #endif - // tester un éventuel port + // tester un éventuel port if (port==-1) { char *a=jump_toport(iadr); #if HTS_USEOPENSSL if (retour->ssl) port=443; else - port=80; // port par défaut + port=80; // port par défaut #else - port=80; // port par défaut + port=80; // port par défaut #endif if (a) { char BIGSTK iadr2[HTS_URLMAXSIZE*2]; @@ -2122,7 +2122,7 @@ T_SOC newhttp(httrackp *opt,const char* _iadr,htsblk* retour,int port,int waitco port=(unsigned short int) i; } - // adresse véritable (sans :xx) + // adresse véritable (sans :xx) strncatbuff(iadr2,iadr,(int) (a - iadr)); // adresse sans le :xx @@ -2130,17 +2130,17 @@ T_SOC newhttp(httrackp *opt,const char* _iadr,htsblk* retour,int port,int waitco } else { - // adresse normale (port par défaut par la suite) + // adresse normale (port par défaut par la suite) hp = hts_gethostbyname(opt,iadr, &fullhostent_buffer); } - } else // port défini + } else // port défini hp = hts_gethostbyname(opt,iadr, &fullhostent_buffer); // Conversion iadr -> adresse - // structure recevant le nom de l'hôte, etc + // structure recevant le nom de l'hôte, etc //struct hostent *hp; if (hp == NULL) { #if DEBUG @@ -2164,7 +2164,7 @@ T_SOC newhttp(httrackp *opt,const char* _iadr,htsblk* retour,int port,int waitco SOCaddr_copyaddr(retour->address, retour->address_size, hp->h_addr_list[0], hp->h_length); // memcpy(&SOCaddr_sinaddr(server), hp->h_addr_list[0], hp->h_length); - // créer ("attachement") une socket (point d'accès) internet,en flot + // créer ("attachement") une socket (point d'accès) internet,en flot #if HDEBUG printf("socket\n"); #endif @@ -2188,7 +2188,7 @@ T_SOC newhttp(httrackp *opt,const char* _iadr,htsblk* retour,int port,int waitco sprintf(retour->msg,"Unable to create a socket: %s", strerror(last_errno)); #endif } - return INVALID_SOCKET; // erreur création socket impossible + return INVALID_SOCKET; // erreur création socket impossible } // bind this address @@ -2227,7 +2227,7 @@ T_SOC newhttp(httrackp *opt,const char* _iadr,htsblk* retour,int port,int waitco #endif } - // Connexion au serveur lui même + // Connexion au serveur lui même #if HDEBUG printf("connect\n"); #endif @@ -2266,18 +2266,18 @@ T_SOC newhttp(httrackp *opt,const char* _iadr,htsblk* retour,int port,int waitco #endif #if HDEBUG - printf("connexion établie\n"); + printf("connexion établie\n"); #endif - // A partir de maintenant, on peut envoyer et recevoir des données - // via le flot identifié par soc (socket): write(soc,adr,taille) et + // A partir de maintenant, on peut envoyer et recevoir des données + // via le flot identifié par soc (socket): write(soc,adr,taille) et // read(soc,adr,taille) } else { // on doit ouvrir un fichier local! - // il sera géré de la même manière qu'une socket (c'est idem!) + // il sera géré de la même manière qu'une socket (c'est idem!) soc=LOCAL_SOCKET_ID; // pseudo-socket locale.. - // soc sera remplacé lors d'un http_fopen() par un handle véritable! + // soc sera remplacé lors d'un http_fopen() par un handle véritable! } // teste fichier local ou http @@ -2342,7 +2342,7 @@ int ident_url_absolute(const char* url,char* adr,char* fil) { const char *p,*q; p=url+pos; - // p pointe sur le début de l'adresse, ex: www.truc.fr/sommaire/index.html + // p pointe sur le début de l'adresse, ex: www.truc.fr/sommaire/index.html q=strchr(jump_identification(p),'/'); if (q==0) q=strchr(jump_identification(p),'?'); // http://www.foo.com?bar=1 if (q==0) q=p+strlen(p); // pointe sur \0 @@ -2356,9 +2356,9 @@ int ident_url_absolute(const char* url,char* adr,char* fil) { // recopier adresse www.. strncatbuff(adr,p, ((int) (q - p)) ); - // *( adr+( ((int) q) - ((int) p) ) )=0; // faut arrêter la fumette! + // *( adr+( ((int) q) - ((int) p) ) )=0; // faut arrêter la fumette! // recopier chemin /pub/.. - if (q[0] != '/') // page par défaut (/) + if (q[0] != '/') // page par défaut (/) strcatbuff(fil,"/"); strcatbuff(fil,q); // SECURITE: @@ -2383,7 +2383,7 @@ int ident_url_absolute(const char* url,char* adr,char* fil) { a=strchr(fil,'?'); if (a) - *a='\0'; /* couper query (inutile pour file:// lors de la requête) */ + *a='\0'; /* couper query (inutile pour file:// lors de la requête) */ // filtrer les \\ -> / pour les fichiers DOS for(i=0;i<(int) strlen(fil);i++) if (fil[i]=='\\') @@ -2394,7 +2394,7 @@ int ident_url_absolute(const char* url,char* adr,char* fil) { if (!strnotempty(adr)) return -1; // erreur non reconnu - // nommer au besoin.. (non utilisé normalement) + // nommer au besoin.. (non utilisé normalement) if (!strnotempty(fil)) strcpybuff(fil,"default-index.html"); @@ -2646,7 +2646,7 @@ struct tm* convert_time_rfc822(struct tm *result, const char* s) { return NULL; strcpybuff(str,s); hts_lowcase(str); - /* éliminer :,- */ + /* éliminer :,- */ while( (a=strchr(str,'-')) ) *a=' '; while( (a=strchr(str,':')) ) *a=' '; while( (a=strchr(str,',')) ) *a=' '; @@ -2655,7 +2655,7 @@ struct tm* convert_time_rfc822(struct tm *result, const char* s) { while(*a) { char *first,*last; char tok[256]; - /* découper mot */ + /* découper mot */ while(*a==' ') a++; /* sauter espaces */ first=a; while((*a) && (*a!=' ')) a++; @@ -2804,7 +2804,7 @@ HTSEXT_API char* int2char(strc_int2bytes2* strc, int n) { return strc->buff2; } -// conversion en b,Kb,Mb, nombre et type séparés +// conversion en b,Kb,Mb, nombre et type séparés // limite: 2.10^9.10^6B /* See http://physics.nist.gov/cuu/Units/binary.html */ @@ -2860,7 +2860,7 @@ int sig_ignore_flag( int setflag ) { // flag ignore } #endif -// envoi de texte (en têtes généralement) sur la socket soc +// envoi de texte (en têtes généralement) sur la socket soc HTS_INLINE int sendc(htsblk* r, const char* s) { int n, ssz = (int)strlen(s); @@ -2900,7 +2900,7 @@ int finput(int fd,char* s,int max) { if (c!=0) { switch(c) { case 10: c=0; break; - case 13: break; // sauter ces caractères + case 13: break; // sauter ces caractères default: s[j++]=c; break; } } @@ -2927,7 +2927,7 @@ int binput(char* buff, char* s, int max) { return count + 1; } -// Lecture d'une ligne (peut être unicode à priori) +// Lecture d'une ligne (peut être unicode à priori) int linput(FILE* fp,char* s,int max) { int c; int j=0; @@ -2937,7 +2937,7 @@ int linput(FILE* fp,char* s,int max) { switch(c) { case 13: break; // sauter CR case 10: c=-1; break; - case 9: case 12: break; // sauter ces caractères + case 9: case 12: break; // sauter ces caractères default: s[j++]=(char) c; break; } } @@ -2959,7 +2959,7 @@ int linputsoc(T_SOC soc, char* s, int max) { switch(c) { case 13: break; // sauter CR case 10: c=-1; break; - case 9: case 12: break; // sauter ces caractères + case 9: case 12: break; // sauter ces caractères default: s[j++]=(char) c; break; } } @@ -2985,7 +2985,7 @@ int linput_trim(FILE* fp,char* s,int max) { // sauter espaces et tabs en fin while( (rlen>0) && ((ls[max(rlen-1,0)]==' ') || (ls[max(rlen-1,0)]=='\t')) ) ls[--rlen]='\0'; - // sauter espaces en début + // sauter espaces en début a=ls; while((rlen>0) && ((*a==' ') || (*a=='\t'))) { a++; @@ -3017,7 +3017,7 @@ int linput_cpp(FILE* fp,char* s,int max) { return rlen; } -// idem avec les car spéciaux +// idem avec les car spéciaux void rawlinput(FILE* fp,char* s,int max) { int c; int j=0; @@ -3184,7 +3184,7 @@ int ishtml(httrackp *opt,const char* fil) { } } return ret; - } else return -2; // indéterminé, par exemple /truc + } else return -2; // indéterminé, par exemple /truc } // idem, mais pour uniquement l'extension @@ -3200,7 +3200,7 @@ int ishtml_ext(const char* a) { else if (strfield2(a,"phtm")) html = 1; else if (strfield2(a,"htmx")) html = 1; // - // insuccès.. + // insuccès.. else { #if 1 html = -1; // inconnu.. @@ -3239,7 +3239,7 @@ HTSEXT_API char* jump_identification(const char* source) { if (strcmp(source, "file://") == 0) return (char*) source; // rechercher dernier @ (car parfois email transmise dans adresse!) - // mais sauter ftp:// éventuel + // mais sauter ftp:// éventuel a = jump_protocol(source); trytofind = strrchr_limit(a, '@', strchr(a,'/')); return (char*) ( (trytofind != NULL) ? trytofind : a ); @@ -3726,7 +3726,7 @@ HTSEXT_API char* unescape_http(char *catbuff, const char* s) { if (s[i]=='%') { i++; catbuff[j++]=(char) ehex(s+i); - i++; // sauter 2 caractères finalement + i++; // sauter 2 caractères finalement } /* NON a cause de trucs comme /home/0,1837,1|7|1173|Content,00.html @@ -3856,12 +3856,12 @@ HTSEXT_API void x_escape_http(char* s,int mode) { } else if (mode==2) test=(*s == ' '); // n'escaper que espace - else if (mode==3) { // échapper que ce qui est nécessaire + else if (mode==3) { // échapper que ce qui est nécessaire test = ( CHAR_SPECIAL(*s) || CHAR_XXAVOID(*s) ); } - else if (mode==30) { // échapper que ce qui est nécessaire + else if (mode==30) { // échapper que ce qui est nécessaire test = ( *s != '/' && CHAR_RESERVED(*s) ) || CHAR_DELIM(*s) @@ -3910,8 +3910,8 @@ HTSEXT_API void escape_for_html_print_full(char* s, char* d) { *d = '\0'; } -// concat, concatène deux chaines et renvoi le résultat -// permet d'alléger grandement le code +// concat, concatène deux chaines et renvoi le résultat +// permet d'alléger grandement le code // il faut savoir qu'on ne peut mettre plus de 16 concat() dans une expression HTSEXT_API char* concat(char *catbuff,const char* a,const char* b) { if (a != NULL && a[0] != '\0') { @@ -3969,7 +3969,7 @@ void hts_lowcase(char* s) { s[i]+=('a'-'A'); } -// remplacer un caractère d'une chaîne dans une autre +// remplacer un caractère d'une chaîne dans une autre HTS_INLINE void hts_replace(char *s,char from,char to) { char* a; while ((a=strchr(s,from))!=NULL) { @@ -3978,7 +3978,7 @@ HTS_INLINE void hts_replace(char *s,char from,char to) { } -// caractère espace, guillemets, CR, LF etc.. +// caractère espace, guillemets, CR, LF etc.. /* SECTION OPTIMISEE: #define is_space(c) (strchr(" \"\x0d\x0a\x09'",c)!=NULL) #define is_realspace(c) (strchr(" \x0d\x0a\x09\x0c",c)!=NULL) @@ -3996,7 +3996,7 @@ HTS_INLINE int is_space(char c) { } */ -// caractère espace, CR, LF, TAB +// caractère espace, CR, LF, TAB /* HTS_INLINE int is_realspace(char c) { if (c==' ') return 1; // spc @@ -4268,16 +4268,16 @@ HTSEXT_API int is_dyntype(const char *fil) { return 0; } -// types critiques qui ne doivent pas être changés car renvoyés par des serveurs qui ne +// types critiques qui ne doivent pas être changés car renvoyés par des serveurs qui ne // connaissent pas le type int may_unknown(httrackp *opt,const char* st) { int j=0; - // types média + // types média if (may_be_hypertext_mime(opt,st, "")) { return 1; } while(strnotempty(hts_mime_keep[j])) { - if (strfield2(hts_mime_keep[j],st)) { // trouvé + if (strfield2(hts_mime_keep[j],st)) { // trouvé return 1; } j++; @@ -4543,7 +4543,7 @@ int hts_read(htsblk* r,char* buff,int size) { if (r->soc==INVALID_SOCKET) printf("!!WIDE_DEBUG ERROR, soc==INVALID hts_read\n"); #endif - //HTS_TOTAL_RECV_CHECK(size); // Diminuer au besoin si trop de données reçues + //HTS_TOTAL_RECV_CHECK(size); // Diminuer au besoin si trop de données reçues #if HTS_USEOPENSSL if (SSL_is_available && r->ssl) { retour = SSL_read(r->ssl_con, buff, size); @@ -4611,38 +4611,38 @@ void hts_cache_free(t_dnscache* cache) { } } -// lock le cache dns pour tout opération d'ajout -// plus prudent quand plusieurs threads peuvent écrire dedans.. -// -1: status? 0: libérer 1:locker +// lock le cache dns pour tout opération d'ajout +// plus prudent quand plusieurs threads peuvent écrire dedans.. +// -1: status? 0: libérer 1:locker /* Simple lock for cache */ htsmutex dns_lock = HTSMUTEX_INIT; -// routine pour le cache - retour optionnel à donner à chaque fois -// NULL: nom non encore testé dans le cache +// routine pour le cache - retour optionnel à donner à chaque fois +// NULL: nom non encore testé dans le cache // si h_length==0 alors le nom n'existe pas dans le dns t_hostent* _hts_ghbn(t_dnscache* cache,const char* iadr,t_hostent* retour) { t_hostent* ret = NULL; hts_mutexlock(&dns_lock); for(;;) { - if (strcmp(cache->iadr,iadr) == 0) { // ok trouvé - if (cache->host_length > 0) { // entrée valide + if (strcmp(cache->iadr,iadr) == 0) { // ok trouvé + if (cache->host_length > 0) { // entrée valide if (retour->h_addr_list[0]) memcpy(retour->h_addr_list[0], cache->host_addr, cache->host_length); retour->h_length=cache->host_length; } else if (cache->host_length == 0) { // en cours ret = NULL; break; - } else { // erreur dans le dns, déja vérifié + } else { // erreur dans le dns, déja vérifié if (retour->h_addr_list[0]) retour->h_addr_list[0][0]='\0'; retour->h_length=0; // erreur, n'existe pas } ret = retour; break; - } else { // on a pas encore trouvé + } else { // on a pas encore trouvé if (cache->n!=NULL) { // chercher encore cache = cache->n; // suivant! } else { @@ -4655,18 +4655,18 @@ t_hostent* _hts_ghbn(t_dnscache* cache,const char* iadr,t_hostent* retour) { return ret; } -// tester si iadr a déja été testé (ou en cours de test) +// tester si iadr a déja été testé (ou en cours de test) // 0 non encore // 1 ok -// 2 non présent +// 2 non présent int hts_dnstest(httrackp *opt, const char* _iadr) { int ret = 0; t_dnscache* cache=_hts_cache(opt); // adresse du cache char iadr[HTS_URLMAXSIZE*2]; - // sauter user:pass@ éventuel + // sauter user:pass@ éventuel strcpybuff(iadr, jump_identification(_iadr)); - // couper éventuel : + // couper éventuel : { char *a; if ( (a = jump_toport(iadr)) ) @@ -4674,22 +4674,22 @@ int hts_dnstest(httrackp *opt, const char* _iadr) { } #ifdef _WIN32 - if (inet_addr(iadr)!=INADDR_NONE) // numérique + if (inet_addr(iadr)!=INADDR_NONE) // numérique #else - if (inet_addr(iadr)!=(in_addr_t) -1 ) // numérique + if (inet_addr(iadr)!=(in_addr_t) -1 ) // numérique #endif return 1; hts_mutexlock(&dns_lock); for(;;) { - if (strcmp(cache->iadr, iadr)==0) { // ok trouvé + if (strcmp(cache->iadr, iadr)==0) { // ok trouvé ret = 1; break; - } else { // on a pas encore trouvé + } else { // on a pas encore trouvé if (cache->n!=NULL) { // chercher encore cache=cache->n; // suivant! } else { - ret = 2; // non présent + ret = 2; // non présent break ; } } @@ -4772,7 +4772,7 @@ HTSEXT_API t_hostent* vxgethostbyname(char* hostname, void* v_buffer) { return NULL; } -// cache dns interne à HTS // ** FREE A FAIRE sur la chaine +// cache dns interne à HTS // ** FREE A FAIRE sur la chaine t_hostent* hts_gethostbyname(httrackp *opt,const char* _iadr, void* v_buffer) { char BIGSTK iadr[HTS_URLMAXSIZE*2]; t_fullhostent* buffer = (t_fullhostent*) v_buffer; @@ -4783,14 +4783,14 @@ t_hostent* hts_gethostbyname(httrackp *opt,const char* _iadr, void* v_buffer) { fullhostent_init(buffer); strcpybuff(iadr,jump_identification(_iadr)); - // couper éventuel : + // couper éventuel : { char *a; if ( (a=jump_toport(iadr)) ) *a='\0'; } - // effacer structure de retour, créer nouvelle + // effacer structure de retour, créer nouvelle /* memset(&host, 0, sizeof(t_hostent)); host.h_addr_list=he; @@ -4807,8 +4807,8 @@ t_hostent* hts_gethostbyname(httrackp *opt,const char* _iadr, void* v_buffer) { if (hp->h_length>0) return hp; else - return NULL; // entrée erronée (erreur DNS) dans le DNS - } else { // non présent dans le cache dns, tester + return NULL; // entrée erronée (erreur DNS) dans le DNS + } else { // non présent dans le cache dns, tester t_dnscache* c=cache; while(c->n) c=c->n; // calculer queue @@ -4829,7 +4829,7 @@ t_hostent* hts_gethostbyname(httrackp *opt,const char* _iadr, void* v_buffer) { printf("resolving (not cached) %s\n",iadr); #endif hp=vxgethostbyname(iadr, buffer); // calculer IP host - } else { // numérique, convertir sans passer par le dns + } else { // numérique, convertir sans passer par le dns buffer->hp.h_addr_list[0]=(char*) &inetaddr; buffer->hp.h_length=4; hp=&buffer->hp; @@ -4850,7 +4850,7 @@ t_hostent* hts_gethostbyname(httrackp *opt,const char* _iadr, void* v_buffer) { } cache->n->n=NULL; return hp; - } else { // on peut pas noter, mais on peut renvoyer le résultat + } else { // on peut pas noter, mais on peut renvoyer le résultat return hp; } } // retour hp du cache @@ -5360,12 +5360,12 @@ HTSEXT_API httrackp *hts_create_opt(void) { opt->wizard=2; // wizard automatique opt->quiet=0; // questions // - opt->travel=0; // même adresse - opt->depth=9999; // mirror total par défaut - opt->extdepth=0; // mais pas à l'extérieur + opt->travel=0; // même adresse + opt->depth=9999; // mirror total par défaut + opt->extdepth=0; // mais pas à l'extérieur opt->seeker=1; // down - opt->urlmode=2; // relatif par défaut - opt->debug=0; // pas de débug en plus + opt->urlmode=2; // relatif par défaut + opt->debug=0; // pas de débug en plus opt->getmode=3; // linear scan opt->maxsite=-1; // taille max site (aucune) opt->maxfile_nonhtml=-1; // taille max fichier non html @@ -5379,7 +5379,7 @@ HTSEXT_API httrackp *hts_create_opt(void) { opt->background_on_suspend=1; // Background the process if Control Z calls signal suspend. opt->makestat=0; // pas de fichier de stats opt->maketrack=0; // ni de tracking - opt->timeout=120; // timeout par défaut (2 minutes) + opt->timeout=120; // timeout par défaut (2 minutes) opt->cache=1; // cache prioritaire opt->shell=0; // pas de shell par defaut opt->proxy.active=0; // pas de proxy @@ -5387,31 +5387,31 @@ HTSEXT_API httrackp *hts_create_opt(void) { StringCopy(opt->user_agent, "Mozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)"); StringCopy(opt->referer, ""); StringCopy(opt->from, ""); - opt->savename_83=0; // noms longs par défaut + opt->savename_83=0; // noms longs par défaut opt->savename_type=0; // avec structure originale opt->savename_delayed=2;// hard delayed type (default) opt->delayed_cached=1; // cached delayed type (default) opt->mimehtml=0; // pas MIME-html opt->parsejava=HTSPARSE_DEFAULT; // parser classes opt->hostcontrol=0; // PAS de control host pour timeout et traffic jammer - opt->retry=2; // 2 retry par défaut - opt->errpage=1; // copier ou générer une page d'erreur en cas d'erreur (404 etc.) - opt->check_type=1; // vérifier type si inconnu (cgi,asp..) SAUF / considéré comme html + opt->retry=2; // 2 retry par défaut + opt->errpage=1; // copier ou générer une page d'erreur en cas d'erreur (404 etc.) + opt->check_type=1; // vérifier type si inconnu (cgi,asp..) SAUF / considéré comme html opt->all_in_cache=0; // ne pas tout stocker en cache opt->robots=2; // traiter les robots.txt opt->external=0; // liens externes normaux opt->passprivacy=0; // mots de passe dans les fichiers - opt->includequery=1; // include query-string par défaut + opt->includequery=1; // include query-string par défaut opt->mirror_first_page=0; // pas mode mirror links - opt->accept_cookie=1; // gérer les cookies + opt->accept_cookie=1; // gérer les cookies opt->cookie=NULL; opt->http10=0; // laisser http/1.1 opt->nokeepalive = 0; // pas keep-alive opt->nocompression=0; // pas de compression opt->tolerant=0; // ne pas accepter content-length incorrect opt->parseall=1; // tout parser (tags inconnus, par exemple) - opt->parsedebug=0; // pas de mode débuggage - opt->norecatch=0; // ne pas reprendre les fichiers effacés par l'utilisateur + opt->parsedebug=0; // pas de mode débuggage + opt->norecatch=0; // ne pas reprendre les fichiers effacés par l'utilisateur opt->verbosedisplay=0; // pas d'animation texte opt->sizehack=0; // size hack opt->urlhack=1; // url hack (normalizer) @@ -5435,14 +5435,14 @@ HTSEXT_API httrackp *hts_create_opt(void) { StringCopy(opt->path_bin,""); // #if HTS_SPARE_MEMORY==0 - opt->maxlink=100000; // 100,000 liens max par défaut (400Kb) - opt->maxfilter=200; // 200 filtres max par défaut + opt->maxlink=100000; // 100,000 liens max par défaut (400Kb) + opt->maxfilter=200; // 200 filtres max par défaut #else - opt->maxlink=10000; // 10,000 liens max par défaut (40Kb) - opt->maxfilter=50; // 50 filtres max par défaut + opt->maxlink=10000; // 10,000 liens max par défaut (40Kb) + opt->maxfilter=50; // 50 filtres max par défaut #endif - opt->maxcache=1048576*32; // a peu près 32Mo en cache max -- OPTION NON PARAMETRABLE POUR L'INSTANT -- - //opt->maxcache_anticipate=256; // maximum de liens à anticiper + opt->maxcache=1048576*32; // a peu près 32Mo en cache max -- OPTION NON PARAMETRABLE POUR L'INSTANT -- + //opt->maxcache_anticipate=256; // maximum de liens à anticiper opt->maxtime=-1; // temps max en secondes #if HTS_USEMMS opt->mms_maxtime = 60*3600; // max time for mms streams (one hour) @@ -5579,7 +5579,7 @@ static int __cdecl htsdefault_postprocesshtml(t_hts_callbackarg *carg, httrackp static int __cdecl htsdefault_checkhtml(t_hts_callbackarg *carg, httrackp *opt, char* html,int len,const char* url_adresse,const char* url_fichier) { return 1; } -static int __cdecl htsdefault_loop(t_hts_callbackarg *carg, httrackp *opt, lien_back* back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats) { // appelé à chaque boucle de HTTrack +static int __cdecl htsdefault_loop(t_hts_callbackarg *carg, httrackp *opt, lien_back* back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats) { // appelé à chaque boucle de HTTrack return 1; } static const char* __cdecl htsdefault_query(t_hts_callbackarg *carg, httrackp *opt, const char* question) { diff --git a/src/htslib.h b/src/htslib.h index cb93367..8cfece7 100644 --- a/src/htslib.h +++ b/src/htslib.h @@ -53,7 +53,7 @@ typedef struct htsblk htsblk; typedef struct t_dnscache t_dnscache; #endif -/* définitions globales */ +/* définitions globales */ #include "htsglobal.h" /* basic net definitions */ @@ -71,8 +71,8 @@ typedef struct t_dnscache t_dnscache; /* cookies et auth */ #include "htsbauth.h" -// Attention, définition existante également dans le shell -// (à modifier avec celle-ci) +// Attention, définition existante également dans le shell +// (à modifier avec celle-ci) #define POSTTOK "?>post" #include "htsopt.h" @@ -97,7 +97,7 @@ MSVC2003INLINEBUG HTS_STATIC char* getHtsOptBuff_(httrackp *opt) { #undef MSVC2003INLINEBUG #define OPT_GET_BUFF(OPT) ( getHtsOptBuff_(OPT) ) -// structure pour paramètres supplémentaires lors de la requête +// structure pour paramètres supplémentaires lors de la requête #ifndef HTS_DEF_FWSTRUCT_htsrequest_proxy #define HTS_DEF_FWSTRUCT_htsrequest_proxy typedef struct htsrequest_proxy htsrequest_proxy; @@ -114,9 +114,9 @@ typedef struct htsrequest htsrequest; #endif struct htsrequest { short int user_agent_send; // user agent (ex: httrack/1.0 [sun]) - short int http11; // l'en tête peut (doit) être signé HTTP/1.1 et non HTTP/1.0 + short int http11; // l'en tête peut (doit) être signé HTTP/1.1 et non HTTP/1.0 short int nokeepalive; // pas de keep-alive - short int range_used; // Range utilisé + short int range_used; // Range utilisé short int nocompression; // Pas de compression short int flush_garbage; // recycled char user_agent[128]; @@ -127,32 +127,32 @@ struct htsrequest { }; -// structure pour retour d'une connexion/prise d'en tête +// structure pour retour d'une connexion/prise d'en tête #ifndef HTS_DEF_FWSTRUCT_htsblk #define HTS_DEF_FWSTRUCT_htsblk typedef struct htsblk htsblk; #endif struct htsblk { int statuscode; // status-code, -1=erreur, 200=OK,201=..etc (cf RFC1945) - short int notmodified; // page ou fichier NON modifié (transféré) - short int is_write; // sortie sur disque (out) ou en mémoire (adr) + short int notmodified; // page ou fichier NON modifié (transféré) + short int is_write; // sortie sur disque (out) ou en mémoire (adr) short int is_chunk; // mode chunk - short int compressed; // compressé? + short int compressed; // compressé? short int empty; // vide? short int keep_alive; // Keep-Alive? short int keep_alive_trailers; // ..with trailers extension int keep_alive_t; // KA timeout int keep_alive_max; // KA number of requests - char* adr; // adresse du bloc de mémoire, NULL=vide - char* headers; // adresse des en têtes si présents - FILE* out; // écriture directe sur disque (si is_write=1) + char* adr; // adresse du bloc de mémoire, NULL=vide + char* headers; // adresse des en têtes si présents + FILE* out; // écriture directe sur disque (si is_write=1) LLint size; // taille fichier - char msg[80]; // message éventuel si échec ("\0"=non précisé) + char msg[80]; // message éventuel si échec ("\0"=non précisé) char contenttype[64]; // content-type ("text/html" par exemple) char charset[64]; // charset ("iso-8859-1" par exemple) char contentencoding[64]; // content-encoding ("gzip" par exemple) - char* location; // on copie dedans éventuellement la véritable 'location' - LLint totalsize; // taille totale à télécharger (-1=inconnue) + char* location; // on copie dedans éventuellement la véritable 'location' + LLint totalsize; // taille totale à télécharger (-1=inconnue) short int is_file; // ce n'est pas une socket mais un descripteur de fichier si 1 T_SOC soc; // ID socket SOCaddr address; // IP address @@ -165,14 +165,14 @@ struct htsblk { #endif char lastmodified[64]; // Last-Modified char etag[64]; // Etag - char cdispo[256]; // Content-Disposition coupé + char cdispo[256]; // Content-Disposition coupé LLint crange; // Content-Range LLint crange_start; // Content-Range LLint crange_end; // Content-Range int debugid; // debug connection /* */ - htsrequest req; // paramètres pour la requête - /*char digest[32+2]; // digest md5 généré par le moteur ("" si non généré)*/ + htsrequest req; // paramètres pour la requête + /*char digest[32+2]; // digest md5 généré par le moteur ("" si non généré)*/ }; @@ -192,26 +192,26 @@ typedef struct OLD_htsblk OLD_htsblk; #endif struct OLD_htsblk { int statuscode; // ANCIENNE STURCTURE - status-code, -1=erreur, 200=OK,201=..etc (cf RFC1945) - int notmodified; // ANCIENNE STURCTURE - page ou fichier NON modifié (transféré) - int is_write; // ANCIENNE STURCTURE - sortie sur disque (out) ou en mémoire (adr) - char* adr; // ANCIENNE STURCTURE - adresse du bloc de mémoire, NULL=vide - FILE* out; // ANCIENNE STURCTURE - écriture directe sur disque (si is_write=1) + int notmodified; // ANCIENNE STURCTURE - page ou fichier NON modifié (transféré) + int is_write; // ANCIENNE STURCTURE - sortie sur disque (out) ou en mémoire (adr) + char* adr; // ANCIENNE STURCTURE - adresse du bloc de mémoire, NULL=vide + FILE* out; // ANCIENNE STURCTURE - écriture directe sur disque (si is_write=1) int size; // ANCIENNE STURCTURE - taille fichier - char msg[80]; // ANCIENNE STURCTURE - message éventuel si échec ("\0"=non précisé) + char msg[80]; // ANCIENNE STURCTURE - message éventuel si échec ("\0"=non précisé) char contenttype[64]; // ANCIENNE STURCTURE - content-type ("text/html" par exemple) - char* location; // ANCIENNE STURCTURE - on copie dedans éventuellement la véritable 'location' - int totalsize; // ANCIENNE STURCTURE - taille totale à télécharger (-1=inconnue) + char* location; // ANCIENNE STURCTURE - on copie dedans éventuellement la véritable 'location' + int totalsize; // ANCIENNE STURCTURE - taille totale à télécharger (-1=inconnue) int is_file; // ANCIENNE STURCTURE - ce n'est pas une socket mais un descripteur de fichier si 1 T_SOC soc; // ANCIENNE STURCTURE - ID socket FILE* fp; // ANCIENNE STURCTURE - fichier pour file:// OLD_t_proxy proxy; // ANCIENNE STURCTURE - proxy int user_agent_send; // ANCIENNE STURCTURE - user agent (ex: httrack/1.0 [sun]) char user_agent[64]; - int http11; // ANCIENNE STURCTURE - l'en tête doit être signé HTTP/1.1 et non HTTP/1.0 + int http11; // ANCIENNE STURCTURE - l'en tête doit être signé HTTP/1.1 et non HTTP/1.0 }; /* fin ANCIENNE STURCTURE pour cache 1.0 */ -// cache pour le dns, pour éviter de faire des gethostbyname sans arrêt +// cache pour le dns, pour éviter de faire des gethostbyname sans arrêt #ifndef HTS_DEF_FWSTRUCT_t_dnscache #define HTS_DEF_FWSTRUCT_t_dnscache typedef struct t_dnscache t_dnscache; @@ -220,9 +220,9 @@ struct t_dnscache { char iadr[1024]; struct t_dnscache* n; char host_addr[HTS_MAXADDRLEN]; // 4 octets (v4), ou 16 octets (v6) - int host_length; // 4 normalement - ==0 alors en cours de résolution + int host_length; // 4 normalement - ==0 alors en cours de résolution // ou >16 si sockaddr - // ==-1 alors erreur (host n'éxiste pas) + // ==-1 alors erreur (host n'éxiste pas) }; @@ -557,7 +557,7 @@ typedef struct utimbuf STRUCT_UTIMBUF; #define HTTP_IS_OK(code) ( ( (code) / 100 ) == 2 ) #define HTTP_IS_ERROR(code) ( !HTTP_IS_OK(code) && !HTTP_IS_REDIRECT(code) && !HTTP_IS_NOTMODIFIED(code) ) -// compare le début de f avec s et retourne la position de la fin +// compare le début de f avec s et retourne la position de la fin // 'A=a' (case insensitive) HTS_STATIC int strfield(const char* f,const char* s) { int r=0; diff --git a/src/htsname.c b/src/htsname.c index f586277..18a3dc3 100644 --- a/src/htsname.c +++ b/src/htsname.c @@ -130,8 +130,8 @@ int url_savename(char* adr_complete, char* fil_complete, char* save, liens, lien_tot, sback, cache, hash, ptr, numero_passe, headers, /* unknown */ NULL); } -// forme le nom du fichier à sauver (save) à partir de fil et adr -// système intelligent, qui renomme en cas de besoin (exemple: deux INDEX.HTML et index.html) +// forme le nom du fichier à sauver (save) à partir de fil et adr +// système intelligent, qui renomme en cas de besoin (exemple: deux INDEX.HTML et index.html) int url_savename2(char* adr_complete, char* fil_complete, char* save, char* former_adr, char* former_fil, char* referer_adr, char* referer_fil, @@ -184,9 +184,9 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, // copy of fil, used for lookups (see urlhack) normfil = fil; // et adr (sauter user/pass) - // on prend le parti de mettre les fichiers avec login/pass au même endroit que si ils - // étaient capturés sans ces paramètres - // c'est pour cette raison qu'on ignore totalement adr_complete (même pour la recherche en table de hachage) + // on prend le parti de mettre les fichiers avec login/pass au même endroit que si ils + // étaient capturés sans ces paramètres + // c'est pour cette raison qu'on ignore totalement adr_complete (même pour la recherche en table de hachage) adr = jump_identification(adr_complete); // copy of adr, used for lookups (see urlhack) normadr = adr; @@ -212,7 +212,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } } - // à afficher sans ftp:// + // à afficher sans ftp:// print_adr=jump_protocol(adr); if (strfield(adr_complete, "https:")) { protocol = PROTOCOL_HTTPS; @@ -235,24 +235,24 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } - // vérifier que le nom n'a pas déja été calculé (si oui le renvoyer tel que) - // vérifier que le nom n'est pas déja pris... - // NOTE: si on cherche /toto/ et que /toto est trouvé on le prend (et réciproquqment) ** // ** + // vérifier que le nom n'a pas déja été calculé (si oui le renvoyer tel que) + // vérifier que le nom n'est pas déja pris... + // NOTE: si on cherche /toto/ et que /toto est trouvé on le prend (et réciproquqment) ** // ** if (liens!=NULL) { int i; i=hash_read(hash,normadr,normfil,1,opt->urlhack); // recherche table 1 (adr+fil) - if (i>=0) { // ok, trouvé + if (i>=0) { // ok, trouvé strcpybuff(save,liens[i]->sav); return 0; } i=hash_read(hash,normadr,normfil,2,opt->urlhack); // recherche table 2 (former_adr+former_fil) - if (i>=0) { // ok, trouvé + if (i>=0) { // ok, trouvé // copier location moved! strcpybuff(adr_complete,liens[i]->adr); strcpybuff(fil_complete,liens[i]->fil); // et save - strcpybuff(save,liens[i]->sav); // copier (formé à partir du nouveau lien!) + strcpybuff(save,liens[i]->sav); // copier (formé à partir du nouveau lien!) return 0; } @@ -267,19 +267,19 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, strcatbuff(fil_complete_patche,"/"); i=hash_read(hash,normadr,fil_complete_patche,2,opt->urlhack); // recherche table 2 (former_adr+former_fil) if (i>=0) { - // écraser fil et adr (pas former_fil?????) + // écraser fil et adr (pas former_fil?????) strcpybuff(adr_complete,liens[i]->adr); strcpybuff(fil_complete,liens[i]->fil); - // écrire save + // écrire save strcpybuff(save,liens[i]->sav); return 0; } } } - // vérifier la non présence de paramètres dans le nom de fichier + // vérifier la non présence de paramètres dans le nom de fichier // si il y en a, les supprimer (ex: truc.cgi?subj=aspirateur) - // néanmoins, gardé pour vérifier la non duplication (voir après) + // néanmoins, gardé pour vérifier la non duplication (voir après) { char* a; a=strchr(fil,'?'); @@ -365,7 +365,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, break; } - // si option check_type activée + // si option check_type activée if (is_html < 0 && opt->check_type && !ext_chg) { int ishtest=0; if ( (!strfield(adr_complete,"file://")) @@ -374,8 +374,8 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, && (!strfield(adr_complete,"mms://")) #endif ) { - // tester type avec requète HEAD si on ne connait pas le type du fichier - if (!( (opt->check_type==1) && (fil[strlen(fil)-1]=='/') )) // slash doit être html? + // tester type avec requète HEAD si on ne connait pas le type du fichier + if (!( (opt->check_type==1) && (fil[strlen(fil)-1]=='/') )) // slash doit être html? if ( opt->savename_delayed == 2 || (ishtest=ishtml(opt,fil)) < 0) { // on ne sait pas si c'est un html ou un fichier.. // lire dans le cache htsblk r = cache_read_including_broken(opt,cache,adr,fil); // test uniquement @@ -386,7 +386,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, ext_chg=2; /* change filename */ strcpybuff(ext,r.cdispo); } - else if (!may_unknown2(opt,r.contenttype,fil)) { // on peut patcher à priori? + else if (!may_unknown2(opt,r.contenttype,fil)) { // on peut patcher à priori? give_mimext(s,r.contenttype); // obtenir extension if (strnotempty(s)>0) { // on a reconnu l'extension ext_chg=1; @@ -401,7 +401,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } #endif // - } else if ( opt->savename_delayed != 2 && is_userknowntype(opt,fil)) { /* PATCH BY BRIAN SCHRÖDER. + } else if ( opt->savename_delayed != 2 && is_userknowntype(opt,fil)) { /* PATCH BY BRIAN SCHRÖDER. Lookup mimetype not only by extension, but also by filename */ /* Note: "foo.cgi => text/html" means that foo.cgi shall have the text/html MIME file type, @@ -451,7 +451,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, ext_chg_delayed = 1; /* due to naming system */ } } - // test imposible dans le cache, faire une requête + // test imposible dans le cache, faire une requête else { // int hihp = opt->state._hts_in_html_parsing; @@ -478,9 +478,9 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, if (b>=0) { int stop_looping=0; int petits_tours=0; - int get_test_request=0; // en cas de bouclage sur soi même avec HEAD, tester avec GET.. parfois c'est la cause des problèmes + int get_test_request=0; // en cas de bouclage sur soi même avec HEAD, tester avec GET.. parfois c'est la cause des problèmes do { - // 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); } @@ -488,7 +488,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, 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 engine_stats(); @@ -517,15 +517,15 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, // strcpybuff(mov_url,back[b].r.location); // copier URL if (ident_url_relatif(mov_url,curr_adr,curr_fil,mov_adr,mov_fil)>=0) { - // 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,curr_adr)) || (strcmp(mov_fil,curr_fil)) || (get_test_request==0)) { // bouclage? if ((!strcmp(mov_adr,curr_adr)) && (!strcmp(mov_fil,curr_fil))) - get_test_request=1; // faire requète avec GET + get_test_request=1; // faire requète avec GET // 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,curr_adr); strcpybuff(former_fil,curr_fil); } @@ -555,7 +555,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, || strfield(mov_url,"mms://") #endif ) - { // ftp, ok on arrête + { // ftp, ok on arrête has_been_moved = 1; back_maydelete(opt,cache,sback,b); // ok strcpybuff(curr_adr,mov_adr); @@ -574,13 +574,13 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, if (back_add(sback,opt,cache,mov_adr,mov_fil,methode,referer_adr,referer_fil,1)!=-1) { // OK hts_log_print(opt, LOG_DEBUG, "(during prefetch) %s (%d) to link %s at %s%s",back[b].r.msg,back[b].r.statuscode,back[b].r.location,curr_adr,curr_fil); - // libérer emplacement backing actuel et attendre le prochain + // libérer emplacement backing actuel et attendre le prochain back_maydelete(opt,cache,sback,b); strcpybuff(curr_adr,mov_adr); strcpybuff(curr_fil,mov_fil); b=back_index(opt,sback,curr_adr,curr_fil,methode); if (!get_test_request) - has_been_moved = 1; // sinon ne pas forcer has_been_moved car non déplacé + has_been_moved = 1; // sinon ne pas forcer has_been_moved car non déplacé petits_tours++; // } else {// sinon on fait rien et on s'en va.. (ftp etc) @@ -593,20 +593,20 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } } - } else{ // arrêter les frais + } else{ // arrêter les frais hts_log_print(opt, LOG_WARNING, "Unable to test %s%s (loop)",adr_complete,fil_complete); } } // ok, leaving } } while(!stop_looping && back[b].status > 0 && back[b].status < 1000); - // Si non déplacé, forcer type? + // Si non déplacé, forcer type? if (!has_been_moved) { if (back[b].r.statuscode!=-10) { // erreur if (strnotempty(back[b].r.contenttype)==0) strcpybuff(back[b].r.contenttype,"text/html"); // message d'erreur en html - // Finalement on, renvoie un erreur, pour ne toucher à rien dans le code - // libérer emplacement backing + // Finalement on, renvoie un erreur, pour ne toucher à rien dans le code + // libérer emplacement backing } { // pas d'erreur, changer type? @@ -616,7 +616,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, ext_chg=2; /* change filename */ strcpybuff(ext,back[b].r.cdispo); } - else if (!may_unknown2(opt, back[b].r.contenttype, back[b].url_fil)) { // on peut patcher à priori? (pas interdit ou pas de type) + else if (!may_unknown2(opt, back[b].r.contenttype, back[b].url_fil)) { // on peut patcher à priori? (pas interdit ou pas de type) give_mimext(s,back[b].r.contenttype); // obtenir extension if (strnotempty(s)>0) { // on a reconnu l'extension ext_chg=1; @@ -632,13 +632,13 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, #endif } } - // FIN Si non déplacé, forcer type? + // FIN Si non déplacé, forcer type? - // libérer emplacement backing + // libérer emplacement backing back_maydelete(opt,cache,sback,b); // --- --- --- - // oops, a été déplacé.. on recalcule en récursif (osons!) + // oops, a été déplacé.. on recalcule en récursif (osons!) if (has_been_moved) { // copier adr, fil (optionnel, mais sinon marche pas pour le rip) strcpybuff(adr_complete,curr_adr); @@ -661,7 +661,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } // restaurer opt->state._hts_in_html_parsing=hihp; - } // caché? + } // caché? } } } @@ -670,7 +670,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, // - - - DEBUT NOMMAGE - - - - // Donner nom par défaut? + // Donner nom par défaut? if (fil[strlen(fil)-1]=='/') { if (!strfield(adr_complete,"ftp://") #if HTS_USEMMS @@ -678,20 +678,20 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, #endif ) { - strcatbuff(fil,DEFAULT_HTML); // nommer page par défaut!! + strcatbuff(fil,DEFAULT_HTML); // nommer page par défaut!! #if HTS_USEMMS } else if (strfield(adr_complete,"mms://")) { strcatbuff(fil,DEFAULT_MMS); #endif } else { if (!opt->proxy.active) - strcatbuff(fil,DEFAULT_FTP); // nommer page par défaut (texte) + strcatbuff(fil,DEFAULT_FTP); // nommer page par défaut (texte) else - strcatbuff(fil,DEFAULT_HTML); // nommer page par défaut (à priori ici html depuis un proxy http) + strcatbuff(fil,DEFAULT_HTML); // nommer page par défaut (à priori ici html depuis un proxy http) } } // Changer extension? - // par exemple, php3 sera sauvé en html, cgi en html ou gif, xbm etc.. selon les cas + // par exemple, php3 sera sauvé en html, cgi en html ou gif, xbm etc.. selon les cas if (ext_chg) { // changer ext char* a=fil+strlen(fil)-1; if ( (opt->debug>1) && (opt->log!=NULL) ) { @@ -729,10 +729,10 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } - // un nom de fichier est généré - // s'il existe déja, alors on le mofifie légèrement + // un nom de fichier est généré + // s'il existe déja, alors on le mofifie légèrement - // ajouter nom du site éventuellement en premier + // ajouter nom du site éventuellement en premier if (opt->savename_type == -1) { // utiliser savename_userdef! (%h%p/%n%q.%t) const char* a = StringBuff(opt->savename_userdef); char* b = save; @@ -843,7 +843,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, else strncatbuff(b,nom_pos,8); } - b+=strlen(b); // pointer à la fin + b+=strlen(b); // pointer à la fin break; case 'N': // nom avec ext // RECOPIE NOM + EXT @@ -859,7 +859,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, else strncatbuff(b,nom_pos,8); } - b+=strlen(b); // pointer à la fin + b+=strlen(b); // pointer à la fin // RECOPIE NOM + EXT *b='\0'; if (dot_pos) { @@ -873,7 +873,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, else strcpybuff(b,DEFAULT_EXT_SHORT + 1); // pas de.. } - b+=strlen(b); // pointer à la fin + b+=strlen(b); // pointer à la fin // break; case 't': // ext @@ -889,7 +889,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, else strcpybuff(b,DEFAULT_EXT_SHORT + 1); // pas de.. } - b+=strlen(b); // pointer à la fin + b+=strlen(b); // pointer à la fin break; case 'p': // path sans dernier / *b='\0'; @@ -905,7 +905,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, strcpybuff(b,n83); } } - b+=strlen(b); // pointer à la fin + b+=strlen(b); // pointer à la fin break; case 'h': // host *b='\0'; @@ -920,7 +920,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, else strncatbuff(b,print_adr,8); } - b+=strlen(b); // pointer à la fin + b+=strlen(b); // pointer à la fin break; case 'M': /* host/address?query MD5 (128-bits) */ *b='\0'; @@ -933,7 +933,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, domd5mem(buff,strlen(buff),digest,1); strcpybuff(b,digest); } - b+=strlen(b); // pointer à la fin + b+=strlen(b); // pointer à la fin break; case 'Q': case 'q': /* query MD5 (128-bits/16-bits) GENERATED ONLY IF query string exists! */ @@ -941,13 +941,13 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, char md5[32 + 2]; *b='\0'; strncatbuff(b,url_md5(md5, fil_complete),(tok == 'Q')?32:4); - b+=strlen(b); // pointer à la fin + b+=strlen(b); // pointer à la fin } break; case 'r': case 'R': // protocol *b='\0'; strcatbuff(b, protocol_str[protocol]); - b+=strlen(b); // pointer à la fin + b+=strlen(b); // pointer à la fin break; /* Patch by Juan Fco Rodriguez to get the full query string */ @@ -968,7 +968,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } *b++='\0'; // - // Types prédéfinis + // Types prédéfinis // } @@ -1004,13 +1004,13 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, hts_lowcase(save); /* - // ne sert à rien car a déja été filtré normalement + // ne sert à rien car a déja été filtré normalement if ((*fil=='.') && (*(fil+1)=='/')) // ./index.html ** // url_savename_addstr(save,fil+2); else // index.html ou /index.html url_savename_addstr(save,fil); if (save[strlen(save)-1]=='/') - strcatbuff(save,DEFAULT_HTML); // nommer page par défaut!! + strcatbuff(save,DEFAULT_HTML); // nommer page par défaut!! */ /* add name */ @@ -1047,11 +1047,11 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } } } else { - strcatbuff(save,"web/"); // répertoire général + strcatbuff(save,"web/"); // répertoire général } } - // si un html à coup sûr + // si un html à coup sûr if ( (ext_chg!=0) ? (ishtml_ext(ext) == 1) : (ishtml(opt,fil)==1) ) { if (opt->savename_type%100==2) { // html/ strcatbuff(save, "html/"); @@ -1063,7 +1063,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } switch (opt->savename_type%100) { - case 4: case 5: { // séparer par types + case 4: case 5: { // séparer par types char* a=fil+strlen(fil)-1; // passer structures while(( a > fil) && (*a != '/') && (*a != '\\')) a--; @@ -1087,13 +1087,13 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, ADD_STANDARD_NAME(0); } break; - case 99: { // 'codé' .. c'est un gadget + case 99: { // 'codé' .. c'est un gadget int i; int j; char* a; char C[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-"; int L; - // pseudo-CRC sur fil et adr pour initialiser générateur aléatoire.. + // pseudo-CRC sur fil et adr pour initialiser générateur aléatoire.. unsigned int s=0; L = (int) strlen(C); for(i=0;i<(int) strlen(fil_complete);i++) { @@ -1118,7 +1118,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } } break; - default: { // noms sans les noms des répertoires + default: { // noms sans les noms des répertoires // ne garder que le nom, pas la structure /* char* a=fil+strlen(fil)-1; @@ -1136,12 +1136,12 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, hts_lowcase(save); if (save[strlen(save)-1]=='/') - strcatbuff(save,DEFAULT_HTML); // nommer page par défaut!! + strcatbuff(save,DEFAULT_HTML); // nommer page par défaut!! } - // vérifier qu'on ne doit pas forcer l'extension - // par exemple, asp sera sauvé en html, cgi en html ou gif, xbm etc.. selon les cas + // vérifier qu'on ne doit pas forcer l'extension + // par exemple, asp sera sauvé en html, cgi en html ou gif, xbm etc.. selon les cas /*if (ext_chg) { char* a=save+strlen(save)-1; while(((int) a>(int) save) && (*a!='.') && (*a!='/')) a--; @@ -1152,20 +1152,20 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, }*/ // Not used anymore unless non-delayed types. - // de même en cas de manque d'extension on en place une de manière forcée.. - // cela évite les /chez/toto et les /chez/toto/index.html incompatibles + // de même en cas de manque d'extension on en place une de manière forcée.. + // cela évite les /chez/toto et les /chez/toto/index.html incompatibles if (opt->savename_type != -1 && opt->savename_delayed != 2) { char* a=save+strlen(save)-1; while(( a > save) && (*a!='.') && (*a!='/')) a--; if (*a!='.') { // agh pas de point - //strcatbuff(save,".none"); // a éviter - strcatbuff(save,".html"); // préférable! + //strcatbuff(save,".none"); // a éviter + strcatbuff(save,".html"); // préférable! hts_log_print(opt, LOG_DEBUG, "Default HTML type set for %s%s => %s",adr_complete,fil_complete,save); } } // effacer pass au besoin pour les autentifications - // (plus la peine : masqué au début) + // (plus la peine : masqué au début) /* { char* a=jump_identification(save); @@ -1185,7 +1185,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } */ - // éviter les / au début (cause: N100) + // éviter les / au début (cause: N100) if (save[0]=='/') { char BIGSTK tempo[HTS_URLMAXSIZE*2]; strcpybuff(tempo,save+1); @@ -1212,11 +1212,11 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, hts_replace(save,'+','_'); } // - { // éliminer les // (comme ftp://) + { // éliminer les // (comme ftp://) char* a; //while( (a=strstr(save,"//")) ) *a='_'; cleanDoubleSlash(save); - // Eliminer chars spéciaux + // Eliminer chars spéciaux a=save -1 ; while(*(++a)) if ( ((unsigned char)(*a) <= 31) @@ -1268,7 +1268,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, } #endif - // conversion 8-3 .. y compris pour les répertoires + // conversion 8-3 .. y compris pour les répertoires if (opt->savename_83) { char BIGSTK n83[HTS_URLMAXSIZE*2]; long_to_83(opt->savename_83,n83,save); @@ -1383,7 +1383,7 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, #undef MIN_LAST_SEG_RESERVE #undef HTS_MAX_PATH_LEN - // chemin primaire éventuel A METTRE AVANT + // chemin primaire éventuel A METTRE AVANT if (strnotempty(StringBuff(opt->path_html_utf8))) { char BIGSTK tempo[HTS_URLMAXSIZE*2]; strcpybuff(tempo,StringBuff(opt->path_html_utf8)); @@ -1391,13 +1391,13 @@ int url_savename2(char* adr_complete, char* fil_complete, char* save, strcpybuff(save,tempo); } - // vérifier que le nom n'est pas déja pris... + // vérifier que le nom n'est pas déja pris... if (liens!=NULL) { int nom_ok; do { int i; // - nom_ok=1; // à priori bon + nom_ok=1; // à priori bon // on part de la fin pour optimiser, plus les opti de taille pour aller encore plus vite.. #if DEBUG_SAVENAME printf("\nStart search\n"); @@ -1414,7 +1414,7 @@ printf("\nStart search\n"); //else sameFil = ( strcmp(liens[i]->fil, normfil) == 0); if (sameAdr && sameFil) - { // ok c'est le même lien, adresse déja définie + { // ok c'est le même lien, adresse déja définie /* Take the existing name not to screw up with cAsE sEnSiTiViTy of Linux/Unix */ if (strcmp(liens[i]->sav, save) != 0) { strcpybuff(save, liens[i]->sav); @@ -1423,7 +1423,7 @@ printf("\nStart search\n"); #if DEBUG_SAVENAME printf("\nOK ALREADY DEFINED\n",13,i); #endif - } else { // utilisé par un AUTRE, changer de nom + } else { // utilisé par un AUTRE, changer de nom char BIGSTK tempo[HTS_URLMAXSIZE*2]; char* a=save+strlen(save)-1; char* b; @@ -1443,7 +1443,7 @@ printf("\nWRONG CASE UNMATCH : \n%s\n%s, REDEFINE\n",liens[i]->fil,fil_complete) else strcatbuff(tempo,save); - // tester la présence d'un -xx (ex: index-2.html -> index-3.html) + // tester la présence d'un -xx (ex: index-2.html -> index-3.html) b=tempo+strlen(tempo)-1; while (isdigit((unsigned char)*b)) b--; if (*b == collisionSeparator) { @@ -1452,7 +1452,7 @@ printf("\nWRONG CASE UNMATCH : \n%s\n%s, REDEFINE\n",liens[i]->fil,fil_complete) n++; // plus un } - // en plus il faut gérer le 8-3 .. pas facile le client + // en plus il faut gérer le 8-3 .. pas facile le client if (opt->savename_83) { int max; char* a=tempo+strlen(tempo)-1; @@ -1488,7 +1488,7 @@ printf("\nEnd search, %s\n",fil_complete); return 0; } -/* nom avec md5 urilisé partout */ +/* nom avec md5 urilisé partout */ void standard_name(char* b,char* dot_pos,char* nom_pos,char* fil_complete,int short_ver) { char md5[32 + 2]; @@ -1544,7 +1544,7 @@ char* url_md5(char* digest, char* fil_complete) { return digest; } -// interne à url_savename: ajoute une chaîne à une autre avec \ -> / +// interne à url_savename: ajoute une chaîne à une autre avec \ -> / void url_savename_addstr(char* d,char* s) { int i = (int) strlen(d); while(*s) { diff --git a/src/htsopt.h b/src/htsopt.h index dfefed7..eb6e84d 100644 --- a/src/htsopt.h +++ b/src/htsopt.h @@ -94,7 +94,7 @@ struct t_proxy { String bindhost; // bind this host }; -/* Structure utile pour copier en bloc les paramètres */ +/* Structure utile pour copier en bloc les paramètres */ #ifndef HTS_DEF_FWSTRUCT_htsfilters #define HTS_DEF_FWSTRUCT_htsfilters typedef struct htsfilters htsfilters; @@ -180,7 +180,7 @@ typedef enum hts_log_type { } hts_log_type; #endif -/* Structure état du miroir */ +/* Structure état du miroir */ #ifndef HTS_DEF_FWSTRUCT_htsoptstatecancel #define HTS_DEF_FWSTRUCT_htsoptstatecancel typedef struct htsoptstatecancel htsoptstatecancel; @@ -202,7 +202,7 @@ typedef struct htsmutex_s htsmutex_s, *htsmutex; typedef struct struct_inthash struct_inthash, *inthash; #endif -/* Structure état du miroir */ +/* Structure état du miroir */ #ifndef HTS_DEF_FWSTRUCT_htsoptstate #define HTS_DEF_FWSTRUCT_htsoptstate typedef struct htsoptstate htsoptstate; @@ -271,7 +271,7 @@ typedef enum htsparsejava_flags { HTSPARSE_NO_AGGRESSIVE = 8 // don't aggressively parse .js or .java } htsparsejava_flags; -// paramètres httrack (options) +// paramètres httrack (options) #ifndef HTS_DEF_FWSTRUCT_httrackp #define HTS_DEF_FWSTRUCT_httrackp typedef struct httrackp httrackp; @@ -281,12 +281,12 @@ struct httrackp { /* */ int wizard; // wizard aucun/grand/petit int flush; // fflush sur les fichiers log - int travel; // type de déplacements (same domain etc) + int travel; // type de déplacements (same domain etc) int seeker; // up & down - int depth; // nombre de niveaux de récursion - int extdepth; // nombre de niveaux de récursion à l'éxtérieur + int depth; // nombre de niveaux de récursion + int extdepth; // nombre de niveaux de récursion à l'éxtérieur int urlmode; // liens relatifs etc - int debug; // mode débug log + int debug; // mode débug log int getmode; // sauver html, images.. FILE* log; // fichier log FILE* errlog; // et erreur @@ -295,7 +295,7 @@ struct httrackp { LLint maxfile_html; // taille max html int maxsoc; // nbre sockets LLint fragment; // fragmentation d'un site - int nearlink; // prendre les images/data proche d'une page mais à l'extérieur + int nearlink; // prendre les images/data proche d'une page mais à l'extérieur int makeindex; // faire un index int kindex; // et un index 'keyword' int delete_old; // effacer anciens fichiers @@ -305,8 +305,8 @@ struct httrackp { int maxrate; // taux de transfert max int mms_maxtime; // max duration of a mms file float maxconn; // nombre max de connexions/s - int waittime; // démarrage programmé - int cache; // génération d'un cache + int waittime; // démarrage programmé + int cache; // génération d'un cache //int aff_progress; // barre de progression int shell; // gestion d'un shell par pipe stdin/stdout t_proxy proxy; // configuration du proxy @@ -324,39 +324,39 @@ struct httrackp { String path_html; // chemin pour miroir String path_html_utf8; // chemin pour miroir, UTF-8 String path_bin; // chemin pour templates - int retry; // nombre d'essais supplémentaires en cas d'échec - int makestat; // mettre à jour un fichier log de statistiques de transfert - int maketrack; // mettre à jour un fichier log de statistiques d'opérations - int parsejava; // parsing des classes java pour récupérer les class, gif & cie ; see htsparsejava_flags + int retry; // nombre d'essais supplémentaires en cas d'échec + int makestat; // mettre à jour un fichier log de statistiques de transfert + int maketrack; // mettre à jour un fichier log de statistiques d'opérations + int parsejava; // parsing des classes java pour récupérer les class, gif & cie ; see htsparsejava_flags int hostcontrol; // abandon d'un host trop lent etc. - int errpage; // générer une page d'erreur en cas de 404 etc. - int check_type; // si type inconnu (cgi,asp,/) alors tester lien (et gérer moved éventuellement) + int errpage; // générer une page d'erreur en cas de 404 etc. + int check_type; // si type inconnu (cgi,asp,/) alors tester lien (et gérer moved éventuellement) int all_in_cache; // tout mettre en cache! int robots; // traitement des robots int external; // pages externes->pages d'erreur int passprivacy; // pas de mot de pass dans les liens externes? int includequery; // include la query-string int mirror_first_page; // miroir des liens - String sys_com; // commande système + String sys_com; // commande système int sys_com_exec; // executer commande int accept_cookie; // gestion des cookies t_cookie* cookie; int http10; // forcer http 1.0 int nokeepalive; // pas de keep-alive int nocompression; // pas de compression - int sizehack; // forcer réponse "mis à jour" si taille identique + int sizehack; // forcer réponse "mis à jour" si taille identique int urlhack; // force "url normalization" to avoid loops int tolerant; // accepter content-length incorrect int parseall; // essayer de tout parser (tags inconnus contenant des liens, par exemple) - int parsedebug; // débugger parser (debug!) - int norecatch; // ne pas reprendre les fichiers effacés localement par l'utilisateur + int parsedebug; // débugger parser (debug!) + int norecatch; // ne pas reprendre les fichiers effacés localement par l'utilisateur int verbosedisplay; // animation textuelle String footer; // ligne d'infos - int maxcache; // maximum en mémoire au niveau du cache (backing) - //int maxcache_anticipate; // maximum de liens à anticiper (majorant) + int maxcache; // maximum en mémoire au niveau du cache (backing) + //int maxcache_anticipate; // maximum de liens à anticiper (majorant) int ftp_proxy; // proxy http pour ftp - String filelist; // fichier liste URL à inclure - String urllist; // fichier liste de filtres à inclure + String filelist; // fichier liste URL à inclure + String urllist; // fichier liste de filtres à inclure htsfilters filters; // contient les pointeurs pour les filtres hash_struct* hash; // hash structure robots_wizard* robotsptr; // robots ptr @@ -368,10 +368,10 @@ struct httrackp { int maxlink; // nombre max de liens int maxfilter; // nombre max de filtres // - char* exec; // adresse du nom de l'éxecutable + char* exec; // adresse du nom de l'éxecutable // int quiet; // poser des questions autres que wizard? - int keyboard; // vérifier stdin + int keyboard; // vérifier stdin int bypass_limits; // bypass built-in limits int background_on_suspend; // background process on suspend signal // @@ -392,33 +392,33 @@ struct httrackp { typedef struct hts_stat_struct hts_stat_struct; #endif struct hts_stat_struct { - LLint HTS_TOTAL_RECV; // flux entrant reçu - LLint stat_bytes; // octets écrits sur disque + LLint HTS_TOTAL_RECV; // flux entrant reçu + LLint stat_bytes; // octets écrits sur disque // int HTS_TOTAL_RECV_STATE; // status: 0 tout va bien 1: ralentir un peu 2: ralentir 3: beaucoup - TStamp stat_timestart; // départ + TStamp stat_timestart; // départ // - LLint total_packed; // flux entrant compressé reçu - LLint total_unpacked; // flux entrant compressé reçu - int total_packedfiles; // fichiers compressés + LLint total_packed; // flux entrant compressé reçu + LLint total_unpacked; // flux entrant compressé reçu + int total_packedfiles; // fichiers compressés // - TStamp istat_timestart[2]; // départ pour calcul instantanné - LLint istat_bytes[2]; // calcul pour instantanné - TStamp istat_reference01; // top départ donné par #0 à #1 - int istat_idlasttimer; // id du timer qui a récemment donné une stat + TStamp istat_timestart[2]; // départ pour calcul instantanné + LLint istat_bytes[2]; // calcul pour instantanné + TStamp istat_reference01; // top départ donné par #0 à #1 + int istat_idlasttimer; // id du timer qui a récemment donné une stat // - int stat_files; // nombre de fichiers écrits - int stat_updated_files; // nombre de fichiers mis à jour - int stat_background; // nombre de fichiers écrits en arrière plan + int stat_files; // nombre de fichiers écrits + int stat_updated_files; // nombre de fichiers mis à jour + int stat_background; // nombre de fichiers écrits en arrière plan // - int stat_nrequests; // nombre de requêtes sur socket - int stat_sockid; // nombre de sockets allouées au total + int stat_nrequests; // nombre de requêtes sur socket + int stat_sockid; // nombre de sockets allouées au total int stat_nsocket; // nombre de sockets int stat_errors; // nombre d'erreurs int stat_errors_front; // idem, mais au tout premier niveau int stat_warnings; // '' warnings int stat_infos; // '' infos - int nbk; // fichiers anticipés en arrière plan et terminés - LLint nb; // données transférées actuellement (estimation) + int nbk; // fichiers anticipés en arrière plan et terminés + LLint nb; // données transférées actuellement (estimation) // LLint rate; // 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; } diff --git a/src/htsrobots.c b/src/htsrobots.c index d1ca45c..589f70c 100644 --- a/src/htsrobots.c +++ b/src/htsrobots.c @@ -48,7 +48,7 @@ Please visit our Website: http://www.httrack.com // -- robots -- -// fil="" : vérifier si règle déja enregistrée +// fil="" : vérifier si règle déja enregistrée int checkrobots(robots_wizard* robots,char* adr,char* fil) { while(robots) { if (strfield2(robots->adr,adr)) { @@ -81,7 +81,7 @@ int checkrobots_set(robots_wizard* robots,char* adr,char* data) { if (((int) strlen(adr)) >= sizeof(robots->adr) - 2) return 0; if (((int) strlen(data)) >= sizeof(robots->token) - 2) return 0; while(robots) { - if (strfield2(robots->adr,adr)) { // entrée existe + if (strfield2(robots->adr,adr)) { // entrée existe strcpybuff(robots->token,data); #if DEBUG_ROBOTS printf("robots.txt: set %s to %s\n",adr,data); diff --git a/src/htsserver.c b/src/htsserver.c index 1698955..39522dd 100644 --- a/src/htsserver.c +++ b/src/htsserver.c @@ -59,7 +59,7 @@ Please visit our Website: http://www.httrack.com #endif /* END specific definitions */ -/* définitions globales */ +/* définitions globales */ #include "htsglobal.h" /* htslib */ @@ -195,7 +195,7 @@ T_SOC smallserver_init(int* port,char* adr) { // effacer structure /*memset(&server2, 0, sizeof(server2)); if (getsockname(soc,(struct sockaddr*) &server2,&len) == 0) { - *port=ntohs(SOCaddr_sinport(server)); // récupérer port*/ + *port=ntohs(SOCaddr_sinport(server)); // récupérer port*/ if (listen(soc,10)>=0) { // au pif le 10 // SOCaddr_inetntoa(adr, 128, server2, len); strcpy(adr, h_loc); @@ -1354,7 +1354,7 @@ static int htslang_load(char* limit_to, char* path) { } while (strnotempty(test)); } - if (!strnotempty(test)) { // éviter doublons + if (!strnotempty(test)) { // éviter doublons // conv_printf(key,key); int len; char* buff; @@ -1523,7 +1523,7 @@ static void LANG_DELETE(void) { inthash_delete(&NewLangStrKeys); } -// sélection de la langue +// sélection de la langue static void LANG_INIT(char* path) { //CWinApp* pApp = AfxGetApp(); //if (pApp) { diff --git a/src/htsserver.h b/src/htsserver.h index dfb978e..da176f5 100644 --- a/src/htsserver.h +++ b/src/htsserver.h @@ -132,7 +132,7 @@ static int linputsoc(T_SOC soc, char* s, int max) { switch(c) { case 13: break; // sauter CR case 10: c=-1; break; - case 9: case 12: break; // sauter ces caractères + case 9: case 12: break; // sauter ces caractères default: s[j++]=(char) c; break; } } @@ -207,7 +207,7 @@ static int linput(FILE* fp,char* s,int max) { switch(c) { case 13: break; // sauter CR case 10: c=-1; break; - case 0: case 9: case 12: break; // sauter ces caractères + case 0: case 9: case 12: break; // sauter ces caractères default: s[j++]=(char) c; break; } } @@ -227,7 +227,7 @@ static int linput_trim(FILE* fp,char* s,int max) { // sauter espaces et tabs en fin while( (rlen>0) && is_realspace(ls[max(rlen-1,0)]) ) ls[--rlen]='\0'; - // sauter espaces en début + // sauter espaces en début a=ls; while((rlen>0) && ((*a==' ') || (*a=='\t'))) { a++; @@ -266,7 +266,7 @@ static void unescapehttp(char* s, String* tempo) { i++; hc = (char) ehex(s+i); StringAddchar(*tempo, (char) hc); - i++; // sauter 2 caractères finalement + i++; // sauter 2 caractères finalement } else if (s[i]=='+') { StringAddchar(*tempo, ' '); @@ -290,7 +290,7 @@ static void unescapeini(char* s, String* tempo) { if (!is_retorsep(hc) || !is_retorsep(lastc)) { StringAddchar(*tempo, lastc = (char) hc); } - i++; // sauter 2 caractères finalement + i++; // sauter 2 caractères finalement } else StringAddchar(*tempo, lastc = s[i]); diff --git a/src/htstools.c b/src/htstools.c index 65e5f1f..f6da19e 100644 --- a/src/htstools.c +++ b/src/htstools.c @@ -107,7 +107,7 @@ static void unescapehttp(char* s, String* tempo) { i++; hc = (char) ehex(s+i); StringAddchar(*tempo, (char) hc); - i++; // sauter 2 caractères finalement + i++; // sauter 2 caractères finalement } else if (s[i]=='+') { StringAddchar(*tempo, ' '); @@ -117,11 +117,11 @@ static void unescapehttp(char* s, String* tempo) { } } -// forme à partir d'un lien et du contexte (origin_fil et origin_adr d'où il est tiré) adr et fil +// forme à partir d'un lien et du contexte (origin_fil et origin_adr d'où il est tiré) adr et fil // [adr et fil sont des buffers de 1ko] // 0 : ok // -1 : erreur -// -2 : protocole non supporté (ftp) +// -2 : protocole non supporté (ftp) int ident_url_relatif(const char *lien,const char* origin_adr,const char* origin_fil,char* adr,char* fil) { int ok=0; int scheme=0; @@ -153,12 +153,12 @@ int ident_url_relatif(const char *lien,const char* origin_adr,const char* origin } else if (strfield(lien,"ftp://")) { // Note: ftp:foobar.gif is not valid - if (ftp_available()) { // ftp supporté + if (ftp_available()) { // ftp supporté if (ident_url_absolute(lien,adr,fil)==-1) { ok=-1; // erreur URL } } else { - ok=-2; // non supporté + ok=-2; // non supporté } #if HTS_USEMMS } else if (strfield(lien,"mms://")) { @@ -187,7 +187,7 @@ int ident_url_relatif(const char *lien,const char* origin_adr,const char* origin )) { ok=-1; // unknown scheme } else { // c'est un lien relatif - // On forme l'URL complète à partie de l'url actuelle + // On forme l'URL complète à partie de l'url actuelle // et du chemin actuel si besoin est. // copier adresse @@ -196,23 +196,23 @@ int ident_url_relatif(const char *lien,const char* origin_adr,const char* origin /* patch scheme if necessary */ if (strfield(lien,"http:")) { lien+=5; - strcpybuff(adr, jump_protocol(origin_adr)); // même adresse ; protocole vide (http) + strcpybuff(adr, jump_protocol(origin_adr)); // même adresse ; protocole vide (http) } else if (strfield(lien,"https:")) { lien+=6; - strcpybuff(adr, "https://"); // même adresse forcée en https + strcpybuff(adr, "https://"); // même adresse forcée en https strcatbuff(adr, jump_protocol(origin_adr)); } else if (strfield(lien,"ftp:")) { lien+=4; - strcpybuff(adr, "ftp://"); // même adresse forcée en ftp + strcpybuff(adr, "ftp://"); // même adresse forcée en ftp strcatbuff(adr, jump_protocol(origin_adr)); #if HTS_USEMMS } else if (strfield(lien,"mms:")) { lien+=4; - strcpybuff(adr, "mms://"); // même adresse forcée en ftp + strcpybuff(adr, "mms://"); // même adresse forcée en ftp strcatbuff(adr, jump_protocol(origin_adr)); #endif } else { - strcpybuff(adr,origin_adr); // même adresse ; et même éventuel protocole + strcpybuff(adr,origin_adr); // même adresse ; et même éventuel protocole } if (*lien!='/') { // sinon c'est un lien absolu @@ -275,8 +275,8 @@ int ident_url_relatif(const char *lien,const char* origin_adr,const char* origin -// créer dans s, à partir du chemin courant curr_fil, le lien vers link (absolu) -// un ident_url_relatif a déja été fait avant, pour que link ne soit pas un chemin relatif +// créer dans s, à partir du chemin courant curr_fil, le lien vers link (absolu) +// un ident_url_relatif a déja été fait avant, pour que link ne soit pas un chemin relatif int lienrelatif(char* s,const char* link,const char* curr_fil) { char BIGSTK _curr[HTS_URLMAXSIZE*2]; char BIGSTK newcurr_fil[HTS_URLMAXSIZE*2],newlink[HTS_URLMAXSIZE*2]; @@ -288,7 +288,7 @@ int lienrelatif(char* s,const char* link,const char* curr_fil) { newcurr_fil[0]='\0'; newlink[0]='\0'; // - // patch: éliminer les ? (paramètres) sinon bug + // patch: éliminer les ? (paramètres) sinon bug { const char* a; if ( (a=strchr(curr_fil,'?')) ) { @@ -305,7 +305,7 @@ int lienrelatif(char* s,const char* link,const char* curr_fil) { curr=_curr; strcpybuff(curr,curr_fil); if ((a=strchr(curr,'?'))==NULL) // couper au ? (params) - a=curr+strlen(curr)-1; // pas de params: aller à la fin + a=curr+strlen(curr)-1; // pas de params: aller à la fin while((*a!='/') && ( a> curr)) a--; // chercher dernier / du chemin courant if (*a=='/') *(a+1)='\0'; // couper dernier / @@ -321,14 +321,14 @@ int lienrelatif(char* s,const char* link,const char* curr_fil) { //c=curr; // couper ce qui est commun while ((streql(*link,*curr)) && (*link!=0)) {link++; curr++; } - // mais on veut un répertoirer entier! + // mais on veut un répertoirer entier! // si on a /toto/.. et /toto2/.. on ne veut pas sauter /toto ! while(((*link!='/') || (*curr!='/')) && ( link > l)) { link--; curr--; } //if (*link=='/') link++; //if (*curr=='/') curr++; } - // calculer la profondeur du répertoire courant et remonter + // calculer la profondeur du répertoire courant et remonter // LES ../ ONT ETE SIMPLIFIES a=curr; if (*a=='/') a++; @@ -337,7 +337,7 @@ int lienrelatif(char* s,const char* link,const char* curr_fil) { if (slash) strcatbuff(s,"/"); // garder absolu!! - // on est dans le répertoire de départ, copier + // on est dans le répertoire de départ, copier strcatbuff(s,link + ((*link=='/')?1:0) ); /* Security check */ @@ -400,7 +400,7 @@ void long_to_83(int mode,char* n83,char* save) { } -// conversion nom de fichier/dossier isolé vers 8-3 ou ISO9660 +// conversion nom de fichier/dossier isolé vers 8-3 ou ISO9660 void longfile_to_83(int mode,char* n83,char* save) { int j=0,max=0; int i = 0; @@ -480,7 +480,7 @@ void longfile_to_83(int mode,char* n83,char* save) { } } -// écrire backblue.gif +// écrire backblue.gif /* Note: utf-8 */ int verif_backblue(httrackp* opt, const char* base) { int* done = &opt->state.verif_backblue_done; @@ -527,8 +527,8 @@ int verif_external(httrackp* opt,int nb,int test) { } -// recherche chaîne de type truc<espaces>= -// renvoi décalage à effectuer ou 0 si non trouvé +// recherche chaîne de type truc<espaces>= +// renvoi décalage à effectuer ou 0 si non trouvé /* SECTION OPTIMISEE: #define rech_tageq(adr,s) ( \ ( (*(adr-1)=='<') || (is_space(*(adr-1))) ) ? \ @@ -549,7 +549,7 @@ HTS_INLINE int rech_tageq(const char* adr,const char* s) { return 0; } */ -// Deuxième partie +// Deuxième partie HTS_INLINE int __rech_tageq(const char* adr,const char* s) { int p; p=strfield(adr,s); @@ -638,7 +638,7 @@ HTS_INLINE int rech_sampletag(const char* adr,const char* s) { return 0; } -// teste si le tag contenu dans from est égal à "tag" +// teste si le tag contenu dans from est égal à "tag" HTS_INLINE int check_tag(char* from,const char* tag) { char* a=from+1; int i=0; @@ -649,7 +649,7 @@ HTS_INLINE int check_tag(char* from,const char* tag) { return (strfield2(s,tag)); // comparer } -// teste si un fichier dépasse le quota +// teste si un fichier dépasse le quota int istoobig(httrackp *opt,LLint size,LLint maxhtml,LLint maxnhtml,char* type) { int ok=1; if (size>0) { @@ -709,7 +709,7 @@ HTSEXT_API int hts_buildtopindex(httrackp* opt,const char* path,const char* binp fpo=fopen(fconcat(catbuff, rpath,"/index.html"),"wb"); if (fpo) { find_handle h; - verif_backblue(opt,concat(catbuff, rpath,"/")); // générer gif + verif_backblue(opt,concat(catbuff, rpath,"/")); // générer gif // Header fprintf(fpo,toptemplate_header, "<!-- Mirror and index made by HTTrack Website Copier/"HTTRACK_VERSION" "HTTRACK_AFF_AUTHORS" -->" diff --git a/src/htsweb.c b/src/htsweb.c index 5c0a5d8..577e77d 100644 --- a/src/htsweb.c +++ b/src/htsweb.c @@ -403,7 +403,7 @@ int __cdecl htsshow_postprocesshtml(t_hts_callbackarg *carg, httrackp *opt, char int __cdecl htsshow_checkhtml(t_hts_callbackarg *carg, httrackp *opt, char* html,int len,const char* url_address,const char* url_file) { return 1; } -int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_back* back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time, hts_stat_struct* stats) { // appelé à chaque boucle de HTTrack +int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_back* back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time, hts_stat_struct* stats) { // appelé à chaque boucle de HTTrack static TStamp prev_mytime=0; /* ok */ static t_InpInfo SInfo; /* ok */ // @@ -493,7 +493,7 @@ int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_back* back // parcourir registre des liens - if (back_index>=0 && back_max > 0) { // seulement si index passé + if (back_index>=0 && back_max > 0) { // seulement si index passé int j,k; int index=0; int ok=0; // idem @@ -514,7 +514,7 @@ int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_back* back } } for(k=0;k<2;k++) { // 0: lien en cours 1: autres liens - for(j=0;(j<3) && (index<NStatsBuffer);j++) { // passe de priorité + for(j=0;(j<3) && (index<NStatsBuffer);j++) { // passe de priorité int _i; for(_i=0+k;(_i< max(back_max*k,1) ) && (index<NStatsBuffer);_i++) { // no lien int i=(back_index+_i)%back_max; // commencer par le "premier" (l'actuel) @@ -552,7 +552,7 @@ int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_back* back } break; default: - if (back[i].status==STATUS_READY) { // prêt + if (back[i].status==STATUS_READY) { // prêt if ((back[i].r.statuscode==HTTP_OK)) { strcpybuff(StatsBuffer[index].state,"ready"); ok=1; } @@ -602,11 +602,11 @@ int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_back* back strcatbuff(StatsBuffer[index].name,s+l-MAX_LEN_INPROGRESS/2+2); } - if (back[i].r.totalsize>0) { // taille prédéfinie + if (back[i].r.totalsize>0) { // taille prédéfinie StatsBuffer[index].sizetot=back[i].r.totalsize; StatsBuffer[index].size=back[i].r.size; - } else { // pas de taille prédéfinie - if (back[i].status==STATUS_READY) { // prêt + } else { // pas de taille prédéfinie + if (back[i].status==STATUS_READY) { // prêt StatsBuffer[index].sizetot=back[i].r.size; StatsBuffer[index].size=back[i].r.size; } else { diff --git a/src/htswizard.c b/src/htswizard.c index ca97bb4..3bc8691 100644 --- a/src/htswizard.c +++ b/src/htswizard.c @@ -46,11 +46,11 @@ Please visit our Website: http://www.httrack.com #include <ctype.h> /* END specific definitions */ -// pour alléger la syntaxe, des raccourcis sont créés +// pour alléger la syntaxe, des raccourcis sont créés #define urladr (liens[ptr]->adr) #define urlfil (liens[ptr]->fil) -// libérer filters[0] pour insérer un élément dans filters[0] +// libérer filters[0] pour insérer un élément dans filters[0] #define HT_INSERT_FILTERS0 do {\ int i;\ if (*opt->filters.filptr > 0) {\ @@ -95,7 +95,7 @@ httrackp opt bloc d'options int ptr,int lien_tot,lien_url** liens relatif aux liens char* adr,char* fil - adresse/fichier à tester + adresse/fichier à tester char** filters,int filptr,int filter_max relatif aux filtres robots_wizard* robots @@ -103,10 +103,10 @@ robots_wizard* robots int* set_prio_to callback obligatoire "capturer ce lien avec prio=N-1" int* just_test_it - callback optionnel "ne faire que tester ce lien éventuellement" + callback optionnel "ne faire que tester ce lien éventuellement" retour: -0 accepté -1 refusé +0 accepté +1 refusé -1 pas d'avis */ @@ -192,7 +192,7 @@ static int hts_acceptlink_(httrackp* opt, if ((opt->getmode & 2)==0) { // non on ne doit pas if (!ishtml(opt,fil)) { // non il ne faut pas //adr[0]='\0'; // ne pas traiter ce lien, pas traiter - forbidden_url=1; // interdire récupération du lien + forbidden_url=1; // interdire récupération du lien hts_log_print(opt, LOG_DEBUG, "non-html file ignored at %s : %s",adr,fil); } @@ -201,12 +201,12 @@ static int hts_acceptlink_(httrackp* opt, /* Niveau 1: ne pas parser suivant! */ if (ptr>0) { if ( ( liens[ptr]->depth <= 0 ) || ( liens[ptr]->depth <= 1 && !embedded_triggered ) ) { - forbidden_url=1; // interdire récupération du lien + forbidden_url=1; // interdire récupération du lien hts_log_print(opt, LOG_DEBUG, "file from too far level ignored at %s : %s",adr,fil); } } - /* en cas d'échec en phase 1, retour immédiat! */ + /* en cas d'échec en phase 1, retour immédiat! */ if (forbidden_url == 1) { return forbidden_url; } @@ -214,50 +214,50 @@ static int hts_acceptlink_(httrackp* opt, // -------------------- PHASE 2 -------------------- // ------------------------------------------------------ - // doit-on traiter ce lien?.. vérifier droits de déplacement + // doit-on traiter ce lien?.. vérifier droits de déplacement meme_adresse=strfield2(adr,urladr); if (meme_adresse) hts_log_print(opt, LOG_DEBUG, "Compare addresses: %s=%s",adr,urladr); else hts_log_print(opt, LOG_DEBUG, "Compare addresses: %s!=%s",adr,urladr); - if (meme_adresse) { // même adresse + if (meme_adresse) { // même adresse { // tester interdiction de descendre - // MODIFIE : en cas de remontée puis de redescente, il se pouvait qu'on ne puisse pas atteindre certains fichiers - // problème: si un fichier est virtuellement accessible via une page mais dont le lien est sur une autre *uniquement*.. + // MODIFIE : en cas de remontée puis de redescente, il se pouvait qu'on ne puisse pas atteindre certains fichiers + // problème: si un fichier est virtuellement accessible via une page mais dont le lien est sur une autre *uniquement*.. char BIGSTK tempo[HTS_URLMAXSIZE*2]; char BIGSTK tempo2[HTS_URLMAXSIZE*2]; tempo[0] = tempo2[0] = '\0'; - // note (up/down): on calcule à partir du lien primaire, ET du lien précédent. + // note (up/down): on calcule à partir du lien primaire, ET du lien précédent. // ex: si on descend 2 fois on peut remonter 1 fois if (lienrelatif(tempo,fil,liens[liens[ptr]->premier]->fil)==0) { if (lienrelatif(tempo2,fil,liens[ptr]->fil)==0) { hts_log_print(opt, LOG_DEBUG, "build relative links to test: %s %s (with %s and %s)",tempo,tempo2,liens[liens[ptr]->premier]->fil,liens[ptr]->fil); - // si vient de primary, ne pas tester lienrelatif avec (car host "différent") + // si vient de primary, ne pas tester lienrelatif avec (car host "différent") /*if (liens[liens[ptr]->premier] == 0) { // vient de primary } */ - // NEW: finalement OK, sauf pour les moved repérés par link_import - // PROBLEME : annulé a cause d'un lien éventuel isolé accepté..qui entrainerait un miroir + // NEW: finalement OK, sauf pour les moved repérés par link_import + // PROBLEME : annulé a cause d'un lien éventuel isolé accepté..qui entrainerait un miroir - // (test même niveau (NOUVEAU à cause de certains problèmes de filtres non intégrés)) + // (test même niveau (NOUVEAU à cause de certains problèmes de filtres non intégrés)) // NEW if ( (tempo[0] != '\0' && tempo[1] != '\0' && strchr(tempo+1,'/') == 0) || (tempo2[0] != '\0' && tempo2[1] != '\0' && strchr(tempo2+1,'/') == 0) ) { - if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' + if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' forbidden_url=0; hts_log_print(opt, LOG_DEBUG, "same level link authorized: %s%s",adr,fil); } } // down - if ( (strncmp(tempo,"../",3)) || (strncmp(tempo2,"../",3))) { // pas montée sinon ne nbous concerne pas + if ( (strncmp(tempo,"../",3)) || (strncmp(tempo2,"../",3))) { // pas montée sinon ne nbous concerne pas int test1,test2; if (!strncmp(tempo,"../",3)) test1=0; @@ -271,15 +271,15 @@ static int hts_acceptlink_(httrackp* opt, if ((opt->seeker & 1)==0) { // interdiction de descendre forbidden_url=1; hts_log_print(opt, LOG_DEBUG, "lower link canceled: %s%s",adr,fil); - } else { // autorisé à priori - NEW - if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' + } else { // autorisé à priori - NEW + if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' forbidden_url=0; hts_log_print(opt, LOG_DEBUG, "lower link authorized: %s%s",adr,fil); } } - } else if ( (test1) || (test2) ) { // on peut descendre pour accéder au lien + } else if ( (test1) || (test2) ) { // on peut descendre pour accéder au lien if ((opt->seeker & 1)!=0) { // on peut descendre - NEW - if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' + if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' forbidden_url=0; hts_log_print(opt, LOG_DEBUG, "lower link authorized: %s%s",adr,fil); } @@ -293,19 +293,19 @@ static int hts_acceptlink_(httrackp* opt, if ((opt->seeker & 2)==0) { // interdiction de monter forbidden_url=1; hts_log_print(opt, LOG_DEBUG, "upper link canceled: %s%s",adr,fil); - } else { // autorisé à monter - NEW - if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' + } else { // autorisé à monter - NEW + if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' forbidden_url=0; hts_log_print(opt, LOG_DEBUG, "upper link authorized: %s%s",adr,fil); } } } else if ( (!strncmp(tempo,"../",3)) || (!strncmp(tempo2,"../",3)) ) { // Possible en montant - if ((opt->seeker & 2)!=0) { // autorisé à monter - NEW - if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' + if ((opt->seeker & 2)!=0) { // autorisé à monter - NEW + if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' forbidden_url=0; hts_log_print(opt, LOG_DEBUG, "upper link authorized: %s%s",adr,fil); } - } // sinon autorisé en descente + } // sinon autorisé en descente } @@ -332,16 +332,16 @@ static int hts_acceptlink_(httrackp* opt, } } // fin tester interdiction de monter - } else { // adresse différente, sortir? + } else { // adresse différente, sortir? //if (!opt->wizard) { // mode non wizard - // doit-on traiter ce lien?.. vérifier droits de sortie + // doit-on traiter ce lien?.. vérifier droits de sortie switch((opt->travel & 255)) { case 0: if (!opt->wizard) // mode non wizard forbidden_url=1; break; // interdicton de sortir au dela de l'adresse - case 1: { // sortie sur le même dom.xxx + case 1: { // sortie sur le même dom.xxx size_t i = strlen(adr)-1; size_t j = strlen(urladr)-1; if ((i>0) && (j>0)) { @@ -357,13 +357,13 @@ static int hts_acceptlink_(httrackp* opt, if (!strfield2(adr+i,urladr+j)) { // != if (!opt->wizard) { // mode non wizard //printf("refused: %s\n",adr); - forbidden_url=1; // pas même domaine + forbidden_url=1; // pas même domaine hts_log_print(opt, LOG_DEBUG, "foreign domain link canceled: %s%s",adr,fil); } } else { if (opt->wizard) { // mode wizard - forbidden_url=0; // même domaine + forbidden_url=0; // même domaine hts_log_print(opt, LOG_DEBUG, "same domain link authorized: %s%s",adr,fil); } } @@ -372,7 +372,7 @@ static int hts_acceptlink_(httrackp* opt, forbidden_url=1; } break; - case 2: { // sortie sur le même .xxx + case 2: { // sortie sur le même .xxx size_t i = strlen(adr)-1; size_t j = strlen(urladr)-1; while( (i>0) && (adr[i]!='.')) i--; @@ -381,12 +381,12 @@ static int hts_acceptlink_(httrackp* opt, if (!strfield2(adr+i,urladr+j)) { // !- if (!opt->wizard) { // mode non wizard //printf("refused: %s\n",adr); - forbidden_url=1; // pas même .xx + forbidden_url=1; // pas même .xx hts_log_print(opt, LOG_DEBUG, "foreign location link canceled: %s%s",adr,fil); } } else { if (opt->wizard) { // mode wizard - forbidden_url=0; // même domaine + forbidden_url=0; // même domaine hts_log_print(opt, LOG_DEBUG, "same location link authorized: %s%s",adr,fil); } } @@ -400,13 +400,13 @@ static int hts_acceptlink_(httrackp* opt, } } // switch - // ANCIENNE POS -- récupérer les liens à côtés d'un lien (nearlink) + // ANCIENNE POS -- récupérer les liens à côtés d'un lien (nearlink) - } // fin test adresse identique/différente + } // fin test adresse identique/différente // -------------------- PHASE 3 -------------------- - // récupérer les liens à côtés d'un lien (nearlink) (nvelle pos) + // récupérer les liens à côtés d'un lien (nearlink) (nvelle pos) if (forbidden_url != 0 && opt->nearlink) { if (!ishtml(opt,fil)) { // non html //printf("ok %s%s\n",ad,fil); @@ -430,19 +430,19 @@ static int hts_acceptlink_(httrackp* opt, // ------------------------------------------------------ // Si wizard, il se peut qu'on autorise ou qu'on interdise - // un lien spécial avant même de tester sa position, sa hiérarchie etc. - // peut court-circuiter le forbidden_url précédent + // un lien spécial avant même de tester sa position, sa hiérarchie etc. + // peut court-circuiter le forbidden_url précédent if (opt->wizard) { // le wizard entre en action.. // int question=1; // poser une question int force_mirror=0; // pour mirror links - int filters_answer=0; // décision prise par les filtres + int filters_answer=0; // décision prise par les filtres char BIGSTK l[HTS_URLMAXSIZE*2]; char BIGSTK lfull[HTS_URLMAXSIZE*2]; - if (forbidden_url!=-1) question=0; // pas de question, résolu + if (forbidden_url!=-1) question=0; // pas de question, résolu - // former URL complète du lien actuel + // former URL complète du lien actuel strcpybuff(l,jump_identification(adr)); if (*fil!='/') strcatbuff(l,"/"); strcatbuff(l,fil); @@ -455,16 +455,16 @@ static int hts_acceptlink_(httrackp* opt, if (*fil!='/') strcatbuff(lfull,"/"); strcatbuff(lfull,fil); - // tester filters (URLs autorisées ou interdites explicitement) + // tester filters (URLs autorisées ou interdites explicitement) - // si lien primaire on saute le joker, on est pas lémur + // si lien primaire on saute le joker, on est pas lémur if (ptr==0) { // lien primaire, autoriser - question=1; // la question sera résolue automatiquement + question=1; // la question sera résolue automatiquement forbidden_url=0; may_set_prio_to=0; // clear may-set flag } else { // eternal depth first - // vérifier récursivité extérieure + // vérifier récursivité extérieure if (opt->extdepth>0) { if ( /*question && */ (ptr>0) && (!force_mirror)) { // well, this is kinda a hak @@ -476,8 +476,8 @@ static int hts_acceptlink_(httrackp* opt, // *set_prio_to = opt->extdepth + 1; *set_prio_to = 1 + (opt->extdepth); may_set_prio_to=0; // clear may-set flag - forbidden_url=0; // autorisé - question=0; // résolution auto + forbidden_url=0; // autorisé + question=0; // résolution auto if (question) { hts_log_print(opt, LOG_DEBUG, "(wizard) ambiguous link accepted (external depth): link %s at %s%s",l,urladr,urlfil); } else { @@ -513,28 +513,28 @@ static int hts_acceptlink_(httrackp* opt, } } - if (jok == 1) { // autorisé - filters_answer=1; // décision prise par les filtres - question=0; // ne pas poser de question, autorisé - forbidden_url=0; // URL autorisée + if (jok == 1) { // autorisé + filters_answer=1; // décision prise par les filtres + question=0; // ne pas poser de question, autorisé + forbidden_url=0; // URL autorisée may_set_prio_to=0; // clear may-set flag hts_log_print(opt, LOG_DEBUG, "(wizard) explicit authorized (%s) link: link %s at %s%s",mdepth,l,urladr,urlfil); } else if (jok == -1) { // forbidden - filters_answer=1; // décision prise par les filtres + filters_answer=1; // décision prise par les filtres question=0; // ne pas poser de question: forbidden_url=1; // URL interdite hts_log_print(opt, LOG_DEBUG, "(wizard) explicit forbidden (%s) link: link %s at %s%s",mdepth,l,urladr,urlfil); - } // sinon on touche à rien + } // sinon on touche à rien } } - // vérifier mode mirror links + // vérifier mode mirror links if (question) { if (opt->mirror_first_page) { // mode mirror links if (liens[ptr]->precedent==0) { // parent=primary! - forbidden_url=0; // autorisé + forbidden_url=0; // autorisé may_set_prio_to=0; // clear may-set flag - question=1; // résolution auto + question=1; // résolution auto force_mirror=5; // mirror (5) hts_log_print(opt, LOG_DEBUG, "(wizard) explicit mirror link: link %s at %s%s",l,urladr,urlfil); } @@ -542,23 +542,23 @@ static int hts_acceptlink_(httrackp* opt, } // on doit poser la question.. peut on la poser? - // (oui je sais quel preuve de délicatesse, merci merci) + // (oui je sais quel preuve de délicatesse, merci merci) if ((question) && (ptr>0) && (!force_mirror)) { - if (opt->wizard==2) { // éliminer tous les liens non répertoriés comme autorisés (ou inconnus) + if (opt->wizard==2) { // éliminer tous les liens non répertoriés comme autorisés (ou inconnus) question=0; forbidden_url=1; hts_log_print(opt, LOG_DEBUG, "(wizard) ambiguous forbidden link: link %s at %s%s",l,urladr,urlfil); } } - // vérifier robots.txt + // vérifier robots.txt if (opt->robots) { int r = checkrobots(_ROBOTS,adr,fil); if (r == -1) { // interdiction #if DEBUG_ROBOTS printf("robots.txt forbidden: %s%s\n",adr,fil); #endif - // question résolue, par les filtres, et mode robot non strict + // question résolue, par les filtres, et mode robot non strict if ((!question) && (filters_answer) && (opt->robots == 1) && (forbidden_url!=1)) { r=0; // annuler interdiction des robots if (!forbidden_url) { @@ -598,7 +598,7 @@ static int hts_acceptlink_(httrackp* opt, strcatbuff(tempo,adr); strcatbuff(tempo,fil); s = RUN_CALLBACK1(opt, query3, tempo); - if (strnotempty(s)==0) // entrée + if (strnotempty(s)==0) // entrée n=0; else if (isdigit((unsigned char)*s)) sscanf(s,"%d",&n); @@ -623,12 +623,12 @@ static int hts_acceptlink_(httrackp* opt, } } io_flush; - } else { // lien primaire: autoriser répertoire entier + } else { // lien primaire: autoriser répertoire entier if (!force_mirror) { if ((opt->seeker & 1)==0) { // interdiction de descendre n=7; } else { - n=5; // autoriser miroir répertoires descendants (lien primaire) + n=5; // autoriser miroir répertoires descendants (lien primaire) } } else // forcer valeur (sub-wizard) n=force_mirror; @@ -652,22 +652,22 @@ static int hts_acceptlink_(httrackp* opt, forbidden_url=1; opt->wizard=2; // sauter tout le reste break; - case 0: // interdire les mêmes liens: adr/fil + case 0: // interdire les mêmes liens: adr/fil forbidden_url=1; - HT_INSERT_FILTERS0; // insérer en 0 + HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(_FILTERS[0],"-"); strcatbuff(_FILTERS[0],jump_identification(adr)); if (*fil!='/') strcatbuff(_FILTERS[0],"/"); strcatbuff(_FILTERS[0],fil); break; - case 1: // éliminer répertoire entier et sous rép: adr/path/ * + case 1: // éliminer répertoire entier et sous rép: adr/path/ * forbidden_url=1; { size_t i = strlen(fil)-1; while((fil[i]!='/') && (i>0)) i--; if (fil[i]=='/') { - HT_INSERT_FILTERS0; // insérer en 0 + HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(_FILTERS[0],"-"); strcatbuff(_FILTERS[0],jump_identification(adr)); if (*fil!='/') strcatbuff(_FILTERS[0],"/"); @@ -683,7 +683,7 @@ static int hts_acceptlink_(httrackp* opt, case 2: // adresse adr* forbidden_url=1; - HT_INSERT_FILTERS0; // insérer en 0 + HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(_FILTERS[0],"-"); strcatbuff(_FILTERS[0],jump_identification(adr)); strcatbuff(_FILTERS[0],"*"); @@ -705,26 +705,26 @@ static int hts_acceptlink_(httrackp* opt, // case 4: // same link // PAS BESOIN!! - /*HT_INSERT_FILTERS0; // insérer en 0 + /*HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(_FILTERS[0],"+"); strcatbuff(_FILTERS[0],adr); if (*fil!='/') strcatbuff(_FILTERS[0],"/"); strcatbuff(_FILTERS[0],fil);*/ - // étant donné le renversement wizard/primary filter (les primary autorisent up/down ET interdisent) - // il faut éviter d'un lien isolé effectue un miroir total.. + // étant donné le renversement wizard/primary filter (les primary autorisent up/down ET interdisent) + // il faut éviter d'un lien isolé effectue un miroir total.. - *set_prio_to = 0+1; // niveau de récursion=0 (pas de miroir) + *set_prio_to = 0+1; // niveau de récursion=0 (pas de miroir) break; - case 5: // autoriser répertoire entier et fils + case 5: // autoriser répertoire entier et fils if ((opt->seeker & 2)==0) { // interdiction de monter size_t i = strlen(fil)-1; while((fil[i]!='/') && (i>0)) i--; if (fil[i]=='/') { - HT_INSERT_FILTERS0; // insérer en 0 + HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(_FILTERS[0],"+"); strcatbuff(_FILTERS[0],jump_identification(adr)); if (*fil!='/') strcatbuff(_FILTERS[0],"/"); @@ -732,7 +732,7 @@ static int hts_acceptlink_(httrackp* opt, strcatbuff(_FILTERS[0],"*"); } } else { // autoriser domaine alors!! - HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(filters[filptr],"+"); + HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(filters[filptr],"+"); strcpybuff(_FILTERS[0],"+"); strcatbuff(_FILTERS[0],jump_identification(adr)); strcatbuff(_FILTERS[0],"*"); @@ -740,18 +740,18 @@ static int hts_acceptlink_(httrackp* opt, break; case 6: // same domain - HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(filters[filptr],"+"); + HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(filters[filptr],"+"); strcpybuff(_FILTERS[0],"+"); strcatbuff(_FILTERS[0],jump_identification(adr)); strcatbuff(_FILTERS[0],"*"); break; // - case 7: // autoriser ce répertoire + case 7: // autoriser ce répertoire { size_t i = strlen(fil)-1; while((fil[i]!='/') && (i>0)) i--; if (fil[i]=='/') { - HT_INSERT_FILTERS0; // insérer en 0 + HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(_FILTERS[0],"+"); strcatbuff(_FILTERS[0],jump_identification(adr)); if (*fil!='/') strcatbuff(_FILTERS[0],"/"); @@ -771,16 +771,16 @@ static int hts_acceptlink_(httrackp* opt, // -------------------- PHASE 5 -------------------- - // lien non autorisé, peut-on juste le tester? + // lien non autorisé, peut-on juste le tester? if (just_test_it) { if (forbidden_url==1) { - if (opt->travel&256) { // tester tout de même + if (opt->travel&256) { // tester tout de même if (strfield(adr,"ftp://")==0 #if HTS_USEMMS && strfield(adr,"mms://")==0 #endif ) { // PAS ftp! - forbidden_url=1; // oui oui toujours interdit (note: sert à rien car ==1 mais c pour comprendre) + forbidden_url=1; // oui oui toujours interdit (note: sert à rien car ==1 mais c pour comprendre) *just_test_it=1; // mais on teste hts_log_print(opt, LOG_DEBUG, "Testing link %s%s",adr,fil); } @@ -818,13 +818,13 @@ int hts_acceptmime(httrackp* opt, jok = fa_strjoker(/*mime*/1, _FILTERS, *_FILTERS_PTR, mime, NULL, NULL, &jokDepth); if (jok != 0) { mdepth = _FILTERS[jokDepth]; - if (jok == 1) { // autorisé - forbidden_url=0; // URL autorisée + if (jok == 1) { // autorisé + forbidden_url=0; // URL autorisée hts_log_print(opt, LOG_DEBUG, "(wizard) explicit authorized (%s) link %s%s: mime '%s'",mdepth,adr,fil,mime); } else if (jok == -1) { // forbidden forbidden_url=1; // URL interdite hts_log_print(opt, LOG_DEBUG, "(wizard) explicit forbidden (%s) link %s%s: mime '%s'",mdepth,adr,fil,mime); - } // sinon on touche à rien + } // sinon on touche à rien } /* userdef test */ { @@ -851,7 +851,7 @@ int hts_testlinksize(httrackp* opt, LLint sz=size; int size_flag=0; - // former URL complète du lien actuel + // former URL complète du lien actuel strcpybuff(l,jump_identification(adr)); if (*fil!='/') strcatbuff(l,"/"); strcatbuff(l,fil); @@ -896,7 +896,7 @@ int hts_testlinksize(httrackp* opt, if (jok==1) { hts_log_print(opt, LOG_DEBUG, "File confirmed (size test): %s%s ("LLintP")",adr,fil,(LLint)(size)); } else if (jok==-1) { - if (size_flag) { /* interdit à cause de la taille */ + if (size_flag) { /* interdit à cause de la taille */ hts_log_print(opt, LOG_DEBUG, "File cancelled due to its size: %s%s ("LLintP", limit: "LLintP")",adr,fil,(LLint)(size),(LLint)(sz)); } else { jok=1; diff --git a/src/httrack.c b/src/httrack.c index 61782b3..eaea638 100644 --- a/src/httrack.c +++ b/src/httrack.c @@ -260,7 +260,7 @@ static int __cdecl htsshow_postprocesshtml(t_hts_callbackarg *carg, httrackp *op static int __cdecl htsshow_checkhtml(t_hts_callbackarg *carg, httrackp *opt, char* html,int len,const char* url_address,const char* url_file) { return 1; } -static int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_back* back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time, hts_stat_struct* stats) { // appelé à chaque boucle de HTTrack +static int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_back* back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time, hts_stat_struct* stats) { // appelé à chaque boucle de HTTrack static TStamp prev_mytime=0; /* ok */ static t_InpInfo SInfo; /* ok */ // @@ -387,7 +387,7 @@ static int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_bac // parcourir registre des liens - if (back_index>=0) { // seulement si index passé + if (back_index>=0) { // seulement si index passé int j,k; int index=0; int ok=0; // idem @@ -408,7 +408,7 @@ static int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_bac } } for(k=0;k<2;k++) { // 0: lien en cours 1: autres liens - for(j=0;(j<3) && (index<NStatsBuffer);j++) { // passe de priorité + for(j=0;(j<3) && (index<NStatsBuffer);j++) { // passe de priorité int _i; for(_i=0+k;(_i< max(back_max*k,1) ) && (index<NStatsBuffer);_i++) { // no lien int i=(back_index+_i)%back_max; // commencer par le "premier" (l'actuel) @@ -436,7 +436,7 @@ static int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_bac } break; default: - if (back[i].status==STATUS_READY) { // prêt + if (back[i].status==STATUS_READY) { // prêt if ((back[i].r.statuscode==200)) { strcpybuff(StatsBuffer[index].state,"ready"); ok=1; } @@ -486,11 +486,11 @@ static int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_bac strcatbuff(StatsBuffer[index].name,s+l-MAX_LEN_INPROGRESS/2+2); } - if (back[i].r.totalsize>=0) { // taille prédéfinie + if (back[i].r.totalsize>=0) { // taille prédéfinie StatsBuffer[index].sizetot=back[i].r.totalsize; StatsBuffer[index].size=back[i].r.size; - } else { // pas de taille prédéfinie - if (back[i].status==STATUS_READY) { // prêt + } else { // pas de taille prédéfinie + if (back[i].status==STATUS_READY) { // prêt StatsBuffer[index].sizetot=back[i].r.size; StatsBuffer[index].size=back[i].r.size; } else { @@ -660,7 +660,7 @@ static int linput(FILE* fp,char* s,int max) { switch(c) { case 13: break; // sauter CR case 10: c=-1; break; - case 9: case 12: break; // sauter ces caractères + case 9: case 12: break; // sauter ces caractères default: s[j++]=(char) c; break; } } @@ -670,7 +670,7 @@ static int linput(FILE* fp,char* s,int max) { } -// routines de détournement de SIGHUP & co (Unix) +// routines de détournement de SIGHUP & co (Unix) // static void sig_ignore( int code ) { // ignorer signal } @@ -728,9 +728,9 @@ static void sig_ask( int code ) { // demander if ( (s[0]=='y') || (s[0]=='Y') || (s[0]=='o') || (s[0]=='O') || (s[0]=='q') || (s[0]=='Q')) exit(0); // quitter else if ( (s[0]=='b') || (s[0]=='B') || (s[0]=='a') || (s[0]=='A') ) - sig_doback(0); // arrière plan + sig_doback(0); // arrière plan else if ( (s[0]=='l') || (s[0]=='L') ) - sig_doback(1); // arrière plan + sig_doback(1); // arrière plan else if ( (s[0]=='i') || (s[0]=='I') ) { if (global_opt != NULL) { // ask for stop @@ -820,4 +820,4 @@ static void signal_handlers(void) { #endif } -// fin routines de détournement de SIGHUP & co +// fin routines de détournement de SIGHUP & co diff --git a/src/proxy/proxystrings.h b/src/proxy/proxystrings.h index 84c4693..23456a7 100755 --- a/src/proxy/proxystrings.h +++ b/src/proxy/proxystrings.h @@ -58,7 +58,7 @@ static void unescapehttp(const char* s, String* tempo) { i++; hc = (char) ehex(s+i); StringAddchar(*tempo, (char) hc); - i++; // sauter 2 caractères finalement + i++; // sauter 2 caractères finalement } else if (s[i]=='+') { StringAddchar(*tempo, ' '); diff --git a/src/proxy/proxytrack.c b/src/proxy/proxytrack.c index 82bf7b1..02c18d0 100644 --- a/src/proxy/proxytrack.c +++ b/src/proxy/proxytrack.c @@ -131,7 +131,7 @@ Remark: If no cache newer than the added one is found, all entries can be added /* Network base */ #include "htsbasenet.h" -/* définitions globales */ +/* définitions globales */ #include "htsglobal.h" /* htsweb */ @@ -186,7 +186,7 @@ static int linputsoc(T_SOC soc, char* s, int max) { switch(c) { case 13: break; // sauter CR case 10: c=-1; break; - case 9: case 12: break; // sauter ces caractères + case 9: case 12: break; // sauter ces caractères default: s[j++]=(char) c; break; } } @@ -521,7 +521,7 @@ static time_t get_time_rfc822(const char* s) { str[i] = s[i]; } str[i] = 0; - /* éliminer :,- */ + /* éliminer :,- */ while( (a=strchr(str,'-')) ) *a=' '; while( (a=strchr(str,':')) ) *a=' '; while( (a=strchr(str,',')) ) *a=' '; @@ -530,7 +530,7 @@ static time_t get_time_rfc822(const char* s) { while(*a) { char *first,*last; char tok[256]; - /* découper mot */ + /* découper mot */ while(*a==' ') a++; /* sauter espaces */ first=a; while((*a) && (*a!=' ')) a++; diff --git a/src/proxy/proxytrack.h b/src/proxy/proxytrack.h index 5254924..02521f0 100644 --- a/src/proxy/proxytrack.h +++ b/src/proxy/proxytrack.h @@ -142,7 +142,7 @@ static int linput(FILE* fp,char* s,int max) { switch(c) { case 13: break; // sauter CR case 10: c=-1; break; - case 0: case 9: case 12: break; // sauter ces caractères + case 0: case 9: case 12: break; // sauter ces caractères default: s[j++]=(char) c; break; } } @@ -229,7 +229,7 @@ static int linput_trim(FILE* fp,char* s,int max) { // sauter espaces et tabs en fin while( (rlen>0) && is_realspace(ls[max(rlen-1,0)]) ) ls[--rlen]='\0'; - // sauter espaces en début + // sauter espaces en début a=ls; while((rlen>0) && ((*a==' ') || (*a=='\t'))) { a++; @@ -284,7 +284,7 @@ static struct tm* convert_time_rfc822(struct tm *result,const char* s) { return NULL; strcpy(str,s); set_lowcase(str); - /* éliminer :,- */ + /* éliminer :,- */ while( (a=strchr(str,'-')) ) *a=' '; while( (a=strchr(str,':')) ) *a=' '; while( (a=strchr(str,',')) ) *a=' '; @@ -293,7 +293,7 @@ static struct tm* convert_time_rfc822(struct tm *result,const char* s) { while(*a) { char *first, *last; char tok[256]; - /* découper mot */ + /* découper mot */ while(*a==' ') a++; /* sauter espaces */ first=a; while((*a) && (*a!=' ')) a++; diff --git a/src/proxy/store.c b/src/proxy/store.c index d63c1f2..810fb29 100644 --- a/src/proxy/store.c +++ b/src/proxy/store.c @@ -1079,7 +1079,7 @@ static PT_Element PT_ReadCache__New_u(PT_Index index_, const char* url, int flag if (r->msg[0] == '\0') { strcpy(r->msg,"Cache Read Error : Unexpected error"); } - } else { // lire en mémoire + } else { // lire en mémoire if (!dataincache) { /* Read in memory from cache */ @@ -1128,7 +1128,7 @@ static PT_Element PT_ReadCache__New_u(PT_Index index_, const char* url, int flag } } } - } // si save==null, ne rien charger (juste en tête) + } // si save==null, ne rien charger (juste en tête) } else { r->statuscode=STATUSCODE_INVALID; strcpy(r->msg,"Cache Read Error : Read Header Data"); @@ -1403,7 +1403,7 @@ static int PT_LoadCache__Old(PT_Index index_, const char *filename) { free(use); use=NULL; } - } else { // non supporté + } else { // non supporté // fspc(opt->errlog,"error"); fprintf(opt->errlog,"Cache: %s not supported, ignoring current cache"LF,firstline); fclose(cache->dat); cache->dat=NULL; @@ -1597,13 +1597,13 @@ static PT_Element PT_ReadCache__Old_u(PT_Index index_, const char* url, int flag } // cache_rstr(cache->dat,check); - if (strcmp(check,"HTS")==0) { /* intégrité OK */ + if (strcmp(check,"HTS")==0) { /* intégrité OK */ ok=1; } - cache_rLLint(cache->dat, &size_read); /* lire size pour être sûr de la taille déclarée (réécrire) */ + cache_rLLint(cache->dat, &size_read); /* lire size pour être sûr de la taille déclarée (réécrire) */ if (size_read > 0) { /* si inscrite ici */ r->size = size_read; - } else { /* pas de données directement dans le cache, fichier présent? */ + } else { /* pas de données directement dans le cache, fichier présent? */ r->size = 0; } } @@ -1852,11 +1852,11 @@ static time_t getArcTimestamp(const char * const line) { struct tm tm; memset(&tm, 0, sizeof(tm)); tm.tm_year = getDigit4(pos + 0) - 1900; /* current year minus 1900 */ - tm.tm_mon = getDigit2(pos + 4) - 1; /* 0 – 11 */ - tm.tm_mday = getDigit2(pos + 6); /* 1 – 31 */ - tm.tm_hour = getDigit2(pos + 8); /* 0 – 23 */ - tm.tm_min = getDigit2(pos + 10); /* 0 – 59 */ - tm.tm_sec = getDigit2(pos + 12); /* 0 – 59 */ + tm.tm_mon = getDigit2(pos + 4) - 1; /* 0 – 11 */ + tm.tm_mday = getDigit2(pos + 6); /* 1 – 31 */ + tm.tm_hour = getDigit2(pos + 8); /* 0 – 23 */ + tm.tm_min = getDigit2(pos + 10); /* 0 – 59 */ + tm.tm_sec = getDigit2(pos + 12); /* 0 – 59 */ tm.tm_isdst = 0; return getGMT(&tm); } diff --git a/src/proxy/store.h b/src/proxy/store.h index 64c0194..b8fd4db 100644 --- a/src/proxy/store.h +++ b/src/proxy/store.h @@ -53,16 +53,16 @@ typedef struct _PT_Element { int indexId; // index identifier, if suitable (!= -1) // int statuscode; // status-code, -1=erreur, 200=OK,201=..etc (cf RFC1945) - char* adr; // adresse du bloc de mémoire, NULL=vide - char* headers; // adresse des en têtes si présents (RFC822 format) + char* adr; // adresse du bloc de mémoire, NULL=vide + char* headers; // adresse des en têtes si présents (RFC822 format) size_t size; // taille fichier char msg[1024]; // error message ("\0"=undefined) char contenttype[64]; // content-type ("text/html" par exemple) char charset[64]; // charset ("iso-8859-1" par exemple) - char* location; // on copie dedans éventuellement la véritable 'location' + char* location; // on copie dedans éventuellement la véritable 'location' char lastmodified[64]; // Last-Modified char etag[64]; // Etag - char cdispo[256]; // Content-Disposition coupé + char cdispo[256]; // Content-Disposition coupé } _PT_Element; typedef struct _PT_Element *PT_Element; |