Use casts or intermediate variables to remove a number

of platform/compiler-dependent warnings when handing
struct timeval fields, both reading and printing them.

It is a lost battle to handle the different ways struct timeval
is handled on the various platforms and compilers, so try
to be pragmatic and go through int/long which are universally
supported.



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@116557 65c4cc65-6c06-0410-ace0-fbb531ad65f3
1.6.1
Luigi Rizzo 17 years ago
parent 193d16cbde
commit 18065a175d

@ -48,6 +48,7 @@ static int waituntil_exec(struct ast_channel *chan, void *data)
{
int res;
double fraction;
long seconds;
struct timeval future = { 0, };
struct timeval tv = ast_tvnow();
int msec;
@ -58,12 +59,13 @@ static int waituntil_exec(struct ast_channel *chan, void *data)
return 0;
}
if (sscanf(data, "%ld%lf", (long *)&future.tv_sec, &fraction) == 0) {
if (sscanf(data, "%ld%lf", &seconds, &fraction) == 0) {
ast_log(LOG_WARNING, "WaitUntil called with non-numeric argument\n");
pbx_builtin_setvar_helper(chan, "WAITUNTILSTATUS", "FAILURE");
return 0;
}
future.tv_sec = seconds;
future.tv_usec = fraction * 1000000;
if ((msec = ast_tvdiff_ms(future, tv)) < 0) {

@ -84,6 +84,7 @@ static int timeout_write(struct ast_channel *chan, const char *cmd, char *data,
const char *value)
{
double x;
long sec;
char timestr[64];
struct ast_tm myt;
struct timeval tv;
@ -99,10 +100,12 @@ static int timeout_write(struct ast_channel *chan, const char *cmd, char *data,
if (!value)
return -1;
if ((sscanf(value, "%ld%lf", (long *)&tv.tv_sec, &x) == 0) || tv.tv_sec < 0)
if ((sscanf(value, "%ld%lf", &sec, &x) == 0) || sec < 0)
tv.tv_sec = 0;
else
else {
tv.tv_sec = sec;
tv.tv_usec = x * 1000000;
}
switch (*data) {
case 'a':

@ -3565,7 +3565,8 @@ static char *handle_parkedcalls(struct ast_cli_entry *e, int cmd, struct ast_cli
AST_LIST_TRAVERSE(&curlot->parkings, cur, list) {
ast_cli(a->fd, "%-10.10s %25s (%-15s %-12s %-4d) %6lds\n"
,cur->parkingexten, cur->chan->name, cur->context, cur->exten
,cur->priority, cur->start.tv_sec + (cur->parkingtime/1000) - time(NULL));
,cur->priority,
(long)(cur->start.tv_sec + (cur->parkingtime/1000) - time(NULL)) );
numparked++;
numparked += lotparked;
}

@ -3105,7 +3105,7 @@ int __manager_event(int category, const char *event,
now = ast_tvnow();
ast_str_append(&buf, 0,
"Timestamp: %ld.%06lu\r\n",
now.tv_sec, (unsigned long) now.tv_usec);
(long)now.tv_sec, (unsigned long) now.tv_usec);
}
if (manager_debug) {
static int seq;

@ -437,7 +437,7 @@ void ast_sched_dump(const struct sched_context *con)
q->id,
q->callback,
q->data,
delta.tv_sec,
(long)delta.tv_sec,
(long int)delta.tv_usec);
}
ast_debug(1, "=============================================================\n");

@ -220,7 +220,7 @@ static char *cli_tps_ping(struct ast_cli_entry *e, int cmd, struct ast_cli_args
ast_mutex_unlock(&cli_ping_cond_lock);
end = ast_tvnow();
delta = ast_tvsub(end, begin);
ast_cli(a->fd, "\n\t%24s ping time: %.1ld.%.6ld sec\n\n", name, delta.tv_sec, (long int)delta.tv_usec);
ast_cli(a->fd, "\n\t%24s ping time: %.1ld.%.6ld sec\n\n", name, (long)delta.tv_sec, (long int)delta.tv_usec);
ao2_ref(tps, -1);
return CLI_SUCCESS;
}

@ -1202,12 +1202,12 @@ static struct timeval tvfix(struct timeval a)
{
if (a.tv_usec >= ONE_MILLION) {
ast_log(LOG_WARNING, "warning too large timestamp %ld.%ld\n",
a.tv_sec, (long int) a.tv_usec);
(long)a.tv_sec, (long int) a.tv_usec);
a.tv_sec += a.tv_usec / ONE_MILLION;
a.tv_usec %= ONE_MILLION;
} else if (a.tv_usec < 0) {
ast_log(LOG_WARNING, "warning negative timestamp %ld.%ld\n",
a.tv_sec, (long int) a.tv_usec);
(long)a.tv_sec, (long int) a.tv_usec);
a.tv_usec = 0;
}
return a;

Loading…
Cancel
Save