home *** CD-ROM | disk | FTP | other *** search
/ Photo CD Demo 1 / Demo.bin / gle / gle / nulledt.c < prev    next >
C/C++ Source or Header  |  1992-11-29  |  5KB  |  238 lines

  1. #include "all.h"
  2. #include <errno.h>
  3. #include <math.h>
  4. #ifdef __TURBOC__
  5. #define HLINECHAR 205
  6. #include "bios.h"
  7. #include "conio.h"
  8. #else
  9. #define ENOFILE 999
  10. #define HLINECHAR '-'
  11. #include "vaxconio.h"
  12. #endif
  13. #include "edt.h"
  14. int vax_edt(char *s);
  15. int delay(int i);
  16. extern int gle_debug;
  17. int gle_speed;
  18. int gle_nspeed;
  19. int trace_on;
  20. #define true (!false)
  21. #define false 0
  22. #define dbg if (gle_debug>0)
  23. long mem_total(void);
  24. int pick_file(char *r, char *w);
  25. typedef char (*TEXT)[];
  26. int scr_blackwhite;
  27. int scr_left(int i);
  28. int scr_right(int i);
  29. int scr_norm(void);
  30. int scr_inv(void);
  31. int scr_grey(void);
  32. int text_search(void);
  33. int text_deleol(void);
  34. int text_undeleol(void);
  35. int scr_savexy(void);
  36. int scr_restorexy(void);
  37. int scr_gets(char *s);
  38. int text_showerror(void);
  39. int text_findnext(void);
  40. int text_changed(void);
  41. int read_command(char *ans, char *ques);
  42. int read_str(char *s);
  43. int text_load(char *fname);
  44. int text_free(void);
  45. int do_help(char *s);
  46. int int_edt(char *fname);
  47. int vinsert(int y, char *s);
  48. int vdelete(int y);
  49. int menu(void);
  50. int gle_redraw(void);
  51. int scrinsert(int y);
  52. int scrdeleteline(int y);
  53. int text_save(void);
  54. int text_eol(void);
  55. int text_delright(void);
  56. int text_delete(void);
  57. int text_undelete(void);
  58. int text_deleteline(void);
  59. int text_left(void);
  60. int text_right(void);
  61. int text_up(void);
  62. int text_down(void);
  63. int text_return(void);
  64. int text_refresh();
  65. int text_putstr(char *s);
  66. int text_setwindow();
  67. int text_saveas(void);
  68. int text_move(int x,int y);
  69. int scr_tab(char *s, int x);
  70. int scr_negtab(char *s, int x, int *fpos, int *scrx);
  71. int fner(char *s);
  72. int fner_clear(void);
  73. int text_setwindow(void);
  74. int text_refresh(void);
  75. int text_main(void);
  76. int text_inkey(void);
  77. int text_scroll(void);
  78. int text_scroll_up(void);
  79. int text_scroll_down(void);
  80. int text_select(void);
  81. int text_cut(void);
  82. int text_paste(void);
  83. int restofline(int y,int x);
  84. int normal_key(int c);
  85. int lineset(int i,char *ss);
  86. int lineinsert(int y, char *ss);
  87. int textinsert(int y);
  88. char *sline(int i);
  89. char *line(int i);
  90. int ncpy(char *d, char *s, int n);
  91. /*------------ GLOBAL VARIABLES --------------*/
  92. extern long gtotalmem;
  93. int max_ngtxt;
  94. extern int ngtxt;
  95. extern char *(*gtxt)[];   /* gtxt is a pointer to an array of poiter to char */
  96. char *(*ctxt)[];    /* cut buffer */
  97. int ncut;
  98. int iserr;
  99. int w_top=0,w_bot=0,w_len,w_cl,w_cx;
  100. #define MAXLINES (max_ngtxt-10)
  101. extern int ngtxt;
  102. int move_pos,onmove;
  103. int ii;
  104. char gbuff[255];
  105. char gbuff2[255];
  106. int selx,sely;
  107. extern char input_file[];
  108. int changed;
  109. int scr_isblackwhite(void);
  110. extern int netxt;    /* errors which occured */
  111. extern char *(*etxt)[];
  112. /*---------------------------------------------------------------------------*/
  113. /* copy gtxt, ngtxt   to local paramters */
  114. int tfx,tfy;
  115. int_edt(char *fname)
  116. {
  117. }
  118. int text_expand(int n);
  119. text_expand(int n)
  120. {
  121.     char **a;
  122.     max_ngtxt = n;
  123.     a = myallocz(4*n);
  124.     if (gtxt!=NULL) {
  125.         memcpy(a,gtxt,ngtxt*4+4);
  126.         myfrees(gtxt,"textexpand");
  127.     }
  128.     gtxt = a;
  129. }
  130. text_load(char *fname)
  131. {
  132. static char inbuff[200];
  133. FILE *fptr;
  134. int i;
  135. char emess[80];
  136.     changed = false;
  137.     strcpy(input_file,fname);
  138.     fptr = fopen(fname,"r");
  139.     if (fptr==NULL) {
  140.         if (errno == ENOFILE) {
  141.         sprintf(emess,"Input file does not exist (%s) ",fname);
  142.         fner(emess);
  143.         delay(1000);
  144.         } else {
  145.             gprint("Unable to open input file {%s} \n",fname);
  146.             perror("Reason");
  147.             fner("Press return to continue");
  148.             text_inkey();
  149.         }
  150.     } else {
  151.      for (;!feof(fptr);) {
  152.         if (fgets(inbuff,200,fptr)!=NULL) {
  153.             i = strlen(inbuff);
  154.             if (inbuff[i-1]=='\n') inbuff[i-1] = 0;
  155.             ngtxt++;
  156.             if (ngtxt>(max_ngtxt-300)) {
  157.                 text_expand(2*(ngtxt+500));
  158.             }
  159.             (*gtxt)[ngtxt] = myalloc(i+1);
  160.             strcpy((*gtxt)[ngtxt],inbuff);
  161.         }
  162.      }
  163.      fclose(fptr);
  164.     }
  165.     if (ngtxt==0) {
  166.         (*gtxt)[++ngtxt] = sdup("size 24 18");
  167.         (*gtxt)[++ngtxt] = sdup("");
  168.     }
  169.     tfx = 1;
  170.     tfy = 1;
  171. }
  172. char errgle[90];
  173. int dont_clear;
  174. gle_abort(char *s)
  175. {
  176.     d_tidyup();
  177.     delay(1000);
  178.     dont_clear = true;
  179.     window(1,1,80,25);
  180.     scr_norm();
  181.     clrscr();
  182.     printf("\n\n\n\n %s \nGle is aborting, Attempting to save file in abort.gle\n",s);
  183.     strcpy(input_file,"abort.gle");
  184.     text_save();
  185.     printf("File is now saved (hopefully)\n");
  186.     if (strstr(s,"alloc")!=NULL  || strstr(s,"Init")!=NULL) {
  187.         printf("\nGLE is short of memory!!\n\n");
  188.         printf("If you are using very large datasets you should try\n");
  189.         printf("the BIGFILE option, otherwise you probably have too\n");
  190.         printf("many memory resident programs on your pc and to make GLE work\n");
  191.         printf("you should remove these from your CONFIG.SYS and AUTOEXEC.BAT\n");
  192.         printf("\n  (make coppies of these files before altering them)\n");
  193.     }
  194.     exit(1);
  195. }
  196. char *function_bar(void);
  197. fner_clear()
  198. {
  199.     if (iserr==false) return;
  200.     if (dont_clear) return;
  201.     window(1,1,80,25);
  202.     gotoxy(1,25);
  203.     scr_grey();
  204.     clreol();
  205.     gotoxy(2,25);
  206.     cputs(function_bar());
  207.     scr_norm();
  208.     iserr = false;
  209.     window(2,3,79,23);
  210. }
  211. fner(char *s)
  212. {
  213.     if (dont_clear) return;
  214.     scr_savexy();
  215.     iserr = true;
  216.     window(1,1,80,25);
  217.     gotoxy(1,25);
  218.     scr_inv();
  219.     clreol();
  220.     gotoxy(2,25);
  221.     cputs(s);
  222.     scr_norm();
  223.     scr_restorexy();
  224.     scr_refresh();
  225. }
  226. text_save()
  227. {}
  228. char *line(int i)
  229. {
  230.     static char xxx[2]="";
  231.     static char eob[7]="[EOB]";
  232.     if (i>ngtxt) {
  233.         if (i==ngtxt+1) return &eob[0];
  234.         else return &xxx[0];
  235.     }
  236.     return (*gtxt)[i];
  237. }
  238.