From: Jarkko Hietaniemi Date: Wed, 31 May 2000 21:37:31 +0000 (+0000) Subject: microperl changes from Simon Cozens; Makefile for microperl X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=12ae5dfcd4fd6f54af051c41b2e122532efce8d3;p=p5sagit%2Fp5-mst-13.2.git microperl changes from Simon Cozens; Makefile for microperl written from scratch; few casts added as microperl compilation doesn't have all prototypes available. p4raw-id: //depot/cfgperl@6174 --- diff --git a/Configure b/Configure index fc3ea30..19c83a0 100755 --- a/Configure +++ b/Configure @@ -20,7 +20,7 @@ # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $ # -# Generated on Wed May 31 01:51:16 EET DST 2000 [metaconfig 3.0 PL70] +# Generated on Wed May 31 23:34:04 EET DST 2000 [metaconfig 3.0 PL70] # (with additional metaconfig patches by perlbug@perl.com) cat >/tmp/c1$$ <config.h -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-def!#undef!' +echo "Extracting $CONFIG_H (with variable substitutions)" +sed <$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un-def!#undef!' /* * This file was produced by running the config_h.SH script, which - * gets its values from config.sh, which is generally produced by + * gets its values from $CONFIG_SH, which is generally produced by * running Configure. * * Feel free to modify any of this as the need arises. Note, however, * that running config_h.SH again will wipe out any changes you've made. - * For a more permanent change edit config.sh and rerun config_h.SH. + * For a more permanent change edit $CONFIG_SH and rerun config_h.SH. * * \$Id: Config_h.U,v 3.0.1.5 1997/02/28 14:57:43 ram Exp $ */ diff --git a/doop.c b/doop.c index 4224b0e..c79b435 100644 --- a/doop.c +++ b/doop.c @@ -851,7 +851,7 @@ Perl_do_vecset(pTHX_ SV *sv) len = (offset + size + 7) / 8; /* required number of bytes */ if (len > targlen) { s = (unsigned char*)SvGROW(targ, len + 1); - (void)memzero(s + targlen, len - targlen + 1); + (void)memzero((char *)(s + targlen), len - targlen + 1); SvCUR_set(targ, len); } diff --git a/op.c b/op.c index c7da1c5..39a9b18 100644 --- a/op.c +++ b/op.c @@ -2645,12 +2645,13 @@ Perl_pmtrans(pTHX_ OP *o, OP *expr, OP *repl) } if (!squash) { if (to_utf && from_utf) { /* only counting characters */ - if (t == r || (tlen == rlen && memEQ(t, r, tlen))) + if (t == r || + (tlen == rlen && memEQ((char *)t, (char *)r, tlen))) o->op_private |= OPpTRANS_IDENTICAL; } else { /* straight latin-1 translation */ - if (tlen == 4 && memEQ(t, "\0\377\303\277", 4) && - rlen == 4 && memEQ(r, "\0\377\303\277", 4)) + if (tlen == 4 && memEQ((char *)t, "\0\377\303\277", 4) && + rlen == 4 && memEQ((char *)r, "\0\377\303\277", 4)) o->op_private |= OPpTRANS_IDENTICAL; } } diff --git a/perl.h b/perl.h index 3860107..b26d6f4 100644 --- a/perl.h +++ b/perl.h @@ -21,7 +21,11 @@ #endif /* PERL_FOR_X2P */ #define VOIDUSED 1 -#include "config.h" +#ifdef PERL_MICRO +# include "uconfig.h" +#else +# include "config.h" +#endif #if defined(USE_ITHREADS) && defined(USE_5005THREADS) # include "error: USE_ITHREADS and USE_5005THREADS are incompatible" @@ -460,6 +464,10 @@ register struct op *Perl_op asm(stringify(OP_IN_REGISTER)); #undef METHOD #endif +#ifdef PERL_MICRO +# define NO_LOCALE +#endif + #ifdef I_LOCALE # include #endif @@ -593,6 +601,7 @@ struct perl_mstats { # endif # endif #else +# undef memset # define memset(d,c,l) my_memset(d,c,l) #endif /* HAS_MEMSET */ @@ -812,6 +821,12 @@ struct perl_mstats { # endif #endif +#ifdef PERL_MICRO +# ifndef DIR +# define DIR void +# endif +#endif + #ifdef FPUTS_BOTCH /* work around botch in SunOS 4.0.1 and 4.0.2 */ # ifndef fputs @@ -1597,6 +1612,11 @@ typedef struct ptr_tbl PTR_TBL_t; # endif #endif +#ifdef PERL_MICRO +# undef HAS_PASSWD +# undef HAS_GROUP +#endif + #ifndef PERL_SYS_INIT3 # define PERL_SYS_INIT3(argvp,argcp,envp) PERL_SYS_INIT(argvp,argcp) #endif diff --git a/perlio.c b/perlio.c index 6945a75..a88daa5 100644 --- a/perlio.c +++ b/perlio.c @@ -9,7 +9,11 @@ #define VOIDUSED 1 -#include "config.h" +#ifdef PERL_MICRO +# include "uconfig.h" +#else +# include "config.h" +#endif #define PERLIO_NOT_STDIO 0 #if !defined(PERLIO_IS_STDIO) && !defined(USE_SFIO) diff --git a/uconfig.sh b/uconfig.sh new file mode 100755 index 0000000..7b82145 --- /dev/null +++ b/uconfig.sh @@ -0,0 +1,550 @@ +#!/bin/sh +_a='.a' +_o='.o' +afs='false' +alignbytes='4' +apiversion='5.00563' +archlib='/usr/local/lib/perl5/5.00563/unknown' +archlibexp='/usr/local/lib/perl5/5.00563/unknown' +archname='unknown' +bin='/usr/local/bin' +bincompat5005='define' +byteorder='12' +castflags='0' +charsize='1' +clocktype='clock_t' +cpp_stuff='42' +crosscompile='undef' +d_Gconvert='sprintf((b),"%.*g",(n),(x))' +d_PRIEldbl='undef' +d_PRIFldbl='undef' +d_PRIGldbl='undef' +d_PRIX64='undef' +d_PRId64='undef' +d_PRIeldbl='undef' +d_PRIfldbl='undef' +d_PRIgldbl='undef' +d_PRIi64='undef' +d_PRIo64='undef' +d_PRIu64='undef' +d_PRIx64='undef' +d_access='undef' +d_accessx='undef' +d_alarm='undef' +d_archlib='undef' +d_atolf='undef' +d_atoll='undef' +d_attribut='undef' +d_bcmp='undef' +d_bcopy='undef' +d_bincompat5005='undef' +d_bsd='undef' +d_bsdgetpgrp='undef' +d_bsdsetpgrp='undef' +d_bzero='undef' +d_casti32='undef' +d_castneg='undef' +d_charvspr='undef' +d_chown='undef' +d_chroot='undef' +d_chsize='undef' +d_closedir='undef' +d_const='undef' +d_crypt='undef' +d_csh='undef' +d_cuserid='undef' +d_dbl_dig='undef' +d_difftime='undef' +d_dirnamlen='undef' +d_dlerror='undef' +d_dlopen='undef' +d_dlsymun='undef' +d_dosuid='undef' +d_drand48proto='undef' +d_dup2='undef' +d_eaccess='undef' +d_endgrent='undef' +d_endhent='undef' +d_endnent='undef' +d_endpent='undef' +d_endpwent='undef' +d_endsent='undef' +d_endspent='undef' +d_eofnblk='undef' +d_eunice='undef' +d_fchmod='undef' +d_fchown='undef' +d_fcntl='undef' +d_fd_macros='undef' +d_fd_set='undef' +d_fds_bits='undef' +d_fgetpos='undef' +d_flexfnam='undef' +d_flock='undef' +d_fork='define' +d_fpathconf='undef' +d_fpos64_t='undef' +d_fs_data_s='undef' +d_fseeko='undef' +d_fsetpos='undef' +d_fstatfs='undef' +d_fstatvfs='undef' +d_ftello='undef' +d_ftime='undef' +d_getcwd='undef' +d_getgrent='undef' +d_getgrps='undef' +d_gethbyaddr='undef' +d_gethbyname='undef' +d_gethent='undef' +d_gethname='undef' +d_gethostprotos='undef' +d_getlogin='undef' +d_getmnt='undef' +d_getmntent='undef' +d_getnbyaddr='undef' +d_getnbyname='undef' +d_getnent='undef' +d_getnetprotos='undef' +d_getpbyname='undef' +d_getpbynumber='undef' +d_getpent='undef' +d_getpgid='undef' +d_getpgrp2='undef' +d_getpgrp='undef' +d_getppid='undef' +d_getprior='undef' +d_getprotoprotos='undef' +d_getpwent='undef' +d_getsbyname='undef' +d_getsbyport='undef' +d_getsent='undef' +d_getservprotos='undef' +d_getspent='undef' +d_getspnam='undef' +d_gettimeod='undef' +d_gnulibc='undef' +d_grpasswd='undef' +d_hasmntopt='undef' +d_htonl='undef' +d_iconv='undef' +d_index='undef' +d_inetaton='undef' +d_int64t='undef' +d_isascii='undef' +d_killpg='undef' +d_lchown='undef' +d_ldbl_dig='undef' +d_link='undef' +d_locconv='undef' +d_lockf='undef' +d_longdbl='undef' +d_longlong='undef' +d_lstat='undef' +d_mblen='undef' +d_mbstowcs='undef' +d_mbtowc='undef' +d_memchr='undef' +d_memcmp='undef' +d_memcpy='undef' +d_memmove='undef' +d_memset='undef' +d_mkdir='undef' +d_mkdtemp='undef' +d_mkfifo='undef' +d_mkstemp='undef' +d_mkstemps='undef' +d_mktime='undef' +d_mprotect='undef' +d_msg='undef' +d_msg_ctrunc='undef' +d_msg_dontroute='undef' +d_msg_oob='undef' +d_msg_peek='undef' +d_msg_proxy='undef' +d_msgctl='undef' +d_msgget='undef' +d_msgrcv='undef' +d_msgsnd='undef' +d_msync='undef' +d_munmap='undef' +d_mymalloc='undef' +d_nice='undef' +d_nv_preserves_uv='undef' +d_off64_t='undef' +d_old_pthread_create_joinable='undef' +d_oldpthreads='undef' +d_oldsock='undef' +d_open3='undef' +d_pathconf='undef' +d_pause='undef' +d_phostname='undef' +d_pipe='undef' +d_poll='undef' +d_portable='undef' +d_pthread_yield='undef' +d_pwage='undef' +d_pwchange='undef' +d_pwclass='undef' +d_pwcomment='undef' +d_pwexpire='undef' +d_pwgecos='undef' +d_pwpasswd='undef' +d_pwquota='undef' +d_quad='undef' +d_readdir='undef' +d_readlink='undef' +d_rename='undef' +d_rewinddir='undef' +d_rmdir='undef' +d_safebcpy='undef' +d_safemcpy='undef' +d_sanemcmp='undef' +d_sched_yield='undef' +d_scm_rights='undef' +d_seekdir='undef' +d_select='undef' +d_sem='undef' +d_semctl='undef' +d_semctl_semid_ds='undef' +d_semctl_semun='undef' +d_semget='undef' +d_semop='undef' +d_setegid='undef' +d_seteuid='undef' +d_setgrent='undef' +d_setgrps='undef' +d_sethent='undef' +d_setlinebuf='undef' +d_setlocale='undef' +d_setnent='undef' +d_setpent='undef' +d_setpgid='undef' +d_setpgrp2='undef' +d_setpgrp='undef' +d_setprior='undef' +d_setpwent='undef' +d_setregid='undef' +d_setresgid='undef' +d_setresuid='undef' +d_setreuid='undef' +d_setrgid='undef' +d_setruid='undef' +d_setsent='undef' +d_setsid='undef' +d_setspent='undef' +d_setvbuf='undef' +d_sfio='undef' +d_shm='undef' +d_shmat='undef' +d_shmatprototype='undef' +d_shmctl='undef' +d_shmdt='undef' +d_shmget='undef' +d_sigaction='undef' +d_sigsetjmp='undef' +d_socket='undef' +d_sockpair='undef' +d_sqrtl='undef' +d_statblks='undef' +d_statfs_f_flags='undef' +d_statfs_s='undef' +d_statvfs='undef' +d_stdio_cnt_lval='undef' +d_stdio_ptr_lval='undef' +d_stdio_stream_array='undef' +d_stdiobase='undef' +d_stdstdio='undef' +d_strchr='undef' +d_strcoll='undef' +d_strctcpy='undef' +d_strerrm='strerror(e)' +d_strerror='undef' +d_strtod='undef' +d_strtol='undef' +d_strtold='undef' +d_strtoll='undef' +d_strtoul='undef' +d_strtoull='undef' +d_strtouq='undef' +d_strxfrm='undef' +d_suidsafe='undef' +d_symlink='undef' +d_syscall='undef' +d_sysconf='undef' +d_sysernlst='' +d_syserrlst='undef' +d_system='undef' +d_tcgetpgrp='undef' +d_tcsetpgrp='undef' +d_telldir='undef' +d_telldirproto='undef' +d_time='undef' +d_times='undef' +d_truncate='undef' +d_tzname='undef' +d_umask='undef' +d_uname='undef' +d_union_semun='undef' +d_ustat='undef' +d_vendorbin='undef' +d_vendorlib='undef' +d_vfork='undef' +d_void_closedir='undef' +d_voidsig='undef' +d_voidtty='' +d_volatile='undef' +d_vprintf='define' +d_wait4='undef' +d_waitpid='undef' +d_wcstombs='undef' +d_wctomb='undef' +d_xenix='undef' +db_hashtype='u_int32_t' +db_prefixtype='size_t' +defvoidused=1 +direntrytype='struct dirent' +doublesize=1 +drand01="((rand() & 0x7FFF) / (double) ((unsigned long)1 << 15))" +eagain='EAGAIN' +ebcdic='undef' +fflushNULL='undef' +fflushall='undef' +firstmakefile='makefile' +fpossize='4' +fpostype=int +freetype=int +gidformat='"lu"' +gidsign='1' +gidsize='4' +gidtype=int +groupstype=int +h_fcntl='false' +h_sysfile='true' +i16size='2' +i16type='short' +i32size='4' +i32type='long' +i64size='8' +i64type='int64_t' +i8size='1' +i8type='char' +i_arpainet='undef' +i_bsdioctl='' +i_db='undef' +i_dbm='undef' +i_dirent='undef' +i_dld='undef' +i_dlfcn='undef' +i_fcntl='undef' +i_float='undef' +i_gdbm='undef' +i_grp='undef' +i_iconv='undef' +i_inttypes='undef' +i_limits='undef' +i_locale='undef' +i_machcthr='undef' +i_malloc='undef' +i_math='undef' +i_memory='undef' +i_mntent='undef' +i_ndbm='undef' +i_netdb='undef' +i_neterrno='undef' +i_netinettcp='undef' +i_niin='undef' +i_poll='undef' +i_pthread='undef' +i_pwd='undef' +i_rpcsvcdbm='undef' +i_sfio='undef' +i_sgtty='undef' +i_shadow='undef' +i_socks='undef' +i_stdarg='define' +i_stddef='undef' +i_stdlib='undef' +i_string='define' +i_sysaccess='undef' +i_sysdir='undef' +i_sysfile='undef' +i_sysfilio='undef' +i_sysin='undef' +i_sysioctl='undef' +i_syslog='undef' +i_sysmount='undef' +i_sysndir='undef' +i_sysparam='undef' +i_sysresrc='undef' +i_syssecrt='undef' +i_sysselct='undef' +i_syssockio='' +i_sysstat='define' +i_sysstatfs='undef' +i_sysstatvfs='undef' +i_systime='undef' +i_systimek='undef' +i_systimes='undef' +i_systypes='undef' +i_sysuio='undef' +i_sysun='undef' +i_sysvfs='undef' +i_syswait='undef' +i_termio='undef' +i_termios='undef' +i_time='define' +i_unistd='undef' +i_ustat='undef' +i_utime='undef' +i_values='undef' +i_varargs='undef' +i_varhdr='stdarg.h' +i_vfork='undef' +ignore_versioned_solibs='y' +installstyle='lib/perl5' +installusrbinperl='undef' +intsize='4' +intsize=1 +ivdformat='"ld"' +ivsize='4' +ivtype='long' +lib_ext='.a' +longdblsize=1 +longlongsize=1 +longsize=1 +lseeksize=1 +lseektype=int +malloctype='int*' +malloctype='void *' +modetype='mode_t' +modetype=int +multiarch='undef' +myarchname='unknown' +myuname='unknown' +netdb_hlen_type='int' +netdb_host_type='const char *' +netdb_name_type='const char *' +netdb_net_type='unsigned long' +nroff='nroff' +nvsize='8' +nvtype='double' +o_nonblock='O_NONBLOCK' +obj_ext='.o' +optimize='-O2' +orderlib='false' +osname='unknown' +phostname='hostname' +pidtype=int +pm_apiversion='5.005' +privlib='/usr/local/lib/perl5/5.00563' +privlibexp='/usr/local/lib/perl5/5.00563' +prototype='undef' +ptrsize=1 +quadkind='4' +quadtype='int64_t' +randbits='48' +randfunc='drand48' +randseedtype='int' +rd_nodata='-1' +sPRIEldbl='"llE"' +sPRIFldbl='"llF"' +sPRIGldbl='"llG"' +sPRIX64='"LX"' +sPRId64='"Ld"' +sPRIeldbl='"lle"' +sPRIfldbl='"llf"' +sPRIgldbl='"llg"' +sPRIi64='"Li"' +sPRIo64='"Lo"' +sPRIu64='"Lu"' +sPRIx64='"Lx"' +sched_yield='sched_yield()' +scriptdir='/usr/local/bin' +scriptdirexp='/usr/local/bin' +seedfunc='srand' +selectminbits='32' +selecttype=int +shmattype='void *' +shortsize=1 +sig_count='64' +sig_name_init='0' +sig_num_init='0' +signal_t=int +sizetype=int +sizesize=1 +ssizetype=int +stdchar=char +stdio_base='((fp)->_IO_read_base)' +stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)' +stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)' +stdio_filbuf='' +stdio_ptr='((fp)->_IO_read_ptr)' +stdio_stream_array='' +timetype=int +touch='touch' +u16size='2' +u16type='unsigned short' +u32size='4' +u32type='unsigned long' +u64size='8' +u64type='uint64_t' +u8size='1' +u8type='unsigned char' +uidformat='"lu"' +uidsign='1' +uidsize='4' +uidtype=int +uquadtype='uint64_t' +use5005threads='undef' +use64bits='undef' +usedl='undef' +useithreads='undef' +uselargefiles='undef' +uselongdouble='undef' +uselonglong='undef' +usemorebits='undef' +usemultiplicity='undef' +usemymalloc='n' +usenm='false' +useopcode='true' +useperlio='undef' +useposix='true' +usesfio='false' +useshrplib='false' +usesocks='undef' +usethreads='undef' +usevendorprefix='undef' +usevfork='false' +uvoformat='"lo"' +uvsize='4' +uvtype='unsigned long' +uvuformat='"lu"' +uvxformat='"lx"' +voidflags=1 +xs_apiversion='5.005' +d_getfsstat='undef' +d_int64_t='undef' +d_lseekproto='undef' +d_madvise='undef' +d_mmap='undef' +use64bitint='undef' +use64bitall='undef' +d_vendorarch='undef' +d_vendorarch='undef' +i_ieeefp='undef' +i_sunmath='undef' +i_sysmode='undef' +i_sysutsname='undef' +d_frexpl='undef' +d_modfl='undef' +d_getespwnam='undef' +d_getprpwnam='undef' +d_isnan='undef' +d_isnanl='undef' +i_prot='undef' +d_perl_otherlibdirs='undef' +inc_version_list_init='NULL' +socksizetype='int' + + diff --git a/unixish.h b/unixish.h index 1168d29..6e6f1d3 100644 --- a/unixish.h +++ b/unixish.h @@ -5,6 +5,8 @@ * here. */ +#ifndef PERL_MICRO + /* HAS_IOCTL: * This symbol, if defined, indicates that the ioctl() routine is * available to set I/O characteristics @@ -33,6 +35,8 @@ #define HAS_KILL #define HAS_WAIT + +#endif /* USEMYBINMODE * This symbol, if defined, indicates that the program should diff --git a/utf8.c b/utf8.c index 223f5ac..76eb932 100644 --- a/utf8.c +++ b/utf8.c @@ -791,7 +791,7 @@ Perl_swash_fetch(pTHX_ SV *sv, U8 *ptr) if (hv == PL_last_swash_hv && klen == PL_last_swash_klen && - (!klen || memEQ(ptr,PL_last_swash_key,klen)) ) + (!klen || memEQ((char *)ptr,(char *)PL_last_swash_key,klen)) ) { tmps = PL_last_swash_tmps; slen = PL_last_swash_slen; diff --git a/util.c b/util.c index a5cd954..91ca89a 100644 --- a/util.c +++ b/util.c @@ -87,7 +87,7 @@ Perl_safesysmalloc(MEM_SIZE size) if ((long)size < 0) Perl_croak_nocontext("panic: malloc"); #endif - ptr = PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */ + ptr = (Malloc_t)PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */ PERL_ALLOC_CHECK(ptr); DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) malloc %ld bytes\n",PTR2UV(ptr),(long)PL_an++,(long)size)); if (ptr != Nullch) @@ -131,7 +131,7 @@ Perl_safesysrealloc(Malloc_t where,MEM_SIZE size) if ((long)size < 0) Perl_croak_nocontext("panic: realloc"); #endif - ptr = PerlMem_realloc(where,size); + ptr = (Malloc_t)PerlMem_realloc(where,size); PERL_ALLOC_CHECK(ptr); DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) rfree\n",PTR2UV(where),(long)PL_an++)); @@ -184,7 +184,7 @@ Perl_safesyscalloc(MEM_SIZE count, MEM_SIZE size) Perl_croak_nocontext("panic: calloc"); #endif size *= count; - ptr = PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */ + ptr = (Malloc_t)PerlMem_malloc(size?size:1); /* malloc(0) is NASTY on our system */ PERL_ALLOC_CHECK(ptr); DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%"UVxf": (%05ld) calloc %ld x %ld bytes\n",PTR2UV(ptr),(long)PL_an++,(long)count,(long)size)); if (ptr != Nullch) { @@ -1000,7 +1000,8 @@ Perl_fbm_instr(pTHX_ unsigned char *big, register unsigned char *bigend, SV *lit if ( SvTAIL(littlestr) && (bigend - big == littlelen - 1) && (littlelen == 1 - || (*big == *little && memEQ(big, little, littlelen - 1)))) + || (*big == *little && + memEQ((char *)big, (char *)little, littlelen - 1)))) return (char*)big; return Nullch; } @@ -1168,7 +1169,8 @@ Perl_fbm_instr(pTHX_ unsigned char *big, register unsigned char *bigend, SV *lit } check_end: if ( s == bigend && (table[-1] & FBMcf_TAIL) - && memEQ(bigend - littlelen, oldlittle - littlelen, littlelen) ) + && memEQ((char *)(bigend - littlelen), + (char *)(oldlittle - littlelen), littlelen) ) return (char*)bigend - littlelen; return Nullch; } @@ -1283,7 +1285,8 @@ Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift return (char*)big; big -= stop_pos; if (*big == first - && ((stop_pos == 1) || memEQ(big + 1, little, stop_pos - 1))) + && ((stop_pos == 1) || + memEQ((char *)(big + 1), (char *)little, stop_pos - 1))) return (char*)big; return Nullch; } @@ -3661,7 +3664,7 @@ Perl_get_opargs(pTHX) PPADDR_t* Perl_get_ppaddr(pTHX) { - return &PL_ppaddr; + return (PPADDR_t*)PL_ppaddr; } #ifndef HAS_GETENV_LEN