1) be stricter which number of arguments is accepted (1 or 2)
2) basename already returns a pointer to "." is argv[0] is ""
3) No need to check for *p != '/', because basename() only returns
a string beginning with '/' which has length 1, so if strlen(p)
== 1, the only way for suffix to be "evaluated" is for off to
be > 0, being equal to suffix being "", but "" != "/".
4) don't calculate strlen twice for each string. Store it in a
ssize_t and check if it's > 0.
Explicitly use "." instead of the result of basename(3) when argv[0] is
an empty string in order to avoid a segfault.
Skip suffix treatment if the result of basename(3) is "/", per POSIX.
Fix the suffix check, which was previously checking for a match at any
location in the string.