MCPcopy Create free account
hub / github.com/creatale/node-dv / sarrayCreateLinesFromString

Function sarrayCreateLinesFromString

deps/leptonica/src/sarray1.c:275–339  ·  view source on GitHub ↗

! * \brief sarrayCreateLinesFromString() * * \param[in] string * \param[in] blankflag 0 to exclude blank lines; 1 to include * \return sarray, or NULL on error * * * Notes: * (1) This finds the number of line substrings, each of which * ends with a newline, and puts a copy of each substring * in a new sarray. * (2) The newline characters are

Source from the content-addressed store, hash-verified

273 * </pre>
274 */
275SARRAY *
276sarrayCreateLinesFromString(const char *string,
277 l_int32 blankflag)
278{
279l_int32 i, nsub, size, startptr;
280char *cstring, *substring;
281SARRAY *sa;
282
283 PROCNAME("sarrayCreateLinesFromString");
284
285 if (!string)
286 return (SARRAY *)ERROR_PTR("textstr not defined", procName, NULL);
287
288 /* Find the number of lines */
289 size = strlen(string);
290 nsub = 0;
291 for (i = 0; i < size; i++) {
292 if (string[i] == '\n')
293 nsub++;
294 }
295
296 if ((sa = sarrayCreate(nsub)) == NULL)
297 return (SARRAY *)ERROR_PTR("sa not made", procName, NULL);
298
299 if (blankflag) { /* keep blank lines as null strings */
300 /* Make a copy for munging */
301 if ((cstring = stringNew(string)) == NULL) {
302 sarrayDestroy(&sa);
303 return (SARRAY *)ERROR_PTR("cstring not made", procName, NULL);
304 }
305 /* We'll insert nulls like strtok */
306 startptr = 0;
307 for (i = 0; i < size; i++) {
308 if (cstring[i] == '\n') {
309 cstring[i] = '\0';
310 if (i > 0 && cstring[i - 1] == '\r')
311 cstring[i - 1] = '\0'; /* also remove Windows CR */
312 if ((substring = stringNew(cstring + startptr)) == NULL) {
313 sarrayDestroy(&sa);
314 LEPT_FREE(cstring);
315 return (SARRAY *)ERROR_PTR("substring not made",
316 procName, NULL);
317 }
318 sarrayAddString(sa, substring, L_INSERT);
319/* fprintf(stderr, "substring = %s\n", substring); */
320 startptr = i + 1;
321 }
322 }
323 if (startptr < size) { /* no newline at end of last line */
324 if ((substring = stringNew(cstring + startptr)) == NULL) {
325 sarrayDestroy(&sa);
326 LEPT_FREE(cstring);
327 return (SARRAY *)ERROR_PTR("substring not made",
328 procName, NULL);
329 }
330 sarrayAddString(sa, substring, L_INSERT);
331/* fprintf(stderr, "substring = %s\n", substring); */
332 }

Callers 14

parseTrailerPdfFunction · 0.85
parseForProtosFunction · 0.85
fmorphautogen1Function · 0.85
fmorphautogen2Function · 0.85
selaCreateFromFileFunction · 0.85
fhmtautogen1Function · 0.85
fhmtautogen2Function · 0.85
jbDataReadFunction · 0.85
sudokuReadFileFunction · 0.85
strcodeCreateFromFileFunction · 0.85
strcodeFinalizeFunction · 0.85
kernelCreateFromFileFunction · 0.85

Calls 5

sarrayCreateFunction · 0.85
stringNewFunction · 0.85
sarrayDestroyFunction · 0.85
sarrayAddStringFunction · 0.85
sarraySplitStringFunction · 0.85

Tested by

no test coverage detected