1 2######################################## 3# 4# Helper macros 5# 6 7# 8# shiftn(num,list...) 9# 10# shift the list num times 11# 12define(`shiftn',`ifelse($1,0,`shift($*)',`shiftn(decr($1),shift(shift($*)))')') 13 14# 15# ifndef(expr,true_block,false_block) 16# 17# m4 does not have this. 18# 19define(`ifndef',`ifdef(`$1',`$3',`$2')') 20 21# 22# __endline__ 23# 24# dummy macro to insert a newline. used for 25# errprint, so the close parentheses can be 26# indented correctly. 27# 28define(`__endline__',` 29') 30 31######################################## 32# 33# refpolwarn(message) 34# 35# print a warning message 36# 37define(`refpolicywarn',`errprint(__file__:__line__: Warning: `$1'__endline__)') 38 39######################################## 40# 41# refpolerr(message) 42# 43# print an error message. does not 44# make anything fail. 45# 46define(`refpolicyerr',`errprint(__file__:__line__: Error: `$1'__endline__)') 47 48######################################## 49# 50# gen_user(username, prefix, role_set, mls_defaultlevel, mls_range) 51# 52define(`gen_user',`define(`gen_all_users', gen_all_users `dnl 53user $1 roles { $3 }`'ifdef(`enable_mls', ` level $4 range $5')`'; 54')') 55 56define(`gen_all_users',`') 57 58######################################## 59# 60# gen_context(context,mls_sensitivity,[mcs_categories]) 61# 62define(`gen_context',`$1`'ifdef(`enable_mls',`:$2')`'') 63 64define(`dflt_or_overr',`ifdef(`$1',$1,$2)') 65 66######################################## 67# 68# gen_bool(name,default_value) 69# 70define(`gen_bool',` 71 bool $1 dflt_or_overr(`$1'_conf,$2); 72') 73