Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 201071 Details for
Bug 180596
Chattr command doesn't provide expected exit code in case of failure
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
patch sent upstream
chattr_status.patch (text/plain), 3.66 KB, created by
Eric Sandeen
on 2007-09-20 17:59:49 UTC
(
hide
)
Description:
patch sent upstream
Filename:
MIME Type:
Creator:
Eric Sandeen
Created:
2007-09-20 17:59:49 UTC
Size:
3.66 KB
patch
obsolete
>Index: e2fsprogs-1.40.2/misc/chattr.c >=================================================================== >--- e2fsprogs-1.40.2.orig/misc/chattr.c >+++ e2fsprogs-1.40.2/misc/chattr.c >@@ -182,7 +182,7 @@ static int decode_arg (int * i, int argc > > static int chattr_dir_proc (const char *, struct dirent *, void *); > >-static void change_attributes (const char * name) >+static int change_attributes (const char * name, int cmdline) > { > unsigned long flags; > STRUCT_STAT st; >@@ -190,19 +190,20 @@ static void change_attributes (const cha > if (LSTAT (name, &st) == -1) { > com_err (program_name, errno, _("while trying to stat %s"), > name); >- return; >+ return -1; > } >- if (S_ISLNK(st.st_mode) && recursive) >- return; > >- /* Don't try to open device files, fifos etc. We probably >- ought to display an error if the file was explicitly given >- on the command line (whether or not recursive was >- requested). */ >- if (!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode) && >- !S_ISDIR(st.st_mode)) >- return; >+ /* Just silently ignore links found by recursion; >+ not an error according to the manpage */ >+ if (S_ISLNK(st.st_mode) && !cmdline) >+ return 0; > >+ /* Don't try to open device files, fifos etc. */ >+ if (!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode) && >+ !S_ISDIR(st.st_mode)) { >+ com_err (program_name, EINVAL, _("for file %s"), name); >+ return -1; >+ } > if (set) { > if (verbose) { > printf (_("Flags of %s set as "), name); >@@ -212,10 +213,11 @@ static void change_attributes (const cha > if (fsetflags (name, sf) == -1) > perror (name); > } else { >- if (fgetflags (name, &flags) == -1) >+ if (fgetflags (name, &flags) == -1) { > com_err (program_name, errno, > _("while reading flags on %s"), name); >- else { >+ return -1; >+ } else { > if (rem) > flags &= ~rf; > if (add) >@@ -227,25 +229,32 @@ static void change_attributes (const cha > } > if (!S_ISDIR(st.st_mode)) > flags &= ~EXT2_DIRSYNC_FL; >- if (fsetflags (name, flags) == -1) >+ if (fsetflags (name, flags) == -1) { > com_err (program_name, errno, > _("while setting flags on %s"), name); >+ return -1; >+ } >+ > } > } > if (set_version) { > if (verbose) > printf (_("Version of %s set as %lu\n"), name, version); >- if (fsetversion (name, version) == -1) >+ if (fsetversion (name, version) == -1) { > com_err (program_name, errno, > _("while setting version on %s"), name); >+ return -1; >+ } > } > if (S_ISDIR(st.st_mode) && recursive) >- iterate_on_dir (name, chattr_dir_proc, NULL); >+ return iterate_on_dir (name, chattr_dir_proc, NULL); > } > > static int chattr_dir_proc (const char * dir_name, struct dirent * de, > void * private EXT2FS_ATTR((unused))) > { >+ int err; >+ > if (strcmp (de->d_name, ".") && strcmp (de->d_name, "..")) { > char *path; > >@@ -253,11 +262,13 @@ static int chattr_dir_proc (const char * > if (!path) { > fprintf(stderr, _("Couldn't allocate path variable " > "in chattr_dir_proc")); >- exit(1); >+ return -1; > } > sprintf (path, "%s/%s", dir_name, de->d_name); >- change_attributes (path); >+ err = change_attributes (path, 0); > free(path); >+ if (err) >+ return -1; > } > return 0; > } >@@ -266,6 +277,7 @@ int main (int argc, char ** argv) > { > int i, j; > int end_arg = 0; >+ int err, retval = 0; > > #ifdef ENABLE_NLS > setlocale(LC_MESSAGES, ""); >@@ -303,7 +315,10 @@ int main (int argc, char ** argv) > if (verbose) > fprintf (stderr, "chattr %s (%s)\n", > E2FSPROGS_VERSION, E2FSPROGS_DATE); >- for (j = i; j < argc; j++) >- change_attributes (argv[j]); >- exit(0); >+ for (j = i; j < argc; j++) { >+ err = change_attributes (argv[j], 1); >+ if (err) >+ retval = 1; >+ } >+ exit(retval); > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 180596
: 201071