diff options
author | Xavier Roche <xroche@users.noreply.github.com> | 2014-05-26 19:27:46 +0000 |
---|---|---|
committer | Xavier Roche <xroche@users.noreply.github.com> | 2014-05-26 19:27:46 +0000 |
commit | 5364514f340287bcce591955fce500ed57d2da79 (patch) | |
tree | ca2097bd351fe9d4d137a2d7fe687dd0b815d56b /src/htscore.h | |
parent | f078a39677953cf8d3cdaedcb1b3c4db65473308 (diff) |
Big links heap handling cleanup, and removed very old and legacy macros
Diffstat (limited to 'src/htscore.h')
-rw-r--r-- | src/htscore.h | 47 |
1 files changed, 36 insertions, 11 deletions
diff --git a/src/htscore.h b/src/htscore.h index 93108cd..6c7d49f 100644 --- a/src/htscore.h +++ b/src/htscore.h @@ -135,21 +135,21 @@ typedef struct filecreate_params filecreate_params; 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 - //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 + + 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 depth; // profondeur autorisée lien ; >0 forte 0=faible + int pass2; // traiter après les autres, seconde passe. si == -1, lien traité en background + char link_import; // lien importé à la suite d'un moved - ne pas appliquer les règles classiques up/down + //int moved; // pointeur sur moved + int retry; // nombre de retry restants + int testmode; // mode test uniquement, envoyer juste un head! }; // chargement de fichiers en 'arrière plan' @@ -255,7 +255,7 @@ typedef struct hash_struct hash_struct; #endif struct hash_struct { /* Links big array reference */ - const lien_url **liens; + const lien_url ***liens; /* Savename (case insensitive ; lowercased) */ inthash sav; /* Address and path */ @@ -278,6 +278,20 @@ struct filecreate_params { char path[HTS_URLMAXSIZE * 2]; }; +/* Access macros. */ +#define heap(N) (opt->liens[N]) +#define heap_top_index() (opt->lien_tot - 1) +#define heap_top() (heap(heap_top_index())) +#define urladr() (heap(ptr)->adr) +#define urlfil() (heap(ptr)->fil) +#define savename() (heap(ptr)->sav) +#define parenturladr() (heap(heap(ptr)->precedent)->adr) +#define parenturlfil() (heap(heap(ptr)->precedent)->fil) +#define parentsavename() (heap(heap(ptr)->precedent)->sav) +#define relativeurladr() ((!parent_relative)?urladr():parenturladr()) +#define relativeurlfil() ((!parent_relative)?urlfil():parenturlfil()) +#define relativesavename() ((!parent_relative)?savename():parentsavename()) + /* Library internal definictions */ #ifdef HTS_INTERNAL_BYTECODE @@ -302,7 +316,18 @@ char *hts_cancel_file_pop(httrackp * opt); #endif -// +// add a link on the heap +int hts_record_link(httrackp * opt, + const char *address, const char *file, const char *save, + const char *ref_address, const char *ref_file, + const char *codebase); + +// index of the latest added link +size_t hts_record_link_latest(httrackp *opt); + +// wipe all records +void hts_record_init(httrackp *opt); +void hts_record_free(httrackp *opt); //int httpmirror(char* url,int level,httrackp opt); int httpmirror(char *url1, httrackp * opt); |