MCPcopy Index your code
hub / github.com/MapServer/MapServer / msCSVJoinNext

Function msCSVJoinNext

mapjoin.c:438–477  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

436}
437
438int msCSVJoinNext(joinObj *join)
439{
440 int i,j;
441 msCSVJoinInfo *joininfo = join->joininfo;
442
443 if(!joininfo) {
444 msSetError(MS_JOINERR, "Join connection has not be created.", "msCSVJoinNext()");
445 return(MS_FAILURE);
446 }
447
448 /* clear any old data */
449 if(join->values) {
450 msFreeCharArray(join->values, join->numitems);
451 join->values = NULL;
452 }
453
454 for(i=joininfo->nextrow; i<joininfo->numrows; i++) { /* find a match */
455 if(strcmp(joininfo->target, joininfo->rows[i][joininfo->toindex]) == 0) break;
456 }
457
458 if((join->values = (char ** )malloc(sizeof(char *)*join->numitems)) == NULL) {
459 msSetError(MS_MEMERR, NULL, "msCSVJoinNext()");
460 return(MS_FAILURE);
461 }
462
463 if(i == joininfo->numrows) { /* unable to do the join */
464 for(j=0; j<join->numitems; j++)
465 join->values[j] = msStrdup("\0"); /* intialize to zero length strings */
466
467 joininfo->nextrow = joininfo->numrows;
468 return(MS_DONE);
469 }
470
471 for(j=0; j<join->numitems; j++)
472 join->values[j] = msStrdup(joininfo->rows[i][j]);
473
474 joininfo->nextrow = i+1; /* so we know where to start looking next time through */
475
476 return(MS_SUCCESS);
477}
478
479int msCSVJoinClose(joinObj *join)
480{

Callers 1

msJoinNextFunction · 0.85

Calls 3

msSetErrorFunction · 0.85
msFreeCharArrayFunction · 0.85
msStrdupFunction · 0.85

Tested by

no test coverage detected