home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / LS321.ZIP / LSORT.H < prev    next >
C/C++ Source or Header  |  1990-09-18  |  6KB  |  240 lines

  1. #define C88 Y
  2. #ifdef MSC
  3. #define LINT_ARGS Y
  4. #define UNSIGNED unsigned
  5. #else
  6. #define UNSIGNED
  7. #endif
  8. #define BIGFILE 0xFFFFFFF
  9. #define MAXFI 16
  10. #define CPMEOF 26
  11. #define MAXSTR 1024
  12. #define MAXLRCL 4096
  13. #define NWAY 9
  14. #define MAXREC 16003
  15. #define SBUFLEN (64000l)
  16. #define MBUFLEN (SBUFLEN)
  17. /* Note MIN_SORTRECS * 4 must be big enough to hold 2*MAXLRCL + 4*MAXSTR */
  18. /*      MIN_SBUFLEN must be big enough to hold NWAY*MAXLRCL+10KB (32KB) */
  19. #define MIN_SORTRECS (MAXLRCL + MAXSTR)
  20. #define MIN_SBUFLEN (MAXLRCL*NWAY+10240)
  21. #define MAXFLDS 32
  22. #define NWAY2P1 (2*NWAY + 1)
  23. #define DBMAXFLD 32
  24. #define DB3MAXFLD 128
  25. #define DBFLDSI  16
  26. #define DB3FLDSI 32
  27. #define DBHEDLEN 521
  28. #define WRITEBIN 1
  29. #define READBIN (O_BINARY + O_RDONLY)
  30. #define strmvc strcpy
  31. #define submvc(to,from,len) _move(len,from,to)
  32. #define length strlen
  33. #define tget gets
  34. #define tput(s) bdosputs(s),bdosputs("\r\n")
  35. #define strclc strcmp
  36. #define subclc strncmp
  37. #define subcmp strncmp
  38. #define subcpy(to,from,len) _move(len,from,to)
  39. #define swrite(f,s) write(f,s,strlen(s)),write(f,"\r\n",2)
  40. #define bswrite(f,s) write(f,s,strlen(s)),write(f,"\r\n",2)
  41. #define sread bsread
  42. #define c80puts puts
  43. #ifdef MSC
  44. #define _move(count,source,dest) memcpy(dest,source,count)
  45. #define _setmem(dest,count,value) memset(dest,value,count)
  46. #endif
  47.  
  48. #ifndef _MAX_DIR
  49. #include <stdlib.h>
  50. #endif
  51.  
  52. #ifndef min
  53. #define min(a,b) (a<b ? a :b)
  54. #endif
  55.  
  56. struct dbfld
  57. {
  58.     UNSIGNED char dbfld_name[11],dbfld_type,dbfld_len,fill_0[2],dbfld_dec;
  59. };
  60. struct dbhed
  61. {
  62.     UNSIGNED char db_id; /*=0x02*/
  63.     int  db_nbr;
  64.     UNSIGNED char db_dte[3];
  65.     int  db_lrecl;
  66.     struct dbfld db_flds[DBMAXFLD]; /*field attributes*/
  67.     UNSIGNED char db_trail; /*should=0*/
  68. };
  69. struct db3fld {
  70.     UNSIGNED char db3fld_name[11];
  71.     UNSIGNED char db3fld_type;
  72.     long db3fld_addr;
  73.     UNSIGNED char db3fld_len;
  74.     UNSIGNED char db3fld_dec;
  75.     char db3fill[14];
  76. };
  77. struct db3hed {
  78.     UNSIGNED char db3_id; /*=0x03 or =x083 (if dbt file) */
  79.     UNSIGNED char db3_dte[3];
  80.     long int db3_nbr;
  81.     int  db3_headrln,db3_lrecl;
  82.     UNSIGNED char db3_headfill[20];
  83.     struct db3fld db3_flds[DB3MAXFLD]; /*field attributes*/
  84.     UNSIGNED char db3_trail; /*should=0d*/
  85.     UNSIGNED char db3_cpmeof; /* set to 26 if needed */
  86. };
  87. struct fieldinfo {
  88.     int (*lcmpsub) () ,fstart,fcond;
  89.     UNSIGNED char flen,ftype;
  90. };
  91. struct sortparm {
  92.     long int rcount[MAXSTR],filesize;
  93.     int lrecl,str_wri,maxlrecl,db3hdrln;
  94.     struct fieldinfo lsdata[MAXFLDS];
  95.     UNSIGNED char dbasebuf[DBHEDLEN],mfile[NWAY2P1][_MAX_DIR],infi[_MAX_DIR],otfi[_MAX_DIR];
  96.     UNSIGNED char ansbuf[128],merg_inn,merg_pass,merg_drive,smi,nflds,nway;
  97.     UNSIGNED char drive1,drive2,mount,phase,harddisk,cpmeof;
  98. ;
  99.  
  100. struct mergebuf {
  101.     char *mbuffer;
  102.     unsigned int mbegin,mend,msize,meof,mchann; 
  103. };
  104.  
  105. #ifdef LINT_ARGS
  106. char *parsepp(char **,char);
  107. int cscan(char *,char);
  108. int slngcmp(long *,long *,int);
  109. int slogcmp(char *,char *,int);
  110. int shlfcmp(int *,int *,int);
  111. int sfltcmp(float *,float *,int);
  112. int sdblcmp(double *,double *,int);
  113. int sxcmp(char *,char *,int);
  114. int sycmp(char *,char *,int);
  115. int szcmp(char *,char *,int);
  116. int sintcmp(char [],char [],int);
  117. int zonecmp(char [],char [],int);
  118. void oterr(int otchan,char *msg);
  119. int copyfi(struct sortparm *);
  120. int lssort(struct sortparm *);
  121. void sortout(char *[],int,struct sortparm *,int,char *);
  122. int sortin(char *[],int *,char *[],long,int,int,int *,long *,struct sortparm *);
  123. void mergrbuf(int lrecl,struct mergebuf *mbf);
  124. char *mergread(struct mergebuf *,int,char);
  125. int mbfint(struct mergebuf *,int,int,int,
  126. char [NWAY2P1][_MAX_DIR],char *,char **,int,char);
  127. int sortread(int,int,char *);
  128. void mergwrite(int,char *,int,struct mergebuf *);
  129. void mergflush(int,struct mergebuf *);
  130. void mountout(char *drive,long size,char *outfile,char harddisk);
  131. void mwork(char *drvie,long size,char harddisk);
  132. int openfi(char *,int);
  133. int create(char *);
  134. int bsread(int,char *);
  135. void fixinfi(char *);
  136. void getsdat(struct sortparm *,struct db3hed *);
  137. void mhelp(char);
  138. void getfldf(struct sortparm *,struct db3hed *);
  139. int setcmd(struct sortparm *);
  140. int getstart(char *,struct db3hed *,int *,char *,int,int);
  141. int getlrecl();
  142. int gettype();
  143. int sortcmp(char *,char *,struct sortparm *);
  144. char *rtjust(char *,char *,char *,int *,int);
  145. char *dlmfld(char *,int,int *);
  146. int lsfloat(char *,int,char *);
  147. void sortmove(char *tostr,char *frstr,int lrecl);
  148. int userip(char *);
  149. void userop(char *,int);
  150. void lsmerge(struct sortparm *,struct db3hed *);
  151. int sort(char **,int,struct sortparm *);
  152. void qksort(int,int,char **,struct sortparm *);
  153. void hpsort(char **,int,struct sortparm *);
  154. void sift(int,int,struct sortparm *,char **);
  155. void chkdbase(UNSIGNED char *,UNSIGNED char *,struct db3hed *);
  156. int getdbase(struct dbhed *);
  157. int getdb3(struct db3hed *,int,int *);
  158. void setcmp(struct sortparm *);
  159. void srchdbh(struct dbhed *,char *,int *,int *,char *);
  160. void srchdb3(struct db3hed *,char *,int *,int *,char *);
  161. int suprcmp(char *,char *,int);
  162. char *pr(char *);
  163. int prmpt(char *,char *);
  164. #else
  165. char *parsepp();
  166. int prmpt();
  167. int cscan();
  168. char *pr();
  169. int _os();
  170. void oterr();
  171. int copyfi();
  172. int lssort();
  173. void sortout();
  174. int sortin();
  175. int sortip();
  176. int sortic();
  177. int sortia();
  178. void sortoa();
  179. int sortib();
  180. void sortoc();
  181. void sortob();
  182. void mergrbuf();
  183. char *mergread();
  184. int mbfint();
  185. int sortread();
  186. void mergwrite();
  187. void mergflush();
  188. void mountout();
  189. int mwork();
  190. int openfi();
  191. int create();
  192. int bsread();
  193. void fixinfi();
  194. void getsdat();
  195. void mhelp();
  196. void getfldf();
  197. int setcmd();
  198. int getstart();
  199. int getlrecl();
  200. int gettype();
  201. int sortcmp();
  202. char *rtjust();
  203. char *dlmfld();
  204. int lsfloat();
  205. void sortmove();
  206. int userip();
  207. int userop();
  208. void lsmerge();
  209. void merge();
  210. long merge1();
  211. void saveparm();
  212. int mrgorder();
  213. void prtstat();
  214. void setup();
  215. int last_pass();
  216. void merge0();
  217. int sort();
  218. void qksort();
  219. void hpsort();
  220. void sift();
  221. void chkdbase();
  222. int getdbase();
  223. int getdb3();
  224. void setcmp();
  225. void srchdbh();
  226. void srchdb3();
  227. #endif
  228.  
  229.  
  230. #ifdef MAIN
  231. char temp[15],*blankline;
  232. long int mtotbuflen;
  233. unsigned max_sortrecs, max_sbuflen;
  234. #else
  235. extern char temp[15],*blankline;
  236. extern long int mtotbuflen;
  237. extern unsigned max_sortrecs, max_sbuflen;
  238. #endif
  239.