/* smblib.h */ /* Synchronet message base (SMB) library function prototypes */ /* $Id$ */ /**************************************************************************** * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * * Copyright 2000 Rob Swindell - http://www.synchro.net/copyright.html * * * * This library is free software; you can redistribute it and/or * * modify it under the terms of the GNU Lesser General Public License * * as published by the Free Software Foundation; either version 2 * * of the License, or (at your option) any later version. * * See the GNU Lesser General Public License for more details: lgpl.txt or * * http://www.fsf.org/copyleft/lesser.html * * * * Anonymous FTP access to the most recent released source is available at * * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * * * * Anonymous CVS access to the development source and modification history * * is available at cvs.synchro.net:/cvsroot/sbbs, example: * * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * * (just hit return, no password is necessary) * * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * * * * For Synchronet coding style and modification guidelines, see * * http://www.synchro.net/source.html * * * * You are encouraged to submit any modifications (preferably in Unix diff * * format) via e-mail to mods@synchro.net * * * * Note: If this box doesn't appear square, then you need to fix your tabs. * ****************************************************************************/ #ifndef _SMBLIB_H #define _SMBLIB_H #include "lzh.h" #ifdef SMBEXPORT #undef SMBEXPORT #endif #ifndef __FLAT__ #define __FLAT__ /* only supporting 32-bit targets now */ #endif #ifdef _WIN32 #ifdef __BORLANDC__ #define SMBCALL __stdcall #else #define SMBCALL #endif #if defined(SMB_IMPORTS) || defined(SMB_EXPORTS) #if defined(SMB_IMPORTS) #define SMBEXPORT __declspec( dllimport ) #else #define SMBEXPORT __declspec( dllexport ) #endif #else /* self-contained executable */ #define SMBEXPORT #endif #elif defined __unix__ #define SMBCALL #define SMBEXPORT #else #define SMBCALL #define SMBEXPORT #endif #include "smbdefs.h" #define SMB_STACK_LEN 4 /* Max msg bases in smb_stack() */ #define SMB_STACK_POP 0 /* Pop a msg base off of smb_stack()*/ #define SMB_STACK_PUSH 1 /* Push a msg base onto smb_stack() */ #define SMB_STACK_XCHNG 2 /* Exchange msg base w/last pushed */ #define GETMSGTXT_TAILS (1<<0) /* Get message tail(s) */ #define GETMSGTXT_NO_BODY (1<<1) /* Do not retrieve message body */ #define SMB_IS_OPEN(smb) ((smb)->shd_fp!=NULL) #ifdef __cplusplus extern "C" { #endif SMBEXPORT int SMBCALL smb_ver(void); SMBEXPORT char* SMBCALL smb_lib_ver(void); SMBEXPORT int SMBCALL smb_open(smb_t* smb); SMBEXPORT void SMBCALL smb_close(smb_t* smb); SMBEXPORT int SMBCALL smb_open_da(smb_t* smb); SMBEXPORT void SMBCALL smb_close_da(smb_t* smb); SMBEXPORT int SMBCALL smb_open_ha(smb_t* smb); SMBEXPORT void SMBCALL smb_close_ha(smb_t* smb); SMBEXPORT int SMBCALL smb_create(smb_t* smb); SMBEXPORT int SMBCALL smb_stack(smb_t* smb, int op); SMBEXPORT int SMBCALL smb_trunchdr(smb_t* smb); SMBEXPORT int SMBCALL smb_locksmbhdr(smb_t* smb); SMBEXPORT int SMBCALL smb_getstatus(smb_t* smb); SMBEXPORT int SMBCALL smb_putstatus(smb_t* smb); SMBEXPORT int SMBCALL smb_unlocksmbhdr(smb_t* smb); SMBEXPORT int SMBCALL smb_getmsgidx(smb_t* smb, smbmsg_t* msg); SMBEXPORT int SMBCALL smb_getfirstidx(smb_t* smb, idxrec_t *idx); SMBEXPORT int SMBCALL smb_getlastidx(smb_t* smb, idxrec_t *idx); SMBEXPORT uint32_t SMBCALL smb_getmsghdrlen(smbmsg_t* msg); SMBEXPORT uint32_t SMBCALL smb_getmsgdatlen(smbmsg_t* msg); SMBEXPORT int SMBCALL smb_lockmsghdr(smb_t* smb, smbmsg_t* msg); SMBEXPORT int SMBCALL smb_getmsghdr(smb_t* smb, smbmsg_t* msg); SMBEXPORT int SMBCALL smb_unlockmsghdr(smb_t* smb, smbmsg_t* msg); SMBEXPORT int SMBCALL smb_addcrc(smb_t* smb, uint32_t crc); SMBEXPORT int SMBCALL smb_hfield(smbmsg_t* msg, uint16_t type, size_t length, void* data); SMBEXPORT int SMBCALL smb_dfield(smbmsg_t* msg, uint16_t type, uint32_t length); SMBEXPORT void* SMBCALL smb_get_hfield(smbmsg_t* msg, uint16_t type, hfield_t* hfield); SMBEXPORT int SMBCALL smb_addmsghdr(smb_t* smb, smbmsg_t* msg,int storage); SMBEXPORT int SMBCALL smb_putmsg(smb_t* smb, smbmsg_t* msg); SMBEXPORT int SMBCALL smb_putmsgidx(smb_t* smb, smbmsg_t* msg); SMBEXPORT int SMBCALL smb_putmsghdr(smb_t* smb, smbmsg_t* msg); SMBEXPORT void SMBCALL smb_freemsgmem(smbmsg_t* msg); SMBEXPORT uint32_t SMBCALL smb_hdrblocks(uint32_t length); SMBEXPORT uint32_t SMBCALL smb_datblocks(uint32_t length); SMBEXPORT int32_t SMBCALL smb_allochdr(smb_t* smb, uint32_t length); SMBEXPORT int32_t SMBCALL smb_fallochdr(smb_t* smb, uint32_t length); SMBEXPORT int32_t SMBCALL smb_hallochdr(smb_t* smb); SMBEXPORT int32_t SMBCALL smb_allocdat(smb_t* smb, uint32_t length, uint16_t headers); SMBEXPORT int32_t SMBCALL smb_fallocdat(smb_t* smb, uint32_t length, uint16_t headers); SMBEXPORT int32_t SMBCALL smb_hallocdat(smb_t* smb); SMBEXPORT int SMBCALL smb_incdat(smb_t* smb, uint32_t offset, uint32_t length, uint16_t headers); SMBEXPORT int SMBCALL smb_freemsg(smb_t* smb, smbmsg_t* msg); SMBEXPORT int SMBCALL smb_freemsgdat(smb_t* smb, uint32_t offset, uint32_t length, uint16_t headers); SMBEXPORT int SMBCALL smb_freemsghdr(smb_t* smb, uint32_t offset, uint32_t length); SMBEXPORT void SMBCALL smb_freemsgtxt(char* buf); SMBEXPORT int SMBCALL smb_copymsgmem(smbmsg_t* destmsg, smbmsg_t* srcmsg); SMBEXPORT char* SMBCALL smb_getmsgtxt(smb_t* smb, smbmsg_t* msg, uint32_t mode); SMBEXPORT int SMBCALL smb_tzutc(int16_t timezone); /* FILE pointer I/O functions */ SMBEXPORT int SMBCALL smb_feof(FILE* fp); SMBEXPORT int SMBCALL smb_ferror(FILE* fp); SMBEXPORT int SMBCALL smb_fflush(FILE* fp); SMBEXPORT int SMBCALL smb_fgetc(FILE* fp); SMBEXPORT int SMBCALL smb_fputc(int ch, FILE* fp); SMBEXPORT int SMBCALL smb_fseek(FILE* fp, int32_t offset, int whence); SMBEXPORT int32_t SMBCALL smb_ftell(FILE* fp); SMBEXPORT int32_t SMBCALL smb_fread(void HUGE16* buf, int32_t bytes, FILE* fp); SMBEXPORT int32_t SMBCALL smb_fwrite(void HUGE16* buf, int32_t bytes, FILE* fp); SMBEXPORT int32_t SMBCALL smb_fgetlength(FILE* fp); SMBEXPORT int SMBCALL smb_fsetlength(FILE* fp, int32_t length); SMBEXPORT void SMBCALL smb_rewind(FILE* fp); SMBEXPORT void SMBCALL smb_clearerr(FILE* fp); #ifdef __cplusplus } #endif #ifdef __WATCOMC__ /* Use MSC standard (prepended underscore) */ #pragma aux smb_ver "_*" #pragma aux smb_lib_ver "_*" #pragma aux smb_open "_*" #pragma aux smb_close "_*" #pragma aux smb_open_da "_*" #pragma aux smb_close_da "_*" #pragma aux smb_open_ha "_*" #pragma aux smb_close_ha "_*" #pragma aux smb_create "_*" #pragma aux smb_stack "_*" #pragma aux smb_trunchdr "_*" #pragma aux smb_locksmbhdr "_*" #pragma aux smb_getstatus "_*" #pragma aux smb_putstatus "_*" #pragma aux smb_unlocksmbhdr "_*" #pragma aux smb_getmsgidx "_*" #pragma aux smb_getfirstidx "_*" #pragma aux smb_getlastidx "_*" #pragma aux smb_getmsghdrlen "_*" #pragma aux smb_getmsgdatlen "_*" #pragma aux smb_lockmsghdr "_*" #pragma aux smb_getmsghdr "_*" #pragma aux smb_unlockmsghdr "_*" #pragma aux smb_addcrc "_*" #pragma aux smb_hfield "_*" #pragma aux smb_dfield "_*" #pragma aux smb_addmsghdr "_*" #pragma aux smb_putmsg "_*" #pragma aux smb_putmsgidx "_*" #pragma aux smb_putmsghdr "_*" #pragma aux smb_freemsgmem "_*" #pragma aux smb_hdrblocks "_*" #pragma aux smb_datblocks "_*" #pragma aux smb_allochdr "_*" #pragma aux smb_fallochdr "_*" #pragma aux smb_hallochdr "_*" #pragma aux smb_allocdat "_*" #pragma aux smb_fallocdat "_*" #pragma aux smb_hallocdat "_*" #pragma aux smb_incdat "_*" #pragma aux smb_freemsg "_*" #pragma aux smb_freemsgdat "_*" #pragma aux smb_freemsghdr "_*" #pragma aux smb_getmsgtxt "_*" #pragma aux smb_freemsgtxt "_*" #pragma aux smb_feof "_*" #pragma aux smb_ferror "_*" #pragma aux smb_fflush "_*" #pragma aux smb_fgetc "_*" #pragma aux smb_fputc "_*" #pragma aux smb_fseek "_*" #pragma aux smb_ftell "_*" #pragma aux smb_fread "_*" #pragma aux smb_fwrite "_*" #pragma aux smb_fgetlength "_*" #pragma aux smb_fsetlength "_*" #pragma aux smb_rewind "_*" #pragma aux smb_clearerr "_*" #pragma aux lzh_encode "_*" #pragma aux lzh_decode "_*" #endif /* Watcom */ #endif /* Don't add anything after this #endif statement */