ftp.nice.ch/pub/next/developer/languages/ada/gnat.1.83.N.b.tar.gz#/gnat-1.83-m68k-next-bin/examples/b_demo1.c

This is b_demo1.c in view mode; [Download] [Up]

#include <string.h>
  
/* predefined exceptions */
char constraint_error = 0;
char numeric_error    = 0;
char program_error    = 0;
char storage_error    = 0;
char tasking_error    = 0;
char _abort_signal    = 1;
 
static int static_argc;
static char * *static_argv;
 
int arg_count () { return static_argc; }
 
int len_arg (arg_num)
   int arg_num;
   { return strlen(static_argv[arg_num]); }
 
int fill_arg (a, i)
   char * a;
   int i;
{ strncpy (a, static_argv[i],
     strlen(static_argv[i])); }
 
extern void (*system__tasking_soft_links__abort_defer) ();  
extern char *system__task_specific_data__get_gnat_exception ();
extern int *system__task_specific_data__get_jmpbuf_address ();
extern char debug__get_debug_flag_k (); 

void
__gnat_raise_nodefer (except)
     char *except;
{
  int *ptr = system__task_specific_data__get_jmpbuf_address ();

  system__task_specific_data__set_gnat_exception (except);
  if (ptr)
    longjmp (ptr, 1);

  else 
    {
      if (except == &constraint_error) 
        puts ("\nraised Constraint_Error\n"); 
      else if (except == &numeric_error) 
        puts ("\nraised Numeric_Error\n"); 
      else if (except == &program_error) 
        puts ("\nraised Program_Error\n"); 
      else if (except == &storage_error)
        puts ("\nraised Storage_Error\n");
      else if (except == &tasking_error)
        puts ("\nraised Tasking_Error\n");
      else if (!ptr)
        puts ("\nraised unhandled exception\n");

      exit (1);

    }
}

void 
__gnat_raise (except)
     char *except;
{
  (*system__tasking_soft_links__abort_defer) ();
  __gnat_raise_nodefer (except);
}

void
__gnat_reraise (flag)
     int flag;
{
  char *except = system__task_specific_data__get_gnat_exception ();

  if (flag)
    __gnat_raise (except);
  else
    __gnat_raise_nodefer (except);
}
void
__gnat_raise_constraint_error ()
{
  __gnat_raise (&constraint_error);
}
int gnat_exit_status = 0;
void
set_gnat_exit_status (i)
      int i;
{
  gnat_exit_status = i;
}
int
__main_priority ()
{
  return -1;
}
void main (argc, argv)
   int argc;
   char * argv[];
{
   static_argc = argc;
   static_argv = argv;
 
   system__tasking_soft_links___elabs ();
   system__task_specific_data___elabb ();
   instr___elabs ();
 
   _ada_demo1 ();
   exit (gnat_exit_status);
}
/* BEGIN Object file list
/usr/local/lib/gcc-lib/m68k-next-ns3/2.6.0/adalib/ada.o
/usr/local/lib/gcc-lib/m68k-next-ns3/2.6.0/adalib/system.o
/usr/local/lib/gcc-lib/m68k-next-ns3/2.6.0/adalib/a-tags.o
/usr/local/lib/gcc-lib/m68k-next-ns3/2.6.0/adalib/s-stoele.o
/usr/local/lib/gcc-lib/m68k-next-ns3/2.6.0/adalib/s-taspda.o
/usr/local/lib/gcc-lib/m68k-next-ns3/2.6.0/adalib/s-tasoli.o
/usr/local/lib/gcc-lib/m68k-next-ns3/2.6.0/adalib/s-stalib.o
instr.o
/usr/local/lib/gcc-lib/m68k-next-ns3/2.6.0/adalib/io.o
demo1.o
   END Object file list */

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.