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 elif sys.argv[1].startswith("busy"): 22 time.sleep(100) 23 sys.exit(0) 24 else: 25 print(sys.argv[1]) 26 sys.stdout.flush() 27 if sys.argv[1].startswith("quit"): 28 sys.exit(0) 29 30 while True: 31 typed = sys.stdin.readline() 32 if typed.startswith("quit"): 33 print("Goodbye!") 34 sys.stdout.flush() 35 break 36 if typed.startswith("echo "): 37 print(typed[5:-1]) 38 sys.stdout.flush() 39 if typed.startswith("echosplit "): 40 for part in typed[10:-1].split('|'): 41 sys.stdout.write(part) 42 sys.stdout.flush() 43 time.sleep(0.05) 44 if typed.startswith("double "): 45 print(typed[7:-1] + "\nAND " + typed[7:-1]) 46 sys.stdout.flush() 47 if typed.startswith("split "): 48 print(typed[6:-1], end='') 49 sys.stdout.flush() 50 time.sleep(0.05) 51 print(typed[6:-1], end='') 52 sys.stdout.flush() 53 time.sleep(0.05) 54 print(typed[6:-1]) 55 sys.stdout.flush() 56 if typed.startswith("echoerr "): 57 print(typed[8:-1], file=sys.stderr) 58 sys.stderr.flush() 59 if typed.startswith("doubleerr "): 60 print(typed[10:-1] + "\nAND " + typed[10:-1], file=sys.stderr) 61 sys.stderr.flush() 62 if typed.startswith("XXX"): 63 print(typed, end='') 64 sys.stderr.flush() 65 break 66 67