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

Function msDBFJoinNext

mapjoin.c:254–299  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

252}
253
254int msDBFJoinNext(joinObj *join)
255{
256 int i, n;
257 msDBFJoinInfo *joininfo = join->joininfo;
258
259 if(!joininfo) {
260 msSetError(MS_JOINERR, "Join connection has not be created.", "msDBFJoinNext()");
261 return(MS_FAILURE);
262 }
263
264 if(!joininfo->target) {
265 msSetError(MS_JOINERR, "No target specified, run msDBFJoinPrepare() first.", "msDBFJoinNext()");
266 return(MS_FAILURE);
267 }
268
269 /* clear any old data */
270 if(join->values) {
271 msFreeCharArray(join->values, join->numitems);
272 join->values = NULL;
273 }
274
275 n = msDBFGetRecordCount(joininfo->hDBF);
276
277 for(i=joininfo->nextrecord; i<n; i++) { /* find a match */
278 if(strcmp(joininfo->target, msDBFReadStringAttribute(joininfo->hDBF, i, joininfo->toindex)) == 0) break;
279 }
280
281 if(i == n) { /* unable to do the join */
282 if((join->values = (char **)malloc(sizeof(char *)*join->numitems)) == NULL) {
283 msSetError(MS_MEMERR, NULL, "msDBFJoinNext()");
284 return(MS_FAILURE);
285 }
286 for(i=0; i<join->numitems; i++)
287 join->values[i] = msStrdup("\0"); /* intialize to zero length strings */
288
289 joininfo->nextrecord = n;
290 return(MS_DONE);
291 }
292
293 if((join->values = msDBFGetValues(joininfo->hDBF,i)) == NULL)
294 return(MS_FAILURE);
295
296 joininfo->nextrecord = i+1; /* so we know where to start looking next time through */
297
298 return(MS_SUCCESS);
299}
300
301int msDBFJoinClose(joinObj *join)
302{

Callers 1

msJoinNextFunction · 0.85

Calls 6

msSetErrorFunction · 0.85
msFreeCharArrayFunction · 0.85
msDBFGetRecordCountFunction · 0.85
msDBFReadStringAttributeFunction · 0.85
msStrdupFunction · 0.85
msDBFGetValuesFunction · 0.85

Tested by

no test coverage detected