rem: ptr->expires = _e;  ptr->accept = _a;   ptr->dialog = _dlg;  *_w = ptr;
add: watcher->expires = _e;  watcher->accept = _a;   watcher->dialog = _dlg;  *_w = watcher;
context: int new_watcher(str* _uri, time_t _e, doctype_t _a, dlg_t* _dlg, watcher_t** _w){	watcher_t* ptr;	     /* Check parameters */	if (!_uri && !_dlg && !_w) {		LOG(L_ERR, "new_watcher(): Invalid parameter value\n");		return -1;	}	     /* Allocate memory buffer for watcher_t structure and uri string */	ptr = (watcher_t*)shm_malloc(sizeof(watcher_t) + _uri->len);	if (!ptr) {		paerrno = PA_NO_MEMORY;	        LOG(L_ERR, "new_watcher(): No memory left\n");		return -1;	}	memset(ptr, 0, sizeof(watcher_t));	     /* Copy uri string */	ptr->uri.s = (char*)ptr + sizeof(watcher_t);	ptr->uri.len = _uri->len;	memcpy(ptr->uri.s, _uri->s, _uri->len);		ptr->expires = _e; /* Expires value */	ptr->accept = _a;  /* Accepted document type */	ptr->dialog = _dlg; /* Dialog handle */	*_w = ptr;	return 0;}