in c, argv[0], _may_ have the fullpath+execname, but often on unix it just has the name that was invoked, so if gp2xmenu invoked 'blah' then all you will get is blah, but if it was execd as /mnt/sd/blah/BLAHBLAH then thats what you will get.
getcwd isnt garunteed to be the direction the exec is...