rem: ssize_t bytes = node.WriteAttr(kSigAttr, B_STRING_TYPE, 0, sig, strlen(sig)+1);
add: ssize_t bytes = node.WriteAttr(kSigAttr, B_MIME_STRING_TYPE, 0, sig, strlen(sig)+1);
context: set_test_app_attributes(const entry_ref *app, const char *sig, const int32 *flags){	BNode node;	attr_info info;	status_t err = app ? B_OK : B_BAD_VALUE;	// Open a node on the given app	if (!err) 		err = node.SetTo(app);	// Write/remove the appropriate attributes	if (!err) {		if (sig) {			// Set the attribute			ssize_t bytes = node.WriteAttr(kSigAttr, B_STRING_TYPE, 0, sig, strlen(sig)+1);			if (bytes >= 0)				err = bytes == (ssize_t)strlen(sig)+1 ? B_OK : B_FILE_ERROR;			else				err = bytes;		} else {			// See if the attribute exists and thus needs to be removed			if (node.GetAttrInfo(kSigAttr, &info) == B_OK)				err = node.RemoveAttr(kSigAttr);		}	}	if (!err) {		if (flags) {			// Set the attribute			ssize_t bytes = node.WriteAttr(kFlagsAttr, kFlagsType, 0, flags, sizeof(int32));				if (bytes >= 0)				err = bytes == sizeof(int32) ? B_OK : B_FILE_ERROR;			else				err = bytes;		} else {			// See if the attribute exists and thus needs to be removed			if (node.GetAttrInfo(kFlagsAttr, &info) == B_OK)				err = node.RemoveAttr(kFlagsAttr);		}	}	return err;}