Don't cat a file and pipe it into pv. Use "pv file" as a replacement for "cat file" and it will show you the progress as a percentage. When it's in the middle of a pipeline, it doesn't know the total size (unless you tell it with -s), so it can only show the throughput.
Actually, that's not completley true. pv will detect the file size if you use the shell to read a file into it, like pv < file.
But I guess they do...
http://stackoverflow.com/questions/1734243/in-c-how-do-i-pri...
I've seen that kind of brokenness from programs trying to find their binary image on disk. Don't do it, it's bad.