Mercurial > noffle
comparison src/client.c @ 67:2e47992d7f5c noffle
[svn] Rewrote needsMark(): use itemlist.h, more debugging output.
| author | enz |
|---|---|
| date | Sat, 13 May 2000 09:27:26 +0100 |
| parents | adf0af5152f7 |
| children | 6aa3a8eff5a9 |
comparison
equal
deleted
inserted
replaced
| 66:40a7493238e8 | 67:2e47992d7f5c |
|---|---|
| 1 /* | 1 /* |
| 2 client.c | 2 client.c |
| 3 | 3 |
| 4 $Id: client.c 67 2000-05-12 17:19:38Z enz $ | 4 $Id: client.c 73 2000-05-13 08:27:26Z enz $ |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 #if HAVE_CONFIG_H | 7 #if HAVE_CONFIG_H |
| 8 #include <config.h> | 8 #include <config.h> |
| 9 #endif | 9 #endif |
| 21 #include <unistd.h> | 21 #include <unistd.h> |
| 22 #include "configfile.h" | 22 #include "configfile.h" |
| 23 #include "content.h" | 23 #include "content.h" |
| 24 #include "dynamicstring.h" | 24 #include "dynamicstring.h" |
| 25 #include "group.h" | 25 #include "group.h" |
| 26 #include "itemlist.h" | |
| 26 #include "log.h" | 27 #include "log.h" |
| 27 #include "over.h" | 28 #include "over.h" |
| 28 #include "protocol.h" | 29 #include "protocol.h" |
| 29 #include "pseudo.h" | 30 #include "pseudo.h" |
| 30 #include "request.h" | 31 #include "request.h" |
| 625 } | 626 } |
| 626 | 627 |
| 627 static Bool | 628 static Bool |
| 628 needsMark( const char *ref ) | 629 needsMark( const char *ref ) |
| 629 { | 630 { |
| 630 Bool done = FALSE, interesting; | 631 Bool interesting, result; |
| 631 char *p; | 632 const char *msgId; |
| 632 Str msgId; | 633 int status; |
| 633 int status, len; | |
| 634 time_t lastAccess, nowTime; | 634 time_t lastAccess, nowTime; |
| 635 double threadFollowTime, limit, age; | 635 double threadFollowTime, secPerDay, maxTime, timeSinceLastAccess; |
| 636 | 636 ItemList *itl; |
| 637 | |
| 638 Log_dbg( "Checking references '%s' for thread mode", ref ); | |
| 639 result = FALSE; | |
| 640 itl = new_Itl( ref, " \t" ); | |
| 637 nowTime = time( NULL ); | 641 nowTime = time( NULL ); |
| 638 threadFollowTime = (double)Cfg_threadFollowTime(); | 642 threadFollowTime = (double)Cfg_threadFollowTime(); |
| 639 limit = threadFollowTime * 24. * 3600.; | 643 secPerDay = 24.0 * 3600.0; |
| 640 while ( ! done ) | 644 maxTime = threadFollowTime * secPerDay; |
| 641 { | 645 Log_dbg( "Max time = %.0f", maxTime ); |
| 642 p = msgId; | 646 for ( msgId = Itl_first( itl ); msgId != NULL; msgId = Itl_next( itl ) ) |
| 643 while ( *ref != '<' ) | 647 { |
| 644 if ( *(ref++) == '\0' ) | 648 /* |
| 645 return FALSE; | 649 References does not have to contain only Message IDs, |
| 646 len = 0; | 650 but often it does, so we look up every item in the database. |
| 647 while ( *ref != '>' ) | 651 */ |
| 648 { | |
| 649 if ( *ref == '\0' || ++len >= MAXCHAR - 1 ) | |
| 650 return FALSE; | |
| 651 *(p++) = *(ref++); | |
| 652 } | |
| 653 *(p++) = '>'; | |
| 654 *p = '\0'; | |
| 655 if ( Db_contains( msgId ) ) | 652 if ( Db_contains( msgId ) ) |
| 656 { | 653 { |
| 657 status = Db_status( msgId ); | 654 status = Db_status( msgId ); |
| 658 lastAccess = Db_lastAccess( msgId ); | 655 lastAccess = Db_lastAccess( msgId ); |
| 659 interesting = ( status & DB_INTERESTING ); | 656 interesting = ( status & DB_INTERESTING ); |
| 660 age = difftime( nowTime, lastAccess ); | 657 timeSinceLastAccess = difftime( nowTime, lastAccess ); |
| 661 if ( interesting && age <= limit ) | 658 Log_dbg( "Msg ID '%s': since last access = %.0f, interesting = %s", |
| 662 return TRUE; | 659 msgId, timeSinceLastAccess, ( interesting ? "y" : "n" ) ); |
| 663 } | 660 if ( interesting && timeSinceLastAccess <= maxTime ) |
| 664 } | 661 { |
| 665 return FALSE; | 662 result = TRUE; |
| 663 break; | |
| 664 } | |
| 665 } | |
| 666 else | |
| 667 { | |
| 668 Log_dbg( "MsgID '%s': not in database." ); | |
| 669 } | |
| 670 } | |
| 671 del_Itl( itl ); | |
| 672 Log_dbg( "Article %s marking for download.", | |
| 673 ( result ? "needs" : "doesn't need" ) ); | |
| 674 return result; | |
| 666 } | 675 } |
| 667 | 676 |
| 668 static void | 677 static void |
| 669 prepareEntry( Over *ov ) | 678 prepareEntry( Over *ov ) |
| 670 { | 679 { |
