public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
* [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