home *** CD-ROM | disk | FTP | other *** search
/ ftp.uni-stuttgart.de/pub/systems/acorn/ / Acorn.tar / Acorn / acornet / dev / oberon / pot.spk / pot / tests / c / Say_hello < prev   
Text File  |  1995-05-06  |  2KB  |  86 lines

  1. #include <pOtRTL.h>
  2. #include "Hello.h"
  3. #include <stddef.h>
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include <signal.h>
  7.  
  8. #ifdef __sun__
  9. #define atexit(x) on_exit(x,NULL)
  10. # ifndef L_tmpnam
  11. # define L_tmpnam 1024
  12. # endif
  13. #endif
  14.  
  15. #ifdef __MSDOS__
  16. # ifdef __TURBOC__
  17. extern unsigned _stklen = 32768;
  18. # endif
  19. #endif
  20.  
  21. #ifdef __riscos
  22. # define unlink remove
  23. #endif
  24.  
  25. pOt_LONGINT pOt__gc_heapthreshold = 65536;
  26.  
  27. void catch(signo)
  28.     int signo;
  29. {
  30.   switch(signo) {
  31.     case SIGINT: pOt__halt(__FILE__,__LINE__,22); break;
  32.     case SIGFPE: pOt__halt(__FILE__,__LINE__,14); break;
  33.     default: pOt__halt(__FILE__,__LINE__,16); break;
  34.   }
  35. }
  36.  
  37. static void rmparfile()
  38. {
  39.   unlink(pOt__parfilename);
  40.   free(pOt__parfilename);
  41. }
  42.  
  43. int main(argc, argv)
  44.     int argc;
  45.     char **argv;
  46. {
  47.   FILE *parfp, *nestedfp;
  48.   int ch;
  49.  
  50.   parfp = NULL;
  51.   nestedfp = NULL;
  52.  
  53.   signal(SIGINT, catch);
  54.   signal(SIGFPE, catch);
  55.  
  56.   if((pOt__parfilename = malloc(L_tmpnam))==NULL) {
  57.     fprintf(stderr, "%s\n", "Not enough memory to start the program.");
  58.     exit(255);
  59.   }
  60.   tmpnam(pOt__parfilename);
  61.   parfp = fopen(pOt__parfilename, "w");
  62.   if(parfp == NULL) {
  63.     fprintf(stderr, "%s %s.\n", "Cannot create ", pOt__parfilename);
  64.     exit(255);
  65.   }
  66.   while(*(++argv)) {
  67.     if((*argv)[0] == '@') {
  68.       nestedfp = fopen((*argv + 1), "r");
  69.       if(nestedfp == NULL) fprintf(stderr, "%s not found.\n", (*argv + 1));
  70.       else {
  71.         while((ch = fgetc(nestedfp)) != EOF) fputc(ch, parfp);
  72.         fputc('\n', parfp);
  73.         fclose(nestedfp);
  74.       }
  75.     } else fprintf(parfp, "%s\n", *argv);
  76.   }
  77.   fclose(parfp);
  78.   atexit(rmparfile);
  79.  
  80.   pOt_Hello__body();
  81.   pOt_Say_Hello();
  82.  
  83.   exit(0);
  84.   return 0;
  85. }
  86.