|
|
1.1 ! root 1: ! 2: ! 3: m4 Command m4 ! 4: ! 5: ! 6: ! 7: ! 8: Macro processor ! 9: ! 10: mm44 [ffiillee ...] ! 11: ! 12: The command m4 processes macros. It allows you to define strings ! 13: for which m4 is to search, and strings to replace them; m4 then ! 14: opens file, reads its contents, replaces each macro with its ! 15: specified replacement string, and writes the results into the ! 16: standard output stream. ! 17: ! 18: m4 can also perform file manipulation, conditional decision ! 19: making, substring selection, and arithmetic. The Introduction to ! 20: the m4 Macro Processor describes m4 in detail. ! 21: ! 22: The files are read in the order given; if no file is named, then ! 23: m4 reads the standard input stream. The file name `-' indicates ! 24: the standard input. ! 25: ! 26: m4 copies input to output until it finds a potential _m_a_c_r_o. A ! 27: macro is a string of alphanumerics (letters, digits, or under- ! 28: scores) that begins with a non-digit character and is surrounded ! 29: by non-alphanumerics. If m4 does not recognize the macro, it ! 30: simply copies it to the output and continues processing. If m4 ! 31: recognizes the macro and the next character is a left parenthesis ! 32: `(', an argument set follows: ! 33: ! 34: ! 35: macro(arg1,..., argn) ! 36: ! 37: ! 38: The arguments are collected by processing them in the same manner ! 39: as other text (thus, an arguments may itself be another macro), ! 40: and resulting output text is diverted into storage. m4 stores up ! 41: to nine arguments; any more will be processed but not saved. An ! 42: argument set consists of strings of text separated by commas ! 43: (commas inside quotation marks or parentheses do not terminate an ! 44: argument), and must contain balanced parentheses that are free of ! 45: quotation marks (i.e., that are unquoted). m4 strips arguments ! 46: of unquoted leading space (blanks, tabs, newline characters). ! 47: ! 48: m4 then removes the macro and its optional argument set from the ! 49: input stream, processes them, and replaces them in the input ! 50: stream with the resulting value. The value becomes the next ! 51: piece of text to be read. ! 52: ! 53: Quotation marks, of the form ` ', inhibit the recognition of ! 54: macro. m4 strips off one level of quotation marks when it en- ! 55: counters them (quotation marks are nestable). Thus, `_m_a_c_r_o' is ! 56: not processed, but is changed to macro and passed on. ! 57: ! 58: m4 determines the value of a user-defined macro by taking the ! 59: text that constitutes the macro's definition and replacing any ! 60: occurrence within that text of `$_n' (where n is `0' through `9') ! 61: with the text of the nth argument. Argument 0 is the macro it- ! 62: ! 63: ! 64: COHERENT Lexicon Page 1 ! 65: ! 66: ! 67: ! 68: ! 69: m4 Command m4 ! 70: ! 71: ! 72: ! 73: self. ! 74: ! 75: m4 recognizes the following predefined macros: ! 76: ! 77: cchhaannggeeqquuoottee[([_o_p_e_n_q_u_o_t_e],[_c_l_o_s_e_q_u_o_t_e])] ! 78: Changes the quotation characters. Missing arguments default ! 79: to ` for open or ' for close. Quotation characters will not ! 80: nest if they are defined to be the same character. Value is ! 81: null. ! 82: ! 83: ddeeccrr[(_n_u_m_b_e_r)] ! 84: Decrement number (default, 0) by one and returns resulting ! 85: value. ! 86: ! 87: ddeeffiinnee(_m_a_c_r_o,_d_e_f_i_n_i_t_i_o_n) ! 88: Define or redefine macro. If a predefined macro is ! 89: redefined, its original definition is irrecoverably lost. ! 90: Value is null. ! 91: ! 92: ddiivveerrtt[(_n)] ! 93: Redirects output to output stream n (default is 0). The ! 94: standard output is 0, and 1 through 9 are maintained as tem- ! 95: porary files. Any other n results in output being thrown ! 96: away until the next divert macro. Value is null. ! 97: ! 98: ddiivvnnuumm ! 99: Value is current output stream number. ! 100: ! 101: ddnnll Delete to newline: removes all characters from the input ! 102: stream up to and including the next newline. Value is null. ! 103: ! 104: dduummppddeeff[(_m_a_c_r_o_s)] ! 105: Value is quoted definitions of all macros specified, or ! 106: names and definitions of all defined macros if no arguments. ! 107: ! 108: eerrrrpprriinntt(_t_e_x_t) ! 109: Print text on standard error file. Value is null. ! 110: ! 111: eevvaall(_e_x_p_r_e_s_s_i_o_n) ! 112: Value is a number that is the value of evaluated expression. ! 113: It recognizes, in order of decreasing precedence: paren- ! 114: theses, **, unary + -, * / %, binary + -, relations, and ! 115: logicals. Arithmetic is performed in longs. ! 116: ! 117: iiffddeeff(_m_a_c_r_o,_d_e_f_v_a_l_u_e,_u_n_d_e_f_v_a_l_u_e) ! 118: Return defvalue if macro is defined, and undefvalue if not. ! 119: ! 120: iiffeellssee(_a_r_g_1,_a_r_g_2,_a_r_g_3...) ! 121: Compares arg1 and arg2. If they are the same, returns arg3. ! 122: If not, and arg4 is the last argument, return arg4. Other- ! 123: wise, the process repeats, comparing arg4 and arg5, and so ! 124: on. Like other m4 macros, this takes a maximum of nine ar- ! 125: guments. ! 126: ! 127: ! 128: ! 129: ! 130: COHERENT Lexicon Page 2 ! 131: ! 132: ! 133: ! 134: ! 135: m4 Command m4 ! 136: ! 137: ! 138: ! 139: iinncclluuddee(_f_i_l_e) ! 140: Value is the entire contents of the file argument. If file ! 141: is not accessible, a fatal error results. ! 142: ! 143: iinnccrr[(_n_u_m_b_e_r)] ! 144: Increments given number (default, zero) by one and returns ! 145: resulting value. ! 146: ! 147: iinnddeexx(_t_e_x_t,_p_a_t_t_e_r_n) ! 148: Value is a number corresponding to position of pattern in ! 149: text. If pattern does not occur in text, value is -1. ! 150: ! 151: lleenn(_t_e_x_t) ! 152: Value is a number that corresponds to length of text. ! 153: ! 154: mmaakkeetteemmpp(_f_i_l_e_n_a_m_e_X_X_X_X_X_X) ! 155: Value is filename with last six characters, usually XXXXXX, ! 156: replaced with current process id and a single letter. Same ! 157: as system call mktemp. ! 158: ! 159: ssiinncclluuddee(_f_i_l_e) ! 160: Value is the entire contents of file. If file is not acces- ! 161: sible, return null and continue processing. ! 162: ! 163: ssuubbssttrr(_t_e_x_t[,_s_t_a_r_t[,_c_o_u_n_t]]) ! 164: Value is a substring of text. start may be left-oriented ! 165: (nonnegative) or right-oriented (negative). count specifies ! 166: how many characters to the right (if positive) or to the ! 167: left (if negative) to return. If absent, it is assumed to ! 168: be large and of the same sign as start. If start is ! 169: omitted, it is assumed to be zero if count is positive or ! 170: omitted, or -1 if count is negative. ! 171: ! 172: ssyyssccmmdd(_c_o_m_m_a_n_d) ! 173: Pass command to the shell sh for execution. Value is null. ! 174: Same as system call system. ! 175: ! 176: ttrraannsslliitt(_t_e_x_t,_c_h_a_r_a_c_t_e_r_s[,_r_e_p_l_a_c_e_m_e_n_t_s]) ! 177: Replaces characters in text with the corresponding charac- ! 178: ters from replacements. If the replacements is absent or ! 179: too short, replace characters with a null character. Value ! 180: is text with specified replacements. ! 181: ! 182: uunnddeeffiinnee(_m_a_c_r_o) ! 183: Remove macro definition. Value is null. If a predefined ! 184: macro is redefined, its original definition is irrecoverably ! 185: lost. ! 186: ! 187: uunnddiivveerrtt[(_s_t_r_e_a_m[,...])] ! 188: Dumps each specified stream into the current output stream. ! 189: With no arguments, undivert dumps all output streams in ! 190: numeric order. m4 will not dump any output stream into it- ! 191: self. At the end of processing, m4 automatically dumps all ! 192: diverted text to standard output in numeric order. Value is ! 193: null. ! 194: ! 195: ! 196: COHERENT Lexicon Page 3 ! 197: ! 198: ! 199: ! 200: ! 201: m4 Command m4 ! 202: ! 203: ! 204: ! 205: ! 206: ***** See Also ***** ! 207: ! 208: commands, mktemp, system ! 209: _I_n_t_r_o_d_u_c_t_i_o_n _t_o _t_h_e _m_4 _M_a_c_r_o _P_r_o_c_e_s_s_o_r ! 210: ! 211: ! 212: ! 213: ! 214: ! 215: ! 216: ! 217: ! 218: ! 219: ! 220: ! 221: ! 222: ! 223: ! 224: ! 225: ! 226: ! 227: ! 228: ! 229: ! 230: ! 231: ! 232: ! 233: ! 234: ! 235: ! 236: ! 237: ! 238: ! 239: ! 240: ! 241: ! 242: ! 243: ! 244: ! 245: ! 246: ! 247: ! 248: ! 249: ! 250: ! 251: ! 252: ! 253: ! 254: ! 255: ! 256: ! 257: ! 258: ! 259: ! 260: ! 261: ! 262: COHERENT Lexicon Page 4 ! 263: ! 264:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.