Server IP : 85.214.239.14 / Your IP : 3.143.24.110 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/self/root/proc/2/cwd/proc/self/root/usr/share/ghostscript/10.00.0/Resource/Init/ |
Upload File : |
% Copyright (C) 2001-2021 Artifex Software, Inc. % All Rights Reserved. % % This software is provided AS-IS with no warranty, either express or % implied. % % This software is distributed under license and may not be copied, % modified or distributed except as expressly authorized under the terms % of the license contained in the file LICENSE in this distribution. % % Refer to licensing information at http://www.artifex.com or contact % Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato, % CA 94945, U.S.A., +1(415)492-9861, for further information. % % Implementation of ReusableStreamDecode filter. % This file must be loaded after gs_lev2.ps and gs_res.ps. level2dict begin % ------ ReusableStreamDecode filter ------ % /.reusablestreamdecode { % <source> <dict> .reusablestreamdecode <file> % <source> .reusablestreamdecode <file> % Collect the filter parameters. dup type /dicttype eq { 2 copy } { dup 0 dict } ifelse dup .rsdparams % Construct the filter pipeline. % The very first filter should use the value of CloseSource % from the RSD dictionary; all the others should have % CloseSource = true. % Stack: source dict filters parms 2 index /CloseSource .knownget not { //false } if 5 -1 roll % Stack: dict filters parms CloseSource source 0 1 5 index length 1 sub { 4 index 1 index get % Stack: dict filters parms CloseSource source index filtname 4 index //null eq { 0 dict } { 4 index 2 index get dup //null eq { pop 0 dict} if } ifelse 3 -1 roll pop exch filter exch pop //true exch % set CloseSource for further filters } for % If AsyncRead is true, try to create the filter directly. % Stack: dict filters parms CloseSource source 4 index /AsyncRead .knownget not { //false } if { 1 index { .reusablestream } //.internalstopped exec } { //null //true } ifelse { pop % No luck. Read the entire contents of the stream now. dup type /filetype ne { % Make a stream from a procedure or string data source. 0 () .subfiledecode } if % We must allocate the string in the same VM space as its % source, since the reusable stream must be allocated there. .currentglobal 1 index gcheck .setglobal exch currentpacking //false setpacking exch 2 dict begin /filelen 0 def % scratch dict for filelen and pos (below). % Stack: dict filters parms CloseSource oldglobal oldpacking file [ exch { dup 40000 string readstring /filelen 2 index length filelen add def % accumulate filelen not { exit } if exch } loop exch pop ] { filelen string } stopped { % try allocating a single string pop % couldn't make a string - discard filelen value } { % transfer the array-of-strings to the single string. % stack: ... [() ...] string /pos 0 def exch { 1 index exch pos exch putinterval /pos pos 40000 add def } forall } ifelse % top of stack is either array of strings or one string == stream_data end % done with scratch dict % Stack: dict filters parms CloseSource oldglobal oldpacking stream_data 3 1 roll setpacking setglobal % Stack: dict filters parms CloseSource stream_data 1 index .reusablestream } if % We created the stream successfully: clean up. 4 { exch pop } repeat 1 index type /dicttype eq { exch pop } if exch pop } odef filterdict /ReusableStreamDecode /.reusablestreamdecode load put end % level2dict