(CommandList children: [ (C {(atf_test_case)} {(bad_namespace)}) (FuncDef name: bad_namespace_head body: (BraceGroup children: [ (C {(atf_set)} {(DQ (descr))} {(DQ ("Can't set attributes for nonexistent namespaces"))}) ] spids: [87] ) spids: [83 86] ) (FuncDef name: bad_namespace_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(not-exit) (Lit_Other ':') (0)} {(-e)} {(match) (Lit_Other ':') (DQ ('Invalid argument'))} {(setextattr)} {(badnamespace)} {(myattr)} {(X)} {(foo)} ) (C {(atf_check)} {(-s)} {(not-exit) (Lit_Other ':') (0)} {(-e)} {(match) (Lit_Other ':') (DQ ('Invalid argument'))} {(lsextattr)} {(-q)} {(badnamespace)} {(foo)} ) ] spids: [106] ) spids: [102 105] ) (C {(atf_test_case)} {(hex)}) (FuncDef name: hex_head body: (BraceGroup children: [ (C {(atf_set)} {(DQ (descr))} {(DQ ('Set and get attribute values in hexadecimal'))}) ] spids: [183] ) spids: [179 182] ) (FuncDef name: hex_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(myattr)} {(XYZ)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ ('58 59 5a') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-qx)} {(user)} {(myattr)} {(foo)} ) ] spids: [202] ) spids: [198 201] ) (C {(atf_test_case)} {(hex_nonascii)}) (FuncDef name: hex_nonascii_head body: (BraceGroup children: [ (C {(atf_set)} {(DQ (descr))} {(DQ ('Get binary attribute values in hexadecimal'))}) ] spids: [276] ) spids: [272 275] ) (FuncDef name: hex_nonascii_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BINSTUFF) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(echo)} { (SQ <Lit_EscapedChar '\\x'> <20> <Lit_EscapedChar '\\x'> <30> <Lit_EscapedChar '\\x'> <40> <Lit_EscapedChar '\\x'> <55> <Lit_EscapedChar '\\x'> <66> <Lit_EscapedChar '\\x'> <70> <Lit_EscapedChar '\\x'> <81> <Lit_EscapedChar '\\x'> <a2> <Lit_EscapedChar '\\x'> <b3> <Lit_EscapedChar '\\x'> <ee> <Lit_EscapedChar '\\x'> <ff> ) } ) ] ) left_token: <Left_Backtick '`'> spids: [307 334] ) } spids: [306] ) ] spids: [306] ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(myattr)} {(DQ ($ VSub_Name '$BINSTUFF'))} {(foo)} ) (C {(getextattr)} {(user)} {(myattr)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ ('20 30 40 55 66 70 81 a2 b3 ee ff') (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } {(getextattr)} {(-qx)} {(user)} {(myattr)} {(foo)} ) ] spids: [295] ) spids: [291 294] ) (C {(atf_test_case)} {(long_name)}) (FuncDef name: long_name_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('A maximum length attribute name'))})] spids: [411] ) spids: [407 410] ) (FuncDef name: long_name_body body: (BraceGroup children: [ (C {(check_fs)}) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:NAME_MAX) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(getconf)} {(NAME_MAX)} {(.)})] ) left_token: <Left_CommandSub '$('> spids: [442 448] ) } spids: [441] ) ] spids: [441] ) ] negated: True ) terminator: <Op_Semi ';'> ) ] action: [ (C {(atf_skip)} {(DQ ('Filesystem not reporting NAME_MAX; skipping testcase'))}) ] spids: [-1 451] ) ] spids: [-1 461] ) (C {(atf_expect_fail)} {(DQ ("BUG 208965 extattr(2) doesn't allow maxlen attr names"))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ATTRNAME) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(jot)} {(-b)} {(X)} {(-s)} {(DQ )} {($ VSub_Name '$NAME_MAX')} {(0)}) ] ) left_token: <Left_Backtick '`'> spids: [478 493] ) } spids: [477] ) ] spids: [477] ) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {($ VSub_Name '$ATTRNAME')} {(myvalue)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (${ VSub_Name ATTRNAME) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(lsextattr)} {(-q)} {(user)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myvalue) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-q)} {(user)} {(${ VSub_Name ATTRNAME)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(rmextattr)} {(user)} {(${ VSub_Name ATTRNAME)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(lsextattr)} {(-q)} {(user)} {(foo)} ) ] spids: [430] ) spids: [426 429] ) (C {(atf_test_case)} {(loud)}) (FuncDef name: loud_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('Loud (non -q) output for each command'))})] spids: [638] ) spids: [634 637] ) (FuncDef name: loud_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(myattr)} {(myvalue)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ ('foo myattr'))} {(printf)} {(DQ ('%s %s'))} { (CommandSubPart command_list: (CommandList children:[(C {(lsextattr)} {(user)} {(foo)})]) left_token: <Left_CommandSub '$('> spids: [723 729] ) } ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ ('foo myvalue'))} {(printf)} {(DQ ('%s %s'))} { (CommandSubPart command_list: (CommandList children: [(C {(getextattr)} {(user)} {(myattr)} {(foo)})] ) left_token: <Left_CommandSub '$('> spids: [756 764] ) } ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(rmextattr)} {(user)} {(myattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (foo))} {(printf)} {(Lit_Other '%') (s)} { (CommandSubPart command_list: (CommandList children:[(C {(lsextattr)} {(user)} {(foo)})]) left_token: <Left_CommandSub '$('> spids: [809 815] ) } ) ] spids: [657] ) spids: [653 656] ) (C {(atf_test_case)} {(noattrs)}) (FuncDef name: noattrs_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('A file with no extended attributes'))})] spids: [828] ) spids: [824 827] ) (FuncDef name: noattrs_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(lsextattr)} {(-q)} {(user)} {(foo)} ) ] spids: [847] ) spids: [843 846] ) (C {(atf_test_case)} {(nonexistent_file)}) (FuncDef name: nonexistent_file_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('A file that does not exist'))})] spids: [889] ) spids: [885 888] ) (FuncDef name: nonexistent_file_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('No such file or directory'))} {(lsextattr)} {(user)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('No such file or directory'))} {(setextattr)} {(user)} {(myattr)} {(myvalue)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('No such file or directory'))} {(getextattr)} {(user)} {(myattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('No such file or directory'))} {(rmextattr)} {(user)} {(myattr)} {(foo)} ) ] spids: [908] ) spids: [904 907] ) (C {(atf_test_case)} {(null)}) (FuncDef name: null_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('NUL-terminate an attribute value'))})] spids: [1032] ) spids: [1028 1031] ) (FuncDef name: null_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(-n)} {(user)} {(myattr)} {(myvalue)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myvalue) (EscapedLiteralPart token:<Lit_EscapedChar '\\0'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } {(getextattr)} {(-q)} {(user)} {(myattr)} {(foo)} ) ] spids: [1051] ) spids: [1047 1050] ) (C {(atf_test_case)} {(one_user_attr)}) (FuncDef name: one_user_attr_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('A file with one extended attribute'))})] spids: [1126] ) spids: [1122 1125] ) (FuncDef name: one_user_attr_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(myattr)} {(myvalue)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myattr) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(lsextattr)} {(-q)} {(user)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myvalue) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-q)} {(user)} {(myattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(rmextattr)} {(user)} {(myattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(lsextattr)} {(-q)} {(user)} {(foo)} ) ] spids: [1145] ) spids: [1141 1144] ) (C {(atf_test_case)} {(one_system_attr)}) (FuncDef name: one_system_attr_head body: (BraceGroup children: [ (C {(atf_set)} {(DQ (descr))} {(DQ ('A file with one extended attribute'))}) (C {(atf_set)} {(DQ (require.user))} {(DQ (root))}) ] spids: [1285] ) spids: [1281 1284] ) (FuncDef name: one_system_attr_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(system)} {(myattr)} {(myvalue)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myattr) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(lsextattr)} {(-q)} {(system)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myvalue) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-q)} {(system)} {(myattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(rmextattr)} {(system)} {(myattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(lsextattr)} {(-q)} {(system)} {(foo)} ) ] spids: [1315] ) spids: [1311 1314] ) (C {(atf_test_case)} {(stdin)}) (FuncDef name: stdin_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('Set attribute value from stdin'))})] spids: [1455] ) spids: [1451 1454] ) (FuncDef name: stdin_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(dd)} {(Lit_VarLike 'if=') (/dev/random)} {(Lit_VarLike 'of=') (infile)} {(Lit_VarLike 'bs=') (1k)} {(Lit_VarLike 'count=') (8)} ) (C {(touch)} {(foo)}) (AndOr children: [ (SimpleCommand words: [{(setextattr)} {(-i)} {(user)} {(myattr)} {(foo)}] redirects: [(Redir op_id:Redir_Less fd:-1 arg_word:{(infile)} spids:[1510])] ) (C {(atf_fail)} {(DQ ('setextattr failed'))}) ] op_id: Op_DPipe ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myattr) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(lsextattr)} {(-q)} {(user)} {(foo)} ) (AndOr children: [ (SimpleCommand words: [{(getextattr)} {(-qq)} {(user)} {(myattr)} {(foo)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(outfile)} spids:[1559])] ) (C {(atf_fail)} {(DQ ('getextattr failed'))}) ] op_id: Op_DPipe ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(cmp)} {(-s)} {(infile)} {(outfile)}) ] spids: [1474] ) spids: [1470 1473] ) (C {(atf_test_case)} {(stringify)}) (FuncDef name: stringify_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('Stringify the output of getextattr'))})] spids: [1599] ) spids: [1595 1598] ) (FuncDef name: stringify_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(myattr)} {(DQ ('my value'))} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (my) (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\0'>) (40value) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } {(getextattr)} {(-qs)} {(user)} {(myattr)} {(foo)} ) ] spids: [1618] ) spids: [1614 1617] ) (C {(atf_test_case)} {(symlink)}) (FuncDef name: symlink_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('A symlink to an ordinary file'))})] spids: [1699] ) spids: [1695 1698] ) (FuncDef name: symlink_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(ln)} {(-s)} {(foo)} {(foolink)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(myattr)} {(myvalue)} {(foolink)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myvalue) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-q)} {(user)} {(myattr)} {(foolink)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myvalue) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-q)} {(user)} {(myattr)} {(foo)} ) ] spids: [1718] ) spids: [1714 1717] ) (C {(atf_test_case)} {(symlink_nofollow)}) (FuncDef name: symlink_nofollow_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('Operating directly on a symlink'))})] spids: [1829] ) spids: [1825 1828] ) (FuncDef name: symlink_nofollow_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(ln)} {(-s)} {(foo)} {(foolink)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(-h)} {(user)} {(myattr)} {(myvalue)} {(foolink)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myvalue) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-qh)} {(user)} {(myattr)} {(foolink)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('Attribute not found'))} {(getextattr)} {(user)} {(myattr)} {(foolink)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('Attribute not found'))} {(getextattr)} {(user)} {(myattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(otherattr)} {(othervalue)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(getextattr)} {(-qh)} {(user)} {(otherattr)} {(foolink)} ) ] spids: [1848] ) spids: [1844 1847] ) (C {(atf_test_case)} {(system_and_user_attrs)}) (FuncDef name: system_and_user_attrs_head body: (BraceGroup children: [ (C {(atf_set)} {(DQ (descr))} {(DQ ('A file with both system and user extended attributes'))}) (C {(atf_set)} {(DQ (require.user))} {(DQ (root))}) ] spids: [2038] ) spids: [2034 2037] ) (FuncDef name: system_and_user_attrs_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(userattr)} {(userval)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(system)} {(sysattr)} {(sysval)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (userattr) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(lsextattr)} {(-q)} {(user)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (sysattr) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(lsextattr)} {(-q)} {(system)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (userval) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-q)} {(user)} {(userattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (sysval) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-q)} {(system)} {(sysattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(rmextattr)} {(user)} {(userattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(rmextattr)} {(system)} {(sysattr)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(lsextattr)} {(-q)} {(user)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(lsextattr)} {(-q)} {(system)} {(foo)} ) ] spids: [2068] ) spids: [2064 2067] ) (C {(atf_test_case)} {(two_files)}) (FuncDef name: two_files_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('Manipulate two files'))})] spids: [2328] ) spids: [2324 2327] ) (FuncDef name: two_files_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)} {(bar)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(myattr)} {(myvalue)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (foo) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) (myattr) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) (bar) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) (myattr) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } {(lsextattr)} {(user)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (foo) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) (myvalue) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) (bar) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) (myvalue) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } {(getextattr)} {(user)} {(myattr)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(rmextattr)} {(user)} {(myattr)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(lsextattr)} {(-q)} {(user)} {(foo)} {(bar)} ) ] spids: [2347] ) spids: [2343 2346] ) (C {(atf_test_case)} {(two_files_force)}) (FuncDef name: two_files_force_head body: (BraceGroup children: [ (C {(atf_set)} {(DQ (descr))} {(DQ ('Manipulate two files. The first does not exist'))}) ] spids: [2513] ) spids: [2509 2512] ) (FuncDef name: two_files_force_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(bar)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('No such file or directory'))} {(setextattr)} {(user)} {(myattr)} {(myvalue)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-e)} {(ignore)} {(setextattr)} {(-f)} {(user)} {(myattr)} {(myvalue)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('No such file or directory'))} {(lsextattr)} {(user)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-e)} {(ignore)} {(-o)} {(inline) (Lit_Other ':') (DQ (bar) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) (myattr) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } {(lsextattr)} {(-f)} {(user)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('No such file or directory'))} {(getextattr)} {(user)} {(myattr)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-e)} {(ignore)} {(-o)} {(inline) (Lit_Other ':') (DQ (bar) (EscapedLiteralPart token:<Lit_EscapedChar '\\t'>) (myvalue) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>) ) } {(getextattr)} {(-f)} {(user)} {(myattr)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('No such file or directory'))} {(rmextattr)} {(user)} {(myattr)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-e)} {(ignore)} {(rmextattr)} {(-f)} {(user)} {(myattr)} {(foo)} {(bar)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(lsextattr)} {(-q)} {(user)} {(bar)} ) ] spids: [2532] ) spids: [2528 2531] ) (C {(atf_test_case)} {(two_user_attrs)}) (FuncDef name: two_user_attrs_head body: (BraceGroup children: [(C {(atf_set)} {(DQ (descr))} {(DQ ('A file with two extended attributes'))})] spids: [2820] ) spids: [2816 2819] ) (FuncDef name: two_user_attrs_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(myattr1)} {(myvalue1)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(setextattr)} {(user)} {(myattr2)} {(myvalue2)} {(foo)} ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:raw_output) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(lsextattr)} {(-q)} {(user)} {(foo)})] ) left_token: <Left_Backtick '`'> spids: [2905 2913] ) } spids: [2904] ) ] spids: [2904] ) (C {(atf_fail)} {(DQ ('lsextattr failed'))}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tabless_output) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(printf)} {(DQ ('%s %s'))} {(${ VSub_Name raw_output)})] ) left_token: <Left_Backtick '`'> spids: [2925 2935] ) } spids: [2924] ) ] spids: [2924] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ('myattr1 myattr2'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (${ VSub_Name tabless_output))} {(-a)} {(DQ ('myattr2 myattr1'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (${ VSub_Name tabless_output))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(atf_fail)} {(DQ ('lsextattr printed ') (${ VSub_Name tabless_output))})] spids: [-1 2975] ) ] spids: [-1 2988] ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myvalue1) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-q)} {(user)} {(myattr1)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(inline) (Lit_Other ':') (DQ (myvalue2) (EscapedLiteralPart token:<Lit_EscapedChar '\\n'>)) } {(getextattr)} {(-q)} {(user)} {(myattr2)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(rmextattr)} {(user)} {(myattr2)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(rmextattr)} {(user)} {(myattr1)} {(foo)} ) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (0)} {(-o)} {(empty)} {(lsextattr)} {(-q)} {(user)} {(foo)} ) ] spids: [2839] ) spids: [2835 2838] ) (C {(atf_test_case)} {(unprivileged_user_cannot_set_system_attr)}) (FuncDef name: unprivileged_user_cannot_set_system_attr_head body: (BraceGroup children: [ (C {(atf_set)} {(DQ (descr))} {(DQ ("Unprivileged users can't set system attributes"))}) (C {(atf_set)} {(DQ (require.user))} {(DQ (unprivileged))}) ] spids: [3120] ) spids: [3116 3119] ) (FuncDef name: unprivileged_user_cannot_set_system_attr_body body: (BraceGroup children: [ (C {(check_fs)}) (C {(touch)} {(foo)}) (C {(atf_check)} {(-s)} {(exit) (Lit_Other ':') (1)} {(-e)} {(match) (Lit_Other ':') (DQ ('Operation not permitted'))} {(setextattr)} {(system)} {(myattr)} {(myvalue)} {(foo)} ) ] spids: [3150] ) spids: [3146 3149] ) (FuncDef name: atf_init_test_cases body: (BraceGroup children: [ (C {(atf_add_test_case)} {(bad_namespace)}) (C {(atf_add_test_case)} {(hex)}) (C {(atf_add_test_case)} {(hex_nonascii)}) (C {(atf_add_test_case)} {(long_name)}) (C {(atf_add_test_case)} {(loud)}) (C {(atf_add_test_case)} {(noattrs)}) (C {(atf_add_test_case)} {(nonexistent_file)}) (C {(atf_add_test_case)} {(null)}) (C {(atf_add_test_case)} {(symlink_nofollow)}) (C {(atf_add_test_case)} {(one_user_attr)}) (C {(atf_add_test_case)} {(one_system_attr)}) (C {(atf_add_test_case)} {(stdin)}) (C {(atf_add_test_case)} {(stringify)}) (C {(atf_add_test_case)} {(symlink)}) (C {(atf_add_test_case)} {(symlink_nofollow)}) (C {(atf_add_test_case)} {(system_and_user_attrs)}) (C {(atf_add_test_case)} {(two_files)}) (C {(atf_add_test_case)} {(two_files_force)}) (C {(atf_add_test_case)} {(two_user_attrs)}) (C {(atf_add_test_case)} {(unprivileged_user_cannot_set_system_attr)}) ] spids: [3197] ) spids: [3193 3196] ) (FuncDef name: check_fs body: (BraceGroup children: [ (Case to_match: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(df)} {(-T)} {(.)}) (C {(tail)} {(-n)} {(1)}) (C {(cut)} {(-wf)} {(2)}) ] negated: False ) ] ) left_token: <Left_Backtick '`'> spids: [3311 3333] ) } arms: [ (case_arm pat_list:[{(DQ (ufs))}] spids:[333933413343-1]) (case_arm pat_list:[{(DQ (zfs))}] spids:[335033523354-1]) (case_arm pat_list: [{(DQ (tmpfs))}] action: [(C {(atf_skip)} {(DQ ('tmpfs does not support extended attributes'))})] spids: [3361 3363 3370 -1] ) ] spids: [3309 3335 3373] ) ] spids: [3306] ) spids: [3302 3305] ) ] )