--- /usr/src/linux/fs/binfmt_misc.c.org Fri Feb 9 20:29:44 2001 +++ /usr/src/linux/fs/binfmt_misc.c Fri Oct 19 02:32:24 2001 @@ -13,6 +13,8 @@ * 1997-06-26 hpa: pass the real filename rather than argv[0] * 1997-06-30 minor cleanup * 1997-08-09 removed extension stripping, locking cleanup + * 2001-10-15 Albert Bartoszko: cleanup, + * correct return value of proc_read_status() */ #include @@ -354,28 +356,19 @@ char *dp; int elen, i, err; -#ifndef VERBOSE_STATUS - if (data) { + if (!data) + sprintf(page, "%s\n", "enabled"); + else { if (!(e = get_entry((int) data))) { err = -ENOENT; goto _err; - } - i = e->flags & ENTRY_ENABLED; - put_entry(e); - } else { - i = enabled; - } - sprintf(page, "%s\n", (i ? "enabled" : "disabled")); + } +#ifndef VERBOSE_STATUS + sprintf(page, "%s\n", + (e->flags & ENTRY_ENABLED) ? "enabled" : "disabled"); #else - if (!data) - sprintf(page, "%s\n", (enabled ? "enabled" : "disabled")); - else { - if (!(e = get_entry((long) data))) { - err = -ENOENT; - goto _err; - } - sprintf(page, "%s\ninterpreter %s\n", - (e->flags & ENTRY_ENABLED ? "enabled" : "disabled"), + sprintf(page, "%s\ninterpreter %s\n", + (e->flags & ENTRY_ENABLED) ? "enabled" : "disabled", e->interpreter); dp = page + strlen(page); if (!(e->flags & ENTRY_MAGIC)) { @@ -399,13 +392,14 @@ *dp++ = '\n'; *dp = '\0'; } - put_entry(e); - } #endif - + put_entry(e); + } elen = strlen(page) - off; if (elen < 0) elen = 0; + if (elen > count) + elen = count; *eof = (elen <= count) ? 1 : 0; *start = page + off; err = elen;