[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