1 /* 2 This file is part of SLRN. 3 4 Copyright (c) 1994, 1999, 2007-2016 John E. Davis <jed@jedsoft.org> 5 Copyright (c) 2001-2006 Thomas Schultz <tststs@gmx.de> 6 7 This program is free software; you can redistribute it and/or modify it 8 under the terms of the GNU General Public License as published by the Free 9 Software Foundation; either version 2 of the License, or (at your option) 10 any later version. 11 12 This program is distributed in the hope that it will be useful, but WITHOUT 13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 15 more details. 16 17 You should have received a copy of the GNU General Public License along 18 with this program; if not, write to the Free Software Foundation, Inc., 19 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 */ 21 #ifndef _SLRN_SERVER_H 22 #define _SLRN_SERVER_H 23 #include "nntpcodes.h" 24 #include "ranges.h" 25 26 typedef struct 27 { 28 int (*po_start)(void); 29 int (*po_end)(void); 30 int (*po_printf)(char *, ...) ATTRIBUTE_PRINTF(1,2); 31 int (*po_vprintf)(const char *, va_list); 32 int (*po_puts)(char *); 33 char * (*po_get_recom_id)(void); 34 int po_can_post; 35 } Slrn_Post_Obj_Type; 36 37 typedef struct 38 { 39 int (*sv_select_group) (char *, NNTP_Artnum_Type *, NNTP_Artnum_Type *); 40 int (*sv_refresh_groups) (Slrn_Group_Range_Type *, int); 41 char * (*sv_current_group) (void); 42 int (*sv_read_line) (char *, unsigned int); 43 void (*sv_close) (void); 44 /* sv_reset is somewhat like sv_close except that it only puts the 45 * server in a state where the server can be given additional commands. 46 */ 47 void (*sv_reset)(void); 48 int (*sv_initialize) (void); 49 int (*sv_select_article) (NNTP_Artnum_Type, char *); 50 int (*sv_get_article_size) (NNTP_Artnum_Type); 51 int (*sv_put_server_cmd) (char *, char *, unsigned int); 52 int (*sv_xpat_cmd) (char *, NNTP_Artnum_Type, NNTP_Artnum_Type, char *); 53 54 int (*sv_xhdr_command) (char *, NNTP_Artnum_Type, char *, unsigned int); 55 56 int (*sv_has_cmd) (char *); 57 int (*sv_list) (char *); 58 int (*sv_list_newsgroups) (void); 59 int (*sv_list_active) (char *); 60 int (*sv_send_authinfo) (void); 61 62 int sv_has_xhdr; 63 int sv_has_xover; 64 int sv_reset_has_xover; 65 /* if non-zero, sv_has_xover is set to 1 when entering a group. 66 * This is because some servers support XOVER but do not have overview 67 * files for all groups. See xover.c 68 */ 69 int (*sv_nntp_xover) (NNTP_Artnum_Type, NNTP_Artnum_Type); 70 int (*sv_nntp_xhdr) (char *, NNTP_Artnum_Type, NNTP_Artnum_Type); 71 int (*sv_nntp_head) (NNTP_Artnum_Type, char *, NNTP_Artnum_Type *); 72 int (*sv_nntp_next) (NNTP_Artnum_Type *); 73 74 /* Returns number of bytes received. 75 * If the int is non-zero, the counter is reset. */ 76 unsigned int (*sv_nntp_bytes) (int); 77 78 /* Some server software has known bugs that we can work around. */ 79 #define SERVER_ID_UNKNOWN 0 80 #define SERVER_ID_INN 1 81 int sv_id; 82 char *sv_name; 83 } 84 Slrn_Server_Obj_Type; 85 86 extern Slrn_Server_Obj_Type *Slrn_Server_Obj; 87 extern Slrn_Post_Obj_Type *Slrn_Post_Obj; 88 89 extern NNTP_Artnum_Type Slrn_Server_Min, Slrn_Server_Max; 90 extern char *Slrn_Current_Group_Name; 91 92 #if SLRN_HAS_NNTP_SUPPORT 93 extern int Slrn_Broken_Xref; 94 extern int Slrn_Query_Reconnect; 95 extern int Slrn_Force_Authentication; 96 extern char *Slrn_NNTP_Server_Name; 97 #endif 98 99 #if SLRN_HAS_INEWS_SUPPORT 100 extern char *Slrn_Inews_Pgm; 101 #endif 102 103 extern char *slrn_map_object_id_to_name (int, int); 104 extern int slrn_map_name_to_object_id (int, char *); 105 106 extern int slrn_init_objects (void); 107 extern int slrn_select_post_object (int); 108 extern int slrn_select_server_object (int); 109 extern int slrn_parse_object_args (char *, char **, int); 110 111 extern char *slrn_getserverbyfile(char *); 112 113 #if SLRN_HAS_SPOOL_SUPPORT 114 extern char *Slrn_Inn_Root; 115 extern char *Slrn_Spool_Root; 116 extern char *Slrn_Nov_Root; 117 extern char *Slrn_Nov_File; 118 extern char *Slrn_Active_File; 119 extern char *Slrn_ActiveTimes_File; 120 extern char *Slrn_Newsgroups_File; 121 extern char *Slrn_Overviewfmt_File; 122 extern int Slrn_Spool_Check_Up_On_Nov; 123 124 extern Slrn_Range_Type *slrn_spool_get_no_body_ranges (char *); 125 extern Slrn_Range_Type *slrn_spool_get_requested_ranges (char *); 126 extern int slrn_spool_set_requested_ranges (char*, Slrn_Range_Type*); 127 #endif 128 129 #if SLRN_HAS_PULL_SUPPORT 130 extern int Slrn_Use_Pull_Post; 131 #endif 132 133 extern int Slrn_Server_Id; 134 extern int Slrn_Post_Id; 135 136 #endif /* SLRN_SERVER_H */ 137