xii GAWK: Effective AWK Programming
Appendix B Installing gawk . . . . . . . . . . . . . . . . . . . . . 457
B.1 The gawk Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
B.1.1 Getting the gawk Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
B.1.2 Extracting the Distribution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457
B.1.3 Contents of the gawk Distribution . . . . . . . . . . . . . . . . . . . . . . . 458
B.2 Compiling and Installing gawk on Unix-Like Systems . . . . . . . . . 461
B.2.1 Compiling gawk for Unix-Like Systems . . . . . . . . . . . . . . . . . . 461
B.2.2 Shell Startup Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
B.2.3 Additional Configuration Options . . . . . . . . . . . . . . . . . . . . . . . 462
B.2.4 The Configuration Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463
B.3 Installation on Other Operating Systems . . . . . . . . . . . . . . . . . . . . . 463
B.3.1 Installation on MS-Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
B.3.1.1 Installing a Prepared
Distribution for MS-Windows Systems. . . . . . . . . . . . . . . . . . . . . 464
B.3.1.2 Compiling gawk for PC Operating Systems . . . . . . . . . 464
B.3.1.3 Using gawk on PC Operating Systems . . . . . . . . . . . . . . 464
B.3.1.4 Using gawk In The Cygwin Environment. . . . . . . . . . . . 465
B.3.1.5 Using gawk In The MSYS Environment . . . . . . . . . . . . . 466
B.3.2 Compiling and Installing gawk on Vax/VMS and OpenVMS . . 466
B.3.2.1 Compiling gawk on VMS . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
B.3.2.2 Compiling gawk Dynamic Extensions on VMS . . . . . . 466
B.3.2.3 Installing gawk on VMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
B.3.2.4 Running gawk on VMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
B.3.2.5 The VMS GNV Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . 469
B.3.2.6 Some VMS Systems Have An Old Version of gawk . . 470
B.4 Reporting Problems and Bugs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
B.4.1 Submitting Bug Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
B.4.2 Please Don’t Post Bug Reports to USENET . . . . . . . . . . . . . 471
B.4.3 Reporting Problems with Non-Unix Ports . . . . . . . . . . . . . . . 471
B.5 Other Freely Available awk Implementations. . . . . . . . . . . . . . . . . . 471
B.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474
Appendix C Implementation Notes. . . . . . . . . . . . 475
C.1 Downward Compatibility and Debugging . . . . . . . . . . . . . . . . . . . . . 475
C.2 Making Additions to gawk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
C.2.1 Accessing The gawk Git Repository . . . . . . . . . . . . . . . . . . . . . 475
C.2.2 Adding New Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
C.2.3 Porting gawk to a New Operating System . . . . . . . . . . . . . . . 477
C.2.4 Why Generated Files Are Kept In Git . . . . . . . . . . . . . . . . . . . 479
C.3 Probable Future Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
C.4 Some Limitations of the Implementation . . . . . . . . . . . . . . . . . . . . . 481
C.5 Extension API Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
C.5.1 Problems With The Old Mechanism . . . . . . . . . . . . . . . . . . . . . 482
C.5.2 Goals For A New Mechanism. . . . . . . . . . . . . . . . . . . . . . . . . . . . 482
C.5.3 Other Design Decisions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
C.5.4 Room For Future Growth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
C.6 Compatibility For Old Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484
C.7 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485