@@ -47,7 +47,7 @@ char **idname;
47
47
48
48
void usage (int argc , char * argv [])
49
49
{
50
- errx (EXIT_FAILURE , "Usage: %s [-f from] [-t to ] [-s step in microsec] [-S state]\n\
50
+ errx (EXIT_FAILURE , "Usage: %s [-n number of time ] [-s step in microsec] [-S state]\n\
51
51
id(s) will be read from stdin\n" , basename (argv [0 ]));
52
52
}
53
53
@@ -68,20 +68,17 @@ int readids(void)
68
68
int main (int argc , char * argv [])
69
69
{
70
70
int i , opt , idnum = 0 ;
71
- char * fm = NULL , * to = NULL ;
72
71
double st = -1.0 ;
73
72
struct tm frtm , totm ;
74
73
struct timeval frtv , totv ;
75
74
double t ;
76
- int s = 0 ;
75
+ int s = 0 , n = 0 ;
76
+ char to [64 ], fm [64 ];
77
77
78
- while ((opt = getopt (argc , argv , "f:t :s:S:h" )) != -1 ) {
78
+ while ((opt = getopt (argc , argv , "n :s:S:h" )) != -1 ) {
79
79
switch (opt ) {
80
- case 'f' :
81
- fm = optarg ;
82
- break ;
83
- case 't' :
84
- to = optarg ;
80
+ case 'n' :
81
+ n = atoi (optarg );
85
82
break ;
86
83
case 's' :
87
84
st = atof (optarg );
@@ -97,27 +94,24 @@ int main(int argc, char *argv[])
97
94
98
95
idnum = readids ();
99
96
100
- if (idnum == 0 || fm == NULL || to == NULL || st < 0.0 )
97
+ if (idnum == 0 || n == 0 || st < 0.0 )
101
98
usage (argc , argv );
102
99
103
- for (i = 0 ; i < idnum ; i ++ )
104
- fprintf (stderr , "id[%5d] == '%s'\n" , i , idname [i ]);
105
- fprintf (stderr , "from: '%s' to: '%s' step: '%f'microsec\n" , fm , to , st );
100
+ gettimeofday (& frtv , NULL );
106
101
107
- memset (& frtm , 0 , sizeof (struct tm ));
108
- strptime (fm , "%Y-%m-%d %T" , & frtm );
109
- frtv .tv_sec = mktime (& frtm );
110
- frtv .tv_usec = 0 ;
102
+ memcpy (& frtm , gmtime (& frtv .tv_sec ), sizeof (frtm ));
103
+ strftime (fm , sizeof (fm ), "%Y-%m-%d %T" , & frtm );
111
104
112
- memset (& totm , 0 , sizeof (struct tm ));
113
- strptime (to , "%Y-%m-%d %T" , & totm );
114
- totv .tv_sec = mktime (& totm );
105
+ totv .tv_sec = frtv .tv_sec + (n * st / 1000000.0 );
115
106
totv .tv_usec = 0 ;
116
107
117
- /*
118
- printf("fr: %s", ctime(&frtv.tv_sec));
119
- printf("to: %s", ctime(&totv.tv_sec));
120
- */
108
+ memcpy (& totm , gmtime (& totv .tv_sec ), sizeof (totm ));
109
+ strftime (to , sizeof (to ), "%Y-%m-%d %T" , & totm );
110
+
111
+ for (i = 0 ; i < idnum ; i ++ )
112
+ fprintf (stderr , "id[%5d] == '%s'\n" , i , idname [i ]);
113
+ fprintf (stderr , "from: '%s.%06ld' to: '%s.%06ld' step: '%f'microsec %d times\n" ,
114
+ fm , frtv .tv_usec , to , totv .tv_usec , st , n );
121
115
122
116
t = frtv .tv_sec ;
123
117
st /= 1000000.0 ;
0 commit comments