1 /* util.h 2 * 3 * Copyright (C) 1991, 1992, 1993, 1999, 2001, 2002, 2003, 2004, 2005, 4 * 2007, by Larry Wall and others 5 * 6 * You may distribute under the terms of either the GNU General Public 7 * License or the Artistic License, as specified in the README file. 8 * 9 */ 10 11 #ifdef VMS 12 # define PERL_FILE_IS_ABSOLUTE(f) \ 13 (*(f) == '/' \ 14 || (strchr(f,':') \ 15 || ((*(f) == '[' || *(f) == '<') \ 16 && (isWORDCHAR((f)[1]) || strchr("$-_]>",(f)[1]))))) 17 18 #else /* !VMS */ 19 # if defined(WIN32) || defined(__CYGWIN__) 20 # define PERL_FILE_IS_ABSOLUTE(f) \ 21 (*(f) == '/' || *(f) == '\\' /* UNC/rooted path */ \ 22 || ((f)[0] && (f)[1] == ':')) /* drive name */ 23 # else /* !WIN32 */ 24 # ifdef NETWARE 25 # define PERL_FILE_IS_ABSOLUTE(f) \ 26 (((f)[0] && (f)[1] == ':') /* drive name */ \ 27 || ((f)[0] == '\\' && (f)[1] == '\\') /* UNC path */ \ 28 || ((f)[3] == ':')) /* volume name, currently only sys */ 29 # else /* !NETWARE */ 30 # if defined(DOSISH) || defined(__SYMBIAN32__) 31 # define PERL_FILE_IS_ABSOLUTE(f) \ 32 (*(f) == '/' \ 33 || ((f)[0] && (f)[1] == ':')) /* drive name */ 34 # else /* NEITHER DOSISH NOR SYMBIANISH */ 35 # define PERL_FILE_IS_ABSOLUTE(f) (*(f) == '/') 36 # endif /* DOSISH */ 37 # endif /* NETWARE */ 38 # endif /* WIN32 */ 39 #endif /* VMS */ 40 41 /* 42 =for apidoc ibcmp 43 44 This is a synonym for (! foldEQ()) 45 46 =for apidoc ibcmp_locale 47 48 This is a synonym for (! foldEQ_locale()) 49 50 =cut 51 */ 52 #define ibcmp(s1, s2, len) cBOOL(! foldEQ(s1, s2, len)) 53 #define ibcmp_locale(s1, s2, len) cBOOL(! foldEQ_locale(s1, s2, len)) 54 55 /* outside the core, perl.h undefs HAS_QUAD if IV isn't 64-bit 56 We can't swap this to HAS_QUAD, because the logic here affects the type of 57 perl_drand48_t below, and that is visible outside of the core. */ 58 #if defined(U64TYPE) && !defined(USING_MSVC6) 59 /* use a faster implementation when quads are available, 60 * but not with VC6 on Windows */ 61 # define PERL_DRAND48_QUAD 62 #endif 63 64 #ifdef PERL_DRAND48_QUAD 65 66 /* U64 is only defined under PERL_CORE, but this needs to be visible 67 * elsewhere so the definition of PerlInterpreter is complete. 68 */ 69 typedef U64TYPE perl_drand48_t; 70 71 #else 72 73 struct PERL_DRAND48_T { 74 U16 seed[3]; 75 }; 76 77 typedef struct PERL_DRAND48_T perl_drand48_t; 78 79 #endif 80 81 #define PL_RANDOM_STATE_TYPE perl_drand48_t 82 83 #define Perl_drand48_init(seed) (Perl_drand48_init_r(&PL_random_state, (seed))) 84 #define Perl_drand48() (Perl_drand48_r(&PL_random_state)) 85 86 /* 87 * Local variables: 88 * c-indentation-style: bsd 89 * c-basic-offset: 4 90 * indent-tabs-mode: nil 91 * End: 92 * 93 * ex: set ts=8 sts=4 sw=4 et: 94 */ 95