(BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT) op: assign_op.Equal rhs: {<0>} spids: [75] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DBracket expr: (bool_expr.Binary op_id: Id.BoolBinary_EqualTilde left: {($ Id.VSub_Number 1)} right: {<Id.Lit_Other '^'> <-> <Id.Lit_Other '?'> <Id.Lit_Other '['> <0-9> <Id.Lit_Other ']'> <Id.Lit_Other '+'> <Id.Lit_Other '$'> } ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'INPUT='> name:INPUT) op: assign_op.Equal rhs: {($ Id.VSub_Number 1)} spids: [102] ) ] redirects: [] ) ] spids: [79 99] ) ] else_action: [] redirects: [] ) (C {<.>} {<'/DietPi/dietpi/func/dietpi-globals'>}) (C {<G_CHECK_ROOT_USER>}) (C {<G_CHECK_ROOTFS_RW>}) (C {<export>} {<Id.Lit_VarLike 'G_PROGRAM_NAME='> (SQ <DietPi-Sync>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_BACKTITLE='> name:WHIP_BACKTITLE) op: assign_op.Equal rhs: {(SQ <DietPi-Sync>)} spids: [150] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ )} spids: [156] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {<0>} spids: [161] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: {<0>} spids: [165] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [169] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FTP_MOUNT_AVAILABLE='> name: FTP_MOUNT_AVAILABLE ) op: assign_op.Equal rhs: {<0>} spids: [174] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FTP_MOUNT_TEXT='> name:FTP_MOUNT_TEXT) op: assign_op.Equal rhs: {(SQ <'Not available'>)} spids: [178] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SAMBA_MOUNT_AVAILABLE='> name: SAMBA_MOUNT_AVAILABLE ) op: assign_op.Equal rhs: {<0>} spids: [184] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SAMBA_MOUNT_TEXT='> name:SAMBA_MOUNT_TEXT) op: assign_op.Equal rhs: {(SQ <'Not available'>)} spids: [188] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYNC_DRY_RUN='> name:SYNC_DRY_RUN) op: assign_op.Equal rhs: {<0>} spids: [195] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYNC_MODE_TEXT='> name:SYNC_MODE_TEXT) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [200] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_COMPRESSION_TEXT='> name: SYNC_COMPRESSION_TEXT ) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [206] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_CRONDAILY_TEXT='> name: SYNC_CRONDAILY_TEXT ) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [212] ) ] redirects: [] ) (command.ShFunction name: Menu_Main body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYNC_MODE_TEXT='> name:SYNC_MODE_TEXT) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [230] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SYNC_DELETE_MODE)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_MODE_TEXT='> name: SYNC_MODE_TEXT ) op: assign_op.Equal rhs: {(SQ <Enabled>)} spids: [254] ) ] redirects: [] ) ] spids: [236 250] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_COMPRESSION_TEXT='> name: SYNC_COMPRESSION_TEXT ) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [265] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SYNC_COMPRESSION)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_COMPRESSION_TEXT='> name: SYNC_COMPRESSION_TEXT ) op: assign_op.Equal rhs: {(SQ <Enabled>)} spids: [289] ) ] redirects: [] ) ] spids: [271 285] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_CRONDAILY_TEXT='> name: SYNC_CRONDAILY_TEXT ) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [300] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SYNC_CRONDAILY)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_CRONDAILY_TEXT='> name: SYNC_CRONDAILY_TEXT ) op: assign_op.Equal rhs: {(SQ <Enabled>)} spids: [324] ) ] redirects: [] ) ] spids: [306 320] ) ] else_action: [] redirects: [] ) (C {<local>} {<Id.Lit_VarLike 'sync_last_completed='> (SQ <'No previous sync found in target directory.'>) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} { (DQ ($ Id.VSub_DollarName FP_TARGET) <'/'> ($ Id.VSub_DollarName SYNC_STATS_FILENAME) ) } {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'sync_last_completed='> name: sync_last_completed ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<grep>} {(SQ <'^Sync completed'>)} { (DQ ($ Id.VSub_DollarName FP_TARGET) <'/'> ($ Id.VSub_DollarName SYNC_STATS_FILENAME) ) } ) (C {<tail>} {<-1>}) (C {<awk>} {(SQ <'{print $3}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } spids: [362] ) ] redirects: [] ) ] spids: [343 358] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <DietPi-Sync>)} spids: [397] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--menu>} { (DQ <'Source location:'> <Id.Lit_BadBackslash '\\'> <'n '> ($ Id.VSub_DollarName FP_SOURCE) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nTarget location:'> <Id.Lit_BadBackslash '\\'> <'n '> ($ Id.VSub_DollarName FP_TARGET) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nMost recent successful sync date:'> <Id.Lit_BadBackslash '\\'> <'n '> ($ Id.VSub_DollarName sync_last_completed) ) } {<--cancel-button>} {(DQ <Exit>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<23>} {<73>} {<8>} {(DQ <Help>)} {(DQ <'What does DietPi-Sync do?'>)} {(DQ <'Source Location'>)} {(DQ <'Change the Source directory.'>)} {(DQ <'Target Location'>)} {(DQ <'Change the Target directory.'>)} {(DQ <'Delete Mode'>)} {(DQ ($ Id.VSub_DollarName SYNC_MODE_TEXT))} {(DQ <Compression>)} {(DQ ($ Id.VSub_DollarName SYNC_COMPRESSION_TEXT))} {(DQ <'Sync: Daily'>)} {(DQ ($ Id.VSub_DollarName SYNC_CRONDAILY_TEXT))} {(DQ <'Sync: Dry Run'>)} {(DQ <'Run a test Sync without modifying any data.'>)} {(DQ <'Sync: Now'>)} {(DQ <'Sync the Source location to the Target location.'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [403] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [546] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName OPTION))} arms: [ (case_arm pat_list: [{(DQ <'Source Location'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<2>} spids: [584] ) ] redirects: [] ) ] spids: [577 580 589 -1] ) (case_arm pat_list: [{(DQ <'Target Location'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<1>} spids: [600] ) ] redirects: [] ) ] spids: [593 596 605 -1] ) (case_arm pat_list: [{<Help>}] action: [ (C {<whiptail>} {<--title>} {(DQ <'DietPi-Sync Help'>)} {<--msgbox>} { (DQ < 'DietPi-Sync is a program that allows you to duplicate a directory from one location (Source) to another (Target).' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'nFor example: If we want to duplicate (sync) the data on our external USB HDD to another location, we simply select the USB HDD as the source, then, select a target location. The target location can be anything from a networked samba fileserver, or even a FTP server.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'nIf you would like to test a sync without modifiying any data, simply select Dry Run.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nMore information:'> <Id.Lit_BadBackslash '\\'> <'n - http://dietpi.com/phpbb/viewtopic.php?f=8&t=5&p=256#p256'> ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<19>} {<75>} ) ] spids: [609 610 654 -1] ) (case_arm pat_list: [{(DQ <'Delete Mode'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<3>} spids: [665] ) ] redirects: [] ) ] spids: [658 661 670 -1] ) (case_arm pat_list: [{<Compression>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<4>} spids: [679] ) ] redirects: [] ) ] spids: [674 675 684 -1] ) (case_arm pat_list: [{(DQ <'Sync: Daily'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<5>} spids: [695] ) ] redirects: [] ) ] spids: [688 691 700 -1] ) (case_arm pat_list: [{(DQ <'Sync: Dry Run'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WHIP_TITLE='> name: WHIP_TITLE ) op: assign_op.Equal rhs: {(SQ <' Test Dry Run Sync? '>)} spids: [711] ) ] redirects: [] ) (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--yesno>} { (DQ <'Source location:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName FP_SOURCE) <'/*'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nTarget location:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName FP_TARGET) <'/*'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nThis is a Dry Run for testing. No data will be modified.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nDo you wish to continue?'> ) } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<16>} {<72>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [776] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_DRY_RUN='> name: SYNC_DRY_RUN ) op: assign_op.Equal rhs: {<1>} spids: [798] ) ] redirects: [] ) (C {<Run_Sync>}) ] spids: [780 794] ) ] else_action: [] redirects: [] ) ] spids: [704 707 810 -1] ) (case_arm pat_list: [{(DQ <'Sync: Now'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'WHIP_TITLE='> name: WHIP_TITLE ) op: assign_op.Equal rhs: {(SQ <' Start Sync? '>)} spids: [821] ) ] redirects: [] ) (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--yesno>} { (DQ <'Source location:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName FP_SOURCE) <'/*'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nTarget location:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName FP_TARGET) <'/*'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> < 'nA copy of all the files and folders inside your Source location, will be created at the Target location.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nDo you wish to continue?'> ) } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<16>} {<72>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [886] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_DRY_RUN='> name: SYNC_DRY_RUN ) op: assign_op.Equal rhs: {<0>} spids: [908] ) ] redirects: [] ) (C {<Run_Sync>}) ] spids: [890 904] ) ] else_action: [] redirects: [] ) ] spids: [814 817 920 -1] ) ] redirects: [] ) ] spids: [550 564] ) ] else_action: [(C {<Menu_Exit>})] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Exit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <' Exit DietPi-Sync? '>)} spids: [951] ) ] redirects: [] ) (C {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--yesno>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<10>} {<50>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [996] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'TARGETMENUID='> name: TARGETMENUID ) op: assign_op.Equal rhs: {<-1>} spids: [1023] ) ] redirects: [] ) ] spids: [1005 1019] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Set_Directories body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'current_directory='> (DQ ($ Id.VSub_DollarName FP_TARGET))}) (C {<local>} {<Id.Lit_VarLike 'current_mode_text='> (DQ <Target>)}) (C {<local>} {<Id.Lit_VarLike 'whip_description_text='> (DQ <'Please select the '> ($ Id.VSub_DollarName current_mode_text) <' location.'> <Id.Lit_BadBackslash '\\'> <'nA copy of all the files and folders in the Source location will be created here.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nCurrent Target location:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName FP_TARGET) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'Select your Sync Target location'>)} spids: [1091] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'current_directory='> name: current_directory ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName FP_SOURCE))} spids: [1115] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'current_mode_text='> name: current_mode_text ) op: assign_op.Equal rhs: {(DQ <Source>)} spids: [1121] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'whip_description_text='> name: whip_description_text ) op: assign_op.Equal rhs: { (DQ <'Please select the '> ($ Id.VSub_DollarName current_mode_text) <' location.'> <Id.Lit_BadBackslash '\\'> < 'nA copy of all the files and folder in this Source location, will be created at the Target location.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nCurrent Source location:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName FP_SOURCE) ) } spids: [1127] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'Select your Sync Source location'>)} spids: [1144] ) ] redirects: [] ) ] spids: [1097 1111] ) ] else_action: [] redirects: [] ) (C {<Check_Available_DietPi_Mounts>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--menu>} {(DQ ($ Id.VSub_DollarName whip_description_text))} {<--cancel-button>} {(DQ <Back>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<17>} {<75>} {<4>} {(DQ <Manual>)} { (DQ <'Manually type your '> ($ Id.VSub_DollarName current_mode_text) <' directory.'> ) } {(DQ <List>)} {(DQ <'Select from a list of available mounts/drives'>)} {(DQ <'Samba Client'>)} {(DQ ($ Id.VSub_DollarName SAMBA_MOUNT_TEXT))} {(DQ <'FTP Client'>)} {(DQ ($ Id.VSub_DollarName FTP_MOUNT_TEXT))} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [1159] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1246] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName OPTION))} arms: [ (case_arm pat_list: [{<List>}] action: [ (C {<'/DietPi/dietpi/dietpi-drive_manager'>} {<1>}) (C {<local>} {<Id.Lit_VarLike 'return_value='> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<cat>} {<'/tmp/dietpi-drive_manager_selmnt'>}) right: <Id.Eof_RParen _> ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName return_value))} {<Id.Lit_Equals '='>} {(DQ <'/'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'return_value='> name: return_value ) op: assign_op.Equal rhs: {(SQ <'/mnt'>)} spids: [1321] ) ] redirects: [] ) ] spids: [1300 1317] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_SOURCE='> name: FP_SOURCE ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName return_value))} spids: [1350] ) ] redirects: [] ) ] spids: [1332 1346] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_TARGET='> name: FP_TARGET ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName return_value) <'/dietpi-sync'>)} spids: [1361] ) ] redirects: [] ) ] redirects: [] ) ] spids: [1279 1280 1373 -1] ) (case_arm pat_list: [{<Manual>}] action: [(C {<Input_User_Directory>})] spids: [1377 1378 1384 -1] ) (case_arm pat_list: [{(DQ <'Samba Client'>)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SAMBA_MOUNT_AVAILABLE)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_SOURCE='> name: FP_SOURCE ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName FP_SAMBA_MOUNT))} spids: [1429] ) ] redirects: [] ) ] spids: [1411 1425] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_TARGET='> name: FP_TARGET ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName FP_SAMBA_MOUNT) <'/dietpi-sync'> ) } spids: [1440] ) ] redirects: [] ) ] redirects: [] ) ] spids: [1393 1407] ) ] else_action: [ (C {<Prompt_Setup_Samba_Mount>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_SOURCE='> name: FP_SOURCE ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName current_directory))} spids: [1477] ) ] redirects: [] ) ] spids: [1459 1473] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_TARGET='> name: FP_TARGET ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName current_directory))} spids: [1488] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] ) ] spids: [1387 1390 1503 -1] ) (case_arm pat_list: [{(DQ <'FTP Client'>)}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName FTP_MOUNT_AVAILABLE)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_SOURCE='> name: FP_SOURCE ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName FP_FTP_MOUNT))} spids: [1549] ) ] redirects: [] ) ] spids: [1531 1545] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_TARGET='> name: FP_TARGET ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName FP_FTP_MOUNT) <'/dietpi-sync'> ) } spids: [1560] ) ] redirects: [] ) ] redirects: [] ) ] spids: [1513 1527] ) ] else_action: [ (C {<Prompt_Setup_FTP_Mount>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_SOURCE='> name: FP_SOURCE ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName current_directory))} spids: [1597] ) ] redirects: [] ) ] spids: [1579 1593] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_TARGET='> name: FP_TARGET ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName current_directory))} spids: [1608] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] ) ] spids: [1507 1510 1623 -1] ) ] redirects: [] ) ] spids: [1251 1265] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [1639] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Set_Sync_Delete_Mode body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <' Sync Delete Mode '>)} spids: [1663] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--menu>} { (DQ <'Please select the Sync delete mode.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nDisabled: (safe)'> <Id.Lit_BadBackslash '\\'> < 'nIf files and folders exist in the Target location, that are not in the Source, they will be left alone.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nEnabled: (WARNING, if in doubt, DO NOT enable)'> <Id.Lit_BadBackslash '\\'> < 'nAn exact copy of the Source location will be created at the Target location. If files are in the Target location that dont exist in the Source, they will be DELETED.' > ) } {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName SYNC_MODE_TEXT))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<19>} {<75>} {<2>} {(DQ <Disabled>)} {(DQ <'Ignores data that exists at Target Location and not Source.'>)} {(DQ <Enabled>)} {(DQ <'Deletes data at Target location if not in Source Location.'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [1669] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1752] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName OPTION))} arms: [ (case_arm pat_list: [{<Disabled>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_DELETE_MODE='> name: SYNC_DELETE_MODE ) op: assign_op.Equal rhs: {<0>} spids: [1790] ) ] redirects: [] ) ] spids: [1785 1786 1795 -1] ) (case_arm pat_list: [{<Enabled>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_DELETE_MODE='> name: SYNC_DELETE_MODE ) op: assign_op.Equal rhs: {<1>} spids: [1804] ) ] redirects: [] ) ] spids: [1799 1800 1809 -1] ) ] redirects: [] ) ] spids: [1757 1771] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [1825] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Set_Compression body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <' Sync Compression Mode '>)} spids: [1845] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--menu>} { (DQ <'Please select the compression mode.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nDisabled:'> <Id.Lit_BadBackslash '\\'> <'nNo compression will be used during data transfer.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nEnabled:'> <Id.Lit_BadBackslash '\\'> < 'nData will be compressed when its being transfered. Useful for slow connections, however, its CPU intensive.' > ) } {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName SYNC_COMPRESSION_TEXT))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<17>} {<75>} {<2>} {(DQ <Disabled>)} {(DQ <'Transfer data in its original state.'>)} {(DQ <Enabled>)} {(DQ <'Compress the data during transfer.'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [1851] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [1934] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName OPTION))} arms: [ (case_arm pat_list: [{<Disabled>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_COMPRESSION='> name: SYNC_COMPRESSION ) op: assign_op.Equal rhs: {<0>} spids: [1972] ) ] redirects: [] ) ] spids: [1967 1968 1977 -1] ) (case_arm pat_list: [{<Enabled>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_COMPRESSION='> name: SYNC_COMPRESSION ) op: assign_op.Equal rhs: {<1>} spids: [1986] ) ] redirects: [] ) ] spids: [1981 1982 1991 -1] ) ] redirects: [] ) ] spids: [1939 1953] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [2007] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Menu_Set_CronDaily body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'WHIP_TITLE='> name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <' Sync Cron Daily '>)} spids: [2027] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--title>} {(DQ ($ Id.VSub_DollarName WHIP_TITLE))} {<--menu>} { (DQ <'Disabled:'> <Id.Lit_BadBackslash '\\'> <'nThe user must manually sync using dietpi-sync.'> <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nEnabled:'> <Id.Lit_BadBackslash '\\'> < 'nA cron job will be created that automatically runs dietpi-sync, once a day.' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'n(NOTICE):'> <Id.Lit_BadBackslash '\\'> < 'nBefore enabling this feature, please run a test sync (Dry Run) to verify what will happen.' > ) } {<--cancel-button>} {(DQ <Back>)} {<--default-item>} {(DQ ($ Id.VSub_DollarName SYNC_CRONDAILY_TEXT))} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<19>} {<75>} {<2>} {(DQ <Disabled>)} {(DQ <'Manual sync.'>)} {(DQ <Enabled>)} {(DQ <'Automatically sync once a day.'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [2033] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [2118] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName OPTION))} arms: [ (case_arm pat_list: [{<Disabled>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_CRONDAILY='> name: SYNC_CRONDAILY ) op: assign_op.Equal rhs: {<0>} spids: [2156] ) ] redirects: [] ) ] spids: [2151 2152 2161 -1] ) (case_arm pat_list: [{<Enabled>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_CRONDAILY='> name: SYNC_CRONDAILY ) op: assign_op.Equal rhs: {<1>} spids: [2170] ) ] redirects: [] ) ] spids: [2165 2166 2175 -1] ) ] redirects: [] ) ] spids: [2123 2137] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [2191] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Input_User_Directory body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--inputbox>} { (DQ <'Please enter the filepath to your Target directory. '> <Id.Lit_BadBackslash '\\'> <'neg: /mnt/target'> ) } {<8>} {<70>} {(DQ ($ Id.VSub_DollarName FP_TARGET))} {<--title>} {(DQ <'Manual sync directory'>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [2238] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [2281] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_TARGET='> name: FP_TARGET ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName OPTION))} spids: [2303] ) ] redirects: [] ) ] spids: [2285 2299] ) ] else_action: [] redirects: [] ) ] spids: [2220 2234] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTION='> name:OPTION) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Simple words: [ {<whiptail>} {<--inputbox>} { (DQ <'Please enter the filepath to your Source directory. '> <Id.Lit_BadBackslash '\\'> <'neg: /mnt/source'> ) } {<8>} {<70>} {(DQ ($ Id.VSub_DollarName FP_SOURCE))} {<--title>} {(DQ <'Manual sync directory'>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} ] redirects: [ (redir op: <Id.Redir_GreatAnd '3>&'> loc: (redir_loc.Fd fd:3) arg: {<1>} ) (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<3>} ) ] more_env: [] do_fork: T ) right: <Id.Eof_RParen _> ) } spids: [2336] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [2379] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_SOURCE='> name: FP_SOURCE ) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName OPTION))} spids: [2401] ) ] redirects: [] ) ] spids: [2383 2397] ) ] else_action: [] redirects: [] ) ] spids: [2318 2332] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Prompt_Setup_Samba_Mount body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<whiptail>} {<--title>} {(DQ <'Not available. Setup Now?'>)} {<--yesno>} { (DQ ($ Id.VSub_DollarName SAMBA_MOUNT_TEXT) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nWould you like to run DietPi-Config and setup your Samba Client Mount now?'> ) } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<11>} {<70>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [2470] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-config'>} {<16>} {<1>})] spids: [2474 2488] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Prompt_Setup_FTP_Mount body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<whiptail>} {<--title>} {(DQ <'Not available. Setup Now?'>)} {<--yesno>} { (DQ ($ Id.VSub_DollarName FTP_MOUNT_TEXT) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nWould you like to run DietPi-Config and setup your FTP Client Mount now?'> ) } {<--yes-button>} {(DQ <Ok>)} {<--no-button>} {(DQ <Back>)} {<--defaultno>} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<11>} {<70>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'CHOICE='> name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '?')} spids: [2562] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName CHOICE)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-config'>} {<16>} {<1>})] spids: [2566 2580] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'LOGFILE='> name:LOGFILE) op: assign_op.Equal rhs: {(SQ <'/var/log/dietpi-sync.log'>)} spids: [2620] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_SOURCE='> name:FP_SOURCE) op: assign_op.Equal rhs: {(SQ <'/mnt/Source'>)} spids: [2631] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_TARGET='> name:FP_TARGET) op: assign_op.Equal rhs: {(SQ <'/mnt/Target'>)} spids: [2637] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_FTP_MOUNT='> name:FP_FTP_MOUNT) op: assign_op.Equal rhs: {(SQ <'/mnt/ftp_client'>)} spids: [2648] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_SAMBA_MOUNT='> name:FP_SAMBA_MOUNT) op: assign_op.Equal rhs: {(SQ <'/mnt/samba'>)} spids: [2654] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_STATS_FILENAME='> name: SYNC_STATS_FILENAME ) op: assign_op.Equal rhs: {(SQ <.dietpi-sync_stats>)} spids: [2665] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_EXCLUDE_GLOBAL='> name:FP_EXCLUDE_GLOBAL) op: assign_op.Equal rhs: {(SQ <'/tmp/.dietpi-sync_exclude'>)} spids: [2676] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_INCLUDE_GLOBAL='> name:FP_INCLUDE_GLOBAL) op: assign_op.Equal rhs: {(SQ <'/tmp/.dietpi-sync_include'>)} spids: [2682] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_EXCLUDE_USER='> name:FP_EXCLUDE_USER) op: assign_op.Equal rhs: {(SQ <'/DietPi/dietpi/.dietpi-sync_exclude'>)} spids: [2688] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FP_INCLUDE_USER='> name:FP_INCLUDE_USER) op: assign_op.Equal rhs: {(SQ <'/DietPi/dietpi/.dietpi-sync_include'>)} spids: [2694] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYNC_DELETE_MODE='> name:SYNC_DELETE_MODE) op: assign_op.Equal rhs: {<0>} spids: [2705] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYNC_COMPRESSION='> name:SYNC_COMPRESSION) op: assign_op.Equal rhs: {<0>} spids: [2709] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'SYNC_CRONDAILY='> name:SYNC_CRONDAILY) op: assign_op.Equal rhs: {<0>} spids: [2713] ) ] redirects: [] ) (command.ShFunction name: Create_Exclude_File body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<rm>} {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName FP_TARGET))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'/boot/dietpi/*'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'/DietPi/*'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'/dev/*'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'/proc/*'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'/sys/*'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'/tmp/*'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'/run/*'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName LOGFILE))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_USER))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName FP_INCLUDE_USER))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName SYNC_STATS_FILENAME))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'/var/swap'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'*.tmp'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <Thumbs.db>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <desktop.ini>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'SyncToy*'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ <'System Volume Information'>)}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_USER))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<cat>} {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_USER))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) ] spids: [3051 3064] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Create_Include_File body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<rm>} {(DQ ($ Id.VSub_DollarName FP_INCLUDE_GLOBAL))}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ )}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_INCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName FP_INCLUDE_USER))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<cat>} {(DQ ($ Id.VSub_DollarName FP_INCLUDE_USER))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_INCLUDE_GLOBAL))} ) ] more_env: [] do_fork: T ) ] spids: [3141 3154] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Services_Stop body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [(C {<'/DietPi/dietpi/dietpi-services'>} {<stop>})] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Services_Start body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [(C {<'/DietPi/dietpi/dietpi-services'>} {<start>})] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Banner_Start body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'mode='> (SQ <Sync>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SYNC_DRY_RUN)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'mode='> name:mode) op: assign_op.Equal rhs: {(SQ <'Dry Run'>)} spids: [3247] ) ] redirects: [] ) ] spids: [3229 3243] ) ] else_action: [] redirects: [] ) (C {<G_DIETPI-NOTIFY>} {<3>} {<DietPi-Sync>} {(DQ ($ Id.VSub_DollarName mode))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Run_Sync body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<Banner_Start>}) (C {<mkdir>} {<-p>} {(DQ ($ Id.VSub_DollarName FP_TARGET))}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ ($ Id.VSub_DollarName FP_TARGET))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName G_USER_INPUTS)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Sync failed.'>)} {<--msgbox>} { (DQ <'Unable to create Target directory '> ($ Id.VSub_DollarName FP_TARGET) ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<10>} {<60>} ) ] spids: [3323 3333] ) ] else_action: [] redirects: [] ) ] spids: [3304 3319] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<ps>} {<aux>}) (C {<grep>} {<-ci>} {<-m1>} {(DQ <'[r]sync'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {<-e>} { (DQ <'Sync failed: '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%d-%m-%Y_%H%M'>)}) right: <Id.Eof_RParen _> ) <'. Rsync is already running.'> ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: { (DQ ($ Id.VSub_DollarName FP_TARGET) <'/'> ($ Id.VSub_DollarName SYNC_STATS_FILENAME) ) } ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName G_USER_INPUTS)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Sync Error'>)} {<--msgbox>} {(DQ <'A sync job could not be started as rsync is already running.'>)} {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<13>} {<60>} ) ] spids: [3437 3447] ) ] else_action: [] redirects: [] ) ] spids: [3372 3402] ) ] else_action: [ (C {<Create_Exclude_File>}) (C {<Create_Include_File>}) (C {<local>} {<Id.Lit_VarLike 'rync_options='> (DQ <-a>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rync_options+='> name: rync_options ) op: assign_op.PlusEqual rhs: {(DQ <v>)} spids: [3516] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rync_options+='> name: rync_options ) op: assign_op.PlusEqual rhs: {(DQ <P>)} spids: [3526] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rync_options+='> name: rync_options ) op: assign_op.PlusEqual rhs: {(DQ <4>)} spids: [3536] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SYNC_COMPRESSION)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rync_options+='> name: rync_options ) op: assign_op.PlusEqual rhs: {(DQ <z>)} spids: [3565] ) ] redirects: [] ) ] spids: [3547 3561] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SYNC_DRY_RUN)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rync_options+='> name: rync_options ) op: assign_op.PlusEqual rhs: {(DQ <n>)} spids: [3598] ) ] redirects: [] ) ] spids: [3580 3594] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SYNC_DELETE_MODE)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'rync_options+='> name: rync_options ) op: assign_op.PlusEqual rhs: {(DQ <' --delete'>)} spids: [3631] ) ] redirects: [] ) ] spids: [3613 3627] ) ] else_action: [] redirects: [] ) (command.Simple words: [ {<echo>} {<-e>} { (DQ <'DietPi-Sync Log File.'> <Id.Lit_BadBackslash '\\'> <n> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <d-> <Id.Lit_Other '%'> <m-> <Id.Lit_Other '%'> <Y_> <Id.Lit_Other '%'> <H> <Id.Lit_Other '%'> <M> } ) right: <Id.Eof_RParen _> ) <Id.Lit_BadBackslash '\\'> <'nSYNC_DRY_RUN='> ($ Id.VSub_DollarName SYNC_DRY_RUN) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName LOGFILE))} ) ] more_env: [] do_fork: T ) (C {<rsync>} {($ Id.VSub_DollarName rync_options)} {<--log-file> <Id.Lit_Equals '='> ($ Id.VSub_DollarName LOGFILE)} {<--exclude-from> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))} {<--include-from> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName FP_INCLUDE_GLOBAL))} {(DQ ($ Id.VSub_DollarName FP_SOURCE)) <'/'>} {(DQ ($ Id.VSub_DollarName FP_TARGET)) <'/'>} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_QMark '?')} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {<-e>} { (DQ <'Sync completed: '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%d-%m-%Y_%H%M'>)}) right: <Id.Eof_RParen _> ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: { (DQ ($ Id.VSub_DollarName FP_TARGET) <'/'> ($ Id.VSub_DollarName SYNC_STATS_FILENAME) ) } ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName G_USER_INPUTS)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SYNC_DRY_RUN)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Sync completed'>)} {<--msgbox>} { (DQ ($ Id.VSub_DollarName FP_SOURCE) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nHas been synced to:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName FP_TARGET) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nLog file: '> ($ Id.VSub_DollarName LOGFILE) ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<13>} {<60>} ) ] spids: [3798 3812] ) ] else_action: [ (C {<whiptail>} {<--title>} {(DQ <'Dry Run Sync completed'>)} {<--msgbox>} { (DQ ($ Id.VSub_DollarName FP_SOURCE) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nHas been synced with a Dry Run (NO modifications) to:'> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName FP_TARGET) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <'nLog file: '> ($ Id.VSub_DollarName LOGFILE) ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<13>} {<60>} ) ] redirects: [] ) ] spids: [3784 3794] ) ] else_action: [] redirects: [] ) ] spids: [3736 3750] ) ] else_action: [ (command.Simple words: [ {<echo>} {<-e>} { (DQ <'Sync failed: '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> (DQ <'%d-%m-%Y_%H%M'>)}) right: <Id.Eof_RParen _> ) ) } ] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: { (DQ ($ Id.VSub_DollarName FP_TARGET) <'/'> ($ Id.VSub_DollarName SYNC_STATS_FILENAME) ) } ) ] more_env: [] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName G_USER_INPUTS)} redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName SYNC_DRY_RUN)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<whiptail>} {<--title>} {(DQ <'Sync failed'>)} {<--msgbox>} { (DQ < 'Your sync has failed. Please see the Log file for more information:' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName LOGFILE) ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<13>} {<60>} ) ] spids: [3956 3970] ) ] else_action: [ (C {<whiptail>} {<--title>} {(DQ <'Dry Run Sync failed'>)} {<--msgbox>} { (DQ < 'Your sync has failed. Please see the Log file for more information:' > <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n> ($ Id.VSub_DollarName LOGFILE) ) } {<--backtitle>} {(DQ ($ Id.VSub_DollarName WHIP_BACKTITLE))} {<13>} {<60>} ) ] redirects: [] ) ] spids: [3942 3952] ) ] else_action: [] redirects: [] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'TARGETMENUID='> name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [4055] ) ] redirects: [] ) ] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Check_Install_PreReqs body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [(C {<G_AG_CHECK_INSTALL_PREREQ>} {<rsync>})] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Check_Available_DietPi_Mounts body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (C {<local>} {<Id.Lit_VarLike 'temp_file_mounts='> (DQ <'/tmp/.dietpi-sync_dietpi_mounts'>)}) (command.Simple words: [{<df>} {<-h>}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName temp_file_mounts))} ) ] more_env: [] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SAMBA_MOUNT_AVAILABLE='> name: SAMBA_MOUNT_AVAILABLE ) op: assign_op.Equal rhs: {<0>} spids: [4116] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SAMBA_MOUNT_TEXT='> name: SAMBA_MOUNT_TEXT ) op: assign_op.Equal rhs: { (DQ <'Not mounted ('> ($ Id.VSub_DollarName FP_SAMBA_MOUNT) <'). Select to setup.'> ) } spids: [4120] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName temp_file_mounts))}) (C {<grep>} {<-ci>} {<-m1>} {(DQ <'/mnt/samba'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SAMBA_MOUNT_AVAILABLE='> name: SAMBA_MOUNT_AVAILABLE ) op: assign_op.Equal rhs: {<1>} spids: [4164] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SAMBA_MOUNT_TEXT='> name: SAMBA_MOUNT_TEXT ) op: assign_op.Equal rhs: { (DQ <'Size: '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-h>}) (C {<grep>} {<'/mnt/samba'>}) (C {<awk>} {(SQ <'{print $2}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <'B | Available: '> (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<df>} {<-h>}) (C {<grep>} {<'/mnt/samba'>}) (C {<awk>} {(SQ <'{print $4}'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) <B> ) } spids: [4168] ) ] redirects: [] ) ] spids: [4128 4160] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FTP_MOUNT_AVAILABLE='> name: FTP_MOUNT_AVAILABLE ) op: assign_op.Equal rhs: {<0>} spids: [4223] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'FTP_MOUNT_TEXT='> name:FTP_MOUNT_TEXT) op: assign_op.Equal rhs: { (DQ <'Not mounted ('> ($ Id.VSub_DollarName FP_FTP_MOUNT) <'). Select to setup.'>) } spids: [4227] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {(DQ ($ Id.VSub_DollarName temp_file_mounts))}) (C {<grep>} {<-ci>} {<-m1>} {(DQ <'/mnt/ftp_client'>)}) ] negated: F stderr_indices: [] ) right: <Id.Eof_RParen _> ) } right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FTP_MOUNT_AVAILABLE='> name: FTP_MOUNT_AVAILABLE ) op: assign_op.Equal rhs: {<1>} spids: [4271] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FTP_MOUNT_TEXT='> name: FTP_MOUNT_TEXT ) op: assign_op.Equal rhs: {(DQ <'Mounted and online.'>)} spids: [4275] ) ] redirects: [] ) ] spids: [4235 4267] ) ] else_action: [] redirects: [] ) (C {<rm>} {(DQ ($ Id.VSub_DollarName temp_file_mounts))}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_DIETPISYNC_SETTINGS='> name: FP_DIETPISYNC_SETTINGS ) op: assign_op.Equal rhs: {(DQ <'/DietPi/dietpi/.dietpi-sync_settings'>)} spids: [4314] ) ] redirects: [] ) (command.ShFunction name: Write_Settings_File body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Simple words: [{<rm>} {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))}] redirects: [ (redir op: <Id.Redir_AndGreat '&>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName FP_SOURCE))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName FP_TARGET))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName SYNC_DELETE_MODE))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName SYNC_COMPRESSION))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} ) ] more_env: [] do_fork: T ) (command.Simple words: [{<echo>} {<-e>} {(DQ ($ Id.VSub_DollarName SYNC_CRONDAILY))}] redirects: [ (redir op: <Id.Redir_DGreat '>>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} ) ] more_env: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name: Read_Settings_File body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<local>} {<Id.Lit_VarLike 'sed_index='> <1>}) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_SOURCE='> name: FP_SOURCE ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName sed_index)) <p>} {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} ) right: <Id.Eof_RParen _> ) } spids: [4450] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike sed_index) ) redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'FP_TARGET='> name: FP_TARGET ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName sed_index)) <p>} {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} ) right: <Id.Eof_RParen _> ) } spids: [4473] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike sed_index) ) redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_DELETE_MODE='> name: SYNC_DELETE_MODE ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName sed_index)) <p>} {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} ) right: <Id.Eof_RParen _> ) } spids: [4496] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike sed_index) ) redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_COMPRESSION='> name: SYNC_COMPRESSION ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName sed_index)) <p>} {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} ) right: <Id.Eof_RParen _> ) } spids: [4519] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike sed_index) ) redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'SYNC_CRONDAILY='> name: SYNC_CRONDAILY ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-n>} {(DQ ($ Id.VSub_DollarName sed_index)) <p>} {(DQ ($ Id.VSub_DollarName FP_DIETPISYNC_SETTINGS))} ) right: <Id.Eof_RParen _> ) } spids: [4542] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike sed_index) ) redirects: [] ) ] spids: [4427 4440] ) ] else_action: [] redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (C {<Check_Install_PreReqs>}) (C {<Read_Settings_File>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName INPUT)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Run_Sync>})] spids: [4611 4625] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName INPUT)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: {($ Id.VSub_DollarName TARGETMENUID)} right: (arith_expr.Unary op_id: Id.Node_UnaryMinus child: {<Id.Lit_Digits 1>} ) ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (C {<clear>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 0>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Main>})] spids: [4682 4696] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DPipe] children: [ (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 1>} ) redirects: [] ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 2>} ) redirects: [] ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Set_Directories>})] spids: [4704 4732] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 3>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Set_Sync_Delete_Mode>})] spids: [4740 4754] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 4>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Set_Compression>})] spids: [4762 4776] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName TARGETMENUID)} right: {<Id.Lit_Digits 5>} ) redirects: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Set_CronDaily>})] spids: [4784 4798] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (C {<Write_Settings_File>}) ] spids: [4641 4655] ) ] else_action: [] redirects: [] ) (command.Simple words: [{<rm>} {(DQ ($ Id.VSub_DollarName FP_INCLUDE_GLOBAL))}] redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] more_env: [] do_fork: T ) (command.Simple words: [{<rm>} {(DQ ($ Id.VSub_DollarName FP_EXCLUDE_GLOBAL))}] redirects: [(redir op:<Id.Redir_AndGreat '&>'> loc:(redir_loc.Fd fd:1) arg:{<'/dev/null'>})] more_env: [] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] redirects: [] right: <Id.Lit_RBrace '}'> )