svn commit: r263981 - in head: lib/libc/gen sys/kern sys/sys

Sergey Kandaurov pluknet at freebsd.org
Tue Apr 1 14:51:27 UTC 2014


On 1 April 2014 18:45, Bryan Drewery <bdrewery at freebsd.org> wrote:
> On 2014-03-31 20:24, Mateusz Guzik wrote:
>>
>> Author: mjg
>> Date: Tue Apr  1 03:20:35 2014
>>
>> New Revision: 263981
>> URL: http://svnweb.freebsd.org/changeset/base/263981
>>
>> Log:
>>   Add a new errno: EMACS - Editor too big.
>>
>>   Make a best-effort to detect that Emacs is about to executed and return
>>   the error.
>>
>>   MFC after:    1 week
>>
>> Modified:
>>   head/lib/libc/gen/errlst.c
>>   head/sys/kern/kern_exec.c
>>   head/sys/sys/errno.h
>>
>> Modified: lib/libc/gen/errlst.c
>> ===================================================================
>> --- head/lib/libc/gen/errlst.c  (263980)
>> +++ head/lib/libc/gen/errlst.c  (263981)
>> @@ -155,6 +155,7 @@
>>         "Not permitted in capability mode",     /* 94 - ECAPMODE */
>>         "State not recoverable",                /* 95 - ENOTRECOVERABLE */
>>         "Previous owner died",                  /* 96 - EOWNERDEAD */
>> +       "Editor too big",                       /* 97 - EMACS */
>>  };
>>  const int sys_nerr = sizeof(sys_errlist) / sizeof(sys_errlist[0]);
>>
>> Modified: sys/kern/kern_exec.c
>> ===================================================================
>> --- head/sys/kern/kern_exec.c   (263980)
>> +++ head/sys/kern/kern_exec.c   (263981)
>> @@ -337,6 +337,7 @@
>>         int (*img_first)(struct image_params *);
>>         struct pargs *oldargs = NULL, *newargs = NULL;
>>         struct sigacts *oldsigacts, *newsigacts;
>> +       char *e;
>>  #ifdef KTRACE
>>         struct vnode *tracevp = NULL;
>>         struct ucred *tracecred = NULL;
>> @@ -418,6 +419,19 @@
>>
>>         SDT_PROBE(proc, kernel, , exec, args->fname, 0, 0, 0, 0 );
>>
>> +       /*
>> +        * A best-effort to check whether the file to be run is EMACS
>> +        */
>> +       if (args->fname != NULL) {
>> +               e = args->fname + strlen(args->fname);
>> +               while (e > args->fname && *e != '/')
>> +                       e--;
>> +               if (strcasecmp(e, "/emacs") == 0) {
>> +                       error = EMACS;
>> +                       goto exec_fail;
>> +               }
>> +       }
>> +
>>  interpret:
>>         if (args->fname != NULL) {
>>  #ifdef CAPABILITY_MODE
>> Modified: sys/sys/errno.h
>> ===================================================================
>> --- head/sys/sys/errno.h        (263980)
>> +++ head/sys/sys/errno.h        (263981)
>> @@ -178,10 +178,11 @@
>>  #define        ECAPMODE        94              /* Not permitted in
>> capability mode */
>>  #define        ENOTRECOVERABLE 95              /* State not recoverable
>> */
>>  #define        EOWNERDEAD      96              /* Previous owner died */
>> +#define        EMACS           97              /* Editor too big */
>>  #endif /* _POSIX_SOURCE */
>>
>>  #ifndef _POSIX_SOURCE
>> -#define        ELAST           96              /* Must be equal largest
>> errno */
>> +#define        ELAST           97              /* Must be equal largest
>> errno */
>>  #endif /* _POSIX_SOURCE */
>>
>>  #ifdef _KERNEL
>
>
> Don't forget errno(2):
>

As well as lib/libc/nls/C.msg

-- 
wbr,
pluknet


More information about the svn-src-all mailing list