mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Update.
2000-04-11 Ulrich Drepper <drepper@redhat.com> * posix/globtest.sh: Fix last change. 2000-04-10 Philip Blundell <philb@gnu.org> * sysdeps/unix/sysv/linux/bits/in.h (IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP): New names for IPV6_ADD_MEMBERSHIP, IPV6_DROP_MEMBERSHIP. * sysdeps/generic/bits/in.h (IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP): Likewise. 2000-04-11 Ulrich Drepper <drepper@redhat.com> * elf/readlib (process_file): Close streams in case of an error. 2000-04-09 Andreas Jaeger <aj@suse.de> * elf/readlib.c (process_file): Check if file is big enough to contain aout and ELF headers. Reported by Reinhard Moosauer <RMoosauer@steinecker.com>. 2000-04-10 Jes Sorensen <Jes.Sorensen@cern.ch> * elf/dl-fini.c: Include alloca.h to get proper prototype for alloca(). 2000-04-11 Ulrich Drepper <drepper@redhat.com> * test-skeleton.c (main): If STDOUT_UNBUFFERED is defined, make stdout stream unbuffered. * rt/Makefile (tests): Add tst-clock. Add rules to build tst-clock. * rt/tst-clock.c: New file. * sysdeps/unix/i386/i586/clock_getres.c: Correct expression to decide about initialization of nsec. * sysdeps/unix/i386/i586/clock_gettime.c: Correct expression to decide about initialization of freq. Set retval to zero if successful. * sysdeps/unix/sysv/linux/i386/get_clockfreq.c: Cache result.
This commit is contained in:
39
ChangeLog
39
ChangeLog
@ -1,3 +1,42 @@
|
|||||||
|
2000-04-11 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* posix/globtest.sh: Fix last change.
|
||||||
|
|
||||||
|
2000-04-10 Philip Blundell <philb@gnu.org>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/bits/in.h (IPV6_JOIN_GROUP,
|
||||||
|
IPV6_LEAVE_GROUP): New names for IPV6_ADD_MEMBERSHIP,
|
||||||
|
IPV6_DROP_MEMBERSHIP.
|
||||||
|
* sysdeps/generic/bits/in.h (IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP):
|
||||||
|
Likewise.
|
||||||
|
|
||||||
|
2000-04-11 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* elf/readlib (process_file): Close streams in case of an error.
|
||||||
|
|
||||||
|
2000-04-09 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
|
* elf/readlib.c (process_file): Check if file is big enough to
|
||||||
|
contain aout and ELF headers.
|
||||||
|
Reported by Reinhard Moosauer <RMoosauer@steinecker.com>.
|
||||||
|
|
||||||
|
2000-04-10 Jes Sorensen <Jes.Sorensen@cern.ch>
|
||||||
|
|
||||||
|
* elf/dl-fini.c: Include alloca.h to get proper prototype for alloca().
|
||||||
|
|
||||||
|
2000-04-11 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* test-skeleton.c (main): If STDOUT_UNBUFFERED is defined, make stdout
|
||||||
|
stream unbuffered.
|
||||||
|
* rt/Makefile (tests): Add tst-clock.
|
||||||
|
Add rules to build tst-clock.
|
||||||
|
* rt/tst-clock.c: New file.
|
||||||
|
* sysdeps/unix/i386/i586/clock_getres.c: Correct expression to decide
|
||||||
|
about initialization of nsec.
|
||||||
|
* sysdeps/unix/i386/i586/clock_gettime.c: Correct expression to decide
|
||||||
|
about initialization of freq. Set retval to zero if successful.
|
||||||
|
* sysdeps/unix/sysv/linux/i386/get_clockfreq.c: Cache result.
|
||||||
|
|
||||||
2000-04-10 Ulrich Drepper <drepper@redhat.com>
|
2000-04-10 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* Versions.def (librt): Add GLIBC_2.2.
|
* Versions.def (librt): Add GLIBC_2.2.
|
||||||
|
@ -79,8 +79,12 @@ struct ip_mreq
|
|||||||
#define IPV6_MULTICAST_IF 17
|
#define IPV6_MULTICAST_IF 17
|
||||||
#define IPV6_MULTICAST_HOPS 18
|
#define IPV6_MULTICAST_HOPS 18
|
||||||
#define IPV6_MULTICAST_LOOP 19
|
#define IPV6_MULTICAST_LOOP 19
|
||||||
#define IPV6_ADD_MEMBERSHIP 20
|
#define IPV6_JOIN_GROUP 20
|
||||||
#define IPV6_DROP_MEMBERSHIP 21
|
#define IPV6_LEAVE_GROUP 21
|
||||||
|
|
||||||
|
/* Obsolete synonyms for the above. */
|
||||||
|
#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
|
||||||
|
#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
|
||||||
|
|
||||||
/* Routing header options for IPv6. */
|
/* Routing header options for IPv6. */
|
||||||
#define IPV6_RTHDR_LOOSE 0 /* Hop doesn't need to be neighbour. */
|
#define IPV6_RTHDR_LOOSE 0 /* Hop doesn't need to be neighbour. */
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#include <alloca.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ldsodefs.h>
|
#include <ldsodefs.h>
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1999 Free Software Foundation, Inc.
|
/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
|
Contributed by Andreas Jaeger <aj@suse.de>, 1999 and
|
||||||
Jakub Jelinek <jakub@redhat.com>, 1999.
|
Jakub Jelinek <jakub@redhat.com>, 1999.
|
||||||
@ -92,10 +92,22 @@ process_file (const char *file_name, const char *lib, int *flag, char **soname,
|
|||||||
if (fstat (fileno (file), &statbuf) < 0)
|
if (fstat (fileno (file), &statbuf) < 0)
|
||||||
{
|
{
|
||||||
error (0, 0, _("Cannot fstat file %s.\n"), file_name);
|
error (0, 0, _("Cannot fstat file %s.\n"), file_name);
|
||||||
|
fclose (file);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
file_contents = mmap (0, statbuf.st_size, PROT_READ, MAP_SHARED, fileno (file), 0);
|
/* Check that the file is large enough so that we can access the
|
||||||
|
information. We're only checking the size of the headers here. */
|
||||||
|
if (statbuf.st_size < sizeof (struct exec)
|
||||||
|
|| statbuf.st_size < sizeof (ElfW(Ehdr)))
|
||||||
|
{
|
||||||
|
error (0, 0, _("File %s is too small, not checked."), file_name);
|
||||||
|
fclose (file);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
file_contents = mmap (0, statbuf.st_size, PROT_READ, MAP_SHARED,
|
||||||
|
fileno (file), 0);
|
||||||
if (file_contents == MAP_FAILED)
|
if (file_contents == MAP_FAILED)
|
||||||
{
|
{
|
||||||
error (0, 0, _("Cannot mmap file %s.\n"), file_name);
|
error (0, 0, _("Cannot mmap file %s.\n"), file_name);
|
||||||
@ -108,7 +120,7 @@ process_file (const char *file_name, const char *lib, int *flag, char **soname,
|
|||||||
if (N_MAGIC (*aout_header) == ZMAGIC
|
if (N_MAGIC (*aout_header) == ZMAGIC
|
||||||
|| N_MAGIC (*aout_header) == QMAGIC)
|
|| N_MAGIC (*aout_header) == QMAGIC)
|
||||||
{
|
{
|
||||||
/* Aout files don't have a soname, just return the the name
|
/* Aout files don't have a soname, just return the name
|
||||||
including the major number. */
|
including the major number. */
|
||||||
char *copy, *major, *dot;
|
char *copy, *major, *dot;
|
||||||
copy = xstrdup (lib);
|
copy = xstrdup (lib);
|
||||||
|
@ -319,7 +319,6 @@ if test "$user" != root; then
|
|||||||
cat <<"EOF" | cmp - $testout || result=1
|
cat <<"EOF" | cmp - $testout || result=1
|
||||||
GLOB_ABORTED
|
GLOB_ABORTED
|
||||||
EOF
|
EOF
|
||||||
fi # not run as root
|
|
||||||
|
|
||||||
${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
|
${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
|
||||||
${common_objpfx}posix/globtest -E "$testdir" "noread*/*" |
|
${common_objpfx}posix/globtest -E "$testdir" "noread*/*" |
|
||||||
@ -327,6 +326,7 @@ sort > $testout
|
|||||||
cat <<"EOF" | cmp - $testout || result=1
|
cat <<"EOF" | cmp - $testout || result=1
|
||||||
GLOB_ABORTED
|
GLOB_ABORTED
|
||||||
EOF
|
EOF
|
||||||
|
fi # not run as root
|
||||||
|
|
||||||
# Try multiple patterns (GLOB_APPEND)
|
# Try multiple patterns (GLOB_APPEND)
|
||||||
${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
|
${elf_objpfx}${rtld_installed_name} --library-path ${library_path} \
|
||||||
|
@ -38,7 +38,7 @@ include ../Makeconfig
|
|||||||
|
|
||||||
ifeq ($(have-thread-library),yes)
|
ifeq ($(have-thread-library),yes)
|
||||||
|
|
||||||
tests := tst-aio tst-aio64
|
tests := tst-aio tst-aio64 tst-clock
|
||||||
|
|
||||||
extra-libs := librt
|
extra-libs := librt
|
||||||
extra-libs-others := $(extra-libs)
|
extra-libs-others := $(extra-libs)
|
||||||
@ -55,7 +55,9 @@ $(objpfx)librt.so: $(common-objpfx)libc.so $(shared-thread-library)
|
|||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
$(objpfx)tst-aio: $(objpfx)librt.so $(shared-thread-library)
|
$(objpfx)tst-aio: $(objpfx)librt.so $(shared-thread-library)
|
||||||
$(objpfx)tst-aio64: $(objpfx)librt.so $(shared-thread-library)
|
$(objpfx)tst-aio64: $(objpfx)librt.so $(shared-thread-library)
|
||||||
|
$(objpfx)tst-clock: $(objpfx)librt.so $(shared-thread-library)
|
||||||
else
|
else
|
||||||
$(objpfx)tst-aio: $(objpfx)librt.a $(static-thread-library)
|
$(objpfx)tst-aio: $(objpfx)librt.a $(static-thread-library)
|
||||||
$(objpfx)tst-aio64: $(objpfx)librt.a $(static-thread-library)
|
$(objpfx)tst-aio64: $(objpfx)librt.a $(static-thread-library)
|
||||||
|
$(objpfx)tst-clock: $(objpfx)librt.a $(static-thread-library)
|
||||||
endif
|
endif
|
||||||
|
121
rt/tst-clock.c
Normal file
121
rt/tst-clock.c
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
/* Test program for POSIX clock_* functions.
|
||||||
|
Copyright (C) 2000 Free Software Foundation, Inc.
|
||||||
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 2000.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library 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
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||||
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <time.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* We want to see output immediately. */
|
||||||
|
#define STDOUT_UNBUFFERED
|
||||||
|
|
||||||
|
/* We expect to run at least 10 seconds. */
|
||||||
|
#define TIMEOUT 15
|
||||||
|
|
||||||
|
int
|
||||||
|
clock_test (clockid_t cl)
|
||||||
|
{
|
||||||
|
struct timespec old_ts;
|
||||||
|
struct timespec ts;
|
||||||
|
struct timespec waitit;
|
||||||
|
int result = 0;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
memset (&ts, '\0', sizeof ts);
|
||||||
|
|
||||||
|
waitit.tv_sec = 0;
|
||||||
|
waitit.tv_nsec = 500000000;
|
||||||
|
|
||||||
|
/* Get and print resolution of the clock. */
|
||||||
|
if (clock_getres (cl, &ts) == 0)
|
||||||
|
{
|
||||||
|
if (ts.tv_nsec < 0 || ts.tv_nsec >= 1000000000)
|
||||||
|
{
|
||||||
|
printf ("clock %d: nanosecond value of resolution wrong\n", cl);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf ("clock %d: resolution = %ld.%09ld secs\n",
|
||||||
|
cl, ts.tv_sec, ts.tv_nsec);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf ("clock %d: cannot get resolution\n", cl);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
memset (&ts, '\0', sizeof ts);
|
||||||
|
memset (&old_ts, '\0', sizeof old_ts);
|
||||||
|
|
||||||
|
/* Next get the current time value a few times. */
|
||||||
|
for (i = 0; i < 10; ++i)
|
||||||
|
{
|
||||||
|
if (clock_gettime (cl, &ts) == 0)
|
||||||
|
{
|
||||||
|
if (ts.tv_nsec < 0 || ts.tv_nsec >= 1000000000)
|
||||||
|
{
|
||||||
|
printf ("clock %d: nanosecond value of time wrong (try %d)\n",
|
||||||
|
cl, i);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf ("clock %d: time = %ld.%09ld secs\n",
|
||||||
|
cl, ts.tv_sec, ts.tv_nsec);
|
||||||
|
|
||||||
|
if (memcmp (&ts, &old_ts, sizeof ts) == 0)
|
||||||
|
{
|
||||||
|
printf ("clock %d: time hasn't changed (try %d)\n", cl, i);
|
||||||
|
result = 1;
|
||||||
|
|
||||||
|
old_ts = ts;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf ("clock %d: cannot get time (try %d)\n", cl, i);
|
||||||
|
result = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Wait a bit before the next iteration. */
|
||||||
|
nanosleep (&waitit, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
do_test (void)
|
||||||
|
{
|
||||||
|
clockid_t cl;
|
||||||
|
int result;
|
||||||
|
|
||||||
|
result = clock_test (CLOCK_REALTIME);
|
||||||
|
|
||||||
|
if (clock_getcpuclockid (0, &cl) == 0)
|
||||||
|
/* XXX It's not yet a bug when this fails. */
|
||||||
|
clock_test (cl);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
#define TEST_FUNCTION do_test ()
|
||||||
|
|
||||||
|
|
||||||
|
#include "../test-skeleton.c"
|
@ -79,8 +79,12 @@ struct ip_mreq
|
|||||||
#define IPV6_MULTICAST_IF 17
|
#define IPV6_MULTICAST_IF 17
|
||||||
#define IPV6_MULTICAST_HOPS 18
|
#define IPV6_MULTICAST_HOPS 18
|
||||||
#define IPV6_MULTICAST_LOOP 19
|
#define IPV6_MULTICAST_LOOP 19
|
||||||
#define IPV6_ADD_MEMBERSHIP 20
|
#define IPV6_JOIN_GROUP 20
|
||||||
#define IPV6_DROP_MEMBERSHIP 21
|
#define IPV6_LEAVE_GROUP 21
|
||||||
|
|
||||||
|
/* Obsolete synonyms for the above. */
|
||||||
|
#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
|
||||||
|
#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
|
||||||
|
|
||||||
/* Routing header options for IPv6. */
|
/* Routing header options for IPv6. */
|
||||||
#define IPV6_RTHDR_LOOSE 0 /* Hop doesn't need to be neighbour. */
|
#define IPV6_RTHDR_LOOSE 0 /* Hop doesn't need to be neighbour. */
|
||||||
|
@ -43,7 +43,7 @@ static long int nsec;
|
|||||||
#define EXTRA_CLOCK_CASES \
|
#define EXTRA_CLOCK_CASES \
|
||||||
case __CLOCK_HIGHRES: \
|
case __CLOCK_HIGHRES: \
|
||||||
{ \
|
{ \
|
||||||
if (__builtin_expect (nsec != 0, 0)) \
|
if (__builtin_expect (nsec == 0, 0)) \
|
||||||
{ \
|
{ \
|
||||||
unsigned long long int freq; \
|
unsigned long long int freq; \
|
||||||
\
|
\
|
||||||
|
@ -44,7 +44,7 @@ static unsigned long long int freq;
|
|||||||
{ \
|
{ \
|
||||||
unsigned long long int tsc; \
|
unsigned long long int tsc; \
|
||||||
\
|
\
|
||||||
if (__builtin_expect (freq != 0, 0)) \
|
if (__builtin_expect (freq == 0, 0)) \
|
||||||
{ \
|
{ \
|
||||||
/* This can only happen if we haven't initialized the `freq' \
|
/* This can only happen if we haven't initialized the `freq' \
|
||||||
variable yet. Do this now. We don't have to protect this \
|
variable yet. Do this now. We don't have to protect this \
|
||||||
@ -64,7 +64,9 @@ static unsigned long long int freq;
|
|||||||
\
|
\
|
||||||
/* And the nanoseconds. This computation should be stable until \
|
/* And the nanoseconds. This computation should be stable until \
|
||||||
we get machines with about 16GHz frequency. */ \
|
we get machines with about 16GHz frequency. */ \
|
||||||
tp->tv_nsec = ((tsc % freq) * 1000000000ULL) / freq; \
|
tp->tv_nsec = ((tsc % freq) * 1000000000ull) / freq; \
|
||||||
|
\
|
||||||
|
retval = 0; \
|
||||||
} \
|
} \
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -109,8 +109,8 @@ struct in_pktinfo
|
|||||||
#define IPV6_MULTICAST_IF 17
|
#define IPV6_MULTICAST_IF 17
|
||||||
#define IPV6_MULTICAST_HOPS 18
|
#define IPV6_MULTICAST_HOPS 18
|
||||||
#define IPV6_MULTICAST_LOOP 19
|
#define IPV6_MULTICAST_LOOP 19
|
||||||
#define IPV6_ADD_MEMBERSHIP 20
|
#define IPV6_JOIN_GROUP 20
|
||||||
#define IPV6_DROP_MEMBERSHIP 21
|
#define IPV6_LEAVE_GROUP 21
|
||||||
#define IPV6_ROUTER_ALERT 22
|
#define IPV6_ROUTER_ALERT 22
|
||||||
#define IPV6_MTU_DISCOVER 23
|
#define IPV6_MTU_DISCOVER 23
|
||||||
#define IPV6_MTU 24
|
#define IPV6_MTU 24
|
||||||
@ -118,8 +118,12 @@ struct in_pktinfo
|
|||||||
|
|
||||||
#define SCM_SRCRT IPV6_RXSRCRT
|
#define SCM_SRCRT IPV6_RXSRCRT
|
||||||
|
|
||||||
#define IPV6_RXHOPOPTS IPV6_HOPOPTS /* obsolete name */
|
/* Obsolete synonyms for the above. */
|
||||||
#define IPV6_RXDSTOPTS IPV6_DSTOPTS /* obsolete name */
|
#define IPV6_RXHOPOPTS IPV6_HOPOPTS
|
||||||
|
#define IPV6_RXDSTOPTS IPV6_DSTOPTS
|
||||||
|
#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
|
||||||
|
#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
|
||||||
|
|
||||||
|
|
||||||
/* IPV6_MTU_DISCOVER values. */
|
/* IPV6_MTU_DISCOVER values. */
|
||||||
#define IPV6_PMTUDISC_DONT 0 /* Never send DF frames. */
|
#define IPV6_PMTUDISC_DONT 0 /* Never send DF frames. */
|
||||||
|
@ -29,9 +29,13 @@ __get_clockfreq (void)
|
|||||||
least one line like
|
least one line like
|
||||||
cpu MHz : 497.840237
|
cpu MHz : 497.840237
|
||||||
We search for this line and convert the number in an integer. */
|
We search for this line and convert the number in an integer. */
|
||||||
unsigned long long int result = 0ull;
|
static unsigned long long int result;
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
|
/* If this function was called before, we know the result. */
|
||||||
|
if (result != 0)
|
||||||
|
return result;
|
||||||
|
|
||||||
fd = open ("/proc/cpuinfo", O_RDONLY);
|
fd = open ("/proc/cpuinfo", O_RDONLY);
|
||||||
if (__builtin_expect (fd != -1, 1))
|
if (__builtin_expect (fd != -1, 1))
|
||||||
{
|
{
|
||||||
|
@ -122,6 +122,10 @@ main (int argc, char *argv[])
|
|||||||
int status;
|
int status;
|
||||||
int opt;
|
int opt;
|
||||||
|
|
||||||
|
#ifdef STDOUT_UNBUFFERED
|
||||||
|
setbuf (stdout, NULL);
|
||||||
|
#endif
|
||||||
|
|
||||||
while ((opt = getopt_long (argc, argv, "", options, NULL)) != -1)
|
while ((opt = getopt_long (argc, argv, "", options, NULL)) != -1)
|
||||||
switch (opt)
|
switch (opt)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user