From: Dmitry Antipov Date: Tue, 2 Sep 2014 06:49:40 +0000 (+0400) Subject: * callproc.c (egetenv_internal): Add arg and rename from egetenv ... X-Git-Tag: emacs-25.0.90~2635^2~679^2~367 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f25cd98b276ba1a11d7be5506c8624c72060b25f;p=emacs.git * callproc.c (egetenv_internal): Add arg and rename from egetenv ... * lisp.h (egetenv): ... because of a new inline function used to avoid calls to strlen for a compile-time constants. --- diff --git a/src/ChangeLog b/src/ChangeLog index 2de909ef800..3ce27b1ce19 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -3,6 +3,9 @@ * fileio.c (CHECK_LENGTH): New macro. (Fexpand_file_name): Use it and get rid of a few more calls to strlen and strcat. + * callproc.c (egetenv_internal): Add arg and rename from egetenv ... + * lisp.h (egetenv): ... because of a new inline function used to + avoid calls to strlen for a compile-time constants. 2014-09-01 Dmitry Antipov diff --git a/src/callproc.c b/src/callproc.c index 01008312155..e8b61b9f01f 100644 --- a/src/callproc.c +++ b/src/callproc.c @@ -1488,14 +1488,14 @@ If optional parameter ENV is a list, then search this list instead of } /* A version of getenv that consults the Lisp environment lists, - easily callable from C. */ + easily callable from C. This is usually called from egetenv. */ char * -egetenv (const char *var) +egetenv_internal (const char *var, ptrdiff_t len) { char *value; ptrdiff_t valuelen; - if (getenv_internal (var, strlen (var), &value, &valuelen, Qnil)) + if (getenv_internal (var, len, &value, &valuelen, Qnil)) return value; else return 0; diff --git a/src/lisp.h b/src/lisp.h index 05b27ab9f00..cac536943a5 100644 --- a/src/lisp.h +++ b/src/lisp.h @@ -4442,7 +4442,16 @@ extern char *xlispstrdup (Lisp_Object) ATTRIBUTE_MALLOC; extern void dupstring (char **, char const *); extern void xputenv (const char *); -extern char *egetenv (const char *); +extern char *egetenv_internal (const char *, ptrdiff_t); + +/* VAR is usually a compile-time constant, so the + call to strlen is likely to be optimized away. */ + +INLINE char * +egetenv(const char *var) +{ + return egetenv_internal (var, strlen (var)); +} /* Copy Lisp string to temporary (allocated on stack) C string. */