(BraceGroup children: [ (command.ShAssignment pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:INPUT) op:assign_op.Equal rhs:{<0>} spids:[75])] ) (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 '$'> } ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:INPUT) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [102] ) ] ) ] spids: [79 99] ) ] ) (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 name:WHIP_BACKTITLE) op: assign_op.Equal rhs: {(SQ <DietPi-Sync>)} spids: [150] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ )} spids: [156] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {<0>} spids: [161] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:OPTION) op: assign_op.Equal rhs: {<0>} spids: [165] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [169] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTP_MOUNT_AVAILABLE) op: assign_op.Equal rhs: {<0>} spids: [174] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTP_MOUNT_TEXT) op: assign_op.Equal rhs: {(SQ <'Not available'>)} spids: [178] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_AVAILABLE) op: assign_op.Equal rhs: {<0>} spids: [184] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_TEXT) op: assign_op.Equal rhs: {(SQ <'Not available'>)} spids: [188] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_DRY_RUN) op: assign_op.Equal rhs: {<0>} spids: [195] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_MODE_TEXT) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [200] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION_TEXT) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [206] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY_TEXT) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [212] ) ] ) (command.ShFunction name: Menu_Main body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_MODE_TEXT) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [230] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_MODE_TEXT) op: assign_op.Equal rhs: {(SQ <Enabled>)} spids: [254] ) ] ) ] spids: [236 250] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION_TEXT) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [265] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION_TEXT) op: assign_op.Equal rhs: {(SQ <Enabled>)} spids: [289] ) ] ) ] spids: [271 285] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY_TEXT) op: assign_op.Equal rhs: {(SQ <Disabled>)} spids: [300] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY_TEXT) op: assign_op.Equal rhs: {(SQ <Enabled>)} spids: [324] ) ] ) ] spids: [306 320] ) ] ) (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 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 ) ) } spids: [362] ) ] ) ] spids: [343 358] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <DietPi-Sync>)} spids: [397] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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>} ) ] do_fork: T ) ) } spids: [403] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [546] ) ] ) (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>} ) ) 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 name:TARGETMENUID) op: assign_op.Equal rhs: {<2>} spids: [584] ) ] ) ] spids: [577 580 589 -1] ) (case_arm pat_list: [{(DQ <'Target Location'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<1>} spids: [600] ) ] ) ] 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 name:TARGETMENUID) op: assign_op.Equal rhs: {<3>} spids: [665] ) ] ) ] spids: [658 661 670 -1] ) (case_arm pat_list: [{<Compression>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<4>} spids: [679] ) ] ) ] spids: [674 675 684 -1] ) (case_arm pat_list: [{(DQ <'Sync: Daily'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<5>} spids: [695] ) ] ) ] spids: [688 691 700 -1] ) (case_arm pat_list: [{(DQ <'Sync: Dry Run'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <' Test Dry Run Sync? '>)} spids: [711] ) ] ) (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 name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [776] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_DRY_RUN) op: assign_op.Equal rhs: {<1>} spids: [798] ) ] ) (C {<Run_Sync>}) ] spids: [780 794] ) ] ) ] spids: [704 707 810 -1] ) (case_arm pat_list: [{(DQ <'Sync: Now'>)}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <' Start Sync? '>)} spids: [821] ) ] ) (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 name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [886] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_DRY_RUN) op: assign_op.Equal rhs: {<0>} spids: [908] ) ] ) (C {<Run_Sync>}) ] spids: [890 904] ) ] ) ] spids: [814 817 920 -1] ) ] ) ] spids: [550 564] ) ] else_action: [(C {<Menu_Exit>})] ) ] ) ) (command.ShFunction name: Menu_Exit body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <' Exit DietPi-Sync? '>)} spids: [951] ) ] ) (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 name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [996] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<-1>} spids: [1023] ) ] ) ] spids: [1005 1019] ) ] ) ] ) ) (command.ShFunction name: Menu_Set_Directories body: (BraceGroup 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 name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'Select your Sync Target location'>)} spids: [1091] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:current_directory) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$FP_SOURCE'))} spids: [1115] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:current_mode_text) op: assign_op.Equal rhs: {(DQ <Source>)} spids: [1121] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <'Select your Sync Source location'>)} spids: [1144] ) ] ) ] spids: [1097 1111] ) ] ) (C {<Check_Available_DietPi_Mounts>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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>} ) ] do_fork: T ) ) } spids: [1159] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [1246] ) ] ) (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>} ) ) 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'>}) ) } ) (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 name:return_value) op: assign_op.Equal rhs: {(SQ <'/mnt'>)} spids: [1321] ) ] ) ] spids: [1300 1317] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_SOURCE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$return_value'))} spids: [1350] ) ] ) ] spids: [1332 1346] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TARGET) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$return_value') <'/dietpi-sync'>)} spids: [1361] ) ] ) ] ) ] 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>} ) ) 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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_SOURCE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$FP_SAMBA_MOUNT'))} spids: [1429] ) ] ) ] spids: [1411 1425] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TARGET) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$FP_SAMBA_MOUNT') <'/dietpi-sync'> ) } spids: [1440] ) ] ) ] ) ] 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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_SOURCE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))} spids: [1477] ) ] ) ] spids: [1459 1473] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TARGET) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))} spids: [1488] ) ] ) ] ) ] ) ] 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>} ) ) 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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_SOURCE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$FP_FTP_MOUNT'))} spids: [1549] ) ] ) ] spids: [1531 1545] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TARGET) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$FP_FTP_MOUNT') <'/dietpi-sync'> ) } spids: [1560] ) ] ) ] ) ] 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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_SOURCE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))} spids: [1597] ) ] ) ] spids: [1579 1593] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TARGET) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$current_directory'))} spids: [1608] ) ] ) ] ) ] ) ] spids: [1507 1510 1623 -1] ) ] ) ] spids: [1251 1265] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [1639] ) ] ) ] ) ] ) ) (command.ShFunction name: Menu_Set_Sync_Delete_Mode body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <' Sync Delete Mode '>)} spids: [1663] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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>} ) ] do_fork: T ) ) } spids: [1669] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [1752] ) ] ) (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>} ) ) 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 name:SYNC_DELETE_MODE) op: assign_op.Equal rhs: {<0>} spids: [1790] ) ] ) ] spids: [1785 1786 1795 -1] ) (case_arm pat_list: [{<Enabled>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_DELETE_MODE) op: assign_op.Equal rhs: {<1>} spids: [1804] ) ] ) ] spids: [1799 1800 1809 -1] ) ] ) ] spids: [1757 1771] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [1825] ) ] ) ] ) ) (command.ShFunction name: Menu_Set_Compression body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <' Sync Compression Mode '>)} spids: [1845] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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>} ) ] do_fork: T ) ) } spids: [1851] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [1934] ) ] ) (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>} ) ) 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 name:SYNC_COMPRESSION) op: assign_op.Equal rhs: {<0>} spids: [1972] ) ] ) ] spids: [1967 1968 1977 -1] ) (case_arm pat_list: [{<Enabled>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION) op: assign_op.Equal rhs: {<1>} spids: [1986] ) ] ) ] spids: [1981 1982 1991 -1] ) ] ) ] spids: [1939 1953] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [2007] ) ] ) ] ) ) (command.ShFunction name: Menu_Set_CronDaily body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:WHIP_TITLE) op: assign_op.Equal rhs: {(SQ <' Sync Cron Daily '>)} spids: [2027] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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>} ) ] do_fork: T ) ) } spids: [2033] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [2118] ) ] ) (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>} ) ) 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 name:SYNC_CRONDAILY) op: assign_op.Equal rhs: {<0>} spids: [2156] ) ] ) ] spids: [2151 2152 2161 -1] ) (case_arm pat_list: [{<Enabled>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY) op: assign_op.Equal rhs: {<1>} spids: [2170] ) ] ) ] spids: [2165 2166 2175 -1] ) ] ) ] spids: [2123 2137] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [2191] ) ] ) ] ) ) (command.ShFunction name: Input_User_Directory body: (BraceGroup 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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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>} ) ] do_fork: T ) ) } spids: [2238] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [2281] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TARGET) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$OPTION'))} spids: [2303] ) ] ) ] spids: [2285 2299] ) ] ) ] 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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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>} ) ] do_fork: T ) ) } spids: [2336] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [2379] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_SOURCE) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$OPTION'))} spids: [2401] ) ] ) ] spids: [2383 2397] ) ] ) ] spids: [2318 2332] ) ] ) ] ) ) (command.ShFunction name: Prompt_Setup_Samba_Mount body: (BraceGroup 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 name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [2470] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-config'>} {<16>} {<1>})] spids: [2474 2488] ) ] ) ] ) ) (command.ShFunction name: Prompt_Setup_FTP_Mount body: (BraceGroup 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 name:CHOICE) op: assign_op.Equal rhs: {($ Id.VSub_QMark '$?')} spids: [2562] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<'/DietPi/dietpi/dietpi-config'>} {<16>} {<1>})] spids: [2566 2580] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LOGFILE) op: assign_op.Equal rhs: {(SQ <'/var/log/dietpi-sync.log'>)} spids: [2620] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_SOURCE) op: assign_op.Equal rhs: {(SQ <'/mnt/Source'>)} spids: [2631] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_TARGET) op: assign_op.Equal rhs: {(SQ <'/mnt/Target'>)} spids: [2637] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_FTP_MOUNT) op: assign_op.Equal rhs: {(SQ <'/mnt/ftp_client'>)} spids: [2648] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_SAMBA_MOUNT) op: assign_op.Equal rhs: {(SQ <'/mnt/samba'>)} spids: [2654] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_STATS_FILENAME) op: assign_op.Equal rhs: {(SQ <.dietpi-sync_stats>)} spids: [2665] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_EXCLUDE_GLOBAL) op: assign_op.Equal rhs: {(SQ <'/tmp/.dietpi-sync_exclude'>)} spids: [2676] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_INCLUDE_GLOBAL) op: assign_op.Equal rhs: {(SQ <'/tmp/.dietpi-sync_include'>)} spids: [2682] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_EXCLUDE_USER) op: assign_op.Equal rhs: {(SQ <'/DietPi/dietpi/.dietpi-sync_exclude'>)} spids: [2688] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_INCLUDE_USER) op: assign_op.Equal rhs: {(SQ <'/DietPi/dietpi/.dietpi-sync_include'>)} spids: [2694] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_DELETE_MODE) op: assign_op.Equal rhs: {<0>} spids: [2705] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_COMPRESSION) op: assign_op.Equal rhs: {<0>} spids: [2709] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYNC_CRONDAILY) op: assign_op.Equal rhs: {<0>} spids: [2713] ) ] ) (command.ShFunction name: Create_Exclude_File body: (BraceGroup 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'>} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] do_fork: T ) ] spids: [3051 3064] ) ] ) ] ) ) (command.ShFunction name: Create_Include_File body: (BraceGroup 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'>} ) ] 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'))} ) ] 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'))} ) ] do_fork: T ) ] spids: [3141 3154] ) ] ) ] ) ) (command.ShFunction name: Services_Stop body: (BraceGroup children:[(C {<'/DietPi/dietpi/dietpi-services'>} {<stop>})]) ) (command.ShFunction name: Services_Start body: (BraceGroup children:[(C {<'/DietPi/dietpi/dietpi-services'>} {<start>})]) ) (command.ShFunction name: Banner_Start body: (BraceGroup 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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:mode) op: assign_op.Equal rhs: {(SQ <'Dry Run'>)} spids: [3247] ) ] ) ] spids: [3229 3243] ) ] ) (C {<G_DIETPI-NOTIFY>} {<3>} {<DietPi-Sync>} {(DQ ($ Id.VSub_DollarName '$mode'))}) ] ) ) (command.ShFunction name: Run_Sync body: (BraceGroup 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')} ) 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] ) ] ) ] 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 ) ) } right: {<Id.Lit_Digits 1>} ) ) 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'>)}) ) <'. 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') ) } ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName '$G_USER_INPUTS')} ) 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] ) ] ) ] 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 name:rync_options) op: assign_op.PlusEqual rhs: {(DQ <v>)} spids: [3516] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rync_options) op: assign_op.PlusEqual rhs: {(DQ <P>)} spids: [3526] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rync_options) op: assign_op.PlusEqual rhs: {(DQ <4>)} spids: [3536] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rync_options) op: assign_op.PlusEqual rhs: {(DQ <z>)} spids: [3565] ) ] ) ] spids: [3547 3561] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rync_options) op: assign_op.PlusEqual rhs: {(DQ <n>)} spids: [3598] ) ] ) ] spids: [3580 3594] ) ] ) (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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:rync_options) op: assign_op.PlusEqual rhs: {(DQ <' --delete'>)} spids: [3631] ) ] ) ] spids: [3613 3627] ) ] ) (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> } ) ) <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'))} ) ] 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>} ) ) 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'>)}) ) ) } ] 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') ) } ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName '$G_USER_INPUTS')} ) 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>} ) ) 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>} ) ] ) ] spids: [3784 3794] ) ] ) ] 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'>)}) ) ) } ] 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') ) } ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: {($ Id.VSub_DollarName '$G_USER_INPUTS')} ) 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>} ) ) 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>} ) ] ) ] spids: [3942 3952] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TARGETMENUID) op: assign_op.Equal rhs: {<0>} spids: [4055] ) ] ) ] ) ] ) ) (command.ShFunction name: Check_Install_PreReqs body: (BraceGroup children:[(C {<G_AG_CHECK_INSTALL_PREREQ>} {<rsync>})]) ) (command.ShFunction name: Check_Available_DietPi_Mounts body: (BraceGroup 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'))} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_AVAILABLE) op: assign_op.Equal rhs: {<0>} spids: [4116] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_TEXT) op: assign_op.Equal rhs: { (DQ <'Not mounted ('> ($ Id.VSub_DollarName '$FP_SAMBA_MOUNT') <'). Select to setup.'> ) } spids: [4120] ) ] ) (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 ) ) } right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SAMBA_MOUNT_AVAILABLE) op: assign_op.Equal rhs: {<1>} spids: [4164] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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 ) ) <'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 ) ) <B> ) } spids: [4168] ) ] ) ] spids: [4128 4160] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTP_MOUNT_AVAILABLE) op: assign_op.Equal rhs: {<0>} spids: [4223] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTP_MOUNT_TEXT) op: assign_op.Equal rhs: { (DQ <'Not mounted ('> ($ Id.VSub_DollarName '$FP_FTP_MOUNT') <'). Select to setup.'> ) } spids: [4227] ) ] ) (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 ) ) } right: {<Id.Lit_Digits 1>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTP_MOUNT_AVAILABLE) op: assign_op.Equal rhs: {<1>} spids: [4271] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FTP_MOUNT_TEXT) op: assign_op.Equal rhs: {(DQ <'Mounted and online.'>)} spids: [4275] ) ] ) ] spids: [4235 4267] ) ] ) (C {<rm>} {(DQ ($ Id.VSub_DollarName '$temp_file_mounts'))}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FP_DIETPISYNC_SETTINGS) op: assign_op.Equal rhs: {(DQ <'/DietPi/dietpi/.dietpi-sync_settings'>)} spids: [4314] ) ] ) (command.ShFunction name: Write_Settings_File body: (BraceGroup 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'>} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] 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'))} ) ] do_fork: T ) ] ) ) (command.ShFunction name: Read_Settings_File body: (BraceGroup 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 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'))} ) ) } spids: [4450] ) ] ) terminator: <Id.Op_Semi _> ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike sed_index> ) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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'))} ) ) } spids: [4473] ) ] ) terminator: <Id.Op_Semi _> ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike sed_index> ) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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'))} ) ) } spids: [4496] ) ] ) terminator: <Id.Op_Semi _> ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike sed_index> ) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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'))} ) ) } spids: [4519] ) ] ) terminator: <Id.Op_Semi _> ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike sed_index> ) ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name 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'))} ) ) } spids: [4542] ) ] ) terminator: <Id.Op_Semi _> ) (command.DParen child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: <Id.Lit_ArithVarLike sed_index> ) ) ] spids: [4427 4440] ) ] ) ] ) ) (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>} ) ) 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>} ) ) 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>} ) ) ) 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>} ) ) 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>} ) ) (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DEqual left: {($ Id.VSub_DollarName '$TARGETMENUID')} right: {<Id.Lit_Digits 2>} ) ) ] ) 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>} ) ) 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>} ) ) 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>} ) ) terminator: <Id.Op_Semi _> ) ] ) action: [(C {<Menu_Set_CronDaily>})] spids: [4784 4798] ) ] ) ] ) ) (C {<Write_Settings_File>}) ] spids: [4641 4655] ) ] ) (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'>})] 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'>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )