1 /* $Id: tools.c,v 1.17 2005/10/06 13:08:28 sys-op Exp $
2  * -------------------------------------------------------
3  * Copyright (c) 1998-2002 Sebastian Kienzl <zap@riot.org>
4  *           (c) 2002 Lee Hardy <lee@leeh.co.uk>
5  * -------------------------------------------------------
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  */
16 
17 #include "muh.h"
18 #include "tools.h"
19 
upcase(char * what)20 void upcase( char *what )
21 {
22     char *doit;
23     if( what ) for( doit = what; doit && *doit; doit++ ) *doit = toupper( *doit );
24 }
25 
randname(char * randchar,int length)26 void randname( char *randchar, int length )
27 {
28     int i;
29     if(randchar)
30     {
31         for( i = 0; i < length; i++ ) randchar[ i ] = ( char )( 'A' + ( rand() % 56 ) );
32         randchar[ length ] = 0;
33     }
34 }
35 
pos(char * str,char what)36 int pos( char *str, char what )
37 {
38     int i = 0;
39     if( str ) {
40         while( str[ i ] ) {
41             if( str[ i ] == what ) return i;
42             i++;
43         }
44     }
45     return -1;
46 }
47 
lastpos(char * str,char what)48 int lastpos( char *str, char what )
49 {
50     int i;
51     if( str ) {
52         i = strlen( str ) - 1;
53         while( i ) {
54             if( str[ i ] == what ) return i;
55             i--;
56         }
57     }
58     return -1;
59 }
60 
nextword(char * string)61 char *nextword( char *string )
62 {
63     int i;
64     if( ( i = pos( string, ' ' ) ) < 0 )
65         return NULL;
66     else
67         return ( string + i + 1 );
68 }
69 
70 
lastword(char * from)71 char *lastword( char *from )
72 {
73     int i;
74     if( ( i = lastpos( from, ' ' ) ) < 0 )
75         return from;
76     else return from + i + 1;
77 }
78 
79 /* gettimestamp()
80  *
81  * Creates a timestamp in the form:
82  *    [Sun 21 Mar 11:23:12]
83  */
gettimestamp()84 char *gettimestamp()
85 {
86     time_t t;
87     struct tm *lt;
88     static char stamp[ 100 ];
89 
90     time( &t );
91     lt = localtime( &t );
92     strftime( stamp, 99, "[%a %d %b %H:%M:%S]", lt );
93     return stamp;
94 }
95 
96 /* gettimestamp2()
97  *
98  * Creates a timestamp in the form:
99  *     [11:23]
100  */
gettimestamp2()101 char *gettimestamp2()
102 {
103     time_t now;
104     struct tm *form;
105     static char stamp[8];
106 
107     time(&now);
108     form = localtime(&now);
109     strftime(stamp, 8, "[%H:%M]", form);
110     return stamp;
111 }
112 
getuptime(time_t now,int * days,int * hours,int * minutes,int * seconds)113 void getuptime(time_t now, int *days, int *hours,
114 	       int *minutes, int *seconds)
115 {
116     *days = now / 86400;
117     now %= 86400;
118     *hours = now / 3600;
119     now %= 3600;
120     *minutes = now / 60;
121     *seconds = now % 60;
122 }
123 
report(char * format,...)124 void report( char *format, ... )
125 {
126     char buffer[ 150 ];
127     va_list	va;
128 
129     va_start( va, format );
130     vsnprintf( buffer, 149, format, va );
131     va_end( va );
132     fprintf( stdout, "%s + %s", gettimestamp(), buffer );
133 }
134 
error(char * format,...)135 void error( char *format, ... )
136 {
137     char buffer[ 150 ];
138     va_list	va;
139 
140     va_start( va, format );
141     vsnprintf( buffer, 149, format, va );
142     va_end( va );
143     fprintf( stdout, "%s - %s", gettimestamp(), buffer );
144 }
145 
146