mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-20 12:20:12 +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;
|
int res;
|
||||||
double fraction;
|
double fraction;
|
||||||
|
long seconds;
|
||||||
struct timeval future = { 0, };
|
struct timeval future = { 0, };
|
||||||
struct timeval tv = ast_tvnow();
|
struct timeval tv = ast_tvnow();
|
||||||
int msec;
|
int msec;
|
||||||
@@ -58,12 +59,13 @@ static int waituntil_exec(struct ast_channel *chan, void *data)
|
|||||||
return 0;
|
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");
|
ast_log(LOG_WARNING, "WaitUntil called with non-numeric argument\n");
|
||||||
pbx_builtin_setvar_helper(chan, "WAITUNTILSTATUS", "FAILURE");
|
pbx_builtin_setvar_helper(chan, "WAITUNTILSTATUS", "FAILURE");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
future.tv_sec = seconds;
|
||||||
future.tv_usec = fraction * 1000000;
|
future.tv_usec = fraction * 1000000;
|
||||||
|
|
||||||
if ((msec = ast_tvdiff_ms(future, tv)) < 0) {
|
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)
|
const char *value)
|
||||||
{
|
{
|
||||||
double x;
|
double x;
|
||||||
|
long sec;
|
||||||
char timestr[64];
|
char timestr[64];
|
||||||
struct ast_tm myt;
|
struct ast_tm myt;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
@@ -99,10 +100,12 @@ static int timeout_write(struct ast_channel *chan, const char *cmd, char *data,
|
|||||||
if (!value)
|
if (!value)
|
||||||
return -1;
|
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;
|
tv.tv_sec = 0;
|
||||||
else
|
else {
|
||||||
|
tv.tv_sec = sec;
|
||||||
tv.tv_usec = x * 1000000;
|
tv.tv_usec = x * 1000000;
|
||||||
|
}
|
||||||
|
|
||||||
switch (*data) {
|
switch (*data) {
|
||||||
case 'a':
|
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_LIST_TRAVERSE(&curlot->parkings, cur, list) {
|
||||||
ast_cli(a->fd, "%-10.10s %25s (%-15s %-12s %-4d) %6lds\n"
|
ast_cli(a->fd, "%-10.10s %25s (%-15s %-12s %-4d) %6lds\n"
|
||||||
,cur->parkingexten, cur->chan->name, cur->context, cur->exten
|
,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++;
|
||||||
numparked += lotparked;
|
numparked += lotparked;
|
||||||
}
|
}
|
||||||
|
@@ -3105,7 +3105,7 @@ int __manager_event(int category, const char *event,
|
|||||||
now = ast_tvnow();
|
now = ast_tvnow();
|
||||||
ast_str_append(&buf, 0,
|
ast_str_append(&buf, 0,
|
||||||
"Timestamp: %ld.%06lu\r\n",
|
"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) {
|
if (manager_debug) {
|
||||||
static int seq;
|
static int seq;
|
||||||
|
@@ -437,7 +437,7 @@ void ast_sched_dump(const struct sched_context *con)
|
|||||||
q->id,
|
q->id,
|
||||||
q->callback,
|
q->callback,
|
||||||
q->data,
|
q->data,
|
||||||
delta.tv_sec,
|
(long)delta.tv_sec,
|
||||||
(long int)delta.tv_usec);
|
(long int)delta.tv_usec);
|
||||||
}
|
}
|
||||||
ast_debug(1, "=============================================================\n");
|
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);
|
ast_mutex_unlock(&cli_ping_cond_lock);
|
||||||
end = ast_tvnow();
|
end = ast_tvnow();
|
||||||
delta = ast_tvsub(end, begin);
|
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);
|
ao2_ref(tps, -1);
|
||||||
return CLI_SUCCESS;
|
return CLI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@@ -1202,12 +1202,12 @@ static struct timeval tvfix(struct timeval a)
|
|||||||
{
|
{
|
||||||
if (a.tv_usec >= ONE_MILLION) {
|
if (a.tv_usec >= ONE_MILLION) {
|
||||||
ast_log(LOG_WARNING, "warning too large timestamp %ld.%ld\n",
|
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_sec += a.tv_usec / ONE_MILLION;
|
||||||
a.tv_usec %= ONE_MILLION;
|
a.tv_usec %= ONE_MILLION;
|
||||||
} else if (a.tv_usec < 0) {
|
} else if (a.tv_usec < 0) {
|
||||||
ast_log(LOG_WARNING, "warning negative timestamp %ld.%ld\n",
|
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;
|
a.tv_usec = 0;
|
||||||
}
|
}
|
||||||
return a;
|
return a;
|
||||||
|
Reference in New Issue
Block a user