This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update IPC::Cmd to 0.38
[perl5.git] / mathoms.c
CommitLineData
7ee2227d
SP
1/* mathoms.c
2 *
54ca4ee7 3 * Copyright (C) 2005, 2006, by Larry Wall and others
7ee2227d
SP
4 *
5 * You may distribute under the terms of either the GNU General Public
6 * License or the Artistic License, as specified in the README file.
7 *
8 */
9
10/*
11 * "Anything that Hobbits had no immediate use for, but were unwilling to
12 * throw away, they called a mathom. Their dwellings were apt to become
13 * rather crowded with mathoms, and many of the presents that passed from
14 * hand to hand were of that sort."
15 */
16
20fac488
GA
17#ifndef NO_MATHOMS
18
7ee2227d
SP
19/*
20 * This file contains mathoms, various binary artifacts from previous
f2f0f092
NC
21 * versions of Perl. For binary or source compatibility reasons, though,
22 * we cannot completely remove them from the core code.
7ee2227d
SP
23 *
24 * SMP - Oct. 24, 2005
25 *
26 */
27
28#include "EXTERN.h"
29#define PERL_IN_MATHOMS_C
30#include "perl.h"
31
a0c21aa1
JH
32PERL_CALLCONV OP * Perl_ref(pTHX_ OP *o, I32 type);
33PERL_CALLCONV void Perl_sv_unref(pTHX_ SV *sv);
34PERL_CALLCONV void Perl_sv_taint(pTHX_ SV *sv);
35PERL_CALLCONV IV Perl_sv_2iv(pTHX_ register SV *sv);
36PERL_CALLCONV UV Perl_sv_2uv(pTHX_ register SV *sv);
37PERL_CALLCONV char * Perl_sv_2pv(pTHX_ register SV *sv, STRLEN *lp);
38PERL_CALLCONV char * Perl_sv_2pv_nolen(pTHX_ register SV *sv);
39PERL_CALLCONV char * Perl_sv_2pvbyte_nolen(pTHX_ register SV *sv);
40PERL_CALLCONV char * Perl_sv_2pvutf8_nolen(pTHX_ register SV *sv);
41PERL_CALLCONV void Perl_sv_force_normal(pTHX_ register SV *sv);
42PERL_CALLCONV void Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr);
43PERL_CALLCONV void Perl_sv_catpvn(pTHX_ SV *dsv, const char* sstr, STRLEN slen);
44PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRLEN len);
45PERL_CALLCONV void Perl_sv_catsv(pTHX_ SV *dstr, register SV *sstr);
46PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dsv, register SV *ssv);
47PERL_CALLCONV char * Perl_sv_pv(pTHX_ SV *sv);
48PERL_CALLCONV char * Perl_sv_pvn_force(pTHX_ SV *sv, STRLEN *lp);
49PERL_CALLCONV char * Perl_sv_pvbyte(pTHX_ SV *sv);
50PERL_CALLCONV char * Perl_sv_pvutf8(pTHX_ SV *sv);
51PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade(pTHX_ register SV *sv);
52PERL_CALLCONV NV Perl_huge(void);
53PERL_CALLCONV void Perl_gv_fullname3(pTHX_ SV *sv, const GV *gv, const char *prefix);
54PERL_CALLCONV void Perl_gv_efullname3(pTHX_ SV *sv, const GV *gv, const char *prefix);
55PERL_CALLCONV GV * Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name);
56PERL_CALLCONV HE * Perl_hv_iternext(pTHX_ HV *hv);
57PERL_CALLCONV void Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how);
58PERL_CALLCONV bool Perl_do_open(pTHX_ GV *gv, register const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp);
59PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV *really, register SV **mark, register SV **sp);
60PERL_CALLCONV bool Perl_do_exec(pTHX_ const char *cmd);
61PERL_CALLCONV U8 * Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv);
62PERL_CALLCONV bool Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **ep);
63PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv);
64PERL_CALLCONV void Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
65PERL_CALLCONV void Perl_sv_usepvn(pTHX_ SV *sv, char *ptr, STRLEN len);
66PERL_CALLCONV int Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...);
67PERL_CALLCONV int Perl_printf_nocontext(const char *format, ...);
b5445a23
AL
68
69
7ee2227d
SP
70/* ref() is now a macro using Perl_doref;
71 * this version provided for binary compatibility only.
72 */
73OP *
74Perl_ref(pTHX_ OP *o, I32 type)
75{
76 return doref(o, type, TRUE);
77}
78
aae9cea0 79/*
174c73e3
NC
80=for apidoc sv_unref
81
82Unsets the RV status of the SV, and decrements the reference count of
83whatever was being referenced by the RV. This can almost be thought of
84as a reversal of C<newSVrv>. This is C<sv_unref_flags> with the C<flag>
85being zero. See C<SvROK_off>.
86
87=cut
88*/
89
90void
91Perl_sv_unref(pTHX_ SV *sv)
92{
93 sv_unref_flags(sv, 0);
94}
95
96/*
aae9cea0
NC
97=for apidoc sv_taint
98
99Taint an SV. Use C<SvTAINTED_on> instead.
100=cut
101*/
102
103void
104Perl_sv_taint(pTHX_ SV *sv)
105{
a0714e2c 106 sv_magic((sv), NULL, PERL_MAGIC_taint, NULL, 0);
aae9cea0
NC
107}
108
7ee2227d
SP
109/* sv_2iv() is now a macro using Perl_sv_2iv_flags();
110 * this function provided for binary compatibility only
111 */
112
113IV
114Perl_sv_2iv(pTHX_ register SV *sv)
115{
116 return sv_2iv_flags(sv, SV_GMAGIC);
117}
118
119/* sv_2uv() is now a macro using Perl_sv_2uv_flags();
120 * this function provided for binary compatibility only
121 */
122
123UV
124Perl_sv_2uv(pTHX_ register SV *sv)
125{
126 return sv_2uv_flags(sv, SV_GMAGIC);
127}
128
129/* sv_2pv() is now a macro using Perl_sv_2pv_flags();
130 * this function provided for binary compatibility only
131 */
132
133char *
134Perl_sv_2pv(pTHX_ register SV *sv, STRLEN *lp)
135{
136 return sv_2pv_flags(sv, lp, SV_GMAGIC);
137}
138
5abc721d 139/*
cb2f1b7b
NC
140=for apidoc sv_2pv_nolen
141
142Like C<sv_2pv()>, but doesn't return the length too. You should usually
143use the macro wrapper C<SvPV_nolen(sv)> instead.
144=cut
145*/
146
147char *
148Perl_sv_2pv_nolen(pTHX_ register SV *sv)
149{
b5445a23 150 return sv_2pv(sv, NULL);
cb2f1b7b
NC
151}
152
153/*
154=for apidoc sv_2pvbyte_nolen
155
156Return a pointer to the byte-encoded representation of the SV.
157May cause the SV to be downgraded from UTF-8 as a side-effect.
158
159Usually accessed via the C<SvPVbyte_nolen> macro.
160
161=cut
162*/
163
164char *
165Perl_sv_2pvbyte_nolen(pTHX_ register SV *sv)
166{
b5445a23 167 return sv_2pvbyte(sv, NULL);
cb2f1b7b
NC
168}
169
170/*
171=for apidoc sv_2pvutf8_nolen
172
173Return a pointer to the UTF-8-encoded representation of the SV.
174May cause the SV to be upgraded to UTF-8 as a side-effect.
175
176Usually accessed via the C<SvPVutf8_nolen> macro.
177
178=cut
179*/
180
181char *
182Perl_sv_2pvutf8_nolen(pTHX_ register SV *sv)
183{
b5445a23 184 return sv_2pvutf8(sv, NULL);
cb2f1b7b
NC
185}
186
187/*
5abc721d
NC
188=for apidoc sv_force_normal
189
190Undo various types of fakery on an SV: if the PV is a shared string, make
191a private copy; if we're a ref, stop refing; if we're a glob, downgrade to
192an xpvmg. See also C<sv_force_normal_flags>.
193
194=cut
195*/
196
197void
198Perl_sv_force_normal(pTHX_ register SV *sv)
199{
200 sv_force_normal_flags(sv, 0);
201}
7ee2227d
SP
202
203/* sv_setsv() is now a macro using Perl_sv_setsv_flags();
204 * this function provided for binary compatibility only
205 */
206
207void
208Perl_sv_setsv(pTHX_ SV *dstr, register SV *sstr)
209{
210 sv_setsv_flags(dstr, sstr, SV_GMAGIC);
211}
212
213/* sv_catpvn() is now a macro using Perl_sv_catpvn_flags();
214 * this function provided for binary compatibility only
215 */
216
217void
218Perl_sv_catpvn(pTHX_ SV *dsv, const char* sstr, STRLEN slen)
219{
220 sv_catpvn_flags(dsv, sstr, slen, SV_GMAGIC);
221}
222
b347df82
NC
223/*
224=for apidoc sv_catpvn_mg
225
226Like C<sv_catpvn>, but also handles 'set' magic.
227
228=cut
229*/
230
231void
232Perl_sv_catpvn_mg(pTHX_ register SV *sv, register const char *ptr, register STRLEN len)
233{
234 sv_catpvn_flags(sv,ptr,len,SV_GMAGIC|SV_SMAGIC);
235}
236
7ee2227d
SP
237/* sv_catsv() is now a macro using Perl_sv_catsv_flags();
238 * this function provided for binary compatibility only
239 */
240
241void
242Perl_sv_catsv(pTHX_ SV *dstr, register SV *sstr)
243{
244 sv_catsv_flags(dstr, sstr, SV_GMAGIC);
245}
246
0feed65a 247/*
b347df82
NC
248=for apidoc sv_catsv_mg
249
250Like C<sv_catsv>, but also handles 'set' magic.
251
252=cut
253*/
254
255void
256Perl_sv_catsv_mg(pTHX_ SV *dsv, register SV *ssv)
257{
258 sv_catsv_flags(dsv,ssv,SV_GMAGIC|SV_SMAGIC);
259}
260
261/*
0feed65a
NC
262=for apidoc sv_iv
263
264A private implementation of the C<SvIVx> macro for compilers which can't
265cope with complex macro expressions. Always use the macro instead.
266
267=cut
268*/
269
270IV
271Perl_sv_iv(pTHX_ register SV *sv)
272{
273 if (SvIOK(sv)) {
274 if (SvIsUV(sv))
275 return (IV)SvUVX(sv);
276 return SvIVX(sv);
277 }
278 return sv_2iv(sv);
279}
280
281/*
282=for apidoc sv_uv
283
284A private implementation of the C<SvUVx> macro for compilers which can't
285cope with complex macro expressions. Always use the macro instead.
286
287=cut
288*/
289
290UV
291Perl_sv_uv(pTHX_ register SV *sv)
292{
293 if (SvIOK(sv)) {
294 if (SvIsUV(sv))
295 return SvUVX(sv);
296 return (UV)SvIVX(sv);
297 }
298 return sv_2uv(sv);
299}
300
301/*
302=for apidoc sv_nv
303
304A private implementation of the C<SvNVx> macro for compilers which can't
305cope with complex macro expressions. Always use the macro instead.
306
307=cut
308*/
309
310NV
311Perl_sv_nv(pTHX_ register SV *sv)
312{
313 if (SvNOK(sv))
314 return SvNVX(sv);
315 return sv_2nv(sv);
316}
317
318/*
319=for apidoc sv_pv
320
321Use the C<SvPV_nolen> macro instead
322
323=for apidoc sv_pvn
324
325A private implementation of the C<SvPV> macro for compilers which can't
326cope with complex macro expressions. Always use the macro instead.
327
328=cut
329*/
330
331char *
332Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp)
333{
334 if (SvPOK(sv)) {
335 *lp = SvCUR(sv);
336 return SvPVX(sv);
337 }
338 return sv_2pv(sv, lp);
339}
340
341
342char *
343Perl_sv_pvn_nomg(pTHX_ register SV *sv, STRLEN *lp)
344{
345 if (SvPOK(sv)) {
346 *lp = SvCUR(sv);
347 return SvPVX(sv);
348 }
349 return sv_2pv_flags(sv, lp, 0);
350}
351
7ee2227d
SP
352/* sv_pv() is now a macro using SvPV_nolen();
353 * this function provided for binary compatibility only
354 */
355
356char *
357Perl_sv_pv(pTHX_ SV *sv)
358{
359 if (SvPOK(sv))
360 return SvPVX(sv);
361
b5445a23 362 return sv_2pv(sv, NULL);
7ee2227d
SP
363}
364
365/* sv_pvn_force() is now a macro using Perl_sv_pvn_force_flags();
366 * this function provided for binary compatibility only
367 */
368
369char *
370Perl_sv_pvn_force(pTHX_ SV *sv, STRLEN *lp)
371{
372 return sv_pvn_force_flags(sv, lp, SV_GMAGIC);
373}
374
375/* sv_pvbyte () is now a macro using Perl_sv_2pv_flags();
376 * this function provided for binary compatibility only
377 */
378
379char *
380Perl_sv_pvbyte(pTHX_ SV *sv)
381{
b5445a23 382 sv_utf8_downgrade(sv, FALSE);
7ee2227d
SP
383 return sv_pv(sv);
384}
385
0feed65a
NC
386/*
387=for apidoc sv_pvbyte
388
389Use C<SvPVbyte_nolen> instead.
390
391=for apidoc sv_pvbyten
392
393A private implementation of the C<SvPVbyte> macro for compilers
394which can't cope with complex macro expressions. Always use the macro
395instead.
396
397=cut
398*/
399
400char *
401Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp)
402{
b5445a23 403 sv_utf8_downgrade(sv, FALSE);
0feed65a
NC
404 return sv_pvn(sv,lp);
405}
406
7ee2227d
SP
407/* sv_pvutf8 () is now a macro using Perl_sv_2pv_flags();
408 * this function provided for binary compatibility only
409 */
410
411char *
412Perl_sv_pvutf8(pTHX_ SV *sv)
413{
414 sv_utf8_upgrade(sv);
415 return sv_pv(sv);
416}
417
0feed65a
NC
418/*
419=for apidoc sv_pvutf8
420
421Use the C<SvPVutf8_nolen> macro instead
422
423=for apidoc sv_pvutf8n
424
425A private implementation of the C<SvPVutf8> macro for compilers
426which can't cope with complex macro expressions. Always use the macro
427instead.
428
429=cut
430*/
431
432char *
433Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp)
434{
435 sv_utf8_upgrade(sv);
436 return sv_pvn(sv,lp);
437}
438
205c02c2
NC
439/* sv_utf8_upgrade() is now a macro using sv_utf8_upgrade_flags();
440 * this function provided for binary compatibility only
441 */
442
443STRLEN
444Perl_sv_utf8_upgrade(pTHX_ register SV *sv)
445{
446 return sv_utf8_upgrade_flags(sv, SV_GMAGIC);
447}
448
7ee2227d
SP
449int
450Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
451{
452 dTHXs;
453 va_list(arglist);
454 va_start(arglist, format);
455 return PerlIO_vprintf(stream, format, arglist);
456}
457
458int
459Perl_printf_nocontext(const char *format, ...)
460{
461 dTHX;
462 va_list(arglist);
463 va_start(arglist, format);
464 return PerlIO_vprintf(PerlIO_stdout(), format, arglist);
465}
466
467#if defined(HUGE_VAL) || (defined(USE_LONG_DOUBLE) && defined(HUGE_VALL))
468/*
469 * This hack is to force load of "huge" support from libm.a
470 * So it is in perl for (say) POSIX to use.
471 * Needed for SunOS with Sun's 'acc' for example.
472 */
473NV
474Perl_huge(void)
475{
c773ee7a 476# if defined(USE_LONG_DOUBLE) && defined(HUGE_VALL)
7ee2227d 477 return HUGE_VALL;
c773ee7a 478# else
7ee2227d 479 return HUGE_VAL;
c773ee7a 480# endif
7ee2227d
SP
481}
482#endif
483
f2f0f092
NC
484/* compatibility with versions <= 5.003. */
485void
486Perl_gv_fullname(pTHX_ SV *sv, const GV *gv)
487{
666ea192 488 gv_fullname3(sv, gv, sv == (const SV*)gv ? "*" : "");
f2f0f092
NC
489}
490
491/* compatibility with versions <= 5.003. */
492void
493Perl_gv_efullname(pTHX_ SV *sv, const GV *gv)
494{
666ea192 495 gv_efullname3(sv, gv, sv == (const SV*)gv ? "*" : "");
f2f0f092
NC
496}
497
2674aeec
NC
498void
499Perl_gv_fullname3(pTHX_ SV *sv, const GV *gv, const char *prefix)
500{
501 gv_fullname4(sv, gv, prefix, TRUE);
502}
503
504void
505Perl_gv_efullname3(pTHX_ SV *sv, const GV *gv, const char *prefix)
506{
507 gv_efullname4(sv, gv, prefix, TRUE);
508}
509
887986eb
NC
510/*
511=for apidoc gv_fetchmethod
512
513See L<gv_fetchmethod_autoload>.
514
515=cut
516*/
517
518GV *
519Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name)
520{
521 return gv_fetchmethod_autoload(stash, name, TRUE);
522}
523
7a7b9979
NC
524HE *
525Perl_hv_iternext(pTHX_ HV *hv)
526{
527 return hv_iternext_flags(hv, 0);
528}
529
bc5cdc23
NC
530void
531Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how)
532{
bd61b366 533 sv_magic((SV*)hv, (SV*)gv, how, NULL, 0);
bc5cdc23
NC
534}
535
b966a812
SP
536AV *
537Perl_av_fake(pTHX_ register I32 size, register SV **strp)
538{
539 register SV** ary;
b9f83d2f 540 register AV * const av = (AV*)newSV_type(SVt_PVAV);
b966a812
SP
541 Newx(ary,size+1,SV*);
542 AvALLOC(av) = ary;
543 Copy(strp,ary,size,SV*);
544 AvREIFY_only(av);
9c6bc640 545 AvARRAY(av) = ary;
b966a812
SP
546 AvFILLp(av) = size - 1;
547 AvMAX(av) = size - 1;
548 while (size--) {
549 assert (*strp);
550 SvTEMP_off(*strp);
551 strp++;
552 }
553 return av;
554}
555
34d367cd 556bool
e4dba786
NC
557Perl_do_open(pTHX_ GV *gv, register const char *name, I32 len, int as_raw,
558 int rawmode, int rawperm, PerlIO *supplied_fp)
559{
560 return do_openn(gv, name, len, as_raw, rawmode, rawperm,
561 supplied_fp, (SV **) NULL, 0);
562}
563
564bool
34d367cd
SP
565Perl_do_open9(pTHX_ GV *gv, register const char *name, I32 len, int
566as_raw,
567 int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs,
568 I32 num_svs)
569{
570 PERL_UNUSED_ARG(num_svs);
571 return do_openn(gv, name, len, as_raw, rawmode, rawperm,
572 supplied_fp, &svs, 1);
573}
574
575int
576Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode)
577{
578 /* The old body of this is now in non-LAYER part of perlio.c
579 * This is a stub for any XS code which might have been calling it.
580 */
581 const char *name = ":raw";
582#ifdef PERLIO_USING_CRLF
583 if (!(mode & O_BINARY))
584 name = ":crlf";
585#endif
586 return PerlIO_binmode(aTHX_ fp, iotype, mode, name);
587}
588
a9f96b3f
NC
589#ifndef OS2
590bool
591Perl_do_aexec(pTHX_ SV *really, register SV **mark, register SV **sp)
592{
593 return do_aexec5(really, mark, sp, 0, 0);
594}
595#endif
596
9555a685
NC
597#ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
598bool
599Perl_do_exec(pTHX_ const char *cmd)
600{
601 return do_exec3(cmd,0,0);
602}
603#endif
604
89552e80
NC
605/* Backwards compatibility. */
606int
607Perl_init_i18nl14n(pTHX_ int printwarn)
608{
609 return init_i18nl10n(printwarn);
610}
611
c78ff979
NC
612OP *
613Perl_oopsCV(pTHX_ OP *o)
614{
615 Perl_croak(aTHX_ "NOT IMPL LINE %d",__LINE__);
616 /* STUB */
617 PERL_UNUSED_ARG(o);
618 NORETURN_FUNCTION_END;
619}
620
621PP(pp_padany)
622{
623 DIE(aTHX_ "NOT IMPL LINE %d",__LINE__);
c78ff979
NC
624}
625
626PP(pp_mapstart)
627{
628 DIE(aTHX_ "panic: mapstart"); /* uses grepstart */
629}
630
0b612f93
NC
631/* These ops all have the same body as pp_null. */
632PP(pp_scalar)
633{
97aff369 634 dVAR;
0b612f93
NC
635 return NORMAL;
636}
637
638PP(pp_regcmaybe)
639{
97aff369 640 dVAR;
0b612f93
NC
641 return NORMAL;
642}
643
644PP(pp_lineseq)
645{
97aff369 646 dVAR;
0b612f93
NC
647 return NORMAL;
648}
649
650PP(pp_scope)
651{
97aff369 652 dVAR;
0b612f93
NC
653 return NORMAL;
654}
655
656/* Ops that are calls to do_kv. */
657PP(pp_values)
658{
659 return do_kv();
660}
661
662PP(pp_keys)
663{
664 return do_kv();
665}
666
667/* Ops that are simply calls to other ops. */
668PP(pp_dump)
669{
670 return pp_goto();
671 /*NOTREACHED*/
672}
673
674PP(pp_dofile)
675{
676 return pp_require();
677}
678
679PP(pp_dbmclose)
680{
681 return pp_untie();
682}
683
684PP(pp_read)
685{
686 return pp_sysread();
687}
688
689PP(pp_recv)
690{
691 return pp_sysread();
692}
693
694PP(pp_seek)
695{
696 return pp_sysseek();
697}
698
699PP(pp_fcntl)
700{
701 return pp_ioctl();
702}
703
704PP(pp_gsockopt)
705{
706 return pp_ssockopt();
707}
708
709PP(pp_getsockname)
710{
711 return pp_getpeername();
712}
713
714PP(pp_lstat)
715{
716 return pp_stat();
717}
718
719PP(pp_fteowned)
720{
721 return pp_ftrowned();
722}
723
724PP(pp_ftbinary)
725{
726 return pp_fttext();
727}
728
729PP(pp_localtime)
730{
731 return pp_gmtime();
732}
733
734PP(pp_shmget)
735{
736 return pp_semget();
737}
738
739PP(pp_shmctl)
740{
741 return pp_semctl();
742}
743
744PP(pp_shmread)
745{
746 return pp_shmwrite();
747}
748
749PP(pp_msgget)
750{
751 return pp_semget();
752}
753
754PP(pp_msgctl)
755{
756 return pp_semctl();
757}
758
759PP(pp_ghbyname)
760{
761 return pp_ghostent();
762}
763
764PP(pp_ghbyaddr)
765{
766 return pp_ghostent();
767}
768
769PP(pp_gnbyname)
770{
771 return pp_gnetent();
772}
773
774PP(pp_gnbyaddr)
775{
776 return pp_gnetent();
777}
778
779PP(pp_gpbyname)
780{
781 return pp_gprotoent();
782}
783
784PP(pp_gpbynumber)
785{
786 return pp_gprotoent();
787}
788
789PP(pp_gsbyname)
790{
791 return pp_gservent();
792}
793
794PP(pp_gsbyport)
795{
796 return pp_gservent();
797}
798
799PP(pp_gpwnam)
800{
801 return pp_gpwent();
802}
803
804PP(pp_gpwuid)
805{
806 return pp_gpwent();
807}
808
809PP(pp_ggrnam)
810{
811 return pp_ggrent();
812}
813
814PP(pp_ggrgid)
815{
816 return pp_ggrent();
817}
818
957b0e1d
NC
819PP(pp_ftsize)
820{
4992681b 821 return pp_ftis();
957b0e1d
NC
822}
823
824PP(pp_ftmtime)
825{
4992681b 826 return pp_ftis();
957b0e1d
NC
827}
828
829PP(pp_ftatime)
830{
4992681b 831 return pp_ftis();
957b0e1d
NC
832}
833
834PP(pp_ftctime)
835{
4992681b 836 return pp_ftis();
957b0e1d
NC
837}
838
f1cb2d48
NC
839PP(pp_ftzero)
840{
841 return pp_ftrowned();
842}
843
844PP(pp_ftsock)
845{
846 return pp_ftrowned();
847}
848
849PP(pp_ftchr)
850{
851 return pp_ftrowned();
852}
853
854PP(pp_ftblk)
855{
856 return pp_ftrowned();
857}
858
859PP(pp_ftfile)
860{
861 return pp_ftrowned();
862}
863
864PP(pp_ftdir)
865{
866 return pp_ftrowned();
867}
868
869PP(pp_ftpipe)
870{
871 return pp_ftrowned();
872}
873
17ad201a
NC
874PP(pp_ftsuid)
875{
876 return pp_ftrowned();
877}
878
879PP(pp_ftsgid)
880{
881 return pp_ftrowned();
882}
883
884PP(pp_ftsvtx)
885{
886 return pp_ftrowned();
887}
888
605b9385
NC
889PP(pp_unlink)
890{
891 return pp_chown();
892}
893
894PP(pp_chmod)
895{
896 return pp_chown();
897}
898
899PP(pp_utime)
900{
901 return pp_chown();
902}
903
904PP(pp_kill)
905{
906 return pp_chown();
907}
908
ce6987d0
NC
909PP(pp_symlink)
910{
911 return pp_link();
912}
913
af9e49b4
NC
914PP(pp_ftrwrite)
915{
916 return pp_ftrread();
917}
918
919PP(pp_ftrexec)
920{
921 return pp_ftrread();
922}
923
924PP(pp_fteread)
925{
926 return pp_ftrread();
927}
928
929PP(pp_ftewrite)
930{
931 return pp_ftrread();
932}
933
934PP(pp_fteexec)
935{
936 return pp_ftrread();
937}
938
c9f7ac20
NC
939PP(pp_msgsnd)
940{
941 return pp_shmwrite();
942}
943
944PP(pp_msgrcv)
945{
946 return pp_shmwrite();
947}
948
64a1bc8e
NC
949PP(pp_syswrite)
950{
951 return pp_send();
952}
953
ca563b4e
NC
954PP(pp_semop)
955{
956 return pp_shmwrite();
957}
958
25a55bd7
SP
959PP(pp_dor)
960{
f6a64177 961 return pp_defined();
25a55bd7
SP
962}
963
c960fc3b
SP
964PP(pp_andassign)
965{
966 return pp_and();
967}
968
969PP(pp_orassign)
970{
971 return pp_or();
972}
973
974PP(pp_dorassign)
975{
976 return pp_defined();
977}
978
12e9c124
NC
979PP(pp_lcfirst)
980{
981 return pp_ucfirst();
982}
983
afd9910b
NC
984PP(pp_slt)
985{
986 return pp_sle();
987}
988
989PP(pp_sgt)
990{
991 return pp_sle();
992}
993
994PP(pp_sge)
995{
996 return pp_sle();
997}
998
2723d216
NC
999PP(pp_rindex)
1000{
1001 return pp_index();
1002}
1003
daa2adfd
NC
1004PP(pp_hex)
1005{
1006 return pp_oct();
1007}
1008
789b4bc9
NC
1009PP(pp_pop)
1010{
1011 return pp_shift();
1012}
1013
71302fe3
NC
1014PP(pp_cos)
1015{
1016 return pp_sin();
1017}
1018
1019PP(pp_exp)
1020{
1021 return pp_sin();
1022}
1023
1024PP(pp_log)
1025{
1026 return pp_sin();
1027}
1028
1029PP(pp_sqrt)
1030{
1031 return pp_sin();
1032}
1033
3658c1f1
NC
1034PP(pp_bit_xor)
1035{
1036 return pp_bit_or();
1037}
1038
17ab7946
NC
1039PP(pp_rv2hv)
1040{
1041 return Perl_pp_rv2av(aTHX);
1042}
1043
038e8d3c
NC
1044U8 *
1045Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv)
1046{
1047 return Perl_uvuni_to_utf8_flags(aTHX_ d, uv, 0);
1048}
1049
814fafa7
NC
1050bool
1051Perl_is_utf8_string_loc(pTHX_ const U8 *s, STRLEN len, const U8 **ep)
1052{
1053 return is_utf8_string_loclen(s, len, ep, 0);
1054}
1055
7ee2227d 1056/*
d5b2b27b
NC
1057=for apidoc sv_nolocking
1058
1059Dummy routine which "locks" an SV when there is no locking module present.
1060Exists to avoid test for a NULL function pointer and because it could
1061potentially warn under some level of strict-ness.
1062
1063"Superseded" by sv_nosharing().
1064
1065=cut
1066*/
1067
1068void
1069Perl_sv_nolocking(pTHX_ SV *sv)
1070{
96a5add6 1071 PERL_UNUSED_CONTEXT;
d5b2b27b
NC
1072 PERL_UNUSED_ARG(sv);
1073}
1074
1075
1076/*
1077=for apidoc sv_nounlocking
1078
1079Dummy routine which "unlocks" an SV when there is no locking module present.
1080Exists to avoid test for a NULL function pointer and because it could
1081potentially warn under some level of strict-ness.
1082
1083"Superseded" by sv_nosharing().
1084
1085=cut
1086*/
1087
1088void
1089Perl_sv_nounlocking(pTHX_ SV *sv)
1090{
96a5add6 1091 PERL_UNUSED_CONTEXT;
d5b2b27b
NC
1092 PERL_UNUSED_ARG(sv);
1093}
1094
2053acbf
NC
1095void
1096Perl_save_long(pTHX_ long int *longp)
1097{
1098 dVAR;
1099 SSCHECK(3);
1100 SSPUSHLONG(*longp);
1101 SSPUSHPTR(longp);
1102 SSPUSHINT(SAVEt_LONG);
1103}
1104
1105void
2053acbf
NC
1106Perl_save_iv(pTHX_ IV *ivp)
1107{
1108 dVAR;
1109 SSCHECK(3);
1110 SSPUSHIV(*ivp);
1111 SSPUSHPTR(ivp);
1112 SSPUSHINT(SAVEt_IV);
1113}
1114
1115void
1116Perl_save_nogv(pTHX_ GV *gv)
1117{
1118 dVAR;
1119 SSCHECK(2);
1120 SSPUSHPTR(gv);
1121 SSPUSHINT(SAVEt_NSTAB);
1122}
1123
1124void
1125Perl_save_list(pTHX_ register SV **sarg, I32 maxsarg)
1126{
1127 dVAR;
1128 register I32 i;
1129
1130 for (i = 1; i <= maxsarg; i++) {
1131 register SV * const sv = newSV(0);
1132 sv_setsv(sv,sarg[i]);
1133 SSCHECK(3);
1134 SSPUSHPTR(sarg[i]); /* remember the pointer */
1135 SSPUSHPTR(sv); /* remember the value */
1136 SSPUSHINT(SAVEt_ITEM);
1137 }
1138}
1139
47518d95
NC
1140/*
1141=for apidoc sv_usepvn_mg
1142
1143Like C<sv_usepvn>, but also handles 'set' magic.
1144
1145=cut
1146*/
1147
1148void
1149Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len)
1150{
1151 sv_usepvn_flags(sv,ptr,len, SV_SMAGIC);
1152}
1153
1154/*
1155=for apidoc sv_usepvn
1156
1157Tells an SV to use C<ptr> to find its string value. Implemented by
1158calling C<sv_usepvn_flags> with C<flags> of 0, hence does not handle 'set'
1159magic. See C<sv_usepvn_flags>.
1160
1161=cut
1162*/
1163
1164void
1165Perl_sv_usepvn(pTHX_ SV *sv, char *ptr, STRLEN len)
1166{
1167 sv_usepvn_flags(sv,ptr,len, 0);
1168}
1169
cbf82dd0
NC
1170void
1171Perl_cv_ckproto(pTHX_ const CV *cv, const GV *gv, const char *p)
1172{
1173 cv_ckproto_len(cv, gv, p, p ? strlen(p) : 0);
1174}
c03e83bf
NC
1175
1176/*
1177=for apidoc unpack_str
1178
1179The engine implementing unpack() Perl function. Note: parameters strbeg, new_s
1180and ocnt are not used. This call should not be used, use unpackstring instead.
1181
1182=cut */
1183
1184I32
1185Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s,
1186 const char *strbeg, const char *strend, char **new_s, I32 ocnt,
1187 U32 flags)
1188{
1189 PERL_UNUSED_ARG(strbeg);
1190 PERL_UNUSED_ARG(new_s);
1191 PERL_UNUSED_ARG(ocnt);
1192
1193 return unpackstring(pat, patend, s, strend, flags);
1194}
b47163a2
NC
1195
1196/*
1197=for apidoc pack_cat
1198
1199The engine implementing pack() Perl function. Note: parameters next_in_list and
1200flags are not used. This call should not be used; use packlist instead.
1201
1202=cut
1203*/
1204
1205void
1206Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, register SV **beglist, SV **endlist, SV ***next_in_list, U32 flags)
1207{
1208 PERL_UNUSED_ARG(next_in_list);
1209 PERL_UNUSED_ARG(flags);
1210
1211 packlist(cat, pat, patend, beglist, endlist);
1212}
4c2df08c
NC
1213
1214HE *
1215Perl_hv_store_ent(pTHX_ HV *hv, SV *keysv, SV *val, U32 hash)
1216{
59af68cc 1217 return (HE *)hv_common(hv, keysv, NULL, 0, 0, HV_FETCH_ISSTORE, val, hash);
4c2df08c
NC
1218}
1219
1220bool
1221Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
1222{
1223 return hv_common(hv, keysv, NULL, 0, 0, HV_FETCH_ISEXISTS, 0, hash)
1224 ? TRUE : FALSE;
1225}
1226
1227HE *
1228Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash)
1229{
59af68cc 1230 return (HE *)hv_common(hv, keysv, NULL, 0, 0,
4c2df08c
NC
1231 (lval ? HV_FETCH_LVALUE : 0), NULL, hash);
1232}
1233
1234SV *
1235Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash)
1236{
1237 return (SV *) hv_common(hv, keysv, NULL, 0, 0, flags | HV_DELETE, NULL,
1238 hash);
1239}
1240
a038e571
NC
1241SV**
1242Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash,
1243 int flags)
1244{
1245 return (SV**) hv_common(hv, NULL, key, klen, flags,
1246 (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash);
1247}
1248
1249SV**
1250Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen_i32, SV *val, U32 hash)
1251{
1252 STRLEN klen;
1253 int flags;
1254
1255 if (klen_i32 < 0) {
1256 klen = -klen_i32;
1257 flags = HVhek_UTF8;
1258 } else {
1259 klen = klen_i32;
1260 flags = 0;
1261 }
1262 return (SV **) hv_common(hv, NULL, key, klen, flags,
1263 (HV_FETCH_ISSTORE|HV_FETCH_JUST_SV), val, hash);
1264}
1265
1266bool
1267Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen_i32)
1268{
1269 STRLEN klen;
1270 int flags;
1271
1272 if (klen_i32 < 0) {
1273 klen = -klen_i32;
1274 flags = HVhek_UTF8;
1275 } else {
1276 klen = klen_i32;
1277 flags = 0;
1278 }
1279 return hv_common(hv, NULL, key, klen, flags, HV_FETCH_ISEXISTS, 0, 0)
1280 ? TRUE : FALSE;
1281}
1282
1283SV**
1284Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen_i32, I32 lval)
1285{
1286 STRLEN klen;
1287 int flags;
1288
1289 if (klen_i32 < 0) {
1290 klen = -klen_i32;
1291 flags = HVhek_UTF8;
1292 } else {
1293 klen = klen_i32;
1294 flags = 0;
1295 }
1296 return (SV **) hv_common(hv, NULL, key, klen, flags,
1297 lval ? (HV_FETCH_JUST_SV | HV_FETCH_LVALUE)
1298 : HV_FETCH_JUST_SV, NULL, 0);
1299}
1300
1301SV *
1302Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen_i32, I32 flags)
1303{
1304 STRLEN klen;
1305 int k_flags;
1306
1307 if (klen_i32 < 0) {
1308 klen = -klen_i32;
1309 k_flags = HVhek_UTF8;
1310 } else {
1311 klen = klen_i32;
1312 k_flags = 0;
1313 }
1314 return (SV *) hv_common(hv, NULL, key, klen, k_flags, flags | HV_DELETE,
1315 NULL, 0);
1316}
1317
20fac488
GA
1318#endif /* NO_MATHOMS */
1319
d5b2b27b 1320/*
7ee2227d
SP
1321 * Local variables:
1322 * c-indentation-style: bsd
1323 * c-basic-offset: 4
1324 * indent-tabs-mode: t
1325 * End:
1326 *
1327 * ex: set ts=8 sts=4 sw=4 noet:
1328 */