Pre-demacification changes for bin/sh
authorNick Downing <downing.nick@gmail.com>
Sun, 29 Jan 2017 16:27:21 +0000 (03:27 +1100)
committerNick Downing <downing.nick@gmail.com>
Mon, 30 Jan 2017 00:06:09 +0000 (11:06 +1100)
bin/sh/defs.h
bin/sh/demac.sed [new file with mode: 0644]
bin/sh/demac.sh [new file with mode: 0755]
bin/sh/mac.h [deleted file]
bin/sh/mode.h

index 7148aa1..6c01c69 100644 (file)
@@ -73,7 +73,6 @@
 /* arg list terminator */
 #define ENDARGS        0
 
-#include       "mac.h"
 #include       "mode.h"
 #include       "name.h"
 
@@ -128,12 +127,6 @@ STRING             *dolv;
 DOLPTR         argfor;
 ARGPTR         gchain;
 
-/* stack */
-#define                BLK(x)  ((BLKPTR)(x))
-#define                BYT(x)  ((BYTPTR)(x))
-#define                STK(x)  ((STKPTR)(x))
-#define                ADR(x)  ((char*)(x))
-
 /* stak stuff */
 #include       "stak.h"
 
diff --git a/bin/sh/demac.sed b/bin/sh/demac.sed
new file mode 100644 (file)
index 0000000..d025bb0
--- /dev/null
@@ -0,0 +1,138 @@
+s/@/ATSIGN/g
+s/^/@/
+s/$/@/
+s/[^A-Za-z0-9_]\+/@&@/g
+
+# mac.h
+s/@LOCAL@/@static@/g
+s/@PROC@/@extern@/g
+s/@TYPE@/@typedef@/g
+s/@STRUCT@/@typedef struct@/g
+s/@UNION@/@typedef union@/g
+s/@REG@/@register@/g
+
+s/@IF@/@if (NOWHITE@/g
+s/@THEN@/@NOWHITE) {NEWLINE    @/g
+s/@ELSE@/@}NEWLINEelse {NEWLINE    @/g
+s/@ELIF@/@}NEWLINEelse if (NOWHITE@/g
+s/@FI@/@NOWHITE;NEWLINE}@/g
+
+s/@BEGIN@/@{NEWLINE     @/g
+s/@END@/@}@/g
+s/@SWITCH@/@switch (NOWHITE@/g
+s/@IN@/@NOWHITE) {NEWLINE  @/g
+s/@ENDSW@/@}@/g
+s/@FOR@/@for (NOWHITE@/g
+s/@WHILE@/@while (NOWHITE@/g
+s/@DO@/@NOWHITE) {NEWLINE  @/g
+s/@OD@/@NOWHITE;NEWLINE}@/g
+s/@REP@/@do {NEWLINE   @/g
+s/@PER@/@} while (NOWHITE@/g
+s/@DONE@/@NOWHITE);@/g
+s/@LOOP@/@for(;;) {NEWLINE    @/g
+s/@POOL@/@}@/g
+
+s/@SKIP@/@;@/g
+s/@DIV@/@\/@/g
+s/@REM@/@%@/g
+s/@NEQ@/@^@/g
+s/@ANDF@/@\&\&@/g
+s/@ORF@/@||@/g
+
+s/@TRUE@/@-1@/g
+s/@FALSE@/@0@/g
+s/@LOBYTE@/@0377@/g
+s/@STRIP@/@0177@/g
+s/@QUOTE@/@0200@/g
+
+s/@EOF@/@0@/g
+s/@NL@/@'\\n'@/g
+s/@SP@/@' '@/g
+s/@LQ@/@'`'@/g
+s/@RQ@/@'\\''@/g
+s/@MINUS@/@'-'@/g
+s/@COLON@/@':'@/g
+
+s/@MAX@/@max@/g
+
+# mode.h
+s/@CHAR@/@char@/g
+s/@BOOL@/@bool@/g
+s/@UFD@/@int@/g
+s/@INT@/@int@/g
+s/@REAL@/@float@/g
+s/@ADDRESS@/@void*CHECKME@/g
+s/@L_INT@/@long@/g
+s/@VOID@/@void@/g
+s/@POS@/@unsigned@/g
+s/@STRING@/@char*CHECKME@/g
+s/@MSG@/@char[]CHECKME@/g
+s/@PIPE@/@int[]CHECKME@/g
+s/@STKPTR@/@char*CHECKME@/g
+s/@BYTPTR@/@char*CHECKME@/g
+
+s/@STATBUF@/@struct stat@/g
+s/@BLKPTR@/@struct blk*CHECKME@/g
+s/@FILEBLK@/@struct fileblk@/g
+s/@FILEHDR@/@struct filehdr@/g
+s/@FILE@/@struct fileblk*CHECKME@/g
+s/@TREPTR@/@struct trenod*CHECKME@/g
+s/@FORKPTR@/@struct forknod*CHECKME@/g
+s/@COMPTR@/@struct comnod*CHECKME@/g
+s/@SWPTR@/@struct swnod*CHECKME@/g
+s/@REGPTR@/@struct regnod*CHECKME@/g
+s/@PARPTR@/@struct parnod*CHECKME@/g
+s/@IFPTR@/@struct ifnod*CHECKME@/g
+s/@WHPTR@/@struct whnod*CHECKME@/g
+s/@FORPTR@/@struct fornod*CHECKME@/g
+s/@LSTPTR@/@struct lstnod*CHECKME@/g
+s/@ARGPTR@/@struct argnod*CHECKME@/g
+s/@DOLPTR@/@struct dolnod*CHECKME@/g
+s/@IOPTR@/@struct ionod*CHECKME@/g
+s/@NAMNOD@/@struct namnod@/g
+s/@NAMPTR@/@struct namnod*CHECKME@/g
+s/@SYSNOD@/@struct sysnod@/g
+s/@SYSPTR@/@struct sysnod*CHECKME@/g
+s/@SYSTAB@/@struct sysnod[]CHECKME@/g
+
+s/@FORKTYPE@/@sizeof(struct forknod)@/g
+s/@COMTYPE@/@sizeof(struct comnod)@/g
+s/@IFTYPE@/@sizeof(struct ifnod)@/g
+s/@WHTYPE@/@sizeof(struct whnod)@/g
+s/@FORTYPE@/@sizeof(struct fornod)@/g
+s/@SWTYPE@/@sizeof(struct swnod)@/g
+s/@REGTYPE@/@sizeof(struct regnod)@/g
+s/@PARTYPE@/@sizeof(struct parnod)@/g
+s/@LSTTYPE@/@sizeof(struct lstnod)@/g
+s/@IOTYPE@/@sizeof(struct ionod)@/g
+
+# defs.h
+s/@BLK@/@(struct blk *)@/g
+s/@BYT@/@(char *)@/g
+s/@STK@/@(char *)@/g
+s/@ADR@/@(void *)@/g
+
+s/@//g
+s/ATSIGN/@/g
+
+s/{NEWLINE[     ]*\([^{}]*\)NEWLINE}/{ \1 }/g
+s/{NEWLINE[     ]*\([^{}]*\)}/{ \1}/g
+s/^\([  ]*\)\([^        {}][^{}]*\)*\([;{}]\)NEWLINE/\1\2\3\n\1/g
+s/\n\([         ]*\)\([^        {}][^{}]*\)*\([;{}]\)NEWLINE/\n\1\2\3\n\1/g
+s/\[\]CHECKME\([        ]*\(\*[         ]*\)*[A-Za-z_][0-9A-Za-z_]*\)\([^,]*\);/\1[]\3;/g
+s/\[\]CHECKME\([        ]*\(\*[         ]*\)*[A-Za-z_][0-9A-Za-z_]*\)\([^,]*\)$/\1[]\3/g
+s/\*CHECKME\([  ]*\)\(\(\*[     ]*\)*[A-Za-z_][^,]*\);/\1*\2;/g
+s/\*CHECKME\([  ]*\)\(\(\*[     ]*\)*[A-Za-z_][^,]*\)$/\1*\2/g
+
+# nonessential normalization of whitespace:
+s/^\([ ]*\)        /\1 /
+s/\n\([        ]*\)        /\n\1       /
+s/^\([ ]*\)        /\1 /
+s/\n\([        ]*\)        /\n\1       /
+s/             /               /g
+s/             /               /g
+s/             /               /g
+s/             /               /g
+s/             /               /g
+s/             /               /g
+s/             /               /g
diff --git a/bin/sh/demac.sh b/bin/sh/demac.sh
new file mode 100755 (executable)
index 0000000..89b554b
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/sh
+for i in *.c *.h
+do
+  sed -f demac.sed $i |\
+  sed -e 's/@/ATSIGN/g' |\
+  tr '\n' '@' |\
+  sed -e 's/[   @]*NOWHITE[     @]*//g' |\
+  tr '@' '\n' |\
+  sed -e 's/ATSIGN/@/g; s/;; }/; }/; s/;;$/;/; s/};/}/' >a
+  mv a $i
+done
diff --git a/bin/sh/mac.h b/bin/sh/mac.h
deleted file mode 100644 (file)
index 6763329..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*     mac.h   4.2     82/12/24        */
-
-#
-/*
- *     UNIX shell
- *
- *     S. R. Bourne
- *     Bell Telephone Laboratories
- *
- */
-
-#define LOCAL  static
-#define PROC   extern
-#define TYPE   typedef
-#define STRUCT TYPE struct
-#define UNION  TYPE union
-#define REG    register
-
-#define IF     if(
-#define THEN   ){
-#define ELSE   } else {
-#define ELIF   } else if (
-#define FI     ;}
-
-#define BEGIN  {
-#define END    }
-#define SWITCH switch(
-#define IN     ){
-#define ENDSW  }
-#define FOR    for(
-#define WHILE  while(
-#define DO     ){
-#define OD     ;}
-#define REP    do{
-#define PER    }while(
-#undef DONE
-#define DONE   );
-#define LOOP   for(;;){
-#define POOL   }
-
-
-#define SKIP   ;
-#define DIV    /
-#define REM    %
-#define NEQ    ^
-#define ANDF   &&
-#define ORF    ||
-
-#define TRUE   (-1)
-#define FALSE  0
-#define LOBYTE 0377
-#define STRIP  0177
-#define QUOTE  0200
-
-#define EOF    0
-#define NL     '\n'
-#define SP     ' '
-#define LQ     '`'
-#define RQ     '\''
-#define MINUS  '-'
-#define COLON  ':'
-
-#define MAX(a,b)       ((a)>(b)?(a):(b))
index 1da216d..85fc1ec 100644 (file)
@@ -8,46 +8,6 @@
 
 #define BYTESPERWORD   (sizeof(char *))
 
-TYPE char      CHAR;
-TYPE char      BOOL;
-TYPE int       UFD;
-TYPE int       INT;
-TYPE float     REAL;
-TYPE char      *ADDRESS;
-TYPE long int  L_INT;
-TYPE int       VOID;
-TYPE unsigned  POS;
-TYPE char      *STRING;
-TYPE char      MSG[];
-TYPE int       PIPE[];
-TYPE char      *STKPTR;
-TYPE char      *BYTPTR;
-
-STRUCT stat    STATBUF;        /* defined in /usr/sys/stat.h */
-STRUCT blk     *BLKPTR;
-STRUCT fileblk FILEBLK;
-STRUCT filehdr FILEHDR;
-STRUCT fileblk *FILE;
-STRUCT trenod  *TREPTR;
-STRUCT forknod *FORKPTR;
-STRUCT comnod  *COMPTR;
-STRUCT swnod   *SWPTR;
-STRUCT regnod  *REGPTR;
-STRUCT parnod  *PARPTR;
-STRUCT ifnod   *IFPTR;
-STRUCT whnod   *WHPTR;
-STRUCT fornod  *FORPTR;
-STRUCT lstnod  *LSTPTR;
-STRUCT argnod  *ARGPTR;
-STRUCT dolnod  *DOLPTR;
-STRUCT ionod   *IOPTR;
-STRUCT namnod  NAMNOD;
-STRUCT namnod  *NAMPTR;
-STRUCT sysnod  SYSNOD;
-STRUCT sysnod  *SYSPTR;
-STRUCT sysnod  SYSTAB[];
-#define NIL    ((char*)0)
-
 
 /* the following nonsense is required
  * because casts turn an Lvalue
@@ -196,14 +156,3 @@ struct ionod {
        IOPTR   ionxt;
        IOPTR   iolst;
 };
-
-#define        FORKTYPE        (sizeof(struct forknod))
-#define        COMTYPE         (sizeof(struct comnod))
-#define        IFTYPE          (sizeof(struct ifnod))
-#define        WHTYPE          (sizeof(struct whnod))
-#define        FORTYPE         (sizeof(struct fornod))
-#define        SWTYPE          (sizeof(struct swnod))
-#define        REGTYPE         (sizeof(struct regnod))
-#define        PARTYPE         (sizeof(struct parnod))
-#define        LSTTYPE         (sizeof(struct lstnod))
-#define        IOTYPE          (sizeof(struct ionod))