diff options
author | Perl 5 Porters <perl5-porters@africa.nicoh.com> | 1997-05-16 10:15:00 +1200 |
---|---|---|
committer | Chip Salzenberg <chip@atlantic.net> | 1997-05-16 10:15:00 +1200 |
commit | c90c0ff485be15aaf3ee20121299cb014ee6b1ff (patch) | |
tree | 2c69d15977fd7b00642d5daa2115ae1fa27e75f7 /win32/win32io.c | |
parent | 7b05b7e32c22894360c5332cd30232bdea49f5a8 (diff) | |
download | perl-c90c0ff485be15aaf3ee20121299cb014ee6b1ff.tar.gz |
[inseparable changes from match from perl-5.003_99a to perl5.004]
BUILD PROCESS
Subject: Don't use 'unset' in Configure
From: Chip Salzenberg <chip@perl.com>
Files: Configure
Subject: Protect against having no such command as 'cc'
Date: Mon, 12 May 1997 16:35:34 -0400 (EDT)
From: Hans Mulder <hansm@icgned.nl>
Files: Configure
Msg-ID: 1997May12.163534.2006434@hmivax.humgen.upenn.edu
(applied based on p5p patch as commit 3bf198a5e20d135d4136d3233d58cf49a70772d9)
Subject: minor wording enhancement for Configure
Date: Sat, 10 May 1997 13:38:31 +0300 (EET DST)
From: Jarkko Hietaniemi <Jarkko.Hietaniemi@cc.hut.fi>
Files: Configure
private-msgid: 199705101038.NAA00471@alpha.hut.fi
CORE LANGUAGE CHANGES
Subject: Make C<m//g> reset pos on failure; make C<m//gc> not reset
From: Chip Salzenberg <chip@perl.com>
Files: dump.c op.c op.h pod/perldelta.pod pod/perlfaq6.pod pod/perlop.pod pod/perlre.pod pp_ctl.c pp_hot.c regcomp.c t/op/pat.t toke.c
Subject: SECURITY: Forbid exec() if $ENV{BASH_ENV} is tainted
From: Chip Salzenberg <chip@perl.com>
Files: pod/perldelta.pod pod/perlrun.pod pod/perlsec.pod t/op/taint.t taint.c
Subject: Allow exec() if $ENV{TERM} is tainted but innocuous
From: Chip Salzenberg <chip@perl.com>
Files: pod/perldelta.pod pod/perlrun.pod pod/perlsec.pod t/op/taint.t taint.c
Subject: Allow globbing when tainted under VMS (no external program)
From: Chip Salzenberg <chip@perl.com>
Files: pp_sys.c t/op/taint.t
CORE PORTABILITY
Subject: Win32 update (three patches)
From: Gurusamy Sarathy <gsar@engin.umich.edu>
Files: README.win32 perl.c win32/Makefile win32/config.H win32/config_h.PL win32/config_sh.PL win32/makedef.pl win32/win32.c win32/win32.h win32/win32io.c win32/win32io.h win32/win32iop.h
Subject: Don't require executable bit on perl -S if DOSISH
Date: Fri, 09 May 1997 12:33:18 -0400
From: Danny Sadinoff <sadinoff@olf.com>
Files: perl.c
Msg-ID: 337351CE.79B28DE3@olf.com
(applied based on p5p patch as commit 7596f71a28f72f9e3abd6d3962d29a7752cd9303)
DOCUMENTATION
Subject: Tweaks for perldelta
Date: Sun, 11 May 97 01:46:00 +0200
From: Unknown Contributor <hansm@euronet.nl>
Files: pod/perldelta.pod
Msg-ID: 199705102346.BAA17300@mail.euronet.nl
(applied based on p5p patch as commit 3e10809228cc961223b894e1639b44f8e2b64de0)
Subject: Mention perlfaq.pod and perlmodlib.pod in perldelta.pod
From: Chip Salzenberg <chip@perl.com>
Files: pod/perldelta.pod
Subject: Fix example of use of lexicals with formats
From: Chip Salzenberg <chip@perl.com>
Files: pod/perldelta.pod
OTHER CORE CHANGES
Subject: In C<eval &func>, always call &func in scalar context
From: Chip Salzenberg <chip@perl.com>
Files: op.c
Subject: Fix recursive substitution
From: Chip Salzenberg <chip@perl.com>
Files: cop.h global.sym pp_ctl.c proto.h scope.c
Subject: Fix core dump from get*() functions returning no alias array
From: Chip Salzenberg <chip@perl.com>
Files: pp_sys.c
Subject: Fix typo
Date: Sat, 10 May 1997 17:28:35 -0500
From: Mark K Trettin <mkt@lucent.com>
Files: pp_sys.c
private-msgid: 199705102228.RAA11163@gv18c.ih.lucent.com
Diffstat (limited to 'win32/win32io.c')
-rw-r--r-- | win32/win32io.c | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/win32/win32io.c b/win32/win32io.c index e75754abb9..db156cf133 100644 --- a/win32/win32io.c +++ b/win32/win32io.c @@ -190,6 +190,52 @@ my_get_osfhandle( int filehandle ) return _get_osfhandle(filehandle); } + +/* simulate flock by locking a range on the file */ + + +#define LK_ERR(f,i) ((f) ? (i = 0) : (errno = GetLastError())) +#define LK_LEN 0xffff0000 + +int +my_flock(int fd, int oper) +{ + OVERLAPPED o; + int i = -1; + HANDLE fh; + + fh = (HANDLE)my_get_osfhandle(fd); + memset(&o, 0, sizeof(o)); + + switch(oper) { + case LOCK_SH: /* shared lock */ + LK_ERR(LockFileEx(fh, 0, 0, LK_LEN, 0, &o),i); + break; + case LOCK_EX: /* exclusive lock */ + LK_ERR(LockFileEx(fh, LOCKFILE_EXCLUSIVE_LOCK, 0, LK_LEN, 0, &o),i); + break; + case LOCK_SH|LOCK_NB: /* non-blocking shared lock */ + LK_ERR(LockFileEx(fh, LOCKFILE_FAIL_IMMEDIATELY, 0, LK_LEN, 0, &o),i); + break; + case LOCK_EX|LOCK_NB: /* non-blocking exclusive lock */ + LK_ERR(LockFileEx(fh, + LOCKFILE_EXCLUSIVE_LOCK|LOCKFILE_FAIL_IMMEDIATELY, + 0, LK_LEN, 0, &o),i); + break; + case LOCK_UN: /* unlock lock */ + LK_ERR(UnlockFileEx(fh, 0, LK_LEN, 0, &o),i); + break; + default: /* unknown */ + errno = EINVAL; + break; + } + return i; +} + +#undef LK_ERR +#undef LK_LEN + + #ifdef PERLDLL __declspec(dllexport) #endif @@ -247,6 +293,7 @@ WIN32_IOSUBSYSTEM win32stdio = { _mkdir, _rmdir, _chdir, + my_flock, /* (*pfunc_flock)(int fd, int oper) */ 87654321L, /* end of structure */ }; |