summaryrefslogtreecommitdiff
path: root/iperlsys.h
Commit message (Collapse)AuthorAgeFilesLines
* Fix PerlEnv_putenv threaded compilation on WindowsKarl Williamson2023-01-121-8/+1
| | | | | A second compilation of a workspace would fail. The first one would succeed because miniperl was being used, which isn't threaded.
* iperlsys.h: Fix misleading indentation; convert tabsKarl Williamson2022-05-091-925/+925
| | | | | This had misleading indentation of preprocessor directives. I converted all tabs to spaces, and clarified several comments.
* Provide asciiopen and asciiopen3 for z/OS ASCII I/OMike Fulton2022-01-011-2/+16
| | | | | | | | | | | | | | | | | | | - Provide an _asciiopen_ and _asciiopen3_ pair of functions for opening files on z/OS. These services do a standard open and then, if the open is successful, update the CCSID of the file descriptor to 819 (ASCII) iff the oflag has ``O_CREAT`` set (e.g. a file is being created). We could consider printing out a warning if a file is untagged - right now this will _work correctly_ if the file in encoded as ASCII (CCSID 819) but will fail if the file is EBCDIC. - Provide a wrapper _Perl_mkstemp_cloexec_ which not only creates a temporary file using mkstemp but will also tag the file as CCSID 819. The tagging is only performed if ``__CHARSET_LIB == 1``, i.e. the code is compiled with -qascii. - Define _PerlIO_open_ and _PerlLIO_open3_ as _asciiopen_ and _asciiopen3_ respectively, when the code is built for ASCII ``#if (__CHARSET_LIB == 1)`` on z/OS ``#if defined(OEMVS)``.
* Remove NetWare supportDagfinn Ilmari Mannsåker2021-10-081-29/+0
| | | | The build has been broken since 2009.
* iperlsys.h: Clarify commentKarl Williamson2021-02-041-1/+1
|
* style: Detabify indentation of the C code maintained by the core.Michael G. Schwern2021-01-171-251/+251
| | | | | | | | | | | This just detabifies to get rid of the mixed tab/space indentation. Applying consistent indentation and dealing with other tabs are another issue. Done with `expand -i`. * vutil.* left alone, it's part of version. * Left regen managed files alone for now.
* Win32: implement symlink() and readlink()Tony Cook2020-12-011-0/+12
| | | | | | | | The API used requires Windows Vista or later. The API itself requires either elevated privileges or a sufficiently recent version of Windows 10 running in "Developer Mode", so some tests require updates.
* iperlsys.h: White-space onlyKarl Williamson2020-03-161-6/+5
|
* Add thread safety to some environment accessesKarl Williamson2020-03-111-5/+15
| | | | | | | | | | | | | | | | | | The previous commit added a mutex specifically for protecting against simultaneous accesses of the environment. This commit changes the normal getenv, putenv, and clearenv functions to use it, to avoid races. This makes the code simpler in places where we've gotten burned and added stuff to avoid races. Other places where we haven't known we were getting burned could have existed until now. Now that comes automatically, and we can remove the special cases we earlier stumbled over. getenv() returns a pointer to static memory, which can be overwritten at any moment from another thread, or even another getenv from the same thread. This commit changes the accesses to be under control of a mutex, and in the case of getenv, a mortalized copy is created so that there is no possible race.
* add explicit 1-arg and 3-arg sig handler functionsDavid Mitchell2019-11-181-2/+5
| | | | | | | Currently, whether the OS-level signal handler function is declared as 1-arg or 3-arg depends on the configuration. Add explicit versions of these functions, principally so that POSIX.xs can call which version of the handler it wants regardless of configuration: see next commit.
* add PERL_USE_3ARG_SIGHANDLER macroDavid Mitchell2019-11-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | There are a bunch of places in core that do #if defined(HAS_SIGACTION) && defined(SA_SIGINFO) to decide whether the C signal handler function should be declared with, and called with, 1 arg or 3 args. This commit just adds #if defined(HAS_SIGACTION) && defined(SA_SIGINFO) # define PERL_USE_3ARG_SIGHANDLER #endif Then uses the new macro in all other places rather than checking HAS_SIGACTION and SA_SIGINFO. Thus there is no functional change; it just makes the code more readable. However, it turns out that all is not well with core's use of 1-arg versus 3-arg, and the few commits will fix this.
* add Siginfo_tDavid Mitchell2019-11-181-1/+1
| | | | | | | | | | | | | From the code comments: This is an alias for the OS's siginfo_t, except that where the OS doesn't support it, declare a dummy version instead. This allows us to have signal handler functions which always have a Siginfo_t parameter regardless of platform, (and which will just be passed a NULL value where the OS doesn't support HAS_SIGACTION). It doesn't actually do anything useful yet, but will shortly allow signal handler functions to be rationalised.
* remove broken PerlLIO_mkstemp() definitionZefram2017-12-221-1/+0
| | | | | This was only defined in non-PERL_IMPLICIT_SYS mode, and not used anywhere.
* add Win32 USE_NO_REGISTRY build optionDaniel Dragan2015-10-121-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | -the first arg of win32_get_privlib is not used if the registry is not queried, create a macro to allow the arg to drop out on WIN32_NO_REGISTRY builds for efficiency and not to have unused C litteral strings in the binary -This patch changes the ABI of PerlEnv_lib_path/PerlEnvLibPath/win32_get_privlib between USE_NO_REGISTRY and no USE_NO_REGISTRY. Since win32_get_privlib is not exported from perl523.dll, assume it and PerlEnv_lib_path are not public API, note technically PerlEnv_lib_path will be callable only on PERL_IMPLICIT_SYS builds, on no PERL_IMPLICIT_SYS builds it will fail at link time since win32_get_privlib isnt exported. Therefore place it in non-[affecting]-binary compatibility even though it does affect binary compatibility. -delay load advapi32.dll to save startup time (loading the DLL and the DLL calling its initializers in DllMain) and one 4 KB memory page for advapi32's .data section (doing "perl -E"sleep 100" on WinXP shows advapi32 has a 20KB long .data section, first 4 KB are unique to the process, the remaining 16KB are COW shared between processes according to vmmap tool), putting a DebugBreak() in pp_getlogin and doing a "nmake all" shows miniperl never calls getlogin during the build process. An nmake test shows only ext/POSIX/t/wrappers.t and lib/warnings.t execute pp_getlogin. Keeping advapi32.dll out of the perl process requires removing comctl32.dll, since comctrl32.dll loads advapi32.dll, from perl which I always do as a custom patch. filed as [perl #123658] XXXXXXXXXXXXXXXXXXXXXXX
* prevent warning noise on mingw-64 buildsTony Cook2015-09-011-0/+2
| | | | | | | | | | | | The following was produced for every non-miniperl object built, including for XS modules and the test builds done by ExtUtils::MakeMaker etc ..\iperlsys.h:640:66: warning: 'struct utimbuf' declared inside parameter list typedef int (*LPLIOUtime)(struct IPerlLIO*, const char*, struct utimbuf*); ^ ..\iperlsys.h:640:66: warning: its scope is only this definition or declaration, which is probably not what you want
* Replace common Emacs file-local variables with dir-localsDagfinn Ilmari Mannsåker2015-03-221-6/+0
| | | | | | | | | | | | | | | | An empty cpan/.dir-locals.el stops Emacs using the core defaults for code imported from CPAN. Committer's work: To keep t/porting/cmp_version.t and t/porting/utils.t happy, $VERSION needed to be incremented in many files, including throughout dist/PathTools. perldelta entry for module updates. Add two Emacs control files to MANIFEST; re-sort MANIFEST. For: RT #124119.
* Externalize decc$ungetc prototype.Craig A. Berry2015-01-291-0/+2
| | | | | | | | Otherwise the VMS C++ compiler mangles it and we get a link failure. And while we're there we can eliminate some PerlIO workarounds for problems in long-defunct versions of the CRTL.
* Eliminate VMS-specific code in PerlIOStdio_fill.Craig A. Berry2014-06-081-1/+1
| | | | | | | | | | | | | | The same logic but with more safety checks is already defined for PerlSIO_ungetc in iperlsys.h, so DRY says we should just use that. Also, that definition in iperlsys.h really depends on the library we are using, not the compiler. And there is only one viable C library on VMS and it ships with the OS, so it's really just an OS dependency. N.B. While it may be something of a fool's errand to maintain the stdio layer, deleting redundant code can only be a good thing, possibly enabling further refactoring and clean-up.
* Stop making assumptions about uids and gids.Brian Fraser2013-06-041-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | The code dealt rather inconsistently with uids and gids. Some places assumed that they could be safely stored in UVs, others in IVs, others in ints; All of them should've been using the macros from config.h instead. Similarly, code that created SVs or pushed values into the stack was also making incorrect assumptions -- As a point of reference, only pp_stat did the right thing: #if Uid_t_size > IVSIZE mPUSHn(PL_statcache.st_uid); #else # if Uid_t_sign <= 0 mPUSHi(PL_statcache.st_uid); # else mPUSHu(PL_statcache.st_uid); # endif #endif The other places were potential bugs, and some were even causing warnings in some unusual OSs, like haiku or qnx. This commit ammends the situation by introducing four new macros, SvUID(), sv_setuid(), SvGID(), and sv_setgid(), and using them where needed.
* update the editor hints for spaces, not tabsRicardo Signes2012-05-291-2/+2
| | | | | This updates the editor hints in our files for Emacs and vim to request that tabs be inserted as spaces.
* Fix typos (spelling errors) in Perl sources.Peter J. Acklam) (via RT2011-01-071-1/+1
| | | | | | | | | # New Ticket Created by (Peter J. Acklam) # Please include the string: [perl #81904] # in the subject line of all future correspondence about this issue. # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=81904 > Signed-off-by: Abigail <abigail@abigail.be>
* Update PerlStdIOGets() signatureJan Dubois2010-04-211-4/+4
| | | | | | Brings it in line with the rest of the PerlStdIO* functions that accept parameters in the same order as the corresponding PerlSIO_* macros. See also commit ecc880cc.
* Fix PerlSIO_fputc() and PerlSIO_fputs() signaturesJan Dubois2010-04-211-6/+6
| | | | | | | | | They should have the same prototype as in stdio. This "proper fix" replaces the 5.12.0 compatible fix in commit 634b482, but cannot be integrated into 5.12.1 because it breaks binary compatibility. See also http://rt.perl.org/rt3/Public/Bug/Display.html?id=72704
* Apply minimal patch for Perl bug 72704.Jan Dubois2010-04-211-2/+2
| | | | | | | | | Arguments to fputc() and fputs() are reverted on Windows. This is not the optimal patch, but will be backwards compatible with what is in 5.12.0. For the "correct" patch please see http://rt.perl.org/rt3/Public/Bug/Display.html?id=72704
* Add a parameter to win32_get_{priv,site,vendor}lib(), to return the length,Nicholas Clark2009-02-201-12/+15
| | | | | as we already know it, and use it in S_init_perllib() to save a strlen() in S_incpush_use_sep().
* Silence Borland compiler warnings (except for warnings from zlib) here:Steve Hay2008-02-251-4/+4
| | | | | http://www.nntp.perl.org/group/perl.daily-build.reports/2008/02/msg53937.html p4raw-id: //depot/perl@33370
* Add editor blocks to some header files.Marcus Holland-Moritz2008-01-011-0/+9
| | | p4raw-id: //depot/perl@32793
* Adapt definition of Sighandler_t to go with change #32012Rafael Garcia-Suarez2007-10-031-1/+1
| | | | | p4raw-link: @32012 on //depot/perl: b6455c53c26be8a62e12a3f2a24a3a5086dd2c7b p4raw-id: //depot/perl@32013
* smoke signs suppressionJarkko Hietaniemi2006-12-311-1/+1
| | | | | Message-ID: <4597C078.4000503@iki.fi> p4raw-id: //depot/perl@29645
* smoke signs suppressionJarkko Hietaniemi2006-11-251-1/+1
| | | | | Message-ID: <45687324.3040102@iki.fi> p4raw-id: //depot/perl@29378
* Make PerlLIOUtime()'s filename constSteve Hay2005-11-011-1/+1
| | | | | | | | | Fixes a warning brought about by change #25941 (which made the filename argument const). The various implementations of PerlLIOUtime() (in NetWare/, win32/ and wince/) already take a const filename. p4raw-link: @25941 on //depot/perl: e96b369dc61077fe31b75895167f55dbce4d7519 p4raw-id: //depot/perl@25945
* support POSIX SA_SIGINFOJarkko Hietaniemi2005-07-201-0/+4
| | | | | Message-ID: <42DE3846.6050606@gmail.com> p4raw-id: //depot/perl@25200
* Silence MinGW warning about "'noreturn' function does return"Steve Hay2005-07-011-2/+4
| | | | | (Thanks to Nicholas Clark) p4raw-id: //depot/perl@25041
* Make opendir() filename const in Win32-land & friendsSteve Hay2005-06-241-1/+1
| | | | | | | | That fact that it wasn't const already was highlighted by a warning from pp_open_dir() generated by change 24743. Rather than undo the const change in pp_open_dir(), this seems to make more sense. Hope I haven't broken Netware or WinCE. p4raw-id: //depot/perl@24974
* Fix PerlLIO_chsize() for platforms that don't have chsize()Steve Hay2005-03-291-1/+7
| | | | | | This is the patch from the end of the thread that started here: http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-09/msg00055.html p4raw-id: //depot/perl@24092
* Put all pre-processor #s on the first column (some compilers are picky)Nicholas Clark2003-10-091-1/+1
| | | | | [perl #24167] `#' comment signs not at the very beginning of a line p4raw-id: //depot/perl@21433
* windows: support for large filesGurusamy Sarathy2002-12-181-1/+1
| | | | | | | | note that this change will break binary compatibility with the default 5.8.0 build options; nevertheless I think it is worth having in 5.8.1 (people who want the compatibility can disable the option in the makefile) p4raw-id: //depot/perl@18327
* integrate a variant of change#17568 from maint-5.6 branch (theGurusamy Sarathy2002-07-161-14/+3
| | | | | | | do_exec parts elided so that change is restricted strictly to windows; binary compatibility stubs not needed) p4raw-link: @17568 on //depot/maint-5.6/perl: 07691bcd6c6d7fd92f508fd5268e700370ea47c2 p4raw-id: //depot/perl@17570
* make the gettimeofday() implementation in Time::HiRes availableGurusamy Sarathy2002-05-081-0/+6
| | | | | from perl p4raw-id: //depot/perl@16503
* Finish off 16350 for non-PERLIO build on linux,Nick Ing-Simmons2002-05-031-2/+2
| | | | | | non PERL_IMPLICIT_SYS parts of iperlsys.h had junk for some slots which now perlsdio.h is targeting. p4raw-id: //depot/perlio@16366
* *** EXPERIMENTAL ***Nick Ing-Simmons2002-05-021-2/+2
| | | | | | | Have perlsdio.h use the iperlsys.h aliases and see if that helps non-PERLIO IMP_SYS on Win32. (Miniperl okay on linux). p4raw-id: //depot/perlio@16350
* NetWare changeover from Watcom to Codewarrior, from C Aditya.Jarkko Hietaniemi2002-04-221-0/+6
| | | p4raw-id: //depot/perl@16076
* Windows 64-bit support:Gurusamy Sarathy2002-04-211-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | * support for building it in the regular makefiles * large files support via the _*i64() functions (this should be portable to the 32-bit universe too, but quite untested and and binary-incompatible, therefore not enabled there) * three additional test failures in addition to the t/end.t one (see README.win32) * sprintf() on Windows gets %I{32,64,}[xoud] format that parallel the ones available from the CRT (needed because Perl uses the UVxf macros in both sprintf() *and* in sv_catpvf() et al.) * add a few 64-bit notes to README.win32 The following general problems were also fixed: * s/struct stat/Stat_t/g * Data::Dumper had some naughty 'long' typecasts * Errno_pm.PL didn't work safe when winsock.h was not in the same directory as errno.h * various tell/seek things were incorrectly prototyped * squelch ugly looking noise when running tests * Embed.t wasn't linking in all the libraries * perl57.dll is now perl58.dll (anticipating 5.8.0-RC1) * re-enable all the disabled warnings (additional fixes may be needed for the warnings uncovered by this) p4raw-id: //depot/perl@16033
* VOS-specific patch to iperlsys.h to work around errno buPaul Green2002-04-011-0/+7
| | | | | Message-Id: <200204012048.PAA05178@mailhub2.stratus.com> p4raw-id: //depot/perl@15666
* NetWare tweaks from C Aditya <caditya@novell.com>Jarkko Hietaniemi2002-03-181-0/+20
| | | p4raw-id: //depot/perl@15292
* alarm(), Win32, no PERL_IMPLICIT_SYSMattia Barbon2002-03-121-0/+2
| | | | | | From: "Mattia Barbon" <mbarbon@dsi.unive.it> Message-Id: <3C8BD9C7.13988.73992D@localhost> p4raw-id: //depot/perl@15191
* Integrate maintperl changes #12268 and #12669;Jarkko Hietaniemi2001-10-261-5/+11
| | | | | | | | | | | | | | | | | | | | | | | | final touches to the audit for statics and thread-unsafe code * make DB_File, ODBM_File thread-safe * remove unnecessary/dangerous statics and protect others from not getting accidentally enabled under threaded perls windows support functions get_childdir() et al aren't exported correctly under vanilla build Testing under win32 appreciated since changes there had to be manually merged and I cannot test how badly did I do. p4raw-link: @12268 on //depot/perlio: bb407f0b8769c638c05e60ebfd157a1e676a6c22 p4raw-id: //depot/perl@12678 p4raw-integrated: from //depot/maint-5.6/perl@12677 'copy in' win32/vmem.h (@5902..) 'merge in' ext/DB_File/DB_File.xs (@8693..) win32/win32iop.h (@8917..) ext/ODBM_File/ODBM_File.xs (@8995..) iperlsys.h (@9154..) scope.c (@9584..) makedef.pl (@11425..) gv.c (@12026..) op.c (@12145..) util.c (@12220..) toke.c (@12550..) ext/B/B.xs ext/File/Glob/Glob.xs ext/Opcode/Opcode.xs ext/re/re.xs (@12653..) mg.c win32/win32.c (@12668..)
* slightly less broken chdir.t for VMSCraig A. Berry2001-09-271-1/+1
| | | | | Message-Id: <5.1.0.14.0.20010926173048.01aac5b0@exchi01> p4raw-id: //depot/perl@12252
* remove deprecated PERL_OBJECT cruft, it has long since stoppedGurusamy Sarathy2001-08-311-5/+0
| | | | | working in 5.7.x p4raw-id: //depot/perl@11803
* Make perl fork()-safe (in a slightly limited way) even onGurusamy Sarathy2001-07-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | platforms that don't have pthread_atfork() (extension of the fix in change#11151). Note that this will not help extensions that call fork() directly in C, or that link to libraries that call fork() directly. Such cases must be fixed to either call PerlProc_fork(), or call atfork_lock() in parent before the calling the function that forks and call atfork_unlock() in both parent and child immediately after the fork(). (There are no worries if C code calls exec() in the child immediately after a fork(). Only cases where the child calls perl's API functions (including New()) after the fork() are problematic.) This change also eliminates the use of vfork() from perl, since all such uses were violating the severe restrictions on modifying the state of the process between the vfork() and the exec(). This is a modified version of patches suggested by Abhijit Menon-Sen and Richard Soderberg. p4raw-link: @11151 on //depot/perl: 50dd6e574ff39b609595ddb16b2fe9f625a26f8c p4raw-id: //depot/perl@11423