xref: /openbsd-src/gnu/usr.bin/perl/util.h (revision 0b7734b3d77bb9b21afec6f4621cae6c805dbd45)
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