rem: add_str(watcher->s_id);
add: if (watcher->s_id.len < 1) { sprintf(id, "%p", watcher); add_string(id, strlen(id)); } else add_str(watcher->s_id);
context: int winfo_add_watcher(str* _b, int _l, watcher_t *watcher){	str strs[20];	int n_strs = 0;	int i;	int len = 0;	int status = watcher->status;#define add_string(_s, _l) ((strs[n_strs].s = (_s)), (strs[n_strs].len = (_l)), (len += _l), n_strs++)#define add_str(_s) (strs[n_strs].s = (_s.s), strs[n_strs].len = (_s.len), len += _s.len, n_strs++)#define add_pstr(_s) (strs[n_strs].s = (_s->s), strs[n_strs].len = (_s->len), len += _s->len, n_strs++)	add_string(WATCHER_START, WATCHER_START_L);	add_string(STATUS_START, STATUS_START_L);	add_str(watcher_status_names[status]);	add_string(EVENT_START, EVENT_START_L);	add_str(watcher_event_names[watcher->event]);	add_string(SID_START, SID_START_L);	add_str(watcher->s_id);	if (0)	if (watcher->display_name.len > 0) {	  add_string(DISPLAY_NAME_START, DISPLAY_NAME_START_L);	  escape_str(&watcher->display_name);	  add_str(watcher->display_name);	}	add_string(URI_START, URI_START_L);	add_str(watcher->uri);	add_string(WATCHER_ETAG, WATCHER_ETAG_L);	add_string(CRLF, CRLF_L);	if (_l < len) {		paerrno = PA_SMALL_BUFFER;		LOG(L_ERR, "winfo_add_watcher(): Buffer too small\n");		return -1;	}	for (i = 0; i < n_strs; i++)		str_append(_b, strs[i].s, strs[i].len);	return 0;}