Rev 6099 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6099 | Rev 9959 | ||
---|---|---|---|
Line 83... | Line 83... | ||
83 | _DEFUN (_findenv_r, (reent_ptr, name, offset), |
83 | _DEFUN (_findenv_r, (reent_ptr, name, offset), |
84 | struct _reent *reent_ptr _AND |
84 | struct _reent *reent_ptr _AND |
85 | register _CONST char *name _AND |
85 | register _CONST char *name _AND |
86 | int *offset) |
86 | int *offset) |
87 | { |
87 | { |
- | 88 | register int len; |
|
- | 89 | register char **p; |
|
- | 90 | _CONST char *c; |
|
- | 91 | ||
- | 92 | ENV_LOCK; |
|
- | 93 | ||
- | 94 | /* In some embedded systems, this does not get set. This protects |
|
- | 95 | newlib from dereferencing a bad pointer. */ |
|
- | 96 | if (!*p_environ) |
|
- | 97 | { |
|
- | 98 | ENV_UNLOCK; |
|
- | 99 | return NULL; |
|
- | 100 | } |
|
- | 101 | ||
- | 102 | c = name; |
|
- | 103 | while (*c && *c != '=') c++; |
|
- | 104 | ||
- | 105 | /* Identifiers may not contain an '=', so cannot match if does */ |
|
- | 106 | if(*c != '=') |
|
- | 107 | { |
|
- | 108 | len = c - name; |
|
- | 109 | for (p = *p_environ; *p; ++p) |
|
- | 110 | if (!strncmp (*p, name, len)) |
|
- | 111 | if (*(c = *p + len) == '=') |
|
- | 112 | { |
|
- | 113 | *offset = p - *p_environ; |
|
- | 114 | ENV_UNLOCK; |
|
- | 115 | return (char *) (++c); |
|
- | 116 | } |
|
- | 117 | } |
|
- | 118 | ENV_UNLOCK; |
|
88 | return NULL; |
119 | return NULL; |
89 | } |
120 | } |
Line 90... | Line 121... | ||
90 | 121 | ||
91 | /* |
122 | /* |
Line 98... | Line 129... | ||
98 | struct _reent *reent_ptr _AND |
129 | struct _reent *reent_ptr _AND |
99 | _CONST char *name) |
130 | _CONST char *name) |
100 | { |
131 | { |
101 | int offset; |
132 | int offset; |
Line 102... | Line -... | ||
102 | - | ||
103 | return NULL; |
133 | |
104 | // return _findenv_r (reent_ptr, name, &offset); |
134 | return _findenv_r (reent_ptr, name, &offset); |