Run through clang-format.

This commit is contained in:
David Given 2017-01-08 00:15:23 +01:00
parent 11ea3a2fe1
commit 4b7fc5e233

View file

@ -15,451 +15,573 @@
#include <signal.h> #include <signal.h>
#ifndef NORCSID #ifndef NORCSID
static char rcs_id[] = "$Id$" ; static char rcs_id[] = "$Id$";
static char rcs_ack[] = RCS_ACK ; static char rcs_ack[] = RCS_ACK;
#endif #endif
static int sigs[] = { SIGINT, SIGHUP, SIGTERM, 0 } ; static int sigs[] = { SIGINT, SIGHUP, SIGTERM, 0 };
static int arg_count; static int arg_count;
static char *srcvar(void); static char* srcvar(void);
static char *getsuffix(void); static char* getsuffix(void);
static void varinit(void); static void varinit(void);
static void vieuwargs(int, char **); static void vieuwargs(int, char**);
static void firstarg(char *); static void firstarg(char*);
static int process(char *); static int process(char*);
static int startrf(trf *); static int startrf(trf*);
static void block(trf *); static void block(trf*);
static int mayprep(void); static int mayprep(void);
static void scanneeds(void); static void scanneeds(void);
static void setneeds(const char *, int); static void setneeds(const char*, int);
static void noodstop(int); static void noodstop(int);
int main(int argc, char **argv) { int main(int argc, char** argv)
register list_elem *elem ; {
register char *frontend ; register list_elem* elem;
register int *n_sig ; register char* frontend;
register trf *phase ; register int* n_sig;
register trf* phase;
progname=argv[0]; progname = argv[0];
varinit(); varinit();
vieuwargs(argc,argv); vieuwargs(argc, argv);
if ( (frontend=getenv("ACKFE")) ) { if ((frontend = getenv("ACKFE")))
setlist(frontend) ; {
} else { setlist(frontend);
}
else
{
setlist(FRONTENDS); setlist(FRONTENDS);
} }
if ( callname ) { if (callname)
if ( machine ) { {
if (machine)
{
fuerror("can not produce code for both %s and %s", fuerror("can not produce code for both %s and %s",
callname,machine) ; callname, machine);
} }
machine= callname ; machine = callname;
} }
if ( !machine && ! (machine=getenv("ACKM")) ) { if (!machine && !(machine = getenv("ACKM")))
{
#ifdef ACKM #ifdef ACKM
machine= ACKM; /* The default machine */ machine = ACKM; /* The default machine */
#else #else
fuerror("No machine specified") ; fuerror("No machine specified");
#endif #endif
} }
setlist(machine); setlist(machine);
/* Find the linker, needed for argument building */ /* Find the linker, needed for argument building */
scanlist(l_first(tr_list),elem) { scanlist(l_first(tr_list), elem)
if ( t_cont(*elem)->t_linker ) { {
linker= t_cont(*elem) ; if (t_cont(*elem)->t_linker)
{
linker = t_cont(*elem);
} }
} }
transini(); transini();
scanneeds(); scanneeds();
sprintf(template,TMPNAME,getpid()) ; sprintf(template, TMPNAME, getpid());
if ( n_error && !k_flag ) exit(n_error) ; if (n_error && !k_flag)
exit(n_error);
for ( n_sig=sigs ; *n_sig ; n_sig++ ) { for (n_sig = sigs; *n_sig; n_sig++)
if ( signal(*n_sig,noodstop)==SIG_IGN ) { {
signal(*n_sig,SIG_IGN) ; if (signal(*n_sig, noodstop) == SIG_IGN)
{
signal(*n_sig, SIG_IGN);
} }
} }
scanlist ( l_first(arguments), elem ) { scanlist(l_first(arguments), elem)
{
arg_count++; arg_count++;
} }
scanlist ( l_first(arguments), elem ) { scanlist(l_first(arguments), elem)
if ( !process(l_content(*elem)) && !k_flag ) exit(1) ; {
if (!process(l_content(*elem)) && !k_flag)
exit(1);
} }
orig.p_path= (char *)0 ; orig.p_path = (char*)0;
if ( !rts ) rts="." ; if (!rts)
setsvar(keeps(RTS),rts) ; rts = ".";
if ( linker ) getmapflags(linker) ; setsvar(keeps(RTS), rts);
if (linker)
getmapflags(linker);
scanlist(l_first(tr_list),elem) { scanlist(l_first(tr_list), elem)
phase=t_cont(*elem) ; {
if ( phase->t_combine && phase->t_do ) { phase = t_cont(*elem);
if ( phase->t_blocked ) { if (phase->t_combine && phase->t_do)
{
if (phase->t_blocked)
{
#ifdef DEBUG #ifdef DEBUG
if ( debug ) { if (debug)
{
vprint("phase %s is blocked\n", vprint("phase %s is blocked\n",
phase->t_name) ; phase->t_name);
} }
#endif #endif
disc_inputs(phase) ; disc_inputs(phase);
continue ; continue;
} }
orig.p_keep=YES ; orig.p_keep = YES;
orig.p_keeps=NO ; orig.p_keeps = NO;
orig.p_path=phase->t_origname ; orig.p_path = phase->t_origname;
if ( p_basename ) throws(p_basename) ; if (p_basename)
if ( orig.p_path ) { throws(p_basename);
p_basename= keeps(ack_basename(orig.p_path)) ; if (orig.p_path)
} else { {
p_basename=0 ; p_basename = keeps(ack_basename(orig.p_path));
} }
if ( !startrf(phase) && !k_flag ) exit(1) ; else
{
p_basename = 0;
}
if (!startrf(phase) && !k_flag)
exit(1);
} }
} }
if ( n_error ) exit(n_error) ; if (n_error)
exit(n_error);
exit(0) ; exit(0);
} }
static char *srcvar(void) { static char* srcvar(void)
return orig.p_path ; {
return orig.p_path;
} }
static char *getsuffix(void) { static char* getsuffix(void)
return strrchr(orig.p_path, SUFCHAR) ; {
return strrchr(orig.p_path, SUFCHAR);
} }
static void varinit(void) { static void varinit(void)
{
/* initialize the string variables */ /* initialize the string variables */
register char *envstr ; register char* envstr;
extern char *em_dir; extern char* em_dir;
if ( envstr=getenv("ACKDIR") ) { if (envstr = getenv("ACKDIR"))
{
em_dir = keeps(envstr); em_dir = keeps(envstr);
} }
setsvar(keeps(HOME),em_dir) ; setsvar(keeps(HOME), em_dir);
setpvar(keeps(SRC),srcvar) ; setpvar(keeps(SRC), srcvar);
setpvar(keeps(SUFFIX),getsuffix) ; setpvar(keeps(SUFFIX), getsuffix);
} }
/************************* flag processing ***********************/ /************************* flag processing ***********************/
void vieuwargs(int argc, char **argv) { void vieuwargs(int argc, char** argv)
register char *argp; {
register int nextarg ; register char* argp;
register int eaten ; register int nextarg;
int hide ; register int eaten;
int hide;
firstarg(argv[0]) ; firstarg(argv[0]);
nextarg= 1 ; nextarg = 1;
while ( nextarg<argc ) { while (nextarg < argc)
argp= argv[nextarg] ; {
nextarg++ ; argp = argv[nextarg];
if ( argp[0]!='-' || argp[1]=='l' ) { nextarg++;
if (argp[0] != '-' || argp[1] == 'l')
{
/* Not a flag, or a library */ /* Not a flag, or a library */
l_add(&arguments,argp) ; l_add(&arguments, argp);
continue ; continue;
} }
/* Flags */ /* Flags */
hide=NO ; /* Do not hide this flags to the phases */ hide = NO; /* Do not hide this flags to the phases */
eaten=0 ; /* Did not 'eat' tail of flag yet */ eaten = 0; /* Did not 'eat' tail of flag yet */
switch ( argp[1] ) { switch (argp[1])
case 'm': if ( machine ) fuerror("Two machines?") ; {
machine= &argp[2]; case 'm':
if (*machine == '\0') { if (machine)
fuerror("-m needs machine name"); fuerror("Two machines?");
} machine = &argp[2];
eaten=1 ; if (*machine == '\0')
break ; {
case 'o': if ( nextarg>=argc ) { fuerror("-m needs machine name");
fuerror("-o can't be the last flag") ; }
} eaten = 1;
if ( outfile ) fuerror("Two results?") ; break;
outfile= argv[nextarg++] ; case 'o':
hide=YES ; if (nextarg >= argc)
break ; {
case 'O': Optlevel = atoi(&argp[2]); fuerror("-o can't be the last flag");
if (! Optlevel) Optlevel = 1; }
Optlist= &argp[2] ; if (outfile)
eaten=1 ; fuerror("Two results?");
break ; outfile = argv[nextarg++];
case 'v': if ( argp[2] ) { hide = YES;
v_flag += atoi(&argp[2]) ; break;
eaten=1 ; case 'O':
} else { Optlevel = atoi(&argp[2]);
v_flag++ ; if (!Optlevel)
} Optlevel = 1;
Optlist = &argp[2];
eaten = 1;
break;
case 'v':
if (argp[2])
{
v_flag += atoi(&argp[2]);
eaten = 1;
}
else
{
v_flag++;
}
#ifdef DEBUG #ifdef DEBUG
if ( v_flag>=3 ) debug=v_flag-2 ; if (v_flag >= 3)
debug = v_flag - 2;
#endif #endif
break ; break;
case 'c': if ( stopsuffix ) fuerror("Two -c flags") ; case 'c':
stopsuffix= &argp[2]; eaten=1; if (stopsuffix)
if ( *stopsuffix && *stopsuffix!=SUFCHAR ) { fuerror("Two -c flags");
fuerror("-c flag has invalid tail") ; stopsuffix = &argp[2];
} eaten = 1;
break ; if (*stopsuffix && *stopsuffix != SUFCHAR)
case 'k': k_flag++ ; {
break ; fuerror("-c flag has invalid tail");
case 't': t_flag++ ; }
break ; break;
case 'R': eaten=1; case 'k':
break ; k_flag++;
case 'r': if ( argp[2]!=SUFCHAR ) { break;
error("-r must be followed by %c",SUFCHAR) ; case 't':
} t_flag++;
l_add(&tail_list, &argp[2]) ; break;
eaten=1 ; case 'R':
break ; eaten = 1;
case '.': if ( rts ) { break;
if ( strcmp(rts,&argp[1])!=0 ) case 'r':
fuerror("Two run-time systems?") ; if (argp[2] != SUFCHAR)
} else { {
rts= &argp[1] ; error("-r must be followed by %c", SUFCHAR);
l_add(&head_list, rts) ; }
l_add(&tail_list, rts) ; l_add(&tail_list, &argp[2]);
} eaten = 1;
eaten=1 ; break;
break ; case '.':
case 0 : nill_flag++ ; eaten++ ; if (rts)
hide=YES ; {
break; if (strcmp(rts, &argp[1]) != 0)
case 'w': w_flag++; fuerror("Two run-time systems?");
break ; }
default: /* The flag is not recognized, else
{
rts = &argp[1];
l_add(&head_list, rts);
l_add(&tail_list, rts);
}
eaten = 1;
break;
case 0:
nill_flag++;
eaten++;
hide = YES;
break;
case 'w':
w_flag++;
break;
default: /* The flag is not recognized,
put it on the list for the sub-processes put it on the list for the sub-processes
*/ */
#ifdef DEBUG #ifdef DEBUG
if ( debug ) { if (debug)
vprint("Flag %s: phase dependent\n",argp) ; {
} vprint("Flag %s: phase dependent\n", argp);
}
#endif #endif
l_add(&flags,keeps(argp)) ; l_add(&flags, keeps(argp));
eaten=1 ; eaten = 1;
hide=YES ; hide = YES;
} }
if ( !hide ) { if (!hide)
register char *tokeep ; {
tokeep=keeps(argp) ; register char* tokeep;
if ( argp[1]=='R' ) { tokeep = keeps(argp);
l_add(&R_list, tokeep) ; if (argp[1] == 'R')
} else { {
*tokeep |= NO_SCAN ; l_add(&R_list, tokeep);
} }
l_add(&flags,tokeep) ; else
{
*tokeep |= NO_SCAN;
}
l_add(&flags, tokeep);
} }
if ( argp[2] && !eaten ) { if (argp[2] && !eaten)
werror("Unexpected characters at end of %s",argp) ; {
werror("Unexpected characters at end of %s", argp);
} }
} }
return ; return;
} }
static void firstarg(char *argp) { static void firstarg(char* argp)
register char *name ; {
register char* name;
name=strrchr(argp,'/') ; name = strrchr(argp, '/');
if ( name && *(name+1) ) { if (name && *(name + 1))
name++ ; {
} else { name++;
name= argp ;
} }
callname= name; else
{
name = argp;
}
callname = name;
} }
/************************* argument processing ***********************/ /************************* argument processing ***********************/
static int process(char *arg) { static int process(char* arg)
{
/* Process files & library arguments */ /* Process files & library arguments */
trf *phase ; trf* phase;
register trf *tmp ; register trf* tmp;
#ifdef DEBUG #ifdef DEBUG
if ( debug ) vprint("Processing %s\n",arg) ; if (debug)
vprint("Processing %s\n", arg);
#endif #endif
p_suffix= strrchr(arg,SUFCHAR) ; p_suffix = strrchr(arg, SUFCHAR);
orig.p_keep= YES ; /* Don't throw away the original ! */ orig.p_keep = YES; /* Don't throw away the original ! */
orig.p_keeps= NO; orig.p_keeps = NO;
orig.p_path= arg ; orig.p_path = arg;
if ( arg[0]=='-' || !p_suffix ) { if (arg[0] == '-' || !p_suffix)
if ( linker ) add_input(&orig,linker) ; {
return 1 ; if (linker)
add_input(&orig, linker);
return 1;
} }
if ( p_basename ) throws(p_basename) ; if (p_basename)
p_basename= keeps(ack_basename(arg)) ; throws(p_basename);
p_basename = keeps(ack_basename(arg));
/* Try to find a path through the transformations */ /* Try to find a path through the transformations */
switch( getpath(&phase) ) { switch (getpath(&phase))
case F_NOPATH : {
error("Cannot produce the desired file from %s",arg) ; case F_NOPATH:
if ( linker ) add_input(&orig,linker) ; error("Cannot produce the desired file from %s", arg);
return 1 ; if (linker)
case F_NOMATCH : add_input(&orig, linker);
if ( stopsuffix ) werror("Unknown suffix in %s",arg) ; return 1;
if ( linker ) add_input(&orig,linker) ; case F_NOMATCH:
return 1 ; if (stopsuffix)
case F_OK : werror("Unknown suffix in %s", arg);
break ; if (linker)
add_input(&orig, linker);
return 1;
case F_OK:
break;
} }
if ( !phase ) return 1 ; if (!phase)
for ( tmp=phase ; tmp ; tmp=tmp->t_next ) return 1;
if ( !tmp->t_visited ) { for (tmp = phase; tmp; tmp = tmp->t_next)
/* The flags are set up once. if (!tmp->t_visited)
{
/* The flags are set up once.
At the first time each phase is in a list. At the first time each phase is in a list.
The program name and flags may already be touched The program name and flags may already be touched
by vieuwargs. by vieuwargs.
*/ */
tmp->t_visited=YES ; tmp->t_visited = YES;
if ( tmp->t_priority<0 ) if (tmp->t_priority < 0)
werror("Using phase %s (negative priority)", werror("Using phase %s (negative priority)",
tmp->t_name) ; tmp->t_name);
if ( !rts && tmp->t_rts ) rts= tmp->t_rts ; if (!rts && tmp->t_rts)
if ( tmp->t_needed ) { rts = tmp->t_rts;
add_head(tmp->t_needed) ; if (tmp->t_needed)
add_tail(tmp->t_needed) ; {
add_head(tmp->t_needed);
add_tail(tmp->t_needed);
}
} }
if (phase->t_combine)
{
add_input(&orig, phase);
return 1;
} }
if ( phase->t_combine ) { in = orig;
add_input(&orig,phase) ; if (!nill_flag && arg_count > 1)
return 1 ; {
printf("%s\n", arg);
} }
in= orig ; return startrf(phase);
if ( !nill_flag && arg_count > 1 ) {
printf("%s\n",arg) ;
}
return startrf(phase) ;
} }
static int startrf(trf *first) { static int startrf(trf* first)
{
/* Start the transformations at the indicated phase */ /* Start the transformations at the indicated phase */
register trf *phase ; register trf* phase;
phase=first ; phase = first;
for(;;) { for (;;)
{
int do_preprocess = 0; int do_preprocess = 0;
int only_prep = 0; int only_prep = 0;
switch ( phase->t_prep ) { switch (phase->t_prep)
{
/* BEWARE, sign extension */ /* BEWARE, sign extension */
case NO : break ; case NO:
default : if ( !mayprep() ) break ; break;
case YES: do_preprocess = 1; default:
break; if (!mayprep())
break;
case YES:
do_preprocess = 1;
break;
} }
if ( cpp_trafo && stopsuffix && if (cpp_trafo && stopsuffix && strcmp(cpp_trafo->t_out, stopsuffix) == 0)
strcmp(cpp_trafo->t_out,stopsuffix)==0 ) { {
/* user explicitly asked for preprocessing */ /* user explicitly asked for preprocessing */
do_preprocess = 1; do_preprocess = 1;
only_prep = 1; only_prep = 1;
} }
if (do_preprocess && !transform(cpp_trafo) ) { if (do_preprocess && !transform(cpp_trafo))
n_error++ ; {
n_error++;
#ifdef DEBUG #ifdef DEBUG
vprint("Pre-processor failed\n") ; vprint("Pre-processor failed\n");
#endif #endif
return 0 ; return 0;
} }
if ( only_prep ) { if (only_prep)
break ; {
break;
} }
if ( !transform(phase) ) { if (!transform(phase))
n_error++ ; {
block(phase->t_next) ; n_error++;
block(phase->t_next);
#ifdef DEBUG #ifdef DEBUG
if ( debug ) { if (debug)
if ( !orig.p_path ) { {
if (!orig.p_path)
{
vprint("phase %s failed\n", vprint("phase %s failed\n",
phase->t_name ) ; phase->t_name);
} else { }
else
{
vprint("phase %s for %s failed\n", vprint("phase %s for %s failed\n",
phase->t_name,orig.p_path) ; phase->t_name, orig.p_path);
} }
} }
#endif #endif
return 0 ; return 0;
} }
first=NO ; first = NO;
phase=phase->t_next ; phase = phase->t_next;
if ( !phase ) { if (!phase)
{
#ifdef DEBUG #ifdef DEBUG
if ( debug ) vprint("Transformation sequence complete for %s\n", if (debug)
orig.p_path) ; vprint("Transformation sequence complete for %s\n",
orig.p_path);
#endif #endif
/* No more work on this file */ /* No more work on this file */
if ( !in.p_keep ) { if (!in.p_keep)
fatal("attempt to discard the result file") ; {
fatal("attempt to discard the result file");
} }
if ( in.p_keeps ) throws(in.p_path) ; if (in.p_keeps)
in.p_keep=NO ; in.p_keeps=NO ; in.p_path= (char *) 0 ; throws(in.p_path);
return 1 ; in.p_keep = NO;
in.p_keeps = NO;
in.p_path = (char*)0;
return 1;
} }
if ( phase->t_combine ) { if (phase->t_combine)
add_input(&in,phase) ; {
break ; add_input(&in, phase);
break;
} }
} }
return 1 ; return 1;
} }
static void block(trf *first) { static void block(trf* first)
{
/* One of the input files of this phase could not be produced, /* One of the input files of this phase could not be produced,
block all combiners taking their input from this one. block all combiners taking their input from this one.
*/ */
register trf *phase ; register trf* phase;
for ( phase=first ; phase ; phase=phase->t_next ) { for (phase = first; phase; phase = phase->t_next)
if ( phase->t_combine ) phase->t_blocked=YES ; {
if (phase->t_combine)
phase->t_blocked = YES;
} }
} }
static int mayprep(void) { static int mayprep(void)
int file ; {
char fc ; int file;
file=open(in.p_path,0); char fc;
if ( file<0 ) return 0 ; file = open(in.p_path, 0);
if ( read(file,&fc,1)!=1 ) fc=0 ; if (file < 0)
close(file) ; return 0;
return fc=='#' ; if (read(file, &fc, 1) != 1)
fc = 0;
close(file);
return fc == '#';
} }
static void scanneeds(void) { static void scanneeds(void)
register list_elem *elem ; {
scanlist(l_first(head_list), elem) { setneeds(l_content(*elem),0) ; } register list_elem* elem;
l_clear(&head_list) ; scanlist(l_first(head_list), elem) { setneeds(l_content(*elem), 0); }
scanlist(l_first(tail_list), elem) { setneeds(l_content(*elem),1) ; } l_clear(&head_list);
l_clear(&tail_list) ; scanlist(l_first(tail_list), elem) { setneeds(l_content(*elem), 1); }
l_clear(&tail_list);
} }
static void setneeds(const char *suffix, int tail) { static void setneeds(const char* suffix, int tail)
trf *phase ; {
trf* phase;
p_suffix= suffix ; p_suffix = suffix;
switch ( getpath(&phase) ) { switch (getpath(&phase))
case F_OK : {
for ( ; phase ; phase= phase->t_next ) { case F_OK:
if ( phase->t_needed ) { for (; phase; phase = phase->t_next)
if ( tail ) {
add_tail(phase->t_needed) ; if (phase->t_needed)
else {
add_head(phase->t_needed) ; if (tail)
add_tail(phase->t_needed);
else
add_head(phase->t_needed);
}
} }
} break;
break ; case F_NOMATCH:
case F_NOMATCH : werror("\"%s\": unrecognized suffix", suffix);
werror("\"%s\": unrecognized suffix",suffix) ; break;
break ; case F_NOPATH:
case F_NOPATH : werror("sorry, cannot produce the desired file(s) from %s files",
werror("sorry, cannot produce the desired file(s) from %s files", suffix);
suffix) ; break;
break ;
} }
} }
static void noodstop(int sig) { static void noodstop(int sig)
quit(-3) ; {
quit(-3);
} }