* [B.A.T.M.A.N.] [PATCH] batctl: avoid parsing bat-hosts multiple times
@ 2010-03-04 12:23 Daniel Seither
2010-03-04 12:49 ` Marek Lindner
0 siblings, 1 reply; 3+ messages in thread
From: Daniel Seither @ 2010-03-04 12:23 UTC (permalink / raw)
To: The list for a Better Approach To Mobile Ad-hoc Networking
Currently, running batctl from the home directory leads to warnings
("Warning - mac already known") if ~/bat-hosts exists. This is caused by
batctl parsing both "~/bat-hosts" and "bat-hosts" which happen to be the
same file when the working directory is ~
This patch adds duplicate file name detection to bat_hosts_init() to
avoid these warnings.
Signed-off-by: Daniel Seither <post@tiwoc.de>
---
Index: batctl/bat-hosts.c
===================================================================
--- batctl/bat-hosts.c (revision 1579)
+++ batctl/bat-hosts.c (working copy)
@@ -23,6 +23,7 @@
#include <stdio.h>
#include <stdint.h>
+#include <limits.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
@@ -144,9 +145,11 @@
void bat_hosts_init(void)
{
- unsigned int i;
+ unsigned int i, j, parse;
char confdir[CONF_DIR_LEN];
char *homedir;
+ size_t locations = sizeof(bat_hosts_path) / sizeof(char *);
+ char normalized[locations][PATH_MAX];
host_hash = hash_new(64, compare_mac, choose_mac);
@@ -157,7 +160,7 @@
homedir = getenv("HOME");
- for (i = 0; i < sizeof(bat_hosts_path) / sizeof(char *); i++) {
+ for (i = 0; i < locations; i++) {
strcpy(confdir, "");
if (strlen(bat_hosts_path[i]) >= 2
@@ -169,8 +172,22 @@
strncpy(confdir, bat_hosts_path[i], CONF_DIR_LEN);
confdir[CONF_DIR_LEN - 1] = '\0';
}
-
- parse_hosts_file(&host_hash, confdir);
+
+ if (realpath(confdir, normalized[i]) == NULL) {
+ normalized[i][0] = '\0';
+ continue;
+ }
+
+ /* check for duplicates: don't parse the same file twice */
+ parse = 1;
+ for (j = 0; j < i; j++)
+ if (strncmp(normalized[i], normalized[j], CONF_DIR_LEN) == 0) {
+ parse = 0;
+ break;
+ }
+
+ if (parse && (normalized[i][0] != '\0'))
+ parse_hosts_file(&host_hash, normalized[i]);
}
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [B.A.T.M.A.N.] [PATCH] batctl: avoid parsing bat-hosts multiple times
2010-03-04 12:23 [B.A.T.M.A.N.] [PATCH] batctl: avoid parsing bat-hosts multiple times Daniel Seither
@ 2010-03-04 12:49 ` Marek Lindner
2010-03-04 13:48 ` Daniel Seither
0 siblings, 1 reply; 3+ messages in thread
From: Marek Lindner @ 2010-03-04 12:49 UTC (permalink / raw)
To: The list for a Better Approach To Mobile Ad-hoc Networking
On Thursday 04 March 2010 20:23:21 Daniel Seither wrote:
> Currently, running batctl from the home directory leads to warnings
> ("Warning - mac already known") if ~/bat-hosts exists. This is caused by
> batctl parsing both "~/bat-hosts" and "bat-hosts" which happen to be the
> same file when the working directory is ~
>
> This patch adds duplicate file name detection to bat_hosts_init() to
> avoid these warnings.
I tested your patch and it works very well. That is a nice catch! I did not
stumble over this problem before.
However, I wonder whether it would be better to let realpath() allocate the
normalized file path buffer instead of using the static normalized array, simply
to save some disk space. What do you think ?
Cheers,
Marek
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [B.A.T.M.A.N.] [PATCH] batctl: avoid parsing bat-hosts multiple times
2010-03-04 12:49 ` Marek Lindner
@ 2010-03-04 13:48 ` Daniel Seither
0 siblings, 0 replies; 3+ messages in thread
From: Daniel Seither @ 2010-03-04 13:48 UTC (permalink / raw)
To: The list for a Better Approach To Mobile Ad-hoc Networking
Marek Lindner schrieb:
> However, I wonder whether it would be better to let realpath() allocate the
> normalized file path buffer instead of using the static normalized array, simply
> to save some disk space. What do you think ?
Yes, would be better; I didn't think about this issue. I'll send an
updated patch in a few seconds.
Regards,
Daniel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-03-04 13:48 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-04 12:23 [B.A.T.M.A.N.] [PATCH] batctl: avoid parsing bat-hosts multiple times Daniel Seither
2010-03-04 12:49 ` Marek Lindner
2010-03-04 13:48 ` Daniel Seither
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox