2005-04-27 Dan Williams <dcbw@redhat.com>

Patch from Peter Jones:
	* Remove usage of varargs to fix crashes on PPC (RH #154336)

	Patch from Bill Moss:
	* src/NetworkManagerSystem.c
		- Fix checking of return value from ioctl()


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@592 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
This commit is contained in:
Dan Williams
2005-04-28 02:50:54 +00:00
parent 0219e1746d
commit aac770c185
5 changed files with 144 additions and 105 deletions

View File

@@ -651,7 +651,7 @@ static void nm_v_wait_for_completion_or_timeout(
const guint interval_usecs,
nm_completion_func test_func,
nm_completion_func action_func,
va_list args)
nm_completion_args args)
{
int try;
gboolean finished = FALSE;
@@ -690,21 +690,19 @@ static void nm_v_wait_for_completion_or_timeout(
}
}
/* these should probably be moved to NetworkManagerUtils.h as macros
* since they don't do varargs stuff any more */
void nm_wait_for_completion_or_timeout(
const int max_tries,
const struct timeval *max_time,
const guint interval_usecs,
nm_completion_func test_func,
nm_completion_func action_func,
...)
nm_completion_args args)
{
va_list ap;
va_start(ap, action_func);
nm_v_wait_for_completion_or_timeout(max_tries, max_time,
interval_usecs, test_func,
action_func, ap);
va_end(ap);
action_func, args);
}
void nm_wait_for_completion(
@@ -712,15 +710,11 @@ void nm_wait_for_completion(
const guint interval_usecs,
nm_completion_func test_func,
nm_completion_func action_func,
...)
nm_completion_args args)
{
va_list ap;
va_start(ap, action_func);
nm_v_wait_for_completion_or_timeout(max_tries, NULL,
interval_usecs, test_func,
action_func, ap);
va_end(ap);
action_func, args);
}
void nm_wait_for_timeout(
@@ -728,24 +722,19 @@ void nm_wait_for_timeout(
const guint interval_usecs,
nm_completion_func test_func,
nm_completion_func action_func,
...)
nm_completion_args args)
{
va_list ap;
va_start(ap, action_func);
nm_v_wait_for_completion_or_timeout(-1, max_time,
interval_usecs, test_func,
action_func, ap);
va_end(ap);
nm_v_wait_for_completion_or_timeout(-1, max_time, interval_usecs,
test_func, action_func, args);
}
/* you can use these, but they're really just examples */
gboolean nm_completion_boolean_test(int tries, va_list args)
gboolean nm_completion_boolean_test(int tries, nm_completion_args args)
{
gboolean *condition = va_arg(args, gboolean *);
char *message = va_arg(args, char *);
int log_level = va_arg(args, int);
int log_interval = va_arg(args, int);
gboolean *condition = (gboolean *)args[0];
char *message = (char *)args[1];
int log_level = (int)args[2];
int log_interval = (int)args[3];
g_return_val_if_fail (condition != NULL, TRUE);
@@ -767,14 +756,16 @@ gboolean nm_completion_boolean_test(int tries, va_list args)
return FALSE;
}
gboolean nm_completion_boolean_function1_test(int tries, va_list args)
gboolean nm_completion_boolean_function1_test(int tries,
nm_completion_args args)
{
nm_completion_boolean_function_1 condition =
va_arg(args, nm_completion_boolean_function_1);
char *message = va_arg(args, char *);
int log_level = va_arg(args, int);
int log_interval = va_arg(args, int);
u_int64_t arg0 = va_arg(args, unsigned long long);
nm_completion_boolean_function_1 condition = args[0];
char *message = args[1];
int log_level = (int)args[2];
int log_interval = (int)args[3];
u_int64_t arg0;
memcpy(&arg0, &args[4], sizeof (arg0));
g_return_val_if_fail (condition, TRUE);
@@ -788,15 +779,17 @@ gboolean nm_completion_boolean_function1_test(int tries, va_list args)
return FALSE;
}
gboolean nm_completion_boolean_function2_test(int tries, va_list args)
gboolean nm_completion_boolean_function2_test(int tries,
nm_completion_args args)
{
nm_completion_boolean_function_2 condition =
va_arg(args, nm_completion_boolean_function_2);
char *message = va_arg(args, char *);
int log_level = va_arg(args, int);
int log_interval = va_arg(args, int);
u_int64_t arg0 = va_arg(args, unsigned long long);
u_int64_t arg1 = va_arg(args, unsigned long long);
nm_completion_boolean_function_2 condition = args[0];
char *message = args[1];
int log_level = (int)args[2];
int log_interval = (int)args[3];
u_int64_t arg0, arg1;
memcpy(&arg0, &args[4], sizeof (arg0));
memcpy(&arg1, &args[4]+sizeof (arg0), sizeof (arg1));
g_return_val_if_fail (condition, TRUE);