1#!/usr/bin/python 2# 3# Server that will communicate over stdin/stderr 4# 5# This requires Python 2.6 or later. 6 7from __future__ import print_function 8import sys 9import time 10 11if __name__ == "__main__": 12 13 if len(sys.argv) > 1: 14 if sys.argv[1].startswith("err"): 15 print(sys.argv[1], file=sys.stderr) 16 sys.stderr.flush() 17 elif sys.argv[1].startswith("incomplete"): 18 print(sys.argv[1], end='') 19 sys.stdout.flush() 20 sys.exit(0) 21 else: 22 print(sys.argv[1]) 23 sys.stdout.flush() 24 if sys.argv[1].startswith("quit"): 25 sys.exit(0) 26 27 while True: 28 typed = sys.stdin.readline() 29 if typed.startswith("quit"): 30 print("Goodbye!") 31 sys.stdout.flush() 32 break 33 if typed.startswith("echo "): 34 print(typed[5:-1]) 35 sys.stdout.flush() 36 if typed.startswith("echosplit "): 37 for part in typed[10:-1].split('|'): 38 sys.stdout.write(part) 39 sys.stdout.flush() 40 time.sleep(0.05) 41 if typed.startswith("double "): 42 print(typed[7:-1] + "\nAND " + typed[7:-1]) 43 sys.stdout.flush() 44 if typed.startswith("split "): 45 print(typed[6:-1], end='') 46 sys.stdout.flush() 47 time.sleep(0.05) 48 print(typed[6:-1], end='') 49 sys.stdout.flush() 50 time.sleep(0.05) 51 print(typed[6:-1]) 52 sys.stdout.flush() 53 if typed.startswith("echoerr "): 54 print(typed[8:-1], file=sys.stderr) 55 sys.stderr.flush() 56 if typed.startswith("doubleerr "): 57 print(typed[10:-1] + "\nAND " + typed[10:-1], file=sys.stderr) 58 sys.stderr.flush() 59 if typed.startswith("XXX"): 60 print(typed, end='') 61 sys.stderr.flush() 62 break 63 64