E Simplified plot of control for porting RSYNC to be AST use on OpenVMS  instead of using subprocesses.   main/main()  	main/start_server= 	    (f_in = STDIN_FILENO, f_out = STDOUT_FILENO, argc, arcv)  		if (!am_sender)  		{  		    main/do_server_recv()  			main/do_recv()  				util/do_fork() 			    close(recv_pipe[0]);  			    close(error_pipe[0]);& 			    if (f_in != f_out) close(f_out)# 			    main/io_multiplexing_close()  			    log/set_error_fd()  			    receiver/recv_files() 			    io/io_flush() 			    main/report() 			    io/write_int()  			    close(f_in) 			    sleep()   		}    	main/start_client() 		main/client_run()  			main/do_recv()      main/main()  	clientserver/daemon_main() 3 		[Neither of these paths will be taken on OpenVMS]  		socket/become_daemon() 			cc/fork() 		socket/start_accept_loop() 			cc/fork()     main/main()  	main/start_client()$ 	    if (argv[0:7] == "rsync://") ||* 	       ((argv[?] = ":") && (!read_batch)) 	    { 		[ported to OpenVMS] $ 		clientserver/start_socket_client()# 			socket/open_socket_out_wrapped()  				socket/sock_exec() 					cc/fork() 		main/client_run(no pid)  	    }  1 		[Ported to OpenVMS - replace fork with vfork()] ! 	    if (argv[0:7] != "rsync://")  	    { 		main/do_cmd()  		    if (local_server)  		    {  			util/piped_child()  				util/do_fork() 					cc/fork() 		    }  		    if (!local_server) 		    {  			util/local_child()  				util/do_fork() 					cc/fork() 		    }  		main/client_run(pid) 	    }