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 == "": # EOF -- stop 33 break 34 if typed.startswith("quit"): 35 print("Goodbye!") 36 sys.stdout.flush() 37 break 38 if typed.startswith("echo "): 39 print(typed[5:-1]) 40 sys.stdout.flush() 41 if typed.startswith("echosplit "): 42 for part in typed[10:-1].split('|'): 43 sys.stdout.write(part) 44 sys.stdout.flush() 45 time.sleep(0.05) 46 if typed.startswith("double "): 47 print(typed[7:-1] + "\nAND " + typed[7:-1]) 48 sys.stdout.flush() 49 if typed.startswith("split "): 50 print(typed[6:-1], end='') 51 sys.stdout.flush() 52 time.sleep(0.05) 53 print(typed[6:-1], end='') 54 sys.stdout.flush() 55 time.sleep(0.05) 56 print(typed[6:-1]) 57 sys.stdout.flush() 58 if typed.startswith("echoerr "): 59 print(typed[8:-1], file=sys.stderr) 60 sys.stderr.flush() 61 if typed.startswith("doubleerr "): 62 print(typed[10:-1] + "\nAND " + typed[10:-1], file=sys.stderr) 63 sys.stderr.flush() 64 if typed.startswith("XXX"): 65 print(typed, end='') 66 sys.stderr.flush() 67 break 68 69