src/commands/i386/acd.c File Reference

#include <sys/types.h>
#include <stdio.h>
#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <signal.h>
#include <errno.h>
#include <ctype.h>
#include <assert.h>
#include <sys/stat.h>
#include <sys/wait.h>

Go to the source code of this file.

Classes

struct  cell
struct  program
struct  rule

Defines

#define nil   0
#define _POSIX_SOURCE   1
#define LIB   "/usr/lib"
#define arraysize(a)   (sizeof(a) / sizeof((a)[0]))
#define arraylimit(a)   ((a) + arraysize(a))
#define value   car
#define base   cdr
#define suffix   cdr
#define flags   letter
#define subst   car
#define is_unique(type)   ((type) >= LETTER)
#define W_SET   0x01
#define W_RDONLY   0x02
#define W_LOCAL   0x04
#define W_TEMP   0x08
#define W_SUFF   0x10
#define N_CHARS   (1 + (unsigned char) -1)
#define HASHDENSE   0x400
#define E_BASH   0x01
#define E_QUOTE   0x02
#define E_SIMPLE   0x04
#define match   from
#define R_PREFER   0x01
#define NO_PATH   2000000000

Typedefs

typedef struct cell cell_t
typedef enum type type_t
typedef struct program program_t
typedef enum how how_t
typedef enum phase phase_t
typedef struct rule rule_t
typedef enum ruletype ruletype_t
typedef enum exec exec_t

Enumerations

enum  type {
  CELL, STRING, SUBST, LETTER,
  WORD, EQUALS, OPEN, CLOSE,
  PLUS, MINUS, STAR, INPUT,
  OUTPUT, WHITE, COMMENT, SEMI,
  EOLN, N_TYPES
}
enum  how {
  SUPERFICIAL, PARTIAL, FULL, EXPLODE,
  IMPLODE
}
enum  phase { INIT, SCAN, COMPILE }
enum  ruletype { ARG, PREFER, TRANSFORM, COMBINE }
enum  exec { DOIT, DONT }

Functions

void report (char *label)
void quit (int exit_code)
void fatal (char *label)
void * allocate (void *mem, size_t size)
void deallocate (void *mem)
char * copystr (const char *s)
void princhar (int c)
void prinstr (char *s)
void prin2 (cell_t *p)
void prin1 (cell_t *p)
void prin1n (cell_t *p)
void prin2n (cell_t *p)
cell_tnewcell (void)
unsigned hashfun (cell_t *p)
cell_tsearch (cell_t *p, cell_t ***hook)
void dec (cell_t *p)
cell_tinc (cell_t *p)
cell_tgo (cell_t *p, cell_t *field)
cell_tcons (type_t type, cell_t *p)
cell_tappend (type_t type, cell_t *p)
cell_tfindnword (char *name, size_t n)
cell_tfindword (char *name)
void interrupt (int sig)
int extalnum (int c)
void getdesc (void)
cell_tget_token (void)
cell_texplode (cell_t *p, how_t how)
cell_tget_string (cell_t **pp)
cell_tget_list (cell_t **pp, type_t stop)
program_tget_line (cell_t *file)
program_tget_prog (void)
void makenames (cell_t ***ppr, cell_t *s, char **name, size_t i, size_t *n)
int constant (cell_t *p)
cell_tevaluate (cell_t *p, how_t how)
void modify (cell_t **pp, cell_t *p, type_t mode)
int tainted (cell_t *p)
void newrule (ruletype_t type, cell_t *from, cell_t *to)
int talk (void)
void unix_exec (cell_t *c)
void execute (exec_t how, unsigned indent)
int equal (cell_t *p, cell_t *q)
int wordlist (cell_t **pw, int atom)
char * maketemp (void)
void inittemp (char *tmpdir)
void deltemp (void)
cell_tsplitenv (char *env)
void key_usage (char *how)
void inappropriate (void)
int readonly (cell_t *v)
void complain (cell_t *err)
int keyword (char *name)
cell_tgetvar (cell_t *v)
void argscan (void)
void compile (void)
void transform (rule_t *)
void exec_one (void)
int argmatch (int shift, cell_t *match, cell_t *match1, char *arg1)
int member (cell_t *p, cell_t *l)
long basefind (cell_t *f, cell_t *l)
rule_tfindpath (long depth, int seek, cell_t *file, rule_t *start)
cell_tpredef (char *var, char *val)
void usage (void)
int main (int argc, char **argv)

Variables

char version [] = "1.9"
char * program
int verbose = 0
int action = 2
size_t heap_chunks = 0
program_tpc
program_tnextpc
cell_toldcells
cell_toblist [HASHDENSE+N_CHARS+N_TYPES]
char * descr
FILEdfp
int dch
unsigned lineno
unsigned indent
phase_t phase
rule_trules = nil
cell_tV_star
cell_t ** pV_star
cell_tL_files
cell_t ** pL_files = &L_files
cell_tV_in
cell_tV_out
cell_tV_stop
cell_tL_args
cell_tL_predef
char * template
long shortest


Define Documentation

#define _POSIX_SOURCE   1

