diff options
Diffstat (limited to 'usersub.c')
-rw-r--r-- | usersub.c | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/usersub.c b/usersub.c deleted file mode 100644 index 11cf321a7d..0000000000 --- a/usersub.c +++ /dev/null @@ -1,147 +0,0 @@ -/* $RCSfile: usersub.c,v $$Revision: 4.1 $$Date: 92/08/07 18:28:45 $ - * - * This file contains stubs for routines that the user may define to - * set up glue routines for C libraries or to decrypt encrypted scripts - * for execution. - * - * $Log: usersub.c,v $ - * Revision 4.1 92/08/07 18:28:45 lwall - * - * Revision 4.0.1.2 92/06/08 16:04:24 lwall - * patch20: removed implicit int declarations on functions - * - * Revision 4.0.1.1 91/11/11 16:47:17 lwall - * patch19: deleted some unused functions from usersub.c - * - * Revision 4.0 91/03/20 01:55:56 lwall - * 4.0 baseline. - * - */ - -#include "EXTERN.h" -#include "perl.h" - -int -userinit() -{ - return 0; -} - -/* - * The following is supplied by John Macdonald as a means of decrypting - * and executing (presumably proprietary) scripts that have been encrypted - * by a (presumably secret) method. The idea is that you supply your own - * routine in place of cryptfilter (which is purposefully a very weak - * encryption). If an encrypted script is detected, a process is forked - * off to run the cryptfilter routine as input to perl. - */ - -#ifdef CRYPTSCRIPT - -#include <signal.h> -#ifdef I_VFORK -#include <vfork.h> -#endif - -#ifdef CRYPTLOCAL - -#include "cryptlocal.h" - -#else /* ndef CRYPTLOCAL */ - -#define CRYPT_MAGIC_1 0xfb -#define CRYPT_MAGIC_2 0xf1 - -void -cryptfilter( fil ) -FILE * fil; -{ - int ch; - - while( (ch = getc( fil )) != EOF ) { - putchar( (ch ^ 0x80) ); - } -} - -#endif /* CRYPTLOCAL */ - -#ifndef MSDOS -static FILE *lastpipefile; -static int pipepid; - -#ifdef VOIDSIG -# define VOID void -#else -# define VOID int -#endif - -FILE * -my_pfiopen(fil,func) /* open a pipe to function call for input */ -FILE *fil; -VOID (*func)(); -{ - int p[2]; - SV *sv; - - if (pipe(p) < 0) { - fclose( fil ); - croak("Can't get pipe for decrypt"); - } - - /* make sure that the child doesn't get anything extra */ - fflush(stdout); - fflush(stderr); - - while ((pipepid = fork()) < 0) { - if (errno != EAGAIN) { - close(p[0]); - close(p[1]); - fclose( fil ); - croak("Can't fork for decrypt"); - } - sleep(5); - } - if (pipepid == 0) { - close(p[0]); - if (p[1] != 1) { - dup2(p[1], 1); - close(p[1]); - } - (*func)(fil); - fflush(stdout); - fflush(stderr); - _exit(0); - } - close(p[1]); - close(fileno(fil)); - fclose(fil); - sv = *av_fetch(fdpid,p[0],TRUE); - sv->sv_u.sv_useful = pipepid; - return fdopen(p[0], "r"); -} - -void -cryptswitch() -{ - int ch; -#ifdef USE_STD_STDIO - /* cheat on stdio if possible */ - if (rsfp->_cnt > 0 && (*rsfp->_ptr & 0xff) != CRYPT_MAGIC_1) - return; -#endif - ch = getc(rsfp); - if (ch == CRYPT_MAGIC_1) { - if (getc(rsfp) == CRYPT_MAGIC_2) { - if( perldb ) croak("can't debug an encrypted script"); - rsfp = my_pfiopen( rsfp, cryptfilter ); - preprocess = 1; /* force call to pclose when done */ - } - else - croak( "bad encryption run_format" ); - } - else - ungetc(ch,rsfp); -} -#endif /* !MSDOS */ - -#endif /* CRYPTSCRIPT */ |