Unix™ System V

Total Page:16

File Type:pdf, Size:1020Kb

Unix™ System V ___ALTOS _ UNIX™ SYSTEM V .. SUPPORT Tools GuidE UNIXTM System V Support Tools Guide ACKNClfLEDGEMENTS The Altos logo, as it appears in this manual, is a registered trademark of Altos Computer Systems. EtherneeM is a trademark of Xerox Corporation. HYPERchanneYM is a trademark of Network Systems Corporation. UNIX™ is a trademark of AT&T Bell Labor ator ies. VAXTM is a trademark of Digital Equipment Corporation. WE™ is a trademark of AT&T Technologies. CONTENTS Chapter 1. INTRODUCTION Chapter 2. A PROGRAM FOR MAINT AINING COMPUTER PROGRAMS (make) Chapter 3. AUGMENTED VERSION OF -make Chapter 4. SOURCE CODE CONTROL SYSTEM USER GUIDE Chapter 5. THE M4 MACRO PROCESSOR Chapter 6. THE awk PROGRAMMING LANGUAGE Chapter 7. THE LINK EDITOR Chapter 8. THE COMMON OBJECT FILE FORMAT Chapter 9. ARBITRARY PRECISION DESK CALCULATOR LANGUAGE (BC) Chapter 10. INTERACTIVE DESK CALCULATOR (DC) Chapter 11. LEXICAL ANALYZER GENERATOR (LEX) Chapter 12. YET ANOTHER COMPILER- COMPILER (yacc) Chapter 13. UNIX SYSTEM TO UNIX SYSTEM COpy (UUCP) - 1 - Chapter 1 INTRODUCTION The SUPPORT TOOLS volume is a description of the various software "tools" that aid the UNIX* operating system user. The user should have at least 2 years of specialized training in computer­ related fields such as programming or use the UNIX system primarily for software system development. The following paragraphs contain a brief description of each chapter. The chapter A PROGRAM FOR MAINTAINING COMPUTER PROGRAMS (make) describes a software tool for maintaining, updating, and regenerating groups of computer programs. The many activities of program development and maintenance are made simpler by the make program. The chapter AUGMENTED VERSION OF "make" describes the modifications made to handle many of the problems within the original make program. The chapter SOURCE CODE CONTROL SYSTEM (SCeS) USER'S GUIDE describes the collection of SCCS programs under the UNIX operating system. The SCCS programs act as a "custodian" over the UNIX system files. The chapter M4 MACRO PROCESSOR describes a general purpose macro processor that may be used as a front end for rational Fortran, C, and other programming languages. The chapter "awk" PROGRAMMING LANGUAGE describes a software tool designed to make many common information retrieval and text manipulation tasks easy to state and to perform. * Trademark of AT&T Bell Laboratories 1-1 INTRODUCTION The chapter LINK EDITOR describes a software tool (ld) that creates load files by combining object files, performing relocation, and resolving internal references. The chapter COMMON OBJECT FILE FORMAT (COFF) describes the output file produced on some UNIX systems by the assembler and the link editor. The chapter ARBITRARY PRECISION DESK CALCULATOR LANGUAGE (BC) describes a compiler for doing arbitrary precision arithmetic on the UNIX operating system. The chapter INTERACTIVE DESK CALCULATOR (DC) describes a program implemented on the UNIX operating system to do arbitrary-precision integer arithmetic. The chapter LEXICAL ANALYZER GENERATOR (Lex) describes a software tool that lexically processes character input streams. The chapter YET ANOTHER COMPILER-COMPILER (yacc) describes the yacc program. The yacc program provides a general tool for imposing structure on the input to a computer program. The chapter REMOTE JOB ENTRY (RJE) describes a subsystem that supports remote job entries from a UNIX operating system to an IBM/360 or /370 host computer. The RJE uses a set of background processes to support remote job entries. The chapter UNIX SYSTEM TO UNIX SYSTEM COpy (UUCP) describes a network that provides information exchange (between UNIX systems) over the direct distance dialing network. The support tools provide an added dimension to the basic UNIX software commands. The "tools" described enable the user to fully utilize the UNIX operating system. 1-2 Chapter 2 A PROGRAM FOR MAINTAINING COMPUTER PROGRAMS (make) PAGE GENERAL. 2-1 BASIC FEATURES. 2-5 DESCRIPTION FILES AND SUBSTITUTIONS. 2-8 COMMAND USAGE. .. 2-11 SUFFIXES AND TRANSFORMATION RULES .................... 2-12 IMPLICIT RULES............................................. 2-14 SUGGESTIONS AND WARNINGS. .. 2-15 Chapter 2 A PROGRAM FOR MAINTAINING COMPUTER PROGRAMS (make) GENERAL In a programming project, a common practice is to divide large programs into smaller pieces that are more manageable. The pieces may require several different treatments such as being processed by a macro processor or sophisticated program generators (e.g., Yacc or Lex). The project continues to become more complex as the output of these generators are compiled with special options and with certain definitions and declarations. A sequence of code transformations develops which is difficult to remember. The resulting code may need further transformation by loading the code with certain libraries under control of special options. Related maintenance activities also complicate the process further by running test scripts and installing validated modules. Another activity that complicates program development is a long editing session. A programmer may lose track of the files changed and the object modules still valid especially when a change to a declaration can make a dozen other files obsolete. The programmer must also remember to compile a routine that has been changed or that uses changed declarations. The "make" is a software tool that maintains, updates, and regenerates groups of computer programs. A programmer can easily forget • Files that are dependent upon other files. • Files that were modified recently. • Files that need to be reprocessed or recompiled after a change in the source. • The exact sequence of operations needed to make an exercise a new version of the program. 2-1 MAKE The many activities of program development and maintenance are made simpler by the make program. The make program provides a method for maintaining up-to-date versions of programs that result from many operations on a number of files. The make program can keep track of the sequence of commands that create certain files and the list of files that require other files to be current before the operations can be done. Whenever a change is made in any part of a program, the make command creates the proper files simply, correctly, and with a minimum amount of effort. The make program also provides a simple macro substitution facility and the ability to encapsulate commands in a single file for convenient administration. The basic operation of make is to • Find the name of the needed target file in the description. • Ensure that all of the files on which it depends exit and are up to date. • Create the target file if it has not been modified SInce its generators were modified. The descriptor file really defines the graph of dependencies. The make program determines the necessary work by performing a depth-first search of the graph of dependencies. If the information on interfile dependencies and command sequences is stored in a file, the simple command make is frequently sufficient to update the interesting files regardless of the number edited since the last make. In most cases, the description file is easy to write and changes infrequently. It is usually easier to type the make command than to issue even one of the needed operations, so the typical cycle of program development operations becomes think - edit - make - test ... 2-2 MAKE The make program is most useful for medium-sized programming projects. The make program does not solve the problems of maintaining multiple source versions or of describing huge programs. As an' example of the use of make, the description file used to maintain the make command is given. The code for make is spread over a number of C language source files and a Yacc grammar. The description file contains: # Description file for the Make command p = Ip FILES = Makefile version.c defs main.c doname.c misc.c files.c dosys.c gram.y lex.c gcos.c OBJECTS = version.o main.o doname.o misc.o files.o dosys.o gram.o LIBES= -IS LINT = lint -p CFLAGS =-0 make: $(OBJECTS) cc $(CFLAGS) $(OBJECTS) $(LIBES) -0 make size make $(OBJECTS): defs gram.o: lex.c cleanup: - rm *.0 gram.c -du install: @size make lusr/bin/make cp make lusr/bin/make ; rm make print: $(FILES) # print recently changed files pr $? I $P touch print 2-3 MAKE test: make -dp I grep -v TIME >lzap lusr/bin/make -dp I grep -v TIME >2zap diff lzap 2zap rm lzap 2zap lint: dosys.c doname.c files.c main.c misc.c version.c gram.c $(LINT) dosys.c doname.c files.c main.c misc.c version.c gram.c arch: ar uv Isys/source/s2/make.a $(FILES) The make program usually prints out each command before issuing it. The following output results from typing the simple command make in a directory containing only the source and description files: cc -0 -c verSlOn.c cc -0 -c malll.C cc -0 -c doname.c cc -0 -c mlSC.C cc -0 -c files.c cc -0 -c dosys.c yacc gram.y mv y.tab.c gram.c cc -0 -c gram.c cc version.o main.o doname.o misc.o files.o dosys.o gram.o -IS -0 make 13188+3348+3044 = 19580b = 046174b Although none of the source files or grammars were mentioned by name in the description file, make found them using its suffix rules and issued the needed commands. The string of digits results from the size make command. The printing of the command line itself was suppressed by an @ sign. The @ sign on the size command in the description file suppressed the printing of the command, so only the sizes are written. 2-4 MAKE The. last few entries in the description file are useful maintenance sequences. The "print" entry prints only the files changed since the last make print command.
Recommended publications
  • At—At, Batch—Execute Commands at a Later Time
    at—at, batch—execute commands at a later time at [–csm] [–f script] [–qqueue] time [date] [+ increment] at –l [ job...] at –r job... batch at and batch read commands from standard input to be executed at a later time. at allows you to specify when the commands should be executed, while jobs queued with batch will execute when system load level permits. Executes commands read from stdin or a file at some later time. Unless redirected, the output is mailed to the user. Example A.1 1 at 6:30am Dec 12 < program 2 at noon tomorrow < program 3 at 1945 pm August 9 < program 4 at now + 3 hours < program 5 at 8:30am Jan 4 < program 6 at -r 83883555320.a EXPLANATION 1. At 6:30 in the morning on December 12th, start the job. 2. At noon tomorrow start the job. 3. At 7:45 in the evening on August 9th, start the job. 4. In three hours start the job. 5. At 8:30 in the morning of January 4th, start the job. 6. Removes previously scheduled job 83883555320.a. awk—pattern scanning and processing language awk [ –fprogram–file ] [ –Fc ] [ prog ] [ parameters ] [ filename...] awk scans each input filename for lines that match any of a set of patterns specified in prog. Example A.2 1 awk '{print $1, $2}' file 2 awk '/John/{print $3, $4}' file 3 awk -F: '{print $3}' /etc/passwd 4 date | awk '{print $6}' EXPLANATION 1. Prints the first two fields of file where fields are separated by whitespace. 2. Prints fields 3 and 4 if the pattern John is found.
    [Show full text]
  • Process and Memory Management Commands
    Process and Memory Management Commands This chapter describes the Cisco IOS XR software commands used to manage processes and memory. For more information about using the process and memory management commands to perform troubleshooting tasks, see Cisco ASR 9000 Series Aggregation Services Router Getting Started Guide. • clear context, on page 2 • dumpcore, on page 3 • exception coresize, on page 6 • exception filepath, on page 8 • exception pakmem, on page 12 • exception sparse, on page 14 • exception sprsize, on page 16 • follow, on page 18 • monitor threads, on page 25 • process, on page 29 • process core, on page 32 • process mandatory, on page 34 • show context, on page 36 • show dll, on page 39 • show exception, on page 42 • show memory, on page 44 • show memory compare, on page 47 • show memory heap, on page 50 • show processes, on page 54 Process and Memory Management Commands 1 Process and Memory Management Commands clear context clear context To clear core dump context information, use the clear context command in the appropriate mode. clear context location {node-id | all} Syntax Description location{node-id | all} (Optional) Clears core dump context information for a specified node. The node-id argument is expressed in the rack/slot/module notation. Use the all keyword to indicate all nodes. Command Default No default behavior or values Command Modes Administration EXEC EXEC mode Command History Release Modification Release 3.7.2 This command was introduced. Release 3.9.0 No modification. Usage Guidelines To use this command, you must be in a user group associated with a task group that includes appropriate task IDs.
    [Show full text]
  • How to Dump and Load
    How To Dump And Load Sometimes it becomes necessary to reorganize the data in your database (for example, to move data from type i data areas to type ii data areas so you can take advantage of the latest features)or to move parts of it from one database to another. The process for doping this can be quite simple or quite complex, depending on your environment, the size of your database, what features you are using, and how much time you have. Will you remember to recreate the accounts for SQL users? To resotre theie privileges? Will your loaded database be using the proper character set and collations? What about JTA? Replication? etc. We will show you how to do all the other things you need to do in addition to just dumping and loading the data in your tables. 1 How To Dump and Load gus bjorklund head groundskeeper, parmington foundation 2 What do we mean by dumping and loading? • Extract all the data from a database (or storage area) • Insert the data into a new database (or storage area) • Could be entire database or part 3 Why do we dump and load? 4 Why do we dump & load? • To migrate between platforms • To upgrade OpenEdge to new version • To repair corruption • To “improve performance” • To change storage area configuration • To defragment or improve “scatter” • To fix a “long rm chain” problem • Because it is October 5 Ways to dump and load • Dictionary • 4GL BUFFER-COPY • Binary • Replication triggers (or CDC) • Table partitioning / 4GL • Incremental by storage area 6 Binary Dump & Load • binary dump files – not "human readable"
    [Show full text]
  • Process Text Streams Using Filters
    Process Text Streams Using Filters OBJECTIVE: Candidates should should be able to apply filters to text streams. 1 Process Text Streams Using Filters KeyKEY knowledge KNOWLEDGE area(s): AREAS: Send text files and output streams through text utility filters to modify the output using standard UNIX commands found in the GNU textutils package. 2 Process Text Streams Using Filters KEY FILES,TERMS, UTILITIES cat nl tail cut paste tr expand pr unexpand fmt sed uniq head sort wc hexdump split join tac 3 cat cat the editor - used as a rudimentary text editor. cat > short-message we are curious to meet penguins in Prague Crtl+D *Ctrl+D - command is used for ending interactive input. 4 cat cat the reader More commonly used to flush text to stdout. Options: -n number each line of output -b number only non-blank output lines -A show carriage return Example cat /etc/resolv.conf ▶ search mydomain.org nameserver 127.0.0.1 5 tac tac reads back-to-front This command is the same as cat except that the text is read from the last line to the first. tac short-message ▶ penguins in Prague to meet we are curious 6 head or tail using head or tail - often used to analyze logfiles. - by default, output 10 lines of text. List 20 first lines of /var/log/messages: head -n 20 /var/log/messages head -20 /var/log/messages List 20 last lines of /etc/aliases: tail -20 /etc/aliases 7 head or tail The tail utility has an added option that allows one to list the end of a text starting at a given line.
    [Show full text]
  • Why Is C. Diff So Hard to Culture and Kill?
    Why is C. diff so hard to culture and kill? Clostridium difficile, commonly referred to as C. diff, is the #1 nosocomial infection in hospitals (it actually kicked staph infections out of the top spot). At Assurance, we test for this organism as part of our Gastrointestinal (GI) panel. C. diff is a gram-positive anaerobe, meaning it does not like oxygen. Its defensive mechanism is sporulation – where it essentially surrounds itself with a tough outer layer of keratin and can live in water, soil, etc. for over a decade. For reference, anthrax is another organism that sporulates. Once C. diff sporulates, it is very hard to kill and in fact, bleach is one of the only disinfectants that work. Unfortunately, it can spread quickly throughout hospitals. Spores of C. diff are found all over hospital surfaces and even in some hospital water systems. It’s the most threatening for those who are immunocompromised or the elderly, who are the most likely to end up with C. diff infections. With our PCR testing, we’re looking for the C. diff organism itself but we’re also looking at the production of toxin. Unless it produces toxins A AND B together OR toxin B, C. diff doesn’t cause severe disease. Many babies are exposed to it during birth or in the hospitals and may test positive on our GI panel. Unless they are expressing those toxins (both toxin A&B or just toxin B) it is not considered a clinical infection. Studies show that toxins A&B together causes infection, as well as toxin B.
    [Show full text]
  • Considerations for Use of Microcomputers in Developing Countrystatistical Offices
    Considerations for Use of Microcomputers in Developing CountryStatistical Offices Final Report Prepared by International Statistical Programs Center Bureau of the Census U.S. Department of Commerce Funded by Office of the Science Advisor (c Agency for International Development issued October 1983 IV U.S. Department of Commerce Malcolm Baldrige, Secretary Clarence J. Brown, Deputy Secretary BUREAU OF THE CENSUS C.L. Kincannon, Deputy Director ACKNOWLEDGE ME NT S This study was conducted by the International Statistical Programs Center (ISPC) of the U.S. Bureau of the Census under Participating Agency Services Agreement (PASA) #STB 5543-P-CA-1100-O0, "Strengthening Scientific and Technological Capacity: Low Cost Microcomputer Technology," with the U.S. Agency for International Development (AID). Funding fcr this project was provided as a research grant from the Office of the Science Advisor of AID. The views and opinions expressed in this report, however, are those of the authors, and do not necessarily reflect those of the sponsor. Project implementation was performed under general management of Robert 0. Bartram, Assistant Director for International Programs, and Karl K. Kindel, Chief ISPC. Winston Toby Riley III provided input as an independent consultant. Study activities and report preparation were accomplished by: Robert R. Bair -- Principal Investigator Barbara N. Diskin -- Project Leader/Principal Author Lawrence I. Iskow -- Author William K. Stuart -- Author Rodney E. Butler -- Clerical Assistant Jerry W. Richards -- Clerical Assistant ISPC would like to acknowledge the many microcomputer vendors, software developers, users, the United Nations Statistical Office, and AID staff and contractors that contributed to the knowledge and experiences of the study team.
    [Show full text]
  • A Brief Introduction to Unix-2019-AMS
    Brief Intro to Linux/Unix Brief Intro to Unix (contd) A Brief Introduction to o Brief History of Unix o Compilers, Email, Text processing o Basics of a Unix session o Image Processing Linux/Unix – AMS 2019 o The Unix File System Pete Pokrandt o Working with Files and Directories o The vi editor UW-Madison AOS Systems Administrator o Your Environment [email protected] o Common Commands Twitter @PTH1 History of Unix History of Unix History of Unix o Created in 1969 by Kenneth Thompson and Dennis o Today – two main variants, but blended o It’s been around for a long time Ritchie at AT&T o Revised in-house until first public release 1977 o System V (Sun Solaris, SGI, Dec OSF1, AIX, o It was written by computer programmers for o 1977 – UC-Berkeley – Berkeley Software Distribution (BSD) linux) computer programmers o 1983 – Sun Workstations produced a Unix Workstation o BSD (Old SunOS, linux, Mac OSX/MacOS) o Case sensitive, mostly lowercase o AT&T unix -> System V abbreviations 1 Basics of a Unix Login Session Basics of a Unix Login Session Basics of a Unix Login Session o The Shell – the command line interface, o Features provided by the shell o Logging in to a unix session where you enter commands, etc n Create an environment that meets your needs n login: username n Some common shells n Write shell scripts (batch files) n password: tImpAw$ n Define command aliases (this Is my password At work $) Bourne Shell (sh) OR n Manipulate command history IHateHaving2changeMypasswordevery3weeks!!! C Shell (csh) n Automatically complete the command
    [Show full text]
  • Sqlite Dump Without Schema
    Sqlite Dump Without Schema Rodrick unpeopling thermochemically? Autogamous and burst Emanuel check almost hurry-scurry, though Andre inundated his hominidae request. Rident Cobbie electrocuted very huskily while Chandler remains low-key and sickly. The functions are many popular formats, without sqlite schema dump tables in a good chance of sql will generate text file with up your db clear and create table You who check created tables by following commands fist in command line circuit in SQLite command line sqlite3 gamadb sqlite tables Output. To format the world with sqlite tutorial, without sqlite dump schema and are now i thought i increase the. The database schema in an SQLite database is stored ina special table. Using SQLite MoonPoint Support. Application successfully installed devices without going to dump file called. Sqlite3 mysqlitefiledb sqlite output pathtomyoutputfilesql. How To porter The SQLite Dump Command SQLite Tutorial. Impexpc File Reference ch-wernerde. Sqlite commands before it was able to any given json, without sqlite dump file size is how can execute sql? Convert SQLite database to Postgres database like Science. Whenever the without sqlite schema dump command line consists of the table in the support is the last row in list is highly complex peewee. Ram that schema dump command without actually finding and. Trying to know when concatenating character types are dumped db clear, break if start of. Schema Generator MikroORM. Can also crumb the following command which restrict output the file directly. MySQL How you dump a MySQL database and export schema. SQLite Jason L Froebe Tech tips and How Tos for Fellow.
    [Show full text]
  • Bash Crash Course + Bc + Sed + Awk∗
    Bash Crash course + bc + sed + awk∗ Andrey Lukyanenko, CSE, Aalto University Fall, 2011 There are many Unix shell programs: bash, sh, csh, tcsh, ksh, etc. The comparison of those can be found on-line 1. We will primary focus on the capabilities of bash v.4 shell2. 1. Each bash script can be considered as a text file which starts with #!/bin/bash. It informs the editor or interpretor which tries to open the file, what to do with the file and how should it be treated. The special character set in the beginning #! is a magic number; check man magic and /usr/share/file/magic on existing magic numbers if interested. 2. Each script (assume you created “scriptname.sh file) can be invoked by command <dir>/scriptname.sh in console, where <dir> is absolute or relative path to the script directory, e.g., ./scriptname.sh for current directory. If it has #! as the first line it will be invoked by this command, otherwise it can be called by command bash <dir>/scriptname.sh. Notice: to call script as ./scriptname.sh it has to be executable, i.e., call command chmod 555 scriptname.sh before- hand. 3. Variable in bash can be treated as integers or strings, depending on their value. There are set of operations and rules available for them. For example: #!/bin/bash var1=123 # Assigns value 123 to var1 echo var1 # Prints ’var1’ to output echo $var1 # Prints ’123’ to output var2 =321 # Error (var2: command not found) var2= 321 # Error (321: command not found) var2=321 # Correct var3=$var2 # Assigns value 321 from var2 to var3 echo $var3 # Prints ’321’ to output
    [Show full text]
  • Chapter # 9 LEX and YACC
    Chapter # 9 LEX and YACC Dr. Shaukat Ali Department of Computer Science University of Peshawar Lex and Yacc Lex and yacc are a matched pair of tools. Lex breaks down files into sets of "tokens," roughly analogous to words. Yacc takes sets of tokens and assembles them into higher-level constructs, analogous to sentences. Lex's output is mostly designed to be fed into some kind of parser. Yacc is designed to work with the output of Lex. 2 Lex and Yacc Lex and yacc are tools for building programs. Their output is itself code – Which needs to be fed into a compiler – May be additional user code is added to use the code generated by lex and yacc 3 Lex : A lexical analyzer generator Lex is a program designed to generate scanners, also known as tokenizers, which recognize lexical patterns in text Lex is an acronym that stands for "lexical analyzer generator.“ The main purpose is to facilitate lexical analysis The processing of character sequences in source code to produce tokens for use as input to other programs such as parsers Another tool for lexical analyzer generation is Flex 4 Lex : A lexical analyzer generator lex.lex is an a input file written in a language which describes the generation of lexical analyzer. The lex compiler transforms lex.l to a C program known as lex.yy.c. lex.yy.c is compiled by the C compiler to a file called a.out. The output of C compiler is the working lexical analyzer which takes stream of input characters and produces a stream of tokens.
    [Show full text]
  • Project1: Build a Small Scanner/Parser
    Project1: Build A Small Scanner/Parser Introducing Lex, Yacc, and POET cs5363 1 Project1: Building A Scanner/Parser Parse a subset of the C language Support two types of atomic values: int float Support one type of compound values: arrays Support a basic set of language concepts Variable declarations (int, float, and array variables) Expressions (arithmetic and boolean operations) Statements (assignments, conditionals, and loops) You can choose a different but equivalent language Need to make your own test cases Options of implementation (links available at class web site) Manual in C/C++/Java (or whatever other lang.) Lex and Yacc (together with C/C++) POET: a scripting compiler writing language Or any other approach you choose --- must document how to download/use any tools involved cs5363 2 This is just starting… There will be two other sub-projects Type checking Check the types of expressions in the input program Optimization/analysis/translation Do something with the input code, output the result The starting project is important because it determines which language you can use for the other projects Lex+Yacc ===> can work only with C/C++ POET ==> work with POET Manual ==> stick to whatever language you pick This class: introduce Lex/Yacc/POET to you cs5363 3 Using Lex to build scanners lex.yy.c MyLex.l lex/flex lex.yy.c a.out gcc/cc Input stream a.out tokens Write a lex specification Save it in a file (MyLex.l) Compile the lex specification file by invoking lex/flex lex MyLex.l A lex.yy.c file is generated
    [Show full text]
  • GNU M4, Version 1.4.7 a Powerful Macro Processor Edition 1.4.7, 23 September 2006
    GNU M4, version 1.4.7 A powerful macro processor Edition 1.4.7, 23 September 2006 by Ren´eSeindal This manual is for GNU M4 (version 1.4.7, 23 September 2006), a package containing an implementation of the m4 macro language. Copyright c 1989, 1990, 1991, 1992, 1993, 1994, 2004, 2005, 2006 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License.” i Table of Contents 1 Introduction and preliminaries ................ 3 1.1 Introduction to m4 ............................................. 3 1.2 Historical references ............................................ 3 1.3 Invoking m4 .................................................... 4 1.4 Problems and bugs ............................................. 8 1.5 Using this manual .............................................. 8 2 Lexical and syntactic conventions ............ 11 2.1 Macro names ................................................. 11 2.2 Quoting input to m4........................................... 11 2.3 Comments in m4 input ........................................ 11 2.4 Other kinds of input tokens ................................... 12 2.5 How m4 copies input to output ................................ 12 3 How to invoke macros........................
    [Show full text]