comparison src/noffle.c @ 482:a04c52f87b6e noffle

[svn] * docs/noffle.1,src/database.h,src/database.c,src/noffle.c,src/server.c: Add new '-U, --uninteresting' option. This removes an article from the list of requested articles and removes its INTERESTING marker.
author bears
date Thu, 14 Oct 2004 00:26:48 +0100
parents 48be71391b9d
children
comparison
equal deleted inserted replaced
481:0a5dc5f69746 482:a04c52f87b6e
8 not as server. If noffle runs as server, locking is performed while 8 not as server. If noffle runs as server, locking is performed while
9 executing NNTP commands, but temporarily released if no new command is 9 executing NNTP commands, but temporarily released if no new command is
10 received for some seconds (to allow multiple clients connect at the same 10 received for some seconds (to allow multiple clients connect at the same
11 time). 11 time).
12 12
13 $Id: noffle.c 624 2004-07-09 15:27:20Z bears $ 13 $Id: noffle.c 629 2004-10-13 23:26:48Z bears $
14 */ 14 */
15 15
16 #if HAVE_CONFIG_H 16 #if HAVE_CONFIG_H
17 #include <config.h> 17 #include <config.h>
18 #endif 18 #endif
572 else 572 else
573 fprintf( stderr, "Could not save fetchlist.\n" ); 573 fprintf( stderr, "Could not save fetchlist.\n" );
574 } 574 }
575 575
576 static void 576 static void
577 doUninteresting( const char *msgId )
578 {
579 unsigned status;
580 Str server;
581
582 if ( ! Db_contains( msgId ) )
583 fprintf( stderr, "Not in database.\n" );
584 else
585 {
586 /* Remove INTERESTING status */
587 status = Db_status( msgId );
588 status &= ~DB_INTERESTING;
589 Db_setStatus( msgId, status );
590
591 /* And remove from requested articles queue if server is not local */
592 if ( ! Db_findServer( msgId, server ) )
593 Log_err( "No server for message %s", msgId );
594 else if ( strcmp( server, GRP_LOCAL_SERVER_NAME ) != 0 )
595 Req_remove( server, msgId );
596 }
597 }
598
599 static void
577 printUsage( void ) 600 printUsage( void )
578 { 601 {
579 static const char *msg = 602 static const char *msg =
580 "Usage: noffle <option>\n" 603 "Usage: noffle <option>\n"
581 "Option is one of the following:\n" 604 "Option is one of the following:\n"
602 " -R | --requested List articles marked for download\n" 625 " -R | --requested List articles marked for download\n"
603 " -s | --subscribe-over <grp> Add group to fetch list (overview)\n" 626 " -s | --subscribe-over <grp> Add group to fetch list (overview)\n"
604 " -S | --subscribe-full <grp> Add group to fetch list (full)\n" 627 " -S | --subscribe-full <grp> Add group to fetch list (full)\n"
605 " -t | --subscribe-thread <grp> Add group to fetch list (thread)\n" 628 " -t | --subscribe-thread <grp> Add group to fetch list (thread)\n"
606 " -u | --unsubscribe <grp> Remove group from fetch list\n" 629 " -u | --unsubscribe <grp> Remove group from fetch list\n"
630 " -U | --uninteresting <msg id> Article must be read again for download\n"
607 " -v | --version Print version\n"; 631 " -v | --version Print version\n";
608 fprintf( stderr, "%s", msg ); 632 fprintf( stderr, "%s", msg );
609 } 633 }
610 634
611 635
867 { "--server", "-r" }, 891 { "--server", "-r" },
868 { "--requested", "-R" }, 892 { "--requested", "-R" },
869 { "--subscribe-over", "-s" }, 893 { "--subscribe-over", "-s" },
870 { "--subscribe-full", "-S" }, 894 { "--subscribe-full", "-S" },
871 { "--subscribe-thread", "-t" }, 895 { "--subscribe-thread", "-t" },
896 { "--uninteresting", "-U" },
872 { "--unsubscribe", "-u" }, 897 { "--unsubscribe", "-u" },
873 { "--version", "-v" }, 898 { "--version", "-v" },
874 { NULL, NULL } 899 { NULL, NULL }
875 900
876 }; 901 };
1126 result = EXIT_FAILURE; 1151 result = EXIT_FAILURE;
1127 } 1152 }
1128 else 1153 else
1129 doUnsubscribe( *argv ); 1154 doUnsubscribe( *argv );
1130 break; 1155 break;
1156 case 'U':
1157 if ( *argv == NULL )
1158 {
1159 fprintf( stderr, "Option -U needs argument.\n" );
1160 result = EXIT_FAILURE;
1161 }
1162 else
1163 doUninteresting( *argv );
1164 break;
1131 case '?': 1165 case '?':
1132 /* Error message already printed by getopt_long */ 1166 /* Error message already printed by getopt_long */
1133 result = EXIT_FAILURE; 1167 result = EXIT_FAILURE;
1134 break; 1168 break;
1135 case 'v': 1169 case 'v':