rem: str_append(_b, STATUS_ETAG CRLF, STATUS_ETAG_L + CRLF_L);
context: int pidf_add_location(str* _b, int _l, str *_loc, str *_site, str *_floor, str *_room, double _x, double _y, double _radius,		      enum prescaps prescaps){	str_append(_b, LOCATION_STAG, LOCATION_STAG_L);	if (_loc->len) {		str_append(_b, LOC_STAG, LOC_STAG_L);		str_append(_b, _loc->s, _loc->len);		str_append(_b, LOC_ETAG CRLF, LOC_ETAG_L + CRLF_L);	}	if (_site->len) {		str_append(_b, SITE_STAG, SITE_STAG_L);		str_append(_b, _site->s, _site->len);		str_append(_b, SITE_ETAG CRLF, SITE_ETAG_L + CRLF_L);	}	if (_floor->len) {		str_append(_b, FLOOR_STAG, FLOOR_STAG_L);		str_append(_b, _floor->s, _floor->len);		str_append(_b, FLOOR_ETAG CRLF, FLOOR_ETAG_L + CRLF_L);	}	if (_room->len) {		str_append(_b, ROOM_STAG, ROOM_STAG_L);		str_append(_b, _room->s, _room->len);		str_append(_b, ROOM_ETAG CRLF, ROOM_ETAG_L + CRLF_L);	}	if (_x) {		char buf[128];		int len = sprintf(buf, "%g", _x);		str_append(_b, X_STAG, X_STAG_L);		str_append(_b, buf, len);		str_append(_b, X_ETAG CRLF, X_ETAG_L + CRLF_L);	}	if (_y) {		char buf[128];		int len = sprintf(buf, "%g", _y);		str_append(_b, Y_STAG, Y_STAG_L);		str_append(_b, buf, len);		str_append(_b, Y_ETAG CRLF, Y_ETAG_L + CRLF_L);	}	if (_radius) {		char buf[128];		int len = sprintf(buf, "%g", _radius);		str_append(_b, RADIUS_STAG, RADIUS_STAG_L);		str_append(_b, buf, len);		str_append(_b, RADIUS_ETAG CRLF, RADIUS_ETAG_L + CRLF_L);	}	str_append(_b, LOCATION_ETAG CRLF, CRLF_L + LOCATION_ETAG_L);	if (prescaps) {	     int i;	     str_append(_b, PRESCAPS_STAG CRLF, PRESCAPS_STAG_L + CRLF_L);	     for (i = 0; i < 4; i++) {		  const char *prescap_name = prescap_names[i];		  char prescap[128];		  int prescap_l = sprintf(prescap, "      <%s>%s</%s>%s",					  prescap_name, ((prescaps & (1 << i)) ? "true" : "false"), prescap_name, CRLF);		  str_append(_b, prescap, prescap_l);	     }	     str_append(_b, PRESCAPS_ETAG CRLF, PRESCAPS_ETAG_L + CRLF_L);	}	str_append(_b, STATUS_ETAG CRLF, STATUS_ETAG_L + CRLF_L);	return 0;}