Skip to content

Commit 5d94e21

Browse files
committed
Add custom log file name function in command line via -f
1 parent 209a858 commit 5d94e21

File tree

5 files changed

+54
-5
lines changed

5 files changed

+54
-5
lines changed

config.c

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -756,6 +756,7 @@ void config_init (char *fname, struct audio_s *p_audio_config,
756756
strlcpy (p_misc_config->gpsnmea_port, "", sizeof(p_misc_config->gpsnmea_port));
757757
strlcpy (p_misc_config->nmea_port, "", sizeof(p_misc_config->nmea_port));
758758
strlcpy (p_misc_config->logdir, "", sizeof(p_misc_config->logdir));
759+
strlcpy (p_misc_config->logfilename, "", sizeof(p_misc_config->logfilename));
759760

760761

761762
/*
@@ -3863,6 +3864,28 @@ void config_init (char *fname, struct audio_s *p_audio_config,
38633864
}
38643865
}
38653866

3867+
3868+
/*
3869+
* LOGFILENAME - Log file name.
3870+
*/
3871+
else if (strcasecmp(t, "logfilename") == 0) {
3872+
t = split(NULL,0);
3873+
if (t == NULL) {
3874+
text_color_set(DW_COLOR_ERROR);
3875+
dw_printf ("Config file: Missing name for LogFileName on line %d.\n", line);
3876+
continue;
3877+
}
3878+
else {
3879+
strlcpy (p_misc_config->logfilename, t, sizeof(p_misc_config->logfilename));
3880+
}
3881+
t = split(NULL,0);
3882+
if (t != NULL) {
3883+
text_color_set(DW_COLOR_ERROR);
3884+
dw_printf ("Config file: LOGFILE on line %d should have logfile name and nothing more.\n", line);
3885+
}
3886+
}
3887+
3888+
38663889
/*
38673890
* BEACON channel delay every message
38683891
*

config.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ struct misc_config_s {
5656

5757
char logdir[80]; /* Directory for saving activity logs. */
5858

59+
char logfilename[80]; /* File name for saving activity logs. */
60+
5961
int sb_configured; /* TRUE if SmartBeaconing is configured. */
6062
int sb_fast_speed; /* MPH */
6163
int sb_fast_rate; /* seconds */

direwolf.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,7 @@ int main (int argc, char *argv[])
178178
int r_opt = 0, n_opt = 0, b_opt = 0, B_opt = 0, D_opt = 0; /* Command line options. */
179179
char P_opt[16];
180180
char l_opt[80];
181+
char f_opt[80];
181182
char input_file[80];
182183

183184
int t_opt = 1; /* Text color option. */
@@ -194,6 +195,7 @@ int main (int argc, char *argv[])
194195
#endif
195196

196197
strlcpy(l_opt, "", sizeof(l_opt));
198+
strlcpy(f_opt, "", sizeof(f_opt));
197199
strlcpy(P_opt, "", sizeof(P_opt));
198200

199201
#if __WIN32__
@@ -322,7 +324,7 @@ int main (int argc, char *argv[])
322324

323325
/* ':' following option character means arg is required. */
324326

325-
c = getopt_long(argc, argv, "P:B:D:c:pxr:b:n:d:q:t:Ul:Sa:",
327+
c = getopt_long(argc, argv, "P:B:D:c:pxr:b:n:d:q:t:Ul:Sa:Uf:",
326328
long_options, &option_index);
327329
if (c == -1)
328330
break;
@@ -501,6 +503,11 @@ int main (int argc, char *argv[])
501503
strlcpy (l_opt, optarg, sizeof(l_opt));
502504
break;
503505

506+
case 'f': /* -f for log file name */
507+
508+
strlcpy (f_opt, optarg, sizeof(f_opt));
509+
break;
510+
504511
case 'S': /* Print symbol tables and exit. */
505512

506513
symbols_init ();
@@ -594,6 +601,11 @@ int main (int argc, char *argv[])
594601
strlcpy (misc_config.logdir, l_opt, sizeof(misc_config.logdir));
595602
}
596603

604+
if (strlen(f_opt) > 0) {
605+
strlcpy (misc_config.logfilename, f_opt, sizeof(misc_config.logfilename));
606+
}
607+
608+
597609
misc_config.enable_kiss_pt = enable_pseudo_terminal;
598610

599611
if (strlen(input_file) > 0) {
@@ -711,7 +723,7 @@ int main (int argc, char *argv[])
711723
* log the tracker beacon transmissions with fake channel 999.
712724
*/
713725

714-
log_init(misc_config.logdir);
726+
log_init(misc_config.logdir, misc_config.logfilename);
715727
beacon_init (&audio_config, &misc_config);
716728

717729

@@ -1062,6 +1074,7 @@ static void usage (char **argv)
10621074
dw_printf ("Options:\n");
10631075
dw_printf (" -c fname Configuration file name.\n");
10641076
dw_printf (" -l logdir Directory name for log files. Use . for current.\n");
1077+
dw_printf (" -f logname Name for log file. \n");
10651078
dw_printf (" -r n Audio sample rate, per sec.\n");
10661079
dw_printf (" -n n Number of audio channels, 1 or 2.\n");
10671080
dw_printf (" -b n Bits per audio sample, 8 or 16.\n");

log.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,9 +104,10 @@ static void quote_for_csv (char *out, size_t outsize, const char *in) {
104104
static char g_log_dir[80];
105105
static FILE *g_log_fp;
106106
static char g_open_fname[20];
107+
static char g_logfilename[80];
107108

108109

109-
void log_init (char *path)
110+
void log_init (char *path, char *logfilename)
110111
{
111112
struct stat st;
112113

@@ -118,6 +119,11 @@ void log_init (char *path)
118119
return;
119120
}
120121

122+
if (strlen(logfilename) != 0) {
123+
strlcpy (g_logfilename, logfilename, sizeof(g_logfilename));
124+
}
125+
126+
121127
if (stat(path,&st) == 0) {
122128
// Exists, but is it a directory?
123129
if (S_ISDIR(st.st_mode)) {
@@ -191,7 +197,12 @@ void log_write (int chan, decode_aprs_t *A, packet_t pp, alevel_t alevel, retry_
191197

192198
// Microsoft doesn't recognize %F as equivalent to %Y-%m-%d
193199

200+
if (strlen(g_logfilename) != 0) {
201+
strftime (fname, sizeof(fname), g_logfilename, &tm);
202+
}
203+
else {
194204
strftime (fname, sizeof(fname), "%Y-%m-%d.log", &tm);
205+
}
195206

196207
// Close current file if name has changed
197208

log.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010

1111

1212

13-
void log_init (char *path);
13+
void log_init (char *path, char *logfilename);
1414

1515
void log_write (int chan, decode_aprs_t *A, packet_t pp, alevel_t alevel, retry_t retries);
1616

17-
void log_term (void);
17+
void log_term (void);

0 commit comments

Comments
 (0)