#!/bin/awk -f @load "filefuncs" BEGIN { # Begin configurations rm = "/usr/bin/rm" # Path to Cygwin rm sleep = "/usr/bin/sleep" # Path to Cygwin sleep dir = "/cygdrive/h/" # Shared directory with VirtualBox. RAM disk recommended. fname = dir "name.txt" # File containing name passed *from* AWB farticle = dir "article.txt" # File containing article passed *to* AWB fabort = dir "abort.txt" # File flagging an abort from remote script # End configuration name = ARGV[1] # Clear any old files removefile(farticle) removefile(fname) removefile(fabort) if(length(name) == 0) # Abort if bad name data exit print name > fname close(fname) # Flush buffer print("demon-win.awk: Waiting for " farticle " ...") while(1) { sleep(1) if( exists(fabort) ) { print("demon-win.awk: Received abort.txt") removefile(fabort) exit } if( exists(farticle) ) { print("demon-win.awk: Received article.txt") exit } } } # Delete a file function removefile(str) { if( exists(str) ) sys2var(rm " -- " str) if( exists(str) ) { print("demon-lin.awk: Unable to delete " str ", aborting.") exit } system("") # Flush insurance } # # Check for file existence. Return 1 if exists, 0 otherwise. # Requires GNU Awk: # @load "filefuncs" # function exists(name ,fd) { if ( stat(name, fd) == -1) return 0 else return 1 } # # Run a system command and store result in a variable # eg. googlepage = sys2var("wget -q -O- http://google.com") # Supports pipes inside command string. Stderr is sent to null. # If command fails (errno) return null # function sys2var(command ,fish, scale, ship) { command = command " 2>/dev/null" while ( (command | getline fish) > 0 ) { if ( ++scale == 1 ) ship = fish else ship = ship "\n" fish } close(command) return ship } # # Sleep # function sleep(seconds) { sys2var(sleep " " seconds) }