From 0573b166b2aa2ee40be1a328636cb539d96aeeac Mon Sep 17 00:00:00 2001 From: Xavier Roche Date: Tue, 14 May 2013 19:20:14 +0000 Subject: Merge sources from windows-1252 to utf-8 --- src/htsback.c | 366 ++++++++++++++-------------- src/htsbase.h | 4 +- src/htsbauth.c | 42 ++-- src/htscache.c | 124 +++++----- src/htscatchurl.c | 20 +- src/htsconfig.h | 42 ++-- src/htscore.c | 254 +++++++++---------- src/htscore.h | 54 ++-- src/htscoremain.c | 112 ++++----- src/htscoremain.h | 2 +- src/htsfilters.c | 56 ++--- src/htsftp.c | 80 +++--- src/htsglobal.h | 28 +-- src/htshash.c | 40 +-- src/htshelp.c | 4 +- src/htsindex.c | 22 +- src/htsjava.c | 4 +- src/htslib.c | 402 +++++++++++++++--------------- src/htslib.h | 62 ++--- src/htsname.c | 174 ++++++------- src/htsopt.h | 88 +++---- src/htsparse.c | 622 +++++++++++++++++++++++------------------------ src/htsrobots.c | 4 +- src/htsserver.c | 8 +- src/htsserver.h | 10 +- src/htstools.c | 52 ++-- src/htsweb.c | 14 +- src/htswizard.c | 180 +++++++------- src/httrack.c | 24 +- src/proxy/proxystrings.h | 2 +- src/proxy/proxytrack.c | 8 +- src/proxy/proxytrack.h | 8 +- src/proxy/store.c | 22 +- src/proxy/store.h | 8 +- 34 files changed, 1471 insertions(+), 1471 deletions(-) (limited to 'src') 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;ivalue.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;infds) { - // 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;i0) 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;i0) { // 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 ( 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((ptrpass2):0) ptr++; @@ -1812,7 +1812,7 @@ jump_if_done: while((ptrpass2):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=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;iadr_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 + // if (*s=='/') strcpybuff(fname,s+1); else strcpybuff(fname,s); // pas de / (root!!) // ** SIIIIIII!!! à cause de -O 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)maxcache) { // pas trop en mémoire? + if (back_incache(sback)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 (pptr_ant) p=cache->ptr_ant; while( (p0) && back_checkmirror(opt)) { //while((p0) && (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 #include #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 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, :port + if (*a == ':') { // un port est présent, :port sscanf(a+1,"%d",&opt->proxy.port); StringCopyN(opt->proxy.name,argv[na],(int) (a - argv[na])); } else { // @@ -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 /* 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=0) { if (size_flag) - *size_flag=1; /* a joué */ + *size_flag=1; /* a joué */ if (joker[i-1]=='<') lverdict=(*sizepBack->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="" 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=" */ +/* détection "...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)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 char inscript_tag_lastc='\0'; // terminaison (" ou ') du " 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 */ if (opt->parsedebug) { HT_ADD("<@@ inscript @@>"); } inscript_name="script"; - intag=1; // because après