Page Menu
Home
GnuPG
Search
Configure Global Search
Log In
Files
F33202421
unsetenv.c
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
2 KB
Subscribers
None
unsetenv.c
View Options
/* Copyright (C) 1992,1995-1999,2000-2002,2005-2006 Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, see <http://www.gnu.org/licenses/>. */
#include
<config.h>
#include
<errno.h>
#if !_LIBC
# ifdef HAVE_W32CE_SYSTEM
# include <gpg-error.h>
# define __set_errno(ev) gpg_err_set_errno ((ev))
# else
# define __set_errno(ev) ((errno) = (ev))
# endif
#endif
#include
<stdlib.h>
#include
<string.h>
#include
<unistd.h>
#if !_LIBC
# define __environ environ
# ifndef HAVE_ENVIRON_DECL
extern
char
**
environ
;
# endif
#endif
#if _LIBC
/* This lock protects against simultaneous modifications of 'environ'. */
# include <bits/libc-lock.h>
__libc_lock_define_initialized
(
static
,
envlock
)
# define LOCK __libc_lock_lock (envlock)
# define UNLOCK __libc_lock_unlock (envlock)
#else
# define LOCK
# define UNLOCK
#endif
/* In the GNU C library we must keep the namespace clean. */
#ifdef _LIBC
# define unsetenv __unsetenv
#endif
int
unsetenv
(
const
char
*
name
)
{
size_t
len
;
char
**
ep
;
if
(
name
==
NULL
||
*
name
==
'\0'
||
strchr
(
name
,
'='
)
!=
NULL
)
{
__set_errno
(
EINVAL
);
return
-1
;
}
len
=
strlen
(
name
);
LOCK
;
ep
=
__environ
;
while
(
*
ep
!=
NULL
)
if
(
!
strncmp
(
*
ep
,
name
,
len
)
&&
(
*
ep
)[
len
]
==
'='
)
{
/* Found it. Remove this pointer by moving later ones back. */
char
**
dp
=
ep
;
do
dp
[
0
]
=
dp
[
1
];
while
(
*
dp
++
);
/* Continue the loop in case NAME appears again. */
}
else
++
ep
;
UNLOCK
;
return
0
;
}
#ifdef _LIBC
# undef unsetenv
weak_alias
(
__unsetenv
,
unsetenv
)
#endif
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Thu, Nov 20, 2:00 AM (1 d, 13 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
9d/4e/2ceb42e5d5ed5faa218fd02f9663
Attached To
rG GnuPG
Event Timeline
Log In to Comment