summaryrefslogtreecommitdiff
path: root/src/htscore.h
diff options
context:
space:
mode:
authorXavier Roche <xroche@users.noreply.github.com>2014-05-26 19:27:46 +0000
committerXavier Roche <xroche@users.noreply.github.com>2014-05-26 19:27:46 +0000
commit5364514f340287bcce591955fce500ed57d2da79 (patch)
treeca2097bd351fe9d4d137a2d7fe687dd0b815d56b /src/htscore.h
parentf078a39677953cf8d3cdaedcb1b3c4db65473308 (diff)
Big links heap handling cleanup, and removed very old and legacy macros
Diffstat (limited to 'src/htscore.h')
-rw-r--r--src/htscore.h47
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);