You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bforce/source/include/bforce.h

189 lines
4.6 KiB
C

/*
* binkleyforce -- unix FTN mailer project
*
* Copyright (c) 1998-2000 Alexander Belkin, 2:5020/1398.11
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* $Id$
*/
#ifndef _BFORCE_H_
#define _BFORCE_H_
/*
* BinkleyForce limits
*/
#define BF_MAXCFGLINE 512
#define BF_MAXREQLINE 256
#define BF_MAXPATH 256
#define BF_MAXDOMAIN 40
#define BF_MAXADDRSTR 80
/*
* Maximum length of file name (without path)
*/
#define BFORCE_MAX_NAME 128
/*
* Maximum path length, including file name length
*/
#define BFORCE_MAX_PATH 256
/*
* Maximum length of address string
*/
#define BFORCE_MAX_ADDRSTR 80
/*
* Lock files type:
* 1 - Ascii lock files
* 2 - Binary lock files
* 3 - SVR4 lock files (not implemented)
*/
#define BFORCE_LOCK_TYPE 1
/*
* Maximum length of phone number string
*/
#define BFORCE_MAX_PHONE 80
/*
* Maximum length of modem command string. Most modems
* cannot handle strings longer 40 characters.
*/
#define MODEM_MAX_COMMAND 120
/*
* Maximum length of modem response string
*/
#define MODEM_MAX_RESP 120
/*
* Maximum number of characters that modem can response
* on something command. Responses larger this will be
* considered invalid, and mailer will return "modem not
* response" without further waiting for "OK" or "ERROR"
*/
#define MODEM_MAX_RESP_SIZE 8128
/*
* BinkleyForce return codes
*/
#define BFERR_NOERROR 0
#define BFERR_FATALERROR 1
#define BFERR_PHONE_UNKNOWN 2
#define BFERR_PORTBUSY 3
#define BFERR_SYSTEM_LOCKED 4
#define BFERR_TRY_LATER 5
#define BFERR_NOMODEM 6
#define BFERR_NOTWORKING 7
#define BFERR_CANT_CONNECT10 10
#define BFERR_CANT_CONNECT11 11
#define BFERR_CANT_CONNECT12 12
#define BFERR_CANT_CONNECT13 13
#define BFERR_CANT_CONNECT14 14
#define BFERR_CANT_CONNECT15 15
#define BFERR_CANT_CONNECT16 16
#define BFERR_CANT_CONNECT17 17
#define BFERR_CANT_CONNECT18 18
#define BFERR_CANT_CONNECT19 19
#define BFERR_CONNECT_TOOLOW 20
#define BFERR_HANDSHAKE_ERROR 21
#define BFERR_XMITERROR 22
#define BFERR_CPSTOOLOW 23
#define BFERR_STOPTIME 24
#define BFERR_MAXERRNO 24 /* Maximal error number */
#define BFERR_NAME(rc) ((rc >= 0) && (rc <= BFERR_MAXERRNO) ? BFERR[rc] : "Out of range")
/*
* Some most popular defines
*/
#define gotoexit(a) { rc = a; goto exit; }
#ifdef __GNUC__
#define ASSERT_MSG() log("assertion failed: file: %s, line: %d, function: %s", \
__FILE__, __LINE__, __FUNCTION__);
#else
#define ASSERT_MSG() log("assertion failed: file: %s, line: %d", \
__FILE__, __LINE__);
#endif
#define ASSERT(expr) \
if( !(expr) ) \
{ \
ASSERT_MSG(); \
abort(); \
}
#define ISHEX(s) (strspn(s, "0123456790abcdefABCDEF") == strlen(s))
#define ISDEC(s) (strspn(s, "0123456789" ) == strlen(s))
#define ISOCT(s) (strspn(s, "01234567" ) == strlen(s))
/*
* Some usable defines
*/
#define FALSE 0
#define TRUE 1
#define UNDEF -1
/*
* Definition of new pretty types
*/
typedef unsigned long UINT32;
typedef unsigned short UINT16;
typedef unsigned char UINT8;
typedef signed long SINT32;
typedef signed short SINT16;
typedef signed char SINT8;
#include "confread.h"
/*
* Command line options
*/
typedef struct {
bool daemon; /* Run as daemon? */
bool quit; /* Quit from daemon */
bool usestdio; /* Session on stdin and stdout */
bool earlydbg; /* Early debug on stderr */
int inetd; /* Called from inetd? */
int force; /* Force call? */
int hiddline; /* Hidden line number (0,1..) */
char *confname; /* Use this config instead def. */
char *incname; /* Include this config */
char *phone; /* Forced phone number */
char *connect; /* Connect string */
char *device; /* Forced device name */
char *iphost; /* Forced IP address */
char *ipproto; /* proto to use over TCP/IP */
int stype; /* Handshake type in slave (answer) mode */
int runmode; /* concluded runmode */
s_falist *addrlist;
} s_bforce_opts;
#define MODE_UNDEFINED (0)
#define MODE_CALL_DEFAULT (1)
#define MODE_CALL_MODEM (2)
#define MODE_CALL_IP (3)
#define MODE_CALL_STDIO (4)
#define MODE_ANSWER (5)
#define MODE_DAEMON (6)
/*
* Global variables
*/
extern const char *BFERR[];
extern char * mainenv[];
int daemon_run(const char *confname, const char *incname, bool quit);
#endif