X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=op.h;h=7896b8fca7695cfd14cdc32a0cd418cb69a14b16;hb=fd7b6849d7cf47f2fe101ad9761adae57a573493;hp=af8280b269d145c1aceca804f796adbfd257fb0a;hpb=5700b71cd8484a5485a9fb0bdde355ded1194121;p=p5sagit%2Fp5-mst-13.2.git diff --git a/op.h b/op.h index af8280b..7896b8f 100644 --- a/op.h +++ b/op.h @@ -23,7 +23,7 @@ * which may or may not check number of children). */ -typedef U32 PADOFFSET; +typedef UV PADOFFSET; #define NOT_IN_PAD ((PADOFFSET) -1) #ifdef DEBUGGING_OPS @@ -250,8 +250,8 @@ struct pmop { }; #ifdef USE_ITHREADS -#define PM_GETRE(o) ((REGEXP*)SvIVX(PL_regex_pad[(o)->op_pmoffset])) -#define PM_SETRE(o,r) (sv_setiv(PL_regex_pad[(o)->op_pmoffset], (IV)r)) +#define PM_GETRE(o) (INT2PTR(REGEXP*,SvIVX(PL_regex_pad[(o)->op_pmoffset]))) +#define PM_SETRE(o,r) (sv_setiv(PL_regex_pad[(o)->op_pmoffset], PTR2IV(r))) #define PM_GETRE_SAFE(o) (PL_regex_pad ? PM_GETRE(o) : (REGEXP*)0) #define PM_SETRE_SAFE(o,r) if (PL_regex_pad) PM_SETRE(o,r) #else @@ -263,6 +263,10 @@ struct pmop { #define PMdf_USED 0x01 /* pm has been used once already */ #define PMdf_TAINTED 0x02 /* pm compiled from tainted pattern */ +#define PMdf_UTF8 0x04 /* pm compiled from utf8 data */ +#define PMdf_DYN_UTF8 0x08 + +#define PMdf_CMP_UTF8 (PMdf_UTF8|PMdf_DYN_UTF8) #define PMf_RETAINT 0x0001 /* taint $1 etc. if target tainted */ #define PMf_ONCE 0x0002 /* use pattern only once per reset */ @@ -457,10 +461,25 @@ struct loop { #define PERL_LOADMOD_IMPORT_OPS 0x4 #ifdef USE_REENTRANT_API + typedef struct { struct tm* tmbuff; } REBUF; -#define localtime(a) localtime_r(a,PL_reentrant_buffer->tmbuff) -#define gmtime(a) gmtime_r(a,PL_reentrant_buffer->tmbuff) + +#define localtime(a) (localtime_r((a),PL_reentrant_buffer->tmbuff) ? PL_reentrant_buffer->tmbuff : NULL) +#define gmtime(a) (gmtime_r((a),PL_reentrant_buffer->tmbuff) ? PL_reentrant_buffer->tmbuff : NULL) + +#ifdef OLD_PTHREADS_API + +/* HP-UX 10.20 returns 0 on success, what it returns on failure is hidden + in the fog somewhere, possibly -1 which means the following should do + the right thing - 20010816 sky */ + +#undef localtime +#undef gmtime +#define localtime(a) ((localtime_r((a),PL_reentrant_buffer->tmbuff) == 0) ? PL_reentrant_buffer->tmbuff : NULL) +#define gmtime(a) ((gmtime_r((a),PL_reentrant_buffer->tmbuff) == 0) ? PL_reentrant_buffer->tmbuff : NULL) +#endif /* HP-UX 10.20 */ + #endif