home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / hamradio / 7plus202.zip / 7PL2SRC.LZH / 7PLUS.H < prev    next >
C/C++ Source or Header  |  1992-06-11  |  8KB  |  279 lines

  1. /*---------*\
  2. >  7plus.h  <
  3. \*---------*/
  4.  
  5. /* Uncomment next line, if compiling on AMIGA! */
  6. /* #define _AMIGA_ */
  7.  
  8. #define YES "yes"
  9. #define ALWAYS "always"
  10. #define NO  "no"
  11. #define EOS '\0'
  12.  
  13. /* Some compilers are very strict abt the type of NULL-pointers */
  14. #define NULLFP ((FILE *) 0)
  15. #define NULLCP ((char *) 0)
  16.  
  17. /** these includes should work anywhere **/
  18. #include <stdio.h>
  19. #include <string.h>
  20. #ifdef __M_XENIX__
  21.  #include <malloc.h>
  22.  #define SEEK_CUR 1
  23.  #define SEEK_END 2
  24.  #define SEEK_SET 0
  25.  typedef unsigned size_t;
  26. #else
  27.  #include <stdlib.h>
  28. #endif
  29. #ifdef SYSV
  30.  #include <unistd.h> /* not sure, if this one is really necessary */
  31. #endif
  32. #include <ctype.h>
  33.  
  34. /* flags for fopen() */
  35. #define OPEN_READ_TEXT "r"
  36. #define OPEN_WRITE_TEXT "w"
  37. #define OPEN_APPEND_TEXT "a"
  38. #define OPEN_RANDOM_TEXT "r+"
  39. #ifdef __unix__
  40.  #define OPEN_READ_BINARY "r"
  41.  #define OPEN_WRITE_BINARY "w"
  42.  #define OPEN_APPEND_BINARY "a"
  43.  #define OPEN_RANDOM_BINARY "r+"
  44. #else
  45.  #define OPEN_READ_BINARY "rb"
  46.  #define OPEN_WRITE_BINARY "wb"
  47.  #define OPEN_APPEND_BINARY "ab"
  48.  #define OPEN_RANDOM_BINARY "r+b"
  49. #endif
  50.  
  51. /* Microsoft's Quick C has some different makros and function names **/
  52. #ifdef _QC
  53.  #define __MSDOS__
  54.  #define MAXDRIVE _MAX_DRIVE
  55.  #define MAXDIR   _MAX_DIR
  56.  #define MAXFILE  _MAX_FNAME
  57.  #define MAXEXT   _MAX_EXT
  58.  #define MAXPATH  _MAX_PATH
  59.  #define fnsplit  _splitpath
  60. #endif
  61.  
  62. #ifdef __MSDOS__
  63.  #ifdef __TURBOC__
  64.   #include <dir.h>
  65.   #include <io.h>
  66.  #endif
  67.  #include <conio.h>
  68.  #define PATHSEP "\\"
  69.  #define PATHCHAR '\\'
  70.  #define INDICATE 0xdb
  71.  #define TWO_CHAR_SEP
  72.  #define MAXFNAME MAXFILE+MAXEXT-1
  73.  #define _TIMESTAMP
  74.  #define _CHSIZE_OK
  75. #endif
  76.  
  77. #ifdef _AMIGA_
  78.  #undef  YES
  79.  #define YES ""
  80.  #undef  NO
  81.  #define NO ""
  82.  #undef ALWAYS
  83.  #define ALWAYS ""
  84.  #define SEEK_SET 0
  85.  #define SEEK_CUR 1
  86.  #define SEEK_END 2
  87.  #define MAXPATH  300
  88.  #define MAXDRIVE 5
  89.  #define MAXDIR   220
  90.  #define MAXFILE  31
  91.  #define MAXEXT   31
  92.  #define PATHSEP  "/"
  93.  #define PATHCHAR '/'
  94.  #define INDICATE '*'
  95.  #define MAXFNAME MAXFILE
  96.  #define _FNSPLIT
  97.  #define _ICMP
  98.  #define getch getchar
  99. #endif
  100.  
  101. #ifdef __TOS__
  102.  #define MAXPATH   119
  103.  #define MAXDRIVE  3
  104.  #define MAXDIR    102
  105.  #define MAXFILE   9
  106.  #define MAXEXT    5
  107.  #define PATHSEP "\\"
  108.  #define PATHCHAR '\\'
  109.  #define TWO_CHAR_SEP
  110.  #define INDICATE 0xdb
  111.  #define MAXFNAME MAXFILE+MAXEXT-1
  112.  #define _FNSPLIT
  113.  #include <ext.h>
  114.  #define _TIMESTAMP
  115.  #define _CHSIZE_OK
  116.  /* quick & dirty, swaps upper and lower word      */
  117.  ulong swapl(ulong l)0x4840; /* opcode for SWAP D0 */
  118.  /* needed for timestamp-functions    (Odo,DL1XAO) */
  119. #endif
  120.  
  121.   
  122. #ifdef __unix__
  123. /* assumed limits (hope reasonable !!! DF6NL) */
  124.  #define ON 0
  125.  #define OFF 1
  126.  #define MAXPATH 256
  127.  #define MAXDRIVE 16
  128.  #define MAXDIR 256
  129.  #define MAXFILE 32
  130.  #define MAXEXT 32
  131.  #define PATHSEP "/"
  132.  #define PATHCHAR '/'
  133.  #define INDICATE '*'
  134.  #define MAXFNAME MAXFILE
  135.  #define _TIMESTAMP
  136.  #define _UXTIMESTAMP
  137.  #define _ICMP
  138.  #define _FNSPLIT
  139.  #define getch my_getch
  140.  #ifdef __i386__
  141.   #ifndef SYSV
  142.    #define SYSV
  143.   #endif
  144.  #endif
  145.  
  146.  #ifdef SYSV
  147.   #include <termio.h>
  148.   struct termio sg[2];
  149.  #else
  150.   #include <sgtty.h>
  151.   struct sgttyb sg[2];
  152.  #endif
  153. #endif /* __unix__ */
  154.  
  155. #define MAXFPATH MAXDRIVE+MAXDIR-1
  156.  
  157. /** shorthands for unsigned types **/
  158. typedef unsigned char byte;  /* 8bit unsigned char       */
  159. #ifdef __unix__
  160.  #include <sys/types.h>
  161.  #ifdef __vax__
  162.    typedef u_long ulong;
  163.  #endif
  164.  #ifdef __M_XENIX__
  165.    typedef unsigned long ulong;
  166.  #endif
  167. #else
  168.  typedef unsigned int  uint;  /* 16 or 32bit unsigned int */
  169.  typedef unsigned long ulong; /* 32bit unsigned long      */
  170. #endif
  171.  
  172. struct  m_index {
  173.   char  filename[14];  /*12  chars +2*/
  174.   char  full_name[258];/*256 chars +2*/
  175.   ulong length;
  176.   ulong timestamp;
  177.   uint  splitsize;
  178.   uint  lines_ok[8160];
  179.   long  lines_left;
  180. };
  181.  
  182. /***************** function prototypes ******************/
  183.  
  184. /** 7plus.c **/
  185. int   go_at_it       (int argc, char **argv);
  186.  
  187. /** encode.c **/
  188. int   encode_file    (char *name, long blocksize, char *searchbin,
  189.                                                   int part, char *head_foot);
  190. int   read_tb        (char *name, char *go_top, char *go_bottom);
  191. int   top_bottom     (FILE *wfile, char *top_bot, char *orgname,
  192.                                                         int part, int parts);
  193. /** decode.c **/
  194. int   control_decode (char *name);
  195. int   decode_file    (char *name, int flag);
  196. void  decode_n_write (FILE *raus, char *p, int length);
  197. void  w_index_err    (struct m_index *index, int flag);
  198. int   make_new_err   (char *name);
  199. void  progress       (char *filename, int part, int of_parts, long errors,
  200.                                                  long rebuilt, char *status);
  201. /* correct.c */
  202. int   correct_meta   (char *name, int itsacor);
  203.  
  204. /** util.c **/
  205. char  *my_fgets      (char *string, register n, FILE *rein);
  206. int   my_putc        (int  outchar, FILE *out);
  207. void  crc_n_lnum     (uint *crc, int *linenumber, char *line);
  208. void  crc2           (uint *crc, char *line);
  209. void  add_crc2       (char *line);
  210. int   mcrc           (char *line, int flag);
  211. int   read_index     (FILE *ifile, struct m_index *index);
  212. int   write_index    (FILE *ifile, struct m_index *index, int flag);
  213. ulong read_ulong     (FILE *in);
  214. uint  read_uint      (FILE *in);
  215. void  write_ulong    (FILE *out, ulong val);
  216. void  write_uint     (FILE *out, uint val);
  217. int   crc_file       (char *file, char *s1, char *s2, int flag);
  218. int   copy_file      (char *to, char *from, ulong timestamp);
  219. void  replace        (char *old, char *new, ulong timestamp);
  220. void  kill_em        (char *name, char *inpath, char *one, char *two,
  221.                                         char *three, char *four, char *five);
  222. void  kill_dest      (FILE *in, FILE *out, char *name);
  223. int   test_exist     (char *filename);
  224. int   test_file      (FILE *in, char *destnam, int flag, int namsize);
  225. void  init_decodetab (void);
  226. void  init_codetab   (void);
  227. void  init_crctab    (void);
  228. void  build_DOS_name (char *name);
  229. #ifndef __unix__
  230.  ulong get_filetime   (FILE *_file);
  231.  void  set_filetime   (FILE *_file, ulong ftimestamp);
  232. #else
  233.  ulong get_uxfiletime (char *filename);
  234.  void  set_uxfiletime (char *filename, ulong ftimestamp);
  235. #endif
  236. uint  get_hex        (char *hex);
  237. #ifdef _FNSPLIT
  238.   void  fnsplit      (char *pth, char *dr, char *pa, char *fn, char *ft);
  239. #endif
  240. #ifdef _ICMP
  241.   char  *strupr      (char *string);
  242.   char  *strlwr      (char *string);
  243.   char  *strcnvt     (char *string, int flag);
  244.   int   stricmp      (const char *s1, const char *s2);
  245.   int   strnicmp     (const char *s1, const char *s2, size_t n);
  246. #endif
  247.  
  248. /** rebuild.c **/
  249. int   rebuild        (char *line, int flag);
  250.  
  251. /** extract.c **/
  252. int   extract_files  (char *name, char *search);
  253.  
  254. /** join.c **/
  255. int   join_control   (char *file1, char *file2);
  256. int   join_err       (char *file1, char *file2);
  257.  
  258. /** unix.c **/
  259. #ifdef __unix__
  260.  struct tm *__offtime (const time_t *t, long int offset);
  261.  struct tm *gmtime    (const time_t *t);
  262.  time_t    mktime     (register struct tm *tp);
  263.  int       my_getch   (void);
  264.  
  265.  #ifdef __i386__
  266.   char     *strstr    (const char *s1, const char *s2);
  267.   int      rename     (const char *s1, const char *s2);
  268.  #endif
  269.  
  270.  #ifdef __vax__
  271.   #ifdef __STDC__
  272.    extern char *strdup (const char *);
  273.   #else
  274.    extern char *strdup ();
  275.   #endif
  276.  #endif
  277.  
  278. #endif
  279.