view plugins/crazychat/util.h @ 13998:4fa4f2909b0d

[gaim-migrate @ 16583] Fix a crash when gadu-gadu signs off while a search is still open. It destroys its search HashTable in its close() function, and that table is accessed when gaim_notify_close_with_handle() is called. An alternative fix would be for the close_with_handle() functions to be called before prpl_info->close() in connection.c, but I'm not positive that this wouldn't cause problems with other prpls, so I went for a smaller-impact change. I'll merge this back to the 2.0.0 branch if there are no objections. committer: Tailor Script <tailor@pidgin.im>
author Evan Schoenberg <evan.s@dreskin.net>
date Thu, 27 Jul 2006 17:37:42 +0000
parents 8bcd4d4ccef6
children
line wrap: on
line source

#ifndef __UTIL_H__
#define __UTIL_H__

#include <debug.h>

#define SET_TIME(x)							\
	do {								\
		assert(!gettimeofday((x), NULL));			\
	} while(0)

#define SET_TIMEOUT(timespec, given_timeout)	/* timeout is in ms */	\
	do {								\
		struct timeval* curr = (struct timeval*)(timespec);	\
		unsigned int tout;					\
		if (given_timeout > 100) {				\
			tout = given_timeout;				\
		} else {						\
			tout = 100;					\
		}							\
		SET_TIME(curr);						\
		curr->tv_sec += (tout / 1000);				\
		curr->tv_usec /= 1000; /* set to ms */			\
		curr->tv_usec += (tout % 1000);				\
		curr->tv_sec += (curr->tv_usec / 1000);			\
		curr->tv_usec = (curr->tv_usec % 1000);			\
		curr->tv_usec *= 1000000;				\
	} while (0)

#endif

/* -- gcc specific vararg macro support ... but its so nice! -- */
#ifdef _DEBUG_
#define Debug(x, args...)						\
	do {								\
		printf(x, ## args);					\
		gaim_debug(GAIM_DEBUG_INFO, "crazychat", x, ## args);	\
	} while (0)
#else
#define Debug(x, args...) do{}while(0)
#endif