Age | Commit message (Collapse) | Author |
|
The sync option adds the POSIX O_SYNC flag to the open system call on
platforms that support the flag or its equivalent, e.g.,
FILE_FLAG_WRITE_THROUGH on Windows. For platforms that don't support it,
file:open/2 returns {error, enotsup} if the sync option is passed in.
The semantics of O_SYNC are platform-specific. For example, not all
platforms guarantee that all file metadata are written to the disk along
with the file data when the flag is in effect. This issue is noted in the
documentation this commit adds for the sync option.
Add a test for the sync option. Note however that the underlying OS
semantics for O_SYNC can't be tested automatically in any practical way, so
the test assumes the OS does the right thing with the flag when
present. For manual verification, dtruss on OS X and strace on Linux were
both run against beam processes to watch calls to open(), and file:open/2
was called in Erlang shells to open files for writing, both with and
without the sync option. Both the dtruss output and the strace output
showed that the O_SYNC flag was present in the open() calls when sync was
specified and was clear when sync was not specified.
|
|
* ates/sctp_errors_fix/OTP-11379:
Update primary bootstrap
Add more SCTP errors as described in RFC 4960
|
|
|
|
|
|
* ks/hipe_unified_loader-cleanup/OTP-11301:
Updated primary bootstrap
Cleanup of the file
|
|
* raimo/linux-network-namespace-sockopt/OTP-11157:
Document socket option 'netns'
Rudimentary test
Make netns option value a string
Implement netns for SCTP + bugfixes
Implement netns option for TCP and UDP
Implement emulator netns support for TCP and UDP
|
|
Consisting of three items:
- Eliminate uses of is_subtype/2 in specs
- Change module-local void functions to return 'ok' instead of []
- Make sure there are no dialyzer warnings with --Wunmatched_returns
|
|
* fh/start-all/OTP-11250:
kernel: fix documentation regarding ensure_all_started endtag
Updated primary bootstrap
Add application:ensure_all_started/1-2
|
|
* fredrik/inet/clarify_doc_address/OTP-10676:
kernel: fixed specs to inet:ntoa/1
kernel: changed tests where inet_parse:ntoa/1 was used to inet:parse/1
kernel: added ntoa documentation and exported it in inet.erl
kernel: clarified inet:parse_address/1 referrering to old code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This adds two new functions to the application module that will
recursively look for missing dependencies to start the entire dependency
chain of a given application, and then the application itself, if
possible.
Its entire behavior is based on the currently existing 'start/1-2'
functions, which will report dependencies that have not yet been started
and other problems encountered. 'ensure_all_started/1-2' will use this
information the way any programmer would manually do it to automate the
process.
This kind of functionality, while not OTP-ish (releases do this start
sequence for the user), is still useful for testing purposes, quick
demonstrations, and programmers who do not wish or know how to use OTP
releases.
The function returns '{ok, StartedApps}' for all started or already
started applications (already started are omitted from the list), and
will return '{error, {AppName, Reason}}' on a failure to allow users to
rapidly know why the function failed.
Note that no specific check is made for direct or indirect circular
dependencies between applications, and these will make the function go
in an infinite loop.
|
|
|
|
* raimo/inet-gethostbyname-lowercase-search/OTP-10689:
Add test cases for host lookup case (in)sensitivity
Improve case (in)sensitivity for host lookups
|
|
|
|
* avi/fix-os-cmd-win/OTP-11104:
Add testcase to exported
Added primary bootstrap for os.beam
kernel: redefined deep_list_command test
Remove unnecessary whitespaces in os.erl and os_SUITE.erl
Fix deep list argument error under Windows in os:cmd/1
|
|
* rickard/inet_opts/OTP-11075:
Make high_msgq_watermark and low_msgq_watermark generic inet options
Conflicts:
erts/preloaded/ebin/prim_inet.beam
|
|
|
|
Conflicts:
lib/kernel/test/os_SUITE.erl
|
|
Because of leeway in implementing os:cmd/1 under different OS there is
a difference in results when calling it with deep list
argument. os:cmd/1 specifies io_lib:chars() type for its argument and
io_lib functions can produce deep lists inspite of io_lib:chars()
result type specification. This commit flattens the argument for
erlang:open_port/2 (which is used under Windows) and expands the
os_SUITE to regress the bug.
|
|
* lh/demonitor-flush/OTP-11039:
Use erlang:demonitor(Ref, [flush]) where applicable
|
|
The file module communicates with a file io server with the following
protocol for file operations:
> {file_request,From,ReplyAs,Request}
< {file_reply,ReplyAs,Reply}
The ReplyAs value is sent by the client side to match against when
receiving the reply and is otherwise left untouched and passed as is by
the server.
This commit enables receive optimizations by using the reference of the
server monitor, changing the protocol to:
> {file_request,From,MonitorRef,Request}
< {file_reply,MonitorRef,Reply}
As the shape of the messages is not changed, backwards compatibility is
not a concern.
|
|
|
|
Similar to application:start/1,2 except it returns 'ok' on already
started applications instead of {'error', {'already_started', ...}}.
|
|
|
|
|
|
* ks/hipe_bif-remove_refs_from/OTP-10851:
Fixed test to allow for lists:foreach/2 call
Change the return value of hipe_bifs:remove_refs_from/1
|
|
|
|
It produced the same result as file:read_link/1.
|
|
* sc/gen_tcp_send_error_closed/OTP-10839:
Fix type of error Reason on gen_tcp:send/2
|
|
* bjorn/stdlib/types:
Make the file:filename() type more restrictive
c: Remove handling of binaries in return from file:list_dir/1
|
|
|
|
The recommended type for filenames is a list of characters (which
may be Unicode characters greater than 255). Change the
file:filename() to reflect that.
For the filename module we still need a type that can be either
a string or a binary, so we need to introduce the type
file:filename_all().
|
|
In order to avoid an ummatched return warning in erts and make the code
more sane, the return value of the bif was changed from [] to 'ok'.
(Probably more hipe_bifs need such changes but they will have to wait.)
While at it, the code of various functions in hipe_unified_loader was
shortened by using lists:foreach/1 instead of explicit recursion.
|
|
* pan/unicode_filename_warnings:
Add file:list_dir_all/1 and file:read_link_all/1
prim_file: Add list_dir_all() and read_link_all()
Teach prim_file:set_cwd() to avoid entering non-translatable directories
Make prim_file skip invalid filenames in unicode mode
prim_file: Refactor functions that return filenames
prim_file: Refactor handling of responses
prim_file: Always open non-file ports in binary mode
Test that list_dir("non-existing-dir") fails with the correct error
|
|
When the TCP socket is in passive mode, it is possible that a close
message has not been delivered to the controlling process before
calling send/2. This results in the returning {error, closed} to the
caller, in the same way that recv/2,3 does. This commit adjusts the
type of the error "Reason" to include the atom 'closed'.
|
|
|
|
|
|
* vd/code_get_mode/OTP-10823:
Added name prefix to code.xml
Add a new function code:get_mode() can be used to detect how the code servers behaves
|
|
* mh/duplicate_name_error_message/OTP-10797:
Slightly nicer error message when node start fails due to duplicate name
|
|
servers behaves
Rationale:
Some applications (like erlide) have code to be loaded dynamically on a
node. It may be slow to load everything upfront every time, so if the
node is in interactive mode, we would like to just append to the load
path. Currently, there is no direct way to detect if the node is running
in embedded mode or not so that we can do the right thing.
|
|
|
|
When starting up an Erlang node using a node name that is already in
use, the new node used to crash with output starting with this message:
{error_logger,{{2013,1,25},{16,0,42}},"Protocol: ~p: register error: ~p~n",["inet_tcp",{{badmatch,{error,duplicate_name}},[{inet_tcp_dist,listen,1,[.....
With this change, the first line in the output changes to:
{error_logger,{{2013,1,25},{16,40,41}},"Protocol: ~tp: the name foo@localhost seems to be in use by another Erlang node",["inet_tcp"]}
|
|
|