Definition at line 8 of file acd.c.

#define arraylimit ( a   )     ((a) + arraysize(a))

Definition at line 28 of file acd.c.

#define arraysize ( a   )     (sizeof(a) / sizeof((a)[0]))

Definition at line 27 of file acd.c.

#define base   cdr

Definition at line 110 of file acd.c.

#define E_BASH   0x01

Definition at line 496 of file acd.c.

#define E_QUOTE   0x02

Definition at line 497 of file acd.c.

#define E_SIMPLE   0x04

Definition at line 498 of file acd.c.

#define flags   letter

Definition at line 112 of file acd.c.

#define HASHDENSE   0x400

Definition at line 278 of file acd.c.

#define is_unique ( type   )     ((type) >= LETTER)

Definition at line 141 of file acd.c.

#define LIB   "/usr/lib"

Definition at line 24 of file acd.c.

#define match   from

Definition at line 1212 of file acd.c.

#define N_CHARS   (1 + (unsigned char) -1)

Definition at line 277 of file acd.c.

#define nil   0

Definition at line 7 of file acd.c.

#define NO_PATH   2000000000

Definition at line 2316 of file acd.c.

#define R_PREFER   0x01

Definition at line 1222 of file acd.c.

#define subst   car

Definition at line 115 of file acd.c.

#define suffix   cdr

Definition at line 111 of file acd.c.

#define value   car

Definition at line 109 of file acd.c.

#define W_LOCAL   0x04

Definition at line 146 of file acd.c.

#define W_RDONLY   0x02

Definition at line 145 of file acd.c.

#define W_SET   0x01

Definition at line 144 of file acd.c.

#define W_SUFF   0x10

Definition at line 148 of file acd.c.

#define W_TEMP   0x08

Definition at line 147 of file acd.c.


Typedef Documentation

typedef struct cell cell_t

typedef enum exec exec_t

typedef enum how how_t

typedef enum phase phase_t

typedef struct program program_t

typedef struct rule rule_t

typedef enum ruletype ruletype_t

typedef enum type type_t


Enumeration Type Documentation

enum exec

Enumerator:
DOIT 
DONT 

Definition at line 1364 of file acd.c.

enum how

Enumerator:
SUPERFICIAL 
PARTIAL 
FULL 
EXPLODE 
IMPLODE 

Definition at line 681 of file acd.c.

enum phase

Enumerator:
INIT 
SCAN 
COMPILE 

Definition at line 1203 of file acd.c.

enum ruletype

Enumerator:
ARG 
PREFER 
TRANSFORM 
COMBINE 

Definition at line 1220 of file acd.c.

enum type

Enumerator:
CELL 
STRING 
SUBST 
LETTER 
WORD 
EQUALS 
OPEN 
CLOSE 
PLUS 
MINUS 
STAR 
INPUT 
OUTPUT 
WHITE 
COMMENT 
SEMI 
EOLN 
N_TYPES 

Definition at line 119 of file acd.c.


Function Documentation

void* allocate ( void *  mem,
size_t  size 
)

Definition at line 65 of file acd.c.

cell_t* append ( type_t  type,
cell_t p 
)

Definition at line 401 of file acd.c.

int argmatch ( int  shift,
cell_t match,
cell_t match1,
char *  arg1 
)

Definition at line 2099 of file acd.c.

void argscan ( void   ) 

Definition at line 2235 of file acd.c.

long basefind ( cell_t f,
cell_t l 
)

Definition at line 2281 of file acd.c.

static void compile ( void   ) 

Definition at line 2464 of file acd.c.

void complain ( cell_t err  ) 

Definition at line 1522 of file acd.c.

cell_t* cons ( type_t  type,
cell_t p 
)

Definition at line 391 of file acd.c.

int constant ( cell_t p  ) 

Definition at line 952 of file acd.c.

char* copystr ( const char *  s  ) 

Definition at line 91 of file acd.c.

void deallocate ( void *  mem  ) 

Definition at line 83 of file acd.c.

void dec ( cell_t p  ) 

Definition at line 322 of file acd.c.

void deltemp ( void   ) 

Definition at line 1463 of file acd.c.

int equal ( cell_t p,
cell_t q 
)

Definition at line 1368 of file acd.c.

cell_t * evaluate ( cell_t p,
how_t  how 
)

Definition at line 1087 of file acd.c.

void exec_one ( void   ) 

Definition at line 1562 of file acd.c.

void execute ( exec_t  how,
unsigned  indent 
)

Definition at line 2050 of file acd.c.

cell_t * explode ( cell_t p,
how_t  how 
)

Definition at line 975 of file acd.c.

int extalnum ( int  c  ) 

Definition at line 470 of file acd.c.

void fatal ( char *  label  ) 

Definition at line 57 of file acd.c.

cell_t* findnword ( char *  name,
size_t  n 
)

Definition at line 407 of file acd.c.

rule_t* findpath ( long  depth,
int  seek,
cell_t file,
rule_t start 
)

Definition at line 2320 of file acd.c.

cell_t* findword ( char *  name  ) 

Definition at line 418 of file acd.c.

