home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / MAXMAILP.ZIP / PROG.H < prev    next >
C/C++ Source or Header  |  1990-12-30  |  11KB  |  318 lines

  1. /***************************************************************************
  2.  *                                                                         *
  3.  *  MAXIMUS-CBCS Source Code, Version 1.02                                 *
  4.  *  Copyright 1989, 1990 by Scott J. Dudley.  All rights reserved.         *
  5.  *                                                                         *
  6.  *  General include file.  Lots of machine-dependant stuff here.           *
  7.  *                                                                         *
  8.  *  For complete details of the licensing restrictions, please refer to    *
  9.  *  the licence agreement, which is published in its entirety in MAX.C     *
  10.  *  and LICENCE.MAX.                                                       *
  11.  *                                                                         *
  12.  *  USE OF THIS FILE IS SUBJECT TO THE RESTRICTIONS CONTAINED IN THE       *
  13.  *  MAXIMUS-CBCS LICENSING AGREEMENT.  IF YOU DO NOT FIND THE TEXT OF THIS *
  14.  *  AGREEMENT IN ANY OF THE  AFOREMENTIONED FILES, OR IF YOU DO NOT HAVE   *
  15.  *  THESE FILES, YOU SHOULD IMMEDIATELY CONTACT THE AUTHOR AT ONE OF THE   *
  16.  *  ADDRESSES LISTED BELOW.  IN NO EVENT SHOULD YOU PROCEED TO USE THIS    *
  17.  *  FILE WITHOUT HAVING ACCEPTED THE TERMS OF THE MAXIMUS-CBCS LICENSING   *
  18.  *  AGREEMENT, OR SUCH OTHER AGREEMENT AS YOU ARE ABLE TO REACH WITH THE   *
  19.  *  AUTHOR.                                                                *
  20.  *                                                                         *
  21.  *  You can contact the author at one of the address listed below:         *
  22.  *                                                                         *
  23.  *  Scott Dudley           FidoNet  1:249/106                              *
  24.  *  777 Downing St.        IMEXnet  89:483/202                             *
  25.  *  Kingston, Ont.         Internet f106.n249.z1.fidonet.org               *
  26.  *  Canada - K7M 5N3       BBS      (613) 389-8315 - HST/14.4K, 24hrs      *
  27.  *                                                                         *
  28.  ***************************************************************************/
  29.  
  30. #ifndef __PROG_H_DEFINED
  31. #define __PROG_H_DEFINED
  32.  
  33. #include "compiler.h"
  34. #include "dv.h"
  35.  
  36. #include <stdio.h>
  37. #include <share.h>
  38. #include <sys/types.h>
  39. #include <sys/stat.h>
  40.  
  41. #if !defined(__DOS_DEF_) && defined(__TURBOC__)
  42. void __emit__();
  43. void __int__(int interruptnum);
  44. #define geninterrupt(i) __int__(i)
  45. #endif
  46.  
  47. typedef long timer_t;
  48.  
  49. #include "modem.h"
  50. #include "ffind.h"
  51.  
  52. #define REGISTER
  53.  
  54. #ifndef TRUE
  55. #define FALSE 0
  56. #define TRUE 1
  57. #endif
  58.  
  59. #ifdef PATHLEN
  60. #undef PATHLEN
  61. #endif
  62.  
  63. #define _PRIVS_NUM         13   /* Maximum priv levels for Maximus         */
  64. #define CHAR_BITS           8   /* Number of bits in a `char' variable     */
  65. #define PATHLEN           120   /* Max. length of a path                   */
  66. #define MAX_DRIVES         26   /* Maximum number of drives on system;     *
  67.                                  * for MS-DOS, A through Z.  Used by       *
  68.                                  * Save_Dir()...                           */
  69.  
  70.  
  71. #ifdef __TURBOC__
  72.   /* This won't be emitted if we compile with -O! */
  73.   #define EmbedCopyright() goto __label_start;  __label_emit: \
  74.   __emit__('\n','\n','\n','\n','C','o','p','y','r','i','g','h','t',' ','(','c',')',' ', \
  75.   '1','9','9','0',' ','b','y',' ','S','c','o','t','t',' ','J','.',' ', \
  76.   'D','u','d','l','e','y',',',' ','A','l','l',' ','R','i','g','h','t','s',' ', \
  77.   'R','e','s','e','r','v','e','d','.','\n','\n','\n','\n'); \
  78.   __label_start:
  79. #else
  80.   #define EmbedCopyright()
  81. #endif
  82.  
  83.   #if (defined(__TURBOC__) && defined(__FARDATA__))
  84.   #include "alc.h"
  85.   #define malloc(n)     farmalloc(n)
  86.   #define calloc(n,u)   farcalloc(n,u)
  87.   #define free(p)       farfree(p)
  88.   #define realloc(p,n)  farrealloc(p,n)
  89.   #define coreleft()    farcoreleft()
  90.   #endif
  91.  
  92. #define Hello(prog,desc,version,year) EmbedCopyright(); printf("\n" prog "  " desc ", Version %s.\nCopyright 1990 by Scott J. Dudley of 1:249/106.  All rights reserved.\n\n",version)
  93. #define trace(d,t)            printf(#d"=<%"#t">\n",d);
  94. #define carrier_flag          (prm.carrier_mask)
  95. #define BitOff(a,x)           (void)((a)[(x)/CHAR_BITS] &= ~(1 << ((x) % CHAR_BITS)))
  96. #define BitOn(a,x)            (void)((a)[(x)/CHAR_BITS] |= (1 << ((x) % CHAR_BITS)))
  97. #define IsBit(a,x)            ((a)[(x)/CHAR_BITS] & (1 << ((x) % CHAR_BITS)))
  98.  
  99. #define lputs(handle,string)  write(handle,string,strlen(string))
  100.  
  101. #define dim(a)                (sizeof(a)/sizeof(a[0]))
  102. #define eqstr(str1,str2)      (! strcmp(str1,str2))
  103. #define eqstri(str1,str2)     (! stricmp(str1,str2))
  104. #define isnl(string)          (*(string)=='\0')
  105. #define mknl(string)          (*(string)='\0')
  106. #define smalloc(p,size)       ((p)==NULL?((((p)=malloc(size))==NULL)?(NoMem(),0):-1):0)
  107. #define sfree(p)              ((p)!=NULL?free(p),(p)=NULL:0)
  108. #define divby(num,div)        ((num % div)==0)
  109. #define striplast(s,c)        (s[strlen(s)-1]=(*s && s[strlen(s)-1]==c) ? '\0' : s[strlen(s)-1])
  110. #define f_tolwr(c)            (_to_lwr[c])
  111. #define f_toupr(c)            (_to_upr[c])
  112.  
  113. #ifndef updcrc
  114. #define updcrc(cp, crc)       (crctab[((crc >> 8) & 255) ^ cp] ^ (crc << 8))
  115. #endif
  116.  
  117.  
  118. #ifndef max
  119. #define max(a,b)              (((a) > (b)) ? (a) : (b))
  120. #define min(a,b)              (((a) < (b)) ? (a) : (b))
  121. #endif
  122.  
  123. struct _stamp   /* DOS-style datestamp */
  124. {
  125.   struct
  126.   {
  127.     unsigned int da : 5;
  128.     unsigned int mo : 4;
  129.     unsigned int yr : 7;
  130.   } date;
  131.  
  132.   struct
  133.   {
  134.     unsigned int ss : 5;
  135.     unsigned int mm : 6;
  136.     unsigned int hh : 5;
  137.   } time;
  138. };
  139.  
  140.  
  141. union stamp_combo   /* Union so we can access stamp as "int" or by individual components */
  142. {
  143.   struct _stamp msg_st;
  144.  
  145.   struct
  146.   {
  147.     unsigned int date;
  148.     unsigned int time;
  149.   } dos_st;
  150.  
  151.   unsigned long ldate;
  152. };
  153.  
  154. struct __priv
  155. {
  156.   char *name;
  157.   int priv;
  158. };
  159.  
  160.  
  161. extern char months[][10],
  162.             weekday[][10];
  163.  
  164. extern char months_ab[][4],
  165.             weekday_ab[][4];
  166.  
  167. extern struct __priv _privs[];
  168.  
  169. int fexist(char *filename);
  170. long fsize(char *filename);
  171. int lcopy(char *fromfile,char *tofile);
  172. int cdecl lprintf(int handle,char *format,...);
  173. long zfree(char *drive);
  174. void encode(char *str,int *iarray,int len,int key);
  175. void decode(int *iarray,char *str,int key);
  176. int getword(char *strng,char *dest,char *delim,int findword);
  177. int getwordq(char *strng,char *dest,char *delim,char quote,int findword);
  178. void Std_Num_To_Ansi(int avatar,char *ansi);
  179. void _Std_Num_To_Ansi(int *avatar);
  180. char *fancy_str(char *value);
  181. char *soundex(char *string);
  182. int any2dec(char *str,unsigned int radix);
  183. char *dec2any(unsigned int number,unsigned int radix);
  184. int isleap(int year);
  185. char *strrcat(char *string1,char *string2);
  186. char *make_fullfname(char *path);
  187. char *firstchar(char *strng,char *delim,int findword);
  188. int cdecl xprintf(char *format,...);
  189. void xputs(char *s);
  190. void cdecl xputch(char ch);
  191. void putss(char *string);
  192. char *stristr(char *string,char *search);
  193. int stristrm(char *string,char *search[],int stopbit);
  194. int stricmpm(char *string,char *search[],int stopbit);
  195. long stristrml(char *string,char *search[],long stopbit);
  196. int nullptr(void);
  197. long timerset(unsigned int duration);
  198. int timeup(long timer);
  199. /*void timer(unsigned int duration);*/
  200. int sbsearch(char *key,char *base[],unsigned int num);
  201. char *memstr(char *string,char *search,int lenstring,int strlen_search);
  202. void ddos_timer(unsigned int duration);
  203. void ddos_priority(int value);
  204. void ddos_switch(void);
  205. void ddos_suspend(void);
  206. void ddos_resume(void);
  207. void ddos_kill(void);
  208. void ddos_clear_vkb(void);
  209. void ddos_send(char ch);
  210. void ddos_addkey(char ch);
  211. void ddos_key_disable(void);
  212. void ddos_key_enable(void);
  213. int ddos_herestat(void);
  214. int ddos_flipstat(void);
  215. void ddos_funcs_enable(void);
  216. void ddos_funcs_disable(void);
  217. void brktrap(void);
  218. void brkuntrap(void);
  219. void qksort(int a[],size_t n);
  220. int direxist(char *directory);
  221.  
  222. int get_fdt(int handle, union stamp_combo *filestamp);
  223. int set_fdt(int handle, union stamp_combo *filestamp);
  224. void delay(unsigned ms);
  225.  
  226. int get_disk(void);
  227. int set_disk(int drive);
  228. void clreol(void);
  229. void clrscr(void);
  230. int putc2(int c);
  231. char *puts2(char *s);
  232. int pascal far flush_handle2(int fh);
  233. int pascal far ddos_sleep(void);
  234. int pascal far desq_sleep(void);
  235. int pascal far pcmos_sleep(void);
  236. int pascal far Fake_Fos_Peek(void);
  237. int pascal far Fake_Fos_Getch(void);
  238. int zeller(int m,int d,int y);
  239. void iqsort (char *base, unsigned int nel, unsigned int inwidth, int (*comp)());
  240. void colour_to_string(int col,char *s);
  241. int pascal make_dir(char *dir);
  242. FILE * pascal shfopen(char *name,char *fpmode,int fdmode);;
  243.  
  244. /* MS docs use both SH_DENYNONE and SH_DENYNO */
  245.  
  246. #if !defined(SH_DENYNONE) && defined(SH_DENYNO)
  247.   #define SH_DENYNONE SH_DENYNO
  248. #endif
  249.  
  250. #define shopen(path,access)       sopen(path,access,SH_DENYNONE,S_IREAD | S_IWRITE)
  251. #define cshopen(path,access,mode) sopen(path,access,SH_DENYNONE,mode)
  252.  
  253.  
  254. #ifndef __TURBOC__
  255.  
  256.   int fossil_wherex(void);
  257.   int fossil_wherey(void);
  258.   void pascal fossil_getxy(char *row, char *col);
  259.  
  260.   #define textattr(attr)
  261.   #define getdisk()                  get_disk()
  262.   #define setdisk(drive)             set_disk(drive)
  263.   #define gotoxy(x,y)                fossil_gotoxy((char)x,(char)y)
  264.   #define movmem(source,dest,count)  memmove(dest, source, count)
  265.   #define getvect(int)            _dos_getvect(int)
  266.   #define setvect(int, func)      _dos_setvect(int, func)
  267.   #define inportb(port)           inp(port)
  268.   #define outportb(port, byte)    outp(port, byte)
  269.  
  270. #endif
  271.  
  272.  
  273. #if (defined(MSDOS) || defined(__TURBOC__)) && !defined(OS_2)
  274.  
  275.     /* these asm functions are declared far so they are usable in
  276.      * any memory model.
  277.      */
  278. int pascal far DdosInstalled(void);
  279. #define vbuf_flush() {if (displaymode==VIDEO_ibm) VidSync();}
  280.  
  281. #else
  282. #define DdosInstalled()  FALSE
  283. void vbuf_flush(void);
  284. #endif
  285.  
  286. #endif
  287.  
  288. #ifdef OS_2
  289.   void vbuf_flush(void);
  290.   void SnSetPipeName(char *pipename);
  291.   void SnWrite(char *str);
  292.  
  293.   #define  Start_Shadow()
  294.   #define  End_Shadow()
  295. #else
  296.   void pascal Start_Shadow(void);
  297.   void pascal End_Shadow(void);
  298. #endif
  299.  
  300.  
  301.  
  302. /*
  303.  >         typedef byte unsigned char;
  304.  >         extern struct {
  305.  >              byte winleft, wintop, winright, winbottom;
  306.  >              byte attribute, normattr;
  307.  >              byte currmode;
  308.  >              byte screenheight, screenwidth;
  309.  >              byte graphmode, snow;
  310.  >              void far *ram;
  311.  >         } _video;
  312.  >         main() {
  313.  >             _video.winbottom = (_video.screenheight = 50) - 1;
  314.  >             ...
  315.  >         }
  316.  
  317. */
  318.