summaryrefslogtreecommitdiff
path: root/doio.c
diff options
context:
space:
mode:
authorJens Hamisch <jens@Strawberry.COM>2000-11-24 19:31:30 +0100
committerJarkko Hietaniemi <jhi@iki.fi>2000-11-25 18:37:54 +0000
commitcf829ab07ccc67cf02ca41d6f870136b64d83833 (patch)
treec18d00c7b02d5cf3176dfcdf41179b0ddd940b4e /doio.c
parentf6c2d85bfbab1ff4d6196adc4caad35434546a3a (diff)
downloadperl-cf829ab07ccc67cf02ca41d6f870136b64d83833.tar.gz
Undo the SOCKS workarounds, instead start using PerlIO
if SOCKS is selected. Subject: perl@7847, [ID 20001030.005], close-patch, perlio - The big cleanup Date: Fri, 24 Nov 2000 18:31:30 +0100 Message-ID: <20001124183130.E28337@Strawberry.COM> Subject: Re: perl@7847, [ID 20001030.005], close-patch, perlio - Patch the patch ... From: Jens Hamisch <jens@Strawberry.COM> Date: Fri, 24 Nov 2000 19:11:51 +0100 Message-ID: <20001124191151.A28753@Strawberry.COM> p4raw-id: //depot/perl@7855
Diffstat (limited to 'doio.c')
-rw-r--r--doio.c174
1 files changed, 0 insertions, 174 deletions
diff --git a/doio.c b/doio.c
index a3a401fbd8..c325e78f3d 100644
--- a/doio.c
+++ b/doio.c
@@ -2039,177 +2039,3 @@ Perl_do_shmio(pTHX_ I32 optype, SV **mark, SV **sp)
#endif /* SYSV IPC */
-#ifdef SOCKS_64BIT_BUG
-
-/**
- ** getc and ungetc wrappers for the 64 bit problems with SOCKS 5 support
- ** Workaround to the problem, that SOCKS maps a socket 'getc' to revc
- ** without checking the ungetc buffer.
- **/
-
-/* Not threadsafe? */
-static S64_IOB *s64_buffer = (S64_IOB *) NULL;
-
-/* initialize the buffer area */
-/* required after a fork(2) call in order to remove side effects */
-void
-Perl_do_s64_init_buffer(void)
-{
- s64_buffer = (S64_IOB *) NULL;
-}
-
-/* get a buffered stream pointer */
-STATIC S64_IOB*
-S_s64_get_buffer(pTHX_ PerlIO *fp)
-{
- S64_IOB *ptr = s64_buffer;
- while( ptr && ptr->fp != fp)
- ptr = ptr->next;
- return( ptr);
-}
-
-/* create a buffered stream pointer */
-STATIC S64_IOB*
-S_s64_create_buffer(pTHX_ PerlIO *f)
-{
- S64_IOB *ptr = malloc( sizeof( S64_IOB));
- if( ptr) {
- ptr->fp = f;
- ptr->cnt = ptr->size = 0;
- ptr->buffer = (int *) NULL;
- ptr->next = s64_buffer;
- ptr->last = (S64_IOB *) NULL;
- if( s64_buffer) s64_buffer->last = ptr;
- s64_buffer = ptr;
- }
- return( ptr);
-}
-
-/* delete a buffered stream pointer */
-void
-Perl_do_s64_delete_buffer(pTHX_ PerlIO *f)
-{
- S64_IOB *ptr = S_s64_get_buffer(aTHX_ f);
- if( ptr) {
- /* fix the stream pointer according to the bytes buffered */
- /* required, if this is called in a seek-context */
- if( ptr->cnt) fseek(f,-ptr->cnt,SEEK_CUR);
- if( ptr->buffer) free( ptr->buffer);
- if( ptr->last)
- ptr->last->next = ptr->next;
- else
- s64_buffer = ptr->next;
- free( ptr);
- }
-}
-
-/* internal buffer management */
-
-#define S64_BUFFER_SIZE 32
-
-STATIC int
-S_s64_malloc(pTHX_ S64_IOB *ptr)
-{
- if( ptr) {
- if( !ptr->buffer) {
- ptr->buffer = (int *) calloc( S64_BUFFER_SIZE, sizeof( int));
- ptr->size = ptr->cnt = 0;
- } else {
- ptr->buffer = (int *) realloc( ptr->buffer,
- ptr->size + S64_BUFFER_SIZE);
- }
-
- if( !ptr->buffer)
- return( 0);
-
- ptr->size += S64_BUFFER_SIZE;
-
- return( 1);
- }
-
- return( 0);
-}
-
-/* SOCKS 64 bit getc replacement */
-int
-Perl_do_s64_getc(pTHX_ PerlIO *f)
-{
- S64_IOB *ptr = S_s64_get_buffer(aTHX_ f);
- if( ptr) {
- if( ptr->cnt)
- return( ptr->buffer[--ptr->cnt]);
- }
- return( getc(f));
-}
-
-/* SOCKS 64 bit ungetc replacement */
-int
-Perl_do_s64_ungetc(pTHX_ int ch, PerlIO *f)
-{
- S64_IOB *ptr = S_s64_get_buffer(aTHX_ f);
-
- if( !ptr) ptr = S_s64_create_buffer(aTHX_ f);
- if( !ptr) return( EOF);
- if( !ptr->buffer || (ptr->buffer && ptr->cnt >= ptr->size))
- if( !S_s64_malloc(aTHX_ ptr)) return( EOF);
- ptr->buffer[ptr->cnt++] = ch;
-
- return( ch);
-}
-
-/* SOCKS 64 bit fread replacement */
-SSize_t
-Perl_do_s64_fread(pTHX_ void *buf, SSize_t count, PerlIO* f)
-{
- SSize_t len = 0;
- char *bufptr = (char *) buf;
- S64_IOB *ptr = S_s64_get_buffer(aTHX_ f);
- if( ptr) {
- while( ptr->cnt && count) {
- *bufptr++ = ptr->buffer[--ptr->cnt];
- count--, len++;
- }
- }
- if( count)
- len += (SSize_t)fread(bufptr,1,count,f);
-
- return( len);
-}
-
-/* SOCKS 64 bit fseek replacement */
-int
-Perl_do_s64_seek(pTHX_ PerlIO* f, Off_t offset, int whence)
-{
- S64_IOB *ptr = S_s64_get_buffer(aTHX_ f);
-
- /* Simply clear the buffer and seek if the position is absolute */
- if( SEEK_SET == whence || SEEK_END == whence) {
- if( ptr) ptr->cnt = 0;
-
- /* In case of relative positioning clear the buffer and calculate */
- /* a fixed offset */
- } else if( SEEK_CUR == whence) {
- if( ptr) {
- offset -= (Off_t)ptr->cnt;
- ptr->cnt = 0;
- }
- }
-
- /* leave out buffer untouched otherwise, because fseek will fail */
- /* seek now */
- return( fseeko( f, offset, whence));
-}
-
-/* SOCKS 64 bit ftell replacement */
-Off_t
-Perl_do_s64_tell(pTHX_ PerlIO* f)
-{
- Off_t offset = 0;
- S64_IOB *ptr = S_s64_get_buffer(aTHX_ f);
- if( ptr)
- offset = ptr->cnt;
- return( ftello(f) - offset);
-}
-
-#endif /* SOCKS_64BIT_BUG */
-