Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

77 lines
3.6 KiB

dnl ---------------------------------------------------------------------------
dnl
dnl This file contains general m4 utilities.
dnl
dnl Copyright (C) Microsoft Corporation, 1997.
dnl
dnl ---------------------------------------------------------------------------
dnl
dnl /////////////////////////////////////////////////////////////////////////
dnl Begin long m4 comment
define(d_bcom, `divert(-1)dnl')dnl
dnl
dnl End long m4 comment
define(d_ecom, `divert(0)dnl')dnl
dnl
d_bcom ////////////////////////////////////////////////////////////////////////
Redefine m4 intrinsics with useful names
d_ecom ////////////////////////////////////////////////////////////////////////
define(d_shift, defn(`shift'))dnl
undefine(`shift')dnl
dnl
define(d_len, defn(`len'))dnl
undefine(`len')dnl
dnl
define(d_index, defn(`index'))dnl
undefine(`index')dnl
dnl
d_bcom ////////////////////////////////////////////////////////////////////////
Some useful generic macros
d_ecom ////////////////////////////////////////////////////////////////////////
define(d_Null, `$1')dnl Put the argument back on the macro evaluation stack
define(d_Debug, `<$1><$2><$3><$4><$5>')dnl See what the arguments are (for debug)
dnl
d_bcom d_Rep ------------------------------------------------------------------
Purpose: Repeat $1 tabbed and on a new line $2 times
Arguments: line to be repeated in $1, one based count in $2
d_ecom ------------------------------------------------------------------------
define(d_Rep, `$1
ifelse(eval($2 == 1), `1', `', `d_Rep(`$1', decr($2))')')dnl
dnl
d_bcom d_Repi -----------------------------------------------------------------
Purpose: Repeat with a count
Arguments: line to be repeated in $1, key in $2, begin count in $3,
end count in $4
Notes: Key must consist of characters not in string
d_ecom ------------------------------------------------------------------------
define(d_Repi, `patsubst(`$1', `$2', `$3')
ifelse(`$3', `$4', `', `d_Repi(`$1', `$2', incr($3), $4)')')dnl
dnl
d_bcom d_RepStr ---------------------------------------------------------------
Purpose: Repeat with string substitution
Arguments line to be repeated in $1, key in $2, strings to substitute
for key in $3, $4, ...
Notes: Key must consist of characters not in string
d_ecom ------------------------------------------------------------------------
define(d_RepStr, `patsubst(`$1', `$2', `$3')dnl
ifelse(`$#', 3, `', `d_RepStr(`$1', `$2', d_shift(d_shift(d_shift($@))))')')dnl
dnl
d_bcom d_UpCase ---------------------------------------------------------------
Purpose: Makes argument all upper case
Arguments: String in $1
d_ecom ------------------------------------------------------------------------
define(d_UpCase, `translit(`$1', `abcdefghijklmnopqrstuvwxyz', `ABCDEFGHIJKLMNOPQRSTUVWXYZ')')dnl
dnl
d_bcom d_ErrPrint -------------------------------------------------------------
Purpose: Put error string both in file and to stderr
Arguments String in $1
Notes:
d_ecom ------------------------------------------------------------------------
define(d_ErrPrint, `errprint(`m4 macro error: <$1>')'`m4 macro error: <$1>')dnl
dnl
d_bcom d_Nth1------------------------------------------------------------------
Purpose: Expands to n'th argument after n, one-based.
Arguments Count in $1 followed by arguments.
d_ecom ------------------------------------------------------------------------
define(`d_Nth1', `ifelse(eval($1 <= 1), `1', `$2',
`d_Nth1(decr($1), d_shift(d_shift($@)))')')dnl