int getln2(&ss,&sa,&cont,&clen,sep);
substdio ss;
stralloc sa;
char *cont;
unsigned int clen;
int sep;
The line is returned in two pieces. The first piece is stored in sa. The second piece is cont, a pointer to clen characters inside the ss buffer. The second piece must be copied somewhere else before ss is used again.
If getln2 sees end-of-input before it sees sep, it sets clen to 0 and does not set cont. It puts the partial line into sa.
getln2 normally returns 0. If it runs out of memory, or encounters an error from ss, it returns -1, setting errno appropriately.