|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T g
Length: 1459 (0x5b3)
Types: TextFile
Names: »gnulib3.c«
└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89
└─⟦6f889378a⟧ »./g++-1.36.1.tar.Z«
└─⟦3aa9a3deb⟧
└─⟦this⟧ »g++-1.36.1/gnulib3.c«
typedef struct set_vector
{
int length;
int vector[1];
/* struct set_vector *next; */
} set_vector;
extern set_vector __CTOR_LIST__;
extern set_vector __DTOR_LIST__;
set_vector *__dlp;
int __dli;
extern void exit ();
extern void __do_global_init ();
extern void __do_global_cleanup ();
extern void on_exit(void*, void*);
\f
#if defined(i386)
#define COFF
#endif
#if defined(sun)
#define ON_EXIT(PROCP, ARG) \
do { extern void PROCP (); on_exit (PROCP, ARG); } while (0)
#endif
int
__main ()
{
/* Gross hack for GNU ld. This is defined in `builtin.cc'
from libg++. */
#ifndef COFF
extern int __1xyzzy__;
#endif
#ifdef ON_EXIT
#ifdef sun
ON_EXIT (_cleanup, 0);
#endif
ON_EXIT (__do_global_cleanup, 0);
#endif
__dli = __DTOR_LIST__.length;
__dlp = &__DTOR_LIST__;
#ifndef COFF
__do_global_init (&__1xyzzy__);
#else
__do_global_init ();
#endif
}
#ifndef ON_EXIT
void
exit (status)
int status;
{
__do_global_cleanup ();
_cleanup ();
_exit (status);
}
#endif
void
__do_global_init ()
{
register int i, len;
register void (**ppf)() = (void (**)())__CTOR_LIST__.vector;
len = __CTOR_LIST__.length;
for (i = 0; i < len; i++)
(*ppf[i])();
}
void
__do_global_cleanup ()
{
while (__dlp)
{
while (--__dli >= 0)
{
void (*pf)() = (void (*)())__dlp->vector[__dli];
(*pf)();
}
__dlp = (struct set_vector *)__dlp->vector[__dlp->length];
if (__dlp) __dli = __dlp->length;
}
}