3.2.37. LINES([streamid]) Returns the number of complete lines remaining in the named file stream. A complete line is not really as complete as the name might indicate; a complete line is zero or more characters, followed by an End-Of-Line (EOL) marker. So, if you have read half a line already, you still have a complete line left. Note that it is not defined what to do with a half-finished line at the end of a file. Some interpreters might interpret the End-Of-File as an implicit EOL mark too, while others might not. The format and contents of the stream streamid is system and implementation dependent. If omitted, the default input stream will be used. The standard says that if it is impossible (or maybe just difficult) to accurately count the remaining lines in a stream, LINES() can return 0 for no more lines, and 1 for more lines. This probably applies for all transient streams, as the interpreter can not reposition in these files, and can therefore not count the number of remaining lines. It can also apply for persistent files, if the operation of counting the lines left in the file is very time-consuming. As a result, defensive programming indicates that you can safely only assume that this function will return either 0 or a non-zero result. If you want to use the non-zero result to more than just an indicator on whether more lines are available, you must check that it is larger than one. If so, you can safely assume that it hold the number of available lines left. As with all the functions operating on streams, you can safely assume very little about this function, so consult the system and implementation specific documentation. LINES() > 1 /* Maybe */ LINES() > 0 /* Maybe */ LINES(/tmp/file) > 2 /* Maybe */ LINES(/tmp/file) > 1 /* Maybe */
PREV NEXT