home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 1
/
crawlyvol1.bin
/
program
/
compiler
/
bob13st
/
bob.c
next >
Wrap
C/C++ Source or Header
|
1991-12-24
|
2KB
|
108 lines
/* bob.c - the main routine */
/*
Copyright (c) 1991, by David Michael Betz
All rights reserved
*/
#include <stdio.h>
#include <setjmp.h>
#include "bob.h"
/* Revision history
1.0 08/15/91 Initial version for DDJ article
1.1 08/20/91 Fixed do_for to allow null statements
1.2 08/28/91 Fixed problem with newobject()
1.3 09/27/91 Fixed a bug in compact_vector()
1.3ST 12/25/91 Ported to Mark Williams C for Atari ST
Added external reference for fgetc
*/
#define BANNER "Bob v1.3ST - Copyright (c) 1991, by David Betz\n Atari ST 1991, by Peter Ismen"
/* global variables */
jmp_buf error_trap;
char **bobargv;
int bobargc;
/* external variables */
extern int decode,trace;
extern FILE fgetc();
/* main - the main routine */
main(argc,argv)
int argc;
char *argv[];
{
char fullname[20];
int i;
osputs(BANNER); /* display the banner */
osputs("\n");
initialize(SMAX,CMAX); /* initialize */
bobargc = argc - 1;
bobargv = argv + 1;
for (i = 1; i < argc; ++i) /* load and execute some code */
{
if (strcmp(argv[i],"-d") == 0)
decode = 1;
else
{
if (strcmp(argv[i],"-t") == 0)
trace = 1;
else
{
strcpy(fullname,argv[i]);
strcat(fullname,".bob");
compile_file(fullname);
}
}
}
if (!execute("main"))
printf("Can't execute 'main'\n");
}
/* compile_file - compile definitions in a file */
static compile_file(name)
char *name;
{
FILE *ifp;
if ((ifp = fopen(name,"r")) != NULL)
{
compile_definitions(fgetc,ifp);
fclose(ifp);
}
}
/* info - display progress information */
info(fmt,a1,a2,a3,a4,a5,a6)
char *fmt;
{
char buf1[100],buf2[100];
sprintf(buf1,fmt,a1,a2,a3,a4,a5,a6);
sprintf(buf2,"[ %s ]\n",buf1);
osputs(buf2);
}
/* error - print an error message and exit */
error(fmt,a1,a2,a3,a4)
char *fmt;
{
char buf1[100],buf2[100];
sprintf(buf1,fmt,a1,a2,a3,a4);
sprintf(buf2,"Error: %s\n",buf1);
osputs(buf2);
longjmp(error_trap,1);
}
osputs(str)
char *str;
{
fputs(str,stderr);
}