Module: sip-router
Branch: master
Commit: c73f7667017ab6f3889995db6d530aad3e36b28b
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=c73f766…
Author: Timo Reimann <timo.reimann(a)1und1.de>
Committer: Timo Reimann <timo.reimann(a)1und1.de>
Date: Wed Sep 28 00:13:55 2011 +0200
acc(k): Change time_from_string() signature in order to remove
is_time_equal().
- Let time_from_string() accept pointer to target timeval struct and return
success/error state in int-typed return value.
- Change variable names in time_from_string().
- Remove is_time_equal() which was used for error checking only.
- Remove time_error struct which is now represented by return value from
time_from_string().
---
modules_k/acc/acc_cdr.c | 61 +++++++++++++++++-----------------------------
1 files changed, 23 insertions(+), 38 deletions(-)
diff --git a/modules_k/acc/acc_cdr.c b/modules_k/acc/acc_cdr.c
index b15530f..a1a40ea 100644
--- a/modules_k/acc/acc_cdr.c
+++ b/modules_k/acc/acc_cdr.c
@@ -56,7 +56,6 @@ static const str start_id = { "st", 2};
static const str end_id = { "et", 2};
static const str duration_id = { "d", 1};
static const str zero_duration = { "0", 1};
-static const struct timeval time_error = {0,0};
static const char time_separator = {'.'};
static const int milliseconds_max = 1000000;
static const unsigned int time_buffer_length = 256;
@@ -70,19 +69,6 @@ static char cdr_type_array[ MAX_CDR_CORE + MAX_CDR_EXTRA];
extern struct tm_binds tmb;
-/* compare two times */
-static int is_time_equal( struct timeval first_time,
- struct timeval second_time)
-{
- if( first_time.tv_sec == second_time.tv_sec &&
- first_time.tv_usec == second_time.tv_usec )
- {
- return 1;
- }
-
- return 0;
-}
-
/* write all basic information to buffers(e.g. start-time ...) */
static int cdr_core2strar( struct dlg_cell* dlg,
str* values,
@@ -194,29 +180,29 @@ static int write_cdr( struct dlg_cell* dialog,
return 0;
}
-/* convert a string into a timeb struct */
-static struct timeval time_from_string( str* time_value)
+/* convert a string into a timeval struct */
+static int time_from_string( str* time_str, struct timeval* time_value)
{
char* dot_address = NULL;
int dot_position = -1;
char zero_terminated_value[TIME_STR_BUFFER_SIZE];
- if( !time_value)
+ if( !time_str)
{
- LM_ERR( "time_value is empty!");
- return time_error;
+ LM_ERR( "time_str is empty!");
+ return -1;
}
- if( time_value->len >= TIME_STR_BUFFER_SIZE)
+ if( time_str->len >= TIME_STR_BUFFER_SIZE)
{
- LM_ERR( "time_value is to long %d >= %d!",
- time_value->len,
+ LM_ERR( "time_str is too long %d >= %d!",
+ time_str->len,
TIME_STR_BUFFER_SIZE);
- return time_error;
+ return -1;
}
- memcpy( zero_terminated_value, time_value->s, time_value->len);
- zero_terminated_value[time_value->len] = '\0';
+ memcpy( zero_terminated_value, time_str->s, time_str->len);
+ zero_terminated_value[time_str->len] = '\0';
dot_address = strchr( zero_terminated_value, time_separator);
@@ -225,7 +211,7 @@ static struct timeval time_from_string( str* time_value)
LM_ERR( "failed to find separator('%c') in '%s'!\n",
time_separator,
zero_terminated_value);
- return time_error;
+ return -1;
}
dot_position = dot_address-zero_terminated_value + 1;
@@ -234,19 +220,19 @@ static struct timeval time_from_string( str* time_value)
strchr(dot_address + 1, time_separator))
{
LM_ERR( "invalid time-string '%s'\n", zero_terminated_value);
- return time_error;
+ return -1;
}
- time_res->tv_sec = strtol( zero_terminated_value, (char **)NULL, 10);
- time_res->tv_usec = strtol( dot_address + 1, (char **)NULL, 10);
+ time_value->tv_sec = strtol( zero_terminated_value, (char **)NULL, 10);
+ time_value->tv_usec = strtol( dot_address + 1, (char **)NULL, 10);
return 0;
}
/* set the duration in the dialog struct */
static int set_duration( struct dlg_cell* dialog)
{
- struct timeval start_time = time_error;
- struct timeval end_time = time_error;
+ struct timeval start_time;
+ struct timeval end_time;
int milliseconds = -1;
int seconds = -1;
char buffer[ time_buffer_length];
@@ -259,13 +245,12 @@ static int set_duration( struct dlg_cell* dialog)
return -1;
}
- start_time = time_from_string( dlgb.get_dlg_var( dialog, (str*)&start_id));
- end_time = time_from_string( dlgb.get_dlg_var( dialog, (str*)&end_id));
-
- if( is_time_equal( start_time, time_error) ||
- is_time_equal( end_time, time_error))
- {
- LM_ERR( "failed to extract time from start or/and end-time\n");
+ if ( time_from_string( dlgb.get_dlg_var( dialog, (str*)&start_id),
&start_time) < 0) {
+ LM_ERR( "failed to extract start time\n");
+ return -1;
+ }
+ if ( time_from_string( dlgb.get_dlg_var( dialog, (str*)&end_id), &end_time)
< 0) {
+ LM_ERR( "failed to extract end time\n");
return -1;
}