program_t* get_line ( cell_t file  ) 

Definition at line 817 of file acd.c.

cell_t* get_list ( cell_t **  pp,
type_t  stop 
)

Definition at line 754 of file acd.c.

program_t* get_prog ( void   ) 

Definition at line 859 of file acd.c.

cell_t* get_string ( cell_t **  pp  ) 

Definition at line 685 of file acd.c.

cell_t* get_token ( void   ) 

Definition at line 500 of file acd.c.

void getdesc ( void   ) 

Definition at line 482 of file acd.c.

cell_t* getvar ( cell_t v  ) 

Definition at line 1550 of file acd.c.

cell_t* go ( cell_t p,
cell_t field 
)

Definition at line 383 of file acd.c.

unsigned hashfun ( cell_t p  ) 

Definition at line 282 of file acd.c.

void inappropriate ( void   ) 

Definition at line 1504 of file acd.c.

cell_t* inc ( cell_t p  ) 

Definition at line 358 of file acd.c.

void inittemp ( char *  tmpdir  ) 

Definition at line 1441 of file acd.c.

void interrupt ( int  sig  ) 

Definition at line 463 of file acd.c.

void key_usage ( char *  how  ) 

Definition at line 1497 of file acd.c.

int keyword ( char *  name  ) 

Definition at line 1540 of file acd.c.

int main ( int argc  ,
char **  argv 
)

Definition at line 2591 of file acd.c.

void makenames ( cell_t ***  ppr,
cell_t s,
char **  name,
size_t  i,
size_t n 
)

Definition at line 905 of file acd.c.

char* maketemp ( void   ) 

Definition at line 1418 of file acd.c.

int member ( cell_t p,
cell_t l 
)

Definition at line 2271 of file acd.c.

void modify ( cell_t **  pp,
cell_t p,
type_t  mode 
)

Definition at line 1048 of file acd.c.

cell_t* newcell ( void   ) 

Definition at line 255 of file acd.c.

void newrule ( ruletype_t  type,
cell_t from,
cell_t to 
)

Definition at line 1226 of file acd.c.

cell_t* predef ( char *  var,
char *  val 
)

Definition at line 2557 of file acd.c.

void prin1 ( cell_t p  ) 

Definition at line 173 of file acd.c.

void prin1n ( cell_t p  ) 

Definition at line 237 of file acd.c.

void prin2 ( cell_t p  ) 

Definition at line 224 of file acd.c.

void prin2n ( cell_t p  ) 

Definition at line 239 of file acd.c.

void princhar ( int  c  ) 

Definition at line 150 of file acd.c.

void prinstr ( char *  s  ) 

Definition at line 157 of file acd.c.

void quit ( int  exit_code  ) 

Definition at line 47 of file passwd.c.

int readonly ( cell_t v  ) 

Definition at line 1511 of file acd.c.

void report ( char *  label  ) 

Definition at line 44 of file acd.c.

cell_t* search ( cell_t p,
cell_t ***  hook 
)

Definition at line 301 of file acd.c.

cell_t* splitenv ( char *  env  ) 

Definition at line 1473 of file acd.c.

int tainted ( cell_t p  ) 

Definition at line 1069 of file acd.c.

int talk ( void   ) 

Definition at line 1256 of file acd.c.

void transform ( rule_t rule  ) 

Definition at line 2391 of file acd.c.

void unix_exec ( cell_t c  ) 

Definition at line 1264 of file acd.c.

void usage ( void   ) 

Definition at line 2583 of file acd.c.

int wordlist ( cell_t **  pw,
int  atom 
)

Definition at line 1396 of file acd.c.


Variable Documentation

int action = 2

Definition at line 39 of file acd.c.

int dch

Definition at line 478 of file acd.c.

char* descr

Definition at line 476 of file acd.c.

Definition at line 477 of file acd.c.

Definition at line 63 of file acd.c.

unsigned indent

Definition at line 480 of file acd.c.

Definition at line 1362 of file acd.c.

Definition at line 1361 of file acd.c.

Definition at line 1362 of file acd.c.

unsigned lineno

Definition at line 479 of file acd.c.

Definition at line 251 of file acd.c.

cell_t* oblist[HASHDENSE+N_CHARS+N_TYPES]

Definition at line 280 of file acd.c.

Definition at line 253 of file acd.c.

Definition at line 250 of file acd.c.

Definition at line 1205 of file acd.c.

Definition at line 1361 of file acd.c.

char* program

Definition at line 30 of file acd.c.

Definition at line 1360 of file acd.c.

rule_t* rules = nil

Definition at line 1224 of file acd.c.

long shortest

Definition at line 2318 of file acd.c.

char* template

Definition at line 1415 of file acd.c.

Definition at line 1362 of file acd.c.

Definition at line 1362 of file acd.c.

Definition at line 1360 of file acd.c.

Definition at line 1362 of file acd.c.

int verbose = 0

Definition at line 32 of file acd.c.

char version[] = "1.9"

Definition at line 5 of file acd.c.


Generated on Tue Mar 9 04:36:33 2010 for Minix by  doxygen 1.5.8