home *** CD-ROM | disk | FTP | other *** search
- /* illistn.c */
- /********************************************************************
- * Function : create array of pointers to lines in buffer
- * Author : Istvan Mohos, 1987 --- in the Public Domain
- *********************************************************************/
-
- #include "i.h"
-
- int
- illistn(start, end, ptrlist)
- register char *start;
- register char *end;
- char **ptrlist;
- {
- register int ri;
- register char *rp;
- char *savp, **work;
-
- *(end -1) = '\n'; /* just in case */
- for (ri = 0, rp = end; --rp >= start;)
- if (*rp == '\n')
- ++ri;
-
- if (NULCHARP(savp=malloc((unsigned int)(ri*sizeof(char *)))))
- return(ierror("illistn: can't allocate pointer array"));
-
- /* start one character to left of last byte in buffer */
- *(end -1) = 0;
- for (work=(char **)savp+ri, rp=end-1; --rp >= start;)
- if (*rp == '\n')
- *rp = 0, *--work = rp+1;
-
- /* rp == start-1 */
- *--work = ++rp;
-
- *ptrlist = savp;
- return(ri);
- }
-