BEGIN {
	print "/* Machine generated. Do not edit. */"
	print ""
	lines = 0
}
{ 
	split($0, array, FS)

	if (NF > 0 && length(array[1]) > 0) {
		lines++

		# save the first word is the names array
		names[lines] = array[1] 

		# create the WCHAR version of the name
		printf "static const WCHAR name%dW[] = { ", lines
		i = 1
		len = length(array[1]) + 1
		while (i < len) {
			printf "'%s',", substr(array[1],i,1)
			i++
		}
		print  "0 };"
	
		# create the CHAR version of the description
		printf "static const CHAR description%dA[] = \"", lines
		word = 2
		while (word < (NF + 1)) {
			printf "%s", array[word]
			if (word < NF )
				printf " "
			word++
		}
		print  "\";"
	
		# create the WCHAR version of the description
		printf "static const WCHAR description%dW[] = { ", lines
		word = 2
		while (word < (NF + 1)) {
			i = 1
			len = length(array[word]) + 1
			while (i < len) {
				printf "'%s',", substr(array[word],i,1)
				i++
			}
			if (word < NF )
				printf "' ',"
			word++
		}
		print  "0 };"
	}
}
END {
	print ""
	print "static const error_info info[] = {"

	i = 1 
	while ( i <= lines) { 
		printf "    { %s, \"%s\", name%dW, description%dA, description%dW },\n", 
			names[i], names[i], i, i,i 
		i++
	}

	print "};"
}