xref: /openbsd-src/gnu/usr.bin/perl/dist/Devel-PPPort/module3.c (revision f2a19305cfc49ea4d1a5feb55cd6c283c6f1e031)
15759b3d2Safresh1 /*******************************************************************************
25759b3d2Safresh1 *
35759b3d2Safresh1 *  Perl/Pollution/Portability
45759b3d2Safresh1 *
55759b3d2Safresh1 ********************************************************************************
65759b3d2Safresh1 *
75759b3d2Safresh1 *  Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz.
85759b3d2Safresh1 *  Version 2.x, Copyright (C) 2001, Paul Marquess.
95759b3d2Safresh1 *  Version 1.x, Copyright (C) 1999, Kenneth Albanowski.
105759b3d2Safresh1 *
115759b3d2Safresh1 *  This program is free software; you can redistribute it and/or
125759b3d2Safresh1 *  modify it under the same terms as Perl itself.
135759b3d2Safresh1 *
145759b3d2Safresh1 *******************************************************************************/
155759b3d2Safresh1 
165759b3d2Safresh1 #include "EXTERN.h"
175759b3d2Safresh1 #include "perl.h"
185759b3d2Safresh1 
195759b3d2Safresh1 #define NEED_PL_parser
205759b3d2Safresh1 #define NO_XSLOCKS
215759b3d2Safresh1 #include "XSUB.h"
225759b3d2Safresh1 
235759b3d2Safresh1 #include "ppport.h"
245759b3d2Safresh1 
throws_exception(int throw_e)255759b3d2Safresh1 static void throws_exception(int throw_e)
265759b3d2Safresh1 {
275759b3d2Safresh1   if (throw_e)
285759b3d2Safresh1     croak("boo\n");
295759b3d2Safresh1 }
305759b3d2Safresh1 
exception(int throw_e)315759b3d2Safresh1 int exception(int throw_e)
325759b3d2Safresh1 {
335759b3d2Safresh1   dTHR;
345759b3d2Safresh1   dXCPT;
355759b3d2Safresh1   SV *caught = get_sv("Devel::PPPort::exception_caught", 0);
365759b3d2Safresh1 
375759b3d2Safresh1   XCPT_TRY_START {
385759b3d2Safresh1     throws_exception(throw_e);
395759b3d2Safresh1   } XCPT_TRY_END
405759b3d2Safresh1 
415759b3d2Safresh1   XCPT_CATCH
425759b3d2Safresh1   {
435759b3d2Safresh1     sv_setiv(caught, 1);
445759b3d2Safresh1     XCPT_RETHROW;
455759b3d2Safresh1   }
465759b3d2Safresh1 
475759b3d2Safresh1   sv_setiv(caught, 0);
485759b3d2Safresh1 
495759b3d2Safresh1   return 42;
505759b3d2Safresh1 }
515759b3d2Safresh1 
call_newCONSTSUB_3(void)525759b3d2Safresh1 void call_newCONSTSUB_3(void)
535759b3d2Safresh1 {
545759b3d2Safresh1   newCONSTSUB(gv_stashpv("Devel::PPPort", FALSE), "test_value_3", newSViv(3));
555759b3d2Safresh1 }
565759b3d2Safresh1 
get_PL_signals_3(void)575759b3d2Safresh1 U32 get_PL_signals_3(void)
585759b3d2Safresh1 {
595759b3d2Safresh1   return PL_signals;
605759b3d2Safresh1 }
615759b3d2Safresh1 
dummy_parser_warning(void)625759b3d2Safresh1 int dummy_parser_warning(void)
635759b3d2Safresh1 {
645759b3d2Safresh1   char * volatile my_bufptr;
655759b3d2Safresh1   char * volatile *my_p_bufptr;
665759b3d2Safresh1   my_bufptr = PL_bufptr;
675759b3d2Safresh1   my_p_bufptr = &PL_bufptr;
685759b3d2Safresh1   PL_bufptr = my_bufptr;
695759b3d2Safresh1   PL_bufptr = *my_p_bufptr;
70*f2a19305Safresh1   return my_p_bufptr != NULL;
715759b3d2Safresh1 }
72