[Commits] r635 - in trunk/daemon: lib src

new-commit at lists.openvcp.org new-commit at lists.openvcp.org
Sat Dec 20 17:14:55 UTC 2008


Author: ftx
Date: 2008-12-20 17:14:53 +0000 (Sat, 20 Dec 2008)
New Revision: 635

Modified:
   trunk/daemon/lib/fs.c
   trunk/daemon/lib/fs.h
   trunk/daemon/src/setup.c
Log:
detect tagxid support


Modified: trunk/daemon/lib/fs.c
===================================================================
--- trunk/daemon/lib/fs.c	2008-12-13 12:40:32 UTC (rev 634)
+++ trunk/daemon/lib/fs.c	2008-12-20 17:14:53 UTC (rev 635)
@@ -29,9 +29,9 @@
 #include <stdarg.h>
 
 #include "fs.h"
+#include "strings.h"
 
 
-
 int file_replace(char *filename, char *searched, char *replacement)
 {
 
@@ -362,3 +362,65 @@
 
 	return 1;
 }
+
+
+
+
+int dir_getlevel(char *path)
+{
+	int slashcount = 0;
+	int i=0;
+	
+	while(i<strlen(path))
+	{
+		if(path[i] == '/')
+			slashcount++;
+		i++;
+	}
+	
+	return slashcount;
+}
+
+
+
+int fs_tagxid_support(char *targetpath)
+{
+
+	char *mountsstr, **linestrs;
+	unsigned int line_num;
+	int i = 0;
+	int highstlevel=-1, support=0;
+	
+	char mpstr[250], optstr[250];
+	
+	mountsstr = file_read("/proc/mounts");
+	
+	if(mountsstr != NULL)
+	{
+		linestrs = split_string(mountsstr, '\n', &line_num);
+	
+		while(i < line_num)
+		{
+			sscanf(linestrs[i], "%*s %249s %*s %249s", mpstr, optstr);
+		
+		
+			if(strncmp(mpstr, targetpath, strlen(mpstr)) == 0)
+			{
+				if(dir_getlevel(mpstr) > highstlevel)
+				{
+					if(strstr(optstr, "tagxid") != NULL)
+						support=1;
+					else support=0;
+				}
+			}
+		
+			i++;
+		}
+	
+		free_strings(linestrs, line_num);
+		free(mountsstr);
+	}
+	
+	return support;
+}
+

Modified: trunk/daemon/lib/fs.h
===================================================================
--- trunk/daemon/lib/fs.h	2008-12-13 12:40:32 UTC (rev 634)
+++ trunk/daemon/lib/fs.h	2008-12-20 17:14:53 UTC (rev 635)
@@ -36,5 +36,7 @@
 
 	int dir_exist(char *dirname);
 	int dir_remove(char *dirname);
+	int dir_getlevel(char *path);
+	int fs_tagxid_support(char *targetpath);
 
 #endif

Modified: trunk/daemon/src/setup.c
===================================================================
--- trunk/daemon/src/setup.c	2008-12-13 12:40:32 UTC (rev 634)
+++ trunk/daemon/src/setup.c	2008-12-20 17:14:53 UTC (rev 635)
@@ -117,6 +117,7 @@
 	char path[BUF_SIZE+1];
 	char *context, *homedir, *imagedir, *backupdir;
 	char cachepath[BUF_SIZE]; 
+	char *tmpimagedir, *tmphomedir;
 	char *output = NULL;
 	int ret;
 	struct image_st image;
@@ -170,19 +171,13 @@
 		execb_cmd("rm", "rm", "-rf", homedir, NULL);
 	
 	}
-
-	if(dir_exist(homedir))
-	{
-		free(backupdir);
-		free(imagedir);
-		free(homedir);	
-		
-		return -1;
-	}
-
-
-	execb_cmd("cp", "cp", "-a", imagedir, homedir, NULL);
 	
+	mkdir(homedir, 0755);
+	
+	tmpimagedir = concat(imagedir, "/.", NULL);
+	tmphomedir = concat(homedir, "/.", NULL);
+	execb_cmd("cp", "cp", "-a", tmpimagedir, tmphomedir, NULL);
+	free(tmpimagedir); free(tmphomedir);
 			
 	if(dir_exist(backupdir))
 	{
@@ -194,7 +189,7 @@
 	context = file_read(path);	
 	trim_string(context);
 	
-	execb_cmd("chxid", "chxid", "-c",  context, "-R", homedir, NULL);
+	if(fs_tagxid_support(homedir)) execb_cmd("chxid", "chxid", "-c",  context, "-R", homedir, NULL);
 
 		
 	free(context);



More information about the Commits mailing list