mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-03 11:25:35 +00:00
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
This commit is contained in:
@@ -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;
|
||||
|
Reference in New Issue
Block a user