diff options
author | Xavier Roche <xroche@users.noreply.github.com> | 2012-03-19 12:51:31 +0000 |
---|---|---|
committer | Xavier Roche <xroche@users.noreply.github.com> | 2012-03-19 12:51:31 +0000 |
commit | 25adbdabb47499fe641c7bd9595024ff82667058 (patch) | |
tree | 4200bb5e746bc1c0606de615ec99f0a247d4d9ba /src/htscore.h | |
parent | ad5b7acc19290ff91e0f42a0de448a26760fcf99 (diff) |
httrack 3.30.1
Diffstat (limited to 'src/htscore.h')
-rw-r--r-- | src/htscore.h | 125 |
1 files changed, 80 insertions, 45 deletions
diff --git a/src/htscore.h b/src/htscore.h index a50aac8..d9e5d0a 100644 --- a/src/htscore.h +++ b/src/htscore.h @@ -55,8 +55,10 @@ Please visit our Website: http://www.httrack.com #include <direct.h> #else #include <signal.h> +#ifdef HAVE_UNISTD_H #include <unistd.h> #endif +#endif /* END specific definitions */ @@ -69,13 +71,13 @@ Please visit our Website: http://www.httrack.com typedef struct { 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 - short int depth; // profondeur autorisée lien ; >0 forte 0=faible - short int pass2; // traiter après les autres, seconde passe. si == -1, lien traité en background + 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 - short int retry; // nombre de retry restants - short int testmode; // mode test uniquement, envoyer juste un head! + //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) @@ -101,10 +103,11 @@ typedef struct { 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[HTS_URLMAXSIZE*2]; // nom à sauver temporairement (compressé) + 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 testmode; // mode de test + int status; // status (-1=non utilisé, 0: prêt, >0: opération en cours) + int testmode; // mode de test 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) @@ -112,20 +115,23 @@ typedef struct { 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 - short int is_update; // mode update + int is_update; // mode update 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 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) // - short int* pass2_ptr; // pointeur sur liens[ptr]->pass2 + int* pass2_ptr; // pointeur sur liens[ptr]->pass2 // - char info[256]; // éventuel status pour le ftp - int stop_ftp; // flag stop pour ftp + char info[256]; // éventuel status pour le ftp + int stop_ftp; // flag stop pour ftp + int finalized; // finalized (optim memory) #if DEBUG_CHECKINT char magic2; #endif @@ -136,6 +142,7 @@ typedef struct { int version; // 0 ou 1 /* */ int type; + int ro; FILE *dat,*ndx,*olddat; char *use; // liste des adr+fil FILE *lst; // liste des fichiers pour la "purge" @@ -209,6 +216,7 @@ typedef struct { // gestion hashage #include "htshash.h" +#include "htsinthash.h" // gestion réentrance #include "htsnostatic.h" @@ -236,42 +244,57 @@ typedef int (* t_hts_htmlcheck)(char* html,int len,char* url_adresse,char* url typedef char* (* t_hts_htmlcheck_query)(char* question); typedef char* (* t_hts_htmlcheck_query2)(char* question); typedef char* (* t_hts_htmlcheck_query3)(char* question); -typedef int (* t_hts_htmlcheck_loop)(lien_back* back,int back_max,int back_index,int lien_tot,int lien_ntot,LLint stat_bytes,LLint stat_bytes_recv,int stat_time,int stat_nsocket, LLint stat_written, int stat_updated, int stat_errors, int irate, int nbk ); +typedef int (* t_hts_htmlcheck_loop)(lien_back* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,hts_stat_struct* stats); typedef int (* t_hts_htmlcheck_check)(char* adr,char* fil,int status); typedef void (* t_hts_htmlcheck_pause)(char* lockfile); +typedef void (* t_hts_htmlcheck_filesave)(char* file); +typedef int (* t_hts_htmlcheck_linkdetected)(char* link); +typedef int (* t_hts_htmlcheck_xfrstatus)(lien_back* back); +typedef int (* t_hts_htmlcheck_savename)(char* adr_complete,char* fil_complete,char* referer_adr,char* referer_fil,char* save); +typedef int (* t_hts_htmlcheck_sendhead)(char* buff, char* adr, char* fil, char* referer_adr, char* referer_fil, htsblk* outgoing); +typedef int (* t_hts_htmlcheck_receivehead)(char* buff, char* adr, char* fil, char* referer_adr, char* referer_fil, htsblk* incoming); */ // demande d'interaction avec le shell #if HTS_ANALYSTE //char HTbuff[1024]; /* -extern t_hts_htmlcheck_init hts_htmlcheck_init; -extern t_hts_htmlcheck_uninit hts_htmlcheck_uninit; -extern t_hts_htmlcheck_start hts_htmlcheck_start; -extern t_hts_htmlcheck_end hts_htmlcheck_end; -extern t_hts_htmlcheck_chopt hts_htmlcheck_chopt; -extern t_hts_htmlcheck hts_htmlcheck; -extern t_hts_htmlcheck_query hts_htmlcheck_query; -extern t_hts_htmlcheck_query2 hts_htmlcheck_query2; -extern t_hts_htmlcheck_query3 hts_htmlcheck_query3; -extern t_hts_htmlcheck_loop hts_htmlcheck_loop; -extern t_hts_htmlcheck_check hts_htmlcheck_check; -extern t_hts_htmlcheck_pause hts_htmlcheck_pause; +extern t_hts_htmlcheck_init hts_htmlcheck_init; +extern t_hts_htmlcheck_uninit hts_htmlcheck_uninit; +extern t_hts_htmlcheck_start hts_htmlcheck_start; +extern t_hts_htmlcheck_end hts_htmlcheck_end; +extern t_hts_htmlcheck_chopt hts_htmlcheck_chopt; +extern t_hts_htmlcheck hts_htmlcheck; +extern t_hts_htmlcheck_query hts_htmlcheck_query; +extern t_hts_htmlcheck_query2 hts_htmlcheck_query2; +extern t_hts_htmlcheck_query3 hts_htmlcheck_query3; +extern t_hts_htmlcheck_loop hts_htmlcheck_loop; +extern t_hts_htmlcheck_check hts_htmlcheck_check; +extern t_hts_htmlcheck_pause hts_htmlcheck_pause; +extern t_hts_htmlcheck_filesave hts_htmlcheck_filesave; +extern t_hts_htmlcheck_linkdetected hts_htmlcheck_linkdetected; +extern t_hts_htmlcheck_xfrstatus hts_htmlcheck_xfrstatus; +extern t_hts_htmlcheck_savename hts_htmlcheck_savename; +extern t_hts_htmlcheck_sendhead hts_htmlcheck_sendhead; +extern t_hts_htmlcheck_receivehead hts_htmlcheck_receivehead; */ // -int hts_is_parsing(int flag); -int hts_is_testing(void); -int hts_setopt(httrackp* opt); -int hts_addurl(char** url); -int hts_resetaddurl(void); -int copy_htsopt(httrackp* from,httrackp* to); -char* hts_errmsg(void); -int hts_setpause(int); // pause transfer -int hts_request_stop(int force); +#ifndef HTTRACK_DEFLIB +HTSEXT_API int hts_is_parsing(int flag); +HTSEXT_API int hts_is_testing(void); +HTSEXT_API int hts_is_exiting(void); +HTSEXT_API int hts_setopt(httrackp* opt); +HTSEXT_API int hts_addurl(char** url); +HTSEXT_API int hts_resetaddurl(void); +HTSEXT_API int copy_htsopt(httrackp* from,httrackp* to); +HTSEXT_API char* hts_errmsg(void); +HTSEXT_API int hts_setpause(int); // pause transfer +HTSEXT_API int hts_request_stop(int force); // -char* hts_cancel_file(char * s); -void hts_cancel_test(void); -void hts_cancel_parsing(void); +HTSEXT_API char* hts_cancel_file(char * s); +HTSEXT_API void hts_cancel_test(void); +HTSEXT_API void hts_cancel_parsing(void); +#endif // // Variables globales extern int _hts_in_html_parsing; @@ -291,17 +314,20 @@ extern int _hts_cancel; //int httpmirror(char* url,int level,httrackp opt); int httpmirror(char* url1,httrackp* opt); -int filesave(char* adr,int len,char* s); +int filesave(httrackp* opt,char* adr,int len,char* s,char* url_adr /* = NULL */,char* url_fil /* = NULL */); +int check_fatal_io_errno(void); int engine_stats(void); -void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* back,int back_max,char** filters,int filter_max,int* filptr,char* host); +void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* back,int back_max,char* host); FILE* filecreate(char* s); int filecreateempty(char* filename); int filenote(char* s,filecreate_params* params); -HTS_INLINE void usercommand(int exe,char* cmd,char* file); +HTS_INLINE void usercommand(httrackp* opt,int exe,char* cmd,char* file,char* adr,char* fil); void usercommand_exe(char* cmd,char* file); -char* structcheck_init(int init); +//void* structcheck_init(int init); int filters_init(char*** ptrfilters, int maxfilter, int filterinc); -int structcheck(char* s); +#ifndef HTTRACK_DEFLIB +HTSEXT_API int structcheck(char* s); +#endif HTS_INLINE int fspc(FILE* fp,char* type); char* next_token(char* p,int flag); // @@ -322,16 +348,20 @@ int back_fillmax(lien_back* back,int back_max,httrackp* opt,cache_back* cache,li // cancel file #if HTS_ANALYSTE -char* hts_cancel_file(char * s); -void hts_cancel_test(void); -void hts_cancel_parsing(void); +#ifndef HTTRACK_DEFLIB +HTSEXT_API char* hts_cancel_file(char * s); +HTSEXT_API void hts_cancel_test(void); +HTSEXT_API void hts_cancel_parsing(void); +#endif #endif int ask_continue(void); int nombre_digit(int n); // Java +#if 0 int hts_add_file(char* file,int file_position); +#endif // Polling #if HTS_POLL @@ -339,6 +369,8 @@ HTS_INLINE int check_flot(T_SOC s); HTS_INLINE int check_stdin(void); int read_stdin(char* s,int max); #endif +HTS_INLINE int check_sockerror(T_SOC s); +HTS_INLINE int check_sockdata(T_SOC s); httrackp* hts_declareoptbuffer(httrackp* optdecl); void sig_finish( int code ); // finir et quitter @@ -353,6 +385,9 @@ void sig_brpipe( int code ); // treat if necessary void sig_doback(int); // mettre en arrière plan #endif +/* external modules */ +int htsAddLink(htsmoduleStruct* str, char* link); + // Void void voidf(void); |