--- /home/kobras/tatadm/kernel/linux-2.4.3-UP/fs/binfmt_misc.c Fri Feb 9 20:29:44 2001 +++ binfmt_misc.c Fri Oct 19 15:26:32 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 @@ -300,9 +302,7 @@ e->proc_name = copyarg(&dp, &sp, &cnt, del, 0, &err); - /* we can use bit 3 of type for ext/magic - flag due to the nice encoding of E and M */ - if ((*sp & ~('E' | 'M')) || (sp[1] != del)) + if ((*sp != 'E' && *sp != 'M') || (sp[1] != del)) err = -EINVAL; else e->flags = (*sp++ & (ENTRY_MAGIC | ENTRY_ENABLED)); @@ -354,28 +354,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 +390,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;