185 lines
5.3 KiB
Diff
185 lines
5.3 KiB
Diff
diff --exclude-from=exclude --exclude='*.po' -N -u -r nsapolicycoreutils/restorecon/restorecon.8 policycoreutils-1.30.29/restorecon/restorecon.8
|
|
--- nsapolicycoreutils/restorecon/restorecon.8 2006-08-28 16:58:19.000000000 -0400
|
|
+++ policycoreutils-1.30.29/restorecon/restorecon.8 2006-09-14 08:12:16.000000000 -0400
|
|
@@ -23,6 +23,9 @@
|
|
|
|
.SH "OPTIONS"
|
|
.TP
|
|
+.B \-i
|
|
+ignore files that do not exist
|
|
+.TP
|
|
.B \-f infilename
|
|
infilename contains a list of files to be processed by application. Use \- for stdin.
|
|
.TP
|
|
diff --exclude-from=exclude --exclude='*.po' -N -u -r nsapolicycoreutils/restorecon/restorecon.c policycoreutils-1.30.29/restorecon/restorecon.c
|
|
--- nsapolicycoreutils/restorecon/restorecon.c 2006-09-01 22:32:11.000000000 -0400
|
|
+++ policycoreutils-1.30.29/restorecon/restorecon.c 2006-09-14 08:17:23.000000000 -0400
|
|
@@ -11,9 +11,10 @@
|
|
* restorecon [-Rnv] pathname...
|
|
*
|
|
* -e Specify directory to exclude
|
|
+ * -i Ignore error if file does not exist
|
|
* -n Do not change any file labels.
|
|
* -v Show changes in file labels.
|
|
- * -o filename save list of files with incorrect context
|
|
+ * -o filename save list of files with incorrect context
|
|
* -F Force reset of context to match file_context for customizable files
|
|
*
|
|
* pathname... The file(s) to label
|
|
@@ -41,12 +42,14 @@
|
|
#include <ftw.h>
|
|
|
|
static int change = 1;
|
|
+static int change_ctr = 0;
|
|
static int verbose = 0;
|
|
static int progress = 0;
|
|
static FILE *outfile = NULL;
|
|
static char *progname;
|
|
static int errors = 0;
|
|
static int recurse = 0;
|
|
+static int file_exist = 1;
|
|
static int force = 0;
|
|
#define STAT_BLOCK_SIZE 1
|
|
static int pipe_fds[2] = { -1, -1 };
|
|
@@ -129,7 +132,7 @@
|
|
void usage(const char *const name)
|
|
{
|
|
fprintf(stderr,
|
|
- "usage: %s [-FnrRv] [-e excludedir ] [-o filename ] [-f filename | pathname... ]\n",
|
|
+ "usage: %s [-iFonrRv] [-e excludedir ] [-o filename ] [-f filename | pathname... ]\n",
|
|
name);
|
|
exit(1);
|
|
}
|
|
@@ -160,7 +163,9 @@
|
|
}
|
|
|
|
if (lstat(filename, &st) != 0) {
|
|
- fprintf(stderr, "lstat(%s) failed: %s\n", filename,
|
|
+ if (!file_exist && errno == ENOENT)
|
|
+ return 0;
|
|
+ fprintf(outfile, "lstat(%s) failed: %s\n", filename,
|
|
strerror(errno));
|
|
return 1;
|
|
}
|
|
@@ -249,9 +251,12 @@
|
|
freecon(scontext);
|
|
return 1;
|
|
}
|
|
- }
|
|
+ }
|
|
+ else
|
|
+ change_ctr++;
|
|
+
|
|
if (verbose)
|
|
- printf("%s reset %s context %s->%s\n",
|
|
+ fprintf(stderr, "%s reset %s context %s->%s\n",
|
|
progname, filename,
|
|
(retcontext >=
|
|
0 ? prev_context : ""),
|
|
@@ -259,7 +264,7 @@
|
|
}
|
|
}
|
|
if (verbose > 1 && !force && customizable > 0) {
|
|
- printf("%s: %s not reset customized by admin to %s\n",
|
|
+ fprintf(stderr, "%s: %s not reset customized by admin to %s\n",
|
|
progname, filename, prev_context);
|
|
}
|
|
|
|
@@ -322,6 +327,8 @@
|
|
close(pipe_fds[1]);
|
|
if (rc == -1 || rc > 0) {
|
|
if (nftw(buf, apply_spec, 1024, FTW_PHYS)) {
|
|
+ if (!file_exist && errno == ENOENT)
|
|
+ return;
|
|
fprintf(stderr,
|
|
"%s: error while labeling files under %s\n",
|
|
progname, buf);
|
|
@@ -353,11 +360,14 @@
|
|
exit(0);
|
|
set_matchpathcon_flags(MATCHPATHCON_NOTRANS);
|
|
|
|
- while ((opt = getopt(argc, argv, "pFrRnvf:o:e:")) > 0) {
|
|
+ while ((opt = getopt(argc, argv, "ipFrRnvf:o:e:")) > 0) {
|
|
switch (opt) {
|
|
case 'n':
|
|
change = 0;
|
|
break;
|
|
+ case 'i':
|
|
+ file_exist = 0;
|
|
+ break;
|
|
case 'r':
|
|
case 'R':
|
|
recurse = 1;
|
|
@@ -370,13 +380,17 @@
|
|
exit(1);
|
|
break;
|
|
case 'o':
|
|
- outfile = fopen(optarg, "w");
|
|
- if (!outfile) {
|
|
- fprintf(stderr, "Error opening %s: %s\n",
|
|
- optarg, strerror(errno));
|
|
- usage(argv[0]);
|
|
+ if (strcmp(optarg,"-") == 0)
|
|
+ outfile=stdout;
|
|
+ else {
|
|
+ outfile = fopen(optarg, "w");
|
|
+ if (!outfile) {
|
|
+ fprintf(stderr, "Error opening %s: %s\n",
|
|
+ optarg, strerror(errno));
|
|
+ usage(argv[0]);
|
|
+ }
|
|
+ __fsetlocking(outfile, FSETLOCKING_BYCALLER);
|
|
}
|
|
- __fsetlocking(outfile, FSETLOCKING_BYCALLER);
|
|
break;
|
|
case 'v':
|
|
if (progress) {
|
|
@@ -425,8 +439,11 @@
|
|
process(argv[i]);
|
|
}
|
|
}
|
|
+
|
|
if (outfile)
|
|
fclose(outfile);
|
|
|
|
+ if (change) return change_ctr;
|
|
+
|
|
return errors;
|
|
}
|
|
diff --exclude-from=exclude --exclude='*.po' -N -u -r nsapolicycoreutils/scripts/fixfiles policycoreutils-1.30.29/scripts/fixfiles
|
|
--- nsapolicycoreutils/scripts/fixfiles 2006-09-01 22:32:11.000000000 -0400
|
|
+++ policycoreutils-1.30.29/scripts/fixfiles 2006-09-14 08:12:16.000000000 -0400
|
|
@@ -117,8 +117,8 @@
|
|
exit $?
|
|
fi
|
|
if [ ! -z "$RPMFILES" ]; then
|
|
- for i in `echo $RPMFILES | sed 's/,/ /g'`; do
|
|
- rpmlist $i | ${RESTORECON} ${OUTFILES} ${FORCEFLAG} -R $* -f - 2>&1 >> $LOGFILE
|
|
+ for i in `echo "$RPMFILES" | sed 's/,/ /g'`; do
|
|
+ rpmlist $i | ${RESTORECON} ${OUTFILES} ${FORCEFLAG} -i $* -f - 2>> $LOGFILE
|
|
done
|
|
exit $?
|
|
fi
|
|
@@ -126,10 +126,10 @@
|
|
if [ -x /usr/bin/find ]; then
|
|
for d in ${DIRS} ; do find $d \
|
|
! \( -fstype ext2 -o -fstype ext3 -o -fstype jfs -o -fstype xfs \) -prune -o -print | \
|
|
- ${RESTORECON} ${OUTFILES} ${FORCEFLAG} $* -f - 2>&1 >> $LOGFILE
|
|
+ ${RESTORECON} ${OUTFILES} ${FORCEFLAG} $* -f - 2>> $LOGFILE
|
|
done
|
|
else
|
|
- ${RESTORECON} ${OUTFILES} ${FORCEFLAG} -R $* $DIRS 2>&1 >> $LOGFILE
|
|
+ ${RESTORECON} ${OUTFILES} ${FORCEFLAG} -R $* $DIRS 2>> $LOGFILE
|
|
fi
|
|
|
|
exit $?
|
|
@@ -219,7 +219,7 @@
|
|
# check if they specified both DIRS and RPMFILES
|
|
#
|
|
|
|
-if [ ! -z $RPMFILES ]; then
|
|
+if [ ! -z "$RPMFILES" ]; then
|
|
if [ $OPTIND -le $# ]; then
|
|
usage
|
|
fi
|