@@ -266,16 +266,19 @@ static void LinkTable_fill(LinkTable *linktbl)
266266}
267267
268268/**
269- * \brief fill in the gaps in a link table
269+ * \brief Reset invalid links in the link table
270270 */
271271static void LinkTable_invalid_reset (LinkTable * linktbl )
272272{
273+ int j = 0 ;
273274 for (int i = 0 ; i < linktbl -> num ; i ++ ) {
274275 Link * this_link = linktbl -> links [i ];
275276 if (this_link -> type == LINK_INVALID ) {
276277 this_link -> type = LINK_UNINITIALISED_FILE ;
278+ j ++ ;
277279 }
278280 }
281+ fprintf (stderr , "LinkTable_invalid_reset(): %d invalid links\n" , j );
279282}
280283
281284static void LinkTable_free (LinkTable * linktbl )
@@ -348,12 +351,14 @@ LinkTable *LinkTable_new(const char *url)
348351 transfer_blocking (curl );
349352 curl_easy_getinfo (curl , CURLINFO_RESPONSE_CODE , & http_resp );
350353 if (HTTP_temp_failure (http_resp )) {
351- fprintf (stderr , "LinkTable_new(): URL: %s, HTTP %ld, \
352- retrying later.\n" , url , http_resp );
354+ fprintf (stderr ,
355+ "LinkTable_new(): URL: %s, HTTP %ld, retrying later.\n" ,
356+ url , http_resp );
353357 sleep (HTTP_WAIT_SEC );
354358 } else if (http_resp != HTTP_OK ) {
355- fprintf (stderr , "LinkTable_new(): cannot retrieve URL: %s, \
356- HTTP %ld\n" , url , http_resp );
359+ fprintf (stderr ,
360+ "LinkTable_new(): cannot retrieve URL: %s, HTTP %ld\n" ,
361+ url , http_resp );
357362 LinkTable_free (linktbl );
358363 curl_easy_cleanup (curl );
359364 return NULL ;
@@ -380,6 +385,9 @@ HTTP %ld\n", url, http_resp);
380385 disk_linktbl = LinkTable_disk_open (unescaped_path );
381386 if (disk_linktbl ) {
382387 /* Check if we need to update the link table */
388+ fprintf (stderr ,
389+ "LinkTable_new(): disk_linktbl->num: %d, linktbl->num: %d\n" ,
390+ disk_linktbl -> num , linktbl -> num );
383391 if (disk_linktbl -> num == linktbl -> num ) {
384392 LinkTable_free (linktbl );
385393 linktbl = disk_linktbl ;
@@ -401,7 +409,9 @@ HTTP %ld\n", url, http_resp);
401409
402410 /* Save the link table */
403411 if (CACHE_SYSTEM_INIT ) {
404- LinkTable_disk_save (linktbl , unescaped_path );
412+ if (LinkTable_disk_save (linktbl , unescaped_path )) {
413+ exit_failure ();
414+ }
405415 }
406416
407417 curl_free (unescaped_path );
@@ -419,8 +429,13 @@ HTTP %ld\n", url, http_resp);
419429
420430static void LinkTable_disk_delete (const char * dirn )
421431{
422- char * metadirn = path_append ("cache/meta/" , dirn );
423- char * path = path_append (metadirn , ".LinkTable" );
432+ char * metadirn = path_append (META_DIR , dirn );
433+ char * path ;
434+ if (metadirn [strnlen (metadirn , MAX_PATH_LEN )] == '/' ) {
435+ path = path_append (metadirn , ".LinkTable" );
436+ } else {
437+ path = path_append (metadirn , "/.LinkTable" );
438+ }
424439 if (unlink (path )) {
425440 fprintf (stderr , "LinkTable_disk_delete(): unlink(%s): %s\n" , path ,
426441 strerror (errno ));
@@ -431,8 +446,13 @@ static void LinkTable_disk_delete(const char *dirn)
431446
432447int LinkTable_disk_save (LinkTable * linktbl , const char * dirn )
433448{
434- char * metadirn = path_append ("cache/meta/" , dirn );
435- char * path = path_append (metadirn , ".LinkTable" );
449+ char * metadirn = path_append (META_DIR , dirn );
450+ char * path ;
451+ if (metadirn [strnlen (metadirn , MAX_PATH_LEN )] == '/' ) {
452+ path = path_append (metadirn , ".LinkTable" );
453+ } else {
454+ path = path_append (metadirn , "/.LinkTable" );
455+ }
436456 FILE * fp = fopen (path , "w" );
437457 free (metadirn );
438458
@@ -472,8 +492,13 @@ int LinkTable_disk_save(LinkTable *linktbl, const char *dirn)
472492
473493LinkTable * LinkTable_disk_open (const char * dirn )
474494{
475- char * metadirn = path_append ("cache/meta/" , dirn );
476- char * path = path_append (metadirn , ".LinkTable" );
495+ char * metadirn = path_append (META_DIR , dirn );
496+ char * path ;
497+ if (metadirn [strnlen (metadirn , MAX_PATH_LEN )] == '/' ) {
498+ path = path_append (metadirn , ".LinkTable" );
499+ } else {
500+ path = path_append (metadirn , "/.LinkTable" );
501+ }
477502 FILE * fp = fopen (path , "r" );
478503 free (metadirn );
479504
0 commit comments