Exemplo n.º 1
0
void fin_handle(SEXP ptr){
  //Rprintf("running finalizer...\n");
  reference *ref = (reference*) R_ExternalPtrAddr(ptr);
  ref->refCount--;
  clean_handle(ref);
  R_ClearExternalPtr(ptr);
}
Exemplo n.º 2
0
void nick_set_raw(account_t *acc, const char *handle, const char *nick)
{
	char *store_handle, *store_nick = g_malloc(MAX_NICK_LENGTH + 1);
	irc_t *irc = (irc_t *) acc->bee->ui_data;

	store_handle = clean_handle(handle);
	store_nick[MAX_NICK_LENGTH] = '\0';
	strncpy(store_nick, nick, MAX_NICK_LENGTH);
	nick_strip(irc, store_nick);

	g_hash_table_replace(acc->nicks, store_handle, store_nick);
}
Exemplo n.º 3
0
Arquivo: handle.c Projeto: cran/curl
void fin_handle(SEXP ptr){
  reference *ref = (reference*) R_ExternalPtrAddr(ptr);

  //this kind of strange but the multi finalizer needs the ptr value
  //if it is still pending
  ref->refCount--;
  if(ref->refCount == 0)
    R_ClearExternalPtr(ptr);

  //free stuff
  clean_handle(ref);
}
Exemplo n.º 4
0
char *nick_get(bee_user_t *bu)
{
	static char nick[MAX_NICK_LENGTH + 1];
	char *store_handle, *found_nick;
	irc_t *irc = (irc_t *) bu->bee->ui_data;

	memset(nick, 0, MAX_NICK_LENGTH + 1);

	store_handle = clean_handle(bu->handle);
	/* Find out if we stored a nick for this person already. If not, try
	   to generate a sane nick automatically. */
	if ((found_nick = g_hash_table_lookup(bu->ic->acc->nicks, store_handle))) {
		strncpy(nick, found_nick, MAX_NICK_LENGTH);
	} else if ((found_nick = nick_gen(bu))) {
		strncpy(nick, found_nick, MAX_NICK_LENGTH);
		g_free(found_nick);
	} else {
		/* Keep this fallback since nick_gen() can return NULL in some cases. */
		char *s;

		g_snprintf(nick, MAX_NICK_LENGTH, "%s", bu->handle);
		if ((s = strchr(nick, '@'))) {
			while (*s) {
				*(s++) = 0;
			}
		}

		nick_strip(irc, nick);
		if (set_getbool(&bu->bee->set, "lcnicks")) {
			nick_lc(irc, nick);
		}
	}
	g_free(store_handle);

	/* Make sure the nick doesn't collide with an existing one by adding
	   underscores and that kind of stuff, if necessary. */
	nick_dedupe(bu, nick);

	return nick;
}