If you have a single \n in your file. the first fp:read("*l") will return "", the second fp:read("*l") will return nil.
f you read from a file that contains some characters but no \n, you get nil.
So you get a non-nil for all \n-terminated lines.
and a nil for the rest, even if it contains some characters.